Hlavní navigace

Konkurence procesorů s mikroprogramovým řadičem - architektura RISC

17. 5. 2011
Doba čtení: 17 minut

Sdílet

V předchozích třech částech seriálu o architekturách počítačů jsme se zabývali popisem procesorů vybavených mikroprogramovým řadičem. Většinou se jednalo o procesory s komplexní instrukční sadou – CISC. Ovšem již před 35 lety vznikla alternativa k této architektuře – mnohem jednodušší RISC.

Obsah

1. Zhodnocení vlastností procesorů typu CISC

2. Idea procesorů s redukovanou instrukční sadou

3. Architektura Load–Store a rozsáhlá sada pracovních registrů

4. Pipelining, registrová okna (register windows), přejmenování registrů

5. Prediktory skoků (branch predictors)

6. CISC nebo RISC?

7. Projekt MIPS na univerzitě ve Stanfordu

8. Mikroprocesory R2000, R3000 a R4000

9. Odkazy na Internetu

1. Zhodnocení vlastností procesorů typu CISC

V předchozích třech částech seriálu o architekturách počítačů jsme si popsali způsob práce mikroprogramového řadiče používaného v některých modelech procesorů a mikroprocesorů. Taktéž jsme si řekli, jakým způsobem vynález tohoto typu řadičů ovlivnil samotný vývoj procesorů a posléze i mikroprocesorů (tj. procesorů integrovaných do jednoho čipu) směrem ke komplexním instrukčním sadám. Tyto procesory se posléze začaly označovat zkratkou CISC neboli Complex Instruction Set Code). Zpočátku se použití architektury CISC zdálo být výhodné prakticky ve všech směrech, protože složité instrukce s mnoha adresními režimy (někdy se jednalo o vysoce ortogonální instrukční sady) ulehčovaly – alespoň na první pohled – práci překladačům, které mohly příkazy napsané ve vyšších programovacích jazycích překládat do strojového kódu s využitím mnohdy poměrně sofistikovaných instrukcí. Například se jednalo o instrukce pro vytvoření zásobníkového rámce (stack frame) při volání funkcí, instrukce pro blokové přenosy dat, instrukce pro práci s řetězci (kopie řetězců, porovnání řetězců) atd.

pc107

Obrázek 1: Jedna z prvních verzí osmibitového mikroprocesoru Zilog Z80 s komplexní instrukční sadou.

Navíc se – možná poněkud paradoxně navzdory komplexním instrukcím – v některých případech i díky CISC podařila konstruktérům procesorů vytvořit instrukční sada s velmi „hustým“ instrukčním kódem, kdy se využívaly instrukce s proměnnou délkou. Týkalo se to především použití sofistikovanějších adresních režimů, například při současném použití bázového registru, indexového registru násobeného konstantou a offsetu (příkladem může být instrukční sada procesorů řady i386, v níž je možné adresovací režimy využít i pro relativně složité výpočty prováděné například instrukcí LEA – Load Effective Address). Ještě na začátku sedmdesátých let minulého století, tj. v době revoluce mikroprocesorů, se zdálo, že právě (mikro)procesory s architekturou CISC jsou z hlediska dalšího vývoje nejperspektivnější. Toto přesvědčení vedlo k rychlému rozvoji osmibitových a posléze i šestnáctibitových a 32bitových mikroprocesorů s architekturou CISC založených na mikroprogramovém řadiči – příkladem jsou velmi úspěšné mikroprocesory řady Motorola M68000 (ve své době měly tyto mikroprocesory nejsnáze použitelnou instrukční sadu), dále pak řada Intel 80×86 a taktéž osmibitové mikrořadiče Intel 8048 a Intel 8051.

Obrázek 2: 32bitový mikroprocesor AMD 386DX je typickým zástupcem mikroprocesorů s komplexní instrukční sadou – CISC.

2. Idea procesorů s redukovanou instrukční sadou

