Processorregisteret er et felt af en given længde i in - processor ultra-fast random access memory (SRAM). Det bruges af processoren selv, det kan enten være tilgængeligt eller utilgængeligt af software. For eksempel, når den næste instruktion hentes fra hukommelsen, placeres den i instruktionsregisteret , som ikke kan tilgås af programmøren.
Programmatisk utilgængelige registre er alle processorregistre, der ikke kan tilgås på den ene eller anden måde fra det eksekverende program. Et eksempel på sådanne registre er det allerede nævnte instruktionsregister .
Programmatisk tilgængelige registre er registre, der kan tilgås på den ene eller anden måde fra det eksekverende program. Næsten hvert sådant register er udpeget af dets navn-identifikator på assemblersprogniveau og den tilsvarende numeriske identifikationskode på maskinsprogniveau. Med hensyn til tilgængelighed er programmatisk tilgængelige registre ikke det samme og er praktisk talt opdelt i to store undergrupper:
Særlige registre [3] indeholder data, der er nødvendige for driften af processoren - basistabelforskydninger, adgangsniveauer osv.
En del af de specielle registre tilhører styreenheden , som styrer processoren ved at generere en sekvens af mikroinstruktioner .
Adgang til værdier gemt i registre udføres direkte ved processorens clockfrekvens og som regel flere gange hurtigere end adgang til felter i RAM (selvom cachehukommelsen indeholder de nødvendige data), men mængden af RAM langt overstiger det samlede antal processorregistre, den samlede "kapacitet" af generelle formål / dataregistre for x86-processorer (for eksempel Intel 80386 og nyere) 8 registre på 4 bytes = 32 bytes (I x86-64-processorer - 16 af 8 bytes = 128 bytes og nogle vektorregistre).
Tabellen viser antallet af generelle registre i flere almindelige mikroprocessorarkitekturer. Det er værd at bemærke, at i nogle arkitekturer kan brugen af individuelle registre være kompliceret. Så i SPARC og MIPS gemmer register nummer 0 ikke information og læses altid som 0, og i x86-processorer med et register ESP(peger til stakken) kan kun nogle kommandoer fungere.
Arkitektur | heltalsregistre _ |
FP - registre |
Noter |
---|---|---|---|
x86-32 | otte | otte | |
x86-64 | 16 | 16 | |
IBM System/360 | 16 | fire | |
z/Arkitektur | 16 | 16 | |
Itanium | 128 | 128 | |
SPARC | 31 | 32 | Register 0 (global) kører altid |
IBM Cell | 4~16 | 1~4 | |
IBM POWER | 32 | 32 | |
magt arkitektur | 32 | 32 | |
Alfa | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
PIC | en | 0 | |
AVR | 32 | 0 | |
ARM 32-bit [4] | 16 | forskellige | |
ARM 64-bit [5] | 31 | 32 | |
MIPS | 31 | 32 | Register 0 er altid nul |
RISC-V | 31 | 32 | Derudover er der register 0, som altid returnerer nul |
Elbrus 2000 | 256 | på linie med
heltal |
32 tocifrede registre,
256 = 32 globale registre + 224 procedurestakregistre [6] |
IP ( English Instruction Pointer ) - et register, der angiver offset (adresse) af instruktioner i kodesegmentet (1234: 0100h segment / offset).
IP - 16-bit (nedre del af EIP)
EIP - 32-bit analog (nedre del af RIP)
RIP - 64-bit analog
Segmentregistre er registre, der peger på segmenter.
Alle segmentregistre er 16-bit.
CS ( Code Segment ) , DS ( Data Segment ) , SS ( Stack Segment ) , ES ( Extra Segment ) , FS, GS
I processorens reelle tilstand indeholder segmentregistrene adressen på begyndelsen af 64Kb-segmentet, forskudt til højre med 4 bit.
I processorens beskyttede tilstand indeholder segmentregistrene selektoren for hukommelsessegmentet, som er tildelt af OS.
CS er en pegepind til et kodesegment. CS:IP-bindingen (CS:EIP/CS:RIP - i sikker/64-bit-tilstand) peger på hukommelsesadressen for den næste instruktion.
I 64-bit tilstand deltager segmentregistrene CS, DS, ES og SS ikke i dannelsen af en lineær (kontinuerlig) adresse, da segmentering ikke understøttes i denne tilstand.
Dataregistre bruges til at lagre mellemberegninger.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 - R15 - 64-bit (registry AX)
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D - R15D - 32-bit (udvidet AX)
AX ( Akkumulator ) , CX ( Tælleregister ) , DX ( Dataregister ) , BX ( Base Register ) , SP ( Stack Pointer ) , BP ( Base Pointer ) SI (, Kildeindeks ), DI ( Destination Index ), R8W - R15W - 16-bit
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B - R15B - 8-bit (halvdele af 16-bit registre)
for eksempel AH - høj AX - høj halvdel af 8 bit
AL - lav AX - lav halvdel af 8 bits
RAX | RCX | RDX | RBX | ||||||||||||||||||||||||||||
EAX | ECX | EDX | EBX | ||||||||||||||||||||||||||||
ØKSE | 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 |
hvor x er 8...15.
Registre RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL er kun tilgængelige i 64-bit processortilstand.
Flagregister FLAGS (16 bit) / EFLAGS (32 bit) / RFLAGS (64 bit) - indeholder den aktuelle tilstand for processoren.
Systemregistrene GDTR, LDTR og IDTR blev introduceret i processorer startende med Intel286 og er designet til at gemme basisadresserne for deskriptortabeller - de vigtigste komponenter i systemarkitekturen, når man arbejder i beskyttet tilstand.
GDTR-registret indeholder en 32-bit (24-bit for Intel286) baseadresse og en 16-bit global descriptor table ( GDT ) grænse.
Den synlige del af LDTR- registret indeholder kun den lokale descriptor table (LDT) descriptor selector. Selve LDT-deskriptoren indlæses automatisk i den LDTR-skjulte del fra den globale deskriptor-tabel.
IDTR-registret indeholder en 32-bit (24-bit for Intel286) baseadresse og en 16-bit interrupt descriptor table ( IDT ) grænse. I real mode kan den bruges til at ændre placeringen af interrupt vektor tabellen.
Den synlige del af TR-registret indeholder Task State Segment Descriptor ( TSS )-vælgeren. Selve TSS-deskriptoren indlæses automatisk i den skjulte del af TR'en fra den globale deskriptor-tabel.
Et register er en funktionel enhed, der modtager, lagrer og transmitterer information. Registre består af en gruppe af udløsere , sædvanligvis D. Afhængig af typen af modtagelse og udstedelse af information skelnes der mellem 2 typer registre:
Skifteregistre er en serieforbundet kæde af flip- flops . Hoveddriftsmåden er skiftet af kodens bits fra en trigger til en anden for hver impuls af ursignalet.
Efter formål adskiller registrene sig i:
IP ( English Instruction Pointer ) - et register, der indeholder adresseforskydningen af den næste instruktion, der skal udføres i forhold til CS -kodesegmentet i x86 - familieprocessorer .
IP-registret er knyttet til CS som CS:IP, hvor CS er det aktuelle kodesegment og IP er den aktuelle offset fra det segment.
IP-registret er et 16-bit pointerregister. Ud over det inkluderer denne type registre SP ( English Stack Pointer - stack pointer) og BP ( English Base Pointer - base pointer).
FunktionsprincipFor eksempel indeholder CS værdien , IP-registret gemmer forskydningen . 2CB5[0]H123H
Adressen på den næste instruktion, der skal udføres, beregnes ved at tilføje adressen i CS (Code Segment) til offset i IP-registret:
2CB50H + 123H = 2CC73HSåledes er adressen på den næste instruktion, der skal udføres 2CC73H.
Når den aktuelle instruktion udføres, ændrer processoren automatisk værdien i IP-registeret, således at CS:IP-registerparret altid peger på den næste instruktion, der skal udføres.
EIPStartende med 80386-processoren blev en 32-bit version af pointerregisteret introduceret - EIP ( Extended Instruction Pointer ) . I dette tilfælde er IP den lave ende af dette register (de første 16 bit). Princippet om driften af EIP svarer generelt til driften af IP-registret. Den største forskel er, at i beskyttet tilstand, i modsætning til reel tilstand, er CS-registret en vælger (vælgeren peger ikke på selve segmentet i hukommelsen, men på segmentbeskrivelsen i deskriptortabellen).
RIP64-bit processorer bruger deres eget instruktions pointer register - RIP .
Den nederste del af dette register er EIP-registret.
Baseret på RIP er en ny RIP-relativ adresseringsmetode blevet introduceret i 64-bit processorer. Resten af arbejdet i RIP ligner arbejdet i EIP-registret.
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |
Mikrocontrollere | ||||||||
---|---|---|---|---|---|---|---|---|
Arkitektur |
| |||||||
Producenter |
| |||||||
Komponenter | ||||||||
Periferi |
| |||||||
Grænseflader | ||||||||
OS | ||||||||
Programmering |
|