**Орталық процессор** немесе **негізгі процессор** деп те аталатын орталық процессор ( **CPU** ) берілген компьютердегі ең маңызды процессор болып табылады. Оның электрондық схемасы арифметикалық , логикалық, басқару және енгізу/шығару ( енгізу/шығару ) операциялары сияқты компьютерлік бағдарламаның нұсқауларын орындайды. Бұл рөл негізгі жады және енгізу/шығару схемасы сияқты сыртқы құрамдас бөліктерге және графикалық өңдеу блоктары (**GPU**) сияқты мамандандырылған сопроцессорларға қарама-қайшы келеді.

Уақыт өте келе процессорлардың пішіні, дизайны және жүзеге асырылуы өзгерді, бірақ олардың негізгі жұмысы дерлік өзгеріссіз қалады. Орталық процессордың негізгі құрамдас бөліктеріне арифметикалық және логикалық операцияларды орындайтын арифметикалық-логикалық блок (**ALU**) , **ALU**-ге операндтарды беретін және **ALU** операцияларының нәтижелерін сақтайтын процессор регистрлері және алуды (жадтан) реттейтін басқару блогы жатады. **ALU**, регистрлер және басқа компоненттердің үйлестірілген операцияларын басқару арқылы декодтау және орындау (нұсқауларды).

Қазіргі заманғы процессорлардың көпшілігі бір **IC** чипте бір немесе бірнеше процессорлары бар интегралды схема (**IC**) микропроцессорларында жүзеге асырылады. Бірнеше процессоры бар микропроцессорлық чиптер көп ядролы процессорлар болып табылады. Жеке физикалық процессорлар, процессор өзектері қосымша виртуалды немесе логикалық процессорлар жасау үшін көп ағынды болуы мүмкін.

Орталық процессоры бар **IC** құрамында жад , перифериялық интерфейстер және компьютердің басқа компоненттері де болуы мүмкін; мұндай біріктірілген құрылғылар микроконтроллерлер немесе чиптегі жүйелер ( **SoC** ) деп аталады.

Жиымдық процессорларда немесе векторлық процессорларда параллель жұмыс істейтін бірнеше процессорлар болады, олардың ешқайсысы орталық деп саналмайды. Виртуалды процессорлар динамикалық түрде жинақталған есептеу ресурстарының абстракциясы болып табылады.

Тарих
-----

Сақталған бағдарлама компьютері идеясы **Дж. Преспер Эккерт** пен **Джон Уильям Маучлидің** **ENIAC** дизайнында бұрыннан бар болған , бірақ **ENIAC**-ты тезірек аяқтау үшін бастапқыда қабылданбады. 1945 жылы 30 маусымда **ENIAC** құрылмай тұрып, математик **Джон фон Нейман** **EDVAC** туралы есептің бірінші жобасы деп аталатын қағазды таратты. Бұл 1949 жылдың тамызында аяқталатын сақталған бағдарлама компьютерінің құрылымы болды. **EDVAC** әртүрлі типтегі нұсқаулардың (немесе операциялардың) белгілі бір санын орындауға арналған. Бір қызығы, **EDVAC** үшін жазылған бағдарламалар компьютердің физикалық сымдары арқылы емес, жоғары жылдамдықты компьютер жадында сақталуы керек еді. Бұл компьютерді жаңа тапсырманы орындау үшін қайта конфигурациялау үшін қажетті көп уақыт пен күш болатын **ENIAC**-тың қатаң шектеуін еңсерді. Фон Нейманның дизайнымен **EDVAC** іске қосқан бағдарламаны жадтың мазмұнын өзгерту арқылы ғана өзгертуге болады. **EDVAC** бірінші сақталған бағдарлама компьютері емес еді; **Manchester Baby** шағын көлемді тәжірибелік сақталған бағдарлама компьютері болды, өзінің алғашқы бағдарламасын 1948 жылы 21 маусымда іске қосты және **Манчестер Марк 1** 1949 жылдың 16 маусымынан 17 маусымға қараған түні өзінің алғашқы бағдарламасын іске қосты.

Ерте процессорлар үлкенірек және кейде ерекше компьютердің бөлігі ретінде пайдаланылатын теңшелетін дизайн болды. Дегенмен, белгілі бір қолданбаға арналған реттелетін процессорларды жобалаудың бұл әдісі негізінен үлкен көлемде шығарылатын көп мақсатты процессорлардың дамуына жол берді. Бұл стандарттау дискретті транзисторлық негізгі фреймдер мен шағын компьютерлер дәуірінде басталды және интегралдық схеманың (**IC**) танымал болуымен тез қарқын алды. **IC** мүмкіндік берді барған сайын күрделі процессорларды жобалануға және өндіруге рұқсат етілген тәртіпте нанометрлер. Орталық процессорларды миниатюризациялау және стандарттау қазіргі өмірде сандық құрылғылардың болуын арнайы есептеу машиналарының шектеулі қолдануынан әлдеқайда жоғарылатты. Заманауи микропроцессорлар автомобильдерден ұялы телефондарға дейін, кейде тіпті ойыншықтарда да электрондық құрылғыларда пайда болады.

**Фон Нейман EDVAC** дизайнына байланысты сақталған бағдарлама компьютерінің дизайнымен жиі есептелсе және дизайн фон Нейман архитектурасы деп аталды, ал Конрад Зузе сияқты одан бұрынғы басқалар ұқсас идеяларды ұсынып, жүзеге асырды. EDVAC алдында аяқталған Гарвард Марк I деп аталатын Гарвард архитектурасы электрондық жадтан гөрі тесілген қағаз таспаны пайдаланып сақталған бағдарлама дизайнын да пайдаланды. Фон Нейман мен Гарвард архитектураларының негізгі айырмашылығы мынада: соңғысы процессор нұсқаулары мен деректерін сақтау мен өңдеуді бөледі, ал біріншісі екеуі үшін бірдей жад кеңістігін пайдаланады. Қазіргі заманғы процессорлардың көпшілігі дизайнда негізінен фон Нейман болып табылады, бірақ Гарвард архитектурасы бар орталық процессорлар, әсіресе ендірілген қолданбаларда да көрінеді; мысалы, Atmel AVR микроконтроллерлері Гарвард архитектуралық процессорлары болып табылады.

Коммутациялық элементтер ретінде әдетте реле және вакуумдық түтіктер (термиондық түтіктер) пайдаланылды; Пайдалы компьютер мыңдаған немесе он мыңдаған коммутациялық құрылғыларды қажет етеді. Жүйенің жалпы жылдамдығы қосқыштардың жылдамдығына байланысты. EDVAC сияқты вакуумдық түтік компьютерлер ақаулар арасында орташа сегіз сағатқа созылды, ал релелік компьютерлер (мысалы, баяуырақ, бірақ бұрынғы Гарвард Марк I) өте сирек істен шықты. Ақырында түтікке негізделген процессорлар басым болды, өйткені берілген жылдамдықтың айтарлықтай артықшылықтары сенімділік мәселелерінен басым болды. Осы ерте синхронды процессорлардың көпшілігі қазіргі микроэлектрондық конструкциялармен салыстырғанда төмен сағат жиіліктерінде жұмыс істеді. 100 кГц -тен 4 МГц-ке дейінгі сағаттық сигнал жиіліктері осы уақытта өте кең таралған, олар негізінен олар құрастырылған коммутациялық құрылғылардың жылдамдығымен шектелген.

### Транзисторлық процессорлар

Әртүрлі технологиялар кішірек және сенімдірек электронды құрылғыларды құруды жеңілдеткен сайын орталық процессорлардың дизайн күрделілігі артты. Алғашқы мұндай жақсарту транзистордың пайда болуымен келді. 1950 және 1960 жылдардағы транзисторланған процессорлар енді вакуумдық түтіктер мен реле сияқты үлкен, сенімсіз және нәзік коммутациялық элементтерден жасалуы керек емес. Осы жақсарту арқылы күрделірек және сенімді процессорлар дискретті (жеке) құрамдас бөліктерден тұратын бір немесе бірнеше баспа тақшаларына салынды.

