cpu چیست؟
پردازنده چیست؟
برای آشنایی با واحد پردازش مرکزی (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هایی با ظرفیت ۶۴ بیتی دارند و پردازندههایی با معماری ۳۲ بیتی نیز دارای واحد ثباتی ۳۲ بیتی هستند.