یک پردازنده (CPU) چگونه کار می کند – بخش دوم
در بخش قبلی این مقاله با برخی از اجزای تشکیل دهنده یک پردازنده آشنا شدیم و آن ها را به زبان ساده شرح دادیم. در این بخش با قسمت های دیگر تشکیل دهنده پردازنده نیز آشنا خواهیم شد و خواهیم دید که این اجزا چگونه با هم کار می کنند تا یک CPU بتواند به درستی عمل کند.
کلاک، استپر و دیکودر:
رجیسترها در همه جای پردازنده استفاده می شوند و یک ابزار اساسی برای انتقال داده ها و ذخیره آن ها در CPU هستند. اما چه چیزی به آن ها دستور می دهد که جابجا یا ذخیره شوند؟
کلاک یکی از اجزای اساسی در هسته پردازنده است و باعث هماهنگ شدن اجزای پردازنده با هم می شود. کلاک یک CPU با واحد هرتز یا چرخه در ثانیه سنجیده می شود. این همان سرعت پردازنده است که در تبلیغات پردازنده ها بیان می شود؛ یک پردازنده با کلاک 5 گیگاهرتز می تواند در یک ثانیه 5 میلیون چرخه را انجام دهد. کلاک یک پردازنده نشان دهنده این است که پردازنده چقدر در انجام محاسبات سریع است.
کلاک دارای سه حالت مختلف است: کلاک پایه، کلاک enable و کلاک set. کلاک پایه در نیمی از چرخه روشن و در نیمی دیگر خاموش است. کلاک enable برای روشن کردن رجیسترها استفاده می شود و نیاز است تا مدت بیشتری روشن بماند تا مطمئن شود که داده ها به درستی منتقل یا ذخیره می شوند. کلاک set باید همواره و همزمان با کلاک enable فعال باشد، در غیر این صورت داده ها به طرزی اشتباه نوشته خواهند شد.
کلاک به استپر متصل است که از یک شروع به شمردن می کند و پس از رسیدن با حداکثر مقدار خود ریست می شود و دوباره عمل شمارش را از سر می گیرد. کلاک همچنین به وسیله یک گیت AND به رجیسترهایی که CPU می تواند داده ها را در آن ها بنویسد، وصل شده است. گیت AND همچنین به بخش دیگری به نام دیکودر دستورات یا instruction decoder وصل شده است که IR نیز نامیده می شود. IR دستوراتی مانند «محتوای رجیستر R1 را در R2 کپی کن» را دریافت می کند و آن را طوری ترجمه می کند که CPU آن را درک می کند. IR رجیسترهای داخلی خود را دارد که به آن ها رجیستر دستورات گفته می شود، دستورات در درون این رجیستر ها ذخیره می شوند.
کسانی که با برنامه نویسی آشنا هستند بخوانند:
هنگامی که یک برنامه را می خواهیم روی پردازنده اجرا کنیم؛ دستورات برنامه در RAM ذخیره می شوند (در پردازنده های امروزی این دستورات در حافظه کش L1 ذخیره می شوند تا به پردازنده نزدیک تر باشند). داده های آن برنامه نیز مانند متغیرها در رجیسترها ذخیره می شوند و هر زمان که برنامه بخواهد می تواند از آن ها استفاده کند. مثلاً دستور Jump مکان کنونی را به جای مکانی که در IR ذخیره شده است، کپی می کند.
اجزای پردازنده چگونه با یکدیگر کار می کنند؟
ما اکنون با اجزای اساسی یک CPU آشنا هستیم. Bus اصلی در کل سیستم گسترش یافته است و تمام رجیسترها را به هم متصل کرده است. جمع کننده های کامل در ALU یا واحد محاسبات منطقی هستند و می توانند همه اعمال ریاضی و منطقی را انجام دهند. ALU به Bus متصل شده است و خود دارای رجیسترهایی است ک داده هایی را که روی آن اعمال ریاضی را انجام می دهد را ذخیره می کنند. برای انجام یک محاسبه، داده های یک برنامه از RAM به درون قسمت کنترل یا Control System ریخته می شوند. قسمت کنترل دو عدد را از RAM می خواند، اولی را در IR واحد محاسبات منطقی یا ALU و دومی را روی Bus قرار می دهد. در همین زمان قسمت کنترل کد دستوری را از برنامه می خواند و به ALU می گوید که چه کاری را انجام دهد.
ALU محاسبات را انجام می دهد و نتیجه را در یک رجیستر دیگر ذخیره می کند، پردازنده نتیجه را می خواند و برای اجرای دستور بعدی آماده می شود. تمام این کارها را کلاک هماهنگ می کند. در هر چرخهی کلاک معمولاً یک دستور اجرا می شود.
در این مقاله چگونگی عملکرد یک CPU را به صورت خیلی ساده بیان کرده ایم. در دنیای واقعی عملکرد پردازنده ها بسیار بسیار پیچیده تر است، اما شما با خواندن این مقاله اساس کار یک پردازنده ساده را متوجه شده اید و می توانید درک بهتری از عملکرد پردازنده های پیچیده امروزی داشته باشید.
منبع: HowToGeek