1964 жылы IBM өзінің IBM System/360 компьютер архитектурасын енгізді, ол бірдей бағдарламаларды әртүрлі жылдамдықпен және өнімділікпен іске қосуға қабілетті компьютерлер сериясында қолданылады. Бұл электрондық компьютерлердің көпшілігі бір-бірімен, тіпті бір өндіруші шығарған компьютерлермен үйлесімсіз болған кезде маңызды болды. Бұл жақсартуды жеңілдету үшін IBM микробағдарлама тұжырымдамасын қолданды (көбінесе «микрокод» деп аталады), ол әлі де заманауи процессорларда кеңінен қолданылады. System/360 архитектурасы соншалықты танымал болды, ол ондаған жылдар бойы негізгі компьютер нарығында үстемдік етті және IBM zSeries сияқты заманауи компьютерлермен жалғасатын мұра қалдырды. 1965 жылы Digital Equipment Corporation (DEC) ғылыми және зерттеу нарықтарына бағытталған тағы бір ықпалды компьютерді — PDP-8 ұсынды.

Транзисторлы компьютерлер өздерінің предшественниктерінен бірнеше ерекше артықшылықтарға ие болды. Транзисторлар сенімділікті жоғарылату мен қуат тұтынуды азайтудан басқа, транзистордың түтікке немесе релеге қарағанда қысқа ауысу уақытына байланысты процессорларға әлдеқайда жоғары жылдамдықта жұмыс істеуге мүмкіндік берді. Осы уақытқа дейін тек дерлік транзисторлар болатын коммутациялық элементтердің сенімділігі мен жылдамдығының күрт артуы; Осы кезеңде ондаған мегагерцтегі процессордың сағат жиілігі оңай алынды. Сонымен қатар, дискретті транзисторлар мен IC процессорлары көп қолданыста болған кезде, бір нұсқаулық, бірнеше деректер (SIMD) векторлық процессорлары сияқты жаңа жоғары өнімді конструкциялар пайда бола бастады. Бұл ерте эксперименттік конструкциялар кейінірек Cray Inc және Fujitsu Ltd жасаған мамандандырылған суперкомпьютерлердің дәуірін тудырды.

### Шағын масштабты интеграциялық процессорлар

Осы кезеңде ықшам кеңістікте өзара байланысты көптеген транзисторларды жасау әдісі жасалды. Интегралды схема (IC) транзисторлардың үлкен санын бір жартылай өткізгіш негізіндегі қалыпта немесе «чипте» өндіруге мүмкіндік берді. Бастапқыда NOR қақпалары сияқты өте қарапайым мамандандырылған емес цифрлық схемалар ғана IC-ге кішірейтілген. Осы "құрылымдық блок" IC негізіндегі процессорлар әдетте "шағын масштабты интеграция" (SSI) құрылғылары деп аталады. Apollo Guidance Computer- де қолданылатындар сияқты SSI IC-де әдетте бірнеше ондаған транзисторлар болады. SSI IC құрылғыларынан бүкіл процессорды құру үшін мыңдаған жеке чиптер қажет болды, бірақ бұрынғы дискретті транзисторлық конструкцияларға қарағанда әлдеқайда аз орын мен қуатты тұтынатын.

IBM System/370 жүйесі System/360 жүйесіне қосымша, Solid Logic Technology дискретті транзисторлы модульдерден гөрі SSI IC қолданды. DEC PDP-8 /I және KI10 PDP-10 да PDP-8 және PDP-10 пайдаланатын жеке транзисторлардан SSI IC-ге ауысты және олардың өте танымал PDP-11 желісі бастапқыда болды. SSI IC құрылғыларымен құрастырылған, бірақ олар практикалық болғаннан кейін LSI құрамдастарымен бірге іске асырылды.

### Кең ауқымды интеграциялық процессорлар

Ли Бойсель ықпалды мақалаларды, соның ішінде 1967 жылғы «манифесті» жариялады, онда үлкен масштабты интеграциялық схемалардың (LSI) салыстырмалы түрде аз санынан 32 биттік негізгі компьютердің баламасын қалай құру керектігі сипатталған. Жүз немесе одан да көп қақпасы бар чиптер болып табылатын LSI чиптерін құрудың жалғыз жолы оларды металл-оксидті-жартылай өткізгіш (MOS) жартылай өткізгішті өндіру процесін ( PMOS логикасы , NMOS логикасы немесе CMOS логикасы). Дегенмен, кейбір компаниялар биполярлы транзисторлы-транзисторлық логикалық (TTL) чиптерінен процессорлар жасауды жалғастырды, өйткені биполярлы транзисторлар 1970-ші жылдарға дейін MOS чиптерінен жылдамырақ болды ( Datapoint сияқты бірнеше компаниялар ерте кезеңге дейін TTL чиптерінен процессорлар жасауды жалғастырды. 1980 жылдар). 1960 жылдары MOS IC құрылғылары баяуырақ болды және бастапқыда төмен қуатты қажет ететін қолданбаларда ғана пайдалы деп саналды. 1968 жылы Fairchild Semiconductor компаниясында Федерико Фаггин кремний қақпасы MOS технологиясын әзірлегеннен кейін , MOS IC 1970 жылдардың басында стандартты чип технологиясы ретінде биполярлы TTL-ді негізінен ауыстырды.

Микроэлектрондық технология дамыған сайын IC-ге транзисторлардың саны көбейіп, толық процессорға қажетті жеке IC саны азайды. MSI және LSI IC транзисторлар санын жүздегенге, содан кейін мыңдағанға дейін арттырды. 1968 жылға қарай толық процессорды құру үшін қажетті IC саны сегіз түрлі типтегі 24 IC-ге дейін қысқарды, олардың әрқайсысында шамамен 1000 MOSFET бар. SSI және MSI предшественниктерінен түбегейлі айырмашылығы, PDP-11 бірінші LSI іске асыруда тек төрт LSI интегралды схемасынан тұратын процессор болды.

### Микропроцессорлар

Микропроцессорлар алғаш рет енгізілгеннен бері олар орталық процессорлардың барлық басқа енгізу әдістерін толығымен дерлік басып озды. 1971 жылы жасалған бірінші коммерциялық қол жетімді микропроцессор Intel 4004 болды , ал 1974 жылы жасалған бірінші кең таралған микропроцессор Intel 8080 болды. Сол кездегі үлкен компьютерлер мен шағын компьютерлерді өндірушілер өздерінің ескі компьютер архитектураларын жаңарту үшін меншікті IC әзірлеу бағдарламаларын іске қосты және сайып келгенде, олардың ескі аппараттық және бағдарламалық жасақтамасымен кері үйлесімді нұсқаулар жиынтығы үйлесімді микропроцессорларды шығарды. Барлық жерде таралған дербес компьютердің пайда болуымен және ақырғы табысымен біріктірілген CPU термині қазір тек дерлік микропроцессорларға қолданылады. Бірнеше процессорларды (белгіленген ядролар ) бір өңдеу чипіне біріктіруге болады.

Орталық процессорлардың алдыңғы буындары дискретті құрамдас бөліктер және бір немесе бірнеше схемалық платаларда көптеген шағын интегралдық схемалар (IC) ретінде іске асырылды. Микропроцессорлар керісінше IC өте аз санда жасалған процессорлар, әдетте біреу ғана. Бір қалыпқа енгізудің нәтижесінде процессордың жалпы кішірек өлшемі қақпаның паразиттік сыйымдылығының төмендеуі сияқты физикалық факторларға байланысты жылдамырақ ауысу уақытын білдіреді. Бұл синхронды микропроцессорларға ондаған мегагерцтен бірнеше гигагерцке дейінгі тактілік жиіліктерге ие болуға мүмкіндік берді. Сонымен қатар, IC-де өте кішкентай транзисторларды құру мүмкіндігі бір процессордағы транзисторлардың күрделілігі мен санын бірнеше есе арттырды. Бұл кеңінен байқалған тенденция 2016 жылға дейін процессордың (және басқа IC) күрделілігінің өсуінің жеткілікті дәл болжамы болып табылатын Мур заңымен сипатталған.

