Mikroprocesory s architekturou RISC I

24. 5. 2011
Doba čtení: 16 minut

Sdílet

V dnešní části seriálu o architekturách počítačů navážeme na část předchozí, v níž jsme si vysvětlili principy, na nichž jsou postaveny procesory s architekturou RISC. Dnes si popíšeme architekturu mikroprocesorů, která dala celému směru vývoje těchto čipů jméno – mikroprocesory s architekturou RISC I.

Obsah

1. Mikroprocesory s architekturou RISC I

2. Vznik architektury RISC I – výpočetní výkon VAXu 11/780 na jediném čipu

3. Formát instrukcí procesoru RISC I

4. Aritmetické a logické instrukce procesoru RISC I

5. Instrukce typu Load a Store

6. Skoky a práce se stavovým slovem procesoru

7. Porovnání mikroprocesorů RISC I s konkurenční architekturou­ 80×86

8. Branch delay sloty

9. Odkazy na Internetu

1. Mikroprocesory s architekturou RISC I a RISC II

V předchozí části seriálu o architekturách počítačů jsme si řekli základní informace o technologii mikroprocesorů, která je pojmenovaná RISC (Reduced Instruction Set Code či taktéž Reduced Instruction Set Computer). Mikroprocesory s touto architekturou se vyznačují především poměrně malým počtem instrukcí (typicky je v instrukční sadě 32 instrukcí), přičemž se většinou jedná o instrukce poměrně jednoduché, jejichž operační část lze provést v jediném strojovém cyklu. Navíc se v instrukční sadě od sebe separují aritmetické a logické instrukce na straně jedné a instrukce pro načítání a ukládání operandů do operační paměti (load&store) na straně druhé. Aritmetické a logické instrukce pracují striktně pouze s obsahem pracovních registrů, jichž obecně bývá větší množství, než je tomu na typických architekturách CISC. Cílem všech těchto změn v architektuře procesorů je snížit plochu čipu nutnou pro implementaci řadiče a taktéž umožnit to, aby se každá instrukce provedla v jednom strojovém cyklu.

Obrázek 1: Mikroprocesor PA RISC firmy Hewlett-Packard, který je na této fotografii zobrazen spolu s dalšími podpůrnými obvody a paměťmi cache, jež jsou nedílnou součástí prakticky všech procesorů s architekturou­ RISC.

To ve skutečnosti není možné provést, protože je nejprve zapotřebí načíst operační kód instrukce, posléze načíst operandy, dále provést vlastní operaci a následně uložit výsledek operace do některého z pracovních registrů. Ovšem díky pipeline zabudované do mikroprocesorů RISC je skutečně v každém strojovém cyklu dokončena jedna instrukce, přičemž se další dvě, tři či čtyři instrukce nachází v rozpracovaném stavu. Minule jsme se taktéž zmínili o vzniku architektury MIPS (Microprocessor without Interlocked Pipeline Stages) na univerzitě ve Stanfordu. Dnes se budeme zabývat konkurenčním a přitom v mnoha ohledech podobným projektem zahájeným v roce 1980 na známé univerzitě v Berkeley. Tento projekt vedený Davidem Pattersonem a Carlem H. Sequinem byl zaměřen na návrh nové architektury mikroprocesorů s vysokým výpočetním výkonem dosaženým díky použití pipeline a taktéž takzvaných registrových oken. Tato architektura byla nazvána jednoduše RISC a teprve později, až se prokázaly její výhodné vlastnosti, se toto označení začalo používat i pro podobné typy čipů.

Obrázek 2: Mikroprocesor s instrukční sadou MIPS. Čipy obsahující jádra těchto RISCových mikroprocesorů se v současnosti používají v mnoha vestavěných zařízeních, například přehrávačích videa, routerech atd. I když se jedná o málo známou skutečnost, patří mikroprocesory MIPS mezi jedny z nejrozšířenějších typů procesorů současnosti a možná i překonávají v celkovém počtu prodaných kusů architekturu i386/x86_64.

