Hlavní navigace

Architektura VLIW aneb pokus o překonání problémů architektur CISC a RISC

16. 8. 2011
Doba čtení: 20 minut

Sdílet

V dnešní části seriálu o architekturách počítačů se zaměříme na popis mikroprocesorů VLIW (Very Long Instruction Word). Jedná se o procesory, které dokážou zpracovávat větší množství instrukcí paralelně, ovšem bez nutnosti používání složitých technologií využívaných v superskalárních mikroprocesorech RISC a CISC.

Obsah

1. Malé shrnutí: mikroprocesory s architekturou CISC řízené mikrořadičem

2. RISC aneb zjednodušením interní struktury mikroprocesoru k vyššímu výpočetnímu výkonu

3. Superskalární mikroprocesory a jejich nedostatky

4. Architektura VLIW aneb pokus o překonání některých problémů architektur CISC a RISC

5. Rozdělení instrukčního slova do polí

6. Rizika spojená s mikroprocesory VLIW

7. Porovnání architektur RISC, CISC a VLIW

8. Mikroprocesor Intel 860

9. Odkazy na Internetu

1. Malé shrnutí: mikroprocesory s architekturou CISC řízené mikrořadičem

V předchozích čtrnácti částech seriálu o architekturách počítačů jsme se zabývali popisem práce mikroprocesorů s architekturou CISC (Complex Instruction Set Computer) a taktéž mikroprocesorů s architekturou RISC (Reduced Instruction Set Computer), ovšem s malou odbočkou, kterou jsme udělali směrem k některým typům zásobníkových procesorů (Stack Computers). Víme již, že v případě mikroprocesorů s klasickou architekturou CISC jsou všechny strojové instrukce, které jsou postupně načítané z operační paměti, rozkládány na různě dlouhou sekvenci takzvaných mikroinstrukcí a činnost celého procesoru je řízena mikrořadičem doplněným většinou mikroprogramovou pamětí (méně často je funkce řadiče v mikroprocesoru přímo „zadrátována“). To mimo jiné znamená, že – pokud se stále budeme bavit o klasické architektuře CISC – je každá strojová instrukce provedena až po uběhnutí relativně dlouhé doby měřené ve strojových cyklech, které jsou samy odvozeny od hodinového signálu.

Obrázek 1: 32bitový čip AMD 386DX je jedním z nejtypičtějších zástupců mikroprocesorů s komplexní instrukční sadou – CISC. Jeho instrukční sada obsahovala jak krátké jednobajtové instrukce, tak i různé jednobajtové instrukční prefixy (REP, REPZ …) a dlouhé instrukce využívající i složité adresní režimy (součet bázového registru s indexovým registrem vynásobeným konstantou a současně i offsetem apod.).

Hodinový signál však může být v mikroprocesoru rozložen na více fází (tj. může se využívat jak jeho vzestupná, tak i sestupná hrana), popř. se používají dva fázově posunuté hodinové signály (což je například i technologie použitá v minulosti u osmibitového mikroprocesoru Motorola 6800 s dvojicí hodinových signálů Φ1 a Φ2), takže vztah mezi hodinovou frekvencí a délkou trvání jednoho strojového cyklu nemusí být vždy na první pohled zcela zřejmý. Vzhledem k tomu, že každá instrukce je u mikroprocesorů s architekturou CISC prováděna pomocí sekvence mikroinstrukcí a samotný mikrořadič (resp. mikropro­gramovou paměť) lze relativně snadno a levně rozšiřovat, není divu, že mnohé mikroprocesory s touto architekturou obsahovaly a dodnes obsahují i velmi složité instrukce s mnoha adresními režimy, které pro svoje dokončení potřebovaly desítky a někdy i stovky strojových cyklů (navíc se konstruktéři mikroprocesorů snažili o vytvoření ortogonální instrukční sady, což mnohdy situaci dále komplikovalo).

Obrázek 2: Struktura mikroprocesoru Motorola MC6800, který pro svoji funkci vyžadoval dvojici nepřekrývajících se hodinových signálů, které umožňovaly interně rozložit jeden takt na čtyři fáze.
(Zdroj obrázku: Wikipedia)

2. RISC aneb zjednodušením interní struktury mikroprocesoru k vyššímu výpočetnímu výkonu