1950 жылдан бері процессорлардың күрделілігі, өлшемі, құрылысы және жалпы пішіні орасан зор өзгергенімен, негізгі дизайн мен функция мүлде өзгерген жоқ. Қазіргі уақытта барлық дерлік жалпы процессорларды фон Нейманның сақталған бағдарлама машиналары ретінде өте дәл сипаттауға болады. Мур заңы бұдан былай орындалмайтындықтан, интегралды схема транзисторлық технологиясының шектеулері туралы алаңдаушылық туындады. Электрондық қақпаларды шектен тыс миниатюризациялау электромиграция және табалдырықтан төмен ағып кету сияқты құбылыстардың айтарлықтай маңызды болуына әкеледі. Бұл жаңа алаңдаушылықтар зерттеушілерді кванттық компьютер сияқты есептеудің жаңа әдістерін зерттеуге , сондай-ақ классикалық фон Нейман моделінің пайдалылығын кеңейтетін параллелизмді және басқа әдістерді қолдануды кеңейтуге итермелейтін көптеген факторлардың бірі болып табылады.

Операция
--------

Көптеген процессорлардың негізгі жұмысы, олардың физикалық пішініне қарамастан, бағдарлама деп аталатын сақталған нұсқаулар тізбегін орындау болып табылады. Орындалатын нұсқаулар компьютердің қандай да бір жадында сақталады. Барлық дерлік процессорлар командалық цикл деп аталатын жұмысындағы алу, декодтау және орындау қадамдарын орындайды .

Нұсқау орындалғаннан кейін бүкіл процесс қайталанады, келесі командалық цикл әдетте бағдарлама санауышындағы ұлғайтылған мәнге байланысты келесі кезекті нұсқауды алады. Егер көшу нұсқауы орындалса, бағдарлама есептегіші көшірілген нұсқаудың мекенжайын қамтитындай өзгертіледі және бағдарламаның орындалуы қалыпты түрде жалғасады. Неғұрлым күрделі процессорларда бірнеше нұсқауларды бір уақытта алуға, декодтауды және орындауға болады. Бұл бөлімде көптеген электронды құрылғыларда (көбінесе микроконтроллерлер деп аталады) қолданылатын қарапайым процессорлар арасында жиі кездесетін « классикалық RISC құбыры » деп аталатын нәрсе сипатталады. Ол негізінен процессор кэшінің маңызды рөлін, демек құбырдың кіру кезеңін елемейді.

Кейбір нұсқаулар нәтиже деректерін тікелей шығарудың орнына бағдарлама есептегішін басқарады; мұндай нұсқаулар әдетте «секірулер» деп аталады және циклдар , шартты бағдарламаны орындау (шартты секіруді пайдалану арқылы) және функциялардың болуы сияқты бағдарлама әрекетін жеңілдетеді. Кейбір процессорларда кейбір басқа нұсқаулар «жалаулар» регистріндегі биттердің күйін өзгертеді. Бұл жалаушаларды бағдарламаның әрекетіне әсер ету үшін пайдалануға болады, өйткені олар көбінесе әртүрлі әрекеттердің нәтижесін көрсетеді. Мысалы, мұндай процессорларда «салыстыр» командасы екі мәнді бағалайды және қайсысы үлкен немесе олардың тең екенін көрсету үшін жалаулар регистріндегі биттерді орнатады немесе тазартады; осы жалаулардың бірі кейін бағдарлама ағынын анықтау үшін кейінірек өту нұсқауымен пайдаланылуы мүмкін.

### Алу

Fetch бағдарлама жадынан нұсқауды (сан немесе сандар тізбегі арқылы берілген) шығарып алуды қамтиды. Нұсқаудың бағдарлама жадындағы орны (мекен-жайы) келесі қабылданатын нұсқаудың мекенжайын анықтайтын санды сақтайтын бағдарлама санауышы (ДК; Intel x86 микропроцессорларында «нұсқау көрсеткіші» деп аталады ) арқылы анықталады. Нұсқау алынғаннан кейін ДК нұсқаулықтың ұзындығына ұлғаяды, осылайша ол кезектілікте келесі нұсқаудың мекенжайын қамтиды. Көбінесе алынатын нұсқауды салыстырмалы түрде баяу жадтан шығарып алу керек, бұл нұсқаулықтың қайтарылуын күту кезінде процессордың тоқтап қалуына әкеледі. Бұл мәселе негізінен заманауи процессорларда кэштер мен құбыр сәулеттері арқылы шешіледі (төменде қараңыз).

### Декодтау

Орталық процессор жадтан алатын нұсқау процессордың не істейтінін анықтайды. Нұсқаулық декодер деп аталатын екілік декодер схемасы арқылы орындалатын декодтау қадамында нұсқаулық орталық процессордың басқа бөліктерін басқаратын сигналдарға түрлендіріледі.

Нұсқауды түсіндіру тәсілі орталық процессордың нұсқаулар жинағы архитектурасымен (ISA) анықталады. Көбінесе, операциялық код деп аталатын нұсқау ішіндегі биттердің бір тобы (яғни, «өріс») қандай операция орындалатынын көрсетеді, ал қалған өрістер әдетте операцияға қажетті қосымша ақпаратты береді, мысалы: операндтар. Бұл операндтар тұрақты мән ретінде (жедел мән деп аталады) немесе кейбір адрестеу режимімен анықталғандай процессор регистрі немесе жад мекенжайы болуы мүмкін мәннің орны ретінде көрсетілуі мүмкін.

Кейбір CPU конструкцияларында нұсқаулық декодер сымды, өзгермейтін екілік декодер тізбегі ретінде жүзеге асырылады. Басқаларында микробағдарлама нұсқауларды бірнеше тактілік импульстар бойынша ретпен қолданылатын CPU конфигурация сигналдарының жиындарына аудару үшін пайдаланылады. Кейбір жағдайларда микробағдарламаны сақтайтын жад қайта жазылады, бұл процессордың нұсқауларды декодтау тәсілін өзгертуге мүмкіндік береді.

### Орындау

Алу және декодтау қадамдарынан кейін орындау қадамы орындалады. Орталық процессордың архитектурасына байланысты бұл бір әрекеттен немесе әрекеттер тізбегінен тұруы мүмкін. Әрбір әрекет кезінде басқару сигналдары орталық процессордың әртүрлі бөліктерін электрлік түрде қосады немесе өшіреді, осылайша олар қалаған әрекеттің барлығын немесе бір бөлігін орындай алады. Содан кейін әрекет әдетте сағат импульсіне жауап ретінде аяқталады. Көбінесе нәтижелер келесі нұсқаулар арқылы жылдам қол жеткізу үшін ішкі CPU регистріне жазылады. Басқа жағдайларда нәтижелер баяуырақ, бірақ қымбат емес және сыйымдылығы жоғары негізгі жадқа жазылуы мүмкін.

Мысалы, қосуды орындайтын нұсқау орындалатын болса, операндтарды қамтитын регистрлер (қосынылатын сандар) қосуды орындайтын арифметикалық логикалық бірліктің (ALU) бөліктері сияқты белсендіріледі. Сағат импульсі пайда болған кезде операндтар бастапқы регистрлерден ALU-ға түседі және оның шығысында қосынды пайда болады. Кейінгі тактілік импульстерде шығысты (операция сомасын) жадқа (мысалы, регистр немесе жад) жылжыту үшін басқа компоненттер қосылады (және өшіріледі). Егер алынған қосынды тым үлкен болса (яғни, ол ALU шығыс сөзінің өлшемінен үлкен болса), келесі әрекетке әсер ететін арифметикалық толып кету жалауы орнатылады.

Құрылымы және орындалуы
-----------------------

Орталық процессордың схемасына жалғанған ол орындай алатын негізгі операциялардың жиынтығы болып табылады, ол нұсқаулар жинағы деп аталады. Мұндай операциялар, мысалы екі санды қосу немесе азайту, екі санды салыстыру немесе бағдарламаның басқа бөлігіне өтуді қамтуы мүмкін. Әрбір нұсқау биттердің бірегей комбинациясы арқылы ұсынылған , ол машина тілінің операциялық коды ретінде белгілі. Нұсқауды өңдеу кезінде орталық процессор операциялық кодты ( екілік декодер арқылы ) орталық процессордың әрекетін реттейтін басқару сигналдарына декодтайды. Толық машина тілінің нұсқауы операциялық кодтан және көп жағдайда операцияның аргументтерін көрсететін қосымша биттерден тұрады (мысалы, қосу операциясы жағдайында қосылатын сандар). Күрделілік шкаласын жоғарылататын болсақ, машина тілінің бағдарламасы орталық процессор орындайтын машина тілінің нұсқауларының жиынтығы болып табылады.

