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ň