واحد پردازش مرکزی

واحد پردازش مرکزی (به انگلیسی: Central processing unit) یا همان پردازنده مرکزی، پردازنده اصلی، یا فقط پردازنده، یک مدار الکترونیکی است که دستورالعملهایی را اجرا میکند که یک برنامه کامپیوتری را تشکیل میدهند. واحد پردازنده مرکزی، اعمال اصلی محاسباتی، منطقی، کنترل و ورودی/خروجی (input/output) را انجام میدهد. این اعمال توسط دستورالعملهای برنامه مشخص میشوند. آنچه که ذکر شد تفاوت بسیاری با اجزای خارجی، نظیر: حافظه اصلی و مدار ورودی/خروجی و پردازندههای اختصاصی نظیر واحد پردازنده گرافیکی (graphics processing units) دارد.[۱]
شکل، طراحی، و پیادهسازی CPUها در طول زمان تغییر کردهاست، اما عملیات پایهای آنها تقریباً بدون تغییر باقی ماندهاست. اجزای اصلی یک CPU عبارتند از: واحد منطق و محاسبه (arithmetic logic unit) که عملیات حسابی و منطقی را انجام میدهد، رجیسترهای (ثباتهای) پردازنده که برای ALU عملوند فراهم میکنند و نتایج عملیات را ذخیره میکنند، و یک واحد کنترل که عمل واکشی دستورالعملها از حافظه و اجرای آنها را با هدایت کردن عملیات هماهنگ ALU، رجیسترها و سایر اجزا سازماندهی میکند.
اکثر CPUهای جدید، روی ریزپردازندههای مدار مجتمع (integrated circuit)، با یک یا بیش از یک CPU، روی یک تراشهٔ IC نیمه هادی اکسید فلز (metal-oxide-semiconductor) پیادهسازی میشوند. تراشههای ریزپردازندهها که دارای چندین CPU هستند، پردازندههای چند هسته ای نام دارند. میتوان CPUهای فیزیکی منفرد، با نام هستههای پردازنده، را نیز چند ریسمانی (multithreading) کرد تا CPUهای منطقی یا مجازی بیشتری به وجود آید.
یک آی سی که حاوی یک CPU است، ممکن است دارای حافظه، رابطهای محیطی، و سایر اجزای یک کامپیوتر باشد؛ این ابزارهای مجتمع در مجموع میکروکنترلر یا سیستمهای روی یک تراشه (systems on a chip) نام دارند.
پردازندههای آرایه ای یا پردازندههای برداری (vector) دارای چندین پردازنده هستند که به صورت موازی عمل میکنند و هیچ واحدی در مرکزیت قرار ندارد CPUهای مجازی یک فرم انتزاعی از منابع محاسباتی مجتمع پویا هستند.
تاریخچه
EDVAC یکی از اولین رایانههایی بود که قابلیت ذخیره برنامه داشت.
کامپیوترهای ابتدایی همچون ENIAC، برای انجام کارهای مختلف باید سیم کشی مجدد میشدند، از این جهت به آنها «کامپیوترهای برنامه-ثابت» میگفتند.اصطلاح «واحد پردازش مرکزی»، از اوایل سال ۱۹۵۵ استفاده شدهاست. از آنجایی که اصطلاح CPU بهطور کلی، به ابزاری برای اجرای نرمافزار (برنامهٔ کامپیوتر) اطلاق میشود، ابتداییترین ابزارهایی که به درستی CPU نام گرفتند، در واقع با ابداع رایانههای با قابلیت ذخیرهٔ برنامه به وجود آمدند.
ایدهٔ یک کامپیوتر ذخیره کنندهٔ برنامه، قبل از این در طراحی سیستم ENIAC آقای J. Presper Eckert و John William Mauchly وجود داشت، اما در ابتدا حذف شد تا پروژه زودتر تمام شود.[۶]در ۳۰ ژوئن ۱۹۴۵ و قبل از ساخت ENIAC، ریاضیدانی به نام John von Neumann مقاله ای را تحت عنوان "اولین پیش نویس یک گزارش در رابطه با ادواک (EDVAC) " منتشر کرد، که توصیفی کلی از یک کامپیوتر ذخیره کنندهٔ برنامه بود که سرانجام، در اوت ۱۹۴۹ کامل شد. کامپیوتر ادواک طوری طراحی شد تا تعداد خاصی از دستورالعملها (یا عملیات) مختلف را اجرا کند. با تفاوت چشمگیر، برنامههای نوشته شده برای EDVAC قابل ذخیرهسازی در حافظه ی سریع کامپیوتر بود و نه به شکل سیم کشی فیزیکی در کامپیوتر. این نوآوری موجب برطرف شدن برخی محدودیتهای شدید ENIAC شد، که عبارت بودند از: مدت زمان و تلاش زیاد برای پیکربندی مجدد کامپیوتر برای انجام یک کار جدید. با استفاده از طراحی آقای John von Neumann، برنامه ای که کامپیوتر EDVAC میتوانست اجرا کند، به سادگی با تغییر دادن محتویات حافظه قابل تغییر بود. با این وجود، EDVAC اولین کامپیوتر ذخیره کنندهٔ برنامه نبود. نوزاد منچستر (Manchester Baby)، یک کامپیوتر کوچک تحقیقاتی با قابلیت ذخیرهسازی برنامه بود که اولین برنامه را در ۲۱ ژوئن ۱۹۴۸ اجرا کرد و کامپیوتر Manchester Mark 1 اولین برنامه خود را در شب ۱۶ یا ۱۷ام ژوئن ۱۹۴۵ اجرا کرد.
اولین CPUها دارای طراحی سلیقه ای بودند و به عنوان بخشی از یک کامپیوتر بزرگتر و گاهی خاص استفاده میشدند. با این حال، این روش سلیقه ای طراحی CPUها برای کاربری خاص، بهطور چشمگیری راه را برای تولید پردازندههایی با کاربرد چندگانه و به صورت انبوه هموار کرد. این استانداردسازی، در دورهٔ رایانههای بزرگ (mainframe) ترانزیستوری گسسته و ریز رایانه ها(minicomputer) شروع شد و با فراگیری مدارهای مجتمع، به سرعت شتاب پیدا کرد. مدار مجتمع، امکان طراحی و تولید CPUهای پیچیدهتر را تا حد تحمل نانومتری فراهم کرد. هم کوچک سازی و هم استانداردسازی CPUها، موجب افزایش و فراگیری ابزارهای دیجیتال در زندگی مدرن شد، که بسیار بیشتر از کاربرد محدود آنها در ماشینهای محاسباتی اختصاصی بود. ریزپردازندههای جدید در ابزارهای الکترونیک، از خودروها گرفته تا گوشیهای همراه و حتی گاهی در اسباب بازیها وجود دارند.
آقای جان وان نویمان، به دلیل طراحی کامپیوتر ذخیره کنندهٔ برنامه شناخته شدهاست، که به خاطر تلاش وی برای ساخت EDVAC است. بعدها این طراحی، معماری وان نویمان نام گرفت. با این وجود، افرادی قبل از او، نظیر آقای Konrad Zuse ایدههای مشابهی را پیشنهاد و پیادهسازی کردند. معماری هاروارد نیز، که مربوط به Harvard Mark I است و قبل از EDVAC کامل شد،از طراحی ذخیرهسازی برنامه استفاده کرد، که به جای حافظه الکترونیک، از نوار کاغذی سوراخ شده استفاده میکرد.تفاوت کلیدی بین معماریهای آقای von Neumann و هاروارد این است که در معماری هاروارد، ذخیرهسازی و استفاده از دستورالعملهای CPU از دادهها جدا شدهاست، در حالیکه در معماری von Neumann از حافظه یکسانی برای ذخیرهٔ دادهها و دستورالعملها استفاده میشود. اکثر CPUهای جدید برمبنای von Neumann طراحی شدهاند. اما معماری هاروارد نیز وجود دارد، خصوصاً در کاربردهای نهفته، برای مثال، میکروکنترلرهای ای وی آر Atmel، در واقع پردازندههای مبتنی بر معماری هاروارد هستند.
رله ها(relay) و لامپهای خلاء(vacuum tubes) یا همان لولههای ترمیونیک بهطور شایعی به عنوان عناصر سوئیچ استفاده میشدند. یک کامپیوتر کاربردی نیاز به هزاران یا دهها هزار ابزار سوئیچ دارد. سرعت کلی یک سیستم وابسته به سرعت سوئیچها است. کامپیوترهای لامپ خلاء (نظیر EDVAC) بهطور میانگین ۸ ساعت از یک شکست تا شکست بعدی زمان میبردند، در حالیکه کامپیوترهای رله ای نظیر، Harvard Mark I (که کندتر اما قدیمی تر است) بندرت دچار شکست میشدند. درنهایت، CPUهای مبتنی بر لامپها ی خلاء غلبه پیدا کردند، زیرا مزایای سرعت چشمگیر بیشتر از مشکل قابل اعتماد بودن است. اکثر این CPUهای همگام، در مقایسه با طراحیهای میکروالکترونیک جدید دارای سرعتهای ساعتی پایین بودند. در آن زمان، فرکانسهای سیگنال ساعت بهطور شایع در محدوده ۱۰۰ کیلو هرتز تا ۴ مگاهرتز بود که این سرعت، به میزان زیادی به دلیل سرعت ابزارهای سوئیچ مورد استفاده در داخل آنها، محدود میشد.