Әрбір нұсқау үшін нақты математикалық операция арифметикалық-логикалық бірлік немесе ALU деп аталатын орталық процессордың процессорындағы комбинациялық логикалық схема арқылы орындалады. Жалпы алғанда, процессор нұсқауды жадтан алу, операцияны орындау үшін өзінің ALU пайдалану, содан кейін нәтижені жадқа сақтау арқылы орындайды. Бүтін математикалық және логикалық операцияларға арналған нұсқаулардан басқа, жадтан деректерді жүктеуге және оларды кері сақтауға арналған, тармақтау операциялары және процессордың өзгермелі нүктелер блогы (FPU) орындайтын өзгермелі нүктелердегі математикалық операциялар сияқты басқа да машина нұсқаулары бар.

### Басқару блогы

Басқару блогы (CU) процессордың жұмысын басқаратын орталық процессордың құрамдас бөлігі болып табылады. Ол компьютердің жадына, арифметикалық және логикалық блогына және енгізу және шығару құрылғыларына процессорға жіберілген нұсқауларға қалай жауап беру керектігін айтады.

Ол уақыт пен басқару сигналдарын беру арқылы басқа блоктардың жұмысын басқарады. Компьютерлік ресурстардың көпшілігін КО басқарады. Ол орталық процессор мен басқа құрылғылар арасындағы деректер ағынын басқарады. Джон фон Нейман фон Нейман сәулетінің бөлігі ретінде басқару блогын енгізді. Заманауи компьютерлік конструкцияларда басқару блогы әдетте процессордың ішкі бөлігі болып табылады, оның жалпы рөлі мен жұмысы енгізілгеннен бері өзгеріссіз қалады.

### Арифметикалық логикалық бірлік

Арифметикалық логикалық бірлік (ALU) бүтін арифметикалық және разрядтық логикалық операцияларды орындайтын процессор ішіндегі сандық схема болып табылады. ALU кірістері - жұмыс істейтін деректер сөздері (операндтар деп аталады), алдыңғы әрекеттердегі күй ақпараты және қандай операцияны орындау керектігін көрсететін басқару блогының коды. Орындалатын нұсқауға байланысты операндтар ішкі процессор регистрлерінен , сыртқы жадтан немесе ALU өзі жасаған тұрақтылардан келуі мүмкін.

Барлық кіріс сигналдары ALU схемасы арқылы реттеліп, таралса, орындалған операцияның нәтижесі ALU шығыстарында пайда болады. Нәтиже регистрде немесе жадта сақталуы мүмкін деректер сөзінен және әдетте осы мақсат үшін сақталған арнайы ішкі процессор регистрінде сақталатын күй ақпаратынан тұрады.

### Мекенжай генерациялау бірлігі

Мекенжай генерациялау бірлігі (AGU), кейде мекенжайды есептеу бірлігі (ACU) деп те аталады, орталық жадқа қол жеткізу үшін орталық процессор пайдаланатын мекенжайларды есептейтін орталық процессор ішіндегі орындау бірлігі болып табылады. Процессордың қалған бөлігімен параллель жұмыс істейтін жеке схема арқылы мекенжай есептеулерін өңдеу арқылы әртүрлі машина нұсқауларын орындау үшін қажетті процессор циклдарының санын қысқартуға болады, бұл өнімділікті жақсартуға әкеледі.

Түрлі операцияларды орындау кезінде орталық процессорлар жадтан деректерді алу үшін қажетті жады мекенжайларын есептеу керек; мысалы, процессор нақты жад орындарынан деректерді алу үшін массив элементтерінің жадтағы орындарын есептеу керек. Бұл мекенжай генерациясының есептеулері қосу, алу, модульдік операциялар немесе разрядты ауыстыру сияқты әртүрлі бүтін арифметикалық операцияларды қамтиды. Көбінесе жад мекенжайын есептеуде бірден көп жалпы мақсаттағы машиналық нұсқаулар кіреді, олар міндетті түрде декодтауды және жылдам орындауды қажет етпейді. AGU-ны процессор дизайнына қосу арқылы, AGU пайдаланатын мамандандырылған нұсқауларды енгізумен бірге, әртүрлі мекенжай генерациялау есептеулерін процессордың қалған бөлігінен жүктеуге болады және көбінесе бір процессор циклінде жылдам орындалуы мүмкін.

AGU мүмкіндіктері белгілі бір процессорға және оның архитектурасына байланысты. Осылайша, кейбір AGU мекенжайларды есептеу операцияларын жүзеге асырады және көрсетеді, ал кейбіреулері бір уақытта бірнеше операндтарда жұмыс істей алатын кеңейтілген мамандандырылған нұсқауларды қамтиды. Кейбір процессорлық архитектураларда бірнеше AGU бар, сондықтан бір уақытта бірнеше мекенжайды есептеу операциясын орындауға болады, бұл процессордың жетілдірілген конструкцияларының суперскалярлық сипатына байланысты өнімділікті одан әрі жақсартуға әкеледі. Мысалы, Intel өзінің Sandy Bridge және Haswell микроархитектураларына бірнеше AGU қосады , олар бірнеше жадқа қол жеткізу нұсқауларын параллель орындауға мүмкіндік беру арқылы CPU жады ішкі жүйесінің өткізу қабілеттілігін арттырады.

### Жадты басқару блогы (MMU)

Көптеген микропроцессорларда (смартфондарда және жұмыс үстелінде, ноутбукта, серверлік компьютерлерде) логикалық мекенжайларды физикалық жедел жады мекенжайларына аударатын, жадты қорғау және виртуалды жады үшін пайдалы пейджинг мүмкіндіктерін қамтамасыз ететін жадты басқару блогы бар. Қарапайым процессорлар, әсіресе микроконтроллерлер , әдетте MMU қамтымайды.

### Кэш

Барлық заманауи (жылдам) процессорларда (арнайы ерекшеліктерді қоспағанда) процессорлық кэштердің бірнеше деңгейлері бар. Кэшті пайдаланатын алғашқы процессорларда кэштің тек бір деңгейі болды; кейінгі 1-деңгейдегі кэштерден айырмашылығы, ол L1d (деректер үшін) және L1i (нұсқаулар үшін) болып бөлінбеді. Кэштері бар барлық дерлік ағымдағы процессорларда бөлінген L1 кэш бар. Сондай-ақ оларда L2 кэштері және үлкенірек процессорлар үшін L3 кэштері бар. L2 кэш әдетте бөлінбейді және қазірдің өзінде бөлінген L1 кэш үшін ортақ репозиторий ретінде әрекет етеді. Көп ядролы процессордың әрбір ядросында арнайы L2 кэш бар және әдетте ядролар арасында бөлісілмейді. L3 кэш және жоғары деңгейлі кэштер ядролар арасында ортақ пайдаланылады және бөлінбейді. L4 кэш қазіргі уақытта сирек кездеседі және әдетте статикалық кездейсоқ қолжетімді жадта (SRAM) емес, жеке штампта немесе чипте емес, динамикалық жедел жадта (DRAM) орналасқан. Бұл тарихи L1-де де болды, ал үлкен чиптер соңғы деңгейді қоспағанда, оны және жалпы кэш деңгейлерінің барлығын біріктіруге мүмкіндік берді. Кэштің әрбір қосымша деңгейі үлкенірек болады және басқаша оңтайландырылған.

Кэштердің басқа түрлері бар (жоғарыда аталған ең маңызды кэштердің «кэш өлшеміне» есептелмейді), мысалы, көптеген процессорларда бар жадты басқару блогының (MMU) бөлігі болып табылатын аудармаға қарау буфері (TLB).

