در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آشنایی با سرورهای سخت افزاری قسمت 9 : ساختار CPU ها

در این مقاله از سری مقالات معرفی سخت افزارهای سرور به سراغ معرفی ساختار مقدماتی پردازنده یا همان CPU سرور خواهیم پرداخت . در این مقاله در خصوص CPU Socket ها ، هسته های پردازنده یا Processor Core ها ، معماری CPU و همچنین در خصوص نحوه اضافه کرده هسته های بیشتر به پردازنده سیستم که باعث بالارفتن قدرت پردازشی سرور می شود صحبت خواهیم کرد. در مقاله های قبلی با توجه به اهمین بحث ذخیره سازی اطلاعات و Storage ها بیشتر در خصوص این نوع از سخت افزارها صحبت کردیم اما در اینجا بیشتر بحث در خصوص معماری CPU ها خواهد بود.

معماری CPU و ساختار آن

اگر بخواهیم بصورت سطحی مسئله را بررسی کنیم ، معماری CPU سرور تفاوت چندانی با معماری CPU ها PC ها معمولی ندارد .بیشتر سرورهایی که در طی سالهای اخیر تولید شده اند از امکان پردازشگرهای چند هسته ای یا Multicore Processors استفاده کرده اند. یک پردازنده چند هسته ای در واقع یک CPU است که دارای دو یا بیش از دو عدد پردازنده یا بهتر بگوییم هسته پردازشی که در داخل یک چیپ الکترونیکی قرار گرفته اند می باشد . البته استفاده از پردازنده های چند هسته ای این روزها در PC های معمولی هم رواج پیدا کرده است اما دقت کنید که PC ها محدود به استفاده از یک CPU فیزیکی هستند . از طرفی سرورها به گونه ای طراحی شده اند که حداقل از دو و یا بیشتر از دو عدد CPU فیزیکی را پشتیبانی کنند .به تعداد CPU های فیزیکی که هر سرور می تواند با همدیگر تظبیق بدهد معمولا به عنوان تعداد Socket هایی که سرور دارد عنوان می شود.

CPU های چند هسته ای

گسترش روز به روز فناوری های مجازی سازی باعث شده است تا مدیران شبکه مجبور شوند به تعداد هسته های موجود بر روی CPU ها سرورهایی که در نقش میزبان یا HOST در ساختارهای مجازی سازی استفاده می شوند بیشتر توجه کنند . هر چند که هسته های CPU بصورت مستقیم و مشخص به ماشین های مجازی اختصاص داده نمی شود اما تعداد هسته های موجود بر روی سرور فیزیکی تاثیر مستقیمی بر روی کارایی و عملکرد ماشین های مجازی دارد که بر روی سرور HOST قرار می گیرند . در یک جمله می توان گفت هر چه تعداد هسته های CPU یک سرور بیشتر باشد ، سرور پتانسیل میزبانی تعداد ماشین مجازی بیشتری را خواهد داشت . چرا می گوییم پتانسیل ؟ به دلیل اینکه فاکتورهای زیادی برای تخمین تعداد ماشین های مجازی قابل ایجاد بر روی سرور به غیر از بحث CPU وجود دارد ، مثلا یکی از محدودیت ها یا فاکتورهای دیگر در تعداد ماشین های مجازی میزان حافظه RAM فیزیکی موجود بر روی سرور است.

شما می توانید با ضرب تعداد CPU های فیزیکی سرور در تعداد هسته های موجود بر روی هر کدام از CPU ها به تعداد هسته های موجود بر روی کل سرور دست بیابید . دقت کنید که گفتیم تعداد CPU های فیزیکی نه تعداد Socket های فیزیکی ، موارد بسیاری وجود دارد که شما در سرور خود Socket های خالی دارید . بیشتر تولید کنندگان سرور در دنیا ممکن است Socket های خالی بر روی بورد سرورهای خود تعبیه کنند تا در صورت نیاز به بروز رسانی سرور بتوانند از این Socket ها برای اضافه کردن CPU استفاده کنند و البته طبیعی است که با نبود CPU قیمت آن سرور هم نسبت به سروری که دارای CPU به جای Socket خالی می باشد بیشتر خواهد بود . خوب این یک نکته جالب را نشان می دهد ، سیستم سرور معمولا می تواند انتخاب های متنوعی را در اختیار مدیر سیستم قرار دهد . مثلا من سرورهایی را دیده ام که بر روی برد آنها قابلیت نصل 4 یا 5 عدد CPU فیزیکی وجود داشت که هر کدام از CPU هایی که بر روی این Socket ها می توانستند قرار بگیرند توانایی پشتیبانی از چندین هسته را داشتند که هر کدام می تواند انتخاب متنوعی را در اختیار مدیران سیستم قرار دهد ، از جمله اینکه شما براحتی می توانید با استفاده از قابلیت Over Clocking کارایی سیستم را به خوبی زیاد کنید.

CPU Socket چیست

در حالت معمول هر پردازنده ای که بتواند clock speed یا سرعت ساعت بیشتری داشته باشد دارای کارایی بیشتری نیز می باشد . البته این مسئله در کنار ثابت بودن معماری CPU انجام می شود و در معماری آن تغییری حاصل نمی شود . شما همیشه نمی توانید سرعت CPU را بر اساس Clock Speed آن تعیین کنید . برخی از CPU ها از مشابه های دیگر آن بهتر هستند هر چند که Clock Speed آنها نسبت به دیگر CPU های مشابه کمتر است اما خروجی بهتری در پردازش ها ارائه می دهند . در واقع معیار اصلی تعداد پردازش ها یا بهتر بگوییم تعداد دستوراتی است که هر CPU قادر است در هر ثانیه پردازش کند . Clock Speed میتواند تعداد این دستورات را که در ثانیه انجام می شود را محدود کند و اجازه استفاده بیشتر از قابلیت های CPU را به سیستم ندهد . اکثر CPU ها امروزی قادر به اجرای چندین دستورالعمل در هر دوره زمانی Clock Cycle هستند.

نکته مهم دیگری که در خصوص معماری CPU بایستی بدانید این است که با اضافه کردن قدرت پردازشی بیشتر به سرور لزوما کارایی سرور بالا نخواهد رفت . برای اینکه درک بهتری از این موضوع داشته باشید برای لحظه ای مبحث مجازی سازی در سرورها را فراموش کنید . مجازی سازی کارهای را کمی پیچیده می کند و چون این سری مقاله برای دوستانی نوشته شده است که به تازگی وارد دنیای فناوری اطلاعات شده اند بهتر است زیاد درگیر این موضوع نشویم و مباحث را ساده دنبال کنیم . خوب با این اوصاف فرض کنید که سروری دارید که دارای دو عدد Socket است اما فقط یک CPU فیزیکی دارد ، همچنین فرض کنید که این سرور تنها یک وظیفه کاری را انجام می دهد که مثلا مدیریت یک پایگاه داده و یا چیزی شبیه به آن است . بعد از مدتی که از کارکرد سرور می گذرد شما تصمیمی میگیرید که به سرور پردازنده جدیدی اضافه کنید تا کارایی سرور بالا برود.

خوب بطور منطقی اگر شما به سرور یک پردازنده اضافه کنید قاعدتا سرعت و کارای سرور بایستی دو برابر شود . متاسفانه یه این سادگی های نیست . در اینجاست که سرور کمی دچار مشکل خواهد شد ، مشکل اینجاست که سرور بایستی تصمیم بگیرد که هر پردازش را به سمت کدامیک از CPU ها هدایت کند و همین تصمیم گیری برای انجام هر پردازش باعث بالا رفتن بار کاری CPU و سرور خواهد شد . با توجه به چند هسته ای بودن ساختارهای CPU امروزی همین امر می تواند تا 50 درصد کارایی و سرعت CPU را برای تخصیص این وظایف و پردازش ها هدر دهد و این یعنی 50 درصد از قابلیت های CPU جدید مورد استفاده قرار نخواهد گرفت . بنابراین هنگامی که شما یک CPU به سرور خود اضافه می کنید در واقع 50 درصد کارایی سرور را افزایش داده اید و سایر قابلیت های آن استفاده نخواهد شد . امروزه پردازنده های چند هسته ای کارهایی زیادی برای رفع این مشکل و ایجاد روشی کارآمد در مدیریت وظایف سیستم انجام داده اند اما متاسفانه هنوز معیار درست و قابل اعتمادی از طرف سازندگان CPU در جهت اندازه گیری این مقدار از فعالیت سیستم ارائه نشده است و یا حداقل من در مورد آن اطلاعات کافی ندارم .

