Registrační okno

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 2. září 2016; kontroly vyžadují 5 úprav .

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ů .

Historie

Paradigma registrového okna bylo vyvinuto během projektu mikroprocesoru RISC na UC Berkeley v letech 1980-1984.

Principy činnosti

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í.

Implementace

Registrová okna se používají v procesorech SPARC , Elbrus , Intel i960 a AMD Am29000 .

Výhody a nevýhody

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é.

Poznámky

  1. Architektura procesoru. MIPS , Sparc, ARM a PowerPC
  2. Organizace paměti registru CPU Archivováno 1. března 2016 na stránkách Wayback Machine / eSyr's Wiki
  3. E. A. EREMIN, Stack Archival copy ze dne 20. ledna 2017 na Wayback Machine , část 2 Archivní kopie ze dne 4. března 2016 na Wayback Machine // Information Magazine - Into the World of Informatics # 102 (16.–31. ledna), č. 4 /2008 "Windows lze hardwarově přepínat na jiné registry pomocí speciálního registru CWP (Current Window Pointer)"