2. Vznik architektury RISC I – výpočetní výkon VAXu 11/780 na jediném čipu

Konečný návrh architektury RISC I byl publikován v roce 1981 v ACM a první vzorky funkčních čipů vytvořených podle tohoto návrhu byly dostupné o několik měsíců později. Jednalo se – tak jak to bylo ostatně prvotním záměrem jeho autorů – o velmi jednoduchý mikroprocesor s pouze 44 tisíci tranzistory, jehož instrukční sada obsahovala pouze 31 instrukcí popsaných v dalších kapitolách. Naproti tomu počet pracovních registrů byl na svou dobu (a vlastně i na dnešní dobu) velmi vysoký, protože na ploše čipu bylo umístěno celkem 78 univerzálních 32bitových pracovních registrů. Jsme si již řekli v předchozí části tohoto seriálu, byly pracovní registry rozděleny do takzvaných registrových oken, přičemž do každého okna náleželo 14 registrů a oken bylo celkem 6 (částečně se překrývala). Navíc bylo prvních 10 pracovních registrů přístupných pro běžící program stále, bez závislosti na právě aktuálně nastaveném registrovém okně. Právě technologie registrového okna představovala největší rozdíl mezi architekturou RISC I a architekturou již minule zmíněných procesorů MIPS.

Obrázek 3: Maska použitá při výrobě mikroprocesoru RISC I.
Zdroj: C.E. Sequin and D.A.Patterson: Design and Implementation of RISC I

Registrové okno bylo posouváno automaticky při provádění instrukcí CALL a CALLR (relativní skok s uložením návratové adresy do zvoleného pracovního registru); naopak při provádění instrukcí RET (návrat z volané procedury) a RETINT (návrat z volané procedury a povolení přerušení) bylo okno posunuto směrem dolů, což se vlastně rovnalo obnovení původního zásobníkového rámce na jiných typech procesorů. Poměrně zajímavý je fakt, že díky pouhým 31 relativně jednoduchým instrukcím zabíral řadič a instrukční dekodér pouze šest procent plochy čipu (a úměrně s tím i počet tranzistorů), což je v přímém kontrastu s mnoha procesory s architekturou CISC, kde tyto dva moduly mnohdy zabíraly i celou polovinu plochy čipu. V současnosti je ovšem situace poněkud odlišná, zejména kvůli tomu, že na čipu moderních mikroprocesorů bývá v mnoha případech umístěn i matematický koprocesor (FPU), jednotka při řízení přístupu do paměti (MMU) a taktéž vyrovnávací paměti programu i dat (code cache, data cache), takže se relativní podíl plochy čipu/počet tranzistorů nutný pro implementaci řadiče neustále snižuje.

Obrázek 4: Mikroprocesor HP PA-RISC 7300LC (PA=Precision Architecture). Jedná se moderní variantu procesorů RISC se zabudovaným matematickým koprocesorem a sadou 32bitových celočíselných registrů a taktéž 64bitových registrů pro FPU operace.
Zdroj: Wikipedia

Testovací čipy RISC I sice nedosáhly takového výpočetního výkonu, jak bylo očekáváno, protože každý krok instrukce trval dvě milisekundy namísto očekávaných 400 nanosekund, ovšem podle předpokladů se jednalo o problém vzniklý při fyzické výrobě čipu či masky, nikoli o problém na logické úrovni, protože následovník tohoto čipu – RISC II – již pracoval bez problémů, a do dokonce i při použití ještě nižšího počtu tranzistorů (zhruba 39000).

3. Formát instrukcí procesoru RISC I

Všechny instrukce v instrukční sadě mikroprocesorů RISC I byly uloženy v 32bitových slovech. Podporovány byly tři formáty instrukcí, přičemž u všech tří formátů byl v prvních sedmi bitech uložen operační kód instrukce (zdaleka ne všechny kombinace však byly využity) a v následujícím bitu hodnota povolující či zakazující nastavení příznakových bitů. To bylo poměrně důležité, například z toho důvodu, že se instrukce součtu používala jako náhrada za neexistující instrukci NOP, takže v tomto případě bylo vhodné nenastavovat žádné příznaky. První instrukční formát byl používán především u aritmetických a logických instrukcí využívajících dvojici zdrojových pracovních registrů a jeden registr cílový. Tento formát je velmi jednoduchý a taktéž zvláštní tím, že některé bity instrukčního slova zůstaly nevyužity:

Pole Počet bitů Význam
OPCODE 7 operační kód instrukce
SCC 1 povolení nastavení příznakových bitů
DEST 5 registr pro uložení výsledku (index 0 až 31)
SOURCE1 5 první operand instrukce (index 0 až 31)
IMF 1 příznak druhého operandu = 0
SOURCE2 5 druhý operand instrukce (index 0 až 31)

Obrázek 5: Jedna z mnoha 64bitových variant mikroprocesoru využívajícího instrukční sadu MIPS.

Druhý formát instrukcí se podobá formátu prvnímu, ovšem s tím rozdílem, že namísto druhého zdrojového registru je umístěna třináctibitová konstanta. Vhodně zvolenou instrukcí, například ADD Rd, R0, immediate tak bylo možné naplnit nejnižších třináct bitů zvoleného registru Rd (jak asi správně tušíte, má registr R0 vždy nulovou hodnotu):

Pole Počet bitů Význam
OPCODE 7 operační kód instrukce
SCC 1 povolení nastavení příznakových bitů
DEST 5 registr pro uložení výsledku (index 0 až 31)
SOURCE1 5 první operand instrukce (index 0 až 31)
IMF 1 příznak druhého operandu = 1
IMMEDIATE 13 třináctibitová konstanta

Obrázek 6: Interní struktura mikroprocesorů SPARC, na níž můžeme najít jak moduly pro práci s celými čísly, tak i moduly FPU. Mikroprocesory SPARC, popř. MicroSPARC a SuperSPARC mají své kořeny v popisované architektuře RISC 1.

Poslední formát instrukcí byl používán především u instrukcí skoku a taktéž u instrukce LDHI, která do nejvyšších devatenácti bitů zvoleného pracovního registru uložila taktéž 19bitovou konstantu. Povšimněte si, že platí 32–19=13, což znamená, že pro načtení úplné 32bitové konstanty do zvoleného pracovního registru postačuje použít dvojici instrukcí LDHI a ADD (nebo podobné aritmetické či logické instrukce). Ve skutečnosti se však ukázalo, že v praxi se ve více než 90% případů pracuje s malými konstantami, takže se LDHI nepoužívá tak často, jak by se mohlo na první pohled zdát:

Pole Počet bitů Význam
OPCODE 7 operační kód instrukce
SCC 1 povolení nastavení příznakových bitů
DEST 5 registr pro uložení výsledku (index 0 až 31)
IMMEDIATE 19 19bitová relativní adresa

Obrázek 7: Moduly mikroprocesoru R8000 při pohledu mikroskopem a po ručním obarvení jednotlivých bloků.
Zdroj: CPU Shack

4. Aritmetické a logické instrukce procesoru RISC I

Instrukce mikroprocesoru RISC I je možné rozdělit do tří skupin. V první skupině se nachází devět aritmetických a logických instrukcí, k nimž jsou navíc přiděleny i tři instrukce pro bitové a aritmetické posuvy. Všech dvanáct instrukcí má shodný formát i stejný počet a typ operandů. Jedná se o takzvané tříadresové instrukce, protože obsahují jak adresy dvou zdrojových operandů, tak i adresu cílovou. Jedním ze zdrojových operandů je vždy pracovní registr, druhým zdrojovým operandem je taktéž pracovní registr, nebo alternativně třináctibitová konstanta uložená přímo v operačním kódu instrukce (viz též předchozí kapitola s formáty instrukcí). Povšimněte si, že pomocí tříadresových instrukcí lze velmi snadno realizovat některé další neexistující instrukce, například NOP (mnoha způsoby), NEG (odečet obsahu registru od nuly), vynulování registru (XOR či SUB se sebou samým) a samozřejmě velmi snadno i instrukce typu INC a DEC:

