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