Što je registar?

click fraud protection

Ako niste osobito zainteresirani za računala, oprostit će vam se ako pretpostavite da su jedini oblici memorije u računalu tvrdi disk i RAM. Oni od vas koje zanimaju računala vjerojatno bi znali da to nije slučaj i da CPU također ima skup predmemorija koje se koriste za spremanje podataka iz RAM-a kako bi im CPU mogao pristupiti brže. Sve su to reklamirane značajke, prvenstveno zato što su brzina i/ili kapacitet pristojna prodajna točka i općenito utječu na razine performansi.

No zapravo postoji još jedan sloj sjećanja. Koliko god mislili da je L1 predmemorija što je moguće bliža stvarnoj procesorskoj jezgri, postoji još jedan viši sloj u hijerarhiji memorije. Ovo su CPU registri. Razlog zašto se oni stvarno ne reklamiraju ili spominju je taj što se zapravo uopće ne mijenjaju. Tehnički, mogli bi biti, međutim, broj i veličina registara zapravo su temeljni za arhitekturu. To znači da svi x86-64 CPU-i imaju isti broj registara. Ne reklamiraju se jer nisu konkurentska točka.

Što registar radi?

Registar je brzo dostupno mjesto za pohranu procesora. Pristup registru je trenutačan s nultom latencijom, dok čak i L1 predmemorija ima otprilike 4-5 ciklusa latencije u modernim procesorima. Ova neposrednost pristupa ukazuje na slučaj korištenja registara. Registri se koriste za pohranu instrukcija kojima CPU aktivno upravlja. Oni također pohranjuju podatkovne točke koje treba obraditi. Neki registri su opće namjene, dok drugi imaju vrlo specifičnu namjenu. Primjer registra posebne namjene bio bi programski brojač gdje procesor prati svoju poziciju u svom programskom nizu.

Mnogi se registri smatraju dostupnima korisnicima. To ipak ne znači da korisnik računala može odabrati koju će vrijednost staviti u njih. To znači da pokrenuti softver može specificirati podatke koji se učitavaju u te registre. Manji broj registara je interni, što znači da ih softver uopće ne može adresirati. Registar instrukcija, koji pohranjuje instrukcije koje se trenutno izvode, primjer je internog registra.

Preimenovanje registra

Iako CPU arhitektura može dopustiti samo jednu konfiguraciju registara, zapravo postoji malo nijanse u tome. Svi moderni procesori koriste preimenovanje registara. Ovo je tehnika u kojoj možete imati više fizičkih registara i koristiti ih za prethodno učitavanje podataka ili pohranjivanje podataka koji se odnose na instrukcije izvan reda koje bi inače bile prepisane. Kada CPU dođe do točke da treba podatke u dodatnim registrima, jednostavno ih preimenuje tako da se mogu adresirati, u isto vrijeme kad registar koji je prethodno bio adresiran čini neadresiranim.

Proces preimenovanja registra može biti od velike pomoći za izvođenje izvan redoslijeda. Na primjer, ako je memorijska lokacija programirana za čitanje i zapisivanje, a instrukcije su izvršene tim redoslijedom, to je u redu. Međutim, ako se instrukcije promijene tako da se prvo izvrše pisanje, instrukcija za čitanje dobila bi pogrešnu vrijednost. Kako bi se to spriječilo, izvorna vrijednost za čitanje pohranjuje se u neiskorišteni registar koji se zatim preimenuje kada se relevantna instrukcija obrađuje.

Zaključak

Registri su najviša razina u hijerarhiji memorije. Oni su jedini dio koji se može izravno adresirati putem CPU-a i nemaju kašnjenja. Registri se koriste za pohranjivanje podataka koje CPU aktivno izvršava. Također se koriste za pohranjivanje drugih podatkovnih točaka kao što je programski brojač koji prati koja je instrukcija sljedeća za izvršenje. Vrlo ograničen broj registara dostupan je s x86-64 arhitekturom koja ima 16 registara opće namjene i 16 ili 32 registra s pomičnim zarezom, ovisno o tome je li podržan AVX-512.