# Instrukce Operandy Operace Popis
01 ADD Rs,S2,Rd Rd=Rs+S2 součet
02 ADDC Rs,S2,Rd Rd=Rs+S2+carry součet s přenosem
03 SUB Rs,S2,Rd Rd=Rs-S2 rozdíl
04 SUBC Rs,S2,Rd Rd=Rs-S2-carry rozdíl s výpůjčkou
05 SUBR Rs,S2,Rd Rd=S2-Rs rozdíl (otočené operandy, takže lze odečítat od konstanty)
06 SUBCR Rs,S2,Rd Rd=S2-Rs-carry rozdíl s výpůjčkou (otočené operandy)
07 AND Rs,S2,Rd Rd=Rs and S2 logický součin bit po bitu
08 OR Rs,S2,Rd Rd=Rs or S2 logický součet bit po bitu
09 XOR Rs,S2,Rd Rd=Rs xor S2 bitová nonekvivalence
10 SLL Rs,S2,Rd Rd=Rs<<S2 bitový posun doleva
11 SRL Rs,S2,Rd Rd=Rs>>S2 bitový posun doprava
12 SRA Rs,S2,Rd Rd=Rs>>>S2 aritmetický posun doprava (s respektováním znaménka)

Obrázek 8: Mikroprocesor řady microSPARC je částečně odvozen od architektury RISC I. Ovšem název tohoto procesoru poněkud klame, protože obsahuje více než 800 tisíc tranzistorů, tj. skoro dvacetkrát více, než původní RISC I.

5. Instrukce typu Load a Store

Druhou skupinou instrukcí jsou instrukce typu Load a Store, tj. instrukce sloužící pro načtení hodnoty z operační paměti, popř. naopak pro uložení hodnoty zpět do operační paměti. Základ této skupiny tvoří instrukce LDL (LoaD Long) pro načtení 32bitového slova z paměti a STL (STore Long) pro uložení 32bitového slova do paměti. V obou případech je adresa paměťových buněk určena hodnotou některého pracovního registru, k němuž je přičten 13bitový offset, popř. druhý pracovní registr. Kromě této dvojice instrukcí existují ještě instrukce pro načítání šestnáctibitových slov LDSU/LDSS i jednotlivých bajtů LDBU/LDBS s tím, že lze automaticky provádět konverze znaménkových (signed integer) i bezznaménkových (unsigned integer) hodnot na plnou šířku pracovního registru 32 bitů, protože veškeré aritmetické a logické operace jsou prováděny vždy s celými 32 bity. Podobně pracují i instrukce STS (STore Short) a STB (ehm ehm STore Byte) sloužící pro uložení pouze šestnácti bitů popř. jednoho bajtu na určenou adresu v operační paměti:

# Instrukce Operandy Operace Popis
13 LDL (Rx)S2,Rd Rd=M[Rx+S2] načtení 32bitového slova z operační paměti
14 LDSU (Rx)S2,Rd Rd=M[Rx+S2] načtení 16bitového slova unsigned
15 LDSS (Rx)S2,Rd Rd=M[Rx+S2] načtení 16bitového slova signed (automatické rozšíření znaménka)
16 LDBU (Rx)S2,Rd Rd=M[Rx+S2] načtení bajtu unsigned
17 LDBS (Rx)S2,Rd Rd=M[Rx+S2] načtení bajtu signed (automatické rozšíření znaménka)
18 STL (Rx)S2,Rm M[Rx+S2]=Rm uložení 32bitového slova do paměti
19 STS (Rx)S2,Rm M[Rx+S2]=Rm uložení 16bitového slova do paměti
20 STB (Rx)S2,Rm M[Rx+S2]=Rm uložení bajtu do paměti

Obrázek 9: Mikroprocesor řady SuperSPARC.

6. Skoky a práce se stavovým slovem procesoru

