• 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ň