Ve skutečnosti se však na základě několika paralelně běžících výzkumů provedených jak v akademických institucích, tak i například vedených interně ve firmě IBM a CDC zjistilo, že většina vývojářů programujících v assembleru a navíc i naprostá většina tehdejších překladačů nevyužívá ani zdaleka všechny dostupné instrukce a jejich adresní režimy – na mnoha platformách se využívalo přibližně jen 30% všech možných instrukčních kódů. Konstruktéři procesorů, resp. přesněji řečeno návrháři instrukčních sad si uvědomili, že investice do složitého procesoru typu CISC je vlastně v mnoha případech zbytečná, protože jeho velká část zůstane nevyužita. Navíc byly CISC procesory kvůli mikroprogramovému řadiči poměrně složité (i když mnohem méně složité, než v případě použití obvodového řadiče) a tak se některé firmy i akademické instituce začali poohlížet po odlišné konstrukci procesorů – tyto procesory byly teprve o několik let později souhrnně označeny zkratkou RISC neboli Reduced Instruction Set Code (v některých případech se tato zkratka taktéž používala ve významu Reduced Instruction Set Computer).

Obrázek 3: 32bitový mikroprocesor Motorola M68000 patří mezi zástupce architektury CISC s téměř ortogonální instrukční sadou.

Zatímco při návrhu procesorů typu CISC se jejich konstruktéři řídili filozofií „more is better“ (viz též minule zmíněná platforma IBM System/360, popřípadě neúspěšný projekt SYMBOL Machine), začala se v případě procesorů typu RISC uplatňovat přesně opačná filozofie „less is better“. Mělo se tedy jednat o procesory s jednoduchou interní architekturou a malým množstvím instrukcí. Mnohdy byla instrukční sada osekána pouze na 32 instrukcí, zatímco u procesorů CISC se v některých případech jednalo i o stovky více či méně složitých instrukcí s mnoha adresními režimy. Ovšem z toho, že procesory RISC mají jednoduchou architekturu a velmi malý instrukční soubor v žádném případě nevyplývá, že by byly méně výkonné, než procesory CISC vyráběné porovnatelnou technologií. Ve skutečnosti tomu bylo právě naopak, protože první komerčně dostupné mikroprocesory RISC měly vyšší výpočetní rychlost než jakékoli v té době dostupné mikroprocesory CISC (viz též další kapitoly). Důvodů pro tuto vysokou výkonnost je více; o některých z nich se zmíníme v následující kapitole.

Obrázek 4: Mikroprocesor PA RISC firmy Hewlett-Packard, který je zde zobrazen spolu s dalšími podpůrnými obvody a paměťmi cache.

3. Architektura Load–Store a rozsáhlá sada pracovních registrů

První vlastností, která nejvíce odlišuje procesory s architekturou CISC od procesorů RISC je velmi malý počet instrukcí tvořících instrukční sadu procesorů RISC a taktéž striktní oddělení instrukcí pro načítání/ukládání dat do operační paměti a na druhé straně instrukcí pro provádění aritmetických a logických operací – i z tohoto důvodu se někdy procesory RISC nazývají procesory s architekturou Load–Store. Zatímco instrukce určené pro načítání a ukládání dat do operační paměti pracují s přímou adresou čteného či zapisovaného slova, pracují instrukce aritmetické a logické striktně pouze s pracovními registry. Díky tomu se významně zjednodušuje instrukční dekodér a taktéž má naprostá většina instrukcí shodnou délku, protože například není nutné počítat s tím, že některý z operandů instrukce ADD může být zadán s využitím složitého adresního režimu (to u RISC není možné). Z konstantní délky všech instrukcí taktéž nepřímo vyplývá to, že velké množství procesorů RISC načítá z operační paměti celá 16bitová nebo 32bitová slova a vůbec neobsahuje možnost adresování jednotlivých bajtů, což ještě více zjednodušuje interní architekturu procesoru.

Obrázek 5: Mikroprocesor s instrukční sadou MIPS. Čipy obsahující jádra těchto RISCových mikroprocesorů se dnes používají v mnoha vestavěných zařízeních, například přehrávačích videa, routerech atd.

