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
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).
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
- Maska mikroprocesoru RISC 1
http://www.cs.berkeley.edu/~pattrsn/Arch/RISC1.jpg - Maska mikroprocesoru RISC 2
http://www.cs.berkeley.edu/~pattrsn/Arch/RISC2.jpg - C.E. Sequin and D.A.Patterson: Design and Implementation of RISC I
http://www.eecs.berkeley.edu/Pubs/TechRpts/1982/CSD-82–106.pdf - Berkeley RISC
http://en.wikipedia.org/wiki/Berkeley_RISC - Great moments in microprocessor history
http://www.ibm.com/developerworks/library/pa-microhist.html - Microprogram-Based Processors
http://research.microsoft.com/en-us/um/people/gbell/Computer_Structures_Principles_and_Examples/csp0167.htm - Great Microprocessors of the Past and Present
http://www.cpushack.com/CPU/cpu1.html - A Brief History of Microprogramming
http://www.cs.clemson.edu/~mark/uprog.html - Architecture of the WISC CPU/16
http://www.ece.cmu.edu/~koopman/stack_computers/sec4_2.html - Zásobníkový procesor WISC CPU/16 (Root.CZ)
http://www.root.cz/clanky/programovaci-jazyk-forth-a-zasobnikove-procesory-16/#k03 - Writable instruction set, stack oriented computers: The WISC Concept
http://www.ece.cmu.edu/~koopman/forth/rochester87.pdf - The Great CPU List: Part X: Hitachi 6301 – Small and microcoded (1983)
http://jbayko.sasktelwebsite.net/cpu2.html#Sec2Part10 - What is RISC?
http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000–01/risc/whatis/ - RISC vs. CISC
http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000–01/risc/risccisc/ - RISC and CISC definitions:
http://www.cpushack.com/CPU/cpuAppendA.html - The Evolution of RISC
http://www.ibm.com/developerworks/library/pa-microhist.html#sidebar1 - SPARC Processor Family Photo
http://thenetworkisthecomputer.com/site/?p=243 - SPARC: Decades of Continuous Technical Innovation
http://blogs.oracle.com/ontherecord/entry/sparc_decades_of_continuous_technical - The SPARC processors
http://www.top500.org/2007_overview_recent_supercomputers/sparc_processors - Maurice V. Wilkes Home Page
http://www.cl.cam.ac.uk/archive/mvw1/ - Papers by M. V. Wilkes (důležitá je především jeho práce číslo 35)
http://www.cl.cam.ac.uk/archive/mvw1/list-of-papers.txt - Microprogram Memory
http://free-books-online.org/computers/advanced-computer-architecture/microprogram-memory/ - First Draft of a report on the EDVAC
http://qss.stanford.edu/~godfrey/vonNeumann/vnedvac.pdf - Introduction to Microcontrollers
http://www.pic24micro.com/cisc_vs_risc.html - Reduced instruction set computing (Wikipedia)
http://en.wikipedia.org/wiki/Reduced_instruction_set_computer - MIPS architecture (Wikipedia)
http://en.wikipedia.org/wiki/MIPS_architecture - Very long instruction word (Wikipedia)
http://en.wikipedia.org/wiki/Very_long_instruction_word - Classic RISC pipeline (Wikipedia)
http://en.wikipedia.org/wiki/Classic_RISC_pipeline - R2000 Microprocessor (Wikipedia)
http://en.wikipedia.org/wiki/R2000_(microprocessor) - R3000 Microprocessor (Wikipedia)
http://en.wikipedia.org/wiki/R3000 - R4400 Microprocessor (Wikipedia)
http://en.wikipedia.org/wiki/R4400 - R8000 Microprocessor (Wikipedia)
http://en.wikipedia.org/wiki/R8000 - R10000 Microprocessor (Wikipedia)
http://en.wikipedia.org/wiki/R10000 - SPARC (Wikipedia)
http://en.wikipedia.org/wiki/Sparc - CPU design (Wikipedia)
http://en.wikipedia.org/wiki/CPU_design - Control unit (Wikipedia)
http://en.wikipedia.org/wiki/Control_unit - Microcode (Wikipedia)
http://en.wikipedia.org/wiki/Microcode - Microsequencer (Wikipedia)
http://en.wikipedia.org/wiki/Microsequencer - Maurice Wilkes (Wikipedia)
http://en.wikipedia.org/wiki/Maurice_Wilkes - Micro-operation (Wikipedia)
http://en.wikipedia.org/wiki/Micro-operation