جشنواره تخفیف های جمعه سیاه
محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

تفاوت ساختار CPU در سرورهای سخت افزاری و CPU در PC چیست؟

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

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. معماری 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 و اساس کار دستگاه های ذخیره سازی و تا حدی پردازشگر های آنها را توضیح دهم . اما تفاوت ها به این سادگی های هم نیستند و بسیاری موارد دیگر وجود دارد که در مقوله این سری مطالب قرار نمی گیرد و این سری مقاله در حقیقت فقط برای شروع این بحث بود . امیدوارم که مورد توجه شما دوستان قرار گرفته باشد


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات