Processorregister
Den här artikeln behöver källhänvisningar för att kunna verifieras. (2022-12) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. |
Ett processorregister är inom processorarkitektur en liten mängd mycket snabbt datorminne som används för att ge snabb tillgång till frekvent åtkommen data. Att lagra ofta använd data i register är kritiskt för programprestanda, vilket gör registerallokering, att tilldela registren på ett effektivt sätt, till en viktig uppgift för en kompilator. De flesta, men inte alla, moderna processorarkitekturer fungerar enligt principen att hämta data från primärminnet (eventuellt via cache) till processorregistren, utföra beräkningar på dem, och sedan lagra resultaten i primärminnet igen.
Processorregister ligger högst i minneshierarkin: det är det snabbaste sättet att lagra data. Termen 'processorregister' används oftast bara för de register som går att påverka eller avläsa från instruktioner, dessa kallas också "arkitekturregister". Exempelvis har x86-arkitekturen åtta stycken 32-bitarsregister, men en CPU som tillämpar x86-arkitekturen har betydligt fler interna register än bara dessa åtta, till exempel instruktionsregister.
Registerkategorier
[redigera | redigera wikitext]Processorregister klassificeras normal baserat på hur många bitar de består av; exempelvis säger man "8-bitarsregister" eller "32-bitarsregister". Det finns olika kategorier av register, beroende på typen av data som lagras i dem:
- Dataregister används för att lagra heltal. I några äldre eller enklare processorer finns det ett särskilt dataregister, ackumulatorn, som används underförstått i många instruktioner. Exempel: D0-D7 i 68000-arkitekturen och A-registret i 6502-arkitekturen.
- Adressregister används för att lagra minnesadresser (eller delar av minnesadresser) och används bland annat för att läsa från och skriva till primärminnet. Exempel: segmentregistren CS, DS, ES, FS, GS och SS i x86-arkitekturen och A0-A7 i 68000-arkitekturen.
- Allmänna register (general purpose registers eller GPR) används för både data och adresser.
- Flyttalsregister används för att lagra flyttal. Exempel: ST(0)-ST(7) hos 8087-matematikprocessorn.
- Konstanta register innehåller vanligt förekommande värden som bara kan läsas (till exempel noll, ett och pi).
- Vektorregister håller flera datavärden i en vektor och används för att utföra flera operationer parallellt (se vidare: SIMD).
- Specialregister håller reda på programmets tillstånd. Exempel: instruktionspekare, stackpekare och statusregister.
- I några processorarkitekturer finns modellspecifika register som lagrar data och inställningar som är specifika för processorn själv. Eftersom deras innebörd är knuten till en specifik processor, går det inte att förlita sig på att deras funktion är densamma i senare processorgenerationer.