Zcela opačným směrem se však vydali tvůrci mikroprocesorů s architekturou RISC. Tyto mikroprocesory obsahovaly již od své první generace poměrně malé množství instrukcí, které byly navíc (co se týče samotných prováděných operací) velmi jednoduché – například aritmetické instrukce pracují pouze s pracovními registry, nikoli s daty uloženými v operační paměti, u RISCových procesorů vůbec nenajdeme obdobu instrukčních prefixů typu REP, REPZ, REPNZ atd. Díky tomu bylo možné zcela odstranit mikroprogramový řadič, rozložit provádění všech instrukcí na většinou čtyři či pět fází a současně i umožnit (díky existenci instrukční pipeline), aby v každé fázi byla rozpracována v ideálním případě jedna instrukce, což v důsledku znamenalo, že procesory s architekturou RISC mohly při špičkovém výkonu v každém strojovém cyklu začít zpracovávat novou instrukci a současně dokončit instrukci jinou (posunutou o zmíněné čtyři fáze či pět fází).

Obrázek 3: Známý a v minulosti velmi často používaný 32bitový mikroprocesor Motorola M68000 patří mezi zástupce architektury CISC s téměř ortogonální instrukční sadou (jednu výjimku z ortogonální instrukční sady představuje rozdělení registrů na datové registry a adresové registry).

Ve skutečnosti je však výše naznačené dělení mikroprocesorů na čipy s architekturou RISC a čipy s architekturou CISC v mnoha případech poněkud umělé, protože mnohé mikroprocesory se svými vlastnostmi nachází na pomezí mezi RISC a CISC. Například už jen přidání násobičky a děličky do mnoha původně čistě RISCových mikroprocesorů je vlastně krok stranou od RISCové architektury, ostatně u některých RISCových mikroprocesorů představují instrukce pro násobení a dělení určitou výjimku prováděnou mimo vlastní „jednocyklovou“ aritmeticko-logickou jednotku a navíc se tyto instrukce mnohdy provádí s odlišnými (specializovanými) registry. Aby se dělení procesorů podle architektur ještě dále komplikovalo, jsou některé moderní mikroprocesory vybaveny komplexní instrukční sadou (tj. z hlediska programátora se jedná o procesor CISC), ale mají RISCové jádro. Proto je také v mnoha případech vhodnější odlišovat formát instrukční sady od interního uspořádání procesoru, což se týká i procesorů VLIW popsaných v dalším textu.

Obrázek 4: Mikroprocesor řady UltraSPARC je zástupcem moderních RISCových procesorů.

3. Superskalární mikroprocesory a jejich nedostatky

Největší změny v interním uspořádání mikroprocesorů RISC a současně i určitý odklon od principů, na nichž byla architektura RISC původně postavena, přišly ve chvíli, kdy konstruktéři mikroprocesorů přešli ve snaze o zvyšování výpočetního výkonu k takzvaným superskalárním mikroprocesorům, tj. k čipům, které dokázaly v každém strojovém cyklu začít zpracovávat větší množství instrukcí. Tyto mikroprocesory byly ve většině případů vybaveny dvěma či větším množstvím relativně samostatně pracujících instrukčních pipeline a někdy i větším množstvím aritmeticko-logických jednotek, nezávisle na ALU pracujícími jednotkami pro bitové posuny a rotace (barrel shifter), jednotkami pro komunikaci s operační pamětí atd. O rozhodnutí, které instrukce se skutečně mohou zpracovávat paralelně v oddělených instrukčních pipeline, se přitom starala přímo logika zabudovaná v mikroprocesoru, viz též minule zmíněná technologie out of order execution. To mělo nespornou výhodu v tom, že bylo možné zajistit zpětnou binární kompatibilitu, i když starší programový kód nemusel být na superskalárním procesoru prováděn optimálně.