Кэштер әдетте екі қуатта өлшенеді: 2, 8, 16 және т.б. IBM z13 нұсқаулығының кэші 96 КБ L1 болса да, KiB немесе MiB (L1 емес үлкенірек өлшемдер үшін).

### Сағат жиілігі

Көптеген процессорлар синхронды схемалар болып табылады , яғни олар ретті операцияларды жылдамдату үшін сағаттық сигналды пайдаланады. Сағат сигналы сыртқы осциллятор тізбегі арқылы жасалады, ол әр секунд сайын периодтық квадрат толқын түрінде импульстардың тұрақты санын жасайды. Сағат импульстерінің жиілігі орталық процессордың нұсқауларды орындау жылдамдығын анықтайды және сәйкесінше, сағат неғұрлым жылдам болса, орталық процессор әр секунд сайын көп нұсқауларды орындайды.

Орталық процессордың дұрыс жұмыс істеуін қамтамасыз ету үшін тактілік кезең барлық сигналдардың орталық процессор арқылы таралуы (жылжыуы) үшін қажетті максималды уақыттан ұзағырақ. Сағат периодын ең нашар таралу кідірісінен жоғары мәнге орнату кезінде бүкіл процессорды және оның көтерілу және төмендеу тактілік сигналының «шеттері» айналасында деректерді жылжыту жолын жобалауға болады. Бұл дизайн тұрғысынан да, құрамдастарды санау тұрғысынан да процессорды айтарлықтай жеңілдету артықшылығына ие. Дегенмен, оның кейбір бөліктері әлдеқайда жылдамырақ болса да, бүкіл процессордың ең баяу элементтерін күтуі керек деген кемшілігі бар. Бұл шектеу негізінен процессордың параллельділігін арттырудың әртүрлі әдістерімен өтелді (төменде қараңыз).

Дегенмен, тек архитектуралық жақсартулар жаһандық синхронды процессорлардың барлық кемшіліктерін шеше алмайды. Мысалы, тактілік сигнал кез келген басқа электрлік сигналдың кідірістеріне бағынады. Күрделі процессорлардағы жоғары тактілік жиіліктер бүкіл құрылғыда тактілік сигналды фазада (синхрондалған) ұстауды қиындатады. Бұл көптеген заманауи процессорларды процессордың дұрыс жұмыс істемеуіне әкелетін бір сигналды айтарлықтай кешіктіруді болдырмау үшін бірнеше бірдей тактілік сигналдарды қамтамасыз етуді талап етуге әкелді. Тағы бір маңызды мәселе, өйткені сағат жиілігі күрт артады, бұл процессор бөлетін жылу мөлшері. Үздіксіз өзгеретін сағат көптеген құрамдастардың сол уақытта қолданылып жатқанына қарамастан ауысуына әкеледі. Жалпы, ауысатын құрамдас статикалық күйдегі элементке қарағанда көбірек энергияны пайдаланады. Сондықтан, сағат жиілігі артқан сайын, энергияны тұтыну да артады, бұл процессорды процессорды салқындату шешімдері түрінде көбірек жылуды бөлуді талап етеді .

Қажет емес құрамдастардың ауысуымен күресудің бір әдісі сағаттық қақпақ деп аталады , ол қажет емес компоненттерге сағаттық сигналды өшіруді (оларды тиімді өшіруді) қамтиды. Дегенмен, бұл жиі іске асыру қиын болып саналады, сондықтан өте төмен қуат конструкцияларынан тыс жалпы пайдалануды көрмейді. Кең ауқымды сағаттық шлюзді пайдаланатын соңғы CPU дизайнының бірі Xbox 360 жүйесінде пайдаланылатын IBM PowerPC негізіндегі Xenon болып табылады ; Xbox 360 жүйесінің қуат талаптарын азайту.

### Сағатсыз процессорлар

Ғаламдық тактілік сигналмен кейбір мәселелерді шешудің тағы бір әдісі - тактілік сигналды толығымен жою. Жаһандық сағаттық сигналды алып тастау дизайн процесін көптеген жолдармен айтарлықтай күрделендірсе де, асинхронды (немесе сағатсыз) конструкциялар ұқсас синхронды конструкциялармен салыстырғанда қуат тұтыну және жылуды бөлуде айтарлықтай артықшылықтарға ие. Біршама сирек болса да, бүкіл асинхронды процессорлар жаһандық сағат сигналын пайдаланбай жасалған. Мұның екі көрнекті мысалы - ARM үйлесімді AMULET және MIPS R3000 үйлесімді MiniMIPS.

Сағат сигналын толығымен алып тастаудың орнына, кейбір CPU конструкциялары құрылғының белгілі бір бөліктерін асинхронды етуге мүмкіндік береді, мысалы, кейбір арифметикалық өнімділікке қол жеткізу үшін асинхронды ALU-ті суперскалярлық құбырмен бірге пайдалану. Толығымен асинхронды конструкциялар синхронды әріптестеріне қарағанда салыстырмалы немесе жақсырақ деңгейде орындай алатыны анық болмаса да, олар кем дегенде қарапайым математикалық операцияларда жақсы жұмыс істейтіні анық. Бұл олардың тамаша қуат тұтынуы және жылуды тарату қасиеттерімен біріктірілген, оларды ендірілген компьютерлер үшін өте қолайлы етеді.

### Кернеу реттегішінің модулі

Көптеген заманауи процессорларда өнімділік пен қуат тұтыну арасындағы тепе-теңдікті сақтауға мүмкіндік беретін процессор схемасына сұраныс бойынша кернеу беруді реттейтін қуатты басқару модулі бар.

### Бүтін диапазон

Әрбір процессор белгілі бір жолмен сандық мәндерді көрсетеді. Мысалы, кейбір ерте цифрлық компьютерлер сандарды таныс ондық (10 базалық) сандық жүйе мәндері ретінде көрсетті, ал басқалары үштік (үштік негіз) сияқты әдеттен тыс бейнелерді пайдаланды. Заманауи процессорлардың барлығы дерлік екілік пішіндегі сандарды көрсетеді, әрбір цифр «жоғары» немесе «төмен» кернеу сияқты кейбір екі мәнді физикалық шамамен көрсетіледі.

Сандық көрсетуге қатысты процессор көрсете алатын бүтін сандардың өлшемі мен дәлдігі. Екілік процессор жағдайында бұл процессор бір операцияда өңдей алатын биттердің санымен (екілік кодталған бүтін санның маңызды сандары) өлшенеді, әдетте бұл сөз өлшемі , бит ені , деректер жолының ені , бүтін сан дәлдігі деп аталады, немесе бүтін өлшем. Орталық процессордың бүтін мөлшері ол тікелей жұмыс істей алатын бүтін мәндер ауқымын анықтайды. Мысалы, 8 биттік процессор 256 (2 8 ) дискретті бүтін мәндер ауқымы бар сегіз битпен ұсынылған бүтін сандарды тікелей басқара алады.

Бүтін сан диапазоны процессор тікелей адрестей алатын жад орындарының санына да әсер етуі мүмкін (мекен-жай – белгілі бір жад орнын көрсететін бүтін мән). Мысалы, егер екілік процессор жад мекенжайын көрсету үшін 32 бит пайдаланса, ол 2 32 жад орнын тікелей адрестей алады. Бұл шектеуді айналып өту үшін және әртүрлі басқа себептерге байланысты кейбір процессорлар қосымша жадты шешуге мүмкіндік беретін механизмдерді (мысалы, банк коммутациясы ) пайдаланады.