Druhou typickou vlastností procesorů s architekturou RISC je použití velkého množství pracovních registrů. V závislosti na použité instrukční sadě se většinou jedná o 32 nebo 64 v dané chvíli dostupných registrů, přičemž jejich celkový počet může být i vyšší díky použití registrových oken. Konstruktéři procesorů RISC přistoupili k použití většího množství pracovních registrů z více důvodů. Například měli díky neexistenci mikroprogramového řadiče k dispozici dostatečnou plochu čipu na realizaci pracovních registrů, protože při použití 32 registrů po 32 bitech to znamená nutnost realizovat pouze 1024 bitů pomocí klopných obvodů. Navíc lze do jednodušší instrukční sady relativně snadno zakomponovat i bity nutné pro adresování pracovních registrů (5 bitů v případě 32 registrů, tj. 10 bitů u dvouadresového kódu). Třetí důvod je však mnohem důležitější: operace prováděné s pracovními registry jsou mnohem rychlejší při porovnání s operacemi prováděnými s daty načítanými z operační paměti, už jen z toho důvodu, že se neblokuje externí datová a adresová sběrnice. A navíc – v rozporu s očekáváními konstruktérů čipů CISC – se v případě velkého množství pracovních registrů zjednodušuje práce překladače, který si například může některé registry rezervovat pro předávání argumentů, jiné ponechat pro počitadla smyček atd.

Obrázek 6: Ultra SPARC II – další v minulosti velmi často používaný mikroprocesor s architekturou RISC
Zdroj: Wikipedia.

4. Pipelining, registrová okna (register windows), přejmenování registrů

Některé mikroprocesory s architekturou RISC využívají technologii takzvaných registrových oken (register window), tj. omezení počtu v dané chvíli dostupných pracovních registrů. Použitím registrových oken je možné snížit počet bitů nutných pro adresování registrů v instrukčních slovech a navíc se pouhým posunem registrového okna může realizovat předání argumentů při volání funkce. Příkladem může být procesor se 128 pracovními registry, z nichž ovšem pouze 32 je v dané chvíli dostupných. Posun registrového okna může být prováděn po 16 registrech, což znamená, že namísto registrů 0–31 se po posunu okna používají registry 16–47, po dalším posunu registry 32–63 atd. Vzhledem k tomu, že se při posunu registrového okna vždy 16 registrů může stále používat, lze právě v nich předat parametry volané funkci a zbylých 16 registrů použít jako registry pracovní a současně jako registry určené pro předání parametrů dalším funkcím. Pro posun registrového okna je buď vyhrazena samostatná instrukce, nebo se okno posouvá automaticky při volání funkce (call).

Obrázek 7: Vývoj osmibitových mikroprocesorů CISC, na němž je patrné, že i tyto v podstatě velmi jednoduché mikroprocesory byly implementovány s využitím poměrně velkého množství tranzistorů.