Obrázek 7: Instrukční sada mikrořadiče M68HC05 s architekturou CISC. Instrukce mají podle svého typu a adresního režimu různou délku.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Díky prediktorům skoků, spekulativnímu provádění instrukcí, provádění instrukcí mimo pořadí (out of order), přejmenovávání registrů (register renaming) a samozřejmě i díky superskalární architektuře se sice dařilo neustále zvyšovat výpočetní výkon mikroprocesorů RISC a později i CISC (například známý čip Pentium s mikroarchitek­turou P5 obsahoval dvě instrukční pipeline a současně i samostatně pracující matematický koprocesor), ovšem na úkor neustále se zvyšující interní složitosti čipů, což platí zejména pro technologii provádění instrukcí mimo pořadí, která vyžaduje zcela přepracovanou strukturu mikroprocesoru. Proto není divu, že se někteří konstruktéři mikroprocesorů a především digitálních signálových procesorů při návrhu některých čipů vrátili k relativně staré myšlence instrukčního paralelismu, jenž by však byl zabudován přímo v instrukční sadě a nikoli v samotném mikroprocesoru. Jinými slovy by se starost o paralelizaci instrukcí (což je jedna z nejúčinnějších metod zvýšení výpočetního výkonu) v aplikacích přenesla na překladač, popř. na programátora vytvářejícího své programy přímo v assembleru. Jednu z alternativ představuje i architektura VLIW.

Obrázek 8: Mikroprocesor Intel Pentium s hodinovou frekvencí 66 MHz, který je postavený na mikroarchitektuře P5. Jedná se sice o procesor CISC, je ovšem vybaven dvojicí paralelně pracujících pipeline a tudíž se jedná o superskalární procesor. O tom, že vytvořit superskalární CISCový procesor nebyla jednoduchá záležitost (ve své době se dokonce hodně příznivců RISCových procesorů vyjadřovalo v tom smyslu, že je to kvůli špatně navržené instrukční sadě x86 dokonce nemožné), svědčí i to, že ve vývojovém týmu Pentia bylo zaměstnáno přibližně 200 inženýrů (zatímco například RISC I je výsledek práce dvou až tří lidí).

4. Architektura VLIW aneb pokus o překonání některých problémů architektur CISC a RISC

Název architektury VLIW, neboli Very Long Instruction Word, již částečně vysvětluje, čím se tato architektura odlišuje od mikroprocesorů CISC a RISC. Připomeňme si, že mikroprocesory s architekturou CISC mívají ve velkém množství případů instrukční sadu s proměnnou délkou instrukčních slov (jedná se například o známou řadu Intel 8008 pokračující až k rodině i386, ale i o mnohé další mikroprocesory). Instrukce, které se v instrukční sadě nachází, mohou být i poměrně složité a mohou obsahovat různé adresní režimy, ovšem v každém instrukčním slovu je většinou uložena pouze jedna operace, v mezním případě operace prováděná nad vektorem (rozšíření instrukčních sad o instrukce MMX a SSE). Na druhou stranu procesory RISC mají naopak instrukční sadu s instrukcemi pevné délky (většinou jde o 32bitové instrukce), a opět platí, že v každé instrukci je uložena pouze jedna operace, například načtení slova z operační paměti, součet dvou pracovních registrů, uložení konstanty do pracovního registru či provedení podmíněného popř. nepodmí­něného skoku.

Obrázek 9: Ukázka kódování instrukcí různé délky. Tyto instrukce jsou použity u mikroprocesorů patřících do rodiny x86 v 32bitovém režimu.

Při přechodu původně čistě skalárních čipů s architekturami CISC a RISC na superskalární procesory to ovšem znamená, že superskalární čipy musí načíst větší množství instrukcí a potom tyto instrukce vhodným způsobem rozeslat do jednotlivých instrukčních front. Superskalární procesory musí současně řešit i vzniklé konflikty při přístupu k pracovním registrům atd. (u některých jednodušších procesorů však konflikty nejsou řešeny, popř. se při konfliktu pouze vygeneruje výjimka). To vše je daň zaplacená za flexibilitu instrukční sady. Naproti tomu se u mikroprocesorů VLIW používá zcela odlišný instrukční formát, který má ovšem zcela zásadní vliv na interní strukturu těchto mikroprocesorů. U VLIW se používají instrukce pevné délky, podobně jako je tomu u RISC, ovšem délka těchto instrukcí je (mnohem) delší, než 32 bitů, dosahuje řádově šířky několik desítek i stovek bitů. Je tomu tak z toho důvodu, že každé instrukční slovo je rozděleno do většího množství polí (fields), přičemž v každém poli je umístěn kód jedné operace.

Obrázek 10: Kvůli složitým adresním režimům mají instrukce procesorů x86 rozdílnou délku. Na tomto obrázku je jedna instrukce s adresováním registru (délka jeden bajt), načtení 32bitové konstanty do pracovního registru (délka 1+4 bajty) a konečně komplexní adresování pomocí indexového registru (vynásobeného konstantou) a offsetu (délka 6 bajtů).

5. Rozdělení instrukčního slova do polí

V předchozí kapitole jsme si řekli, že u mikroprocesorů s architekturou VLIW je instrukční slovo rozděleno do několika polí, které mohou být buď pevné délky („klasický“ VLIW), nebo délky proměnné (v tomto případě se můžeme setkat s označením EPIC, popř. s dalšími obchodními názvy). Pokud se tedy například v jednom instrukčním slovu nachází pět polí, lze do instrukčního slova zakódovat až pět různých operací, které se mohou začít spouštět paralelně, protože mikroprocesor s architekturou VLIW nemusí provádět žádnou kontrolu, zda se skutečně jedná o operace, jenž se mohou paralelně spustit – slučování operací do instrukčních slov je zcela záležitostí překladače (ten samozřejmě musí při překladu brát v potaz interní strukturu mikroprocesoru, a to v mnohem větší míře, než je tomu u procesorů RISC a CISC). Navíc se mikroprocesor s architekturou VLIW vůbec nemusí složitě snažit o rozdělování jednotlivých operací do instrukčních pipeline, protože i to je předem určeno překladačem – pozicí operace v instrukčním slo­vu.

Obrázek 11: Některé možnosti rozdělení dlouhého instrukčního slova do polí odlišné délky a rozdílné funkce.

V praxi to například může znamenat, že v jednom „dlouhém“ instrukčním slovu se mohou nacházet kódy dvou operací pro celočíselnou aritmeticko-logickou jednotku, jeden kód operace skoku, jeden kód operace určené pro provedení matematickým koprocesorem a navíc poslední kód operace pro načtení či uložení operandů z operační paměti (některé procesory VLIW navíc obsahují i jednotky pro provádění grafických operací). Instrukční slovo rozdělené do polí sice může na první pohled vypadat složitě, skutečnost je ovšem taková, že mikroprocesor s architekturou VLIW je interně mnohem jednodušší (a tím pádem i levnější a současně i méně energeticky náročný), než superskalární mikroprocesor s architekturou RISC, vůbec již nemluvě o složitosti stejně výkonného superskalárního mikroprocesoru s architekturou CISC, což je taktéž jeden z důvodů, proč se dnešní mikroprocesory řady x86 sice navenek chovají jako procesory CISC, mají ovšem mnohdy RISCové jádro.

Obrázek 12: Některé digitální signálové procesory TMS řady 320C6× jsou založené na architektuře VLIW.

6. Rizika spojená s mikroprocesory VLIW

Ovšem právě ve zvoleném formátu instrukcí s pevně zadanými poli se skrývá největší potenciální problém celé architektury VLIW – skutečná výkonnost mikroprocesorů VLIW v praxi je totiž zcela závislá na překladači. Pokud se překladači nebude z různých důvodů dařit ukládat do instrukčního slova více paralelně spouštěných operací (tj. pole budou obsahovat většinou pouze instrukce NOP) sníží se razantně reálný výpočetní výkon, což není pouze teoretická hrozba, neboť právě nedostatky překladačů způsobily u několika procesorů VLIW obchodní neúspěch. Názorným příkladem může být mikroprocesor Intel 860 (viz též další kapitoly), který sice nebyl po technologické stránce úplně špatný, ale překladače dostupné v době jeho uvedení na trh nedokázaly jeho předností využít, takže výpočetní výkon dosahovaný v reálných aplikacích zaostával za tvrzením výrobce (který samozřejmě měl prostředky na ruční optimalizaci syntetických výkonnostních benchmarků).

Obrázek 13: Interní struktura digitálních signálových procesorů TMS řady 320C6×.

Další nevýhodou mikroprocesorů s architekturou VLIW je to, že při každé změně interní struktury mikroprocesoru, například po přidání další pomocné aritmeticko-logické jednotky, je nutné provést nový překlad programů, což není u procesorů CISC a RISC (samozřejmě v případě, že náleží do stejné rodiny) nutné. Příkladem může být právě rodina x86 zaručující již po tři desetiletí zpětnou binární kompatibilitu. Dalším příkladem jsou některé rodiny RISCových procesorů, u nichž se postupně zvyšoval počet registrových oken, zaváděly se nové prediktory skoků a další technologie, ovšem původní programy mohly zůstat beze změny. Možná právě binární nekompatibilita mezi procesory VLIW (kterou už z principu nejde jednoduše obejít) způsobila, že tyto mikroprocesory najdeme spíše ve specializovaných zařízeních a nikoli například u desktopových počítačů. Architektura VLIW se taktéž používala a používá u digitálních signálových procesorů, protože se jedná o další oblast, kde výrobce (většinou) dodává jak samotné zařízení s DSP, tak i příslušné programové vybavení, takže má větší kontrolu nad HW i SW a může si dovolit využít i poněkud neortodoxní architektury.

Obrázek 14: Mikroprocesor Itanium je taktéž založen na architektuře VLIW (i když poněkud modifikované).

7. Porovnání architektur RISC, CISC a VLIW

V následující tabulce je pro ilustraci provedeno vzájemné porovnání některých vlastností mikroprocesorů s architekturami RISC, CISC a VLIW. Povšimněte si především poměrně velkého množství shodných vlastností mezi architekturami RISC a VLIW:

Charakteristika Procesory CISC Procesory RISC Procesory VLIW
Interní struktura mikrořadič bez mikrořadiče bez mikrořadiče
Počet pipeline jedna (pro skalární CPU) jedna (pro skalární CPU) větší množství pipeline
Přístup do paměti různé adresovací režimy architektura Load&Store architektura Load&Store
Délka instrukcí proměnná (většinou od jednoho bajtu) fixní, většinou 32bitů fixní, desítky až stovky bitů
Formát instrukcí proměnný pouze několik formátů (ALU operace, skoky, Load&Store, načtení konstanty) fixní
Složitost instrukcí proměnná jedna instrukce=jedna základní operace více jednodušších, na sobě nezávislých operací
Počet registrů relativně malé množství větší množství (většinou alespoň 32) větší množství
Funkce registrů rozdělení pro: aritmetické operace, adresování, indexové registry… obecné pracovní registry obecné pracovní registry (někdy dělené do skupin)
Příklady CPU Intel 8080
MOS 6502
Zilog Z80
Motorola 68k
Intel 80386
Intel Pentium
RISC I
RISC II
MIPS
SPARC
UltraSPARC
PA-RISC
TMS320C6× (DSP)
SHARC (DSP)
Itanium
Transmeta Crusoe (interně)
jádra ST200 (HP a STM)

Obrázek 15: Interní struktura mikroprocesorů Itanium.

8. Mikroprocesor Intel 860

Jedním ze známých (ale současně komerčně neúspěšných) typů mikroprocesorů s architekturou VLIW byly mikroprocesory i860. Tyto procesory navrhla firma Intel a představila je již v roce 1989 jakožto výkonné mikroprocesory určené pro pracovní stanice, výpočetní servery, popř. pro grafické akcelerátory (kde byly skutečně v jeden čas používány). V propagačních materiálech byly tyto čipy poněkud nadneseně označovány sloganem „Cray on a Chip“. Jednalo se v podstatě o výkonný signálový procesor (DSP – Digital Signal Processor) podporující celočíselné i základní FP operace, který byl navíc vybavený jednotkou specializovanou pro provádění grafických operací použitelných například při vyplňování trojúhelníků, vykreslování poloprůhledných ploch atd. Mikroprocesor i860 obsahoval 32 třicetidvou­bitových registrů určených pro provádění běžných celočíselných aritmetických i logických operací a dále pak 16 registrů o šířce 64 bitů (rozdělitelných na 32 třicetidvou­bitových registrů) použitelných pro operace prováděné s hodnotami uloženými ve formátu plovoucí řádové tečky (čárky).

pc93

Obrázek 16: Mikroprocesor Intel i860.

Cloud23

Kromě klasické aritmeticko-logické jednotky (ALU) určené pro provádění celočíselných operací obsahoval mikroprocesor Intel i860 i dvě specializované funkční jednotky, které dohromady můžeme označit jako zjednodušený, ale o to rychlejší matematický koprocesor. První z těchto jednotek byl FP adder, s jehož pomocí bylo možné provádět součty, rozdíly, porovnání a konverze čísel uložených v systému plovoucí řádové tečky. Druhá jednotka nazvaná FP multiplier sloužila (jak jste pravděpodobně již sami uhodli) k součinu dvou čísel a taktéž k výpočtu převrácené hodnoty. Dělení nebylo přímo podporováno, ale vzhledem k možnosti výpočtu převrácené hodnoty to vlastně ani nebylo nutné. Všechny tři základní jednotky, tj. ALU, FP adder a FP multiplier pracovaly paralelně, přičemž paralelismus byl podporován přímo v instrukční sadě. Podrobnější informace o tomto mikroprocesoru i o jeho instrukční sadě si uvedeme v následující části tohoto seriálu.

pc93

Obrázek 17: Při výpočtu mlhy je nutné provést pro každý vykreslovaný fragment (fragment je, zjednodušeně řečeno, entita nesoucí informaci o jednom pixelu doplněnou o další atributy, například hloubku/vzdálenost fragmentu od pozorovatele) smíchání původní barvy fragmentu s barvou mlhy, přičemž poměr mezi původní barvou a barvou mlhy je určen na základě vzdálenosti fragmentu od pozorovatele a hustoty mlhy. Tuto operaci lze na mikroprocesoru Intel i860 implementovat poměrně snadno, především při použití jeho „grafických“ operací.

