Mis on korrast ära täitmine?

Arvutid on keerulised masinad, mille ükski osa pole keerukam kui protsessor. Põhiülevaate tasemel tundub, et protsessor peaks olema suhteliselt lihtne. See võtab käskude seeria, töötleb neid ja väljastab seejärel andmed. Sellel on vähe sarnasust tänapäevaste protsessorite tegeliku tööga.

Alam-skalaarist superskalaarini

Varased protsessorid olid täpselt sellised, nagu ootasite. Nad võtsid juhiseid individuaalselt, nende andmise järjekorras, töötlesid need lõpuni ja liikusid seejärel järgmise juhise juurde. Seda tüüpi CPU-d olid subskalaarsed ja suutsid täita vähem kui ühe käsu taktitsükli kohta. Protsessori kujundajad tuvastasid, et juhiste täitmisel oli palju erinevaid etappe. Kõik need etapid nõudsid erinevat riistvara. See tähendas, et kui käivitate ühe käsu korraga läbi kogu jada, jäid mõned riistvara osad jõude. Igasuguse protsessori puhul on jõudeolekus olev riistvara kasutu riistvara.

Selle jõudeoleku riistvara kasutamiseks värskendati protsessori konstruktsioone, et kasutada konveiermeetodit. See eraldas iga etapi riistvara veelgi, kuid võimaldas neid kõiki korraga kasutada mitmete juhiste abil. Kuigi iga käsu konveieri läbimiseks kulus veel paar tsüklit, oli üldine läbilaskevõime üks käsk tsükli kohta. See muutis protsessorid skalaarseks.

Et teha rohkem, tuli protsessorid superskalaarseks muuta. Selle saavutamiseks rakendati mitu paralleelset torujuhet.

Torude hoidmine andmetega toidetuna

Peamine arvuti jõudluse probleem on tavaliselt mälu latentsus. Paljud käsud töötavad andmetel ja nii peavad andmed käsu täitmiseks kättesaadavad olema. Küsimus on selles, mida teha, kui teil on vaja neid andmeid oodata, kuna need pole kohe saadaval? Traditsiooniliselt oli vastus lihtsalt seiskuda ja oodata, kuni see kättesaadavaks saab. See jätab kogu konveieri tühjaks, potentsiaalselt sadadeks CPU tsükliteks. Asi läheb veelgi hullemaks, kui kaks käsku paralleelsetes torujuhtmetes peavad mälu ootama, kuna esimene hoiab ära isegi teise andmete päringu. Kuigi protsessori vahemälu aitab seda probleemi lahendada, ei saa see seda siiski parandada. Selle lahendamiseks oli vaja uut paradigmat. See paradigma muutus oli Out Of Order Execution ehk OOO.

Konveieri esimene etapp on käsu dekodeerimine. See tähendab, et tuleb välja töötada, mida on vaja teha, ja kontrollida, kas toiminguks vajalikud andmed on saadaval. OOO CPU-s lisatakse dekodeeritud juhised järjekorda. Need eemaldatakse järjekorrast ja neid töödeldakse alles siis, kui vajalikud andmed on saadaval. Kriitiliselt pole vahet, mis järjekorras juhised järjekorda lisati. Kui varajane käsk ootab andmeid, võib värskem käsk vahele jätta, kui see on kasutamiseks valmis. OOO protsessorid saavad ümber järjestada käske, mida nad peaksid töötlema, lähtudes tulevaste juhiste järjekorrast ja sellest, millised neist on täitmiseks valmis.

Kriitilised sõltuvused

See protsess eeldab kahte asja. Esiteks, et tõelisi sõltuvusi on võimalik usaldusväärselt tuvastada ja nendega toime tulla. Teiseks saate usaldusväärselt käsitleda ja tuvastada valesid sõltuvusi. Mis vahe on? Tõeline sõltuvus on sõltuvus, mida OOO-süsteemis ei saa üldse leevendada. Lihtsaim näide on lugemine-pärast-kirjutamine. Kui teil on üks käsk, mis peaks andmeid kirjutama, ja teine, mis peaks neid andmeid seejärel lugema, ei saa neid juhiseid ümber järjestada. Need tuleb täita esitamise järjekorras, vastasel juhul saate jaburaid andmeid.

