Registervindue - en af metoderne til at organisere arbejde med processorregistre , der bruges til at reducere overheaden ved at arbejde med stakken, når du kalder subrutiner .
Registervindue-paradigmet blev udviklet under RISC-mikroprocessorprojektet ved UC Berkeley i 1980-1984.
Langt de fleste processorer indeholder et begrænset antal registre - ultrahurtige hukommelsesceller, der bruges til at lagre serviceinformation (serviceregistre) og mellemresultater af programdrift (generelle registre). I det traditionelle paradigme, i det øjeblik subrutinen kaldes, skal processoren gemme sin nuværende tilstand (indholdet af de fleste serviceregistre og nogle generelle registre), overføre kontrollen til begyndelsen af proceduren og efter dens afslutning genoprette de tidligere gemte registerværdier. I praksis betyder dette behovet for at skrive titusinder eller hundredvis af bytes information i RAM med hvert procedurekald.
I registervinduets paradigme er processorregistre til generelle formål opdelt i globale registre (til lagring af globale variabler ) og en registerfil , som ikke er helt synlig for noget program.
Lad registerfilen bestå af K registre arrangeret i en cirkel. Hvert program har kun adgang til L = L 1 + L 2 + L 3 registre (L < K), der udgør det aktuelle registervindue. Vinduet er opdelt i tre dele:
Før du kalder subrutinen, skriver det aktuelle program til outputregistrene værdierne af de parametre, der skal sendes til subrutinen. Når styringen overføres til en underrutine, skifter registervinduet, og udgangsregistrene for det tidligere aktive program bliver inputregistre for underrutinen. Før kontrollen overføres tilbage, skriver rutinen resultaterne (returværdier) til sine inputregistre. Det program, der kaldte det efter omvendt skift af registervinduet, vil have adgang til dem. [1] [2]
Markøren til begyndelsen af det aktuelle registervindue er gemt i et særligt CWP-register (Current Window Pointer) og ændres af hardware. [3]
I tilfælde af at alle registre er involveret, for at kalde den næste subrutine, skal værdierne af de første registre gemmes i RAM (en handling, der ligner personsøgning ).
Den klassiske model antager, at størrelsen af registervinduet er fast. Nogle implementeringer (såsom AMD Am29000 ) bruger registervinduer med variabel størrelse.
Registervinduer bruges i SPARC , Elbrus , Intel i960 og AMD Am29000 processorer .
Den største fordel ved registervinduer er manglen på arbejde med stakken, når du kalder subrutiner. Derudover implementerer registervinduer hukommelsesbeskyttelse: en subrutine kan ikke ændre værdierne for de fleste af registrene i det program, der kaldte den. Blandt ulemperne ved denne tilgang kan man bemærke tilstedeværelsen af en maksimal indlejringsdybde af subrutiner, over hvilken de overheadomkostninger ved opkald af subrutiner stiger kraftigt. John Hennessy , chefdesigner af den konkurrerende RISC-arkitektur MIPS , mente, at compileren kunne gøre et bedre stykke arbejde med at finde gratis registre til at overføre parametre til en underrutine . At udføre dette arbejde på hardwareniveau anså han for uberettiget.
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |