واحد پردازش مرکزی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
فارسی کردن این عبارت های اختصاری انگلیسی بی معنی است.
خط ۳:
'''واحد پردازش مرکزی''' (به انگلیسی: Central processing unit) یا همان '''پردازنده مرکزی'''، '''پردازنده اصلی'''، یا فقط '''پردازنده'''، یک مدار الکترونیکی است که دستورالعمل‌هایی را اجرا می‌کند که یک برنامه کامپیوتری را تشکیل می‌دهند. واحد پردازنده مرکزی، اعمال اصلی محاسباتی، منطقی، کنترل و [[ورودی/خروجی]] (input/output) را انجام می‌دهد. این اعمال توسط دستورالعمل‌های برنامه مشخص می‌شوند. آنچه که ذکر شد تفاوت بسیاری با اجزای خارجی، نظیر: حافظه اصلی و مدار ورودی/خروجی و پردازنده‌های اختصاصی نظیر [[واحد پردازش گرافیکی|واحد پردازنده گرافیکی]] (graphics processing units) دارد.<ref name="kuck">{{cite book|last1= Kuck|first1= David|title= Computers and Computations, Vol 1|url= https://archive.org/details/structurecompute01kuck|date= 1978|publisher= John Wiley & Sons, Inc.|isbn= 978-0-471-02716-4|page= [https://archive.org/details/structurecompute01kuck/page/12 12]}}</ref>
 
فرم،شکل، طراحی، و پیاده‌سازی سی پی یوها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های مجازی یک فرم انتزاعی از منابع محاسباتی مجتمع پویا هستند.<ref>{{Cite book
|title= VMware vSphere Performance: Designing CPU, Memory, Storage, and Networking for Performance-Intensive Workloads
|last= Liebowitz, Kusek, Spies|first= Matt, Christopher, Rynardt
خط ۱۸:
== تاریخچه ==
[[پرونده:Edvac.jpg|بندانگشتی|EDVAC یکی از اولین رایانه‌هایی بود که قابلیت ذخیره برنامه داشت.]]
کامپیوترهای ابتدایی همچون ENIAC، برای انجام کارهای مختلف باید سیم کشی مجدد می‌شدند، از این جهت به آنها «کامپیوترهای برنامه-ثابت» می‌گفتند.<ref>{{cite book|last1=Regan|first1=Gerard|title=A Brief History of Computing|isbn=978-1-84800-083-4|page=66|url=https://books.google.com/books?isbn=1848000839|access-date=26 November 2014|year=2008}}</ref>اصطلاح «واحد پردازش مرکزی»، از اوایل سال ۱۹۵۵ استفاده شده‌است.<ref name= weik1955>{{cite journal | author = Weik, Martin H. | title = A Survey of Domestic Electronic Digital Computing Systems | publisher = [[Ballistic Research Laboratory]] | url = http://ed-thelen.org/comp-hist/BRL-i.html#IBM-CPC | year = 1955}}</ref><ref name="weik1961">{{cite journal | author = Weik, Martin H. | title = A Third Survey of Domestic Electronic Digital Computing Systems | publisher = [[Ballistic Research Laboratory]] | url = http://ed-thelen.org/comp-hist/BRL61.html | year = 1961}}</ref> از آنجایی که اصطلاح سی پی یوCPU به‌طور کلی، به ابزاری برای اجرای [[نرم‌افزار]] (برنامهٔ کامپیوتر) اطلاق می‌شود، ابتداییترین ابزارهایی که به درستی سی پی یوCPU نام گرفتند، در واقع با ابداع [[کامپیوترهای با قابلیت ذخیره ی برنامه|رایانه‌های با قابلیت ذخیرهٔ برنامه]] به وجود آمدند.
 
ایدهٔ یک کامپیوتر ذخیره کنندهٔ برنامه، قبل از این در طراحی سیستم [[انیاک|ENIAC]] آقای J. Presper Eckert و John William Mauchly وجود داشت، اما در ابتدا حذف شد تا پروژه زودتر تمام شود.<ref>{{cite web|title=Bit By Bit|url=http://ds.haverford.edu/bitbybit/bit-by-bit-contents/chapter-five/5-1-stored-program-computing/|archive-url=https://web.archive.org/web/20121013210908/http://ds.haverford.edu/bitbybit/bit-by-bit-contents/chapter-five/5-1-stored-program-computing/|publisher=Haverford College|access-date=August 1, 2015|archive-date=October 13, 2012}}</ref>در ۳۰ ژوئن ۱۹۴۵ و قبل از ساخت ENIAC، ریاضیدانی به نام John von Neumann مقاله ای را تحت عنوان "اولین پیش نویس یک گزارش در رابطه با ادواک (EDVAC) " منتشر کرد، که توصیفی کلی از یک کامپیوتر ذخیره کنندهٔ برنامه بود که سرانجام، در اوت ۱۹۴۹ کامل شد.<ref>{{cite journal | title = First Draft of a Report on the EDVAC | publisher = [[Moore School of Electrical Engineering]], [[University of Pennsylvania]] | url = https://www.wiley.com/legacy/wileychi/wang_archi/supp/appendix_a.pdf | year = 1945}}</ref> کامپیوتر [[ادواک]] طوری طراحی شد تا تعداد خاصی از دستورالعمل‌ها (یا عملیات) مختلف را اجرا کند. با تفاوت چشمگیر، برنامه‌های نوشته شده برای EDVAC قابل ذخیره‌سازی در [[حافظه رایانه|حافظه]] ی سریع کامپیوتر بود و نه به شکل سیم کشی فیزیکی در کامپیوتر.<ref>{{cite encyclopedia|title=The Modern History of Computing|url=http://plato.stanford.edu/entries/computing-history/|author=Stanford University|encyclopedia=The Stanford Encyclopedia of Philosophy|access-date=September 25, 2015}}</ref> این نوآوری موجب برطرف شدن برخی محدودیت‌های شدید ENIAC شد، که عبارت بودند از: مدت زمان و تلاش زیاد برای پیکربندی مجدد کامپیوتر برای انجام یک کار جدید.<ref>{{cite web |title=ENIAC's Birthday |url=https://mitpress.mit.edu/blog/eniacs-birthday |publisher=The MIT Press |access-date=October 17, 2018 |date=February 9, 2016}}</ref> با استفاده از طراحی آقای John von Neumann، برنامه ای که کامپیوتر EDVAC می‌توانست اجرا کند، به سادگی با تغییر دادن محتویات حافظه قابل تغییر بود. با این وجود، EDVAC اولین کامپیوتر ذخیره کنندهٔ برنامه نبود. [[نوزاد منچستر]] (Manchester Baby)، یک کامپیوتر کوچک تحقیقاتی با قابلیت ذخیره‌سازی برنامه بود که اولین برنامه را در ۲۱ ژوئن ۱۹۴۸ اجرا کرد<ref>{{citation |last=Enticknap |first=Nicholas |title=Computing's Golden Jubilee |journal=Resurrection |issue=20 |publisher=The Computer Conservation Society |date=Summer 1998 |url=http://www.computerconservationsociety.org/resurrection/res20.htm#d |issn=0958-7403 |access-date=26 June 2019}}</ref> و کامپیوتر Manchester Mark 1 اولین برنامه خود را در شب ۱۶ یا ۱۷ام ژوئن ۱۹۴۵ اجرا کرد.<ref>{{cite web|title=The Manchester Mark 1|url=http://curation.cs.manchester.ac.uk/digital60/www.digital60.org/birth/manchestercomputers/mark1/manchester.html|work=The University of Manchester|access-date=September 25, 2015}}</ref>
 
اولین سی پی یوهاCPUها دارای طراحی سلیقه ای بودند و به عنوان بخشی از یک کامپیوتر بزرگتر و گاهی خاص استفاده می‌شدند.<ref>{{cite web|title=The First Generation|url=http://www.computerhistory.org/revolution/birth-of-the-computer/4/92|publisher=Computer History Museum |access-date= September 29, 2015}}</ref> با این حال، این روش سلیقه ای طراحی سی پی یوهاCPUها برای کاربری خاص، به‌طور چشمگیری راه را برای تولید پردازنده‌هایی با کاربرد چندگانه و به صورت انبوه هموار کرد. این استانداردسازی، در دورهٔ [[رایانه بزرگ|رایانه‌های بزرگ]] (mainframe) ترانزیستوری گسسته و [[ریزرایانه|ریز رایانه]] ها(minicomputer) شروع شد و با فراگیری مدارهای مجتمع، به سرعت شتاب پیدا کرد. [[مدار مجتمع]]، امکان طراحی و تولید سی پی یوهایCPUهای پیچیده‌تر را تا حد تحمل نانومتری فراهم کرد.<ref name="nobel">{{cite web|title=The History of the Integrated Circuit|url=https://www.nobelprize.org/educational/physics/integrated_circuit/history/|website=Nobelprize.org |access-date= September 29, 2015}}</ref> هم کوچک سازی و هم استانداردسازی سی پی یوها،CPUها، موجب افزایش و فراگیری ابزارهای دیجیتال در زندگی مدرن شد، که بسیار بیشتر از کاربرد محدود آن‌ها در ماشین‌های محاسباتی اختصاصی بود. ریزپردازنده‌های جدید در ابزارهای الکترونیک، از خودروها گرفته<ref>{{cite web|last1=Turley|first1=Jim|title=Motoring with microprocessors|url=http://www.embedded.com/electronics-blogs/significant-bits/4024611/Motoring-with-microprocessors |publisher=Embedded|access-date=November 15, 2015}}</ref> تا گوشی‌های همراه<ref>{{cite web|title=Mobile Processor Guide – Summer 2013|url=http://www.androidauthority.com/mobile-processor-guide-summer-2013-234354/|publisher=Android Authority|access-date= November 15, 2015|date=2013-06-25}}</ref> و حتی گاهی در اسباب بازی‌ها وجود دارند.<ref>{{cite web |title=Section 250: Microprocessors and Toys: An Introduction to Computing Systems |url=https://eng100.engin.umich.edu/list/sec250/ |publisher=The University of Michigan |access-date=October 9, 2018 |archive-date=13 آوریل 2021 |archive-url=https://web.archive.org/web/20210413194655/https://eng100.engin.umich.edu/list/sec250/ }}</ref><ref>{{cite web|title=ARM946 Processor |url=https://www.arm.com/products/processors/classic/arm9/arm946.php|publisher=ARM|url-status=dead|archive-url = https://web.archive.org/web/20151117015143/https://www.arm.com/products/processors/classic/arm9/arm946.php|archive-date = 17 November 2015}}</ref>
 
آقای [[جان فون نویمان|جان وان نویمان]]، به دلیل طراحی کامپیوتر ذخیره کنندهٔ برنامه شناخته شده‌است، که به خاطر تلاش وی برای ساخت EDVAC است. بعدها این طراحی، [[معماری فون نویمان|معماری وان نویمان]] نام گرفت. با این وجود، افرادی قبل از او، نظیر آقای Konrad Zuse ایده‌های مشابهی را پیشنهاد و پیاده‌سازی کردند.<ref>{{cite web|title=Konrad Zuse|url=http://www.computerhistory.org/fellowawards/hall/konrad-zuse/|publisher=Computer History Museum|access-date=September 29, 2015}}</ref> معماری هاروارد نیز، که مربوط به Harvard Mark I است و قبل از EDVAC کامل شد،<ref>{{cite web|title=Timeline of Computer History: Computers|url=http://www.computerhistory.org/timeline/computers/|publisher=Computer History Museum|access-date=November 21, 2015}}</ref><ref>{{cite web|title=A Brief History of Computing - First Generation Computers|url=http://trillian.randomstuff.org.uk/~stephen/history/timeline-GEN1.html|last=White|first=Stephen|access-date=November 21, 2015}}</ref> از طراحی ذخیره‌سازی برنامه استفاده کرد، که به جای حافظه الکترونیک، از نوار کاغذی سوراخ شده استفاده می‌کرد.<ref>{{cite web|title=Harvard University Mark - Paper Tape Punch Unit|url=http://www.computerhistory.org/collections/catalog/102698407|publisher=Computer History Museum|access-date=November 21, 2015}}</ref> تفاوت کلیدی بین معماری‌های آقای von Neumann و هاروارد این است که در معماری هاروارد، ذخیره‌سازی و استفاده از دستورالعملهای سی پی یوCPU از داده‌ها جدا شده‌است، در حالیکه در معماری von Neumann از حافظه یکسانی برای ذخیرهٔ داده‌ها و دستورالعمل‌ها استفاده می‌شود.<ref>{{cite web|title=What is the difference between a von Neumann architecture and a Harvard architecture?|url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/3738.html|publisher=ARM|access-date=November 22, 2015}}</ref> اکثر سی پی یوهایCPUهای جدید برمبنای von Neumann طراحی شده‌اند. اما [[معماری هاروارد]] نیز وجود دارد، خصوصاً در کاربردهای نهفته، برای مثال، [[ریزکنترل‌گر ای‌وی‌آر|میکروکنترلرهای ای وی آر]] Atmel، در واقع پردازنده‌های مبتنی بر معماری هاروارد هستند.<ref>{{cite web|title=Advanced Architecture Optimizes the Atmel AVR CPU|url=http://www.atmel.com/technologies/cpu_core/avr.aspx|publisher=Atmel|access-date=November 22, 2015}}</ref>
 
[[رله]] ها(relay) و [[لامپ خلأ|لامپ‌های خلاء]](vacuum tubes) یا همان لوله‌های ترمیونیک به‌طور شایعی به عنوان عناصر سوئیچ استفاده می‌شدند.<ref>{{cite web|title=Switches, transistors and relays|url=http://www.bbc.co.uk/schools/gcsebitesize/design/electronics/switchesrev5.shtml|publisher=BBC |url-status=dead|archive-url = https://web.archive.org/web/20161205142752/http://www.bbc.co.uk/schools/gcsebitesize/design/electronics/switchesrev5.shtml|archive-date = 5 December 2016}}</ref><ref>{{cite web|title=Introducing the Vacuum Transistor: A Device Made of Nothing|url=https://spectrum.ieee.org/semiconductors/devices/introducing-the-vacuum-transistor-a-device-made-of-nothing|website=IEEE Spectrum|access-date=27 January 2019|date=2014-06-23}}</ref> یک کامپیوتر کاربردی نیاز به هزاران یا ده‌ها هزار ابزار سوئیچ دارد. سرعت کلی یک سیستم وابسته به سرعت سوئیچ‌ها است. کامپیوترهای لامپ خلاء (نظیر EDVAC) به‌طور میانگین ۸ ساعت از یک شکست تا شکست بعدی زمان می‌بردند، در حالیکه کامپیوترهای رله ای نظیر، Harvard Mark I (که کندتر اما قدیمی تر است) بندرت دچار شکست می‌شدند.<ref name="weik1961"/> درنهایت، سی پی یوهایCPUهای مبتنی بر لامپ‌ها ی خلاء غلبه پیدا کردند، زیرا مزایای سرعت چشمگیر بیشتر از مشکل قابل اعتماد بودن است. اکثر این سی پی یوهایCPUهای همگام، در مقایسه با طراحی‌های میکروالکترونیک جدید دارای سرعت‌های ساعتی پایین بودند. در آن زمان، فرکانس‌های سیگنال ساعت به‌طور شایع در محدوده ۱۰۰ کیلو هرتز تا ۴ مگاهرتز بود که این سرعت، به میزان زیادی به دلیل سرعت ابزارهای سوئیچ مورد استفاده در داخل آن‌ها، محدود می‌شد.<ref>{{cite book|title=What Is Computer Performance?|url=http://www.nap.edu/read/12980/chapter/5#55|publisher=The National Academies Press|access-date=May 16, 2016|doi=10.17226/12980|year=2011|isbn=978-0-309-15951-7}}</ref>
 
=== پردازنده‌های ترانزیستوری ===
خط ۳۶:
به واسطه افزایش قابلیت اطمینان و سرعت عناصر سوئیچ (که در حال حاضر تقریباً تماما ترانزیستور هستند)، سرعت ساعت پردازنده‌ها در این زمان، به سادگی، به ده‌ها مگاهرتز رسید.<ref name = pcgamer>{{cite magazine|last1=Lilly |first1=Paul|title=A Brief History of CPUs: 31 Awesome Years of x86|url=http://www.pcgamer.com/a-brief-history-of-cpus-31-awesome-years-of-x86/|magazine=PC Gamer|access-date=June 15, 2016|date=2009-04-14}}</ref> علاوه بر این، در حالیکه ترانزیستورهای گسسته و پردازنده‌های مدار مجتمع استفادهٔ بسیار زیادی داشتند، طراحی‌هایی جدید با کارایی بالا، همچون [[پردازنده برداری|پردازنده‌های برداری]] اس ام دی ([[یک دستور چند داده|تک دستورالعمل، چندین داده]]) شروع به ظهور کردند.<ref name="patterson">{{cite book|first1=David A.|last1=Patterson|first2=John L.|last2=Hennessy|first3=James R.|last3=Larus|title=Computer Organization and Design: the Hardware/Software Interface|date=1999|publisher=Kaufmann|location=San Francisco|isbn=978-1-55860-428-5|page=[https://archive.org/details/computerorganiz000henn/page/751 751]|edition=2. ed. , 3rd print.|url=https://archive.org/details/computerorganiz000henn/page/751}}</ref> این طراحی‌های تحقیقاتی ابتدایی، بعدها باعث ظهور دورهٔ [[ابررایانه]]‌های اختصاصی، نظیر ابررایانه‌های ساخته شده توسط شرکت Cray Inc و Fujitsu Ltd شد.<ref name="patterson"/>
 
=== سی پی یوهایCPUهای مجتمع کوچک-مقیاس ===
در این دوره، روشی برای تولید تعداد زیادی ترانزیستور بهم متصل در یک فضای فشرده ابداع شد. مدار مجتمع این امکان را فراهم کرد تا تعداد زیادی ترانزیستور را بتوان بر روی یک دای (die) نیمه هادی یا همان chipتولید کرد. در
 
خط ۴۲:
{{سخ}}[[سیستم ۳۷۰ آی بی ام]]، که به دنبال [[۳۶۰ آی بی ام]] آمد، به جای ماژولهای ترانزیستوری-گسسته با تکنولوژی Solid Logic Technology، از آی سی‌های SSI استفاده کرد.<ref>{{cite web|title=System/370 Announcement|url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PR370.html|website=IBM Archives|access-date=October 25, 2017|date=2003-01-23}}</ref><ref>{{cite web|title=System/370 Model 155 (Continued)|url=https://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP3155B.html|website=IBM Archives|access-date=October 25, 2017|date=2003-01-23}}</ref> سیستم PDP-8/I و KI10 PDP-10 متعلق به شرکت DEC نیز، ترانزیستورهای مورد استفاده در سیستمهای PDP-8 و PDP-10 را کنار گذاشت، و به سراغ آی سی‌های SSI رفت<ref>{{cite web|url=http://homepage.divms.uiowa.edu/~jones/pdp8/models/|title=Models and Options|publisher=The Digital Equipment Corporation PDP-8|access-date=June 15, 2018}}</ref>و سیستم خطی PDP-11 آن، که بسیار محبوب بود، در ابتدا توسط آی سی‌های SSI ساخته شد، اما سرانجام با استفاده از اجزای LSI، در زمانی که این اجزا عملی شده بودند، پیاده‌سازی شد.
 
=== سی پی یوهایCPUهای مجتمع بزرگ-مقیاس ===
[[ماسفت]] (metal-oxide-semiconductor field-effect transistor)، یا همان ترانزیستور [[ماسفت|ماس]]، توسط آقایان Mohamed Atalla و Dawon Kahng در آزمایشگاه Bell Labs، در سال ۱۹۵۹ اختراع شد و در سال ۱۹۶۰ ثبت شد.<ref name="computerhistory">https://www.computerhistory.org/siliconengine/metal-oxide-semiconductor-mos-transistor-demonstrated/</ref>این امر منجر به تولید مدار مجتمع MOS شد، که در سال ۱۹۶۰ توسط Atalla و در سال ۱۹۶۱ توسط Kahng مطرح شد<ref>{{cite book |last1=Moskowitz |first1=Sanford L. |title=Advanced Materials Innovation: Managing Global Technology in the 21st century |date=2016 |publisher=[[John Wiley & Sons]] |isbn=978-0-470-50892-3 |pages=165–167}}</ref>و سپس توسط Fred Heiman و Steven Hofstein در شرکت RCA، در سال ۱۹۶۲ تولید شد. ماسفت با داشتن مقیاس پذیری بالا<ref>{{cite journal |last1=Motoyoshi |first1=M. |s2cid=29105721 |title=Through-Silicon Via (TSV) |journal=Proceedings of the IEEE |date=2009 |volume=97 |issue=1 |pages=43–48 |doi=10.1109/JPROC.2008.2007462 |issn=0018-9219}}</ref>و مصرف انرژی بسیار کمتر<ref>{{cite news |title=Transistors Keep Moore's Law Alive |url=https://www.eetimes.com/author.asp?section_id=36&doc_id=1334068 |work=EETimes |date=12 December 2018}}</ref> و تراکم بالاتر در مقایسه با [[ترانزیستور پیوندی دوقطبی|ترانزیستورهای پیوند دوقطبی]]، امکان تولید مدارهای مجتمع با تراکم بالا را فراهم کرد.<ref>{{cite web |title=Who Invented the Transistor? |url=https://www.computerhistory.org/atchm/who-invented-the-transistor/ |website=Computer History Museum |date=4 December 2013}}</ref><ref>{{cite journal |last1=Hittinger |first1=William C. |title=Metal-Oxide-Semiconductor Technology |journal=Scientific American |date=1973 |volume=229 |issue=2 |pages=48–59 |issn=0036-8733|jstor=24923169 |doi=10.1038/scientificamerican0873-48 |bibcode=1973SciAm.229b..48H}}</ref>
 
خط ۵۸:
=== ریزپردازنده‌ها ===
{{اصلی|ریزپردازنده}}
پیشرفت در زمینه تکنولوژی مدار مجتمع [[ماسفت|ماس]]، منجر به ابداع ریز پردازنده در اوایل دههٔ ۱۹۷۰ شد.<ref>{{cite web |title=1971: Microprocessor Integrates CPU Function onto a Single Chip |url=https://www.computerhistory.org/siliconengine/microprocessor-integrates-cpu-function-onto-a-single-chip/ |website=Computer History Museum}}</ref> از زمان ارائهٔ اولین ریزپردازندهٔ تجاری، یعنی [[اینتل ۴۰۰۴]] در سال ۱۹۷۱، و اولین ریزپردازنده ای که به‌طور گسترده مورد استفاده قرار گرفت، یعنی [[اینتل ۸۰۸۰]] در سال ۱۹۷۴، این کلاس از پردازنده‌ها، تقریباً به‌طور کامل، تمام روش‌های دیگر پیاده‌سازی پردازنده را از رده خارج کرده‌اند. تولیدکننده‌های رایانه‌های بزرگ و مینی کامپیوترها در آن زمان، برنامه‌های تولید آی سی مالکیتی را آغاز کردند، تا [[معماری رایانه|معماری‌های کامپیوتری]] قدیمی خود را ارتقا دهند و سرانجام، ریز پردازنده‌هایی ابداع کردند که با [[مجموعه دستورالعمل|مجموعهٔ دستورالعمل]] و همچنین با سخت‌افزار و نرم‌افزار قدیمی آن‌ها نیز سازگاری داشتند. با در نظر گرفتن پیشرفت و موفقیت همه‌گیر کامپیوترهای شخصی، در حال حاضر، اصطلاح سی پی یوCPU تقریباً به‌طور کامل به ریزپردازنده‌ها اطلاق می‌شود. می‌توان چندین سی پی یوCPU (به نام هسته) را در یک چیپ پردازشی با هم ترکیب کرد.<ref>{{cite web |url=http://searchdatacenter.techtarget.com/sDefinition/0,,sid80_gci1015740,00.html |publisher=TechTarget |title=Definition: multi-core processor |author=Margaret Rouse |date=March 27, 2007 |access-date=March 6, 2013}}</ref>
 
نسل‌های قبلی پردازنده‌ها، به شکل [[قطعات الکترونیکی|اجزای گسسته]] و [[مدار مجتمع|آی سی]]‌های کوچک متعدد در یک یا بیش از یک برد مدار پیاده‌سازی می‌شدند.<ref>{{cite web |title=A Brief History of the Microprocessor |url=http://www.computermuseum.li/Testpage/MicroprocessorHistory.htm |website=computermuseum.li |author=Richard Birkby |access-date=October 13, 2015 |url-status=dead |archive-url=https://web.archive.org/web/20150923205820/http://www.computermuseum.li/Testpage/MicroprocessorHistory.htm |archive-date=September 23, 2015}}</ref> این در حالی است که، ریز پردازنده‌ها، درواقع، پردازنده‌هایی هستند که با استفاده از تعداد بسیار کمی از [[مدار مجتمع|آی سی]]‌ها (معمولاً فقط یکی) تولید می‌شوند.<ref name=Osborne80>{{cite book | first=Adam | last=Osborne | title=An Introduction to Microcomputers | volume=Volume 1: Basic Concepts | edition=2nd | publisher=Osborne-McGraw Hill | location=Berkeley, California | year=1980 | isbn=978-0-931988-34-9 | url=https://archive.org/details/introductiontomi00adam}}</ref> در نتیجهٔ پیاده‌سازی روی یک دای، اندازهٔ کلی پردازنده‌ها کوچک‌تر شد که منجر به افزایش سرعت سوئیچ شد، که دلیل آن، فاکتورهای فیزیکی نظیر کاهش [[ظرفیت خازنی پارازیتی]] بود.<ref>{{cite web|last1=Zhislina|first1=Victoria|title=Why has CPU frequency ceased to grow?|url=https://software.intel.com/en-us/blogs/2014/02/19/why-has-cpu-frequency-ceased-to-grow|publisher=Intel|access-date=October 14, 2015|date=2014-02-19}}</ref><ref>{{cite web|title=MOS Transistor - Electrical Engineering & Computer Science|url=http://www.eecs.berkeley.edu/~tking/theses/bsriram.pdf|publisher=University of California|access-date=October 14, 2015}}</ref> این امر باعث شده‌است تا ریزپردازنده‌های همگام، دارای سرعت‌های ساعتی با محدودهٔ ده‌ها مگاهرتز تا چندین گیگاهرتز باشند. علاوه بر این، قابلیت ساخت ترانزیستورهای بسیار کوچک در یک آی سی، باعث افزایش پیچیدگی و تعداد ترانزیستورها در یک پردازشگر، به میزان چندین برابر، شد. این رویه ای که به‌طور گسترده مشاهده می‌شود، تحت [[قانون مور]] توصیف می‌شود، که ثابت شده‌است، پیش‌بینی کننده ای نسبتاً دقیق برای رشد پیچیدگی پردازنده (و سایر آی سی‌ها) تا سال ۲۰۱۶ بود.<ref>{{Cite news|url=https://www.technologyreview.com/s/601441/moores-law-is-dead-now-what/|title=Moore's Law Is Dead. Now What?|last=Simonite|first=Tom|work=MIT Technology Review|access-date=2018-08-24|language=en}}</ref><ref name="MooresLaw">{{cite journal|title=Excerpts from A Conversation with Gordon Moore: Moore's Law |publisher=Intel |year=2005 |url=ftp://download.intel.com/museum/Moores_Law/Video-Transcripts/Excepts_A_Conversation_with_Gordon_Moore.pdf |access-date=2012-07-25 |url-status=dead |archive-url=https://web.archive.org/web/20121029060050/http://download.intel.com/museum/Moores_Law/Video-Transcripts/Excepts_A_Conversation_with_Gordon_Moore.pdf |archive-date=2012-10-29}}</ref>
خط ۹۱:
[[File:ABasicComputer.gif|thumb|upright=۱٫۷|بلاک دیاگرام یک کامپیوتر ابتدایی تک-پردازنده‌ای. خطوط مشکی نشان دهنده جریان داده هستند، در حالی که خطوط قرمز نشان دهنده جریان کنترل هستند. فلش‌ها نشان دهنده جهت جریان هستند.]]
در داخل مدار پردازندهٔ اصلی، مجموعه‌ای از عملیات اساسی شش میخ (hardwired) شده‌است که مجموعهٔ دستورالعمل نام دارد. چنین عملیاتی ممکن است شامل مثلاً: جمع کردن یا تفریق کردن دو عدد، مقایسهٔ دو عدد، یا پرش به بخش دیگری از یک برنامه باشد. هر عملیات اساسی توسط ترکیب خاصی از بیت‌ها با نام آپ کد زبان ماشین نمایش داده می‌شود. پردازندهٔ اصلی در زمان اجرای دستورالعمل‌ها در یک برنامه زبان ماشین، تصمیم می‌گیرد که چه عملیاتی را با کد گشایی آپ کد مورد نظر انجام دهد. یک دستورالعمل زبان ماشین کامل حاوی یک آپ کد، و در بسیاری موارد بیت‌های دیگری است که آرگومان‌های خاصی را برای عملیات مذکور مشخص می‌کنند (برای مثال اعدادی که باید با هم جمع شوند، در یک عملیات جمع). یک برنامهٔ زبان ماشین، مجموعه ای از دستورالعمل‌های زبان ماشین است که پردازنده اجرا می‌کند.{{سخ}}
عملیات ریاضی واقعی برای هر دستورالعمل، توسط یک مدار منطقی ترکیبی در داخل پردازنده سی پی یوCPU به نام واحد محاسبه و منطق یا همان ALU انجام می‌گیرد. به‌طور کلی، یک پردازنده برای انجام یک دستورالعمل مراحل زیر را انجام می‌دهد: ابتدا آن را از حافظه واکشی می‌کند، سپس برای انجام یک عملیات از ALU استفاده می‌کند، و در نهایت نتیجه را در حافظه ذخیره می‌کند. علاوه بر دستورالعمل‌های ریاضیاتی اعداد صحیح و عملیات منطقی، دستورالعمل‌های ماشین مختلف دیگری وجود دارد، نظیر: دستورالعمل‌های مربوط به بارگیری داده از حافظه و ذخیره‌سازی آن در حافظه، عملیات انشعاب و عملیات ریاضی روی اعداد ممیز شناور که توسط واحد ممیز شناور (FPU) در سی پی یوCPU انجام می‌شود.<ref>{{cite web
| url = http://www.bottomupcs.com/csbu.pdf#page=44
| title = Computer Science from the Bottom Up, Chapter 3. Computer Architecture
خط ۱۰۱:
=== واحد کنترل ===
{{اصلی|واحد کنترل}}
واحد کنترل (control unit)، جزئی از سی پی یوCPU است که عملیات پردازنده را هدایت می‌کند. این واحد به حافظهٔ کامپیوتر، واحد محاسبه و منطق، و ابزارهای ورودی و خروجی می‌گوید که چگونه به دستورالعمل‌هایی که به پردازنده فرستاده شده‌اند، پاسخ دهند.{{سخ}}
این واحد با فراهم کردن سیگنال‌های زمانبندی و کنترل، عملیات سایر واحدها را هدایت می‌کند. بیشتر منابع کامپیوتر، توسط واحد کنترل مدیریت می‌شود. واحد کنترل، جریان داده را بین سی پی یوCPU و سایر ابزارها هدایت می‌کند. [[جان فون نویمان|جان فون نویمن]] واحد کنترل را به عنوان بخشی از معماری فون نویمناضافه کرد. در طراحی‌های کامپیوتری جدید، واحد کنترل معمولاً یک بخش داخلی از سی پی یوCPU است که نقش و عملیات کلی آن، از اول تغییری نکرده‌است.<ref>{{Cite web|date=2018-09-24|title=Introduction of Control Unit and its Design|url=https://www.geeksforgeeks.org/introduction-of-control-unit-and-its-design/|access-date=2021-01-12|website=GeeksforGeeks|language=en-US}}</ref>
 
=== واحد محاسبه و منطق ===
خط ۱۰۸:
[[File:ALU block.gif|thumb|upright=۱٫۳| نمایش سمبلیک یک ALU و سیگنال‌های ورودی و خروجی آن.]]
واحد محاسبه و منطق (The arithmetic logic unit)، یک مدار دیجیتال در داخل پردازنده است که عملیات محاسباتی و عملیات منطقی بیت به بیت را انجام می‌دهد. ورودی‌های ALU عبارتند از: کلمات داده که قرار است روی آن عملیات انجام شود (با نام عملوند)، اطلاعات وضعیتی از عملیات قبلی، و یک کد از واحد کنترل که نشان می‌دهد کدام عملیات باید انجام شود. بسته به دستورالعملی که اجرا می‌شود، عملوندهای مورد نیاز ممکن است از رجیسترهای داخلی پردازنده یا حافظه خارجی بیایند، یا اینکه ثابت‌هایی باشند که توسط خود ALU تولید می‌شوند.{{سخ}}
زمانی که تمام سیگنال‌ها برقرار می‌شوند و در سرتاسر مدار منتشر می‌شوند، نتیجهٔ عملیات انجام گرفته در خروجی‌های ALU ظاهر می‌شود. این نتایج شامل یک کلمهٔ داده می‌شود که ممکن است در یک رجیستر یا حافظه ذخیره شود، و همچنین شامل اطلاعات وضعیتی می‌شود، که به‌طور معمول در یک رجیستر داخلی خاص سی پی یوCPU که برای این هدف منظور شده‌است، ذخیره می‌شود.
 
=== واحد تولید آدرس ===
{{اصلی|واحد تولید آدرس}}
واحد تولید آدرس (Address generation unit) که گاهی واحد محاسبهٔ آدرس (address computation unit) نیز نامیده می‌شود، یک واحد اجرایی در داخل پردازنده است که آدرس‌هایی را که توسط سی پی یوCPU برای دسترسی به حافظهٔ اصلی استفاده می‌شوند، محاسبه می‌کند. با محول کردن وظیفه محاسبات آدرس به یک مدار جداگانه که به‌طور موازی با مابقی سی پی یوCPU کار می‌کند، می‌توان تعداد چرخه‌های مورد نیاز سی پی یوCPU برای اجرای دستورالعمل‌های مختلف ماشین را کاهش داد، و بدین طریق عملکرد را بهبود داد.{{سخ}}
پردازنده، در حالی که عملیات مختلفی را انجام می‌دهد، لازم است تا آدرس‌هایی را که برای واکشی داده از حافظه لازم هستند، محاسبه کند. برای مثال، باید قبل از اینکه سی پی یوCPU بتواند داده را از مکان‌های واقعی حافظه واکشی کند، مکان‌های داخل-حافظه ای عناصر آرایه محاسبه شوند. این محاسبات تولید آدرس عبارتند از: عملیات محاسباتی مختلف برای اعداد صحیح نظیر، ''جمع کردن، تفریق کردن، عملیات باقیمانده(modulo) و جابجایی‌های بیت''. معمولاً محاسبه کردن یک آدرس حافظه، نیاز به بیش از یک دستورالعمل عمومی ماشین دارد، که لزوماً به سرعت کد گشایی و اجرا نمی‌شود. با اضافه کردن یک AGU به طراحی یک پردازنده و همچنین با ارائهٔ دستورالعمل‌های اختصاصی که از AGU استفاده می‌کنند، می‌توان بار محاسبات مختلف تولید آدرس را از گردن مابقی سی پی یوCPU برداشت و این محاسبات معمولاً به سرعت در یک چرخهٔ سی پی یوCPU قابل اجرا هستند.{{سخ}}
قابلیت‌های یک AGU بستگی به یک سی پی یوCPU خاص و معماری آن دارد؛ بنابراین، برخی AGUها عملیات بیشتری را برای محاسبهٔ آدرس، پیاده‌سازی و نمایان می‌کنند، در حالیکه برخی دیگر، علاوه بر این، دستورالعمل‌های اختصاصی پیشرفته ای را لحاظ می‌کنند که می‌توانند روی عملوندهای متعدد به صورت همزمان اجرا شوند. علاوه بر این، برخی معماری‌های سی پی یو،CPU، دارای شیوه‌های متعددی هستند تا بتوانند بیش از یک عملیات محاسبه آدرس را، به صورت همزمان انجام دهند و به این طریق، با بهره‌گیری از ماهیت سوپراسکالر طراحی‌های پیشرفتهٔ سی پی یو،CPU، کارایی را بالا ببرند. برای مثال، اینتل، AGUهای متعددی را در داخل [[ریزمعماری]]‌های Sandy Bridge و Haswell خود ادغام می‌کند، که باعث می‌شود تا از طریق فراهم آوردن امکان اجرای چندین دستورالعمل دسترسی-به -حافظه به صورت موازی، پهنای باند زیر-سیستم حافظهٔ سی پی یوCPU افزایش یابد.
 
=== واحد مدیریت حافظه ===
خط ۱۲۲:
=== حافظه نهان (کش) ===
{{اصلی|حافظه پنهان سی‌پی‌یو}}
حافظه نهان (cache) پردازنده، در واقع، نوعی حافظهٔ نهان سخت‌افزاری است که توسط واحد پردازش مرکزی یک کامپیوتر، برای کاهش میانگین هزینهٔ (زمان یا انرژی) دسترسی به داده موجود در حافظه اصلی استفاده می‌شود. یک حافظه نهان، در واقع یک حافظه کوچکتر و سریعتر است که به هستهٔ یک پردازنده نزدیک‌تر است و کپی‌هایی از داده‌هایی از مکان‌های حافظه اصلی که مکرراً استفاده می‌شوند را ذخیره می‌کند. اکثر سی پی یوها،CPUها، دارای کش‌های مستقل و متنوع، از جمله: کش‌های دستورالعمل و کش‌های داده هستند، که در آن، کش داده معمولاً به شکل یک سلسله مراتب از سطوح بیشتر کش سازماندهی می‌شود (L1, L2, L3, L4, ...).{{سخ}}
تمام پردازنده‌های جدید (سریع) (به استثناء موارد اختصاصی اندک)، دارای سطوح متعددی از کش‌های پردازنده هستند. اولین پردازنده‌ها که از کش استفاده کردند، فقط دارای یک سطح کش بودند که برخلاف کش‌های سطح یک جدید، به دو قسمت: L1d (برای داده) و L1i (برای دستورالعمل) تقسیم نمی‌شدند. تقریباً تمام پردازنده‌های جدید که دارای کش هستند، دارای یک کش دو قسمتی در سطح یک هستند، و همچنین دارای کش سطح ۲ و در پردازنده‌های بزرگتر، کش سطح سه نیز هستند. سطح دوم کش معمولاً تقسیم نمی‌شود و به شکل یک مخزن مشترک برای کش تقسیم شدهٔ سطح ۱ عمل می‌کند. هر هسته از یک پردازنده چند هسته ای، دارای کش اختصاصی سطح ۲ است، که معمولاً بین هسته‌ها به اشتراک گذاشته نمی‌شود. کش سطح ۳ و کش‌های سطوح بالاتر، بین هسته‌ها مشترک هستند و تقسیم نمی‌شوند. کش سطح ۴ در حال حاضر رایج نیست، و به‌طور کلی، از جنس [[حافظه تصادفی پویا|حافظهٔ دسترسی تصادفی پویا]](DRAM) در یک چیپ یا دای مجزا قرار دارد و به شکل [[حافظه دسترسی تصادفی ایستا]] (SRAM) نمی‌باشد. به‌طور تاریخی، این قضیه، در رابطه با سطح ۱ نیز صادق بود، این در حالی است که، چیپ‌های بزرگتر، امکان ادغام آن و به‌طور کلی تمام سطوح کش را، به استثناء سطح آخر فراهم آورده‌اند. هر سطح اضافه ای از کش معمولاً بزرگتر است و به شکل متفاوتی بهینه‌سازی می‌شود.{{سخ}}
پردازنده برای به دست آوردن داده، ابتدا حافظه نهان را چک می‌کند و پس از نیافتن اطلاعات، به سراغ حافظه‌های دیگر از جمله RAM می‌رود. حافظه نهان می‌تواند دارای چند سطح (Level) باشد که با حرف L در مشخصات پردازنده نوشته می‌شود. معمولاً پردازنده‌ها تا ۳ لایه حافظه نهان دارند که لایه اول (L1) نسبت به دوم (L2) و دوم نیز نسبت به سوم (L3) دارای سرعت بیشتر و حافظه کمتری است. زمانیکه پردازنده می‌خواهد داده‌ای را مورد پردازش قرار دهد ابتدا به نزدیک‌ترین حافظه سطح حافظه نهان خود نگاه می‌کند تا در صورت موجود بودن آن دستورالعمل را پردازش کند. سطح ۱ نزدیک‌ترین سطح به پردازنده است. بدین ترتیب اگر داده‌ها در نزدیک‌ترین سطح حافظه پنهان پردازنده یافت شد، مورد پردازش قرار می‌گیرد و اگر پیدا نشد به ترتیب به سطح‌های بعدی می‌رود و در نهایت اگر پیدا نشد به حافظه اصلی رجوع می‌کند. کش سطح ۳ بین تمام هسته‌ها به اشتراک گذاشته می‌شود و به همین خاطر ظرفیت بیشتری دارد.
خط ۱۳۱:
=== سرعت ساعت ===
{{اصلی|نرخ کلاک}}
اکثر سی پی یوها،CPUها، مدارهای همگام هستند، به این معنی است که آنها از یک سیگنال ساعت برای هماهنگ‌کردن عملیات متوالی خود استفاده می‌کنند. سیگنال ساعت توسط یک مدار نوسانگر خارجی تولید می‌شود، که تعداد ثابتی از پالس‌ها را در هر ثانیه، به شکل یک موج مربعی متناوب تولید می‌کند. فرکانس پالس‌های ساعت مشخص می‌کند که سی پی یوCPU با چه سرعتی دستورالعمل‌ها را اجرا کند و در نتیجه، با افزایش سرعت ساعت، دستورالعمل‌های بیشتری توسط سی پی یوCPU در هر ثانیه اجرا خواهند شد.
 
برای اطمینان از عملکرد صحیح پردازنده، باید مدت دورهٔ ساعت، بیشتر از حداکثر زمان مورد نیاز برای منتشر شدن تمام سیگنال‌ها در سرتاسر سی پی یوCPU باشد. با ست کردن طول دورهٔ ساعت به میزان بالاتری از بدترین حالت مدت زمان تأخیر انتشار، می‌توانیم تمام سی پی یوCPU و روشی را که برای انتقال داده برمبنای لبه‌های بالا رونده و پایین روندهٔ سیگنال ساعت استفاده می‌کند، طراحی کنیم. مزیت این کار این است که پردازنده به‌طور چشمگیری ساده‌تر می‌شود؛ هم از نظر طراحی و هم از نظر تعداد اجزا. البته این مشکل نیز وجود دارد که تمام سی پی یوCPU باید منتظر کندترین عناصر خود باشد، حتی اگر بخش‌هایی از سی پی یوCPU بسیار سریع تر باشد. این محدودیت، به میزان زیادی به وسیلهٔ روش‌هایی که موازی سازی سی پی یوCPU را افزایش می‌دهند، جبران شده‌است.
 
با این حال، بهبودهای معماری به تنهایی قادر به حل تمام معایب پردازنده‌های تماماً همگام نیستند. برای مثال، سیگنال ساعت، درمعرض تاخیرهای ناشی از هرگونه سیگنال‌های الکتریکی دیگر است. سرعت‌های بالای ساعت در سی پی یوهاییCPUهایی که به‌طور فزاینده پیچیده شده‌اند، باعث می‌شود تا نگه داشتن سیگنال ساعت به شکل هم فاز در تمام بخش‌های واحد، دشوار شود. این امر باعث شده‌است تا در بسیاری از سی پی یوهایCPUهای جدید، چندین سیگنال ساعت مشابه فراهم شود، تا مانع از این شود که یک سیگنال منفرد آنقدر تأخیر پیدا کند که موجب اختلال عملکرد پردازنده شود. مشکل مهم دیگری که بدنبال افزایش چشمگیر سرعت ساعت به وجود می‌آید، مقدار گرمایی است که توسط پردازنده آزاد می‌شود. تغییر مداوم ساعت موجب می‌شود تا بسیاری از قطعات، صرف نظر از اینکه آیا در آن لحظه استفاده می‌شوند یا خیر، دچار سوئیچ شوند. به‌طور کلی، قطعه ای که در حال سوئیچ است، انرژی بیشتری را در مقایسه با عنصری که در وضعیت بدون تغییر است، مصرف می‌کنند؛ بنابراین، با افزایش سرعت ساعت و در نتیجه افزایش مصرف انرژی پردازنده، نیاز به انتشار گرمای بیشتری از طریق روش‌های خنک کنندهٔ پردازنده است.
 
یک روش برای مقابله با سوئیچ‌های بی‌مورد، کلاک گیتینگ (Clock Gating) نام دارد که عبارت است از خاموش کردن سیگنال ساعت برای اجزای بلا استفاده (یعنی، عملاً غیرفعال کردن آن‌ها). با این حال، پیاده‌سازی این روش نیز معمولاً دشوار است و استفاده رایجی ندارد، به جز در طراحی‌های بسیار کم مصرف. یک طراحی اخیر سی پی یوCPU که قابل ذکر است و از روش کلاک گیتینگ استفادهٔ زیادی می‌کند، پردازنده زنون (Xenon) (که برحسب [[مجموعه دستورالعمل|دستورالعمل‌های]] [[PowerPC]] شرکت [[IBM]] طراحی شده) در [[اکس باکس ۳۶۰]] است که از این طریق، مصرف انرژی اکس باکس ۳۶۰ به‌طور چشمگیری کاهش پیدا کرده‌است.<ref>{{cite web | last = Brown | first = Jeffery | title = Application-customized CPU design | publisher = IBM developerWorks | url = http://www-128.ibm.com/developerworks/power/library/pa-fpfxbox/?ca=dgr-lnxw07XBoxDesign | year = 2005 | access-date = 2005-12-17}}</ref> شیوهٔ دیگر برای مقابله با بخشی از مشکل سیگنال ساعت سرتاسری، برداشتن سیگنال ساعت به صورت یکپارچه است. اگرچه برداشتن سیگنال ساعت سرتاسری، باعث پیچیده‌تر شدن فرایند طراحی به طرق مختلف می‌شود، با این حال، طراحی‌های ناهمگام (یا بدون ساعت) در مقایسه با طراحی‌های مشابه همگام، برتری قابل توجهی از لحاظ مصرف انرژی و انتشار گرما دارند. اگرچه تا حدودی ناشایع است، اما پردازنده‌هایی تماماً ناهمگام ساخته شده‌اند که از سیگنال ساعت سرتاسری استفاده نمی‌کنند. دو مثال قابل ذکر در این رابطه عبارتند از: AMULET منطبق بر [[معماری آرم|ARM]] و [[معماری میپس|MIPS]] R3000 منطبق بر MiniMIPS.
 
برخی طراحی‌های سی پی یو،CPU، به جای اینکه سیگنال ساعت را به صورت کلی حذف کنند، فقط بخش‌هایی از سیستم مورد نظر را ناهمگام می‌کنند، مثلاً از ALUهای ناهمگام همراه با خط تولید سوپراسکالر، برای دستیابی به برخی فواید عملکردی در محاسبات استفاده می‌کنند. اگرچه در مجموع، مشخص نیست که آیا طراحی‌های تماماً ناهمگام می‌توانند در حد قابل مقایسه یا بهتری در مقایسه با طراحی‌های همگام عمل کنند یا خیر، اما مشخص شده‌است که حداقل در محاسبات ریاضی ساده‌تر، کارایی بالاتری دارند. این ویژگی، همراه با برتری آنها در مصرف انرژی و انتشار گرما، آن‌ها را تبدیل به گزینهٔ مناسبی برای [[سامانه تعبیه‌شده|کامپیوترهای نهفته]] کرده‌است.<ref>{{cite journal |author1=Garside, J. D. |author2=Furber, S. B. |author3= Chung, S-H | title = AMULET3 Revealed | publisher = [[University of Manchester]] Computer Science Department | year = 1999 | url = http://www.cs.manchester.ac.uk/apt/publications/papers/async99_A3.php | archive-url=https://web.archive.org/web/20051210205845/http://www.cs.manchester.ac.uk/apt/publications/papers/async99_A3.php | archive-date=December 10, 2005}}</ref>
 
=== ماژول تنظیم کنندهٔ ولتاژ ===
بسیاری از سی پی یوهایCPUهای جدید، دارای یک قطعهٔ مجزا برای مدیریت انرژی هستند، که در دای ادغام شده‌است، و وظیفه آن، تنظیم کردن منبع ولتاژ به صورت دلخواه برای مدار سی پی یوCPU است. و بدین طریق، تعادلی را بین عملکرد و مصرف انرژی برقرار می‌کند.
 
=== محدوده اعداد صحیح ===
خط ۱۷۱:
بیشترین دشواری در طراحی یک معماری سوپراسکالر پردازنده مربوط به ساخت یک توزیع‌کنندهٔ مؤثر است. توزیع کننده، باید قادر باشد تا به سرعت و بدون اشتباه مشخص کند که آیا دستورالعمل‌ها می‌توانند به‌طور موازی اجرا شوند، و آن‌ها را به شیوه‌ای توزیع کند تا بیشترین واحدهای اجرایی ممکن را از بیکاری خارج کند. این امر نیازمند این است که خط لوله دستورالعمل بیشتر مواقع ممکن پر باشد و معماری‌های سوپراسکالر را نیازمند مقادیر چشمگیری از حافظه نهان پردازنده(cache) می‌کند. همچنین، در این شرایط نیاز به تکنیک‌های حیاتی پیشگیری از خطر همچون: پیش‌بینی انشعاب، اجرای حدسی، تغییر نام رجیستر، اجرای خارج از نوبت و حافظه تراکنشی، برای حفظ سطوح بالای کارایی داریم. پردازنده با تلاش برای پیش‌بینی کردن اینکه کدام شاخه یا مسیر در یک دستورالعمل شرطی انتخاب خواهد شد، می‌تواند تعداد دفعاتی را که تمام خط تولید باید معطل بماند تا یک دستورالعمل شرطی کامل شود، به حداقل برساند. اجرای خارج از نوبت تا حدودی ترتیب اجرای دستورالعمل‌ها را تغییر می‌دهد تا تاخیرهای ناشی از وابستگی‌های داده را کاهش دهد. اجرای حدسی، با اجرا کردن بخش‌هایی از کد که ممکن است بعد از کامل شدن یک عملیات شرطی مورد نیاز نباشد، معمولاً موجب کمی افزایش در کارایی می‌شود. اجرای خارج از نوبت تا حدودی ترتیب اجرای دستورالعمل‌ها را تغییر می‌دهد تا تاخیرهای ناشی از وابستگی‌های داده را کاهش دهد. همچنین، در مورد جریان ''[[یک دستور چند داده|یک دستورالعمل، جریان چندین داده]]''- که در آن مقدار زیادی داده مشابه باید پردازش شود- پردازنده‌های جدید می‌توانند بخش‌هایی از خط لوله را غیرفعال کنند تا، هنگامی که یک دستورالعمل به دفعات زیادی اجرا می‌شود، پردازنده بتواند مراحل واکشی و رمزگشایی را نادیده بگیرد و بنابراین باعث افزایش چشمگیر کارایی در مواقع خاصی، خصوصاً در موتورهای برنامه ای یکنواخت همچون نرم‌افزار ایجاد ویدئو و پردازش تصویر شود.
 
در مواردی که بخشی از پردازنده سوپر اسکالر است و بخش‌هایی نیست، آن بخشی که سوپراسکالر نیست، دچار افت عملکرد به دلیل معطلی‌های زمان‌بندی می‌شود. اینتل پنتیوم P5 دارای دو واحد محاسبه و منطق سوپر اسکالر بود که هر کدام از آنها می‌توانستند یک دستورالعمل را در هر چرخه ساعت بپذیرند، اما واحد ممیز شناور آن نمی‌توانست یک دستورالعمل را در هر چرخه ساعت بپذیرد؛ بنابراین، ALU در رابطه با اعداد صحیح سوپراسکالر بود، اما در رابطه با ممیز شناور سوپراسکالر نبود. معماری نسل بعد از P5، یعنی P6 قابلیت‌های سوپراسکالر را به ویژگی‌های ممیز شناور خود اضافه کرد و بنابراین باعث افزایش چشمگیر در عملکرد دستورالعمل ممیز شناور شد. هم طراحی خط لوله ساده و هم طراحی سوپراسکالر، با فراهم آوردن امکان کامل کردن اجرای دستورالعمل‌ها با سرعتی فراتر از یک دستورالعمل در هر چرخه ساعت(ILP) برای یک پردازنده منفرد، موازی سازی سطح دستورالعمل را در سی پی یوCPU افزایش می‌دهند. اکثر طراحی‌های جدید پردازنده حداقل تا حدودی سوپراسکالر هستند و تقریباً تمام پردازنده‌های عمومی که در دهه اخیر طراحی شده‌اند سوپراسکالر هستند. در سال‌های بعدی، بخشی از تأکید در طراحی کامپیوترهای دارای سطوح بالای موازی سازی در سطح دستورالعمل، از سخت‌افزار پردازنده دور شده و بر روی رابط نرم‌افزاری یا همان معماری [[مجموعه دستورالعمل]] (ISA) متمرکز شده‌است. رویکرد [[کلمه دستورالعمل بسیار طولانی]] (VLIW) باعث می‌شود تا مقداری از موازی سازی در سطح-دستورالعمل به صورت ضمنی و مستقیماً توسط نرم‌افزار انجام گیرد، که منجر به کاهش بار کاری پردازنده برای افزایش ILP می‌شود و بدین گونه پیچیدگی طراحی کاهش یابد.
 
==== موازی سازی در سطح وظایف ====
{{اصلی|چندریسمانی|l1=چندریسمانی|پردازنده چندهسته‌ای}}
رویکرد دیگر برای بهبود کارایی، اجرای چندین ریسمان یا فرایند به صورت موازی است. این بخش از حوزهٔ تحقیقات را رایانش موازی گویند.<ref>{{cite book|last=Gottlieb|first=Allan|title=Highly parallel computing|year=1989|publisher=Benjamin/Cummings|location=Redwood City, Calif.|isbn=978-0-8053-0177-9|url=http://dl.acm.org/citation.cfm?id=160438|author2=Almasi, George S.}}</ref> در تقسیم‌بندی فلین، این رویکرد ''جریان [[چند دستور چند داده|چندین دستورالعمل، جریان چندین داده]]'' (multiple instruction stream, multiple data stream) نام دارد.<ref>{{Cite journal|last1=Flynn|first1=M. J. |s2cid=18573685 |author-link1=Michael J. Flynn|doi=10.1109/TC.1972.5009071|title=Some Computer Organizations and Their Effectiveness|journal=[[IEEE Transactions on Computers|IEEE Trans. Comput.]]|volume=C-21|issue=9|pages=948–960| date=September 1972}}</ref>
یک تکنولوژی که با این هدف استفاده شد، [[چندپردازشی|چند-پردازشی]] (multiprocessing) بود.<ref>{{cite journal|title=Parallelism exploitation in superscalar multiprocessing|journal=IEE Proceedings - Computers and Digital Techniques|volume=145|issue=4|pages=255|publisher=Institution of Electrical Engineers|doi=10.1049/ip-cdt:19981955|year=1998|last1=Lu|first1=N. -P.|last2=Chung|first2=C. -P.}}</ref> در ابتدا، فرم محبوب این تکنولوژی، ''[[چند پردازشی متقارن]]'' (symmetric multiprocessing) نام داشت که در آن، تعداد اندکی پردازنده یک نمای یکپارچه از سیستم حافظه خود را به اشتراک می‌گذارند. در این طرح بندی، هر سی پی یوCPU دارای سخت‌افزار اضافه برای حفظ یک نمای به روز متداوم از حافظه است. با اجتناب از نماهای کهنهٔ حافظه، این پردازنده‌ها می‌توانند روی یک برنامه همکاری کنند و برنامه‌ها می‌توانند از یک پردازنده به پردازندهٔ دیگر مهاجرت کنند. برای افزایش تعداد پردازنده‌های همکاری کننده به بیش از تعداد معدود، طرح‌بندی‌هایی نظیر: ''دسترسی به حافظه به شکل غیر-یکپارچه'' (non-uniform memory access) و ''پروتکل‌های یکپارچه مبتنی بر-دایرکتوری'' (directory-based coherence protocols) در در دهه ۱۹۹۰ ارائه شدند. سیستم‌های چند فرایندی متقارن، دارای تعداد کمی پردازنده‌ها هستند، در حالیکه سیستم‌های دسترسی به حافظه به‌شکل غیر یکپارچه، با هزاران پردازنده ساخته شده‌اند. در ابتدا، چند-پردازشی، با استفاده از چندین پردازندهٔ مجزا و بوردهایی برای پیاده‌سازی اتصالات بین آن‌ها، ساخته شد. هنگامی که پردازنده‌ها و اتصالات بین آنها تماماً روی یک چیپ منفرد پیاده‌سازی می‌شوند، این تکنولوژی را چند-پردازشی سطح-تراشه (chip-level multiprocessing) می‌نامند و تک-تراشهٔ مورد نظر را، یک [[پردازنده چندهسته‌ای|پردازندهٔ چند هسته ای]] می‌نامند.{{سخ}}
بعداً مشخص شد که موازی سازی ظریف تر، می‌تواند با یک برنامه منفرد وجود داشته باشد. یک برنامهٔ منفرد ممکن است دارای چندین ریسمان (یا تابع) باشد، که می‌توان آن‌ها را به صورت مجزا یا موازی اجرا کرد. برخی از قدیمی‌ترین موارد این تکنولوژی، فرآیندهای [[ورودی/خروجی|ورودی-خروجی]] همچون [[دستیابی مستقیم به حافظه|دسترسی-مستقیم-به-حافظه]] را به صورت یک ریسمان جدا از ریسمان محاسباتی، پیاده‌سازی می‌کردند. یک رویکرد کلی تر برای این تکنولوژی، در دهه ۱۹۷۰ ارائه شد که در آن، سیستم‌ها طوری طراحی می‌شدند تا چندین ریسمان محاسباتی را به شکل موازی اجرا کنند. به این تکنولوژی، [[چندریسمانی]] (multi-threading) می‌گویند. این رویکرد، در مقایسه با رویکرد چند-پردازشی به صرفه تر است، زیرا فقط تعداد اندکی از بخش‌های یک پردازنده برای پشتیبانی از چند ریسمانی باید تکثیر شوند، در حالیکه برای چند-پردازشی، باید کل پردازنده تکثیر شود. در رویکرد چند-ریسمانی، واحدهای اجرایی و سیستم حافظه (از جمله کش‌ها)، در بین چندین ریسمان مشترک هستند. مشکل رویکرد چند-ریسمانی این است که پشتیبانی سخت‌افزاری برای چند-ریسمانی در مقایسه با چند-پردازشی، برای نرم‌افزار نمایان تر است؛ بنابراین، نرم‌افزارهای ناظر همچون سیستم عامل، برای پشتیبانی از چند ریسمانی باید متحمل تغییرات زیادی شوند. یک نوع از چند ریسمانی که پیاده‌سازی شد، چند ریسمانی غیر همزمان نام دارد که در آن، یک ریسمان تا زمانی اجرا می‌شود که مجبور شود برای برگشتن داده از حافظه خارجی معطل شود، که در این هنگام، سی پی یوCPU بلافاصله به ریسمان دیگری که آماده اجرا است تعویض زمینه می‌کند. این تعویض معمولاً، در یک چرخه ساعت پردازنده انجام می‌گیرد؛ مثلاً سیستم UltraSPARC از این روش استفاده می‌کند. نوع دیگری از چند ریسمانی، چند ریسمانی همزمان نام دارد، که در آن، دستورالعمل‌های مربوط به چندین ریسمان، به صورت موازی در داخل یک چرخه ساعت پردازنده اجرا می‌شوند.{{سخ}}
به مدت چندین دهه، از ۱۹۷۰ تا اوایل ۲۰۰۰، در طراحی پردازنده‌های عمومی با کارایی بالا، تمرکز بیشتر روی دستیابی به موازی سازی بالا در سطح-دستورالعمل، از طریق تکنولوژی‌هایی نظیر: خط لوله، حافظه‌های نهان، اجرای سوپراسکالر، اجرای خارج از نوبت و … بود. این روند، منجر به تولید پردازنده‌های بزرگ و پرمصرف نظیر اینتل پنتیوم ۴ شد. در اوایل دههٔ ۲۰۰۰، به دلیل رشد ناسازگاری بین فرکانس‌های اجرایی پردازنده و فرکانس‌های اجرایی حافظه و همچنین افزایش روزافزون تولید گرما توسط پردازنده که ناشی از تکنیک‌های اختصاصی موازی سازی در سطح-دستورالعمل بود، طراحان پردازنده دیگر قادر به دستیابی به کارایی‌های بالاتر با استفاده از تکنیک‌های ILP نبودند.{{سخ}}
بعد از آن، طراحان پردازنده، از ایده‌های بازار رایانه‌های تجاری، همچون [[پردازش تراکنش|فرایند تراکنش]] که در آن، مجموع کارایی چندین برنامه یا همان رایانش توان عملیاتی(throughput computing)، مهمتر از عملکرد یک ریسمان یا یک [[فرایند (رایانش)|فرایند]] بود، استفاده کردند. همه گیر شدن طراحی‌های پردازنده‌های دو هسته‌ای و چند هسته ای و به‌طور قابل ذکر، شباهت طراحی‌های جدید اینتل به معماری کمتر سوپراسکالر P6، گواه بر این قضیه است. طراحی‌های بعدی در خانواده‌های متنوعی از پردازنده‌ها، نمایانگر [[چندپردازشی|چند پردازشی]] در سطح-چیپ (CMP) بودند، از جمله: x86-64 Opteron وAthlon 64 X2 و SPARC UltraSPARC T1 و POWER4 و POWER5 IBM و همچنین چندین پردازندهٔ کنسول بازی ویدیویی، نظیر طراحی سه هسته ای PowerPC [[اکس باکس ۳۶۰]] و ریزپردازنده سلولی ۷ هسته ای [[پلی استیشن ۳]].