Mi az a regiszter?

Ha nem különösebben érdeklik a számítógépek, akkor megbocsátható, ha azt feltételezi, hogy a számítógépben a memória egyetlen formája a merevlemez és a RAM. Azok, akik érdeklődnek a számítógépek iránt, valószínűleg tudják, hogy ez nem így van, és hogy a A CPU emellett rendelkezik egy sor gyorsítótárral is, amelyek az adatok gyorsítótárazására szolgálnak a RAM-ból, hogy a CPU hozzáférhessen. gyorsabban. Mindezek hirdetett szolgáltatások, elsősorban azért, mert a sebesség és/vagy a kapacitás megfelelő értékesítési pont, és általában befolyásolja a teljesítményszintet.

Valójában van egy másik memóriaréteg is. Bármennyire is gondolja, hogy az L1 gyorsítótár a lehető legközelebb van a tényleges feldolgozási maghoz, van egy másik magasabb réteg a memóriahierarchiában. Ezek a CPU regiszterek. Az ok, amiért ezeket nem igazán hirdetik vagy említik, az az, hogy valójában egyáltalán nem változtatják meg őket. Technikailag ezek lehetnek, de a regiszterek száma és mérete alapvetően fontos az architektúrában. Ez azt jelenti, hogy minden x86-64 CPU-nak ugyanannyi regisztere van. Nem forgalmazzák, mert nem versenypont.

Mit csinál egy regiszter?

A regiszter egy gyorsan elérhető tárolóhely a processzor számára. A regiszterhez való hozzáférés azonnali, nulla késleltetéssel, míg a modern CPU-kban még az L1 gyorsítótárnak is nagyjából 4-5 ciklusú késleltetése van. Ez az azonnali hozzáférés a regiszterek használati esetére utal. A regiszterek a CPU által aktívan működtetett utasítások tárolására szolgálnak. A feldolgozandó adatpontokat is tárolják. Egyes nyilvántartások általános célúak, míg másoknak nagyon konkrét célja van. Példa a speciális célú regiszterre a programszámláló, ahol a processzor követi a pozícióját a programsorozatában.

Sok regiszter a felhasználók számára hozzáférhetőnek tekinthető. Ez azonban nem jelenti azt, hogy a számítógép felhasználója megválaszthatja, hogy milyen értéket adjon nekik. Ez azt jelenti, hogy a futó szoftver megadhatja a regiszterekbe töltendő adatokat. Kisebb számú regiszter belső, ami azt jelenti, hogy a szoftver egyáltalán nem tudja kezelni őket. Az utasításregiszter, amely az éppen végrehajtott utasítást tárolja, egy példa a belső regiszterre.

Regisztrálás átnevezése

Míg a CPU-architektúra csak egyetlen regiszterkonfigurációt tesz lehetővé, ennek valójában van egy kis árnyalata. Minden modern CPU alkalmazza a regiszter átnevezést. Ez egy olyan technika, ahol több fizikai regiszterrel rendelkezhet, és felhasználhatja azokat az adatok előzetes betöltésére vagy olyan adatok tárolására, amelyek egy renden kívüli utasításhoz kapcsolódnak, amelyek egyébként felül lettek volna írva. Amikor a CPU eljut arra a pontra, hogy szüksége van az extra regiszterekben lévő adatokra, egyszerűen átnevezi azokat, hogy címezhető legyen, egyúttal címezhetetlenné tesz egy korábban címezhető regisztert.

A regiszter átnevezése nagyon hasznos lehet a renden kívüli végrehajtáshoz. Például, ha egy memóriahely úgy van programozva, hogy olvassa, majd írjon oda, és az utasításokat ebben a sorrendben hajtották végre, ez rendben van. Ha azonban az utasításokat úgy rendezik át, hogy először az írást hajtsák végre, az olvasási utasítás rossz értéket kap. Ennek megelőzése érdekében az eredeti kiolvasandó értéket egy nem használt regiszterben tárolják, amelyet a vonatkozó utasítás feldolgozása során átneveznek.

Következtetés

A regiszterek a legmagasabb szint a memóriahierarchiában. Ezek az egyetlen rész, amelyet a CPU közvetlenül címezhet, és nincs késleltetésük. A regiszterek a CPU által aktívan végrehajtott adatok tárolására szolgálnak. Más adatpontok tárolására is szolgálnak, mint például a programszámláló, amely nyomon követi, hogy melyik utasítás legyen a következő végrehajtandó. Nagyon korlátozott számú regiszter áll rendelkezésre az x86-64 architektúrával, amely 16 általános célú regiszterrel és 16 vagy 32 lebegőpontos regiszterrel rendelkezik, attól függően, hogy az AVX-512 támogatott-e.