Poslední skupina instrukcí je oproti oběma předchozím skupinám dosti různorodá. Najdeme zde především instrukce pro provedení podmíněného skoku (jednou z variant je i skok nepodmíněný), přičemž adresa, na kterou se má skok provést, může být zadána buď adresovacím režimem použitým již u výše zmíněných instrukcí Load a Store (součet dvou operandů), nebo je možné provést relativní skok na adresu vypočtenou pomocí konstanty, jež je přičtena k aktuálnímu obsahu čítače instrukcí PC. Dále zde můžeme najít instrukce pro skok do podprogramu, které jsou ovšem zvláštní tím, že návratová adresa je uložena do vybraného pracovního registru, nikoli na (neexistující) zásobník. Podobně i instrukce pro návrat z podprogramu obnovují hodnotu čítače instrukcí PC na základě některého pracovního registru, k němuž může být navíc přičten i další registr nebo konstanta. Instrukce typu CALL a RETURN navíc automaticky posunují registrové okno. O instrukci LDHI jsme se již zmínili – slouží pro naplnění nejvyšších devatenácti bitů libovolného dostupného pracovního registru. Poslední dvě instrukce z této skupiny slouží pro přenos obsahu stavového slova procesoru z a do zvoleného pracovního registru:

# Instrukce Operandy Operace Popis
21 JMP CON,S2(Rx) PC=Rx+S2 podmíněný skok
22 JMPR CON,imm PC=PC+imm podmíněný relativní skok
23 CALL S2(Rx),Rd Rd=PC, PC=Rx+S2 volání podprogramu, posun registrového okna
24 CALLR imm,Rd Rd=PC, PC=PC+imm volání podprogramu s relativní adresou, posun registrového okna
25 RET (Rx)S2 PC=Rx+S2 návrat z podprogramu, obnovení registrového okna
26 RETINT (Rx)S2 PC=Rx+S2 návrat z podprogramu a povolení přerušení, obnovení registrového okna
27 CALLINT Rd Rd=PC volání přerušovací rutiny a zákaz přerušení
28 LDHI imm,Rd Rd(31:13)=imm, Rd(12:0)=0 načtení konstanty do vyšších bitů registru
29 GTLPC Rd Rd=last PC restart opožděného skoku
30 GETPSW Rd Rd=PSW načtení stavového slova procesoru do pracovního registru
31 PUTPSW Rm PSW=Rd zápis obsahu vybraného registru do stavového slova procesoru

Obrázek 10: Další mikroprocesor řady SuperSPARC.

7. Porovnání mikroprocesorů RISC I s konkurenční architekturou 80×86

V prvních dvou kapitolách jsme si řekli, že mikroprocesor RISC I z roku 1980 obsahoval pouze 44 tisíc tranzistorů a přesto bylo na ploše čipu implementováno celkem sedmdesát osm 32bitových pracovních registrů. Jeho následovník RISC II byl dokonce implementován pouze s využitím 39000 tranzistorů. Zajímavé je porovnání tohoto čipu s typickým zástupcem architektury CISC, tj. procesory firmy Intel, především s osmibitovou řadou Intel 8008/8080, na níž navazuje řada šestnáctibitových mikroprocesorů Intel 80×86 a posléze i řada IA-64 s procesory Itanium:

