CPU چگونه کار میکند؟
در پروسه پردازش دستورات در CPU چهار مرحله اصلی وجود دارد: ۱- فراخوانی ۲- رمزگشایی ۳- پردازش و اجرا ۴- بازنویسی. این چهار مرحله اصلی به ترتیب اجرا شده و فرآیند پردازش دستور به اتمام میرسد.
مرحله اول: فراخوانی
در مرحله اول، پردازنده دستوری که باید پردازش کند را از طرف حافظه مربوط به یک برنامه (از طریق RAM یا به صورت مستقیم) دریافت میکند. این برنامه ممکن است در حداقل شرایط یک دستور و در حداکثر شرایط بینهایت دستور را برای پردازش به CPU ارسال کند. به همین دلیل هر یک از این دستورها باید در محلهای جداگانه آدرس دهی شوند. اما مشکل اینجاست که واحد پردازشی CPU نمیداند کدام دستورات را در کدام یک از آدرس ها باید به ترتیب اجرا کند. برای حل این مشکل یک واحد دیگر به نام PC که مخفف عبارت Program Counter به معنای "شمارنده برنامه" است، وجود دارد. این واحد مسئول حفظ ترتیب و وضعیت دستوراتی است که به پردازنده ارسال میشوند. به طور ساده، واحد پردازشی CPU هر یک از آدرسهایی که برای پردازش نیاز دارد را از طریق این واحد شمارنده بدست میآورد.
مرحله دوم: رمزگشایی
پس از دریافت دستورات، CPU باید بتواند این دستور را درک کند. واحد پردازنده CPU دستورات را در حالت کدهایی OP ( به معنای کدهای پردازشی یا Operation Codes) میتواند پردازش کند. کدهای پردازشی زبان قابل درک ماشین و سخت افزارها هستند.
نوشتن برنامهها به زبان باینری بسیار سخت است به همین خاطر زبانهای برنامه نویسی سطح بالایی وجود دارد که نوشتن برنامه را آسانتر میکند. زبانهای برنامه نویسی مختلفی وجود دارد که سازندگان برنامهها میتوانند از آنها استفاده کنند. به همین دلیل واحدی به نام Assembler (تبدیل کننده به اسمبلی) وجود دارد که ابتدا دستورات را به زبان سطح پایین اسمبلی (Assembly) تبدیل کرده سپس واحد دیگری این دستورات اسمبلی را به کدهای OP تبدیل میکند. حال این دستورات که به صورت کدهای OP در آمده اند، آماده پردازش در واحد پردازنده CPU هستند.
مرحله سوم: پردازش و اجرا
مرحله سوم و البته مهمترین مرحله، پردازش و اجرا است. در این مرحله واحد پردازنده CPU یک دستور باینری را از یک آدرس مخصوص در دست دارد. این واحد تمامی دستورات را به کمک واحد ALU (مخفف Arithmetic & Logic Unit و به معنای "واحد محاسبه و منطق")، پردازش میکند.
ممکن است درحین پردازش، نیاز به یک دستور دیگر باشد که در این صورت Program counter دستور مورد نیاز را در اختیار واحد پردازنده CPU قرار میدهد یا ممکن است واحد پردازش، دستورات را برای زمان دیگری در ثباتهای (Registers) داخلی خود ذخیره کند.
مرحله چهارم: بازنویسی
معمولا هر دستور یک مقدار خروجی دارد که در این مرحله این مقدار خروجی در حافظه جانبی کامپیوتر (مانند هارد دیسکها، دیسکهای حالت جامد و...) ذخیره یا به سایر قطعات ارسال میشود. برای نمونه فرض کنید که یک دستور برای نشان دادن یک عبارت به CPU برای پردازش ارسال میشود. CPU پس از پردازش این دستور، همان عبارت را به عنوان خروجی بازمیگرداند یا به فرض، یک عمل ریاضی به عنوان مثال ۲ ضرب در ۲ به CPU برای پردازش ارسال میشود. حال CPU پس از پردازش عدد ۴ را به عنوان خروجی برمیگرداند.
در اغلب موارد، CPU این مقدار خروجی را که از مرحله اجرا و پردازش بدست آورده است را در ثباتهای خود ذخیره میکند. با این کار، CPU میتواند از این خروجیها به سرعت در دستورات دیگر استفاده کند. فرض کنید یک عملیات مقایسه به CPU برای پردازش ارسال میشود. در این گونه موارد، CPU از مقادیر خروجی قبلی که در ثباتهای خود ذخیره کرده استفاده میکند تا نتیجه مقایسه را در یکی از ثباتهای دیگر خود، یا به عنوان خروجی باز گرداند.
در این چهار مرحله اصلی، پردازنده فقط یک دستور که از Program Counter ارسال شده را پردازش میکند. پس از اتمام این چهار مرحله، درصورتی که دستور دیگری در صف پردازش وجود داشته باشد، توسط PC به سی پی یو داده میشود و مراحل از اول شروع میشوند تا زمانی که تمامی دستورات پردازش شوند.