Okno registru – jedna z metod organizace práce s registry procesoru , používaná ke snížení režie práce se zásobníkem při volání podprogramů .
Paradigma registrového okna bylo vyvinuto během projektu mikroprocesoru RISC na UC Berkeley v letech 1980-1984.
Naprostá většina procesorů obsahuje omezený počet registrů – ultrarychlé paměťové buňky sloužící k ukládání servisních informací (servisní registry) a mezivýsledků provozu programu (univerzální registry). V tradičním paradigmatu musí procesor v okamžiku volání podprogramu uložit svůj aktuální stav (obsah většiny servisních registrů a některých obecných registrů), přenést řízení na začátek procedury a po jejím dokončení obnovit dříve uložené hodnoty registru. V praxi to znamená nutnost zapsat desítky či stovky bajtů informací do paměti RAM při každém volání procedury.
V paradigmatu okna registrů jsou registry procesoru pro všeobecné účely rozděleny na globální registry (pro ukládání globálních proměnných ) a soubor registrů , který není zcela viditelný pro žádný program.
Nechť se soubor registrů skládá z K registrů uspořádaných do kruhu. Každý program má přístup pouze k registrům L = L 1 + L 2 + L 3 (L < K), které tvoří aktuální okno registrů. Okno je rozděleno na tři části:
Před voláním podprogramu aktuální program zapíše do výstupních registrů hodnoty parametrů, které je třeba předat podprogramu. Když je řízení přeneseno na podprogram, okno registru se posune a výstupní registry předchozího aktivního programu se stanou vstupními registry pro podprogram. Před předáním řízení zpět rutina zapíše výsledky (návratové hodnoty) do svých vstupních registrů. Přístup k nim bude mít program, který jej vyvolal po zpětném posunu okna registru. [1] [2]
Ukazatel na začátek okna aktuálního registru je uložen ve speciálním registru CWP (Current Window Pointer) a je měněn hardwarem. [3]
V případě, že jsou zapojeny všechny registry, pro volání dalšího podprogramu musí být hodnoty prvních registrů uloženy v paměti RAM (akce podobná stránkování ).
Klasický model předpokládá, že velikost okna registru je pevná. Některé implementace (jako AMD Am29000 ) používají okna registru s proměnnou velikostí.
Registrová okna se používají v procesorech SPARC , Elbrus , Intel i960 a AMD Am29000 .
Hlavní výhodou registrových oken je absence práce se zásobníkem při volání podprogramů. Okna registrů navíc implementují ochranu paměti: podprogram nemůže změnit hodnoty většiny registrů programu, který jej vyvolal. Mezi nevýhody tohoto přístupu lze zaznamenat přítomnost maximální hloubky vnoření podprogramů, nad kterou se výrazně zvyšují režijní náklady při volání podprogramů. John Hennessy , hlavní návrhář konkurenční RISC architektury MIPS , si myslel, že kompilátor by mohl udělat lepší práci při hledání volných registrů pro předávání parametrů podprogramu . Provádění této práce na hardwarové úrovni považoval za neopodstatněné.
procesorů | Technologie digitálních|||||||||
---|---|---|---|---|---|---|---|---|---|
Architektura | |||||||||
Architektura instrukční sady | |||||||||
strojové slovo | |||||||||
Rovnoběžnost |
| ||||||||
Implementace | |||||||||
Komponenty | |||||||||
Řízení spotřeby |