CPU چيست؛ هر آنچه بايد در مورد پردازنده بدانيد
واحد پردازش مركزي (CPU) عنصري حياتي در هر كامپيوتر محسوب ميشود و تمامي محاسبات و دستوراتي را كه به ساير اجزاي كامپيوتر و تجهيزات جانبي آن منتقل ميشود، مديريت ميكند. تقريباً تمام وسايل الكترونيكي و گجتهاييها كه استفاده ميكنيد؛ از دسكتاپ و لپتاپ و موبايل گرفته تا كنسولهاي گيمينگ و ساعتهاي هوشمند، همه و همه به واحدي براي پردازش مركزي مجهز هستند؛ در واقع اين واحد، پايه و اساسي براي كامپيوترها به حساب ميآيد كه بدون آن، سيستم روشن نميشود، چه برسد به اينكه قابل استفاده باشد. سرعت بالاي واحد پردازش مركزي تابعي از دستور ورودي است و اجزاي كامپيوترها تنها در صورتي كه به اين واحد متصل باشند، قدرت اجرايي پيدا ميكنند.
- پردازنده چيست؟
- عملكرد پردازنده ها
- واحدهاي عملياتي پردازنده ها
- معماري پردازنده ها
- مجموعه دستورالعملها
- RISC درمقابل CISC يا ARM درمقابل x86
- تاريخچه مختصري از معماري پردازنده ها
- تفاوت هاي معماري ARM و X86-64
- شاخصهاي عملكرد پردازنده ها
- فركانس پردازنده ها
- حافظه كش
- هسته هاي پردازشي
- تفاوت بين پردازش تك هستهاي و چند هستهاي
- رشته هاي پردازشي
- هايپرتردينگ يا SMT چيست؟
- پردازنده در گيمينگ
- Bottleneck چيست؟
- راهاندازي سيستمي متعادل
ازآنجاكه واحدهاي پردازش مركزي، دادههاي تمام قسمتهاي كامپيوتر را بهطور همزمان مديريت ميكنند، ممكن است با افزايش حجم محاسبات و پردازشها، كُند عمل كند يا حتي با بالا رفتن حجم كاري، از كار بيفتد يا به اصطلاح كِرَش كند. امروزه رايجترين واحدهاي پردازش مركزي موجود در بازار از قطعات نيمههادي در مدارهاي مجتمع تشكيل شدهاند كه در انواع مختلفي به فروش ميرسند و توليدكنندگان پيشرو در اين صنعت نيز، AMD و Intel هستند كه از ۵۰ سال پيش تا به امروز در اين حوزه با هم رقابت ميكنند.
پردازنده چيست؟
براي آشنايي با واحد پردازش مركزي (CPU)، ابتدا بخشي از كامپيوتر به نام SoC را خيلي مختصر معرفي ميكنيم. SoC يا سيستم روي يك تراشه، بخشي از سيستم است كه تمام اجزاي مورد نياز كامپيوتر را براي پردازش در تراشهاي سيليكوني ادغام ميكند. SoC ماژولهاي مختلفي دارد كه واحد پردازش مركزي (به اختصار پردازنده) جزئي اصلي از آن و پردازندهي گرافيكي، حافظه، كنترلر USB، مدارهاي مديريت انرژي و راديوهاي بيسيم (WiFi، 3G، 4G LTE، و غيره) اجزايي متفرقه هستند كه ممكن است لاخبار تخصصياً روي SoC وجود نداشته باشند. واحد پردازندهي مركزي كه از اين به بعد و در اين مقاله آن را به اختصار پردازنده خطاب ميكنيم، نميتواند مستقل از تراشههاي ديگر، دستورالعملها را پردازش كند؛ اما ساخت كامپيوتري كامل تنها با SoC امكانپذير است.
SoC از پردازنده كمي بزرگتر است و در عين حال عملكردهاي بسيار بيشتري نيز ارائه ميدهد. در واقع با وجود تأكيد زيادي كه روي فناوري و عملكرد پردازنده ميشود، اين بخش از كامپيوتر، به خودي خود كامپيوتر نيست و ميتوان آن را در نهايت، ماشينحسابي بسيار سريع معرفي كرد كه جزئي از سيستم روي تراشه يا SoC است؛ دادهها را از حافظه فراخواني ميكند و سپس نوعي عمليات حسابي (جمع، ضرب) يا منطقي (و، يا، نه) روي آنها انجام ميدهد.
عملكرد پردازنده ها
فرايند پردازش دستورها در پردازنده شامل چهار مرحلهي اصلي است كه به ترتيب اجرا ميشوند:
فراخواني يا واكشي دستورالعملها از حافظه (Fetch): پردازنده ابتدا به منظور آگاهي از نحوهي مديريت ورودي و دانستن دستورالعملهاي مرتبط با آن، اين دستورها را از حافظه دريافت ميكند. اين ورودي ممكن است يك يا بينهايت دستور باشد كه بايد در محلهاي جداگانه آدرسدهي شوند. به اين منظور واحدي به نام PC (مخفف Program Counter) يا شمارندهي برنامه، وجود دارد كه ترتيب دستورهاي ارسالشده را حفظ ميكند؛ پردازنده نيز در تعاملي مشترك براي يافتن آدرس دستورالعمل دائماً با رم در ارتباط است (خواندن از حافظه).
رمزگشايي يا ترجمهي دستورالعملها (Decode): دستورالعملها به فرمي كه براي پردازنده قابل درك باشند (زبان ماشين يا باينري) ترجمه ميشوند. پردازنده پس از دريافت دستورها، براي درك آنها نياز دارد تا اين كدها به زبان ماشين (يا باينري) ترجمه شوند. نوشتن برنامهها به زبان باينري، از همان ابتداي امر، كار دشواري است و به همين دليل كدها به زبانهاي برنامهنويسي سادهتري نوشته ميشوند و سپس واحدي به نام Assembler، اين دستورها را به كدهاي اجرايي و آماده براي پردازش پردازنده تبديل ميكند.
پردازش يا اجراي دستورهاي ترجمهشده (Execute): مهمترين مرحله در عملكرد پردازنده، پردازش و اجراي دستورها است. در اين مرحله دستورالعملهاي رمزگشاييشده و باينري براي اجرا به كمك واحد ALU (مخفف Arithmetic & Logic Unit) يا واحد محاسبه و منطق، در آدرسي مخصوص پردازش ميشوند.
ذخيرهي نتايج اجرا (Store): نتايج و خروجي دستورها به كمك واحد ثبات (Register) در حافظهي جانبي پردازنده ذخيره ميشوند تا در دستورالعملهاي آتي براي بالا بردن سرعت به آنها رجوع شود (نوشتن در حافظه).
فرايندي كه در بالا توضيح داده شد، چرخهي واكشي-اجرايي ناميده ميشود و ميليونها بار در ثانيه اتفاق ميافتد؛ هربار پس از اتمام اين چهار مرحلهي اصلي، نوبت به دستور بعدي ميرسد و تمامي مراحل دوباره از اول اجرا شده تا زماني كه تمامي دستورالعملها پردازش شوند.
واحدهاي عملياتي پردازنده ها
هر پردازنده از سه واحد عملياتي تشكيل شده است كه در فرايند پردازش دستورها نقش دارند:
واحد محاسبه و عمليات منطقي (ALU يا همان Arithmetic & Logic Unit): اين واحد مدار ديجيتالي پيچيدهاي است كه عمليات رياضي و مقايسهاي را انجام ميدهد؛ در برخي پردازندهها، ALU به دو بخش AU (براي انجام عمليات حسابي) و LU (براي انجام عمليات منطقي) تقسيم ميشود.
واحد كنترل حافظه (CU يا همان Program Counter): اين واحد مداري است كه عمليات را درون پردازنده هدايت و مديريت ميكند و چگونگي پاسخ دادن به دستورالعملها را به واحد محاسبه و منطق و دستگاههاي ورودي و خروجي، ديكته ميكند. كاركرد واحد كنترل در هر پردازنده بسته به معماري طراحي آن، ميتواند متفاوت باشد.
واحد ثبات (Register): واحد ثبات، واحدي در پردازنده است كه وظيفهي نگهداري موقت دادههاي پردازششده، دستورالعملها، آدرسها، توالي بيتها و خروجي را بر عهده دارد و بايد براي نگهداري اين دادهها ظرفيت كافي داشته باشد. پردازندههايي با معماري ۶۴ بيتي، Registerهايي با ظرفيت ۶۴ بيتي دارند و پردازندههايي با معماري ۳۲ بيتي نيز داراي واحد ثباتي ۳۲ بيتي هستند.
معماري پردازنده ها
ارتباط ميان دستورالعملها و طراحي سختافزار پردازنده، معماري پردازنده را شكل ميدهد؛ اما معماري ۶۴ يا ۳۲ بيتي چيست؟ اين دو معماري چه تفاوتهايي با يكديگر دارند؟ براي پاسخ به اين سؤال ابتدا بايد با مجموعه دستورالعملها و نحوهي انجام محاسبات آنها آشنا شويم:
مجموعه دستورالعملها
مجموعه دستورالعملها (Instruction Set)، مجموعه عملياتي است كه هر پردازنده ميتواند بهطور طبيعي اجرا كند. اين عمليات از چندين هزار دستورالعمل ساده و ابتدايي (مانند جمع، ضرب، جابهجايي و…) تشكيل شده كه اجراي آن از پيش براي پردازنده تعريف شده است و اگر عملياتي در خارج از محدودهي اين مجموعه دستورالعمل باشد، پردازنده نميتواند آن را اجرا كند.
همانطوركه اشاره شد، پردازنده وظيفهي اجراي برنامهها را بر عهده دارد. اين برنامهها مجموعهاي از دستورالعملهاي نوشتهشده به زبان برنامهنويسي هستند كه بايد با ترتيبي منطقي و دقيقاً مرحلهبهمرحله اجرا دنبال شوند.
ازآنجاكه كامپيوترها زبانهاي برنامهنويسي را مستقيماً درك نميكنند، اين دستورالعملها بايد به فرم زبانِ ماشين يا باينري ترجمه شوند كه درك آنها براي كامپيوترها آسانتر باشد. فرم باينري تنها از دو عدد صفر و يك تشكيل شده است و دو حالت ممكن روشن (يك) يا خاموش (صفر) ترانزيستورها را براي عبور جريان الكتريسيته نشان ميدهد.
در واقع هر پردازنده را ميتوان مجموعهاي از مدارهاي الكتريكي دانست كه مجموعهي دستورالعملها را دراختيار پردازنده قرار ميدهند و سپس مدارهاي مربوط به آن عمليات به وسيلهي سيگنالي الكتريكي فعال شده و پردازنده آن را اجرا ميكند.
دستورالعملها از تعداد معيني بيت تشكيل شدهاند. براي مثال، در دستورالعملي ۸ بيتي؛ ۴ بيت اول آن به كد عمليات و ۴ بيت بعدي به دادههايي كه بايد استفاده شوند اشاره دارد. طول يك مجموعه دستورالعمل ميتواند از چند بيت تا چند صد بيت متغير بوده و در برخي از معماريها نيز طولهاي متفاوتي داشته باشد.
بهطور كلي مجموعه دستورالعملها به دو دستهبندي اصلي زير تقسيم ميشوند:
- محاسبات كامپيوتري با مجموعه دستورالعملهاي كاهشيافته (Reduced instruction set computer): براي پردازندهي مبتني بر RISC (بخوانيد ريسك)، مجموعه عمليات تعريف شده، ساده و اساسي هستند. اين دست از محاسبات پردازشها را سريعتر و كارآمدتر انجام ميدهند و براي كاهش زمان اجرا بهينهسازي شدهاند؛ RISC نيازي به داشتن مدارهاي پيچيده ندارد و هزينهي طراحي آن پايين است. پردازندههاي مبتني بر RISC، هر دستور را در چرخهاي واحد به اتمام ميرسانند و تنها روي دادههاي ذخيرهشده در رجيسترها، عمليات انجام ميدهند؛ پس دستورالعملهاي سادهاي هستند، فركانس بالاتري دارند، ساختار مسيرسازي اطلاعات در آنها بهينهتر است و عملياتها را روي رجيسترها بارگذاري و ذخيره ميكنند.
- محاسبات كامپيوتري با مجموعه دستورالعملهاي پيچيده (Complex instruction set computer): پردازندههاي CISC (بخوانيد سيسك) يك لايه ميكروكد يا ريزبرنامهريزي اضافي دارند كه در آن دستورالعملهاي پيچيده را به دستورهاي ساده (مانند جمع يا ضرب) تبديل ميكنند. دستورالعملهاي قابلبرنامهريزي در حافظهي سريع ذخيره ميشوند و قابل بهروزرساني هستند. در اين نوع از مجموعه دستورالعملها، تعداد بيشتري از دستورالعملها را نسبت به RICS ميتوان گنجاند و فرمت آنها ميتوانند طول متغير داشته باشند. در واقع CISC تقريباً نقطه مقابل RISC است. دستورالعملهاي CISC ميتوانند چندين چرخهي پردازنده را طي كنند و مسيرسازي اطلاعات در آنها به اندازه پردازندههاي RISC كارآمد نيست. بهطور كلي پردازندههاي مبتني بر CISC ميتوانند چندين عمليات را در طي يك دستور پيچيده اجرا كنند، اما در طول مسير چندين چرخه را طي ميكنند.
RISC درمقابل CISC يا ARM درمقابل x86
RISC و CISC در دستهبندي مجموعهي دستورالعملها، دو نقطهي ابتدايي و انتهايي اين طيف هستند و در اين ميان تركيبهاي مختلف ديگري نيز به چشم ميخورند. در ابتدا به بيان تفاوتهاي اساسي RISC و CISC ميپردازيم:
RICS يا مجموعه دستورالعملهاي كاهش يافته | CISC يا مجموعه دستورالعملهاي پيچيده |
---|---|
مجموعه دستورالعملهاي RISC ساده هستند؛ تنها يك عمليات را اجرا ميكنند و پردازنده ميتواند در طي يك چرخه، آنها را پردازش كند. | دستورالعملهاي CISC چندين عمليات را اجرا ميكنند، اما پردازنده نميتواند آنها را طي يك چرخهي واحد، پردازش كند. |
پردازندههاي مبتني بر RISC مسيرسازي بهينهتر و سادهتري براي اطلاعات دارند؛ طراحي اين دستورها به قدري ساده است كه ميتوان آنها را بهصورت بخشبخش اجرا كرد. | پردازندههاي مبتني بر CISC ماهيت پيچيدهاي دارند و اجراي دستورها در آن دشوارتر است. |
پردازندههاي مبتني بر RISC براي اجراي دستورالعملها به دادههاي ذخيرهشده نياز دارند. | در پردازندههاي مبتني بر CISC بهصورت مستقيم و ازطريق رم ميتوان با دستورها كار كرد و ديگر نيازي به بارگذاري جداگانهي عمليات نيست. |
RISC به سختافزار پيچيدهاي نياز ندارد و تمام عمليات توسط نرمافزار | نيازمنديهاي سختافزاري طراحي CISC، بيشتر است. دستورالعملهاي CISC با استفاده از سختافزار انجام ميشوند و نرمافزارها غالباً سادهتر از RISC هستند. به همين دليل است كه برنامههايي مبتني بر طراحي CISC، كدنويسي كمتري دارد و خود دستورالعملها، بخش بزرگي از عمليات را انجام ميدهند. |
همانطوركه گفته شد در طراحي پردازندههاي مدرن امروزي، تركيبي از اين دو مجموعه (CISC يا RISC) استفاده ميشود. براي مثال معماري x86 ايامدي در اصل از مجموعه دستورالعملهاي CISC استفاده ميكند، اما به ميكروكدي براي سادهسازي دستورالعملهاي پيچيده مشابه RISC نيز مجهز است. حال كه تفاوتهاي دو دستهبندي اصلي مجموعهي دستورالعملها را بيان كرديم، متخصصد آنها را در معماري پردازندهها مطالعه ميكنيم.
اگر هنگام انتخاب موبايل يا تبلت، به معماري پردازندهي آن دقت كنيد، متوجه خواهيد شد كه برخي از مدلها از پردازندههاي اينتل استفاده ميكنند، درحاليكه برخي ديگر مبتني بر معماري ARM هستند.
فرض كنيد كه پردازندههاي مختلف، هر كدام مجموعه دستورالعملهاي مختلفي داشته باشند، در اين صورت براي اجراي برنامههاي مختلف، هر كدام بايد جداگانه براي هر پردازنده كامپايل شوند. براي مثال براي هر پردازنده از خانوادهي AMD، لازم بود تا ويندوزي جداگانه توسعه داده شود، يا هزاران نسخه از برنامهي فتوشاپ براي پردازندههاي مختلف نوشته ميشد. بههميندليل، معماريهاي استانداردي مبتني بر دستهبنديهاي RISC يا CISC يا تركيبي از اين دو طراحي شد و مشخصات اين استانداردها هم دردسترس همه قرار گرفت. ARM، PowerPC، x86-64 و IA-64 نمونههايي از اين استانداردهاي معماري هستند كه در ادامه دو مورد از مهمترين آنها و تفاوتهايشان را معرفي ميكنيم:
تاريخچه مختصري از معماري پردازنده ها
در سال ۱۸۲۳، فردي به نام بارون جونز جكوب برزليوس، عنصر شيميايي سيليكون (نماد Si، عدد اتمي ۱۴) را براي اولين بار كشف كرد. اين عنصر به علت فراواني و خاصيت نيمههادي قوياي كه دارد، بهعنوان ماده اصلي در ساخت پردازندهها و تراشههاي كامپيوتري به كار ميرود. تقريباً يك قرن بعد و در سال ۱۹۴۷، جان باردين، والتر براتين و ويليام شاكلي اولين ترانزيستور را در آزمايشگاه بل اختراع و جايزهي نوبل دريافت كردند.
اولين مدار يكپارچهي (IC) كارآمد، سپتامبر ۱۹۵۸ رونمايي شد و دو سال بعد از آن IBM اولين مركز توليد انبوه خودكار ترانزيستورها را در نيويورك توسعه داد. اينتل در سال ۱۹۶۸ پايهگذاري و AMD نيز يك سال بعد از آن تأسيس شد.
اولين پردازنده در اوايل دههي ۱۹۷۰، توسط اينتل اختراع شد؛ اين پردازنده Intel 4004 نام داشت و با بهرهمندي از ۲۳۰۰ ترانزيستور، ۶۰ هزار عمليات در ثانيه انجام ميداد. ارزش CPU اينتل 4004 با ۲۰۰ تعيين شده بود و تنها ۶۴۰ بايت حافظه داشت:
بعد از اينتل، موتورولا اولين پردازندهي ۸ بيتي خود را (MC6800) با فركانس يك تا دو مگاهرتز معرفي كرد و سپس MOS Technology، پردازندهاي سريعتر و ارزانتر نسبت به پردازندههاي موجود معرفي كرد كه در كنسولهاي گيمينگ آن زمان، يعني آتاري 2600 و سيستمهاي نينتندو مانند Apple II و Commodore 64 استفاده شد. اولين پردازندهي ۳۲ بيتي را موتورولا در سال ۱۹۷۹ توسعه داد، البته اين پردازنده تنها در كامپيوترهاي مكينتاش اپل و آميگا به كار رفت. كمي بعد National Semiconductor، اولين پردازندهاي ۳۲ بيتي را براي استفاده عموم عرضه كرد.
PowerPC در سال ۱۹۹۳، اولين پردازندهي مبتني بر مجموعه دستورالعملهاي ۳۲ بيتي خود را عرضه كرد؛ اين پردازنده توسط اتحاديهي AIM ( تشكيلشده از سه شركت اپل، IBM و موتورولا) توسعه يافت و اپل در آن زمان از اينتل به PowerPC مهاجرت كرد. در ادامه دو ويديوي تبليغاتي را كه اينتل و PowerPC در رقابت با يكديگر منتشر كردند، مشاهده ميكنيد:
تبليغ PowerPC براي نشان دادن ضعفهاي اينتل
تبليغ اينتل براي نشان دادن ضعفهاي PowerPC
تفاوت پردازندهي ۳۲ بيتي و ۶۴ بيتي (x86 درمقابل x64): به بيان ساده، معماري x86 به خانوادهاي از دستورالعملها اشاره دارد كه در يكي از موفقترين پردازندههاي اينتل، به نام 8086 به كار ميرفت و اگر پردازندهاي با معماري x86 سازگار باشد، آن پردازنده را بهعنوان x86-64 يا x86-32 ميشناسند كه براي نسخههاي ويندوزي ۳۲ (و ۱۶) بيتي استفاده ميشود؛ پردازندههاي ۶۴ بيتي را x64 و پردازندههاي ۳۲ بيتي را x86 معرفي ميكنند.
بزرگترين تفاوت بين پردازندههاي ۳۲ بيتي و ۶۴ بيتي، به ميزان دسترسي متفاوت آنها به رم مربوط ميشود:
حداكثر حافظهي فيزيكي معماري x86 يا پردازندههاي ۳۲ بيتي، به ۴ گيگابايت محدود ميشود؛ درحاليكه معماري x64 (يا پردازندههاي ۶۴ بيتي) ميتواند به حافظهي فيزيكي ۸، ۱۶ و برخي مواقع حتي تا ۳۲ گيگابايت دسترسي داشته باشد. يك كامپيوتر ۶۴ بيتي ميتواند هم با برنامههاي ۳۲ بيتي و هم با برنامههاي ۶۴ بيتي كار كند؛ درمقابل، يك كامپيوتر ۳۲ بيتي تنها ميتواند برنامههاي ۳۲ بيتي را اجرا كند.
در بيشتر موارد، پردازندههاي ۶۴ بيتي هنگام پردازش دادههاي گسترده، از پردازندههاي ۳۲ بيتي كارآمدتر عمل ميكنند. براي آگاهي از اينكه سيستمعامل شما از كدام برنامهها (۳۲ بيتي يا ۶۴ بيتي) همراهي ميكند، كافي است يكي از دو مسير زير را طي كنيد:
- كليدهاي Win + X را فشار دهيد تا منوي كانتكس نمايش داده شود و سپس روي گزينهي System كليك كنيد. -> در پنجرهاي كه باز ميشود، بخش System type را در قسمت مشخصات دستگاه (Device specification) پيدا كنيد. ۶۴ بيتي يا ۳۲ بيتي بودن ويندوز خود را از اين قسمت ميتوانيد مشاهده كنيد.
- عبارت msinfo32 را در كادر جستوجوي ويندوز تايپ كرده و روي System Information نمايش دادهشده، كليك كنيد. -> از بخش System Information در سمت راست، نوع System پيدا كنيد و ببينيد كه سيستمعامل ويندوز شما مبتني بر x64 است يا X32.
مسير اول
مسير دوم
ARM نوعي از معماري پردازندههاي كامپيوتري بود كه در سال ۱۹۸۰ توسط Acorn معرفي شد؛ قبل از ARM، ايامدي و اينتل هر دو از دو معماري X86 اينتل، مبتني بر محاسبات CISC، استفاده ميكردند و IBM نيز در وركاستيشنهاي خود از محاسبات RISC بهره ميبرد. در واقع Acorn اولين شركتي بود كه كامپيوتري خانگي بر مبناي محاسبات RISC توسعه داد و نام معماري آن را برگرفته از نام خود ARM گذاشت: مخفف Acorn RISC Machine. اين شركت پردازنده توليد نميكرد و در عوض مجوز استفاده از معماري ARM را به ديگر توليدكنندگان پردازنده ميفروخت. هلدينگ Acorn، چند سال بعد، كلمهي Acorn را به Advanced تغيير داد.
معماري ARM دستورالعملهاي ۳۲ بيتي را پردازش ميكند و هستهي اصلي پردازندهاي مبتني بر اين معماري، حداقل به ۳۵ هزار ترانزيستور نياز دارد. پردازندههاي طراحيشده بر مبناي معماري x86 اينتل كه براساس محاسبات CISC پردازش ميكنند، حداقل به ميليونها ترانزيستور نياز دارند؛ در واقع مصرف بهينهي انرژي در پردازندههاي مبتني بر ARM و مناسب بودن آنها براي دستگاههايي مانند موبايل يا تبلت، با همين تعداد كم ترانزيستورها نسبت به معماري X86 اينتل مرتبط است.
ARM در سال ۲۰۱۱ معماري ARMv8 را با همراهي از دستورها ۶۴ بيتي معرفي و يك سال بعد از آن، مايكروسافت نيز نسخه ويندوز سازگار با معماري ARM را به همراه تبلت سرفيس RT به بازار عرضه كرد.
تفاوت هاي معماري ARM و X86-64
معماري ARM به گونهاي طراحي شده كه تا حد امكان ساده باشد و در عين حال اتلاف انرژي را در حداقلترين سطح نگه دارد. درمقابل اينتل با معماري X86 از تنظيمات پيچيدهتري استفاده ميكند كه بيشتر براي پردازندههاي قدرتمندتر دسكتاپي و لپتاپي مناسب است.
كامپيوترها پس از اينكه اينتل معماري مدرن x86-64 (كه تحت عنوان x64 هم شناخته ميشود) را معرفي كرد، به سراغ معماري ۶۴ بيتي رفتند. معماري ۶۴ بيتي براي انجام بهينهي محاسبات، ضروري است و رندرينگ سهبعدي و رمزنگاري را با دقت و سرعت بيشتري انجام ميدهد. امروزه، هر دو معماري از دستورهاي ۶۴ بيتي همراهي ميكنند، اما اين تكنولوژي براي موبايل زودتر ارائه شد.
ARM در زمان پيادهسازي معماري ۶۴ بيتي در ARMv8، دو رويكرد را در اين معماري پيش گرفت: AArch32 و AArch64. كه اولي براي اجراي كدهاي ۳۲ بيتي و ديگري براي اجراي كدهاي ۶۴ بيتي استفاده ميشود.
طراحي معماري ARM به شكلي است كه ميتواند خيلي سريع بين دو حالت سوييچ كند. اين يعني ديكُدر دستورالعملهاي ۶۴ بيتي ديگر نيازي به سازگاري با دستورها ۳۲ بيتي ندارد و به گونهاي طراحي شده كه با تكنولوژي پيشين سازگار باشد، البته ARM اعلام كرده است كه پردازندههاي مبتني بر معماري ARMv9 Cortex-A در سال ۲۰۲۳ تنها با دستورها ۶۴ بيتي سازگار خواهند بود و همراهي از اپليكيشنها و سيستمعاملهاي ۳۲ بيتي در پردازندههاي نسلهاي بعدي به پايان خواهد رسيد.
تفاوتهاي ميان معماري ARM و اينتل تا حد زيادي نشاندهندهي دستاوردها و چالشهاي اين دو شركت است. رويكرد مصرف بهينهي انرژي در معماري ARM در عين حال كه براي توان مصرفي زير ۵ واتي در موبايلها مناسب است، امكان بهبود عملكرد پردازندههاي مبتني بر اين معماري را تا سطح پردازندههاي لپتاپي اينتل فراهم ميكند. درمقابل توان مصرفي ۱۰۰ واتي اينتل در پردازندههاي Core i7 و Core i9 يا حتي پردازندههاي AMD، دستاوردي بزرگي در دسكتاپهاي ردهبالا و سرورها محسوب ميشود، البته به لحاظ تاريخي پايين آوردن اين توان تا زير ۵ وات امكانپذير نيست.
پردازندههايي كه از ترانزيستورهاي پيشرفتهتر بهره ميبرند، برق كمتري مصرف ميكنند و اينتل نيز از مدتها پيش تلاش ميكرد تا ليتوگرافي خود را از ۱۴ نانومتر به ليتوگرافيهاي پيشرفتهتر ارتقا دهد. اين شركت اخيراً موفق شد پردازندههاي خود را با فرايند ساخت ۱۰ نانومتري توليد كند، اما در همين حين، پردازندههاي موبايلها نيز از ۲۰ نانومتر به طراحيهاي ۱۴ و ۱۰ و ۷ نانومتري رسيدند كه دستاوردي ناشي از رقابت سامسونگ و TSMC است. از سوي ديگر، AMD هم در سري رايزن از پردازندههاي ۷ نانومتري رونمايي كرد و از رقباي معماري x86-64 خود پيشي گرفت.
نانومتر: يك متر تقسيم بر هزار برابر است با يك ميليمتر، يك ميليمتر تقسيم بر هزار برابر است با يك ميكرومتر و يك ميكرومتر تقسيم بر هزار برابر است با يك نانومتر، به تعبير ديگر نانومتر يك ميليارد برابر كوچكتر از متر است.
ليتوگرافي يا فرايند ساخت: ليتوگرافي (lithography) واژهاي يوناني به معناي سنگنگاري است كه در پردازندهها به نحوهي قرار دادن اجزاء يا همان فرايند توليد و شكلگيري مدارها اشاره دارد؛ اين فرايند توسط توليدكنندگان متخصصي در اين زمينه مانند TSMC، نانومتر در ليتوگرافي از زمان توليد اولين پردازندهها تا چند سال پيش، فواصل قرارگيري اجزاي پردازنده در كنار هم را نشان ميداد؛ براي مثال ليتوگرافي چهارده نانومتري پردازندههاي سري Skylake در سال ۲۰۱۵، به اين معنا بود كه اجزاي تشكيلدهندهي آن پردازنده، با فاصله ۱۴ نانومتري از هم قرار گرفتهاند. در آن زمان باور بر اين بود كه هرچه ليتوگرافي يا فرايند ساخت پردازندهاي كمتر باشد، مصرف انرژيِ بهينهتر و عملكرد بهتري دارد.
فواصل قرارگيري اجزا در پردازندهها امروزه ديگر آنچنان موضوعيت ندارد و فرايندهايي كه براي ساخت اين محصولات عنوان ميشوند، بيشتر قراردادي هستند؛ چراكه ديگر نميتوان بدون كاهش بهرهوري، اين فواصل را از يك حدي بيشتر كاهش داد. بهطور كلي با گذشت زمان، پيشرفت فناوري، طراحي ترانزيستورهاي مختلف و افزايش تعداد اين ترانزيستورها در پردازنده، توليدكنندگان راهكارهاي مختلف ديگري مانند انباشهسازي سهبعدي را براي قرار دادن ترانزيستورها روي پردازندهها در پيش گرفتهاند.
منحصربهفردترين قابليت معماري ARM را ميتوان، پايين نگه داشتن توان مصرفي در اجراي اپليكيشنهاي موبايلي دانست؛ اين دستاورد از توانايي پردازش ناهمگن ARM ناشي ميشود؛ معماري ARM اين امكان را فراهم ميكند تا پردازشها بين هستههاي قدرتمند و كممصرف تقسيم شوند و درنتيجه انرژي بهينهتر مصرف شود.
نخستين تلاش ARM در اين حوزه به معماري big.LITTLE در سال ۲۰۱۱ برميگردد و زماني كه هستههاي بزرگ Cortex-A15 و هستههاي كوچك Cortex-A7 از راه رسيدند. ايدهي استفاده از هستههاي قدرتمند براي اپليكيشنهاي سنگين و استفاده از هستههاي كممصرف براي پردازشهاي سبك و پسزمينه، شايد آنچنان كه بايد مورد توجه قرار نگرفته باشد، اما ARM براي رسيدن به آن تلاشهاي ناموفق و شكستهاي زيادي را تجربه كرد؛ امروزه ARM معماري غالب بازار است: براي مثال آيپدها و آيفونها بهطور انحصاري از معماري ARM استفاده ميكنند.
در اين ميان، پردازندههاي Atom اينتل كه از پردازش ناهمگن بيبهره بودند، نتوانستند با عملكرد و مصرف بهينهي پردازندههاي مبتني بر معماري ARM رقابت كنند و همين امر باعث شد اينتل از ARM عقب بماند.
سرانجام اينتل در سال ۲۰۲۰ توانست در طراحي پردازندههاي ۱۰ نانومتري Lakefield خود، معماري هيبريدي براي هستهها را با يك هستهي قدرتمند (Sunny Cove) و چهار هستهي كممصرف (Tremont) به كار گيرد و در كنار اين دستاورد از گرافيك و قابليتهاي اتصال نيز استفاده كند، اما اين محصول براي لپتاپهايي با توان مصرفي ۷ وات ساخته شده بود كه همچنان مصرف بالايي براي موبايلها محسوب ميشود.
يكي ديگر از وجه تمايزهاي مهم اينتل و ARM در نحوهي استفاده از طراحيشان است. اينتل معماري توسعه دادهشدهي خود را در پردازندههايي كه توليد ميكند، به كار ميبرد و معماري را در محصولاتش به فروش ميرساند، درحاليكه ARM گواهي طراحي و معماري خود را با قابليت شخصيسازي به ديگر شركتها، مانند مانند اپل، سامسونگ و كوالكام ميفروشد و اين شركتها ميتوانند بسته به اهداف خود تغييراتي در مجموعه دستورالعملهاي اين معماري و طراحي به وجود آورند.
توليد پردازندههاي شخصيسازيشده براي شركتهاي توليدكنندهي اين محصولات، هزينهبر و پيچيده است، اما اگر به درستي انجام شود، محصولات نهايي ميتوانند بسيار قدرتمند باشند. براي مثال، اپل تا يه حال بارها ثابت كرده است كه شخصيسازي معماري ARM ميتواند عملكرد پردازندههاي اين شركت را همرده با x84-64 يا فراتر از آن قرار دهد.
اپل درنهايت قصد دارد تمام پردازندههاي مبتني بر معماري اينتل را از محصولات مك خود حذف كرده و سيليكون مبتني بر معماري ARM را جايگزين آنها كند. تراشهي M1، نخستين تلاش اپل در اين راستا محسوب ميشود كه همراه با مكبوك اير، مكبوك پرو و مك ميني عرضه شد. پس از آن تراشههاي M1 Max و M1 Ultra نيز نشان دادند كه معماري ARM همراه با چاشني بهبودهاي اپل ميتواند معماري x86-64 را به چالش بكشد.
همانطوركه پيشتر گفته شد، معماريهاي استانداردي مبتني بر دستهبنديهاي RISC يا CISC يا تركيبي از اين دو طراحي شد و مشخصات اين استانداردها هم دردسترس همه قرار گرفت؛ اپليكيشنها و نرمافزارها بايد براي معماري پردازندهاي كه روي آن به اجرا در ميآيند، كامپايل شوند. اين موضوع قبلاً به دليل محدود بودن پلتفرمها و معماريهاي مختلف، دغدغهي بزرگي محسوب نميشد، اما امروزه تعداد اپليكيشنهايي كه براي اجرا در پلتفرمهاي مختلف به كامپايلهاي متفاوتي نياز دارند، افزايش پيدا كرده است.
مكهاي مبتني بر معماري ARM، سيستمعامل كروم در پلتفرم گوگل و ويندوز مايكروسافت، همه و همه مثالهايي در دنياي امروز هستند كه به اجراي نرمافزار روي هر دو معماري Arm و x86-64 نياز دارند. كامپايل بومي نرمافزار، تنها راهكاري است كه ميتوان در چنين شرايطي از آن بهره برد.
درواقع براي اين پلتفرمها امكان شبيهسازي كد يكديگر فراهم است و ميتوان كدهاي كامپايلشده براي يك معماري را روي معماري ديگري به اجرا درآورد. ناگفته نماند كه چنين رويكردي نسبت به توسعهي ابتدايي اپليكيشني سازگار با هر پلتفرم، با كاهش عملكرد همراه است، اما همين امكانپذير بودن شبيهسازي كد، ميتواند تا حد زيادي فعلاً اميدواركننده باشد.
پس از سالها توسعه، درحالحاضر شبيهساز ويندوز براي پلتفرمي مبتني بر معماري ARM، عملكرد قابلقبولي براي اجراي اكثر اپليكيشنها ارائه ميدهد، اپليكيشنهاي اندرويدي نيز در اكثر مواقع روي كرومبوكهاي مبتني بر معماري اينتل، كموبيش رضايتبخش اجرا ميشوند و اپل هم كه ابزار ترجمهي كد مخصوص به خود (Rosetta 2) را توسعه داده است از اپليكيشنهاي قديمي مك كه براي معماري اينتل توسعه داده شده بودند، همراهي ميكند.
اما همانطوركه اشاره شد، هر سه، در اجراي برنامهها نسبت به شرايطي كه برنامه از ابتدا براي هر پلتفرم جداگانه نوشته شود، ضعيفتر عمل ميكنند. در كل معماري ARM و X86-64 اينتل را ميتوان به شرح زير مقايسه كرد:
معماري | ARM | X86-64 |
---|---|---|
CISC درمقابل RISC | معماري ARM نوعي معماري براي پردازندهها است و بنابراين تنها يك سازنده ندارد. اين فناوري در پردازندههاي موبايلهاي اندرويدي و آيفونها به كار ميرود. | معماري X86 توسط اينتل توليد شده و منحصراً در پردازندههاي دسكتاپي و لپتاپي اين شركت استفاده ميشود. |
پيچيدگي دستورالعملها | معماري ARM تنها از يك چرخه براي اجراي يك فرمان استفاده ميكند و اين ويژگي باعث ميشود پردازندههاي مبتني بر اين معماري براي دستگاههايي كه نياز به پردازشهاي سادهتري دارند، مناسبتر باشد. | معماري اينتل (يا معماري X86 مرتبط با برنامههاي ۳۲ بيتي ويندوز) غالباً از محاسبات CISC استفاده ميكند و به همين دليل مجموعه دستورالعملهاي كمي پيچيدهتري داشته و براي اجرا به چندين چرخه نياز دارد. |
پردازندههاي موبايل درمقابل پردازندههاي دسكتاپي | وابسته بودن معماري ARM به نرمافزار، باعث ميشوند تا اين معماري در طراحي پردازندهي موبايلها بيشتر به كار رود؛ ARM (بهطور كلي) در فناوريهاي كوچكتر كه مدام به منبع تغذيه دسترسي ندارند، بهتر كار ميكند. | ازآنجاكه معماري X86 اينتل بيشتر به سختافزار متكي است، اين معماري معمولاً براي طراحي پردازندههاي دستگاههاي بزرگتر مانند دسكتاپها استفاده ميشود؛ اينتل بيشتر بر عملكرد تمركز ميكند و براي فناوريهاي گستردهتر، معماري بهتري محسوب ميشود. |
مصرف انرژي | معماري ARM نهتنها به لطف مجموعه محاسباتي تك چرخه خود، انرژي كمتري مصرف ميكند، بلكه دماي عملياتي آنها نيز نسبت به معماري X86 اينتل كمتر است؛ معماري ARM براي طراحي پردازندههاي موبايلها عالي هستند، چراكه ميزان انرژي لازم براي سرپا نگهداشتن سيستم و انجام دستورهاي درخواستي متخصص را كاهش ميدهد. | معماري اينتل بر عملكرد متمركز بوده و از اين رو براي متخصصان دسكتاپها يا لپتاپها كه به منبع نامحدود برق دسترسي دارند، اشكالي ايجاد نميكند. |
سرعت پردازنده | پردازندههاي مبتني بر معماري ARM معمولاً كندتر از همتايان اينتلي خود هستند، چراكه براي مصرفي بهينه با توان پايينتري محاسبات را انجام ميدهند. | پردازندههاي مبتني بر معماري X86 اينتل براي محاسبات سريعتر به كار ميروند. |
سيستمعامل | معماري ARM در طراحي پردازندههاي موبايلهاي اندرويدي كارآمدتر است و معماري غالب در اين بازار به حساب ميآيد؛ با اينكه دستگاههاي مبتني بر معماري X86 نيز ميتوانند طيف كاملي از برنامههاي اندرويدي، اما اين برنامهها بايد قبل از اجرا، ترجمه شوند. اين سناريو به صرف زمان و انرژي نياز دارد، بنابراين ممكن است عمر باتري و عملكرد كلي پردازنده صدمه ببيند. | معماري اينتل در تبلتها و سيستمعامل ويندوز، بهعنوان معماري غالب حكمراني ميكند. البته مايكروسافت در سال ۲۰۱۹، سرفيس پرو ايكس را با پردازندهاي عرضه كرد كه از معماري ARM بهره ميبرد و ميتوانست نسخهي كامل ويندوز را اجرا كند. اگر گيمر هستيد يا اگر از تبلت خود انتظاراتي فراتر از اجراي نسخهي كامل ويندوز داريد، بهتر است همچنان از معماري اينتل بهره ببريد. |
در جريان رقابت بين Arm و x86 در ده سال گذشته، ARM را ميتوان معماري برنده براي دستگاههاي كممصرف مانند موبايلها دانست. اين معماري در لپتاپها و ساير دستگاههايي كه به مصرف بهينهي انرژي نياز دارند نيز گامهاي بلندي برداشته است. درمقابل با اينكه اينتل بازار موبايلها را از دست داده، تلاشهاي اين توليدكننده براي بهينهسازي مصرف انرژي در طول سالها با پيشرفتهاي چشمگيري همراه بوده است و با توسعهي معماري هيبريدي، مانند تركيب Lakefield و Alder Lake ، اكنون بيش از هر زمان ديگري اشتراكات بسياري با پردازندههاي مبتني بر معماري Arm دارد. Arm و x86 بهطور مشخص از نقطه انديشه متخصصين مهندسي متفاوت هستند و هركدام نقاط قوت و ضعف فردي مخصوص به خود را دارند، بااينحال، امروزه ديگر تشخيص موارد استفاده و مصرف اين دو از هم ديگر كار آساني نيست، چراكه همراهي از هر دو معماري بهطور فزايندهاي در اكوسيستمها در حال افزايش است.
شاخصهاي عملكرد پردازنده ها
عملكرد پردازنده، تأثير زيادي بر سرعت بارگيري برنامهها و اجراي روان آنها دارد و براي اندازهگيري عملكرد هر پردازنده نيز معيارهاي مختلفي وجود دارد كه فركانس (سرعت ساعت) يكي از مهمترين آنها است. پس دقت داشته باشيد فركانس هر هسته را ميتوان معياري براي اندازهگيري توان پردازشي آن در انديشه متخصصين گرفت، اما اين معيار لاخبار تخصصياً معرف عملكرد كلي پردازنده نيست و موارد زيادي مانند تعداد هستهها و رشتهها، معماري داخلي (هم افزايي بين هستهها)، ظرفيت حافظهي كش، قابليت اوركلاك، توان حرارتي، توان مصرفي، IPC و … را نيز براي قضاوت در مورد عملكرد كلي پردازنده در انديشه متخصصين گرفت.
همافزايي يا سينرژي (Synergy) به اثري گفته ميشود كه از جريان يا برهمكنش (تعامل) دو يا چند عنصر بهوجود ميآيد. اگر اين اثر از مجموع اثرهايي كه هر كدام از آن عناصر جداگانه ميتوانستند به وجود آورند بيشتر شود در اين صورت پديدهي همافزايي رخ داده است.
در ادامه، دربارهي عوامل تأثيرگذار در عملكرد پردازنده، بيشتر توضيح ميدهيم:
فركانس پردازنده ها
يكي از مهمترين عوامل در انتخاب و خريد يك پردازنده فركانس (سرعت كلاك يا Clock Speed) آن بوده كه معمولاً براي همهي هستههاي آن پردازنده عددي ثابت است. تعداد عملياتي كه پردازنده در هر ثانيه انجام ميدهد را سرعت آن معرفي ميكنند و با واحد هرتز (Hertz) مگاهرتز (MHz براي پردازندههاي قديميتر) يا گيگاهرتز (GHz) بيان ميشود.
در فركانس يكسان، پردازندهاي با IPC بالاتر ميتواند پردازش بيشتري انجام دهد و قدرتمندتر است
بهطور دقيقتر فركانس به تعداد چرخههاي محاسباتي اشاره دارد كه هستههاي پردازنده در هر ثانيه انجام ميدهند و با واحد گيگاهرتز (GHz-ميلياردها چرخه در ثانيه) اندازهگيري ميشود.
براي مثال، پردازندهاي با فركانس ۳٫۲ گيگاهرتز، ۳٫۲ ميليارد سيكل عمليات در ثانيه اجرا ميكند. در اوايل دههي ۱۹۷۰، پردازندهها از فركانس يك مگاهرتز (MHz) يا اجراي يك ميليون چرخه در ثانيه عبور كردند و در حدود سال ۲۰۰۰ واحد اندازهگيري گيگاهرتز (GHz) برابر با يك ميليارد هرتز براي اندازهگيري فركانس آنها انتخاب شد.
گاهي اوقات، چندين دستورالعمل در يك چرخه تكميل ميشوند و در برخي موارد نيز، يك دستورالعمل ممكن است در چندين چرخه پردازش شود. ازآنجاكه معماريها و طراحيهاي مختلف هر پردازنده، دستورالعملها را به شكلي متفاوت انجام ميدهند، توان پردازشي هستههاي آنها بسته به معماري ميتواند متفاوت باشد. در واقع بدون دانستن تعداد دستورالعملهاي پردازششده در هر چرخه (IPC) مقايسهي فركانس دو پردازنده كاملاً بيمعني است.
فرض كنيد دو پردازنده داريم؛ يكي توسط شركت A و ديگري توسط شركت B توليد شده است و فركانس هر دوي آنها يكسان و برابر با يك گيگاهرتز است. اگر هيچ اطلاعات ديگري دراختيار نداشته باشيم، ممكن است اين دو پردازنده را از انديشه متخصصين عملكرد يكسان در انديشه متخصصين بگيريم؛ اما اگر پردازندهي شركت A در هر چرخه يك دستورالعمل را تكميل كند و پردازندهي شركت B نيز بتواند در هر چرخه دو دستورالعمل را كامل كند. بديهي است كه پردزاندهي دوم، عملكردي سريعتر از پردازندهي A خواهد داشت.
به عبارت سادهتر، در فركانس يكسان، پردازندهاي با IPC بالاتر ميتواند پردازش بيشتري انجام دهد و قدرتمندتر است. پس براي ارزيابي صحيح عملكرد هر پردازنده، علاوه بر فركانس به تعداد دستورالعملهايي كه در هر چرخه انجام ميدهد هم نياز خواهيد داشت.
بنابراين بهتر است فركانس هر پردازنده را با فركانس پردازندههاي سريها و نسلهاي مشابه با همان پردازنده مقايسه كرد. اين احتمال وجود دارد كه پردازندهاي مربوط به پنج سال پيش با فركانسي بالا، از پردازندهاي جديد با فركانسي پايينتر بهتر عمل كند، چراكه معماريهاي جديدتر به شكلي كارآمدتر با دستورالعملها برخورد ميكنند.
پردازندههاي سري X اينتل ممكن است از پردازندههاي سري K با فركانس بالاتر بهتر عمل كند، زيرا وظايف را بين هستههاي بيشتري تقسيم ميكنند و حافظهي كش بزرگتري دارند؛ از سوي ديگر در همان نسل از پردازندهها، پردازندهاي با فركانس بالاتر معمولاً در بسياري از برنامهها بهتر از پردازندههايي با فركانس پايينتر عمل ميكند. به همين دليل است كه در مقايسهي پردازندهها، شركت توليدكننده و نسل پردازنده از اهميت بالايي برخوردار است.
فركانس پايه و فركانس بوست: فركانس پايهي هر پردازنده، حداقل فركانسي است كه پردازنده در زمان بيكاري يا هنگام انجام پردازشهاي سبك با آن كار ميكند؛ درمقابل، فركانس بوست معياري است كه نشان ميدهد عملكرد پردازنده هنگام انجام محاسبات سنگينتر يا فرآيندهاي سختتر، چقدر ميتواند افزايش پيدا كند. فركانسهاي بوست بهطور خودكار اعمال ميشوند و با گرماي حاصل از پردازشهاي سنگين، قبل از اينكه پردازنده به سطوح ناامني در انجام محاسبات برسد، محدود ميشوند.
در واقع نميتوان بدون محدوديتهاي فيزيكي (عمدتا برق و گرما) فركانس پردازندهاي را افزايش داد و زماني كه فركانس به حدود ۳ گيگاهرتز ميرسد، مصرف برق بهطور نامتناسبي افزايش پيدا ميكند.
حافظه كش
يكي ديگر از عواملي كه بر عملكرد پردازنده تأثير ميگذارد، ظرفيت حافظهي كش يا رم پردازنده است؛ اين نوع رم به دليل قرار گرفتن در نزديكي پردازنده بسيار سريعتر از رم اصلي سيستم عمل كرده و پردازنده از آن براي ذخيرهي موقت دادهها و كاهش زمان انتقال دادهها به/از حافظهي سيستم استفاده ميكند.
بنابراين، كش نيز ميتواند تأثير زيادي بر عملكرد پردازنده داشته باشد؛ هرچه ظرفيت رم پردازنده بيشتر باشد، عملكرد بهتري خواهد داشت. خوشبختانه امروزه تمام متخصصان ميتوانند به ابزارهاي بنچمارك دسترسي داشته باشند و فارغ از ادعاهاي توليدكنندهها، خودشان هم عملكرد پردازندهها را ارزيابي كنند.
حافظهي كش ميتواند چند لايهاي باشد و با حرف L نشان داده ميشود. معمولاً پردازندهها تا سه يا چهار لايه حافظهي كش دارند كه لايهي اول (L1) نسبت به لايهي دوم (L2)، لايهي دوم نسبت به لايهي سوم (L3) و لايهي سوم نيز نسبت به لايهي چهارم (L4) سرعت بيشتر و حافظهي كمتري دارد. حافظهي كش معمولاً تا چند ده مگابايت فضا براي ذخيره كردن ارائه ميدهد و هرچه اين فضا بيشتر باشد، پردازنده با ارزش بالاتري به فروش خواهد رسيد.
حافظهي كش وظيفهي حفظ داده را بر عهده دارد؛ اين حافظه از رم (RAM) كامپيوتر سرعت بالاتري دارد و به همين دليل تأخير در اجراي دستورها را كاهش ميدهد؛ درواقع پردازنده براي دسترسي به دادهاي دلخواه، ابتدا حافظهي كش را چك ميكند و در صورتي كه دادهي مورد انديشه متخصصين در آن حافظه وجود نداشته باشد به سراغ رم ميرود.
- حافظهي كش سطح يك (L1) كه اولين حافظهي كش يا كش داخلي نام دارد؛ نزديكترين حافظه به پردازنده است و سرعت بالا و حجم كمتري نسبت به ديگر سطوح حافظهي كش دارد، اين حافظه، مهمترين دادههاي مورد نياز براي پردازش را در خود ذخيره ميكند؛ چراكه پردازنده هنگام پردازش يك دستورالعمل، اول از همه به سراغ حافظهي كش سطح يك ميرود.
- حافظهي كش سطح دو (L2) كه به آن حافظهي كش خارجي ميگويند نسبت به L1 سرعت كمتر و حجم بيشتري دارد و با توجه به ساختار پردازنده ممكن است بهصورت مشترك يا مجزا استفاده شود. L2 برخلاف L1 در رايانههاي قديمي روي مادربرد قرار ميگرفت ولي امروزه در پردازندههاي جديد اين حافظه روي خود پردازنده قرار ميگيرد و نسبت به لايهي بعدي كش، يعني L3، تأخير كمتري دارد.
- حافظهي كش L3 حافظهاي است كه در پردازنده بين تمام هستهها مشترك است و از لحاظ ظرفيت نسبت به حافظهي كش L1 يا L2 حجم بيشتري داشته، اما از انديشه متخصصين سرعت از آن دو كندتر است.
- حافظهي كش L4 هم مانند L3، نسبت به L1 يا L2 حجم بيشتر و سرعت كمتري دارد؛ L3 يا L4 معمولاً بهصورت اشتراكي مورداستفاده قرار ميگيرند.
هسته هاي پردازشي
هسته، واحد پردازشي پردازنده است كه ميتواند بهطور مستقل تمام وظايف محاسباتي را انجام داده يا پردازش كند. از اين مانديشه متخصصين، ميتوان هسته را پردازندهاي كوچك در كل واحد پردازش مركزي در انديشه متخصصين گرفت. اين بخش از پردازنده از همان واحدهايي عملياتي محاسبه و عمليات منطقي (ALU)، كنترل حافظه (CU) و ثبات (Register) تشكيل شده است كه فرايند پردازش دستورها را با چرخهي واكشي-اجرا انجام ميدهند.
در ابتدا پردازندهها تنها با يك هسته كار ميكردند، اما امروزه پردازندهها عمدتاً چند هستهاي هستند و حداقل دو يا چند هسته روي مدار مجتمع، دو يا چند فرايند را بهطور همزمان پردازش ميكنند. توجه داشته باشيد كه هر هسته تنها ميتواند در هر زمان يك دستور را اجرا كند. پردازندههاي مجهز به چند هسته، مجموعه دستورها يا برنامهها را با استفاده از پردازش موازي (Parallel Computing) سريعتر از قبل اجرا ميكنند. البته داشتن هستههاي بيشتر به معناي افزايش كارايي كلي پردازنده نيست. چون بسياري از برنامهها هنوز از پردازش موازي استفاده نميكنند.
- پردازندههاي تك هستهاي (Single-core): قديميترين نوع پردازنده، پردازندهي تكهستهاي است كه ميتواند در هر زمان، تنها يك فرمان را اجرا كند و براي انجام چندين كار بهطور همزمان كارآمد نيست. در اين پردازنده شروع فرايندي مستلزم پايان عمليات قبلي است و در صورت اجراي بيش از يك برنامه، عملكرد پردازنده به شكل قابلتوجهي كاهش پيدا ميكند. عملكرد يك پردازندهي تك هستهاي با اندازهگيري توان آن و براساس فركانس محاسبه ميشود.
- پردازندههاي دو هستهاي (Dual-core): پردازندهي دو هستهاي از دو هستهي قوي تشكيل شده و عملكردي مشابه دو پردازندهي تك هستهاي دارد. تفاوت اين پردازنده با پردازندهي تك هستهاي در اين است كه در آرايهاي متغير از جريانهاي داده به صورت رفت و برگشتي سوئيچ ميكند و اگر رشته يا رشتههاي بيشتري اجرا شود، پردازنده دو هستهاي ميتواند چندين وظيفه پردازش را به شكل بهينهتري مديريت كند.
- پردازندههاي چهار هستهاي (Quad-core): پردازندهي چهار هستهاي، مدل بهيينهشدهاي از پردازندهي چند هستهاي است كه حجم كار را بين هستهها تقسيم كرده و با بهرهمندي از چهار هسته، قابليت چندوظيفگي موثرتري را فراهم ميكند؛ از اين رو براي گيمرها و متخصصان حرفهاي مناسبتر است.
- پردازندههاي شش هستهاي (Hexa-Core): يكي ديگر از انواع پردازندههاي چند هستهاي، پردازندهي شش هستهاي است كه پردازشها را نسبت به انواع چهار هستهاي و دو هستهاي با سرعت بالاتري انجام ميدهد. براي مثال پردازندههاي Core i7 اينتل شش هسته دارند و براي متخصصي روزمره مناسب هستند.
- پردازندههاي هشت هستهاي (Octa-Core): پردازندههاي هشت هستهاي با هشت هستهي مستقل توسعه يافتهاند و نسبت به انواع قبلي كارايي بهتري ارائه ميدهند؛ اين پردازندهها شامل مجموعهاي دوگانه از پردازندههاي چهار هستهاي هستند كه فعاليتهاي مختلفي را بين انواع مختلف تقسيم ميكنند. به اين معني كه در بسياري از مواقع، براي پردازش از حداقل هستههاي مورد نياز استفاده شده و اگر اضطرار يا نيازي وجود داشته باشد، چهار هستهي ديگر نيز در انجام محاسبات به كار گرفته ميشوند.
- پردازندههاي ده هستهاي (Deca-Core): پردازندههاي ده هستهاي از ده سيستم مستقل تشكيل شدهاند كه در اجرا و مديريت پردازشها نسبت به ساير پردازندهها، قدرتمندتر عمل ميكنند. اين پردازندهها از انواع ديگر سريعتر هستند، قابليت چندوظيفگي را به بهترين شكل ممكن انجام ميدهند و روزبهروز هم تعداد بيشتري از آنها به بازار عرضه ميشوند.
تفاوت بين پردازش تك هستهاي و چند هستهاي
بهطور كلي ميتوان گفت كه انتخاب بين پردازندهاي تكهستهاي و قدرتمند و پردازندهاي چند هستهاي با قدرتي معمولي، تنها و تنها به نحوهي متخصصي بستگي دارد و نسخهي از پيش نوشتهشدهاي براي همه وجود ندارد. عملكرد قدرتمند پردازندههاي تك هستهاي براي استفاده در برنامههاي نرمافزاري كه به چندين هسته احتياجي ندارند يا نميتوانند از چند هسته استفاده كنند، اهميت دارد. داشتن هستههاي بيشتر لاخبار تخصصياً به معناي سرعت بيشتر نيست، اما اگر برنامهاي براي استفاده از چند هسته بهينهسازي شده باشد، با هستههاي بيشتر سريعتر اجرا ميشود. بهطور كلي، اگر از برنامههايي كه براي پردازش تك هستهاي بهينهسازي شدهاند، بيشتر استفاده ميكنيد، احتمالاً پردازندهاي با تعداد هستههاي زياد منفعتي برايتان نخواهد داشت.
فرض كنيد ميخواهيد ۲ نفر را از نقطه A به B ببريد، قطعاً يك لامبورگيني اين كار را به خوبي تمام انجام ميدهد، اما اگر بخواهيد ۵۰ نفر را جابهجا كنيد، اتوبوس ميتواند راهحل سريعتري از چندين بار رفتوآمد لامبورگيني باشد. همين امر در مورد پردازش تكهستهاي درمقابل چندهستهاي نيز صدق ميكند.
در سالهاي اخير و با پيشرفت تكنولوژي، هستههاي پردازندهها بهطور فزايندهاي كوچكتر شدهاند و درنتيجه ميتوان هستههاي بيشتري را روي يك تراشه پردازنده قرار داد و سيستمعامل و نرمافزار نيز بايد براي استفاده از تعداد هستههاي بيشتر بهينهسازي شوند تا دستورالعملها را تقسيم كرده و بهطور همزمان به هستههاي مختلف تخصيص دهند. اگر اين كار به درستي انجام شود، عملكردي چشمگير را شاهد خواهيم بود.
در پردازندههاي چند هستهاي سنتي، تمام هستهها يكسان پيادهسازي ميشدند و امتياز عملكرد و قدرت يكساني داشتند. اشكال اين پردازندهها، اين بود كه وقتي پردازنده در حالت بيكار است يا پردازشي سبك انجام ميدهد، امكان پايينتر آوردن مصرف انرژي از يك حدي بيشتر وجود ندارد. اين مسئله در شرايط دسترسي نامحدود به منابع برق، دغدغه محسوب نميشود، اما در شرايطي كه سيستم براي پردازش به باتري يا منبع برق محدود متكي است، ميتواند اشكالساز باشد.
اينجا بود كه مفهوم طراحي نامتقارن پردازندهها شكل گرفت. اينتل براي موبايلهاي هوشمند به سرعت راهحلي اتخاذ كرد كه برخي هستهها پرقدرتتر باشند و عملكردي باكيفيتتري ارائه دهند و تعدادي هسته نيز به صورت كممصرف پيادهسازي شوند؛ اين هستهها تنها براي اجراي وظايف پسزمينه يا اجراي برنامههاي متخصصدي اساسي مانند خواندن و نوشتن رايانامه يا وبگردي خوب عمل ميكنند.
هستههاي پرقدرت بهطور خودكار زماني كه ويدئو گيمي را راهاندازي ميكنيد يا زماني كه برنامهاي سنگين براي انجام يك كار خاص به عملكرد بهتري نياز دارد، وارد عمل ميشوند.
با اينكه تركيب هستههاي پرقدرت و كممصرف در پردازندهها، ايدهي جديدي نيست، اما به كار بردن اين تركيب در كامپيوترها، حداقل تا زمان عرضهي پردازندههاي نسل دوازدهم آلدر ليك توسط اينتل، آنچنان رايج نبود.
در هر مدل از پردازندههاي نسل دوازدهم اينتل، هستههاي E (كممصرف) و هستههاي P (قدرتمند) وجود دارند؛ نسبت بين اين دو نوع هسته ميتواند متفاوت باشد، اما براي مثال در پردازندههاي سري Core i9 آلدر ليك، هشت هسته براي انجام پردازشهاي سنگين و هشت هسته براي انجام پردازشهاي سبك در انديشه متخصصين گفته شده است. سريهاي i7 و i5 به ترتيب داراي طراحي ۸ / ۴ و ۶ / ۴ براي هستههاي P و E هستند.
مزاياي زيادي براي داشتن رويكرد معماري تركيبي در هستههاي پردازندهها وجود دارد و متخصصان لپتاپها در اين ميان بيشترين سود را خواهند برد، چراكه اكثر كارهاي روزمره مانند وبگردي و… به عملكرد فشردهاي نياز ندارند. اگر تنها هستههاي كممصرف درگير باشند، كامپيوتر يا لپتاپ جديد نميكند و باتري آن مدت زمان بيشتري دوام ميآورد.
توليد هستههاي كممصرف ساده و كمهزينه است، بنابراين استفاده از آنها براي تقويت و آزادسازي هستههاي قدرتمند و پيشرفته ايدهاي هوشمندانه به انديشه متخصصين ميرسد
حتي اگر سيستم خود را به منبع برقي متصل كرده باشيد هم، وجود هستههاي كممصرف كارآمد خواهد بود. براي مثال اگر مشغول گيمينگ باشيد و اين فرايند به تمام قدرت پردازنده نياز داشته باشد، هستههاي قدرتمند ميتوانند اين نياز را برطرف كنند و هستههاي كممصرف نيز همزمان مسئوليت اجراي فرايندهاي پسزمينه يا برنامههايي مانند Skype و… را عهدهدار ميشوند.
حداقل در مورد پردازندههاي آلدر ليك اينتل، هستههاي P و E به گونهاي طراحي شدهاند كه با يكديگر تداخل نداشته باشند تا هر كدام بتوانند به صورت مستقل وظايفي را انجام دهند. متأسفانه، ازآنجاكه تركيب پردازندههاي مختلف، مفهومي نسبتاً جديد براي پردازندههاي x86 محسوب ميشود، اين تغيير اساسي در معماري x86 با اشكالاتي همراه است.
توسعهدهندگان نرمافزارها قبل از مطرح شدن ايدهي هستههاي هيبريدي (يا تركيب هستههاي قدرتمند يا P و كممصرف يا E) دليلي براي توسعهي محصولات خود به شكل سازگار با اين معماري نميديدند، بنابراين نرمافزار آنها از تفاوت بين هستههاي كممصرف و پرمصرف آگاه نبوده و همين امر باعث ميشود كه در برخي موارد گزارشهايي مبني بر خرابي يا رفتار عجيب برخي نرمافزارها (مانند Denuvo) مطرح شود.
رشته هاي پردازشي
رشتههاي پردازشي يا Thread به رشتههايي از دستورالعملها گفته ميشود كه براي پردازش به پردازنده ارسال ميشوند؛ هر پردازنده در حالت عادي قابليت پردازش يك دستورالعمل را دارد كه به آن دستورالعمل اصلي ميگويند و در صورتي كه دو دستورالعمل به پردازنده ارسال شود، دستورالعمل دوم بعد از اجراي دستورالعمل اول اجرا ميشود. اين روند ميتواند به كند شدن سرعت و كارايي پردازنده منجر شود. در همين راستا توليدكنندگان پردازندهها ، هر هستهي فيزيكي را به دو هستهي مجازي (Thread) تقسيمبندي ميكنند كه هر يك از اين هستهها امكان اجراي يكرشته پردازش مجزا را دارد و هر هسته با داشتن دو ترد، ميتواند دو رشتهي پردازشي را بهطور همزمان اجرا كند.
پردازش فعال درمقابل پردازش غيرفعال
پردازش فعال به فرايندي اطلاق ميشود كه متخصص براي تكميل يك دستورالعمل نياز دارد تا دادهها را به صورت دستي تنظيم كند؛ از نمونههاي رايج پردازشهاي فعال ميتوان به طراحي حركت، مدلسازي سهبعدي، ويرايش ويدئو يا بازي اشاره كرد. در اين نوع از پردازش، عملكرد تكهستهاي و سرعت بالاي هسته اهميت زيادي دارد، بنابراين در اجراي چنين پردازشهايي براي بهرهمدي از عملكردي روان به تعداد هستههاي كمتر، اما قدرتمندتر نياز داريم.
از سوي ديگر، پردازش غيرفعال، دستورالعملهايي هستند كه معمولاً بهراحتي ميتوان آنها را به صورت موازي اجرا و به حال خود رها كرد، مانند رندرهاي سهبعدي و ويدئوها؛ چنين پردازشهايي به پردازندههايي با تعداد هستههاي زياد و فركانس پايهي بالاتري، مانند پردازندههاي سري Threadripper ايامدي نياز دارند.
يكي از عواملي تأثيرگذار در انجام پردازشهاي غيرفعال، تعداد بالاي رشتهها و قابليت بهكارگيري آنها است. به زبان ساده، رشته مجموعهاي از دادهها است كه براي پردازش از يك برنامه متخصصدي به پردازنده ارسال ميشود و امكان انجام چندين كار همزمان را به شكلي كارآمد و سريع براي پردازنده فراهم ميكند؛ درواقع به دليل وجود رشتهها در سيستم است كه ميتوان همزمان با وبگردي به موسيقي هم گوش دهيد.
رشتهها اجزاي فيزيكي پردازنده نيستند، بلكه ميزان پردازشهايي را كه هستههاي پردازنده ميتوانند انجام دهند، نشان ميدهند و براي اجراي چندين دستورالعمل بسيار فشرده بهطور همزمان، به پردازندهاي با تعداد زيادي رشته نياز خواهيد داشت.
تعداد رشتههاي هر پردازنده، با تعداد هستههاي آن ارتباط مستقيمي دارد؛ در واقع هر هسته معمولاً ميتواند دو رشته داشته باشد و همه پردازندهها رشتههاي فعالي دارند كه براي انجام هر فرايند، حداقل يك رشته را به آن اختصاص ميدهند.
هايپرتردينگ يا SMT چيست؟
هايپرتردينگ (Hyperthreading) در پردازندههاي اينتل و مولتيتردينگ همزمان (SMT) در پردازندههاي AMD مفهومهايي براي نشان دادن فرايند تقسيم هستههاي فيزيكي به هستههاي مجازي هستند؛ در واقع اين دو قابليت، راهكاري براي زمانبندي و اجراي دستورالعملهايي است كه بدون وقفه به پردازنده ارسال ميشوند.
امروزه اكثر پردازندهها به قابليت هايپرتردينگ يا SMT مجهز هستند و دو رشته را در هر هسته اجرا ميكنند. بااينحال، برخي از پردازندههاي پايينرده، مانند سري Celeron اينتل يا سري Ryzen 3 ايامدي از اين قابليت همراهي نميكنند و تنها يك رشته در هر هسته دارند. حتي برخي از پردازندههاي بالاهردهي اينتل نيز به دلايل مختلف مانند تقسيمبندي بازار، با هايپرتردينگ غيرفعال عرضه ميشوند، بنابراين بهطور كلي بهتر است قبل از خريد هر پردازنده، براي اطلاع از اين موضوع، حتماً بخش توضيحات هستهها و رشتههاي (Cores & Threads) آن را مطالعه كنيد.
قابليت هايپرتردينگ يا مولتيتردينگ همزمان به برنامهريزي مؤثرتر براي اجراي دستورالعملها كمك ميكنند و بخشهايي از هسته را به كار ميگيرند كه در لحظه غيرفعال هستند. در بهترين حالت، رشتهها در مقايسه با هستههاي فيزيكي حدود ۵۰ درصد عملكرد بيشتري ارائه ميدهند.
بهطور كلي، اگر در طول روز تنها پردازشهاي فعالي مانند مدلسازي سهبعدي را اجرا ميكنيد، به احتمال زياد از تمام هستههاي پردازندهي خود استفاده نخواهيد كرد؛ چراكه اين نوع پردازش معمولاً فقط روي يك يا دو هسته اجرا ميشود، اما براي انجام پردازشهايي مانند رندرينگ كه به تمام توان هستههاي پردازنده و رشتههاي موجود نياز دارد، بهرهمندي از قابليت هايپرتردينگ يا SMT ميتواند تفاوت قابلتوجهي در عملكرد ايجاد كند.
پردازنده در گيمينگ
تا قبل از عرضهي پردازندههاي چندهستهاي، بازيهاي كامپيوتري براي سيستمهاي تكهستهاي توسعه داده ميشدند، اما بعد از معرفي اولين پردازندهي دوهستهاي در سال ۲۰۰۵ توسط AMD و عرضهي پردازندههاي چهار، شش و هشت هستهاي بعد از آن، ديگر محدوديتي براي كمك گرفتن از هستههاي بيشتر وجود نداشت؛ چراكه قابليت اجراي چندين عمليات مختلف به صورت همزمان براي پردازندهها فراهم شده بود.
هر گيمر براي داشتن تجربهاي رضايتبخش از سيستم گيمينگ، بايد پردازنده و پردازندهي گرافيكي (پردازندهي گرافيكي و كاركرد آن را در مقالهاي جداگانه به صورت كامل مطالعه خواهيم كرد) سيستم خود را به شكلي متعادل انتخاب كند. اگر پردازنده عملكرد ضعيف يا كُندي داشته باشد و نتواند دستورها را بهاندازهي كافي سريع اجرا كند، گرافيك سيستم نيز نميتواند از حداكثر توان خود بهره ببرد؛ البته برعكس اين قضيه هم صادق است. در چنين شرايطي به اصطلاح ميگوييم كه گرافيك باتِلنِك (Bottleneck) شده است.
Bottleneck چيست؟
در زمينهي كامپيوترها، باتلنك (يا گلوگاه) به محدود شدن عملكرد مؤلفهاي درنتيجهي تفاوت در حداكثر قابليتهاي دو مؤلفهي سختافزاري گفته ميشود. به زبان ساده اگر واحد گرافيكي دستورالعملها را سريعتر از توان پردازنده براي ارسال آنها، دريافت كند، اين واحد تا زمان آماده شدن مجموعهي بعدي دستورالعملها، بيكار ميماند و فريمهاي كمتري را در ثانيه رندر ميكند؛ در اين شرايط سطح عملكرد گرافيك به دليل محدوديتهاي پردازنده محدود ميشود.
همين امر ممكن است در جهت مخالف نيز اتفاق بيفتد. اگر پردازندهاي قدرتمند دستورها را سريعتر از توان دريافتي واحد گرافيك به آن ارسال كند، تواناييهاي پردازنده به دليل عملكرد ضعيف گرافيك محدود ميشود.
در واقع سيستمي كه از پردازنده و گرافيك متناسب و همرده تشكيل شده باشد، عملكرد بهتر و روانتري را دراختيار متخصص قرار ميدهد. به چنين سيستمي، سيستم متعادل گفته ميشود. بهطور كلي سيستم متعادل، سيستمي است كه سختافزار در آن براي پردازشهاي موردانديشه متخصصين و دلخواه متخصص باعث ايجاد باتلنك (يا گلوگاهها) نشود و بدون استفاده نامتناسب (بيش از حد زياد يا كم) از اجزاي سيستم، تجربهي متخصصي بهتري ارائه دهد.
بهتر است براي راهاندازي سيستمي متعادل به چند نكته توجه داشته باشيد:
- تنها با خريد گرانترين پردازنده و گرافيك موجود در بازار، نميتوانيد سيستمي متعادل براي تجربهي گيمينگ ايدئال راهاندازي كنيد.
- باتلنك لاخبار تخصصياً بهخاطر كيفيت يا قديمي بودن اجزا، ايجاد نميشود و مستقيماً به عملكرد سختافزارهاي سيستم مرتبط است.
- باتلنك شدن گرافيك، مختص سيستمهاي پيشرفته نيست و تعادل در سيستمهايي كه سختافزار پايينرده دارند نيز از اهميت بسيار بالايي برخوردار است.
- ايجاد شدن باتلنكها منحصر به پردازنده و گرافيك نيست، اما تعامل بين اين دو مؤلفه تا حد زيادي از بروز اين معضل جلوگيري ميكند.
راهاندازي سيستمي متعادل
در متخصصي گيمينگ يا پردازشهاي گرافيكي، وقتي گرافيكي از حداكثر توان خود بهره نبرد، تأثير قدرت پردازنده بر ارتقاي كيفيت تجربهي گيمينگ متخصص در صورتي محسوس خواهد بود كه هماهنگي بالايي بين واحد گرافيكي و پردازنده وجود داشته باشد؛ علاوهبراين، نوع و مدل بازي نيز دو عامل مهم در انتخاب سختافزار هستند. درحالحاضر، هنوز ميتوان از پردازندههاي چهار هستهاي براي اجراي بازيهاي مختلف استفاده كرد، اما قطعاً پردازندههاي شش هستهاي يا با تعداد هستههاي بيشتر، عملكردي روانتر را براي شما به ارمغان ميآورند. امروزه پردازندههاي چندهستهاي براي بازيهايي مانند شوترهاي اول شخص (FPS) يا بازيهاي چند نفرهي الكترونيك، از ملاخبار تخصصيات هر سيستم گيمينگي به حساب ميآيند.
هم انديشي ها