چند لحظه پیش در خصوص پردازنده های چند هسته ای و همچنین اضافه کردن CPU فیزیکی ثانوی به سرور اشاره ای داشتیم و گفتیم که در حالت ایده آل این پردازنده ثانوی می تواند تا 50 درصد کارایی سرور را بالا ببرد. دلیل اینکه به حالت ایده آل اشاره کردیم این بود که هر سروری قادر به استفاده درست از CPU ها جانبی و ثانوی نبوده و اضافه شدن این تعداد CPU به اینگونه سرورها می تواند آن را دچار مشکل کند. دلیل این مشکل فرآیند threading می باشد . یک Thread یک قسمت مستقل از عملیات اجرایی سیستم است . اگر نرم افزاری به گونه ای برنامه ریزی شده است که صرفا می تواند در CPU بر روی یک Thread اجرا شود ، سیستم قادر نخواهد بود این نرم افزار را به Thread های متعدد تقسیم کرده و اجرای آن را به CPU های موجود تقسیم کند . تنها روشی که شما می توانید از مزایای استفاده از چندین CPU بصورت همزمان استفاده کنید این است که نرم افزار شما هم بصورت چند نخی یا Multi Threading طراحی شده باشد . نرم افزارهای Multi Thread این قابلیت را دارند که پردازش های خود را تفکیک کرده و هر کدام را به سمت یکی از CPU های موجود بر روی سیستم ارسال کنند.

معماری CPU

وقتی به سراغ خریداری سخت افزارهای سرور می روید حتما با واژه هایی مثل x86 یا x64 یا Itanium مواجه شده اید که در مورد CPU های موجود صحبت می کنند . این واژه های در واقع همان چیزی است که ما به نام معماری CPU می شناسیم . در واقع معماری CPU به ما نشان می دهد که CPU چه نوع کدی را می تواند اجرا کند . برای مثال نرم افزارهایی که برای سیستم های 64 بیتی و یا Itanium نوشته شده اند را نمی توان بر روی CPU های 32 بیتی اجرا کرد . اما استثنائی که در اینجا وجود دارد این است که CPU های 64 بیتی قادر به اجرای نرم افزارهای 32 بیتی هستند البته این در صورتی است که سیستم عامل مورد نظر نیز این قابلیت را دارا باشد .

نتیجه

این هم از آخرین مقاله از سری مقالات معرفی سخت افزارهای سرور ، در این سری مقالات سعی کردم بیشتر تفاوت بین سرور و PC و اساس کار دستگاه های ذخیره سازی و تا حدی پردازشگر های آنها را توضیح دهم . اما تفاوت ها به این سادگی های هم نیستند و بسیاری موارد دیگر وجود دارد که در مقوله این سری مطالب قرار نمی گیرد و این سری مقاله در حقیقت فقط برای شروع این بحث بود . امیدوارم که مورد توجه شما دوستان قرار گرفته باشد

نویسنده : محمد نصیری

منبع : جزیره سخت افزار و تجهیزات دیجیتال وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع دارای اشکال اخلاقی می باشد.

#تفاوت_cpu_های_xeon_و_pentium #تفاوت_AMD_با_Intel #تفاوت_CPUسرور_و_PC #CPU_های_چند_هسته_ای #انواع_CPU #معماری_CPU #مقایسه_انواع_cache_در_cpu #OverClock_کردن_CPU #مقایسه_cpu_های_xeon_و_pentium #معرفی_انواع_cpu
عنوان
1 آشنایی با سرورهای سخت افزاری قسمت 1 : شکل های مختلف سرور رایگان
2 آشنایی با سرورهای سخت افزاری قسمت 2 : خنک کننده ، فیلتر و پورت رایگان
3 آشنایی با سرورهای سخت افزاری قسمت 3 : IPMI و BMC چیست؟ رایگان
4 آشنایی با سرورهای سخت افزاری قسمت 4 : تکنولوژی های حافظه در سرور رایگان
5 آشنایی با سرورهای سخت افزاری قسمت 5 : دستگاه های ذخیره سازی رایگان
6 آشنایی با سرورهای سخت افزاری قسمت 6 : حافظه های SSD و ترکیبی رایگان
7 آشنایی با سرورهای سخت افزاری قسمت 7 : هارد دیسک های SAS رایگان
8 آشنایی با سرورهای سخت افزاری قسمت 8 : SAS و SATA و Expander رایگان
9 آشنایی با سرورهای سخت افزاری قسمت 9 : ساختار CPU ها رایگان
زمان و قیمت کل 0″ 0
10 نظر
عاطفه حسین زاده

ممنون از مقالات بسیار عالیتون.

اما واسم سوالات زیادی پیش اومده.

اضافه کردن CPUهای بیشتر برحسب چه نیازی هست ؟

واسه اینکه سرور بتونه ماشین های مجازی بیشتری و ساپورت کنه ؟

واسه اینکه کارایی سرور بالاتر بره ؟

