x86

Z Multimediaexpo.cz

Crystal Clear help index.png   Informace uvedené v tomto článku je potřeba ověřit.
  Prosíme, pomozte vylepšit tento článek doplněním věrohodných zdrojů.
Crystal Clear help index.png

x86 je označení několika rodin instrukčních sad pro procesory navazující na 16bitový procesor Intel 8086. Označení x86 též definuje hardwarovou počítačovou platformu (architekturu) označovanou jako IBM PC kompatibilní. Protože byl termín „x86“ zaveden až po uvedení procesoru Intel 80386, typicky se při použití označení „x86“ předpokládá, že daný procesor je alespoň 32bitový (tj. 80386 nebo novější, protože tyto procesory jsou schopné zpracovávat strojové instrukce původního 16bitového režimu pro zajištění zpětné kompatibility). Aby byla tato skutečnost zdůrazněna, používá se též označení x86-32 (resp. IA-32) a pro současné 64bitové procesory pak x86-64 (též „x64“). V současné době proto „x86“ označuje tři architektury s třemi různými sadami strojových instrukcí, přičemž novější procesory jsou schopné pracovat v režimech, které za jistých podmínek dovolují zpracovávat strojový kód předchozích architektur.

Obsah

IBM PC

Architektura IBM PC byla použita v osobních počítačích od firmy IBM, které doznaly širokého rozšíření. Politika IBM v době, kdy uvažovalo o použití této architektury (konkrétně procesoru 8088) v IBM PC, vyžadovala alespoň dva zdroje čipů, proto v roce 1982 AMD podepsalo kontrakt s Intelem a stalo se licencovaným druhým výrobcem procesorů 8086 a 8088. Později pod stejným kontraktem vyrábělo 80286. Intel ovšem smlouvu v roce 1986 vypověděl a odmítl předat AMD technické detaily 80386.

Registry x86

Architektura x86 se vyznačují až extrémní asymetrií architektury: z jeho osmi aritmetických registrů nejsou žádné dva zcela zaměnitelné.

  • aritmetické
    • AX – akumulátor (řada instrukcí ho má jako implicitní operand)
    • BX – bázový registr (tj. určený pro adresaci)
    • CX – čítač (tj. určený pro počítání cyklů)
    • DX – rozšíření akumulátoru (někdy nazýván data register)
    • SI – source index – index pro zdroj (tj. pro čtení)
    • DI – destination index – index pro cíl (tj. pro zápis)
    • BP – base pointer – určen jako ukazatel na záznam aktivní procedury na zásobníku (tím, že se implicitně spojoval s SS)
    • SP – stack pointer – ukazatel vrcholu zásobníku
  • segmentové
    • CS – segment kódu
    • DS – datový segment
    • ES – extra segment
    • SS – zásobníkový (stack) segment
  • registr IP (instrukční pointer neboli čítač instrukcí), vždy odkazovaný implicitně
  • registr FLAGS (příznaky)

Všechny registry mají šířku 16 bitů. Kromě toho šlo přistupovat k registrům AX-DX po částech, tj. jen k dolním (AL-DL) a horním (AH-DH) osmi bitům. Architektura x86 má i skupinu instrukcí pro práci s řetězci, kde jednotlivé instrukce zahrnují čtení nebo zápis z/do dohodnutých dvojic registrů (segmentu a indexu) – čtení většinou z DS:SI a zápis do ES:DI. Podrobněji viz Intel 8086, pro popis registrů u článků Intel 80386 či IA-32, kde můžete vidět jak byly rozšířeny.

Režimy procesoru

Reálný režim