Үлкенірек сөз өлшемдері бар процессорлар көбірек схеманы қажет етеді, демек, физикалық үлкенірек, қымбатырақ болады және көбірек қуат тұтынады (сондықтан көбірек жылу шығарады). Нәтижесінде кішірек 4- немесе 8-биттік микроконтроллерлер қазіргі қолданбаларда әдетте пайдаланылады, тіпті үлкенірек сөз өлшемдері бар процессорлар (мысалы, 16, 32, 64, тіпті 128-бит) қол жетімді. Жоғары өнімділік қажет болғанда, үлкенірек сөз өлшемі (үлкен деректер ауқымы және мекенжай кеңістігі) артықшылықтары кемшіліктерден басым болуы мүмкін. Өлшем мен шығынды азайту үшін процессорда сөз өлшемінен қысқа ішкі деректер жолдары болуы мүмкін. Мысалы, IBM System/360 нұсқаулар жиынының архитектурасы 32 биттік нұсқаулар жинағы болса да, System/360 үлгісі 30 және 40 үлгісі арифметикалық логикалық блокта 8 биттік деректер жолдары болды, сондықтан 32 биттік қосу қажет болды. төрт цикл, операндтардың әрбір 8 битіне бір және Motorola 68000 сериясының нұсқаулар жинағы 32 биттік нұсқаулар жиынтығы болса да, Motorola 68000 және Motorola 68010 арифметикалық логикалық блокта 16 биттік деректер жолдары болды, осылайша 32 биттік қосу екі циклды қажет етеді.

Төменгі және жоғарырақ бит ұзындықтары беретін кейбір артықшылықтарға қол жеткізу үшін көптеген нұсқаулар жиындарында бүтін және өзгермелі нүкте деректері үшін әртүрлі бит ендері бар, бұл нұсқаулар жинағын жүзеге асыратын процессорларға құрылғының әртүрлі бөліктері үшін әртүрлі разряд еніне ие болуға мүмкіндік береді. Мысалы, IBM System/360 нұсқаулар жинағы негізінен 32 бит болды, бірақ өзгермелі нүкте сандарындағы үлкен дәлдік пен ауқымды жеңілдету үшін 64 биттік өзгермелі нүкте мәндерін қолдады. System/360 65 үлгісінде ондық және бекітілген нүктелі екілік арифметика үшін 8 разрядты қосқыш және өзгермелі нүкте арифметикасы үшін 60 биттік қосқыш болды. Көптеген кейінгі CPU конструкциялары ұқсас аралас бит енін пайдаланады, әсіресе процессор бүтін сан мен өзгермелі нүкте мүмкіндігінің ақылға қонымды теңгерімін қажет ететін жалпы мақсатта пайдалануға арналған болса.

### Параллелизм

Алдыңғы бөлімде ұсынылған орталық процессордың негізгі жұмысының сипаттамасы орталық процессор қабылдай алатын қарапайым пішінді сипаттайды. Әдетте субскаляр деп аталатын орталық процессордың бұл түрі бір уақытта бір немесе екі деректер бөлігінде бір нұсқаулықта жұмыс істейді және орындайды, бұл тактілік циклге бір нұсқаудан аз ( IPC < 1 ).

Бұл процесс субскалярлық процессорларға тән тиімсіздікті тудырады. Бір уақытта тек бір нұсқау орындалатындықтан, келесі нұсқауға өту алдында бүкіл процессор осы нұсқаудың аяқталуын күтуі керек. Нәтижесінде субскалярлық процессор орындауды аяқтау үшін бір сағаттан артық циклды қажет ететін нұсқауларға «ілініп қалады». Тіпті екінші орындау бірлігін қосу (төменде қараңыз) өнімділікті айтарлықтай жақсартпайды; бір жол ілулі тұрғаннан гөрі, енді екі жол ілулі тұр және пайдаланылмайтын транзисторлар саны көбейеді. Орталық процессордың орындау ресурстары бір уақытта тек бір нұсқауда жұмыс істей алатын бұл дизайн тек скалярлық өнімділікке жетуі мүмкін (тағаттылық цикліне бір нұсқау, IPC = 1 ). Дегенмен, өнімділік әрқашан дерлік субскалярлық болып табылады (бір тактілік циклге бір нұсқаулықтан аз, IPC < 1 ).

Скалярлық және жақсы өнімділікке қол жеткізу әрекеттері орталық процессордың аз сызықты және параллельді әрекетін тудыратын әртүрлі жобалау әдістемелеріне әкелді. Орталық процессорлардағы параллелизмге сілтеме жасағанда, әдетте осы дизайн әдістерін жіктеу үшін екі термин қолданылады:

* Нұсқау деңгейіндегі параллелизм (ILP), ол орталық процессор ішінде нұсқаулардың орындалу жылдамдығын арттыруға ұмтылады (яғни, жұмыс орнында орындау ресурстарын пайдалануды арттыру);
* Тапсырма деңгейіндегі параллелизм (TLP), ол процессор бір уақытта орындай алатын ағындардың немесе процестердің санын арттыруға бағытталған

Әрбір әдістеме оларды іске асыру тәсілдерімен де, сондай-ақ қолданбаға арналған CPU өнімділігін арттырудағы салыстырмалы тиімділігімен де ерекшеленеді.

### Нұсқау деңгейіндегі параллелизм

Параллелизмді арттырудың қарапайым әдістерінің бірі - алдыңғы нұсқауды орындауды аяқтамай тұрып, нұсқауларды алу мен декодтаудың алғашқы қадамдарын бастау. Бұл нұсқаулық құбыры ретінде белгілі әдіс және барлық дерлік заманауи жалпы мақсаттағы процессорларда қолданылады. Құбырларды құру орындау жолын дискретті кезеңдерге бөлу арқылы бірнеше нұсқауды бір уақытта орындауға мүмкіндік береді. Бұл бөлуді құрастыру сызығымен салыстыруға болады, онда нұсқаулық әр кезеңде ол орындау құбырынан шығып, жұмыстан шыққаншатолық орындалады.

Дегенмен, құбырды төсеу келесі операцияны аяқтау үшін алдыңғы операцияның нәтижесі қажет болатын жағдайдың мүмкіндігін енгізеді; жағдай жиі деректерге тәуелділік қақтығысы деп аталады. Сондықтан құбырлы процессорлар мұндай жағдайлардың бар-жоғын тексеріп, қажет болған жағдайда құбырдың бір бөлігін кешіктіруі керек. Құбырлы процессор өте дерлік скалярға айналуы мүмкін, тек конвейердің стендтері (кезеңде бір сағаттан көп циклды жұмсайтын нұсқау) арқылы тежелуі мүмкін.

Нұсқаулар құбырының жетілдірілуі CPU компоненттерінің бос тұру уақытының одан әрі қысқаруына әкелді. Суперскаляр деп есептелетін конструкцияларға ұзын нұсқау құбыры және жүк сақтау бірліктері , арифметикалық-логикалық бірліктер , өзгермелі нүкте бірліктері және мекенжай генерациялау бірліктері сияқты бірнеше бірдей орындау бірліктері кіреді. [70] Суперскалярлық конвейерде нұсқаулар оқылады және диспетчерге жіберіледі, ол нұсқауларды параллель (бір уақытта) орындауға болатынын немесе орындалмайтынын шешеді. Олай болса, олар орындау бөлімшелеріне жіберіледі, нәтижесінде олар бір уақытта орындалады. Жалпы, суперскалярлық процессор циклде орындайтын нұсқаулардың саны оның орындау бірліктеріне бір уақытта жібере алатын нұсқаулар санына байланысты.

Суперскалярлық процессордың архитектурасын жобалаудағы қиындықтардың көпшілігі тиімді диспетчер құруда жатыр. Диспетчер нұсқауларды параллель орындауға болатынын жылдам анықтай алуы керек, сондай-ақ оларды мүмкіндігінше көп орындау бірліктерін бос ұстайтындай етіп жіберуі керек. Бұл нұсқау құбырының мүмкіндігінше жиі толтырылуын талап етеді және процессорлық кэштің айтарлықтай көлемін талап етеді. Ол сондай-ақ тармақтарды болжау , алыпсатарлық орындау , регистрдің атын өзгерту , ретсіз орындау және транзакциялық жады сияқты қауіпті болдырмау әдістерін өнімділіктің жоғары деңгейін сақтау үшін маңызды етеді. Шартты нұсқаудың қай тармақты (немесе жолды) алатынын болжауға әрекет жасай отырып, орталық процессор шартты нұсқау аяқталғанша бүкіл конвейер күтетін уақыт санын азайта алады. Алыпсатарлық орындау көбінесе шартты операция аяқталғаннан кейін қажет болмауы мүмкін код бөліктерін орындау арқылы қарапайым өнімділікті арттырады. Тәртіпсіз орындау деректер тәуелділігіне байланысты кідірістерді азайту үшін нұсқаулардың орындалу ретін біршама қайта реттейді. Сондай-ақ бір нұсқау ағыны, бірнеше деректер ағыны , бір типтегі көптеген деректерді өңдеу қажет болған жағдайда, заманауи процессорлар бір нұсқау бірнеше рет орындалғанда, процессор өткізіп жіберетін етіп құбырдың бөліктерін өшіре алады. алу және декодтау фазалары және осылайша белгілі бір жағдайларда өнімділікті айтарлықтай арттырады, әсіресе бейне жасау бағдарламалық құралы және фотосуреттерді өңдеу сияқты өте монотонды бағдарлама қозғалтқыштарында.