پردازندههای ترانزیستوری
پردازنده و حافظه مغناطیسی و رابط BUS رایانه DEC PDP-8/I که از مدارهای الکتریکی سایز متوسط ساخته شدهاند.
پیچیدگی طراحی پردازندهها، همزمان با آسان شدن ساخت ابزارهای الکترونیک کوچکتر و قابل اعتماد تر در نتیجهٔ افزایش تکنولوژیهای مختلف، افزایش یافت. اولین پیشرفت در نتیجه ابداع ترانزیستور حاصل شد. در طی دهههای ۱۹۵۰ و ۱۹۶۰، دیگر لازم نبود که برای ساخت پردازندههای ترانزیستوری از عناصر سوئیچ حجیم، نامطمئن، و شکننده همچون لامپهای خلاء و رلهها استفاده کرد. با این پیشرفتها، پردازندههای پیچیدهتر و قابل اطمینان تر، بر روی یک یا چندین بورد مدار چاپی که حاوی اجزاء گسسته (منفرد) بودند، پیادهسازی شدند.
در سال ۱۹۶۴، شرکت آی بی ام، یک معماری رایانه به نام آی بی ام سیستم ۳۶۰ IBM System/360 ارائه کرد، که در مجموعه ای از کامپیوترهایی استفاده شد که قادر بودند برنامههای مشابهی را، با سرعتها و کارایی متفاوت اجرا کنند.این نوآوری در آن زمان اهمیت چشمگیری داشت، زیرا اکثر کامپیوترهای الکترونیک، حتی آنهایی که توسط یک شرکت ساخته میشدند، با یکدیگر ناسازگار بودند. شرکت آی بی ام برای ارتقاء این نوآوری، از مفهوم یک ریز برنامه (یا همان ریز کد) استفاده کرد که هنوز کاربرد گستردهای در پردازندههای جدید دارد. معماری System/360، آنقدر محبوب شد که برای دههها بازار رایانههای بزرگ را به دست گرفت، و هنوز هم توسط کامپیوترهای جدید مشابهی نظیر آی بی ام سری Z ادامه پیدا کردهاست.در سال ۱۹۶۵، شرکت تجهیزات دیجیتال (Digital Equipment Corporation)، یک کامپیوتر تأثیرگذار دیگر را با هدف فروش علمی و تحقیقاتی ارائه کرد، که PDP-8 نام داشت. کامپیوترهای ترانزیستوری مزایای منحصر به فرد متعددی در مقایسه با کامپیوترهای پیشین داشتند. ترانزیستورها علاوه بر افزایش دادن قابلیت اعتماد و کاهش مصرف انرژی، همچنین به پردازندهها این امکان را دادند تا با سرعتهای بسیار بالاتر کار کنند، زیرا زمان سوئیچ یک ترانزیستور، در مقایسه با یک لامپ خلأ یا رله کوتاهتر است.
به واسطه افزایش قابلیت اطمینان و سرعت عناصر سوئیچ (که در حال حاضر تقریباً تماما ترانزیستور هستند)، سرعت ساعت پردازندهها در این زمان، به سادگی، به دهها مگاهرتز رسید. علاوه بر این، در حالیکه ترانزیستورهای گسسته و پردازندههای مدار مجتمع استفادهٔ بسیار زیادی داشتند، طراحیهایی جدید با کارایی بالا، همچون پردازندههای برداری اس ام دی (تک دستورالعمل، چندین داده) شروع به ظهور کردند.[۳۵] این طراحیهای تحقیقاتی ابتدایی، بعدها باعث ظهور دورهٔ ابررایانههای اختصاصی، نظیر ابررایانههای ساخته شده توسط شرکت Cray Inc و Fujitsu Ltd شد.
CPUهای مجتمع کوچک-مقیاس
در این دوره، روشی برای تولید تعداد زیادی ترانزیستور بهم متصل در یک فضای فشرده ابداع شد. مدار مجتمع این امکان را فراهم کرد تا تعداد زیادی ترانزیستور را بتوان بر روی یک دای (die) نیمه هادی یا همان chipتولید کرد. در
ابتدا فقط مدارهای دیجیتال غیر اختصاصی بسیار پایه ای همچون گیتهای NOR در داخل آی سیها کوچک سازی شدند. بهطور کلی، پردازندههایی که مبتنی بر این آی سیهای «بلوک سازنده» هستند، ابزارهای «مجتمع کوچک-مقیاس» (small-scale integration) نام دارند. آی سیهای SSI، نظیر آی سیهایی که در کامپیوتر هدایت کننده آپولو استفاده شدند، معمولاً حاوی حداکثر دهها ترانزیستور بودند. برای ساخت یک پردازندهٔ کامل با استفاده از آی سیهای SSI نیاز به هزاران چیپ بود، با این حال، اینها در مقایسه با طراحیهای ترانزیستوری گسستهٔ پیشین، مصرف انرژی و فضای بسیار کمتری داشتند.
سیستم ۳۷۰ آی بی ام، که به دنبال ۳۶۰ آی بی ام آمد، به جای ماژولهای ترانزیستوری-گسسته با تکنولوژی Solid Logic Technology، از آی سیهای SSI استفاده کرد. سیستم PDP-8/I و KI10 PDP-10 متعلق به شرکت DEC نیز، ترانزیستورهای مورد استفاده در سیستمهای PDP-8 و PDP-10 را کنار گذاشت، و به سراغ آی سیهای SSI رفت و سیستم خطی PDP-11 آن، که بسیار محبوب بود، در ابتدا توسط آی سیهای SSI ساخته شد، اما سرانجام با استفاده از اجزای LSI، در زمانی که این اجزا عملی شده بودند، پیادهسازی شد.
CPUهای مجتمع بزرگ-مقیاس
ماسفت (metal-oxide-semiconductor field-effect transistor)، یا همان ترانزیستور ماس، توسط آقایان Mohamed Atalla و Dawon Kahng در آزمایشگاه Bell Labs، در سال ۱۹۵۹ اختراع شد و در سال ۱۹۶۰ ثبت شد.این امر منجر به تولید مدار مجتمع MOS شد، که در سال ۱۹۶۰ توسط Atalla و در سال ۱۹۶۱ توسط Kahng مطرح شد و سپس توسط Fred Heiman و Steven Hofstein در شرکت RCA، در سال ۱۹۶۲ تولید شد. ماسفت با داشتن مقیاس پذیری بالا[۴۳]و مصرف انرژی بسیار کمتر و تراکم بالاتر در مقایسه با ترانزیستورهای پیوند دوقطبی، امکان تولید مدارهای مجتمع با تراکم بالا را فراهم کرد.
آقای Lee Boysel مقالات تأثیرگذاری را، از جمله یک «بیانیه» در سال ۱۹۶۷، که در آن توضیح میداد چگونه یک کامپیوتر بزرگ ۳۲ بیتی را با استفاده از تعداد نسبتاً کمی از مدارهای مجتمع مقیاس بزرگ بسازیم، منتشر کرد. تنها روش برای ساخت چیپهای LSI که دارای ۱۰۰ یا بیش از ۱۰۰ گیت بودند،استفاده از فرایند تولید نیمه هادی اکسید فلز (PMOS , NMOS , CMOS) بود. با این حال، برخی شرکتها، همچنان پردازندهها را با استفاده از چیپهای منطق ترانزیستور-ترانزیستور (transistor–transistor logic) دوقطبی میساختند، زیرا ترانزیستورهای پیوند دوقطبی تا زمان دهه ۱۹۷۰ در مقایسه با تراشههای ماس سریع تر بودند (چند شرکت، هم چون Datapoint، تا اوایل دهه ۱۹۸۰، پردازندهها را با استفاده از چیپهای TTL میساختند) در دههٔ ۱۹۶۰، آی سیهای ماس کندتر بودند و در ابتدا، فقط در مواردی که مصرف انرژی کمتربود، مفید بودند. به دنبال ابداع تکنولوژی ماس بر مبنای دروازه سیلیکونی توسط Federico Faggin در شرکت Fairchild Semiconductor، آی سیهای MOS به میزان زیادی جایگزین TTL دو قطبی، به عنوان تکنولوژی استاندارد تراشه در اوایل دهه ۱۹۷۰ شدند.
با پیشرفت تکنولوژی میکرو الکترونیک، ترانزیستورهای بیشتری در داخل آی سیها قرار داده شدند، که باعث کاهش تعداد آی سیهای مورد نیاز برای یک پردازنده شد. آی سیهای MSI و LSI، تعداد ترانزیستورها را به صدها و سپس هزاران عدد افزایش داد. در سال ۱۹۶۸، تعداد آی سیهای مورد نیاز برای ساخت یک پردازنده کامل، به تعداد ۲۴ آی سی از ۸ نوع کاهش پیدا کرد، که هر کدام حاوی تقریباً هزار ماسفت بودند.اولین پیادهسازی سیستم PDP-11 به طریق LSI، با داشتن تفاوت بسیار با نسلهای قبلی SSI و MSI آن، حاوی یک پردازنده بود که فقط از چهار مدار مجتمع LSI تشکیل شده بود
ریزپردازندهها
مقالهٔ اصلی: ریزپردازنده
پیشرفت در زمینه تکنولوژی مدار مجتمع ماس، منجر به ابداع ریز پردازنده در اوایل دههٔ ۱۹۷۰ شد. از زمان ارائهٔ اولین ریزپردازندهٔ تجاری، یعنی اینتل ۴۰۰۴ در سال ۱۹۷۱، و اولین ریزپردازنده ای که بهطور گسترده مورد استفاده قرار گرفت، یعنی اینتل ۸۰۸۰ در سال ۱۹۷۴، این کلاس از پردازندهها، تقریباً بهطور کامل، تمام روشهای دیگر پیادهسازی پردازنده را از رده خارج کردهاند. تولیدکنندههای رایانههای بزرگ و مینی کامپیوترها در آن زمان، برنامههای تولید آی سی مالکیتی را آغاز کردند، تا معماریهای کامپیوتری قدیمی خود را ارتقا دهند و سرانجام، ریز پردازندههایی ابداع کردند که با مجموعهٔ دستورالعمل و همچنین با سختافزار و نرمافزار قدیمی آنها نیز سازگاری داشتند. با در نظر گرفتن پیشرفت و موفقیت همهگیر کامپیوترهای شخصی، در حال حاضر، اصطلاح CPU تقریباً بهطور کامل به ریزپردازندهها اطلاق میشود. میتوان چندین CPU (به نام هسته) را در یک چیپ پردازشی با هم ترکیب کرد.
نسلهای قبلی پردازندهها، به شکل اجزای گسسته و آی سیهای کوچک متعدد در یک یا بیش از یک برد مدار پیادهسازی میشدند. این در حالی است که، ریز پردازندهها، درواقع، پردازندههایی هستند که با استفاده از تعداد بسیار کمی از آی سیها (معمولاً فقط یکی) تولید میشوند. در نتیجهٔ پیادهسازی روی یک دای، اندازهٔ کلی پردازندهها کوچکتر شد که منجر به افزایش سرعت سوئیچ شد، که دلیل آن، فاکتورهای فیزیکی نظیر کاهش ظرفیت خازنی پارازیتی بود. این امر باعث شدهاست تا ریزپردازندههای همگام، دارای سرعتهای ساعتی با محدودهٔ دهها مگاهرتز تا چندین گیگاهرتز باشند. علاوه بر این، قابلیت ساخت ترانزیستورهای بسیار کوچک در یک آی سی، باعث افزایش پیچیدگی و تعداد ترانزیستورها در یک پردازشگر، به میزان چندین برابر، شد. این رویه ای که بهطور گسترده مشاهده میشود، تحت قانون مور توصیف میشود، که ثابت شدهاست، پیشبینی کننده ای نسبتاً دقیق برای رشد پیچیدگی پردازنده (و سایر آی سیها) تا سال ۲۰۱۶ بود.
اگرچه پیچیدگی، اندازه، ساختار، و فرم کلی پردازندهها از سال ۱۹۵۰ بسیار تغییر کردهاست،اما طراحی و عملکرد اساسی آنها زیاد تغییر نکردهاست. تقریباً تمام پردازندههای مرسوم امروزی را میتوان به شکل بسیار دقیقی، به فرم ماشینهای ذخیره کننده برنامه ای فون نویمان، توصیف کرد. از آنجایی که قانون مور دیگر صدق نمیکند، نگرانیهایی پیرامون محدودیتهای تکنولوژی ترانزیستوری مدار مجتمع بهوجود آمدهاست. کوچک سازی بسیار زیاد دروازههای الکترونیک موجب شدهاست تا اثرات پدیدههایی نظیر، مهاجرت الکتریکی (electromigration) و نشت تحت-آستانه ای (subthreshold leakage) بسیار چشمگیرتر شوند.[۶۴][۶۵] این نگرانیهای جدیدتر، از جمله فاکتورهایی هستند که موجب شدهاند تا محققان به دنبال روشهای جدید محاسبه، نظیر کامپیوتر کوانتومی و همچنین توسعهٔ استفاده از موازی سازی و سایر روشهایی که مزایای مدل کلاسیک فون نویمان را افزایش میدهند، باشند.
هسته و فرکانس
همیشه تعداد هستهٔ بالاتر به معنای سریع تر بودن پردازنده نیست، زیرا مهمترین مؤلفه مطرح شده برای سرعت پردازنده، فرکانس کلاک پردازنده است. افزایش تعداد هستههای پردازنده، همیشه دلیل بر افزایش سرعت پردازش هسته نمیباشد چراکه هنوز هم چیپهایی هستند که تعداد هستهٔ بالایی دارند ولی از روش عملکرد پردازش موازی استفاده نمیکنند. سرعت پردازنده نشانگر تعداد عملی است که یک هسته میتواند در هر ثانیه انجام دهد.
واحد اندازهگیری فرکانس پردازنده، گیگاهرتز است که با علامت GHz نشان داده میشود. پسوند گیگا در زبان انگلیسی به معنی میلیارد است.فرکانس پردازندهها با فرکانس پایه یا کلاک پایه (Base clock) شناخته میشود. پردازندههای جدید شرکتهای اینتل و AMD تا 5.5GHz فرکانس ساخته شدهاند.
طرز کار
طرز کار کارکرد اساسی اکثر پردازنده، صرفه نظر از فرم فیزیکی آنها، اجرای مجموعه ای از دستورالعملهای ذخیره شدهاست که برنامه نام دارد. دستورالعملهایی که قرار است اجرا شوند، در نوعی حافظهٔ کامپیوتر ذخیره میشوند. تقریباً تمام پردازندهها در طی عملکرد خود، از سه مرحلهٔ واکشی، کد گشایی، و اجرا که در مجموع چرخهٔ دستورالعمل نامیده میشود، تبعیت میکنند.
بعد از اجرای یک دستورالعمل، کل فرایند تکرار میشود و چرخهٔ بعدی دستورالعمل، بهطور معمول، دستورالعمل بعدی را، در نتیجهٔ افزایش مقدار شمارنده برنامه، واکشی میکند. اگر یک دستورالعمل پرش اجرا شود، مقدار شمارندهٔ برنامه طوری تغییر میکند که آدرس دستورالعملی که به آن پرش انجام شدهاست، در آن ذخیره شود و اجرای برنامه بهطور نرمال ادامه پیدا میکند. در پردازندههای پیچیدهتر میتوان چندین دستورالعمل را بهطور همزمان واکشی، رمزگشایی، و اجرا کرد. در این قسمت، آنچه که توصیف میشود، بهطور کلی خط تولید RISC کلاسیک نام دارد که استفادهٔ زیادی در پردازندههای ساده در بسیاری از ابزارهای الکترونیک دارد (که معمولاً با نام میکروکنترلر شناخته میشوند) و به میزان زیادی نقش مهم حافظه نهان پردازنده را و همچنین مرحله واکشی خط تولید را نادیده میگیرد.
برخی دستورالعملها به جای اینکه دادهٔ حاصل را بهطور مستقیم تولید کنند، شمارنده برنامه را دستکاری میکنند. چنین دستورالعملهایی بهطور کلی، پرش نام دارند و موجب تسهیل اجرای رفتارهایی از برنامه، از جمله: حلقهها، اجرای شرطی برنامه (از طریق استفاده از یک پرش شرطی) و همچنین موجودیت توابع را تسهیل میکنند. در برخی پردازندهها، برخی دستورالعملها قادرند تا وضعیت بیتها را در یک رجیستر فلگ تغییر دهند. این فلگها را میتوان برای تأثیرگذاری روی رفتار یک برنامه استفاده کرد، زیرا معمولاً نشان دهنده نتایج عملیات مختلف هستند. برای مثال، در چنین پردازندههایی یک دستورالعمل «مقایسه»، دو مقدار را ارزیابی میکند و بیتهای موجود در رجیستر فلگ را ست میکند یا پاک میکند، که نشان میدهد کدام یک بزرگتر است و اینکه آیا آنها برابرند یا خیر. یکی از این فلگها را مجدداً میتوان توسط یک دستورالعمل پرش، برای تعیین جریان برنامه استفاده کرد.
واکشی
اولین مرحله واکشی (Fetch) نام دارد که در واقع وظیفهٔ استخراج یک دستورالعمل (که توسط تعدادی یا صفی از اعداد نشان داده میشود) را از حافظه برنامه بر عهده دارد. مکان دستورالعمل (آدرس) در حافظهٔ برنامه، توسط شمارنده برنامه (Program Counter یا PC، که در ریزپردازندههای x86 اینتل به آن «اشارهگر دستورالعمل» نیز گفته میشود) تعیین میشود، که عددی را ذخیره میکند که نشانگر آدرس دستورالعمل بعدی برای واکشی است. بعد از اینکه دستورالعمل واکشی شد، مقدار شمارندهٔ برنامه به میزان اندازهٔ دستورالعمل افزایش مییابد، تا آدرس دستورالعمل بعدی در توالی مورد نظر، در آن قرار گیرد. معمولاً دستورالعملی که قرار است واکشی شود، باید از یک حافظهٔ نسبتاً کند واکشی شود، که باعث میشود تا پردازنده منتظر بماند تا دستورالعمل برگردد. این مشکل به میزان زیادی در پردازندههای جدید، با استفاده از حافظههای نهان و معماریهای خط تولید، کمتر شدهاست.
رمزگشایی
دستورالعملی که توسط پردازنده از حافظه واکشی میشود، در واقع مشخص میکند که پردازنده قرار است چه کاری انجام دهد. در مرحلهٔ رمزگشایی (decoding) که توسط یک مدار با نام رمزگشاء دستورالعمل انجام میشود، دستورالعمل مورد نظر به سیگنالهایی تبدیل میشود که قسمتهای دیگر پردازنده را کنترل میکنند.
شیوهٔ تفسیر دستورالعمل، توسط معماری مجموعه دستورالعمل (ISA) پردازنده تعریف میشود. معمولاً، گروهی از بیتها (با نام، یک فضا) در داخل دستورالعمل، که آپ کد نام دارد، مشخص میکند که چه عملیاتی باید انجام شود و معمولاً، فضای باقی مانده، اطلاعات تکمیلی مورد نیاز برای عملیات مذکور، مثلاً عملوندها را فراهم میآورد. این عملوندها ممکن است به شکل یک مقدار ثابت (مقدار فوری) باشند، یا به شکل مکان یک مقدار باشند که ممکن است، این مکان یک رجیستر پردازنده یا یک آدرس حافظه باشد. انتخاب هر یک از این حالتها، از طریق حالتهای آدرس دهی انجام میشود.
در برخی طراحیهای پردازنده، رمزگشاء دستورالعمل به شکل یک مدار سختافزاری شش میخه و غیرقابل تغییر پیادهسازی میشود، در حالیکه در پردازندههای دیگر، برای ترجمهٔ دستورالعملها به مجموعههایی از سیگنالهای پیکربندی پردازنده، از یک ریز برنامه استفاده میشود. این سیگنالها در طی چندین پالس ساعت، بهطور متوالی اعمال میشوند. در برخی موارد، حافظه ای که برنامه را ذخیره میکند، قابل نوشتن مجدد است، که در نتیجه میتوان روش رمزگشایی دستورالعملها توسط پردازنده را تغییر داد.
اجرا
بعد از مراحل واکشی و رمزگشایی، مرحله اجرا(execution) انجام میشود. بسته به معماری پردازنده، این مرحله ممکن است حاوی یک عمل یا صفی از اعمال باشد. در طی هر عمل، قسمتهای مختلف پردازنده به صورت الکتریکی به گونهای متصل میشوند تا بتوانند تمام یا بخشی از عملیات مورد نظر را انجام دهند و سپس عمل، بهطور معمول، در پاسخ به یک پالس ساعت کامل میشود.
در بسیاری مواقع، نتایج حاصل، در داخل یک رجیستر داخلی پردازنده نوشته میشوند تا توسط دستورالعملهای بعدی به سرعت قابل دسترسی باشند. در سایر موارد، نتایج ممکن است در حافظه اصلی نوشته شوند که کندتر است اما ارزانتر و دارای ظرفیت بالاتر است.
برای مثال، اگر قرار باشد که یک دستورالعمل جمع اجرا شود، ورودیهای واحد محاسبه و منطق به یک جفت از منابع عملوند (اعدادی که قرار است جمع شوند) متصل میشوند، سپس ALU، طوری پیکربندی میشود تا یک عمل جمع را انجام دهد و حاصل جمع عملوندهای ورودیهای آن، در خروجی آن ظاهر میشود، و خروجی ALU، به محل ذخیره ای (مثلاً، یک رجیستر یا حافظه) که قرار است حاصل جمع را دریافت کند، متصل میشود. هنگامی که یک پالس ساعت رخ میدهد، این حاصل جمع، به محل ذخیره منتقل میشود و اگر حاصل جمع خیلی بزرگ باشد (یعنی بزرگتر از اندازه کلمهٔ خروجی ALU) باشد، آنگاه، یک فلگ سرریز محاسبه ای ست خواهد شد.

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