Kas yra Registras?

Jei nesate ypač suinteresuoti kompiuteriais, jums būtų atleista manyti, kad vienintelės atminties formos kompiuteryje buvo kietasis diskas ir RAM. Tie iš jūsų, kurie domisi kompiuteriais, tikriausiai žinos, kad taip nėra ir kad CPU taip pat turi talpyklų rinkinį, kuris naudojamas duomenims iš RAM kaupti talpykloje, kad procesorius galėtų juos pasiekti. greičiau. Visos šios funkcijos yra reklamuojamos, visų pirma todėl, kad greitis ir (arba) talpa yra tinkamas pardavimo taškas ir paprastai turi įtakos našumo lygiui.

Tačiau iš tikrųjų yra dar vienas atminties sluoksnis. Kad ir kaip manote, kad L1 talpykla yra kuo arčiau tikrojo apdorojimo branduolio, atminties hierarchijoje yra dar vienas aukštesnis sluoksnis. Tai yra procesoriaus registrai. Priežastis, dėl kurios jie tikrai nėra reklamuojami ar minimi, yra ta, kad jie iš tikrųjų nėra pakeisti. Techniškai jie gali būti, tačiau registrų skaičius ir dydis iš tikrųjų yra esminis architektūros pagrindas. Tai reiškia, kad visi x86-64 CPU turi vienodą registrų skaičių. Jie nėra parduodami, nes jie nėra konkuruojantis taškas.

Ką daro registras?

Registras yra greitai pasiekiama procesoriaus saugojimo vieta. Prieiga prie registro yra nedelsiant pasiekiama be nulinės delsos, o net L1 talpyklos delsa šiuolaikiniuose procesoriuose yra maždaug 4–5 ciklai. Ši tiesioginė prieiga rodo registrų naudojimo atvejį. Registrai naudojami CPU aktyviai valdomoms instrukcijoms saugoti. Jie taip pat saugo duomenų taškus, kurie turi būti apdoroti. Kai kurie registrai yra bendros paskirties, o kiti turi labai specifinę paskirtį. Specialiosios paskirties registro pavyzdys būtų programų skaitiklis, kuriame procesorius seka savo padėtį savo programų sekoje.

Daugelis registrų laikomi prieinamais naudotojams. Tačiau tai nereiškia, kad kompiuterio vartotojas gali pasirinkti, kokią vertę jiems suteikti. Tai reiškia, kad veikianti programinė įranga gali nurodyti duomenis, kuriuos reikia įkelti į šiuos registrus. Mažesnis registrų skaičius yra vidinis, o tai reiškia, kad programinė įranga negali jų išspręsti. Instrukcijų registras, kuriame saugoma šiuo metu vykdoma komanda, yra vidinio registro pavyzdys.

Registro pervadinimas

Nors procesoriaus architektūra gali leisti naudoti tik vieną registrų konfigūraciją, iš tikrųjų tai turi šiek tiek niuansų. Visi šiuolaikiniai procesoriai naudoja registrų pervadinimą. Tai metodas, kai galite turėti daugiau fizinių registrų ir naudoti juos duomenims iš anksto įkelti arba saugoti duomenis, susijusius su netvarkinga instrukcija, kuri kitu atveju būtų buvusi perrašyta. Kai procesorius pasiekia tašką, kad jam reikia papildomų registrų duomenų, jis tiesiog pervadina juos taip, kad būtų galima adresuoti, tuo pačiu padarydamas anksčiau adresuotą registrą neadresuojamą.

Registro pervadinimo procesas gali būti labai naudingas vykdant netvarkingą. Pavyzdžiui, jei atminties vieta yra užprogramuota taip, kad būtų skaitoma nuo tada iki jos įrašymo, o instrukcijos buvo vykdomos tokia tvarka, tai gerai. Tačiau jei instrukcijos yra pertvarkytos taip, kad pirmiausia būtų atliktas rašymas, skaitymo instrukcijos reikšmė būtų neteisinga. Siekiant to išvengti, pradinė nuskaitytina reikšmė išsaugoma nenaudojamame registre, kuris vėliau pervadinamas, kai apdorojama atitinkama instrukcija.

Išvada

Registrai yra aukščiausia atminties hierarchijos pakopa. Jie yra vienintelė dalis, kurią CPU tiesiogiai adresuoja ir neturi delsos. Registrai naudojami CPU aktyviai vykdomiems duomenims saugoti. Jie taip pat naudojami saugoti kitus duomenų taškus, pvz., programos skaitiklį, kuris seka, kuri instrukcija bus toliau vykdoma. Galimas labai ribotas registrų skaičius x86-64 architektūroje, turinčioje 16 bendrosios paskirties registrų ir 16 arba 32 slankiojo kablelio registrus, priklausomai nuo to, ar palaikomas AVX-512.