Процессордың бір бөлігі суперскаляр болған кезде, жұмыс істемейтін бөлік кестелік орындықтарға байланысты өнімділік айыппұлына ұшырайды. Intel P5 Pentium екі суперскалярлы ALU болды, олар әрбір тактілік циклге бір нұсқауды қабылдай алады, бірақ оның FPU мүмкін емес. Осылайша, P5 бүтін суперскаляр болды, бірақ өзгермелі нүкте суперскаляр емес. Intel компаниясының P5 архитектурасының мұрагері P6 оның өзгермелі нүкте мүмкіндіктеріне суперскалярлық қабілеттерді қосты.

Қарапайым конвейерлеу және суперскалярлық дизайн бір тактілік циклге бір нұсқаулықтан асатын жылдамдықпен нұсқауларды орындауға мүмкіндік беру арқылы процессордың ILP деңгейін арттырады. Қазіргі заманғы орталық процессорлардың көпшілігі кем дегенде суперскалярлы және соңғы онжылдықта жасалған жалпы мақсаттағы процессорлардың барлығы дерлік суперскаляр болып табылады. Кейінгі жылдары жоғары ILP компьютерлерін жобалаудағы кейбір екпін орталық процессордың аппараттық құралынан және оның бағдарламалық интерфейсіне немесе нұсқаулықтар жинағы архитектурасына (ISA) ауыстырылды. Өте ұзақ нұсқау сөзінің (VLIW) стратегиясы кейбір ILP-нің бағдарламалық құралмен тікелей болжалуына себепші болады, бұл ILP-ді арттырудағы CPU жұмысын азайтады және осылайша дизайн күрделілігін азайтады.

### Тапсырма деңгейіндегі параллелизм

Өнімділікке жетудің тағы бір стратегиясы бірнеше ағындарды немесе процестерді параллель орындау болып табылады. Бұл зерттеу саласы параллельді есептеулер деп аталады. Флинн таксономиясында бұл стратегия бірнеше нұсқаулар ағыны, бірнеше деректер ағыны (MIMD) ретінде белгілі.

Осы мақсатта қолданылатын технологиялардың бірі - көп өңдеу (МП). Бұл технологияның бастапқы түрі симметриялық көп өңдеу (SMP) ретінде белгілі , мұнда CPU аз саны өздерінің жад жүйесінің когерентті көрінісін бөліседі. Бұл схемада әрбір процессорда жадтың үнемі жаңартылған көрінісін сақтау үшін қосымша жабдық бар. Жадтың ескірген көріністерін болдырмай, процессорлар бір бағдарламада жұмыс істей алады және бағдарламалар бір процессордан екіншісіне ауыса алады. Бірыңғай емес жадқа қол жеткізу (NUMA) және каталогқа негізделген когеренттілік хаттамалары сияқты сызбалар 1990-шы жылдары бірнеше жұмыс істейтін процессорлардың санын көбейту үшін енгізілді. SMP жүйелері процессорлардың аз санымен шектелген, ал NUMA жүйелері мыңдаған процессорлармен жасалған. Бастапқыда мультипроцессинг процессорлар арасындағы өзара байланысты жүзеге асыру үшін бірнеше дискретті орталық процессорлар мен тақталарды қолдану арқылы құрастырылды. Процессорлар мен олардың өзара байланысы бір чипте жүзеге асырылса, технология чип деңгейіндегі көп өңдеу (CMP) және жалғыз чип көп ядролы процессор ретінде белгілі .

Бір ғана бағдарламамен параллелизм бар екені кейінірек танылды. Бір бағдарламада бөлек немесе параллель орындалатын бірнеше ағындар (немесе функциялар) болуы мүмкін. Бұл технологияның ең алғашқы мысалдарының кейбірі есептеу ағынынан бөлек ағын ретінде тікелей жадқа қол жеткізу сияқты енгізу/шығыс өңдеуді жүзеге асырды. Бұл технологияға неғұрлым жалпы көзқарас 1970 жылдары жүйелер бірнеше есептеу ағындарын параллель орындауға арналған кезде енгізілді. Бұл технология көп ағынды (MT) ретінде белгілі. Бұл тәсіл көп өңдеуге қарағанда үнемді болып саналады, өйткені МП жағдайындағы бүкіл орталық процессорға қарағанда МТ-ны қолдау үшін орталық процессордағы құрамдастардың аз ғана саны қайталанады. МТ-да орындау бірліктері мен жад жүйесі, соның ішінде кэштер бірнеше ағындар арасында ортақ пайдаланылады. МТ-ның кемшілігі - көп ағынды аппараттық қолдау MP-ге қарағанда бағдарламалық жасақтамаға көбірек көрінеді, сондықтан операциялық жүйелер сияқты супервайзер бағдарламалық жасақтамасы MT қолдауы үшін үлкен өзгерістерге ұшырауы керек. Орындалған МТ бір түрі уақытша көп ағынды ретінде белгілі , мұнда бір ағын деректердің сыртқы жадтан қайтарылуын күту тоқтатылғанға дейін орындалады. Бұл схемада процессор іске қосуға дайын басқа ағынға жылдам контекстке ауысады, қосқыш жиі UltraSPARC T1 сияқты бір CPU тактілік циклінде орындалады. МТ-ның тағы бір түрі - бір уақыттағы көп ағынды , мұнда бірнеше ағындардың нұсқаулары бір процессордың тактілік циклі ішінде параллель орындалады.

1970 жылдардан бастап 2000 жылдардың басына дейін бірнеше ондаған жылдар бойы жоғары өнімді жалпы мақсаттағы процессорларды жобалаудағы басты назар негізінен конвейер, кэштер, суперскалярлық орындау, ретсіз орындау және т. , Intel Pentium 4 сияқты қуатты қажет ететін процессорлар. 2000-шы жылдардың басында CPU дизайнерлері процессордың жұмыс жиіліктері мен негізгі жадтың жұмыс жиіліктері арасындағы диспропорцияның өсуіне, сондай-ақ эзотерикалық ILP әдістеріне байланысты процессордың қуатының диссипациясының күшеюіне байланысты ILP әдістерінен жоғары өнімділікке қол жеткізуге кедергі болды.

Содан кейін процессор дизайнерлері транзакцияларды өңдеу сияқты коммерциялық есептеу нарықтарынан идеяларды алды , мұнда өткізу қабілеттілігін есептеу деп те аталатын бірнеше бағдарламалардың жиынтық өнімділігі бір ағынның немесе процестің өнімділігінен маңыздырақ болды.

Бұл екпіннің өзгеруі екі және одан да көп ядролы процессор конструкцияларының көбеюімен дәлелденеді, атап айтқанда, Intel компаниясының оның аз суперскалярлы P6 архитектурасына ұқсайтын жаңа дизайндары. Бірнеше процессорлар отбасыларындағы соңғы конструкциялар CMP көрсетеді, соның ішінде x86-64 Opteron және Athlon 64 X2 , SPARC UltraSPARC T1 , IBM POWER4 және POWER5 , сондай-ақ Xbox 360 үш ядролы PowerPC дизайны сияқты бірнеше бейне ойын консолі процессорлары , және PlayStation 3 7 ядролы Cell микропроцессоры .

### Деректер параллелділігі