راستش من گیج شدم.:(

شما در طول مقاله در جایی گفتین که با اضافه کردن قدرت پردازشی بیشتر به سرور لزوما کارایی سرور بالا نخواهد رفت. جایی دیگه توضیح دادین که 50 درصد کارایی سرور بالاتر میره در صورتیکه نرم افزار مورد نظر به صورت multi thread طراحی شده باشد.

گفتین که با اضافه شدن یک پردازنده اضافی سرور دچار مشکل میشه و باید تصمیم بگیره هر پردازش و سمت کدامیک از CPUها هدایت کنه..... این مشکل چطوری حل میشه ؟ در کل پس این اضافه کردن CPU به چه کار میاد؟؟

:(

محمد نصیری
  1. خوب طبیعی هست که ما CPU های بیشتر اضافه می کنیم برای بدست آوردن سرعت بیشتر ، مثلا همونطوری که گفتید برای مجازی سازی ما هر چقدر تعداد CPU های بیشتری داشته باشیم سرعت بهتری خواهیم داشت ، قطعا با بالا رفتن تعداد CPU های یک سیستم کارایی اون تا حدی بالا خواهد رفت ، اما دقت کنید که در ساختارهای مجازی همونطوری که در مقاله هم اشاره کردیم که نمیخایم پیچیده کنیم بحث رو CPU ها و یا هسته های اونها در ساده ترین حالت ممکن بصورت مستقیم با VM ها کار میکنند و این مبحث کارایی در اونها چندان مشکلی ایجاد نخواهد کرد و به همین دلیل هم بهش اشاره نکردیم ، بحث ما یک سیستم عامل و چند CPU Core هست .
  2. به مقاله دقت کنید ، گفتیم لزوما زیاد نمیشه ، یعنی بر خلاف چیزی که همه تصور می کنن که اگر یک CPU مشابه به سیستم اضافه بشه سرعت دو برابر میشه ، اینطور نیست و ممکن هست به اون اندازه ای که فکر می کنن باید سرعت بالا بره سرعت سیستم بالا نخواهد رفت به دلایلی که گفتیم .
  3. در خصوص اینکه CPU های جدید چطوری این مشکل رو برطرف میکنند دیگه بحث خیلی ریزتر میشه که در این مقاله اصلا جایگاهی نداره همونطوری که اشاره کردم هنوز این مشکل رو یا بهتر بگیم ایراد رو بصورت کامل نتونستن برطرف کنند بلکه فقط بهبودش دادن که دیگه بحث تخصصی سخت افزار و طراحی اون هست .
رضا تقی زاده

آقای نصیری با تشکر از مقاله بسیار خوبتون .

در جواب خانم حسین زاده من سعی می کنم قسمت های کلیدی مقاله رو یکم باز کنم و مقداری رابطه آن ها را با بعضی از درس های تخصصی کامپیوتر بیان کنم :

در جایی از مقاله این چنین گفته می شود : (( در حالت معمول هر پردازنده ای که بتواند clock speed یا سرعت ساعت بیشتری داشته باشد دارای کارایی بیشتری نیز می باشد . .... شما همیشه نمی توانید سرعت CPU را بر اساس Clock Speed آن تعیین کنید . برخی از CPU ها از مشابه های دیگر آن بهتر هستند هر چند که Clock Speed آنها نسبت به دیگر CPU های مشابه کمتر است اما خروجی بهتری در پردازش ها ارائه می دهند . در واقع معیار اصلی تعداد پردازش ها یا بهتر بگوییم تعداد دستوراتی است که هر CPU قادر است در هر ثانیه پردازش کند . ))

در توضیح این پاراگراف باید بگویم که Clock Speed یک cpu به دو عامل ربط دارد . یکی به معماری مدارات منطقی درون cpu ( جمع کننده - ضرب کننده - ثبات ها - شمارنده ها و .. ) ارتباط دارد که هر چقدر این مدارات بهینه تر و سطوح منطقی آن کمتر باشد . خود به خود سرعت کلاک نیز به علت پایین آمدن تاخیر در سطح مدارات منطقی درون cpu ، بالا می رود. ( دروس مدار منطقی و معماری کامپیوتر را به خاطر بیاورید )

Clock Speed علاوه بر معماری cpu ، به تکنولوژی به کار رفته در تولید آن cpu نیز بستگی دارد ، که شامل تکنولوژی ترانزیستور های بکار رفته در cpu ، چند لایه بودن چیپست cpu و ... می باشد . یعنی برای بالا بردن سرعت کلاک ، علاوه بر طراحی و معماری خوب برای cpu ، تکنولوژی خوب برای تولید آن cpu نیز مهم می باشد ( دروس الکترونیک دیجیتال و VLSI در رشته سخت افزار به تکنولوژی تولید می پردازد )

ولی باید توجه کرد که کارایی یک cpu هم به سرعت کلاک آن و هم به تعداد دستوراتی که در هر کلاک سیستم می تواند انجام دهد بستگی دارد . یعنی ممکن است یک cpu با سرعت کلاک بالاتر در هر بار کلاک فقط 2 دستور انجام دهد ولی یک cpu دیگر با سرعت کلاک پایین تر در هر بار کلاک 8 دستور انجام دهد . در نتیجه ممکن است cpu با Clock Speed پایینتر ، در انجام یک پردازش سریعتر عمل نماید . ( این نکته به معماری cpu ربط دارد و در درس معماری کامپیوتر مطرح می شود )

رضا تقی زاده

در ادامه مقاله چنین آمده است : (( خوب بطور منطقی اگر شما به سرور یک پردازنده اضافه کنید قاعدتا سرعت و کارای سرور بایستی دو برابر شود . متاسفانه یه این سادگی های نیست .... مشکل اینجاست که سرور بایستی تصمیم بگیرد که هر پردازش را به سمت کدامیک از CPU ها هدایت کند و همین تصمیم گیری برای انجام هر پردازش باعث بالا رفتن بار کاری CPU و سرور خواهد شد . با توجه به چند هسته ای بودن ساختارهای CPU امروزی همین امر می تواند تا 50 درصد کارایی و سرعت CPU را برای تخصیص این وظایف و پردازش ها هدر دهد و این یعنی 50 درصد از قابلیت های CPU جدید مورد استفاده قرار نخواهد گرفت ... ))

در توضیح این پاراگراف باید بگویم که هیچ وقت نمی توان با اضافه کردن مثلا چهار cpu به سرور ، سرعت آن را دقیقا چهار برابر کنیم . زیرا اصولا منطق چند پردازنده ای برای یک کامپیوتر بر اساس قابلیت چند برنامگی در سیستم عامل و همچنین قابلیت یک برنامه نوعی برای تکه تکه کردن خود به پردازش های کوچکتر ( Multi Threading ) تعریف می شود . یعنی در اینجا مثلا سیستم عامل کامپیوتر یک cpu را فقط درگیر بحث تصمیم گیری برای انتقال برنامه ها و پردازش ها به cpu های دیگر می کند . که از لحاظ کارایی ، این عمل اتلاف وقت و هدر دادن یکی از cpu ها می باشد . این اتفاق از نظر من کاملا منطقی می باشد ، زیرا همانگونه که افراد یک تیم فوتبال برای هدایت نیاز به یک نفر اضافی بعنوان مربی هستند . پردازش ها هم در این روش برای هدایت خود به cpu های دیگر نیاز به یک یا چند cpu دیگر دارند . ( مسئله دقیقا همانند مدیریت پردازش ها در درس سیستم عامل می باشد )

رضا تقی زاده

در نهایت در جواب خانم حسین زاده باید بگم که اصولا کارایی اضافه کردن cpu بیشتر به یک سیستم رابطه مستقیمی با سیستم عامل و نرم افزارهای درون آن سیستم دارد . این خود سیستم عامل است که تعیین می کند که بر اساس چه سیاستی cpu ها به یک برنامه و پردازش های درون آن اختصاص یابد و مثلا چند هسته در درون یک cpu درگیر مباحث مدیریتی یک برنامه شوند . پس بهبود الگوریتم های درون سیستم عامل در بخش مباحث مدیریت پردازش ها و تکنیک های چند برنامگی برای سیستم های چند پردازنده ، می تواند بسیار در بالابردن کارایی و بهینه کردن استفاده از cpu های یک کامپیوتر موثر باشد . اما باید توجه داشت که به نظر من هدر دادن بخشی از کل پردازنده ها برای موارد مدیریتی در این نوع سیستم ها همیشه وجود دارد و نمی توان آن را به طور کلی از بین برد ، فقط می توان کمتر کرد.

پس اضافه کردن دو CPU به افزایش سرعت سیستم کمک می کند ولی نه به شکل دو برابر . و کارایی یک سیستم کامپیوتری نه تنها به سخت افزار آن ، بلکه تا حدود بسیار زیادی به سیستم عامل و قابلیت های برنامه های درون آن بستگی دارد و مثلا اگر یک CPU به سیستم اضافه کنیم و کارایی آن 50% اضافه شود ، خود گام بزرگی برای افزایش قدرت سیستم برای انجام عملیات ها می باشد.

پس اگر سرور شما کارهای پردازشی زیادی به عهده دارد و شما می خواهید آنها زودتر انجام شوند ، می توانید با اضافه کردن RAM و CPU به سرور اینکار را انجام دهید .

عاطفه حسین زاده

بسیار عالی .... ممنون از توضیحات خوبتون آقای تقی زاده .

مرتضی عنابستانی

برای تست سی پی یو

وب سایت توسینسو

کامبیز ذوقی

پس با این تفاسیر با اضافه کردن cpu به سرور میتوانیم ماشین های مجازی بیشتری را اجرا کنیم ولی این باعث افزایش سرعت چند برابری سرور نمیشود. البته امروزه همه مجازی سازی پیاده میکنند دیگه

محمد نصیری

البته راهکارهای مجازی سازی برای مدیریت بهینه از CPU خودشون راهکار دارند ولی ماهیت در نهایت یکی است ، قرار نیست دوبرابر شدن CPU سرعت رو هم دو برابر کنه.

کامبیز ذوقی

ما که دوره مجازی سازی VCP شما رو خریدیم ایشالا به اونا هم میرسیم.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....