Registr procesoru je pole dané délky v ultrarychlé paměti s náhodným přístupem (SRAM) uvnitř procesoru. Využívá jej samotný procesor, může být buď přístupný, nebo softwarově nedostupný. Například při načítání další instrukce z paměti je tato umístěna do registru instrukcí , do kterého programátor nemá přístup.
Programově nepřístupné registry jsou jakékoli registry procesoru, ke kterým nelze přistupovat tak či onak z vykonávajícího programu. Příkladem takových registrů je již zmíněný instrukční registr .
Programově přístupné registry jsou registry, ke kterým lze přistupovat tak či onak z vykonávaného programu. Téměř každý takový registr je označen svým jmenným identifikátorem na úrovni jazyka symbolických instrukcí a odpovídajícím číselným identifikačním kódem na úrovni strojového jazyka. Programově přístupné registry nejsou z hlediska přístupnosti stejné a prakticky se dělí na dvě velké podskupiny:
Speciální registry [3] obsahují data nezbytná pro činnost procesoru - offsety základní tabulky, úrovně přístupu atd.
Část speciálních registrů patří řídicímu zařízení , které řídí procesor generováním sekvence mikroinstrukcí .
Přístup k hodnotám uloženým v registrech se provádí přímo na frekvenci procesoru a zpravidla několikrát rychleji než přístup k polím v RAM (i když mezipaměť obsahuje potřebná data), ale množství RAM je daleko překračuje celkový počet registrů procesoru, celková "kapacita" obecných / datových registrů pro procesory x86 (například Intel 80386 a novější) 8 registrů po 4 bytech = 32 bajtů ( u procesorů x86-64 - 16 z 8 bajtů = 128 bajtů a některé vektorové registry).
Tabulka ukazuje počet obecných registrů v několika běžných architekturách mikroprocesorů. Za zmínku stojí, že v některých architekturách může být použití jednotlivých registrů komplikované. Takže ve SPARC a MIPS registr číslo 0 neukládá informace a je vždy čten jako 0 a v procesorech x86 s registrem ESP(ukazatelem na zásobník) mohou fungovat pouze některé příkazy.
Architektura | celočíselné registry |
FP - registry |
Poznámky |
---|---|---|---|
x86-32 | osm | osm | |
x86-64 | 16 | 16 | |
IBM System/360 | 16 | čtyři | |
z/Architektura | 16 | 16 | |
Itanium | 128 | 128 | |
SPARC | 31 | 32 | Registr 0 (globální) je vždy spuštěn |
IBM Cell | 4~16 | 1~4 | |
IBM POWER | 32 | 32 | |
energetická architektura | 32 | 32 | |
Alfa | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
PIC | jeden | 0 | |
AVR | 32 | 0 | |
ARM 32bitový [4] | 16 | rozličný | |
ARM 64bitový [5] | 31 | 32 | |
MIPS | 31 | 32 | Registr 0 je vždy nula |
RISC-V | 31 | 32 | Navíc existuje registr 0, který vždy vrací nulu |
Elbrus 2000 | 256 | v souladu s
celé číslo |
32 dvoumístných registrů,
256 = 32 globálních registrů + 224 registrů zásobníku procedur [6] |
IP ( anglicky Instruction Pointer ) - registr udávající offset (adresu) instrukcí v kódovém segmentu (1234: 0100h segment / offset).
IP – 16bitová (spodní část EIP)
EIP – 32bitový analog (spodní část RIP)
RIP - 64bitový analog
Registry segmentů jsou registry, které ukazují na segmenty.
Všechny segmentové registry jsou 16bitové.
CS ( kódový segment ) , DS ( datový segment ) , SS ( zásobníkový segment ) , ES ( extra segment ) , FS, GS
V reálném režimu procesoru obsahují segmentové registry adresu začátku 64Kb segmentu, posunutou doprava o 4 bity.
V chráněném režimu procesoru obsahují segmentové registry selektor paměťového segmentu přiděleného OS.
CS je ukazatel na segment kódu. Vazba CS:IP (CS:EIP/CS:RIP - v zabezpečeném/64bitovém režimu) ukazuje na adresu paměti další instrukce.
V 64bitovém režimu se segmentové registry CS, DS, ES a SS neúčastní vytváření lineární (spojité) adresy, protože segmentace v tomto režimu není podporována.
Datové registry se používají k ukládání mezivýpočtů.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 - R15 - 64-bit (registr AX)
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D - R15D - 32-bit (rozšířená AX)
- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ R15W – 16bitový
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B - R15B - 8bitové (poloviny 16bitových registrů)
například AH - vysoká AX - vysoká polovina 8 bitů
AL - nízká AX - nízká polovina 8 bitů
RAX | RCX | RDX | RBX | ||||||||||||||||||||||||||||
EAX | ECX | EDX | EBX | ||||||||||||||||||||||||||||
SEKERA | CX | DX | BX | ||||||||||||||||||||||||||||
AH | AL | CH | CL | D.H. | DL | BH | BL |
RSP | RBP | RSI | RDI | Rx | |||||||||||||||||||||||||||||||||||
ESP | EBP | ESI | EDI | RxD | |||||||||||||||||||||||||||||||||||
SP | BP | SI | DI | RxW | |||||||||||||||||||||||||||||||||||
SPL | BPL | SIL | DIL | RxB |
kde x je 8..15.
Registry RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL jsou dostupné pouze v režimu 64bitového procesoru.
Registr příznaků FLAGS (16 bitů) / EFLAGS (32 bitů) / RFLAGS (64 bitů) - obsahuje aktuální stav procesoru.
Systémové registry GDTR, LDTR a IDTR byly zavedeny v procesorech počínaje Intel286 a jsou určeny k ukládání základních adres tabulek deskriptorů - nejdůležitějších součástí architektury systému při práci v chráněném režimu.
Registr GDTR obsahuje 32bitovou (24bitovou pro Intel286) základní adresu a 16bitový limit globální tabulky deskriptorů ( GDT ).
Viditelná část registru LDTR obsahuje pouze selektor deskriptoru tabulky lokálních deskriptorů (LDT). Samotný deskriptor LDT se automaticky načte do skryté části LDTR z tabulky globálních deskriptorů.
Registr IDTR obsahuje 32bitovou (24bitovou pro Intel286) základní adresu a 16bitový limit tabulky deskriptoru přerušení ( IDT ). V reálném režimu jej lze použít ke změně umístění tabulky vektorů přerušení.
Viditelná část registru TR obsahuje selektor deskriptoru segmentu stavu úlohy ( TSS ). Samotný deskriptor TSS se automaticky načte do skryté části TR z globální tabulky deskriptorů.
Registr je funkční jednotka, která přijímá, ukládá a vysílá informace. Registry se skládají ze skupiny spouštěčů , obvykle D. Podle typu příjmu a výdeje informace se rozlišují 2 typy registrů:
Posuvné registry jsou sériově zapojený řetězec klopných obvodů . Hlavním provozním režimem je posun bitů kódu z jednoho spouštěče na druhý pro každý impuls hodinového signálu.
Podle účelu se registry liší v:
IP ( anglicky Instruction Pointer ) - registr obsahující adresový offset další instrukce, která má být provedena, vzhledem k segmentu kódu CS v procesorech rodiny x86 .
Registr IP je spojen s CS jako CS:IP, kde CS je aktuální segment kódu a IP je aktuální posun od tohoto segmentu.
Registr IP je 16bitový registr ukazatele. Kromě něj tento typ registrů zahrnuje SP ( English Stack Pointer - ukazatel zásobníku) a BP ( English Base Pointer - základní ukazatel).
Princip činnostiNapříklad CS obsahuje hodnotu , registr IP ukládá offset . 2CB5[0]H123H
Adresa další instrukce, která se má provést, se vypočítá přidáním adresy v CS (Code Segment) k offsetu v registru IP:
2CB50H + 123H = 2CC73HAdresa další instrukce, která se má provést, je tedy 2CC73H.
Po provedení aktuální instrukce procesor automaticky změní hodnotu v registru IP, takže dvojice registrů CS:IP vždy ukazuje na další instrukci, která se má provést.
EIPPočínaje procesorem 80386 byla představena 32bitová verze registru ukazatelů - EIP ( Extended Instruction Pointer ) . V tomto případě je IP dolním koncem tohoto registru (prvních 16 bitů). Princip fungování EIP je obecně podobný fungování registru IP. Hlavní rozdíl je v tom, že v chráněném režimu, na rozdíl od reálného režimu, je registr CS selektorem (selektor neukazuje na samotný segment v paměti, ale na deskriptor segmentu v tabulce deskriptorů).
RIP64bitové procesory používají svůj vlastní registr ukazatele instrukce - RIP .
Spodní část tohoto registru je registr EIP.
Na základě RIP byla v 64bitových procesorech zavedena nová metoda adresování relativní k RIP. Zbytek práce RIP je podobný práci registru EIP.
procesorů | Technologie digitálních|||||||||
---|---|---|---|---|---|---|---|---|---|
Architektura | |||||||||
Architektura instrukční sady | |||||||||
strojové slovo | |||||||||
Rovnoběžnost |
| ||||||||
Implementace | |||||||||
Komponenty | |||||||||
Řízení spotřeby |
Mikrokontroléry | ||||||||
---|---|---|---|---|---|---|---|---|
Architektura |
| |||||||
Výrobci |
| |||||||
Komponenty | ||||||||
Obvod |
| |||||||
Rozhraní | ||||||||
OS | ||||||||
Programování |
|