S pracovními registry do značné míry souvisí i jednotka pro přejmenování registrů (register renaming používaná u některých moderních RISC procesorů (tuto technologii později převzaly i procesory CISC). Díky této jednotce lze eliminovat kolize ve využití registrů v případě, že dvě nebo tři po sobě následující instrukce využívají stejný pracovní registr, což by bez přejmenování registrů znamenalo, že by se zpracování dalších instrukcí muselo na chvíli pozastavit. Vzhledem k jednoduchosti instrukcí bylo možné již na prvních mikroprocesorech RISC implementovat zřetězení instrukcí neboli pipelining. Ve výsledku bylo v ideálním případě možné v každém strojovém taktu vykonat jednu instrukci. Ve skutečnosti se každá instrukce provedla sice ve větším počtu taktů, například pěti, ale mezitím byly zpracovávány čtyři další instrukce. Právě pipelining způsobil navýšení výpočetního výkonu RISC procesorů oproti procesorům CISC se srovnatelnou hodinovou frekvencí.

pc9808

Obrázek 8: Funkční moduly procesoru R10000 založeného na instrukční sadě MIPS.

5. Prediktory skoků (branch predictors)

Modernější RISC procesory mají navíc implementován i prediktor skoků, popř. i podporu pro spekulativní provádění skoků, což vede k tomu, že se při provedení podmíněného skoku nemusí ve většině případů vyprazdňovat pipeline. Nejedná se sice o technologii specifickou pouze pro RISC, ale byla zde implementována nejdříve. Vzhledem k tomu, že prediktory skoků jsou pro efektivitu procesorů RISC a dnes i CISC velmi důležité, budeme se jimi zabývat poněkud podrobněji. Prediktory skoků slouží, zjednodušeně řečeno, k odhadu, zda se skok v daném místě programu provede či neprovede. Odhad prediktoru slouží k tomu, aby procesor začal dopředu vykonávat instrukce ve správné větvi programu. To je nutné z důvodu efektivního využití pipeline, protože již při provádění skoku se v pipeline mohou nacházet další 2 až 4 rozpracované instrukce. U jednotlivých skoků nahrazujících konstrukci typu if by byla predikce skoku samozřejmě spíše loterií 50 na 50, ovšem známé pravidlo 90/10 (nebo 80/20) nám říká, že 90 procent času běhu programu se stráví v pouhých deseti procentech kódu, tj. musí se jednat o nějaké programové smyčky, u kterých by bylo dobré skoky umět predikovat s dostatečnou úspěšností. Existuje více způsobů implementace prediktorů skoků, my si vysvětlíme prediktory jednobitové a dvoubitové.

pc9809

Obrázek 9: Takto vypadá procesor R10000 (založený na instrukční sadě MIPS) při pohledu mikroskopem. Jednotlivé funkční moduly (bloky) jsou obarveny.
Zdroj: CPU Shack

Jednoduchý jednobitový prediktor skoků pracuje tak, že si procesor u každého skoku v jednom bitu zapamatuje, zda byl skok proveden či nikoli. Když se v instrukční pipeline znovu skok objeví (tj. jeho adresa souhlasí s adresou uloženou ve zvláštním oddílu vyrovnávací paměti), tak se procesor na základě předešlého běhu programu rozhodne, která další instrukce se pravděpodobně bude zpracovávat. Při prvním volání skoku má prediktor pouze padesátiprocentní úspěšnost, ta se potom zvyšuje. Například u smyčky, která by měla proběhnout 100× (to ovšem procesor dopředu neví) se sice při prvním průchodu prediktor splete, takže musí dojít k vyprázdnění pipeline, ovšem v dalších 98 průchodech už správně odhadne, že se skok provede. Poslední průchod je znovu odhadnut špatně, což je ovšem pochopitelné. Výsledkem je poměrně úspěšné a především rychlé provedení všech instrukcí ve smyčce, přičemž úspěšnost predikce je skvělých 98 procent. Dvoubitový prediktor skoků pracuje velmi podobným způsobem, ovšem pamatuje si nejenom předchozí výsledek skoku (proveden, neproveden), ale i minulý stav predikce.

pc9811

Obrázek 10: Přechody mezi čtyřmi stavy dvoubitového prediktoru skoků.

Pro mnoho typů podmínek je dvoubitový prediktor výhodnější, než prediktor jednobitový, protože i jeden špatný odhad ještě nezmění stav prediktoru. Způsob predikce u dvoubitového prediktoru skoků je možné naznačit stavovým diagramem zobrazeným na předchozím obrázku (10). V závislosti na tom, zda je podmíněný skok na základě vyhodnocení podmínky proveden (T – taken) či neproveden (NT – not taken) může dvoubitový prediktor skoků přejít do jednoho ze svých čtyř vnitřních stavů, na jejichž základě se procesor rozhoduje, která programová větev se začne dopředu zpracovávat. Pokud se prediktor splete (tj. ve skutečnosti se má provést druhá větev než ta, kterou předpověděl), již zpracované instrukce (a hodnoty registrů) se musí zahodit a začít se zpracováváním správné větve, což s sebou samozřejmě nese zpoždění v provádění programu. Pokud se prediktor nachází v prvních dvou stavech, zpracovává se ta větev programu, jejíž instrukce jsou umístěny za příkazem skoku, u druhých dvou stavů naopak ty instrukce, které se nachází na adrese, kam se (pravděpodobně) skok provede. Uvádí se, že pravděpodobnost správného odhadu, zda se skok provede či neprovede, překračuje u dvoubitového prediktoru hodnotu 90% (některé zdroje uvádí dokonce úspěšnost správného odhadu 95% či dokonce 97%).

6. CISC nebo RISC?

V mnoha případech nelze přesně rozhodnout, zda je nějaký mikroprocesor postaven na architektuře CISC nebo naopak RISC. O tom svědčí i následující graf, na kterém je zobrazeno rozdělení některých známých mikroprocesorů a mikrořadičů podle bitové šířky zpracovávaných operandů a taktéž podle toho, do jaké míry se blíží typické architektuře CISC nebo naopak „kanonické“ architektuře RISC. Povšimněte si zejména umístění procesorů kompatibilních s instrukční sadou x86–64 na levé spodní straně a naproti tomu „kanonických“ RISC mikroprocesorů R3000 a R4000 na straně pravé (nesmíme zapomenout ani na stále populárnější mikroprocesory ARM). Naproti tomu mikroprocesor R10000 je sice taktéž postaven na architektuře RISC, ale jeho složitost je mnohem větší, než složitost jeho předchůdců R3000 a R4000. V oblasti s osmibitovými mikroprocesory zase můžeme najít jak všechny důležité mikroprocesory používané v osmibitových mikropočítačích (Intel 8080, MOS 6502, Zilog Z80, Motorola 6800 a Motorola 6809), tak i zástupce osmibitových mikrořadičů Intel 8051 (zde zastupuje i svého předchůdce Intel 8048) a PIC16×. Velmi jednoduchý a přitom zajímavý čip RCA 1802 je umístěn zcela vpravo.

Obrázek 11: Osmibitový mikroprocesor Motorola MC6800.

    Complex/                                                           Simple/
      CISC______________________________________________________________RISC
      |                                                         14500B*    |
4-bit |                                                    *Am2901         |
      |                                   *4004                            |
      |                                *4040                               |
8-bit |                                     6800,650x         *1802        |
      |                       8051*  *  *8008   *    SC/MP                 |
      |                              Z8    *         *    *F8              |
      |                F100-L*   8080/5  2650                              |
      |                             *       *NOVA        *  *PIC16x        |
      |          MCP1600*   *Z-80         *6809    IMS6100                 |
16-bit|          *Z-280           *PDP11             80C166*  *M17         |
      |                      *8086    *TMS9900                             |
      |                 *Z8000          *65816                             |
      |                *56002                                              |
      |            32016*   *68000 ACE HOBBIT  Clipper      R3000          |
32-bit|432           96002 *68020    *   *  *  *   *29000     *   *ARM     |
      | *         *VAX * 80486 68040 *PSC i960    *SPARC         *SH       |
      |          Z80000*    *  *    TRON48    PA-RISC                      |
      |    PPro  Pent*    -- T9000 -*-------     *    *88100               |
      | *    *    -- 860 -*--*-----            *     *88110                |
64-bit|Rekurs         POWER PowerPC   *        CDC6600     *R4000          |
      |            x86-64*   *620 U-SPARC *     *R8000         *Alpha      |
      |     ------- IA-64 -------      R10000                              |
      CISC______________________________________________________________RISC

Obrázek 12: Osmibitový mikroprocesor Motorola MC6809.

7. Projekt MIPS na univerzitě ve Stanfordu

Mezi velmi úspěšné procesory s architekturou RISC patří celá rodina mikroprocesorů označovaná zkratkou MIPS (Microprocessor without Interlocked Pipeline Stages). Mikroprocesory patřící do této rodiny byly použity jak u výkonných grafických stanic firmy SGI a některých superpočítačích, tak i na zcela opačném trhu: v embedded aplikacích, přehrávačích DVD, herních konzolích Nintendo 64, Sony PlayStation, PlayStation 2 atd. Čínští výrobci elektronických zařízení mají svoji verzi MIPS označovanou jako Godson popř. v anglicky mluvících zemích Dragon. Důvod velké oblíbenosti mikroprocesorů postavených na jádru MIPS spočívá především v možnosti propojení jádra mikroprocesoru s dalšími obvody na jednom čipu, což je velmi často využíváno zejména v embedded aplikacích. V praxi to znamená možnost mít celé zařízení (například dekodér videa či router) umístěné na jednom jediném čipu a programovat přitom na známé, výkonné a mnoha lety praxe odladěné architektuře.

pc9810

Obrázek 13: Na některých sériích procesoru R10000 se při pohledu mikroskopem objevila tato pěkná SPZka :-)

Práce na návrhu architektury MIPS začala již v roce 1981, kdy John L. Hennessy z univerzity ve Stanfordu spolu se svým týmem navrhl koncept procesoru, v němž by se sice využívala pipeline s poměrně velkým množstvím řezů (typicky pěti), ovšem zpracování části instrukce v každém řezu by trvalo konstantní dobu, ideálně jeden hodinový takt. To mj. znamenalo, že takový procesor nemohl obsahovat instrukce s dlouhotrvajícími operacemi, například násobením a dělením. Tyto operace by totiž zcela jistě trvaly déle než jeden hodinový takt, což by znamenalo nutnost mít v procesoru rozvedeny signály pro pozastavení provádění dalších instrukcí (interlock). Hennessy si uvědomil, že tyto signály rozváděné po celém procesoru limitují maximální hodinovou frekvenci a proto jím navržený procesor neobsahoval žádné dlouhotrvající instrukce, pouze jednoduché součty, rozdíly a bitové operace. Navíc tento procesor – na rozdíl od mnoha dalších procesorů s architekturou RISC – neobsahoval výše zmíněná registrová okna, protože Hennesy správně odhadl, že je výhodnější neomezovat počet současně použitelných pracovních registrů, protože jejich efektivní alokaci pro předávání parametrů lze ponechat na překladači.

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

8. Mikroprocesory R2000, R3000 a R4000

V roce 1984 opustil Hennesy univerzitu a založit společnost MIPS Computer Systems, aby se mohl plně věnovat vývoji komerční verze architektury MIPS. Skutečně se jednalo o společnost orientovanou výhradně na vývoj, protože tato firma neměla vlastní továrnu na výrobu čipů (fabless). O vlastní výrobu se staraly další společnosti, například Integrated Device Technology (IDT), LSI Logic, NEC Corporation, Performance Semiconductor a další. Prvním komerčně dostupným mikroprocesorem s architekturou MIPS byl 32bitový čip R2000 z roku 1985, který byl v roce 1988 nahrazen vylepšeným a ve své době velmi populárním čipem R3000 (zajímavé však je, že na rozdíl od původní koncepce se zde znovu objevují instrukce pro násobení a dělení). Tyto čipy se začaly používat jak v pracovních grafických stanicích (SGI, DECstation), tak i v serverech (DECsystem, NonStop Cyclone/R) a taktéž v herních konzolích PlayStation.

Obrázek 15: Interní struktura mikroprocesorů SPARC, na níž můžeme najít jak moduly pro práci s celými čísly, tak i moduly FPU.

DT24

Čipy R2000 a R3000 byly doplněny o 64bitové varianty, z nichž první byl mikroprocesor R4000 následovaný procesorem R8000 a taktéž R10000 (oba tyto mikroprocesory byly svého času používané v grafických stanicích SGI). V příštím pokračování seriálu o architekturách počítačů si podrobněji popíšeme strukturu těchto čipů a samozřejmě nezapomeneme ani na další mikroprocesory s architekturou RISC. Zejména se bude jednat o mikroprocesory PA-RISC a SPARC.

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

9. Odkazy na Internetu

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

Byl pro vás článek přínosný?

Autor článku

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