• Pentium/K5/M1/Nx586 •
Dnes si povíme něco o tom, jak pracují dnešní procesory, zejména
Pentium - Intel, K5 - AMD, M1 - Cyrix a Nx586 - NexGen. Pro většinu
lidí je uvnitř počítače cosi tajemného a pro menšinu je cosi
tajemného uvnitř procesoru. Pokusím se vám nastínit nejnovější trendy
výrobců procesorů, zejména konkurentů všem známeho Pentia. Nutné
požadavky na tyto konkurenty jsou, aby procesor byl kompatibilní se
staršími typy, tedy 8086 a zároveň s Pentiem. Mnoho lidí řekne, že
stačí zrychlit vnitřní frekvenci,jako to bylo u řady 80486, ale časem
to některá část procesoru nevydrží, a proto se vymýšlí nové
architektury procesorů. Konkurenti firmy Intel slibují, že základní
frekvence jejich produktů bude 100 MHz a budou rychlejší než Pentium
na stejné frekvenci. Bohužel zatím je na trhu jediný konkurent Nx586
firmy NexGen.
První finta je zřetězení (PIPELINING). Jde v podstatě o zřetězení
zpracování instrukcí. Procesor tedy pracuje podobně jako montážní
linka. V daném čase má procesor rozpracováno několik instrukcí
najednou, ovšem každou v jiném stadiu. V následujícím hodinovém cyklu
posune instrukce dál. Jedna instrukce procesor opustí a další
instrukci načte. Základ je pětistavové zřetězení . Některé procesory
používají Superpipelining, zřetězují instrukci na 6 nebo 7 stavů.
Firma Cyrix vyvinula vlastní sedmistavovou architekturu. Teoretický
základ této techniky zpracování je předpoklad, že každý stav se
provede rychleji.
KLASICKÉ PĚTISTAVOVÉ ZŘETĚZENÍ - PIPELINING
ZÁPIS | | | | | | | | |1| |2| |3| |4|
| | | | | | | | | | | | | | | |
VYKONÁNÍ | | | | | | |1| |2| |3| |4| |5|
| | | | | | | | | | | | | | | |
OPERANDY | | | | |1| |2| |3| |4| |5| |6|
| | | | | | | | | | | | | | | |
DEKÓDOVÁNÍ | | |1| |2| |3| |4| |5| |6| |7|
| | | | | | | | | | | | | | | |
VÝBĚR |1| |2| |3| |4| |5| |6| |7| |8|
To umožní taktovat procesor vyšší frekvencí. Při ideálním běhu opustí
každý hodinový cykl jedna instrukce. Procesor K5 používá šestistavové
zřetězení, Nx586 sedmidstavové.
Druhá finta se nazývá superskalární architektura. Procesor s jedním
kanálem pro zřetězění a zpracování se nazývá skalární procesor.
Někteří možná uhodli, že superskalární procesor používá 2 a více
kanálů. První superskalární procesor byl a ještě je Pentium. Pentium
má dva kanály a v ideálním případě udělá tedy 2 instrukce najednou.
Dalším dvoukanálovým procesorem je M1.
DVOUKANÁLOVÁ SUPERSKALÁRNÍ ARCHITEKTURA
ZÁPIS | | | | | | | | | | | | |1|2| |3|4|
| | | | | | | | | | | | | | | | | |
VYKONÁNÍ | | | | | | | | | |1|2| |3|4| |5|6|
| | | | | | | | | | | | | | | | | |
OPERANDY | | | | | | |1|2| |3|4| |5|6| |7|8|
| | | | | | | | | | | | | | | | | |
DEKÓDOVÁNÍ | | | |1|2| |3|4| |5|6| |7|8| |9|A|
| | | | | | | | | | | | | | | | | |
VÝBĚR |1 2| |3 4| |5 6| |7 8| |9 A| |B C|
Návrháři procesoru
K5 kanály nešetřili a dali mu je rovnou 4. Superskalární
architektura procesoru Nx586 není tak jasná, protože si v jednom
hodinovém cyklu do kanálu zavede pouze jednu instrukci typu x86 a tu
si převede na více instrukcí typu Risc86 a ty už mohou být vykonávány
současně. Bohužel žádný z těchto procesorů není zatím schopen vykonat
maximální počet instrukcí, protože pro zpracování dvou a více
instrukcí platí přísná pravidla. Jestliže nemůžeme zavést dvě
instrukce najednou, vypadá situace následovně:
VLIV OMEZENÉHO ZAVÁDĚNÍ INSTRUKCÍ
ZÁPIS | | | | | | | | | | | | |1| | |2|3|
| | | | | | | | | | | | | | | | | |
VYKONÁNÍ | | | | | | | | | |1| | |2|3| |4| |
| | | | | | | | | | | | | | | | | |
OPERANDY | | | | | | |1| | |2|3| |4| | |5|6|
| | | | | | | | | | | | | | | | | |
DEKÓDOVÁNÍ | | | |1| | |2|3| |4| | |5|6| |7| |
| | | | | | | | | | | | | | | | | |
VÝBĚR |1 2| |2 3| |4 5| |5 6| |7 8| |8 9|
K zvýšení počtu případů, kdy mohou být dvě nebo čtyři instrukce
zpracovány najednou, přispívá vykonávání instrukcí mimo pořadí.
Jestliže toto architektura procesoru neumožňuje, mohou nastat
případy, kdy je jeden kanál vážně pozastaven kvůli druhému kanálu.
Například Pentium důsledně dodržuje zavádění instrukcí v pořadí
a ukončení instrukcí v pořadí. Cokoli pozastaví první kanál, nutně
pozastaví i druhý kanál.
VLIV POZASTAVENÍ ČINNOSTI INSTR. KANÁLU
ZÁPIS | | | |W| | | |W| |1| | | | | |2|3|
| | | | | | | | | | | | | | | | | |
VYKONÁNÍ | | | |1| | |1| | | | | |2|3| |4| |
| | | | | | | | | | | | | | | | | |
OPERANDY |1| | |2|3| |2|3| |2|3| |4| | |5|6|
| | | | | | | | | | | | | | | | | |
DEKÓDOVÁNÍ |2|3| |4| | |4| | |4| | |5|6| |7| |
| | | | | | | | | | | | | | | | | |
VÝBĚR |4 5| |5 6| |5 6| |5 6| |7 8| |8 9|
Vypadá to jako rozumné řešení,
ale není nejvýkonnější. Navrháři procesorů K5, M1 a Nx586 vymysleli
ukončení instrukce mimo pořadí. Je-li jeden kanál dočasně zastaven,
druhý běží dál. Procesor musí přirozeně zajistit, aby byla data
správně zapisována ve správném pořadí. Zavedení instrukce mimo pořadí
tuto myšlenku posunuje ještě dál. Procesor načítá instrukce mimo
pořadí stanovené programem. To však vyžaduje vyrovnávací paměť mezi
stadiem dekódování a vykonáním instrukce. Jestliže tedy procesor
zjistí, že danou instrukci nemůže provést, vyšle místo ní jinou,
zadanou programem později. Tuto fintu využívá procesor Nx586. Jeho
vyrovnávací paměť pojme maximálně 14 instrukcí.
Zpracování dvou instrukcí najednou má svoje pevné hranice, protože
některé instrukce nemohou být dokončeny před ostatními. Počítáme-li
výraz k*m + n, není možné vykonat násobení a sčítání najednou, ať
máte sebelepší procesor. Z aritmetického hlediska je to prostě
nepřípustné. Tato situace je nazývána pravá závislost dat. Výkon
snižují také dva druhy nepravé závislosti. Jestliže například dvě
intrukce zapisují výstupní data do stejného registru. Vykonání druhé
instrukce před první by způsobilo výstupní závislost mezi druhou
a první instrukcí. Procesor tedy musí zajistit, aby hodnota registru
byla aktualizována ve správný okamžik. Druhý typ nepravé závislosti
nástává tehdy, jestliže druhá instrukce přepsala data potřebná pro
vstup druhé.
Tyto závislosti jsou nejvíce nepříjemné pro procesory typu 80x86. Ty
mají pouze osm registrů, což je mnohem méně než mají běžné riscové
procesory. Předejít nepravé závislosti můžeme pomocí techniky, jež
zove se přejmenování registrů. Procesor, který tuto techniku
podporuje má implementováno více než osm fyzických registrů, které
definuje architektura 80x86. Jestliže instrukce potřebuje použít
registr, který je důležitý pro další instrukce, procesor ho dynamicky
přemapuje do jiného volného registru. Jestliže pak instrukce žádá
původní hodnotu registru, procesor registr přemapuje zpět. Procesor
Pentium tuto fintu nepodporuje (nebo ji Intel nezveřejnil). M1
obsahuje 32 fyzických registrů, K5 má 40 a Nx586 pouze 22.
Další nutností pro procesor je, aby byl kompatibilní s předchozími
procesory, tedy 80x86. To je jeden z největších problémů dnešních
návrhářů, protože architektura 80x86 je jedna z nejsložitějších.
Procesor tedy musí podporovat jak instrukční sadu, tak řídíci
registry, mechanismy protected modu a ošetřování vnějších událostí.
Přílišná složitost obrací návrháře k architektuře RISC. Ta má pevnou
délku všech instrukcí a všeobecně se vyhýbá složitým instrukcím.
Procesory K5, M1 a Nx586 mají jádro RISCového procesoru a mají
obvody, které překládají CISCové instrukce na RISCové. Rychlé
dekódování je tedy podmínkou pro zpracování několika instrukcí
najednou. Každý z výše popsaných RISCových procesorů používá jiný
mechanismus pro překlad.
Unikátně tuto situaci řeší K5. Ten generuje pro každý bajt zavedený
do vyrovnávací paměti bity předběžného dekódování. Ke každému bajtu
ve vyrovnávací paměti je přidruženo dalších pět bitů. Ty označují,
kde instrukce začíná a kde končí a kolik základních RISCových
instrukcí obsahuje. Mohlo by se zdát že předběžné dekódování
zpomaluje načítaní instrukcí do vyrovnávací paměti, ale není tomu
tak. Takto předzpracované instrukce pak jdou do konvertoru ROP, který
je přeloží na instrukce typu ROP. V procesoru Nx586 určuje délku
instrukce jednotka předvýběru instrukcí. Dekódovací a plánovací
jednotka je pak přeloží na instrukce typu RISC86. Procesor M1
vybírá během předběžného výběru až 16 bajtů instrukcí. U nich určí
délku a pošle je k dekódování.
Jedna z vlastností, která odlišuje procesory RISC od procesorů CISC
je jejich skvělý výkon při počítání s pohyblivou desetinnou čárkou,
kam patří operace s necelými čísli. Normálnímu uživateli (uředník,
sekretářka) to je fuk, protože i když pracují s desetinnými čísli,
které mají jedno nebo dvě desetinná místa, tak ty jsou v procesoru
reprezentována jako čísla celá. Největší pozornosti jednotce pro
práci s pohyblivou desetinnou čárkou se dostalo díky chybám procesoru
Pentium. Aritmetickou jednotku většinou používají pouze návrhářské
nebo inženýrské programy. Až do procesoru 80386 včetně byla
aritmetická jednotka jako další čip, který jste si mohli za dalši
finanční obnos dokoupit. Mezi tento typ procesorů patří dvoučipový
Nx586. Od procesoru 80486 implementoval Intel aritmetickou jednotku
do hlavního procesoru. Do této kategorie patří i K5 a M1.
Další překážka při zvyšování výkonu je malá rychlost paměti RAM. To
se řeší primární a sekundární vyrovnávací pamětí. Sekundární
vyrovnávací paměť je na Motherboardu, primární je přímo na procesoru.
Procesor K5 má 8KB cache pro data a 16KB cache pro instrukce.Tedy pro
instrukce je celkem 24KB, protože musíme připočíst bity předběžného
dekódování. Procesor M1 16KB cache, kam se zapisují data i instrukce.
Firma Cyrix tvrdí, že toto řešení je velice rychlé při krátkých
smyčkách. Procesor Nx586 má nejvíc cache ze všech. 16KB pro data
a 16KB pro instrukce. Navíc ještě obsahuje řadič sekundární cache. To
je sice rychlejší, ale končí tím kompatibilita vývodů s procesorem
Pentium i ostatními diskutovanými procesory. Pro procesor Nx586
nutně potřebujete Motherboard určený přímo pro něj.
Porovnání těchto čtyř procesorů berte pouze předběžně, protože
k dispozici je pouze Nx586 a Pentium. K5 by se měl začít prodávat
v nejbližších měsících. Jisté je jedno, že firma Intel defitivně
ztratila monopol na výrobu procesorů pro osobní počítače.
Dummy
vysvětlivky: - ROP - instrukční sada procesoru K5
- RISC86 - instrukční sada procesoru Nx586
- Registr - paměťové místo na čipu
výheň