IA -32 - IA-32
IA-32 (zkratka „ Intel Architecture, 32-bit “, někdy také nazývaná i386 ) je 32bitová verze architektury instrukční sady x86 , kterou navrhla společnost Intel a byla poprvé implementována v mikroprocesoru 80386 v roce 1985. IA-32 je první inkarnace x86, která podporuje 32bitové výpočty; v důsledku toho může být termín „IA-32“ použit jako metonymum pro označení všech verzí x86, které podporují 32bitové výpočty.
V rámci různých směrnic programovacího jazyka je IA-32 stále někdy označován jako architektura „i386“. V některých jiných kontextech jsou některé iterace IA-32 ISA někdy označeny i486, i586 a i686, s odkazem na supersety instrukcí nabízené mikroarchitekturami 80486 , P5 a P6 . Tyto aktualizace nabídly řadu doplňků vedle základní sady IA-32, tj. Schopnosti s plovoucí desetinnou čárkou a rozšíření MMX .
Intel byl historicky největším výrobcem procesorů IA-32, přičemž druhým největším dodavatelem byla AMD . V průběhu 90. let vyráběli VIA , Transmeta a další výrobci čipů také procesory kompatibilní s IA-32 (např. WinChip ). V moderní době Intel stále vyrábí procesory IA-32 v rámci platformy mikrokontroléru Intel Quark ; od roku 2000 se však většina výrobců (včetně společnosti Intel) přesunula téměř výhradně k implementaci procesorů založených na 64bitové variantě x86, x86-64 . x86-64, podle specifikace, nabízí starší operační režimy, které fungují na IA-32 ISA pro zpětnou kompatibilitu. I vzhledem k současné prevalenci x86-64 jsou od roku 2018 verze chráněných režimů IA-32 mnoha moderních operačních systémů stále zachovány, např. Microsoft Windows a distribuce Debian Linux . Navzdory názvu IA-32 (a způsobujícímu potenciální zmatek) by 64bitová evoluce x86, která pocházela z AMD, nebyla známá jako „IA-64“, místo toho by patřila architektuře Intel Itanium .
Architektonické prvky
Primární definující charakteristikou IA-32 je dostupnost 32bitových registrů obecných procesorů (například EAX a EBX), 32bitové celočíselné aritmetické a logické operace, 32bitové offsety v rámci segmentu v chráněném režimu a překlad segmentovaných adres na 32bitové lineární adresy. Designéři využili příležitosti a provedli také další vylepšení. Některé z nejvýznamnějších změn jsou popsány níže.
- Možnost 32bitového celého čísla
- Všechny obecné registry (GPR) jsou rozšířeny ze 16 bitů na 32 bitů a všechny aritmetické a logické operace, operace s registrací z paměti do registru a z registru do paměti atd. Mohou pracovat přímo na 32bitových celých číslech. Pushes and popps on the stack default to 4-byte strides, and non-segmented pointers are 4 bytes wide.
- Obecnější režimy adresování
- Jakýkoli GPR lze použít jako základní registr a jakýkoli jiný GPR než ESP lze použít jako indexový registr v paměti. Hodnotu rejstříkového registru lze před přidáním k hodnotě základního registru a posunutím vynásobit 1, 2, 4 nebo 8.
- Další segmentové registry
- K dispozici jsou dva další segmentové registry, FS a GS.
- Větší virtuální adresní prostor
- Architektura IA-32 definuje 48bitový segmentovaný formát adresy se 16bitovým číslem segmentu a 32bitovým offsetem v rámci segmentu. Segmentované adresy jsou mapovány na 32bitové lineární adresy.
- Vyžadujte stránkování
- 32bitové lineární adresy jsou spíše virtuální adresy než fyzické adresy; jsou přeloženy na fyzické adresy prostřednictvím tabulky stránek . V 80386, 80486 a původních procesorech Pentium byla fyzická adresa 32 bitů; v procesorech Pentium Pro a novějších umožnilo rozšíření fyzické adresy 36bitové fyzické adresy, ačkoli velikost lineární adresy byla stále 32 bitů.
Provozní režimy
Pracovní režim | Je vyžadován operační systém | Typ spuštěného kódu | Výchozí velikost adresy | Výchozí velikost operandu | Typická šířka GPR |
---|---|---|---|---|---|
Chráněný režim | 32bitový operační systém nebo zavaděč | 32bitový kód v chráněném režimu | 32 bitů | 32 bitů | 32 bitů |
16bitový operační systém s chráněným režimem nebo zavaděč nebo 32bitový zavaděč | 16bitový kód v chráněném režimu | 16 bitů | 16 bitů | 16 nebo 32 bitů | |
Virtuální režim 8086 | 16- nebo 32bitový operační systém v chráněném režimu | 16bitový kód v reálném režimu | 16 bitů | 16 bitů | 16 nebo 32 bitů |
Skutečný režim | 16bitový operační systém v reálném režimu nebo zavaděč nebo 32bitový zavaděč | 16bitový kód v reálném režimu | 16 bitů | 16 bitů | 16 nebo 32 bitů |
Neskutečný režim | 16bitový operační systém v reálném režimu nebo zavaděč nebo 32bitový zavaděč | 16bitový kód v reálném režimu | 32 bitů | 16 bitů | 16 nebo 32 bitů |