Reálný režim (někdy také nazývaný jako režim reálných adres) je používán u procesorů 8086 a pozdějších x86 kompatibilních procesorů. Ty jsou v tomto režimu s procesory 8086 plně kompatibilní. V tomto režimu je pro tvorbu adresy používáno 20 bitů. Maximálně tak lze adresovat paměť o velikosti 1 MB. Paměťový prostor není přístupný jako jeden blok, ale je rozčleněn na čtyři segmenty: CS (code segment) pro paměť programu, DS (data segment) pro paměť dat, SS (stack segment) pro data zásobníku a vyhrazený ES (extra segment). Přístup ke všem částem operační paměti a periferiím je neomezený. Reálný režim neposkytuje hardwarovou podporu pro ochranu paměti či multitasking. Všechny procesory od 80286 výše používají reálný režim při startu počítače. Starší typy procesorů používají pouze jeden režim, který je s reálným režimem novějších procesorů prakticky identický.

Chráněný režim

Moderní chráněný režim

Chráněný režim poprvé zavádí procesor Intel 80286 a rozšiřuje velikost adresy na 24 bitů, což umožňuje adresovat až 16 MB paměti. Od procesoru Intel 80386 je velikost šířky adresní sběrnice 32 bitů a je tak možné adresovat až 4 GB. Hlavním rysem chráněného režimu je ochrana paměti, která procesům zabraňuje ovlivňování jim nepříslušejících částí paměti, což je řešeno pomocí segmentace paměti. Adresa je rozdělena na segment a offset. Segment je však pouze odkazem do tabulky selektorů. V té je každému segmentu přidělena bázová adresa (24 bitů), úroveň oprávnění (8 bitů) a maximální velikost segmentů (16 bitů). Pro přístup do paměti je u procesorů 80386 a vyšších ještě navíc v tomto režimu dostupné stránkování. Pomocí tohoto procesu je lineární adresa získaná po segmentaci ještě dále převáděna na fyzickou adresu (viz obrázek).

Virtuální 8086 režim

Podrežimem chráněného 32bitového režimu je virtuální 8086 režim. Jedná se o hybridní režim, který umožňuje spouštět programy, které jsou určeny pro běh v reálném režimu při zachování výhod chráněného režimu (zejména ochrany paměti před ostatními procesy). Virtuální 8086 režim neexistuje pro 16bitový chráněný režim ani pro režim long. Paměť je přístupná pomocí segmentace, stejně jako v případě reálného režimu.

64bitové režimy

Od roku 2002 je totiž zřejmé, že 32bitový adresní prostor architektury x86 omezuje výkon aplikací, které vyžadují přenos či zpracování velkých datových souborů. 32bitový adresní prostor totiž umožňuje adresovat přímo pouze 4 GB dat, což aplikace pro zpracování obrazu či databázové systémy dnes hravě překonají. Při použití 64bitové adresy, je možné přímo obsloužit 16 777 216 TB (nebo také 16 000 000 000 GB) dat, i když většina 64bitových systémů neumožňuje přístup do celého 64bitového adresního prostoru (například AMD64 podporuje aktuálně pouze 48 bitů, navíc rozdělených do čtyřech úrovní). Společnost AMD proto vyvinula rozšíření 32bitové x86 architektury na 64bitů, které původně neslo označení x86-64 a později bylo přejmenováno na AMD64. Tuto architekturu používali rodiny procesorů Opteron, Athlon 64, Turion 64 a později i Sempron. Úspěch procesorů řady AMD64 společně s vlažným přijetím řady IA-64 přiměl Intel k tomu, aby implementoval instrukční řadu AMD64 do svých procesorů.

64bitový režim long

Režim long rozšiřuje šířku adresní sběrnice na 64 bitů. V tomto režimu běží jádro 64bitového operačního systému.

64bitový režim kompability

Pro zpětnou kompatibilitu s 32bitovými systémy disponují moderní 64bitové procesory ještě takzvaným 64bitovým kompatibilním režimem. V tomto režimu je možné spouštět programy, které byli zkompilovány pro 32bitový procesor. Ne všechny programy mají totiž svou 64bitovou verzi a bez tohoto režimu by je nebylo možné v 64bitovém operačním systému vůbec spouštět.

Výrobci

Související články

Externí odkazy