CPU چیست؟
CPU مخفف Central Processing Unit یا واحد پردازش مرکزی است و یکی از مهمترین اجزای یک سیستم کامپیوتری محسوب میشود.
اگر بخواهیم خیلی ساده بگوییم، CPU قطعهای است که دستورالعملهای برنامهها را دریافت، تفسیر و اجرا میکند.
البته این تعریف ساده است. در واقع CPU خودش یک سیستم دیجیتال بسیار پیچیده است که از بخشهای مختلفی تشکیل شده و این بخشها با همکاری یکدیگر دستورهای برنامه را اجرا میکنند.
CPU دقیقاً چه کاری انجام میدهد؟
فرض کنید در یک برنامه نوشتهایم:
C = A + B
CPU باید این کار را به مجموعهای از عملیات سختافزاری تبدیل کند.
برای مثال باید:
- دستور مربوط به جمع را دریافت کند.
- تشخیص دهد که باید دو مقدار را جمع کند.
- مقادیر A و B را از محل مناسب دریافت کند.
- آنها را در اختیار واحد محاسباتی قرار دهد.
- عمل جمع انجام شود.
- نتیجه در محل مناسب قرار بگیرد.
بنابراین CPU فقط یک «ماشین حساب» نیست؛ بلکه وظیفه هماهنگ کردن تعداد زیادی عملیات دیجیتال را بر عهده دارد.
اجزای اصلی CPU
یک CPU واقعی از بخشهای بسیار زیادی تشکیل شده است، اما برای درک معماری پایه، چند قسمت اهمیت بیشتری دارند:
واحد کنترل
واحد محاسبه و منطق
ثباتها
حافظه نهان
البته در پردازندههای مدرن، ساختار بسیار پیچیدهتر است و بخشهایی مانند Branch Predictor، Decoder، Pipeline، Execution Units، Load/Store Units، MMU، TLB و چندین سطح Cache نیز وجود دارند.
۱. ALU چیست؟
ALU مخفف Arithmetic Logic Unit است؛ یعنی واحد محاسبه و منطق.
ALU یکی از بخشهایی است که عملیات محاسباتی و منطقی را انجام میدهد.
| عملیات | مثال |
|---|---|
| جمع | 5 + 3 |
| تفریق | 8 – 2 |
| AND | A AND B |
| OR | A OR B |
| XOR | A XOR B |
| مقایسه | A > B |
پس ALU را میتوان یکی از قسمتهای محاسباتی CPU دانست.
۲. Control Unit چیست؟
Control Unit یا واحد کنترل وظیفه هماهنگ کردن قسمتهای مختلف CPU را بر عهده دارد.
برای مثال فرض کنید دستور CPU این باشد:
ADD R1, R2
واحد کنترل باید مشخص کند که:
- کدام Register خوانده شود.
- چه عملیاتی توسط ALU انجام شود.
- نتیجه کجا قرار بگیرد.
- در چه زمانی هر قسمت فعال شود.
بنابراین اگر ALU را تا حدی شبیه «بخش انجامدهنده عملیات» در نظر بگیریم، Control Unit نقش «هماهنگکننده» را دارد.
۳. Register چیست؟
Register یا ثبات، حافظههای بسیار کوچک و بسیار سریع داخل CPU هستند که برای نگهداری موقت داده، آدرس یا اطلاعات کنترلی استفاده میشوند.
10110100
نتیجه
تعداد و نوع Registerها به معماری پردازنده بستگی دارد. بعضی Registerها عمومی هستند و بعضی وظایف خاصی دارند.
Program Counter یا PC
یکی از Registerهای بسیار مهم Program Counter یا PC است.
PC به طور ساده مشخص میکند CPU برای دریافت دستور بعدی باید به کدام آدرس مراجعه کند.
یعنی CPU برای اجرای برنامه باید بداند «الان کجای برنامه هستم و دستور بعدی کجاست؟» یکی از نقشهای مهم PC همین است.
۴. Cache چیست؟
CPU بسیار سریع است، اما حافظه اصلی یعنی RAM نسبت به Registerها و بسیاری از بخشهای داخلی CPU کندتر است.
برای کاهش این فاصله، پردازندهها از حافظههای سریعتری به نام Cache استفاده میکنند.
Cache معمولاً در چند سطح مانند L1، L2 و L3 وجود دارد.
| سطح | ظرفیت معمول | سرعت | فاصله از هسته |
|---|---|---|---|
| L1 | کم | بسیار زیاد | بسیار نزدیک |
| L2 | بیشتر | زیاد | نزدیک |
| L3 | بیشتر | کمتر از L1/L2 | معمولاً اشتراکیتر |
مقادیر دقیق ظرفیت و ساختار Cache به مدل و معماری CPU بستگی دارد.
CPU چگونه یک دستور را اجرا میکند؟
یکی از مهمترین مفاهیمی که در معماری کامپیوتر باید یاد بگیریم، چرخه اجرای دستور یا Instruction Cycle است.
در سادهترین مدل آموزشی، این چرخه را میتوان به سه مرحله تقسیم کرد:
۱. Fetch: دریافت دستور از حافظه.
۲. Decode: تفسیر و تشخیص اینکه دستور چه کاری میخواهد انجام دهد.
۳. Execute: اجرای عملیات مورد نظر.
پردازندههای مدرن این مراحل را بسیار پیچیدهتر و معمولاً به صورت Pipeline و همراه با تکنیکهای مختلف پردازشی انجام میدهند.
Fetch یعنی چه؟
CPU ابتدا باید دستور مورد نظر را از سلسلهمراتب حافظه دریافت کند.
به این مرحله Instruction Fetch گفته میشود.
Decode یعنی چه؟
دستور CPU معمولاً به صورت یک کد باینری یا مجموعهای از بیتها وجود دارد. Decoder این بیتها را بررسی میکند تا مشخص شود دستور چیست.
برای مثال ممکن است مشخص شود که دستور مربوط به:
- جمع
- تفریق
- Load
- Store
- پرش
- مقایسه
- عملیات منطقی
است.
Execute یعنی چه؟
بعد از Decode، سختافزار لازم برای انجام عملیات فعال میشود.
مثلاً اگر دستور یک جمع باشد:
ALU عملیات جمع را انجام میدهد و نتیجه در Register مناسب قرار میگیرد.
Clock در CPU چه نقشی دارد؟
CPU برای هماهنگ کردن بسیاری از عملیات داخلی خود از یک سیگنال زمانبندی به نام Clock استفاده میکند.
برای مثال اگر پردازندهای فرکانس 3 GHz داشته باشد، فرکانس Clock آن برابر با 3 میلیارد سیکل در ثانیه است.
اما یک نکته بسیار مهم: 3 GHz به این معنی نیست که CPU حتماً 3 میلیارد دستور را در ثانیه اجرا میکند. تعداد عملیات واقعی به معماری، Pipeline، تعداد دستورها، Cache، وابستگی دادهها و عوامل بسیار دیگر بستگی دارد.
CPU و RAM چه فرقی دارند؟
یک اشتباه رایج این است که فکر کنیم CPU خودش همان حافظه کامپیوتر است.
CPU و RAM وظایف متفاوتی دارند.
| CPU | RAM |
|---|---|
| دستورها را اجرا میکند | داده و برنامههای در حال استفاده را نگه میدارد |
| شامل واحدهای محاسباتی و کنترلی است | حافظه اصلی سیستم است |
| Register و Cache داخلی دارد | ظرفیت بسیار بیشتری دارد |
| برای پردازش طراحی شده | برای ذخیره موقت داده طراحی شده |
CPU و GPU چه تفاوتی دارند؟
CPU و GPU هر دو پردازنده هستند، اما برای الگوهای متفاوتی از پردازش طراحی شدهاند.
CPU معمولاً تعداد کمتری هسته بسیار انعطافپذیر و پیچیده دارد و برای اجرای طیف گستردهای از برنامهها مناسب است.
GPU معمولاً تعداد بسیار زیادی واحد پردازشی را برای انجام حجم بزرگی از عملیات مشابه به صورت موازی در اختیار میگذارد و برای کارهایی مانند پردازش گرافیکی بسیار مناسب است.
هستههای کمتر و عمومیتر
واحدهای پردازشی بسیار زیاد
البته این تفاوت در پردازندههای مدرن کاملاً مطلق نیست و CPU و GPU هر دو معماریهای پیچیده و قابلیتهای پردازش موازی دارند.
Core یا هسته چیست؟
وقتی میگوییم یک CPU چهار هستهای یا هشت هستهای است، منظور این است که پردازنده چند واحد پردازشی مستقل یا نسبتاً مستقل برای اجرای جریانهای دستور دارد.
وجود هستههای بیشتر میتواند امکان اجرای همزمان یا موازی چند کار را افزایش دهد، اما عملکرد واقعی فقط به تعداد هسته وابسته نیست.
CPU در نهایت چه چیزی را اجرا میکند؟
CPU مستقیماً فایلهایی مثل Word، بازی یا مرورگر را به همان شکلی که ما میبینیم اجرا نمیکند.
برنامهها در نهایت به مجموعهای از Instructionها تبدیل میشوند که طبق Instruction Set Architecture یا ISA برای پردازنده تعریف شدهاند.
برای مثال در معماریهایی مانند x86-64 یا ARM، مجموعه دستورها و قواعد مشخصی وجود دارد که نرمافزار و سختافزار بر اساس آن با یکدیگر ارتباط برقرار میکنند.
یک نگاه معماری به CPU
Memory
Fetch / Decode / Execute
Memory
این شکل بسیار ساده شده است، اما ایده اصلی را نشان میدهد: CPU دستورها را دریافت میکند، آنها را تفسیر میکند و با استفاده از واحدهای داخلی خود عملیات مورد نیاز را انجام میدهد.
جمعبندی
اگر بخواهیم کل مطلب را در چند جمله خلاصه کنیم، CPU واحد پردازش مرکزی کامپیوتر است که دستورالعملها را اجرا و بخشهای مختلف پردازش را هماهنگ میکند.
- ALU عملیات محاسباتی و منطقی را انجام میدهد.
- Control Unit عملیات داخلی را هماهنگ میکند.
- Registerها دادهها و اطلاعات مورد نیاز را بسیار سریع نگه میدارند.
- Cache فاصله سرعتی بین CPU و حافظه اصلی را کاهش میدهد.
- PC محل دستور بعدی را دنبال میکند.
- Clock یکی از منابع اصلی زمانبندی عملیات داخلی است.
- Core یک واحد پردازشی درون CPU است.
- CPU دستورها را در یک مدل سادهشده به صورت Fetch → Decode → Execute پردازش میکند.
نکته مهم برای ادامه یادگیری معماری کامپیوتر: بعد از فهم CPU، قدم بعدی خیلی مهم این است که بفهمیم یک دستور واقعاً داخل CPU چگونه از PC → Instruction Memory → Instruction Register/Decoder → Register File → ALU → Register حرکت میکند. از اینجا دقیقاً وارد دنیای Datapath و Control Unit میشویم؛ همان جایی که مباحث معماری کامپیوتر به طراحی سختافزار و بعد به Verilog/FPGA وصل میشوند.