9. Odkazy na Internetu

  1. An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture
    Philips Semiconductors
  2. COSC2425: PC Architecture and Machine Language, PC Assembly Language
    http://www.au­stincc.edu/rblac­k/courses/COS­C2425/index.html
  3. Great Microprocessors of the Past and Present: Motorola 88000, Late but elegant (mid 1988) . . .
    http://www.unix­hub.com/docs/mis­c/cpu.html#88000
  4. badabada.org (rozcestník s informacemi čipech Motorola 88000)
    http://badaba­da.org/index.html
  5. Motorola 88000 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mo­torola_88000
  6. Motorola MC88100 (Wikipedia)
    http://en.wiki­pedia.org/wiki/MC88100
  7. Motorola MC88110 (Wikipedia)
    http://en.wiki­pedia.org/wiki/MC88110
  8. AMD Am29000 microprocessor family
    http://www.cpu-world.com/CPUs/29­000/
  9. AMD 29k (Streamlined Instruction Processor) ID Guide
    http://www.cpushac­k.com/Am29k.html
  10. AMD Am29000 (Wikipedia)
    http://en.wiki­pedia.org/wiki/AM­D_Am29000
  11. AMD K5 („K5“ / „5k86“)
    http://www.pcgu­ide.com/ref/cpu­/fam/g5K5-c.html
  12. Sixth Generation Processors
    http://www.pcgu­ide.com/ref/cpu­/fam/g6.htm
  13. Great Microprocessors of the Past and Present
    http://www.cpushac­k.com/CPU/cpu­1.html
  14. Philip Koopman: Stack Computers: the new wave
    http://www.ece­.cmu.edu/~koop­man/stack_com­puters/conten­ts.html
  15. Hewlett Packard PA-8800 RISC (LOSTCIRCUITS)
    http://www.los­tcircuits.com/mam­bo//index.php?op­tion=com_conten­t&task=view&id=42&I­temid=42
  16. PA-RISC 1.1 Architecture and Instruction Set Reference Manual
    http://h21007­.www2.hp.com/por­tal/download/fi­les/unprot/pa­risc/pa1–1/acd.pdf
  17. Fotografie mikroprocesorů HP PA (stránka 1)
    http://www.chip­db.org/cat-pa-risc-592.htm
  18. Fotografie mikroprocesorů HP PA (stránka 2)
    http://www.chip­db.org/cat-pa-risc-592.htm?page=2
  19. Fotografie mikroprocesorů HP PA (stránka 2)
    http://www.chip­db.org/cat-pa-risc-592.htm?page=3
  20. PA-RISC (Wikipedia)
    http://en.wiki­pedia.org/wiki/PA-RISC
  21. The Great CPU List: Part VI: Hewlett-Packard PA-RISC, a conservative RISC (Oct 1986)
    http://jbayko­.sasktelwebsi­te.net/cpu4.html
  22. HP 9000/500 FOCUS
    http://www.open­pa.net/system­s/hp-9000_520.html
  23. HP FOCUS Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/HP_FO­CUS
  24. HP 3000 (Wikipedia)
    http://en.wiki­pedia.org/wiki/HP_3000
  25. The SPARC Architecture Manual Version 8 (manuál v PDF formátu)
    http://www.spar­c.org/standar­ds/V8.pdf
  26. The SPARC Architecture Manual Version 9 (manuál v PDF formátu)
    http://develo­pers.sun.com/so­laris/articles/spar­cv9.pdf
  27. SPARC Pipelining
    http://www.aca­demic.marist.e­du/~jzbv/archi­tecture/Projec­ts/S2002/SPAR­C/pipelining.html
  28. SPARC Instruction
    http://www.aca­demic.marist.e­du/~jzbv/archi­tecture/Projec­ts/S2002/SPAR­C/inst_set.html
  29. OpenSPARC
    http://www.open­sparc.net/
  30. History of SPARC systems 1987 to 2010
    http://www.spar­cproductdirec­tory.com/histo­ry.html
  31. Sun-1 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Sun-1
  32. Sun-2 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Sun-2
  33. Sun-3 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Sun-3
  34. Sun386i (Wikipedia)
    http://en.wiki­pedia.org/wiki/Sun386i
  35. Sun 386i/250
    http://sites.in­ka.de/pcde/si­te/sun386i.html
  36. SPARC Instruction Set
    http://www.aca­demic.marist.e­du/~jzbv/archi­tecture/Projec­ts/S2002/SPAR­C/inst_set.html
  37. MIPS Architecture Overview
    http://tams-www.informatik.uni-hamburg.de/ap­plets/hades/web­demos/mips.html
  38. MIPS Technologies R3000
    http://www.cpu-world.com/CPUs/R3­000/
  39. CPU-collection: IDT R3010 FPU
    http://www.cpu-collection.de/?tn=0&l0­=co&l1=IDT&l2=R3010+F­PU
  40. The MIPS R2000 Instruction Set
    http://suraj.lum­s.edu.pk/~cs423a0­5/Reference/MIP­SCodeTable.pdf
  41. Maska mikroprocesoru RISC 1
    http://www.cs­.berkeley.edu/~pat­trsn/Arch/RIS­C1.jpg
  42. Maska mikroprocesoru RISC 2
    http://www.cs­.berkeley.edu/~pat­trsn/Arch/RIS­C2.jpg
  43. The MIPS Register Usage Conventions
    http://pages.cs­.wisc.edu/~cs354–2/beyond354/con­ventions.html
  44. C.E. Sequin and D.A.Patterson: Design and Implementation of RISC I
    http://www.eec­s.berkeley.edu/Pub­s/TechRpts/1982/CSD-82–106.pdf
  45. Berkeley RISC
    http://en.wiki­pedia.org/wiki/Ber­keley_RISC
  46. Great moments in microprocessor history
    http://www.ib­m.com/developer­works/library/pa-microhist.html
  47. Microprogram-Based Processors
    http://resear­ch.microsoft.com/en-us/um/people/gbe­ll/Computer_Struc­tures_Principles_an­d_Examples/csp0167­.htm
  48. A Brief History of Microprogramming
    http://www.cs­.clemson.edu/~mar­k/uprog.html
  49. Architecture of the WISC CPU/16
    http://www.ece­.cmu.edu/~koop­man/stack_com­puters/sec4_2­.html
  50. Zásobníkový procesor WISC CPU/16 (Root.CZ)
    http://www.ro­ot.cz/clanky/pro­gramovaci-jazyk-forth-a-zasobnikove-procesory-16/#k03
  51. Writable instruction set, stack oriented computers: The WISC Concept
    http://www.ece­.cmu.edu/~koop­man/forth/roches­ter87.pdf
  52. The Great CPU List: Part X: Hitachi 6301 – Small and microcoded (1983)
    http://jbayko­.sasktelwebsi­te.net/cpu2.html#Sec2Par­t10
  53. What is RISC?
    http://www-cs-faculty.stanfor­d.edu/~erober­ts/courses/so­co/projects/2000–01/risc/whatis/
  54. RISC vs. CISC
    http://www-cs-faculty.stanfor­d.edu/~erober­ts/courses/so­co/projects/2000–01/risc/risccisc/
  55. RISC and CISC definitions:
    http://www.cpushac­k.com/CPU/cpu­AppendA.html
  56. The Evolution of RISC
    http://www.ib­m.com/developer­works/library/pa-microhist.html#si­debar1
  57. SPARC Processor Family Photo
    http://thenet­workisthecompu­ter.com/site/?p=243
  58. SPARC: Decades of Continuous Technical Innovation
    http://blogs.o­racle.com/onthe­record/entry/spar­c_decades_of_con­tinuous_techni­cal
  59. The SPARC processors
    http://www.top500­.org/2007_over­view_recent_su­percomputers/spar­c_processors
  60. Maurice V. Wilkes Home Page
    http://www.cl­.cam.ac.uk/ar­chive/mvw1/
  61. Papers by M. V. Wilkes (důležitá je především jeho práce číslo 35)
    http://www.cl­.cam.ac.uk/ar­chive/mvw1/list-of-papers.txt
  62. Microprogram Memory
    http://free-books-online.org/com­puters/advanced-computer-architecture/mi­croprogram-memory/
  63. First Draft of a report on the EDVAC
    http://qss.stan­ford.edu/~god­frey/vonNeuman­n/vnedvac.pdf
  64. Introduction to Microcontrollers
    http://www.pic24mi­cro.com/cisc_vs_ris­c.html
  65. Reduced instruction set computing (Wikipedia)
    http://en.wiki­pedia.org/wiki/Re­duced_instruc­tion_set_compu­ter
  66. MIPS architecture (Wikipedia)
    http://en.wiki­pedia.org/wiki/MIP­S_architecture
  67. Very long instruction word (Wikipedia)
    http://en.wiki­pedia.org/wiki/Ve­ry_long_instruc­tion_word
  68. Classic RISC pipeline (Wikipedia)
    http://en.wiki­pedia.org/wiki/Clas­sic_RISC_pipe­line
  69. R2000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R2000_(mi­croprocessor)
  70. R3000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R3000
  71. R4400 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R4400
  72. R8000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R8000
  73. R10000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R10000
  74. SPARC (Wikipedia)
    http://en.wiki­pedia.org/wiki/Sparc
  75. SPARC Tagged Data – otázka
    http://compiler­s.iecc.com/com­parch/article/91–04–079
  76. SPARC Tagged Data – odpověď #1
    http://compiler­s.iecc.com/com­parch/article/91–04–082
  77. SPARC Tagged Data – odpověď #2
    http://compiler­s.iecc.com/com­parch/article/91–04–088
  78. CPU design (Wikipedia)
    http://en.wiki­pedia.org/wiki/CPU_de­sign
  79. Control unit (Wikipedia)
    http://en.wiki­pedia.org/wiki/Con­trol_unit
  80. Microcode (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­crocode
  81. Microsequencer (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­crosequencer
  82. Maurice Wilkes (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mau­rice_Wilkes
  83. Micro-operation (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­cro-operation
  84. b16 stack processor
    http://www.jwdt­.com/~paysan/b16­.html
  85. Color Forth (Chuck Moore home page)
    http://www.co­lorforth.com/
  86. colorForth Instructions
    http://www.co­lorforth.com/in­st.htm
  87. SEAforth 40C18
    http://www.in­tellasys.net/in­dex.php?option=com_con­tent&task=view&id=60&I­temid=75
  88. Bit slicing
    http://en.wiki­pedia.org/wiki/Bit_sli­cing
  89. Bitslice DES
    http://www.dar­kside.com.au/bit­slice/
  90. Great Microprocessors of the Past and Present: Part VII: Advanced Micro Devices Am2901, a few bits at a time …
    http://www.cpushac­k.com/CPU/cpu­1.html#Sec1Par­t7

Autor článku

Pavel Tišnovský vystudoval VUT FIT a v současné době pracuje ve společnosti Red Hat, kde vyvíjí nástroje pro OpenShift.io.