Кіріспе

CPU-ны оңтайландыру бөлімі

Бағдарламалық жадтан нұсқаулық опкодтарды орындауға қажеттіліктен бұрын алып қою алдын ала жүктеу деп аталады, және ол алдын ала жүктеу кіріс тізбегін (PIQ) пайдалану арқылы жүзеге асырылады. Алдын ала жүктелген нұсқаулар тізбекке сақталады. Опкодтарды орындау қажеттілігінен бұрын алып қою процессордың жалпы тиімділігін арттырып, оның жылдамдығын жоғарылатады. Процессор енді келесі нұсқаулық опкодты алу үшін жадқа қол жеткізу операцияларының аяқталуын күтуге қажеттілігі жоқ. Бұл архитектура Intel 8086 микропроцессорында кеңінен қолданылған.

Кіріспе

Құбырлау (Pipelining) жылдам және тиімді есептеу қажеттілігінен туындап, 1960-шы жылдары есептеу архитектурасының жобалауында маңызды рөл атқара бастады. Құбырлау – бұл кең ұғым, және қазіргі заманғы процессорлар нұсқауларын орындамас бұрын бірнеше тактылік циклдар алдын ала жүктейді. Бұл, жадтан машиналық кодты алдын ала жүктеу арқылы, алдын ала енгізу кезегіне (prefetch input queue - PIQ) орналастыру арқылы іске асырылады. Бұл әрекет тек фон Нейман архитектурасындағы (Гарвард архитектурасы емес) компьютерлерге қатысты, олар өздігінен өзгеретін кодты орындай алады және қандай да бір құбырлау жүйесіне ие. Көбінесе, қазіргі заманғы жоғары өнімділіктегі компьютерлер осы үш талапты қанағаттандырады. Әдетте, PIQ-тің алдын ала жүктеуі CPU-ның бағдарламалау моделінен жасырылған. Дегенмен, PIQ-тің мінез-құлқы бағдарламашыға көрінетін және ескеруді қажет ететін жағдайлар бар. Мысалы, x86 процессоры нақты режимнен қорғалған режимге немесе керісінше аусқанда, PIQ-ты тазалау қажет, әйтпесе процессор машиналық кодты соңғы режимде жазылғандай түсіндіре береді. Егер PIQ тазаланбаса, процессор кодты дұрыс аудармауы және жарамсыз нұсқау қатесін тудыруы мүмкін. Өздігінен өзгеретін кодты орындау кезінде, процессордың ағымдағы орындалу орнының алдындағы кодтың өзгеруі процессордың кодты түсіндіруіне әсер етпеуі мүмкін, себебі ол PIQ-қа бұрыннан жүктелген. Ол жаңа және өзгертілген нұсқаудың орнына, RAM және/немесе кэште сақталған ескі нұсқауын орындайды. PIQ-тің осы ерекшелігі кодтың эмуляторда орындалып жатыр ма, әлде нақты CPU-дың аппараттық құралында ма, екенін анықтау үшін пайдаланылуы мүмкін. Көптеген эмуляторлар мұндай мінез-құлықты симуляцияламайды. Егер PIQ-тің көлемі нөлге тең болса (кодтағы өзгерістер процессордың күйіне дереу әсер етеді), онда код эмуляторда орындалуда немесе процессор PIQ-қа жүктелген адрестерге жазу кезінде PIQ-ты жарамсыз деп таниды деген қорытынды жасауға болады.

Тапсырмалар кезегі

Процессор бағдарламаны жадтан нұсқауларды алып, оларды орындау арқылы іске асырады. Әдетте процессордың орындау жылдамдығы жадқа қол жеткізу жылдамдығынан әлдеқайда жоғары болады. Нұсқаулар кезегі процессор ағымдағы нұсқауды орындап жатқанда, келесі нұсқауларды жеке буферде алдын ала алу үшін қолданылады. Төрт сатылы құбырлы жүйеде нұсқаулардың орындалу жылдамдығы тізбекті орындалудан төрт есеге дейін артуы мүмкін. Процессордың әдетте нұсқауларды алу және орындау үшін екі бөлек бөлімі болады. Құбырлы жүйе архитектурасын іске асыру автобус интерфейсі бөлімі мен орындау бөлімі тәуелсіз болған жағдайда ғана мүмкін. Орындау бөлімі деректер мен адрес шиналарын пайдалануды қажет етпейтін нұсқауды декодтау немесе орындау кезінде, автобус интерфейсі бөлімі жадтан нұсқау опкодтарын алады. Бұл процесс адресті жіберуден, опкодты оқудан, содан кейін декодтаудан және орындаудан әлдеқайда жылдам. Ағымдағы нұсқау декодталған немесе орындалған кезде келесі нұсқауды алу құбырлы жүйе деп аталады. 8086 процессорында алты байттық алдын ала алу нұсқаулар құбыры бар, ал 8088-де төрт байттық алдын ала алу бар. Орындау бөлімі ағымдағы нұсқауды орындағанда, автобус интерфейсі бөлімі жадтан алты (немесе төрт) байтқа дейін опкодты алдын ала оқиды. Кезек ұзындығы модельдеу зерттеулерінің нәтижесінде таңдалды. Орындау бөлімі тармақталу нұсқауын, яғни секіру немесе шақыру нұсқауын кездестіргенде қателік туындайды. Бұл жағдайда, бүкіл кезек жойылып, нұсқау көрсеткіші көрсеткен мазмұн жадтан алынуы керек.

Кемшіліктері

Инструкция кезегін алдын ала жүктеу алгоритмін қолданатын процессорлар техникалық тұрғыдан өте жетілген. Мұндай процессорлардың CPU жобалау деңгейінің күрделілігі, қарапайым процессорларға қарағанда әлдеқайда жоғары. Бұл, ең алдымен, екі жеке блокты – ББЖ (Бұйрық беру блогы) мен ЕО (Есептеу блогын) жеке-жеке іске асыру қажеттілігіне байланысты. Бұл чиптердің күрделілігі артаған сайын, олардың құны да артады. Бұл процессорлар алдын ала жүктеу кезегі жоқ аналогтарына қарағанда салыстырмалы түрде қымбат. Дегенмен, бұл кемшіліктер процессордың жұмыс істеу уақытының жақсаруымен толық өтемеленеді. 8086 процессорында алдын ала жүктеу нұсқаулар кезегі енгізілгеннен кейін, барлық келесі процессорлар осы мүмкіндікті қолдана бастады.