Kas yra netvarkingas vykdymas?

Kompiuteriai yra sudėtingi įrenginiai, kurių dalis nėra sudėtingesnė už centrinį procesorių. Atrodo, kad pagrindinės apžvalgos lygiu CPU turėtų būti gana paprastas. Ji paima eilę komandų, jas apdoroja ir išveda duomenis. Tačiau tai mažai panašu į faktinį šiuolaikinių procesorių veikimą.

Subskaliarinis iki superskaliarinis

Ankstyvieji procesoriai buvo tokie, kokių tikėjotės. Jie priimdavo instrukcijas individualiai tokia tvarka, kokia jiems buvo duotos, iki galo apdorojo, tada pereidavo prie kito nurodymo. Šio tipo procesoriai buvo subskaliariniai, galintys atlikti mažiau nei vieną komandą per laikrodžio ciklą. CPU dizaineriai nustatė, kad buvo daug skirtingų instrukcijų vykdymo etapų. Kiekvienam iš šių etapų reikėjo skirtingos aparatūros. Tai reiškė, kad vykdant vieną komandą per visą seką vienu metu, kai kurios aparatinės įrangos dalys neveikė. Bet kokio tipo procesoriuose neveikianti aparatinė įranga yra nenaudinga.

Norint panaudoti šią neveikiančią aparatinę įrangą, procesoriaus dizainas buvo atnaujintas, kad būtų naudojamas konvejerinis metodas. Tai dar labiau atskyrė kiekvieno etapo aparatinę įrangą, tačiau leido jas visas naudoti vienu metu, naudojant daugybę instrukcijų. Nors vis tiek prireikė kelių ciklų, kad kiekviena instrukcija būtų atlikta per dujotiekį, bendras pralaidumas buvo viena instrukcija per ciklą. Dėl to CPU tapo skaliarinis.

Kad būtų galima nuveikti daugiau, procesorius reikėjo padaryti superskalariniais. Norėdami tai pasiekti, buvo įdiegti keli lygiagrečiai vamzdynai.

Dujotiekių aprūpinimas duomenimis

Pagrindinė kompiuterių veikimo problema paprastai yra atminties delsa. Daugelis instrukcijų veikia su duomenimis, todėl norint vykdyti komandą, duomenys turi būti prieinami. Kyla klausimas, ką daryti, jei reikia laukti tų duomenų, nes jie nėra iš karto pasiekiami? Tradiciškai atsakymas buvo tiesiog sustabdyti ir laukti, kol jis bus prieinamas. Taip visas dujotiekis lieka tuščias, galbūt šimtams procesoriaus ciklų. Viskas dar blogiau, kai dviem instrukcijoms lygiagrečiuose konvejeriuose reikia palaukti atminties, nes pirmoji sulaikys net antrojo duomenų užklausą. Nors procesoriaus talpyklos atmintis gali padėti išspręsti šią problemą, ji vis tiek negali jos išspręsti. Jai išspręsti reikėjo naujos paradigmos. Tas paradigmos pokytis buvo Out Of Order Execution arba OOO.

Pirmasis dujotiekio etapas yra instrukcijos iššifravimas. Tai reiškia, kad reikia išsiaiškinti, ką reikia padaryti, ir patikrinti, ar yra operacijai reikalingi duomenys. OOO procesoriuje dekoduotos instrukcijos įtraukiamos į eilę. Jie pašalinami iš eilės ir faktiškai apdorojami tik tada, kai pasiekiami jiems reikalingi duomenys. Kritiškai nesvarbu, kokia tvarka instrukcijos buvo įtrauktos į eilę. Jei išankstinė instrukcija laukia duomenų, naujesnė instrukcija gali būti praleista, jei ji paruošta. OOO procesoriai gali pertvarkyti instrukcijas, kurias jie turėtų apdoroti, atsižvelgdami į būsimų instrukcijų eilę ir tai, kurios iš jų yra paruoštos vykdyti.

Kritinės priklausomybės

Šis procesas apima du dalykus. Visų pirma, kad galima patikimai nustatyti ir valdyti tikrąsias priklausomybes. Antra, galite patikimai valdyti ir nustatyti klaidingas priklausomybes. Koks skirtumas? Na, tikroji priklausomybė yra priklausomybė, kurios OOO sistemoje niekaip negalima sumažinti. Lengviausias pavyzdys yra skaitymas po rašymo. Jei turite vieną instrukciją, kuri turėtų įrašyti kai kuriuos duomenis, o kitą, kuri turėtų tuos duomenis nuskaityti, tų instrukcijų niekaip nepavyks pertvarkyti. Jie turi būti užpildyti tokia tvarka, kokia jie buvo pateikti, kitaip gausite nesąmonių duomenų.

Klaidinga priklausomybė yra ta, kurią galima paslėpti naudojant kitą protingą triuką. Paimkime rašymo po skaitymo pavyzdį. Iš pirmo žvilgsnio galite pamanyti, kad negalite perrašyti duomenų, kol neperskaitysite. Tačiau viskas nėra taip paprasta. Ką daryti, jei turite kitą vietą, kurioje galite įrašyti naujus duomenis, o tada galite tiesiog sukeisti naujus ir senus duomenis, kai tik bus nuskaityti seni duomenys? Tai yra registro pervadinimo procesas ir jis yra labai svarbus OOO apdorojimui.

