واحد پردازش مرکزی: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
بدون خلاصۀ ویرایش |
فارسی کردن این عبارت های اختصاری انگلیسی بی معنی است. |
||
خط ۳:
'''واحد پردازش مرکزی''' (به انگلیسی: 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>
اکثر
یک آی سی که حاوی یک
پردازندههای آرایه ای یا [[پردازنده برداری|پردازندههای برداری]] (vector) دارای چندین پردازنده هستند که به صورت موازی عمل میکنند و هیچ واحدی در مرکزیت قرار ندارد
|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> از آنجایی که اصطلاح
ایدهٔ یک کامپیوتر ذخیره کنندهٔ برنامه، قبل از این در طراحی سیستم [[انیاک|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>
اولین
آقای [[جان فون نویمان|جان وان نویمان]]، به دلیل طراحی کامپیوتر ذخیره کنندهٔ برنامه شناخته شدهاست، که به خاطر تلاش وی برای ساخت 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 و هاروارد این است که در معماری هاروارد، ذخیرهسازی و استفاده از دستورالعملهای
[[رله]] ها(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"/> درنهایت،
=== پردازندههای ترانزیستوری ===
خط ۳۶:
به واسطه افزایش قابلیت اطمینان و سرعت عناصر سوئیچ (که در حال حاضر تقریباً تماما ترانزیستور هستند)، سرعت ساعت پردازندهها در این زمان، به سادگی، به دهها مگاهرتز رسید.<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"/>
===
در این دوره، روشی برای تولید تعداد زیادی ترانزیستور بهم متصل در یک فضای فشرده ابداع شد. مدار مجتمع این امکان را فراهم کرد تا تعداد زیادی ترانزیستور را بتوان بر روی یک دای (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، در زمانی که این اجزا عملی شده بودند، پیادهسازی شد.
===
[[ماسفت]] (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> از زمان ارائهٔ اولین ریزپردازندهٔ تجاری، یعنی [[اینتل ۴۰۰۴]] در سال ۱۹۷۱، و اولین ریزپردازنده ای که بهطور گسترده مورد استفاده قرار گرفت، یعنی [[اینتل ۸۰۸۰]] در سال ۱۹۷۴، این کلاس از پردازندهها، تقریباً بهطور کامل، تمام روشهای دیگر پیادهسازی پردازنده را از رده خارج کردهاند. تولیدکنندههای رایانههای بزرگ و مینی کامپیوترها در آن زمان، برنامههای تولید آی سی مالکیتی را آغاز کردند، تا [[معماری رایانه|معماریهای کامپیوتری]] قدیمی خود را ارتقا دهند و سرانجام، ریز پردازندههایی ابداع کردند که با [[مجموعه دستورالعمل|مجموعهٔ دستورالعمل]] و همچنین با سختافزار و نرمافزار قدیمی آنها نیز سازگاری داشتند. با در نظر گرفتن پیشرفت و موفقیت همهگیر کامپیوترهای شخصی، در حال حاضر، اصطلاح
نسلهای قبلی پردازندهها، به شکل [[قطعات الکترونیکی|اجزای گسسته]] و [[مدار مجتمع|آی سی]]های کوچک متعدد در یک یا بیش از یک برد مدار پیادهسازی میشدند.<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) شدهاست که مجموعهٔ دستورالعمل نام دارد. چنین عملیاتی ممکن است شامل مثلاً: جمع کردن یا تفریق کردن دو عدد، مقایسهٔ دو عدد، یا پرش به بخش دیگری از یک برنامه باشد. هر عملیات اساسی توسط ترکیب خاصی از بیتها با نام آپ کد زبان ماشین نمایش داده میشود. پردازندهٔ اصلی در زمان اجرای دستورالعملها در یک برنامه زبان ماشین، تصمیم میگیرد که چه عملیاتی را با کد گشایی آپ کد مورد نظر انجام دهد. یک دستورالعمل زبان ماشین کامل حاوی یک آپ کد، و در بسیاری موارد بیتهای دیگری است که آرگومانهای خاصی را برای عملیات مذکور مشخص میکنند (برای مثال اعدادی که باید با هم جمع شوند، در یک عملیات جمع). یک برنامهٔ زبان ماشین، مجموعه ای از دستورالعملهای زبان ماشین است که پردازنده اجرا میکند.{{سخ}}
عملیات ریاضی واقعی برای هر دستورالعمل، توسط یک مدار منطقی ترکیبی در داخل پردازنده
| url = http://www.bottomupcs.com/csbu.pdf#page=44
| title = Computer Science from the Bottom Up, Chapter 3. Computer Architecture
خط ۱۰۱:
=== واحد کنترل ===
{{اصلی|واحد کنترل}}
واحد کنترل (control unit)، جزئی از
این واحد با فراهم کردن سیگنالهای زمانبندی و کنترل، عملیات سایر واحدها را هدایت میکند. بیشتر منابع کامپیوتر، توسط واحد کنترل مدیریت میشود. واحد کنترل، جریان داده را بین
=== واحد محاسبه و منطق ===
خط ۱۰۸:
[[File:ALU block.gif|thumb|upright=۱٫۳| نمایش سمبلیک یک ALU و سیگنالهای ورودی و خروجی آن.]]
واحد محاسبه و منطق (The arithmetic logic unit)، یک مدار دیجیتال در داخل پردازنده است که عملیات محاسباتی و عملیات منطقی بیت به بیت را انجام میدهد. ورودیهای ALU عبارتند از: کلمات داده که قرار است روی آن عملیات انجام شود (با نام عملوند)، اطلاعات وضعیتی از عملیات قبلی، و یک کد از واحد کنترل که نشان میدهد کدام عملیات باید انجام شود. بسته به دستورالعملی که اجرا میشود، عملوندهای مورد نیاز ممکن است از رجیسترهای داخلی پردازنده یا حافظه خارجی بیایند، یا اینکه ثابتهایی باشند که توسط خود ALU تولید میشوند.{{سخ}}
زمانی که تمام سیگنالها برقرار میشوند و در سرتاسر مدار منتشر میشوند، نتیجهٔ عملیات انجام گرفته در خروجیهای ALU ظاهر میشود. این نتایج شامل یک کلمهٔ داده میشود که ممکن است در یک رجیستر یا حافظه ذخیره شود، و همچنین شامل اطلاعات وضعیتی میشود، که بهطور معمول در یک رجیستر داخلی خاص
=== واحد تولید آدرس ===
{{اصلی|واحد تولید آدرس}}
واحد تولید آدرس (Address generation unit) که گاهی واحد محاسبهٔ آدرس (address computation unit) نیز نامیده میشود، یک واحد اجرایی در داخل پردازنده است که آدرسهایی را که توسط
پردازنده، در حالی که عملیات مختلفی را انجام میدهد، لازم است تا آدرسهایی را که برای واکشی داده از حافظه لازم هستند، محاسبه کند. برای مثال، باید قبل از اینکه
قابلیتهای یک AGU بستگی به یک
=== واحد مدیریت حافظه ===
خط ۱۲۲:
=== حافظه نهان (کش) ===
{{اصلی|حافظه پنهان سیپییو}}
حافظه نهان (cache) پردازنده، در واقع، نوعی حافظهٔ نهان سختافزاری است که توسط واحد پردازش مرکزی یک کامپیوتر، برای کاهش میانگین هزینهٔ (زمان یا انرژی) دسترسی به داده موجود در حافظه اصلی استفاده میشود. یک حافظه نهان، در واقع یک حافظه کوچکتر و سریعتر است که به هستهٔ یک پردازنده نزدیکتر است و کپیهایی از دادههایی از مکانهای حافظه اصلی که مکرراً استفاده میشوند را ذخیره میکند. اکثر
تمام پردازندههای جدید (سریع) (به استثناء موارد اختصاصی اندک)، دارای سطوح متعددی از کشهای پردازنده هستند. اولین پردازندهها که از کش استفاده کردند، فقط دارای یک سطح کش بودند که برخلاف کشهای سطح یک جدید، به دو قسمت: L1d (برای داده) و L1i (برای دستورالعمل) تقسیم نمیشدند. تقریباً تمام پردازندههای جدید که دارای کش هستند، دارای یک کش دو قسمتی در سطح یک هستند، و همچنین دارای کش سطح ۲ و در پردازندههای بزرگتر، کش سطح سه نیز هستند. سطح دوم کش معمولاً تقسیم نمیشود و به شکل یک مخزن مشترک برای کش تقسیم شدهٔ سطح ۱ عمل میکند. هر هسته از یک پردازنده چند هسته ای، دارای کش اختصاصی سطح ۲ است، که معمولاً بین هستهها به اشتراک گذاشته نمیشود. کش سطح ۳ و کشهای سطوح بالاتر، بین هستهها مشترک هستند و تقسیم نمیشوند. کش سطح ۴ در حال حاضر رایج نیست، و بهطور کلی، از جنس [[حافظه تصادفی پویا|حافظهٔ دسترسی تصادفی پویا]](DRAM) در یک چیپ یا دای مجزا قرار دارد و به شکل [[حافظه دسترسی تصادفی ایستا]] (SRAM) نمیباشد. بهطور تاریخی، این قضیه، در رابطه با سطح ۱ نیز صادق بود، این در حالی است که، چیپهای بزرگتر، امکان ادغام آن و بهطور کلی تمام سطوح کش را، به استثناء سطح آخر فراهم آوردهاند. هر سطح اضافه ای از کش معمولاً بزرگتر است و به شکل متفاوتی بهینهسازی میشود.{{سخ}}
پردازنده برای به دست آوردن داده، ابتدا حافظه نهان را چک میکند و پس از نیافتن اطلاعات، به سراغ حافظههای دیگر از جمله RAM میرود. حافظه نهان میتواند دارای چند سطح (Level) باشد که با حرف L در مشخصات پردازنده نوشته میشود. معمولاً پردازندهها تا ۳ لایه حافظه نهان دارند که لایه اول (L1) نسبت به دوم (L2) و دوم نیز نسبت به سوم (L3) دارای سرعت بیشتر و حافظه کمتری است. زمانیکه پردازنده میخواهد دادهای را مورد پردازش قرار دهد ابتدا به نزدیکترین حافظه سطح حافظه نهان خود نگاه میکند تا در صورت موجود بودن آن دستورالعمل را پردازش کند. سطح ۱ نزدیکترین سطح به پردازنده است. بدین ترتیب اگر دادهها در نزدیکترین سطح حافظه پنهان پردازنده یافت شد، مورد پردازش قرار میگیرد و اگر پیدا نشد به ترتیب به سطحهای بعدی میرود و در نهایت اگر پیدا نشد به حافظه اصلی رجوع میکند. کش سطح ۳ بین تمام هستهها به اشتراک گذاشته میشود و به همین خاطر ظرفیت بیشتری دارد.
خط ۱۳۱:
=== سرعت ساعت ===
{{اصلی|نرخ کلاک}}
اکثر
برای اطمینان از عملکرد صحیح پردازنده، باید مدت دورهٔ ساعت، بیشتر از حداکثر زمان مورد نیاز برای منتشر شدن تمام سیگنالها در سرتاسر
با این حال، بهبودهای معماری به تنهایی قادر به حل تمام معایب پردازندههای تماماً همگام نیستند. برای مثال، سیگنال ساعت، درمعرض تاخیرهای ناشی از هرگونه سیگنالهای الکتریکی دیگر است. سرعتهای بالای ساعت در
یک روش برای مقابله با سوئیچهای بیمورد، کلاک گیتینگ (Clock Gating) نام دارد که عبارت است از خاموش کردن سیگنال ساعت برای اجزای بلا استفاده (یعنی، عملاً غیرفعال کردن آنها). با این حال، پیادهسازی این روش نیز معمولاً دشوار است و استفاده رایجی ندارد، به جز در طراحیهای بسیار کم مصرف. یک طراحی اخیر
برخی طراحیهای
=== ماژول تنظیم کنندهٔ ولتاژ ===
بسیاری از
=== محدوده اعداد صحیح ===
خط ۱۷۱:
بیشترین دشواری در طراحی یک معماری سوپراسکالر پردازنده مربوط به ساخت یک توزیعکنندهٔ مؤثر است. توزیع کننده، باید قادر باشد تا به سرعت و بدون اشتباه مشخص کند که آیا دستورالعملها میتوانند بهطور موازی اجرا شوند، و آنها را به شیوهای توزیع کند تا بیشترین واحدهای اجرایی ممکن را از بیکاری خارج کند. این امر نیازمند این است که خط لوله دستورالعمل بیشتر مواقع ممکن پر باشد و معماریهای سوپراسکالر را نیازمند مقادیر چشمگیری از حافظه نهان پردازنده(cache) میکند. همچنین، در این شرایط نیاز به تکنیکهای حیاتی پیشگیری از خطر همچون: پیشبینی انشعاب، اجرای حدسی، تغییر نام رجیستر، اجرای خارج از نوبت و حافظه تراکنشی، برای حفظ سطوح بالای کارایی داریم. پردازنده با تلاش برای پیشبینی کردن اینکه کدام شاخه یا مسیر در یک دستورالعمل شرطی انتخاب خواهد شد، میتواند تعداد دفعاتی را که تمام خط تولید باید معطل بماند تا یک دستورالعمل شرطی کامل شود، به حداقل برساند. اجرای خارج از نوبت تا حدودی ترتیب اجرای دستورالعملها را تغییر میدهد تا تاخیرهای ناشی از وابستگیهای داده را کاهش دهد. اجرای حدسی، با اجرا کردن بخشهایی از کد که ممکن است بعد از کامل شدن یک عملیات شرطی مورد نیاز نباشد، معمولاً موجب کمی افزایش در کارایی میشود. اجرای خارج از نوبت تا حدودی ترتیب اجرای دستورالعملها را تغییر میدهد تا تاخیرهای ناشی از وابستگیهای داده را کاهش دهد. همچنین، در مورد جریان ''[[یک دستور چند داده|یک دستورالعمل، جریان چندین داده]]''- که در آن مقدار زیادی داده مشابه باید پردازش شود- پردازندههای جدید میتوانند بخشهایی از خط لوله را غیرفعال کنند تا، هنگامی که یک دستورالعمل به دفعات زیادی اجرا میشود، پردازنده بتواند مراحل واکشی و رمزگشایی را نادیده بگیرد و بنابراین باعث افزایش چشمگیر کارایی در مواقع خاصی، خصوصاً در موتورهای برنامه ای یکنواخت همچون نرمافزار ایجاد ویدئو و پردازش تصویر شود.
در مواردی که بخشی از پردازنده سوپر اسکالر است و بخشهایی نیست، آن بخشی که سوپراسکالر نیست، دچار افت عملکرد به دلیل معطلیهای زمانبندی میشود. اینتل پنتیوم P5 دارای دو واحد محاسبه و منطق سوپر اسکالر بود که هر کدام از آنها میتوانستند یک دستورالعمل را در هر چرخه ساعت بپذیرند، اما واحد ممیز شناور آن نمیتوانست یک دستورالعمل را در هر چرخه ساعت بپذیرد؛ بنابراین، ALU در رابطه با اعداد صحیح سوپراسکالر بود، اما در رابطه با ممیز شناور سوپراسکالر نبود. معماری نسل بعد از P5، یعنی P6 قابلیتهای سوپراسکالر را به ویژگیهای ممیز شناور خود اضافه کرد و بنابراین باعث افزایش چشمگیر در عملکرد دستورالعمل ممیز شناور شد. هم طراحی خط لوله ساده و هم طراحی سوپراسکالر، با فراهم آوردن امکان کامل کردن اجرای دستورالعملها با سرعتی فراتر از یک دستورالعمل در هر چرخه ساعت(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) نام داشت که در آن، تعداد اندکی پردازنده یک نمای یکپارچه از سیستم حافظه خود را به اشتراک میگذارند. در این طرح بندی، هر
بعداً مشخص شد که موازی سازی ظریف تر، میتواند با یک برنامه منفرد وجود داشته باشد. یک برنامهٔ منفرد ممکن است دارای چندین ریسمان (یا تابع) باشد، که میتوان آنها را به صورت مجزا یا موازی اجرا کرد. برخی از قدیمیترین موارد این تکنولوژی، فرآیندهای [[ورودی/خروجی|ورودی-خروجی]] همچون [[دستیابی مستقیم به حافظه|دسترسی-مستقیم-به-حافظه]] را به صورت یک ریسمان جدا از ریسمان محاسباتی، پیادهسازی میکردند. یک رویکرد کلی تر برای این تکنولوژی، در دهه ۱۹۷۰ ارائه شد که در آن، سیستمها طوری طراحی میشدند تا چندین ریسمان محاسباتی را به شکل موازی اجرا کنند. به این تکنولوژی، [[چندریسمانی]] (multi-threading) میگویند. این رویکرد، در مقایسه با رویکرد چند-پردازشی به صرفه تر است، زیرا فقط تعداد اندکی از بخشهای یک پردازنده برای پشتیبانی از چند ریسمانی باید تکثیر شوند، در حالیکه برای چند-پردازشی، باید کل پردازنده تکثیر شود. در رویکرد چند-ریسمانی، واحدهای اجرایی و سیستم حافظه (از جمله کشها)، در بین چندین ریسمان مشترک هستند. مشکل رویکرد چند-ریسمانی این است که پشتیبانی سختافزاری برای چند-ریسمانی در مقایسه با چند-پردازشی، برای نرمافزار نمایان تر است؛ بنابراین، نرمافزارهای ناظر همچون سیستم عامل، برای پشتیبانی از چند ریسمانی باید متحمل تغییرات زیادی شوند. یک نوع از چند ریسمانی که پیادهسازی شد، چند ریسمانی غیر همزمان نام دارد که در آن، یک ریسمان تا زمانی اجرا میشود که مجبور شود برای برگشتن داده از حافظه خارجی معطل شود، که در این هنگام،
به مدت چندین دهه، از ۱۹۷۰ تا اوایل ۲۰۰۰، در طراحی پردازندههای عمومی با کارایی بالا، تمرکز بیشتر روی دستیابی به موازی سازی بالا در سطح-دستورالعمل، از طریق تکنولوژیهایی نظیر: خط لوله، حافظههای نهان، اجرای سوپراسکالر، اجرای خارج از نوبت و … بود. این روند، منجر به تولید پردازندههای بزرگ و پرمصرف نظیر اینتل پنتیوم ۴ شد. در اوایل دههٔ ۲۰۰۰، به دلیل رشد ناسازگاری بین فرکانسهای اجرایی پردازنده و فرکانسهای اجرایی حافظه و همچنین افزایش روزافزون تولید گرما توسط پردازنده که ناشی از تکنیکهای اختصاصی موازی سازی در سطح-دستورالعمل بود، طراحان پردازنده دیگر قادر به دستیابی به کاراییهای بالاتر با استفاده از تکنیکهای ILP نبودند.{{سخ}}
بعد از آن، طراحان پردازنده، از ایدههای بازار رایانههای تجاری، همچون [[پردازش تراکنش|فرایند تراکنش]] که در آن، مجموع کارایی چندین برنامه یا همان رایانش توان عملیاتی(throughput computing)، مهمتر از عملکرد یک ریسمان یا یک [[فرایند (رایانش)|فرایند]] بود، استفاده کردند. همه گیر شدن طراحیهای پردازندههای دو هستهای و چند هسته ای و بهطور قابل ذکر، شباهت طراحیهای جدید اینتل به معماری کمتر سوپراسکالر P6، گواه بر این قضیه است. طراحیهای بعدی در خانوادههای متنوعی از پردازندهها، نمایانگر [[چندپردازشی|چند پردازشی]] در سطح-چیپ (CMP) بودند، از جمله: x86-64 Opteron وAthlon 64 X2 و SPARC UltraSPARC T1 و POWER4 و POWER5 IBM و همچنین چندین پردازندهٔ کنسول بازی ویدیویی، نظیر طراحی سه هسته ای PowerPC [[اکس باکس ۳۶۰]] و ریزپردازنده سلولی ۷ هسته ای [[پلی استیشن ۳]].
|