Mikroprocesor Bitů Datum Tranzistorů Frekvence [MHz] Šířka spojů [nm]
4004 4 1971 2 250 0.1 10 000
8008 8 1972 3 500 0.2 10 000
8080 8 1974 6 000 2.0 6 000
8088 16/8 1979 29 000 8.0 3 000
8086 16 1978 29 000 8.0 3 000
80286 16 1982 134 000 12.5 1 500
80386 32 1985 275 000 20.0 1 500
80486 32 1989 1 200 000 25.0 1 000
Pentium 32 1993 3 100 000 66.0 800
Pentium 32 1994 3 300 000 75.0 600
Pentium 32 1995 3 300 000 120.0 350
Pentium II 32 1997 7 500 000 233.0 350
Pentium II 32 1998 7 500 000 300.0 250
Pentium III 32 1999 9 500 000 450.0 250
Pentium III 32 2000 28 000 000 533.0 180
Pentium 4 32 2000 42 000 000 1500.0 180
Pentium 4 32 2002 55 000 000 2200.0 130
Pentium 4 32 2004 125 000 000 2800.0 90
Pentium 4 32 2006 188 000 000 3200.0 65
Itanium 64 2001 25 000 000 733.0 180
Itanium 2 64 2003 220 000 000 900.0 180
Itanium 2 64 2004 592 000 000 1300.0 130
Itanium 2 64 2006 1 720 000 000 1400.0 90
Core 2 64 2006 291 000 000 1860.0 65
Core 2 64 2008 800 000 000   45

Obrázek 11: Mikroprocesor řady UltraSPARC.

8. Branch delay sloty

Jedním z typických prvků architektury RISC I, který byl později převzat i do dalších typů mikroprocesorů, byla existence takzvaných branch delay slotů (poněkud nepřesně překládáno jako zpožděný skok). Existence branch delay slotů vychází z toho, že v instrukční pipeline se vždy nacházely dvě instrukce – jedna se právě prováděla a u druhé instrukce se mezitím připravovaly operandy, přistupovalo se k datům v operační paměti atd. Ovšem pokud je první instrukcí v pipeline skok (ať již podmíněný nebo nepodmíněný), tak to znamená, že druhá předzpracovávaná instrukce může být přečtena z jiné oblasti paměti programu, než by tomu mělo být v případě, že je skok skutečně proveden. Některé moderní mikroprocesory v této chvíli aplikují například prediktor výsledku skoku a podobné více či méně složité technologie, ovšem u procesorů RISC I, u nichž byla na prvním místě jednoduchost implementace, se použil poněkud jiný mechanismus – instrukce umístěná ihned po instrukci skoku byla provedena vždy, nezávisle na tom, zda byl skok na základě nějaké podmínky uskutečněn či nikoli (nikdy tedy nemuselo docházet k odstranění instrukce z pipeline).

ict ve školství 24

Obrázek 12: Další typ mikroprocesoru řady UltraSPARC.

To na jednu stranu znamenalo, že instrukce nebyly v operační paměti umístěny v přesně takovém pořadí, v jakém byly nakonec mikroprocesorem vykonány, na stranu druhou se však dosti podstatným způsobem zjednodušila architektura mikroprocesoru a navíc byl skok, stejně jako další instrukce, proveden v jediném strojovém taktu. O změnu pořadí instrukcí (většinou se jednalo o přenos instrukce před skokem až za instrukci skoku, ovšem nikoli v případě, že by tento přenos jakkoli ovlivnil vyhodnocení podmínky skoku) se staral přímo překladač popř. assembler a na základě provedeného měření se uvádí, že až 70% branch delay slotů bylo možné zaplnit plnohodnotnou instrukcí, pouze ve 30% se zde musela použít pseudoinstrukce NOP, tj. například „prázdný“ součet ADD Rd, R0, R0. Později se tato velmi jednoduchá technologie uplatnila jak u dalších mikroprocesorů s architekturou RISC (kdy se mnohdy do slotu umisťovalo více instrukcí, 2, 3 i čtyři), tak i například u digitálních signálových procesorů, popř. (i když někdy nepřímo) i u procesorů s dlouhými instrukčními slovy (VLIW).