Процессорлардың (және шын мәнінде, жалпы есептеулер) азырақ таралған, бірақ барған сайын маңызды парадигмасы деректер параллелизмімен айналысады. Жоғарыда қарастырылған процессорлардың барлығы скалярлық құрылғының қандай да бір түрі деп аталады. Аты айтып тұрғандай, векторлық процессорлар бір нұсқау контекстінде бірнеше деректер бөліктерімен жұмыс істейді. Бұл әрбір нұсқау үшін деректердің бір бөлігімен жұмыс істейтін скалярлық процессорлардан айырмашылығы бар. Флинн таксономиясын қолдана отырып , деректермен жұмыс істеудің бұл екі схемасы әдетте сәйкесінше бір нұсқаулық ағыны, бірнеше деректер ағыны ( SIMD ) және бір нұсқаулық ағыны, бір деректер ағыны ( SISD ) деп аталады. Деректер векторларымен жұмыс істейтін процессорларды жасаудың үлкен утилитасы деректердің үлкен жиынында орындалуы бірдей әрекетті (мысалы, қосынды немесе нүктелік өнім ) талап ететін тапсырмаларды оңтайландыруда жатыр. Тапсырмалардың осы түрлерінің кейбір классикалық мысалдарына мультимедиялық қосымшалар (суреттер, бейне және дыбыс), сонымен қатар ғылыми және инженерлік тапсырмалардың көптеген түрлері жатады. Скалярлық процессор деректер жиынындағы әрбір нұсқау мен мәнді алудың, декодтаудың және орындаудың бүкіл процесін аяқтауы керек болса, векторлық процессор бір нұсқаумен салыстырмалы түрде үлкен деректер жиынында бір операцияны орындай алады. Бұл қолданба деректердің үлкен жинағына бір әрекетті қолданатын көптеген қадамдарды талап ететін кезде ғана мүмкін болады.

Cray-1 сияқты ерте векторлық процессорлардың көпшілігі тек ғылыми зерттеулермен және криптографиялық қолданбалармен байланысты болды. Дегенмен, мультимедиа негізінен сандық медиаға ауысқандықтан, жалпы мақсаттағы процессорларда SIMD-тің қандай да бір түріне қажеттілік маңызды болды. Жалпы мақсаттағы процессорларда қалқымалы нүктелерді қосқаннан кейін көп ұзамай жалпы мақсаттағы процессорлар үшін SIMD орындау бірліктерінің спецификациялары мен іске асырулары да пайда бола бастады. Осы ерте SIMD техникалық сипаттамаларының кейбірі – HP мультимедиялық жеделдету eXtensions (MAX) және Intel MMX – тек бүтін сандар болды. Бұл кейбір бағдарламалық жасақтаманы әзірлеушілер үшін айтарлықтай кедергі болды, өйткені SIMD-дан пайда көретін көптеген қосымшалар негізінен өзгермелі нүкте сандарымен айналысады. Прогрессивті түрде әзірлеушілер бұл ерте дизайндарды әдетте бір нұсқаулықтар жинағы архитектурасымен (ISA) байланыстырылатын кейбір жалпы заманауи SIMD спецификацияларына айналдырды және қайта жасады. Кейбір көрнекті заманауи мысалдарға Intel's Streaming SIMD Extensions (SSE) және PowerPC-ке қатысты AltiVec (VMX ретінде де белгілі) кіреді.

### Аппараттық құрал өнімділігін есептегіш

Көптеген заманауи архитектуралар (енгізілгендерін қоса) жиі төмен деңгейлі (нұсқаулық деңгей) жинауға, салыстыруға , жөндеуге немесе іске қосылған бағдарламалық құрал көрсеткіштерін талдауға мүмкіндік беретін аппараттық өнімділік есептегіштерін (HPC) қамтиды. HPC сонымен қатар қайтаруға бағытталған бағдарламалау (ROP) немесе сигналды бағдарлау (SROP) эксплойттері сияқты бағдарламалық құралдың әдеттен тыс немесе күдікті әрекетін табу және талдау үшін пайдаланылуы мүмкін. Бұл әдетте орындалады. зиянды екілік бағдарламаларды бағалау және табу үшін бағдарламалық қамтамасыз ету-қауіпсіздік топтары.

Көптеген ірі жеткізушілер ( IBM , Intel , AMD және Arm. Операциялық жүйе жеткізушілері ядролар мен қолданбаларды іске қосатын CPU оқиғаларын жазу, салыстыру немесе бақылауperf үшін (Linux) сияқты бағдарламалық құралды да қамтамасыз етеді.

Виртуалды процессорлар
----------------------

Бұлттық есептеулер орталық процессор жұмысын виртуалды орталық процессорларға ( vCPUs ) бөлуді қамтуы мүмкін.

Хост – бұл виртуалды жүйе жұмыс істейтін физикалық машинаның виртуалды баламасы. Тандемде жұмыс істейтін және тұтастай басқарылатын бірнеше физикалық машиналар болған кезде, топтастырылған есептеу және жад ресурстары кластерді құрайды. Кейбір жүйелерде кластерді динамикалық түрде қосуға және жоюға болады. Хост пен кластер деңгейінде қолжетімді ресурстарды ұсақ түйіршіктілігі бар ресурстар пулдарына бөлуге болады.

Өнімділік
---------

Процессордың өнімділігі немесе жылдамдығы көптеген басқа факторлармен қатар, сағат жиілігіне (әдетте герц еселіктерімен берілген ) және сағаттық нұсқауларға (IPC) байланысты, олар бірге секундына нұсқаулардың (IPS) факторлары болып табылады. CPU орындай алады. Көптеген хабарланған IPS мәндері бірнеше тармақтары бар жасанды нұсқаулар тізбегіндегі орындалу жылдамдығын көрсетті, ал нақты жұмыс жүктемелері нұсқаулар мен қолданбалардың қоспасынан тұрады, олардың кейбіреулері басқаларға қарағанда ұзағырақ орындалады. Жад иерархиясының өнімділігі процессордың өнімділігіне де қатты әсер етеді, бұл мәселе IPS есептеулерінде әрең қарастырылады. Осы мәселелерге байланысты жиі қолданылатын қолданбалардағы нақты тиімді өнімділікті өлшеуге әрекет жасау үшін осы мақсат үшін жиі «эталондар» деп аталатын әртүрлі стандартталған сынақтар – SPECint ‍ сияқты әзірленді.

Компьютерлердің өңдеу өнімділігі екі немесе одан да көп жеке процессорларды (осы мағынада ядролар деп аталады ) бір интегралды схемаға қосатын көп ядролы процессорларды пайдалану арқылы артады. Ең дұрысы, екі ядролы процессор бір ядролы процессордан екі есе дерлік қуатты болады. Тәжірибеде, бағдарламалық қамтамасыз ету алгоритмдері мен енгізудің жетілмегендігіне байланысты өнімділіктің артуы әлдеқайда аз, шамамен 50%. Процессордағы (яғни екі ядролы, төрт ядролы, т.б.) ядролар санын көбейту өңдеуге болатын жұмыс жүктемесін арттырады. Бұл процессордың көптеген асинхронды оқиғаларды, үзілістерді және т.б. жұмыс істей алатынын білдіреді, олар шамадан тыс жүктеме кезінде процессорға зиянын тигізуі мүмкін. Бұл өзектерді өңдеу зауытындағы әртүрлі қабаттар ретінде қарастыруға болады, әр қабат әртүрлі тапсырманы орындайды. Кейде ақпаратты өңдеу үшін бір ядро жеткіліксіз болса, бұл ядролар өздеріне жақын орналасқан ядролармен бірдей тапсырмаларды орындайды.

Заманауи процессорлардың, мысалы, бір уақытта көп ағынды және ядродан шығару сияқты, нақты процессорлық ресурстарды пайдалануды арттыру мақсатында ортақ пайдалануды көздейтін арнайы мүмкіндіктеріне байланысты өнімділік деңгейлерін бақылау және аппараттық құралдарды пайдалану бірте-бірте күрделірек міндетке айналды. Жауап ретінде кейбір орталық процессорлар орталық процессордың әртүрлі бөліктерінің нақты пайдаланылуын бақылайтын және бағдарламалық құралға қол жетімді әртүрлі есептегіштерді қамтамасыз ететін қосымша аппараттық логиканы жүзеге асырады; мысал ретінде Intel компаниясының Performance Counter Monitor технологиясын алуға болады.