Paprastai komandų rinkinys apibrėžia sistemoje naudojamų architektūrinių registrų skaičių. Jūs tiesiogine prasme negalite kreiptis į kitus. Bet ką daryti, jei registruojate perteklinį aprūpinimą? Galite tiesiog paslėpti juos didžiąja dalimi, naudoti juos duomenims, kurie dar neturėjo būti apdoroti, saugoti, o tada tiesiog sukeisti paslėptų ir architektūrinių registrų etiketes, kai laiko juosta vėl bus teisinga. Bet kuriuo metu yra tiksliai reikiamas architektūrinių registrų skaičius, tik jie nebūtinai visada yra toje pačioje vietoje. Realaus pasaulio analogija būtų karštas stalas.

Išvada

Vykdymas ne pagal užsakymą yra apdorojimo paradigma, kai CPU vykdymo metu gali dinamiškai pertvarkyti instrukcijas. Tai daroma remiantis anksčiausiai išleistomis instrukcijomis, turinčiomis turimų duomenų. Tai reiškia, kad į dujotiekį įkeliamos instrukcijos visada yra paruoštos vykdyti ir laukiant duomenų nėra vėlavimų. Žinoma, reikia turėti pakankamai ilgą eilę, kad ji nebūtų užpildyta instrukcijomis, laukiančiomis duomenų, tačiau tai yra įgyvendinimo iššūkis. OOO vykdymas priklauso nuo registro pervadinimo, kad būtų paslėptos klaidingos priklausomybės. Net jei šios instrukcijos iš tikrųjų vykdomos netvarkingai, registrai pervadinami taip, kad šis faktas būtų paslėptas nuo likusio kompiuterio.


Leave a Comment

Kaip prijungti Windows 11 nešiojamąjį kompiuterį prie projekcinio ekrano/TV

Kaip prijungti Windows 11 nešiojamąjį kompiuterį prie projekcinio ekrano/TV

Perskaitykite šį straipsnį, kad sužinotumėte paprastą žingsnis po žingsnio procesą, kaip prijungti nešiojamąjį kompiuterį prie projekcinio ekrano ar TV naudojant Windows 11 ir Windows 10 operacines sistemas.

Kaip rasti spausdintuvo IP adresą

Kaip rasti spausdintuvo IP adresą

Ar sunku sužinoti, koks IP adresas naudojamas jūsų spausdintuvui? Mes parodysime, kaip tai padaryti.

3D Spausdinimo Pagrindai: Priežiūros Patarimai Jūsų 3D Spaudikliui

3D Spausdinimo Pagrindai: Priežiūros Patarimai Jūsų 3D Spaudikliui

Teisinga 3D spausdintuvų priežiūra yra labai svarbi, norint gauti geriausius rezultatus. Čia pateikiami keli svarbūs patarimai, kuriuos reikėtų atsiminti.

5 Priežastys, Kodėl Jūsų Nešiojamas Kompiuteris Perkaista

5 Priežastys, Kodėl Jūsų Nešiojamas Kompiuteris Perkaista

Sužinokite apie kai kurias galimas jūsų nešiojamojo kompiuterio perkaitimo priežastis, kartu su patarimais ir gudrybėmis, kaip išvengti šios problemos ir išlaikyti savo įrenginį šaltą.

3D Spausdinimo Pagrindai: Būtinas Priežiūros Patikrinimo Sąrašas

3D Spausdinimo Pagrindai: Būtinas Priežiūros Patikrinimo Sąrašas

Laikyti įrangą geros būklės yra būtina. Štai keletas naudingų patarimų, kaip išlaikyti savo 3D spausdintuvą puikios būklės.

Ką daryti, jei Powerbeats Pro neįsikrauna dėkle

Ką daryti, jei Powerbeats Pro neįsikrauna dėkle

Jei jūsų Powerbeats Pro neįsikrauna, naudokite kitą maitinimo šaltinį ir išvalykite ausines. Palikite dėklą atvirą, kol įkraunate ausines.

10 Geriausių NAS Saugojimo Įrenginių Namo ir Profesiniam Naudojimui

10 Geriausių NAS Saugojimo Įrenginių Namo ir Profesiniam Naudojimui

Ar ieškote NAS namuose ar biure, patikrinkite šį geriausių NAS saugojimo įrenginių sąrašą.

Canon Pixma MG5220: Nuskaitykite be rašalo

Canon Pixma MG5220: Nuskaitykite be rašalo

Kaip įgalinti nuskaitymą Canon Pixma MG5220, kai trūksta rašalo.

Kaip įdiegti SSD staliniuose ir nešiojamuose kompiuteriuose

Kaip įdiegti SSD staliniuose ir nešiojamuose kompiuteriuose

Ar ką tik įsigijote SSD ir norite atnaujinti vidinę savo kompiuterio atmintį, bet nežinote, kaip įdiegti SSD? Perskaitykite šį straipsnį dabar!

Kaip ištaisyti GeForce Now klaidos kodą 0xC272008F

Kaip ištaisyti GeForce Now klaidos kodą 0xC272008F

Jūs ruošiatės ilgam žaidimų vakarui, ir tai bus didelis vakaras – ką tik įsigijote "Star Wars Outlaws" GeForce Now transliacijų paslaugoje. Sužinokite vienintelį žinomą sprendimą, kaip ištaisyti GeForce Now klaidos kodą 0xC272008F, kad galėtumėte vėl pradėti žaisti Ubisoft žaidimus.