Valesõltuvus on see, mida saab mõne muu nutika nipiga varjata. Võtame näiteks kirjutamise-pärast-lugemise. Esmapilgul võite arvata, et te ei saa andmeid üle kirjutada enne, kui olete need läbi lugenud. Asjad pole siiski nii lihtsad. Mis siis, kui teil on mõni muu koht, kus saate uusi andmeid kirjutada, ja siis saate lihtsalt uued ja vanad andmed vahetada, kui vanad andmed on loetud? See on registri ümbernimetamise protsess ja see on OOO töötlemise jaoks ülioluline.

Tavaliselt määrab käsukomplekt teatud arvu arhitektuuriregistreid, mida süsteemis kasutatakse. Sa ei saa sõna otseses mõttes teiste poole pöörduda. Aga mis siis, kui teete ülevarude registreid? Saate need enamasti peita, kasutada neid andmete salvestamiseks, mida poleks tohtinud veel töödelda, ja seejärel lihtsalt peidetud ja arhitektuursete registrite sildid vahetada, kui ajaskaala on jälle õige. Arhitektuurseid registreid on igal ajal täpselt õige kogus, kuid need ei pruugi alati olla samas kohas. Pärismaailma analoogia oleks hot-desking.

Järeldus

Tellimusest väljas täitmine on töötlemise paradigma, kus protsessor saab käske täitmise ajal dünaamiliselt ümber järjestada. Seda tehakse kõige varem välja antud juhiste alusel, mille andmed on kättesaadavad. See tähendab, et konveierisse laaditavad käsud on alati täitmiseks valmis ja andmete ootamisel ei teki viivitusi. Muidugi on vaja piisavalt pikka järjekorda, et see ei täituks andmeid ootavate juhistega, kuid see on rakendamise väljakutse. OOO täitmine tugineb valede sõltuvuste peitmiseks registri ümbernimetamisel. Isegi kui neid käske tegelikult ei täideta, nimetatakse registrid ümber selliselt, et varjata seda fakti ülejäänud arvuti eest.


Mis on SMPS?

Mis on SMPS?

Enne oma arvutile SMPS-i valimist uurige, mis on SMPS ja mida tähendab erinevate tõhususe reiting.

Mis on isolatsioonipõhine turvalisus?

Mis on isolatsioonipõhine turvalisus?

Kavatsesin süveneda teemasse, mis muutub küberturvalisuse maailmas üha olulisemaks: isolatsioonipõhine turvalisus. See lähenemine

Kuidas kasutada automaatset klikkerit Chromebooki jaoks

Kuidas kasutada automaatset klikkerit Chromebooki jaoks

Täna kavatsesime süveneda tööriista, mis suudab teie Chromebookis korduvaid klõpsamisi automatiseerida: automaatset klõpsurit. See tööriist võib säästa teie aega ja

Roomba peatub, jääb kinni ja pöörab ümber – paranda

Roomba peatub, jääb kinni ja pöörab ümber – paranda

Lahendage probleem, kus teie Roomba robottolmuimeja peatub, kinni jääb ja pöörleb pidevalt ümber.

Miks minu Chromebook ei lülitu sisse?

Miks minu Chromebook ei lülitu sisse?

Hankige vastused küsimusele, miks minu Chromebook ei lülitu sisse? Selles kasulikus juhendis Chromebooki kasutajatele.

Kuidas muuta Steam Decki graafikaseadeid

Kuidas muuta Steam Decki graafikaseadeid

Steam Deck pakub jõulist ja mitmekülgset mängukogemust otse teie käeulatuses. Kuid selleks, et optimeerida oma mängimist ja tagada parim võimalik

Kuidas muuta Fitbit Versa 4 kella numbrit

Kuidas muuta Fitbit Versa 4 kella numbrit

Muutke oma Fitbit Versa 4 kella sihverplaati, et anda oma kellale iga päev tasuta uus välimus. Vaadake, kui kiire ja lihtne see on.

Kuidas Googleile andmepüügipettustest teatada

Kuidas Googleile andmepüügipettustest teatada

Sellest juhendist leiate teavet selle kohta, kuidas petturist Google'ile teatada, et vältida teiste petmist.

Kuidas eemaldada GPU Windowsi arvutist 2023. aastal

Kuidas eemaldada GPU Windowsi arvutist 2023. aastal

Kas peate GPU arvutist eemaldama? Liituge minuga ja selgitan selles samm-sammulises juhendis, kuidas GPU arvutist eemaldada.

Mis on õlasurf?

Mis on õlasurf?

Õlas surfamine on sotsiaalse manipuleerimise rünnak. See hõlmab ründajat, kes kogub teavet teie ekraani vaadates.