9. Odkazy na Internetu

  1. Maska mikroprocesoru RISC 1
    http://www.cs­.berkeley.edu/~pat­trsn/Arch/RIS­C1.jpg
  2. Maska mikroprocesoru RISC 2
    http://www.cs­.berkeley.edu/~pat­trsn/Arch/RIS­C2.jpg
  3. 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
  4. Berkeley RISC
    http://en.wiki­pedia.org/wiki/Ber­keley_RISC
  5. Great moments in microprocessor history
    http://www.ib­m.com/developer­works/library/pa-microhist.html
  6. Microprogram-Based Processors
    http://resear­ch.microsoft.com/en-us/um/people/gbe­ll/Computer_Struc­tures_Principles_an­d_Examples/csp0167­.htm
  7. Great Microprocessors of the Past and Present
    http://www.cpushac­k.com/CPU/cpu­1.html
  8. A Brief History of Microprogramming
    http://www.cs­.clemson.edu/~mar­k/uprog.html
  9. Architecture of the WISC CPU/16
    http://www.ece­.cmu.edu/~koop­man/stack_com­puters/sec4_2­.html
  10. Zásobníkový procesor WISC CPU/16 (Root.CZ)
    http://www.ro­ot.cz/clanky/pro­gramovaci-jazyk-forth-a-zasobnikove-procesory-16/#k03
  11. Writable instruction set, stack oriented computers: The WISC Concept
    http://www.ece­.cmu.edu/~koop­man/forth/roches­ter87.pdf
  12. The Great CPU List: Part X: Hitachi 6301 – Small and microcoded (1983)
    http://jbayko­.sasktelwebsi­te.net/cpu2.html#Sec2Par­t10
  13. What is RISC?
    http://www-cs-faculty.stanfor­d.edu/~erober­ts/courses/so­co/projects/2000–01/risc/whatis/
  14. RISC vs. CISC
    http://www-cs-faculty.stanfor­d.edu/~erober­ts/courses/so­co/projects/2000–01/risc/risccisc/
  15. RISC and CISC definitions:
    http://www.cpushac­k.com/CPU/cpu­AppendA.html
  16. The Evolution of RISC
    http://www.ib­m.com/developer­works/library/pa-microhist.html#si­debar1
  17. SPARC Processor Family Photo
    http://thenet­workisthecompu­ter.com/site/?p=243
  18. SPARC: Decades of Continuous Technical Innovation
    http://blogs.o­racle.com/onthe­record/entry/spar­c_decades_of_con­tinuous_techni­cal
  19. The SPARC processors
    http://www.top500­.org/2007_over­view_recent_su­percomputers/spar­c_processors
  20. Maurice V. Wilkes Home Page
    http://www.cl­.cam.ac.uk/ar­chive/mvw1/
  21. 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
  22. Microprogram Memory
    http://free-books-online.org/com­puters/advanced-computer-architecture/mi­croprogram-memory/
  23. First Draft of a report on the EDVAC
    http://qss.stan­ford.edu/~god­frey/vonNeuman­n/vnedvac.pdf
  24. Introduction to Microcontrollers
    http://www.pic24mi­cro.com/cisc_vs_ris­c.html
  25. Reduced instruction set computing (Wikipedia)
    http://en.wiki­pedia.org/wiki/Re­duced_instruc­tion_set_compu­ter
  26. MIPS architecture (Wikipedia)
    http://en.wiki­pedia.org/wiki/MIP­S_architecture
  27. Very long instruction word (Wikipedia)
    http://en.wiki­pedia.org/wiki/Ve­ry_long_instruc­tion_word
  28. Classic RISC pipeline (Wikipedia)
    http://en.wiki­pedia.org/wiki/Clas­sic_RISC_pipe­line
  29. R2000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R2000_(mi­croprocessor)
  30. R3000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R3000
  31. R4400 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R4400
  32. R8000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R8000
  33. R10000 Microprocessor (Wikipedia)
    http://en.wiki­pedia.org/wiki/R10000
  34. SPARC (Wikipedia)
    http://en.wiki­pedia.org/wiki/Sparc
  35. CPU design (Wikipedia)
    http://en.wiki­pedia.org/wiki/CPU_de­sign
  36. Control unit (Wikipedia)
    http://en.wiki­pedia.org/wiki/Con­trol_unit
  37. Microcode (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­crocode
  38. Microsequencer (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­crosequencer
  39. Maurice Wilkes (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mau­rice_Wilkes
  40. Micro-operation (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­cro-operation

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.