Mis on juhiste torustik?

click fraud protection

Iga protsessori käsul on mitu etappi. Kõigi nende etappide läbimiseks kulub üks protsessoritsükkel. Need etapid on juhiste toomine, juhiste dekodeerimine, käivitamine, juurdepääs mälule ja tagasikirjutamine. Vastavalt saavad need juhised, mis tuleb täita, eraldavad operatsiooni kasutatavatest väärtustest sisse, käivitage protsess, avage register, kuhu tulemus kirjutatakse, ja kirjutage tulemus avatavasse Registreeri.

Ajaloolised järjekorras töötlejad

Varasemates arvutites ei kasutanud protsessor käsukonveieri. Nendes CPU-des pidi iga käsu puhul toimuma iga ühetsükliline toiming. See tähendas, et keskmise käsu täielikuks töötlemiseks kulus viis taktitsüklit, enne kui järgmise käivitati. Mõne toimingu puhul ei pruugi olla vaja tulemust registrisse kirjutada, mis tähendab, et mälule juurdepääsu ja tagasikirjutamise etapid saab vahele jätta.

Konveierita subskalaarses protsessoris täidetakse iga käsu iga osa järjekorras.

Siiski varitseb probleem täieliku juhise käivitamisel enne järgmise juhise juurde liikumist. Probleemiks on vahemälu puudujääk. CPU salvestab andmed, mida ta aktiivselt töötleb, registris. Sellele pääseb juurde ühe tsükli latentsusajaga. Probleem on selles, et register on väike, kuna see on protsessori tuuma sisse ehitatud. Kui andmeid pole veel laaditud, peab protsessor minema suurema, kuid aeglasema L1 vahemällu. Kui seda seal pole, peab see uuesti minema suurema ja aeglasema L2 vahemällu. Järgmine samm on L3 vahemälu; viimane võimalus on süsteemi RAM. Kõikide nende valikute kontrollimiseks kulub üha rohkem protsessoritsükleid.

Nüüd võib see täiendav latentsus olla suureks probleemiks süsteemis, mis peab enne järgmise käsu käivitamist iga käsu täielikult täitma. See protsessor, mis oli 5-tsükliline käsu kohta, võib ootamatult kümnete või sadade kellatsüklite jooksul ühe käsu peale rippuda. Kogu selle aja jooksul ei saa arvutis midagi muud juhtuda. Tehniliselt saab seda mõnevõrra leevendada kahe sõltumatu tuuma olemasoluga. Miski aga ei takista neil mõlemal teha sama asja, potentsiaalselt samaaegselt. Nii et mitmetuumalise marsruudi järgimine seda ei lahenda.

Klassikaline RISC torujuhe

RISC tähistab lühendatud juhiste komplekti arvutit. See on protsessori disaini stiil, mis optimeerib jõudlust, muutes iga juhise dekodeerimise lihtsamaks. See on võrreldes CISC- või Complex Instruction Set Computeriga, mis loob keerukamad käsukomplektid, mis võimaldavad samade ülesannete täitmiseks vajada vähem juhiseid.

Klassikaline RISC disain sisaldab juhiste torustikku. Selle asemel, et käivitada mis tahes tsüklis viiest juhistetapist, võimaldab konveier sooritada kõiki viit etappi. Loomulikult ei saa ühe juhise kõiki viit etappi tsüklis käivitada. Kuid saate järjekorda panna viis järjestikust käsku, millest igaüks on ühe astme nihkega. Nii saab iga kella tsükliga uue käsu täita. Pakkudes potentsiaalset 5-kordset jõudluse kasvu, mis suurendab tuuma keerukust suhteliselt vähe.

Skalaarses konveierprotsessoris saab käskude täitmise iga etappi sooritada üks kord taktitsükli jooksul. See võimaldab ühe täidetud käsu maksimaalset läbilaskevõimet tsükli kohta.

Protsessorid, millel pole konveierit, võivad alati olla ainult alamskalaarsed, kuna nad ei suuda täita ühte täielikku käsku tsükli kohta. Selle esmase viieastmelise konveieri abil saate luua skalaarse CPU, mis suudab täita iga protsessi jaoks juhiseid. Luues veelgi kaugemale ulatuvaid torujuhtmeid, saate luua superskalaarseid protsessoreid, mis suudavad täita rohkem kui ühte käsku ühe taktitsükli kohta. Muidugi on veel potentsiaalseid probleeme.

Ikka järjestikune

Ükski neist ei lahenda probleemi, mis seisneb vastuse ootamises mitu tsüklit, kui on vaja teha päringuid vahemälu ja RAM-i erinevate tasemete kohta. See toob kaasa ka uue probleemi. Mis siis, kui üks käsk tugineb eelmise käsu väljundile? Need probleemid lahendatakse iseseisvalt täiustatud dispetšeri abil. See kavandab hoolikalt täitmise järjekorra, et ükski käsk, mis tugineb teise väljundile, ei oleks üksteisele liiga lähedal. Samuti käsitleb see vahemälu vahelejäämisi, parkides juhise ja asendades selle muuga juhised, mis on käivitamiseks valmis ja ei nõua selle tulemust, jätkates juhiseid, kui see on käes valmis.

Need lahendused võivad töötada ka ühendamata protsessoritel, kuid need on vajalikud superskalaarse protsessori jaoks, mis töötab rohkem kui ühe käsu kohta. Haru ennustaja on samuti väga kasulik, kuna see võib proovida ennustada rohkem kui ühe võimaliku tulemusega juhise tulemust ja jätkata eeldust, et see on õige, kui pole tõestatud vastupidist.

Järeldus

Konveier võimaldab kasutada protsessori kõiki erinevaid võimalusi igas tsüklis. See teeb seda, käivitades samaaegselt erinevate juhiste eri etappe. See ei muuda protsessori disainile isegi palju keerukust. Samuti sillutab see teed, et lubada rohkem kui ühe juhise sooritamiseks ühte etappi tsükli kohta.