واحد کنترل
واحد کنترل یکی از اجزای واحد پردازش مرکزی (CPU) است که عملیات پردازنده را هدایت میکند. واحد کنترل به حافظهٔ کامپیوتر، واحد حساب و منطق و دستگاههای ورودی و خروجی میگوید که چگونه به دستورهایی که به پردازنده فرستاده شده پاسخ دهند.
واحد کنترل با فراهم کردن زمانبندی و سیگنالهای کنترل عملیات دیگر واحدها را کنترل میکند. بیشتر منابع کامپیوتر توسط واحد کنترل مدیریت میشوند. واحد کنترل جریان دادهها بین واحد پردازش مرکزی و دیگر دستگاهها را هدایت میکند. جان فون نویمان واحد کنترل را بخشی از معماری فون نویمان شمرد. در طراحیهای نوین کامپیوتری، واحد کنترل معمولاً یکی از بخشهای درونی واحد پردازش مرکزیست و بهطور کلی نقش و عملیات آن از زمان معرفیاش تغییر نکردهاست.
واحدهای کنترل چندچرخهای
سادهترین کامپیوترها از ریزمعماری چندچرخهای استفاده میکنند که طراحیهای اولیه بودهاند. معماریهای چندچرخهای هنوز در کامپیوترهای خیلی کوچک مانند سامانههای نهفته که ماشینالات را هدایت میکنند متداول هستند.
در یک کامپیوتر چندچرخهای، معمولا واحد کنترل چرخهٔ فون نویمان را طی میکند: گرفتن دستورها، گرفتن عملگرها، انجام دستورها، نوشتن نتایج. وقتی که دستور بعدی در واحد کنترل قرارمیگیرد رفتار واحد کنترل را طوری تغییر میدهد تا دستورها را به درستی به اتمام برساند. پس بیتهای دستورها مستقیما واحد کنترل را کنترل میکنند که به نوبهٔ خود کامپیوتر را کنترل میکند.
واحد کنترل میتواند یک شمارشگر دودویی داشته باشد که به منطق واحد کنترل میگوید کدام مرحله را انجام دهد.
واحدهای کنترل چندچرخهای معمولاً هم از بالا رفتن هم پایین رفتن لبههای سیگنال مربعی ساعت زمانبندی خود استفاده میکنند. آنها یک مرحله از عملیاتشان را در هر لبهٔ ساعت زمانبندی اجرا میکنند، پس یک عملیات چهار مرحله ای در دو چرخهٔ ساعت تکمیل میشود.
خیلی از کامپیوترها دو نوع مختلف رویداد غیرمنتظره دارند. یک وقفه به این دلیل اتفاق میافتد که نوعی از ورودی یا خروجی توجه نرمافزار را نیاز دارد تا درست کار کند. استثنا توسط عملیات کامپیوتر ایجاد میشود. یک فرق مهم بین این دو این است که زمانبندی یک وقفه را نمیتوان پیشبینی کرد. یک فرق مهم دیگر این است که بعضی استثناها (برای مثال استثنای در دسترس نبودن حافظه) میتوانند توسط یک دستور که نیاز به راهاندازی مجدد دارد ایجاد شوند.
واحدهای کنترل میتوانند طراحی شوند تا به وقفهها به دو نحوهٔ مختلف معمول رسیدگی کنند. اگر پاسخ سریع مهمتر باشد، واحد کنترل طراحی میشود که کار را رها کند تا به وقفه رسیدگی کند. در این حالت، کاری که در حال پردازش بود بعد از آخرین دستورِ پایان یافته، مجدداً راهاندازی میشود. اگر قرار باشد کامپیوتر خیلی ارزان، ساده و قابل اطمینان باشد یا کار بیشتری را به اتمام برساند، واحد کنترل اول کار در حال پردازش را به اتمام میرساند و بعد از آن به وقفه رسیدگی میکند. به اتمام رساندن کار ارزان است زیرا به ثبات برای نگهداری آخرین دستور به اتمام رسیده نیاز ندارد، ساده و قابل اطمینان است چون حالتهای کمتری دارد. همچنین کمترین میزان اتلاف کار را دارد.
در کامپیوترهای خیلی ساده میتوان استثناها را وادار کرد تا مانند وقفهها عمل کنند. اگر حافظهٔ مجازی مورد نیاز باشد، یک استثنای حافظه-در-دسترس-نیست باید دوباره دستور شکست خورده را امتحان کند.
در کامپیوترهای چندچرخهای رایج است که از چرخههای بیشتری استفاده شود. گاهی زمان بیشتری صرف میشود تا یک پرش شرطی انجام شود زیرا نیاز است شمارندهٔ برنامه مجدداً بارگیری شود. گاهی کامپیوترهای چندچرخهای دستورهای ضرب و تقسیم را با یک فرایند انجام میدهند، چیزی مثل ضرب و تقسیم طولانی اعداد دودویی. ممکن است کامپیوترهای خیلی کوچک حساب را یکی یکی یا چندتا چندتا انجام دهند. بعضی کامپیوترها تعداد خیلی زیادی دستور خیلی پیچیده دارند که مراحل بسیاری را شامل میشوند.
ادغام کردن با کامپیوتر
همهٔ CPUهای مدرن منطق کنترل دارند تا CPU را با بقیه کامپیوتر پیوند دهد. در کامپیوترهای امروزی، این معمولاً یک گذرگاه کنترلکننده است. وقتی یک دستور از حافظه میخواند یا بر آن مینویسد، واحد کنترل یا گذرگاه را مستقیما کنترل میکند یا گذرگاه کنترلکننده را کنترل میکند. تعداد زیادی از کامپیوترهای امروزی رابط گذرگاه مشابهی را برای حافظه، ورودی و خروجی استفاده میکنند که ورودی/خروجی حافظهنگاشتی نامیده میشود. ثباتهای دستگاههای ورودی/خروجی به صورت اعدادی در آدرسهای حافظهٔ مشخص برای برنامهنویس نمایان میشوند. کامپیوترهای x86 معمولاً روش قدیمی تری را استفاده میکنند، یک گذرگاه ورودی/خروجی جدا برای دسترسی دستورهای ورودی/خروجی.