Co je registr?

click fraud protection

Pokud se o počítače nijak zvlášť nezajímáte, bylo by vám odpuštěno předpokládat, že jedinými formami paměti v počítači jsou pevný disk a RAM. Ti z vás, kteří se zajímají o počítače, pravděpodobně vědí, že tomu tak není a že CPU má také sadu mezipamětí, které se používají k ukládání dat z paměti RAM, aby k nim CPU mohl přistupovat rychlejší. To vše jsou inzerované funkce, především proto, že rychlost a/nebo kapacita je slušný prodejní argument a obecně ovlivňuje úroveň výkonu.

Ve skutečnosti však existuje ještě jedna další vrstva paměti. Jakkoli si možná myslíte, že mezipaměť L1 je co nejblíže skutečnému jádru zpracování, v hierarchii paměti je další vyšší vrstva. Toto jsou registry CPU. Důvodem, proč nejsou ve skutečnosti inzerovány nebo zmíněny, je to, že se ve skutečnosti vůbec nezměnily. Technicky by mohly být, ale počet a velikost registrů je ve skutečnosti pro architekturu zásadní. To znamená, že všechny CPU x86-64 mají stejný počet registrů. Nejsou uváděny na trh, protože nejsou konkurenčním bodem.

Co dělá registr?

Registr je rychle dostupné úložiště pro procesor. Přístup k registru je okamžitý s nulovou latencí, zatímco i mezipaměť L1 má u moderních CPU latenci zhruba 4-5 cyklů. Tato bezprostřednost přístupu naznačuje případ použití pro registry. Registry se používají k ukládání instrukcí aktivně provozovaných CPU. Ukládají také datové body, které mají být zpracovány. Některé registry jsou obecné, zatímco jiné mají velmi specifický účel. Příkladem speciálního registru může být programový čítač, což je místo, kde procesor sleduje jeho pozici ve své programové sekvenci.

Mnoho registrů je považováno za uživatelsky přístupné. To neznamená, že si uživatel počítače může vybrat, jakou hodnotu do něj vloží. To znamená, že běžící software může specifikovat data, která se mají načíst do těchto registrů. Menší počet registrů je interních, což znamená, že je software vůbec nedokáže řešit. Registr instrukcí, který ukládá aktuálně prováděnou instrukci, je příkladem interního registru.

Přejmenování registru

Zatímco architektura CPU může umožňovat pouze jednu konfiguraci registrů, ve skutečnosti je v tom trochu nuance. Všechny moderní CPU využívají přejmenování registrů. Toto je technika, kde můžete mít více fyzických registrů a používat je k předběžnému načítání dat nebo ukládání dat souvisejících s instrukcí mimo pořadí, která by jinak byla přepsána. Když se CPU dostane do bodu, kdy potřebuje data v extra registrech, jednoduše je přejmenuje tak, aby byly adresovatelné, a zároveň učiní dříve adresovatelný registr neadresovatelným.

Proces přejmenování registrů může být velmi užitečný pro provádění mimo pořadí. Pokud je například paměťové místo naprogramováno tak, aby bylo od té doby zapsáno, a instrukce byly provedeny v tomto pořadí, je to v pořádku. Pokud jsou však instrukce přeuspořádány tak, aby nejprve provedly zápis, instrukce čtení by získala nesprávnou hodnotu. Aby se tomu zabránilo, je původní hodnota, která má být načtena, uložena v nepoužitém registru, který je poté přejmenován, když je zpracovávána příslušná instrukce.

Závěr

Registry jsou nejvyšší vrstvou v hierarchii paměti. Jsou jedinou částí přímo adresovatelnou CPU a nemají žádnou latenci. Registry se používají k ukládání dat aktivně vykonávaných CPU. Používají se také k ukládání dalších datových bodů, jako je programový čítač, který sleduje, která instrukce je další, která má být provedena. S architekturou x86-64, která má 16 obecných registrů a 16 nebo 32 registrů s pohyblivou řádovou čárkou, je k dispozici velmi omezený počet registrů v závislosti na tom, zda je podporován AVX-512.