Hlavní navigace

Vývoj mikroprogramových řadičů: od mainframu EDSAC k moderním mikroprocesorům

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

Sdílet

V dnešním článku si řekneme, jak mikroprogramové řadiče ovlivnily vývoj výpočetní techniky, především procesorů a později i mikroprocesorů s komplexními instrukčními sadami (CISC). Ty sice na čas ustoupily do pozadí kvůli procesorům RISC a VLIW, ovšem v současnosti se zdá být nejvýhodnější právě kombinace CISC+RISC.

Obsah

1. Mikroprogra­mování jako forma zobecnění funkce programovatelných počítačů

2. Von Neumannova architektura programovatelného počítače

3. EDSAC – první počítač se skutečným mikroprogramovým řadičem

4. IBM System/360 – významná architektura CISC postavená na mikroprogramo­vém řadiči

5. Role mikroprogramového řadiče na architekturách CISC

6. Komplexní instrukční sady (CISC) aneb jen částečně úspěšná snaha o vyplnění „sémantické mezery“

7. Mikroprogramové řadiče v mikroprocesorech

8. Instrukční sada typu CISC a mikroprogramový řadič na procesorech x86

9. Odkazy na Internetu

1. Mikroprogra­mování jako forma zobecnění funkce programovatelných počítačů

Na princip funkce mikrořadiče řízeného pomocí mikroprogramů, jenž byl popsaný v předchozí části tohoto seriálu, se můžeme dívat jako na zobecnění idey programování počítačů pomocí instrukcí uložených v operační paměti. V samých počátcích vývoje výpočetní techniky, konkrétně u takzvané nulté generace (zhruba do roku 1947) a první generace (cca roky 1946 až 1958) počítačů, se totiž algoritmy nevyjadřovaly pomocí instrukcí tvořících ucelené programy, které by byly uloženy do paměti. Namísto toho byl algoritmus „zadrátován“ takovým způsobem, že se pomocí vodičů umístěných většinou na spínacích panelech vzájemně propojovaly jednotlivé moduly počítače – sčítačky, pracovní registry, řadiče paměti, vstupní prvky atd. Navíc se u některých specializovaných počítačů používaných za druhé světové války pro luštění šifer nedal algoritmus vůbec měnit – počítač stále prováděl stejné výpočty, ovšem s různými daty. Tato konstrukce počítačů odpovídala dobové technologii, které se používala především v telefonních ústřednách s ručním přepojováním hovorů, semaforech nebo například pro ovládání výtahů.

Obrázek 1: Způsob programování elektronického počítače ENIAC pomocí vzájemného propojování jednotlivých modulů přepojováním kabelů mezi jednotlivými funkčními moduly.

Příkladem tohoto typu počítače je například světoznámý ENIAC, pro nějž se daly pomocí soustavy vodičů programovat jak jednotlivé moduly počítače (které v podstatě prováděly relativně samostatné podprogramy), tak i spojovat jednotlivé moduly mezi sebou a tvořit tak z podprogramů větší celky – programy (nazývané zde master program). Každý „zadrátovaný“ podprogram mohl být navíc až devětkrát opakován (ENIAC totiž nepracoval v poziční dvojkové soustavě, ale v kódu 1 z 10), popř. mohl být podprogram v každé své iteraci přerušen na základě vyhodnocení znaménka zpracovávaného čísla, které nahrazovalo příznakové bity (zajímavé je, že podobným způsobem je řízení běhu programu prováděno i na mikroprocesorech MIPS, které jinak nemají s ENIACem prakticky nic společného).

sssr03

Obrázek 2: Pohled na počítač Strela ze SSSR, z jehož rozměrů je zřejmé, proč se těmto strojům říkalo „sálové počítače“. I u tohoto mainframu se algoritmus mohl do počítače zadávat pomocí „předrátování“ jednotlivých modulů.

Jedině díky této vlastnosti – testování znaménka – bylo možné na ENIACu implementovat obdobu podmíněných skoků. Dokonce se dá říci, že ENIAC a podobné stroje vlastně neobsahoval skutečný CPU, protože funkce centrální procesorové jednotky byly „rozprostřeny“ do mnoha sčítaček, odčítaček, násobiček a čítačů (moduly pracovaly nezávisle na sobě, a tudíž se teoreticky dalo dokonce dosáhnout jisté paralelizace výpočtů). Ovšem tento způsob programování počítače byl velmi namáhavý a zdlouhavý, což možná nevadilo při výpočtech balistických tabulek, luštění šifer a dalších činnostech, pro něž byly počítače nulté a první generace v převážném množství případů určeny, ovšem pro většinu dalších úloh se jednalo o zcela nevhodné řešení.

2. Von Neumannova architektura programovatelného počítače

Ovšem již v polovině čtyřicátých let minulého století přišel John von Neumann s převratnou myšlenkou – libovolný algoritmus nemusí být přímo „zadrátován“ v počítači, ale může být zapsán ve formě programu složeného ze sekvence instrukcí, které mohou být uloženy v paměti počítače naprosto stejným způsobem, jako zpracovávaná data; viz též dnes již klasické von Neumannovo dílo First Draft of a report on the EDVAC vydané v roce 1945. Právě díky této myšlence vznikly první skutečné procesory s instrukčními sadami, děrné štítky se začaly používat mj. i pro uložení programů a navíc se otevřela cesta k dalšímu zobecnění: programy začaly být asi o deset let později vytvářeny ve vyšších programovacích jazycích, přičemž překlad prováděl jiný program (algoritmus) nazývaný překladač (dnes bereme překladače jako zcela běžnou věc, ale idea, že překladač je sám o sobě taktéž algoritmem, byla v době její implementace chápána jako malá revoluce). Toto dvojí zobecnění práce univerzálního programovatelného počítače nebylo dodnes překonáno a je na něm založena i moderní výpočetní technika a informatika.

Obrázek 3: Velmi jednoduchý čtyřbitový procesor sestavený z integrovaných obvodů patřících do rodiny čipů Am2900. Mikroprogramový řadič je v tomto zapojení tvořen řídicí logikou, sekvencérem (přesněji řečeno mikrosekvencérem) a mikroprogramovou pamětí.
Zdroj: technické materiály firmy AMD.

Architektura počítačů navržená John von Neumannem byla založena na centrální procesorové jednotce rozdělené na aritmeticko-logickou jednotku a řadič, který na základě instrukcí čtených z operační paměti řídil všechny další moduly počítače (vstupně-výstupní zařízení, aritmeticko-logickou jednotku, operační paměť). Nikde ovšem nebylo přesně specifikováno, jakým způsobem má být řadič, jakožto „mozek“ počítače, implementován. V prvních mainframech založených na myšlence Johna von Neumanna se tedy uplatňovaly obvodové řadiče, jimiž jsme se stručně zabývali v předchozí části tohoto seriálu. Obvodové řadiče byly dostatečně rychlé a nevyžadovaly ke své činnosti prakticky žádné paměťové prvky (většinou jen čítač či posuvný registr), ovšem přinášely i některé nevýhody. Jednou z poměrně závažných nevýhod byla velká složitost obvodového řadiče v případě, že se používala komplexnější instrukční sada (CISC). Poněkud paradoxně se právě složité instrukční sady začaly v padesátých letech minulého století stále více používat, zejména na mainframech druhé generace. A právě tehdy se začala prakticky realizovat myšlenka mikroprogramo­vání.

Obrázek 4: Použití mikroprogramového řadiče v jednoduchém procesoru sestaveného z integrovaných obvodů řady Intel 3000 (zde jsou zobrazeny ekvivalenty vyráběné v minulosti tuzemskou Teslou).
(ofoceno z katalogu podniku Tesla).

3. EDSAC – první počítač se skutečným mikroprogramovým řadičem

Myšlenka mikroprogramování vznikla již v roce 1951, kdy ji ve svých článcích představil sir Maurice V. Wilkes (titul sir získal Wilkes právě za svoji dlouholetou práci v oboru IT). Idea mikroprogramování spočívala v zobecnění konstrukce centrální procesorové jednotky (CPU) takovým způsobem, že strojové instrukce byly rozkládány na sekvenci řídicích signálů pomocí mikroprogramu uloženého v paměti typu ROM s velmi rychlou dobou přístupu. Vzhledem ke stavu technologie v roce 1951 samozřejmě V. Wilkes nemohl použít klasický čip s ROM, v němž jsou bity trvale zaznamenány s použitím poslední, zákazníkem definované masky při výrobě čipu. Namísto toho Wilkes navrhoval použít matici navzájem kolmých vodičů, v níž by byla bitová jednička „zaznamenána“ pomocí diody spojující jeden vodorovný a jeden svislý vodič (vodivou kovovou spojku nelze použít, protože by se do matice nepřímo zapsaly i falešné jedničky). Tento typ paměti byl s velkou pravděpodobností poprvé představen B. I. Ramejevem ze SSSR (s tímto významným mužem v oboru IT, konstruktérem počítačů Ural, jsme se již seznámili v paralelně běžícím seriálu o historii výpočetní techniky).

sssr02

Obrázek 5: Hlavní moduly počítače MESM včetně jeho řídicího (operátorského) panelu.

Na zpočátku pouze teoretickou práci M. V. Wilkese o několik let později navázali William Renwick a David Wheeler, kteří v roce 1957 sestrojili první skutečný počítač založený na mikroprogramovém procesoru. Vzhledem k tomu, že diodová matice navržená Wilkesem by byla příliš rozměrná pro počítač s velkou instrukční sadou (diodami jsou zde samozřejmě myšleny diskrétní elektronické součástky, i když se v roce 1957 již pomalu schylovalo k výrobě prvních prototypů integrovaných obvodů), použili W. Renwick a D. Wheeler namísto diod feritovou paměť, což bylo ve svém důsledku velmi zajímavé, protože se obsah této paměti dal přeprogramovat a tím pádem bylo možné i měnit instrukční sadu počítače. První prototyp tohoto stroje byl nazván EDSAC 1½ a používal pro uložení mikroinstrukcí feritovou paměť s maticí o velmi malých rozměrech 6×8 feritových jader – tento počítač ovšem neobsahoval celou instrukční sadu. Finální podoba počítače z roku 1958, jež nesla název EDSAC 2, měla již paměťovou matici o rozměrech 32×32 feritových jader, což již umožnilo implementaci plnohodnotné instrukční sady za použití mikrokódů.

Obrázek 6: Hledání chyby v blocích počítače UNIVAC II bylo zajisté dobrodružnou záležitostí. Tento počítač totiž neobsahoval mikroprogramový řadič, ale řadič obvodový. V případě použití mikroprogramového řadiče by se zapojení celého počítače poměrně výrazným způsobem mohlo zjednodušit.

4. IBM System/360 – významná architektura CISC postavená na mikroprogramo­vém řadiči

V roce 1962 se firma IBM rozhodla navrhnout do značné míry univerzální architekturu počítačů, která by pokrývala jak nároky jednodušších úloh (pro které stačily méně výkonné a tím pádem i levnější počítače), tak i nároky mnohem větší, například provozování vědeckotechnických výpočtů a simulací (armáda byla velmi významným zákazníkem IBM). Předností této architektury mělo být to, že systém mohl „růst“ současně s rostoucími požadavky zákazníka bez nutnosti měnit programové vybavení, a to dokonce ani na té nejnižší – strojové – úrovni (jinými slovy byla zaručena stoprocentní binární kompatibilita). Výsledkem těchto snah firmy IBM byla v roce 1964 platforma nazvaná System/360, resp. zkráceně S/360. Označení celé platformy nebylo zvoleno náhodně, protože 360 značí počet stupňů kruhu, což mělo naznačovat, že S/360 je výhodná ve všech směrech. Přístup firmy IBM při návrhu univerzální platformy System/360 byl poměrně radikální, protože všechny předešlé mainframy této firmy byly velmi úzce specializované pro určitý typ úloh.

ibm2

Obrázek 7: Zrekonstruovaný řídicí panel počítače IBM 1401.

V následující tabulce jsou pro ilustraci vypsány nejvýznamnější modely druhé generace sálových počítačů firmy IBM:

Model Určení Rok výroby
IBM 7090 vědeckotechnické výpočty 1959
IBM 7094 vědeckotechnické výpočty 1962
IBM 7094 II vědeckotechnické výpočty 1964
IBM 7040 vědeckotechnické výpočty 1963
IBM 7044 vědeckotechnické výpočty 1963
IBM 7080 hromadné zpracování dat 1961
IBM 7070 dekadická soustava 1960
IBM 7072 dekadická soustava 1962
IBM 7074 dekadická soustava 1961
IBM 1240 zpracování řetězců a BCD čísel proměnné délky 1963
IBM 1401 zpracování řetězců a BCD čísel proměnné délky 1959
IBM 1410 zpracování řetězců a BCD čísel proměnné délky 1960
IBM 1420 zpracování řetězců a BCD čísel proměnné délky 1962
IBM 1440 zpracování řetězců a BCD čísel proměnné délky 1962
IBM 1450 zpracování řetězců a BCD čísel proměnné délky 1968
IBM 1460 zpracování řetězců a BCD čísel proměnné délky 1963
IBM 7010 rozšířená verze IBM 1410 1962
ibm3_

Obrázek 8: Zrekonstruovaný řídicí panel počítače IBM System/360 Model 30. Na dlaždici před panelem (zhruba pod čtveřicí bílých tlačítek) je pro porovnání velikostí umístěný současný osmibitový mikrořadič PIC.

5. Role mikroprogramového řadiče na architekturách CISC

Pro platformu IBM System/360 byla vytvořena poměrně rozsáhlá a složitá instrukční sada (ISA) s mnoha adresními režimy, která mimo běžné binární aritmetiky obsahovala i instrukce pro práci s textem (řetězci), různé numerické formáty dat známé například z kalkulaček (datový typ decimal), ale i podporu BCD aritmetiky, která se dodnes používá například při výpočtech s měnou. Podobné typy instrukčních sad s mnoha adresními režimy a složitými instrukcemi se posléze začaly označovat zkratkou CISC, neboli Complex Instruction Set Code). Právě jednotná instrukční sada platná pro všechny modely IBM System/360 spolu s přesnou a jednotnou specifikací pracovních registrů způsobila, že i když se mainframy vyráběné v této řadě od sebe mnohdy velmi podstatně odlišovaly svým výpočetním výkonem i kapacitami operačních a externích pamětí, byly jednou vytvořené a přeložené aplikace spustitelné na jakémkoli z těchto strojů, nezávisle na použitém modelu počítače (samozřejmě za předpokladu, že funkce programu nezávisely na přesném časování). I díky tomu se tato architektura stala velmi populární, což ostatně dokazuje i fakt, že se některé modely vyráběly až do roku 1977, tj. celých třináct let.

ibm3_

Obrázek 9: Počítače IBM System/360 Model 25 patří také mezi zástupce levnějších modelů řady 360, ovšem vyráběn byl až o cca pět let později, než Model 30, jehož řídicí panel je zobrazen na předcházejícím obrázku.

Vzhledem ke složitosti instrukční sady mainframů řady IBM System/360 se v praxi používaly mikroprogramy. To mj. znamenalo, že procesory, které byly s touto architekturou kompatibilní, mnoho svých strojových instrukcí nevykonávalo přímo, jak by tomu bylo u mnohem jednodušší architektury RISC nebo v případě použití obvodových řadičů, ale emulovaly tyto instrukce na základě takzvaného mikrokódu (mikroinstrukcí uložených v řadiči). Z pohledu programátorů však bylo zcela jedno, který model mainframu S/360 byl v danou chvíli použit: pokud se například volala instrukce pro násobení, mohla být na výkonnějším modelu provedena přímo násobičkou v pouhých několika strojových taktech, ale na levnějším a méně výkonném mainframu mohla být stejná instrukce provedena v mnoha krocích pomocí mikroprogramu. To stejné platilo v případě práce s čísly reprezentovanými v systému plovoucí řádové tečky, kde byly některé operace, například výpočet goniometrických funkcí, rozloženy až na několik set mikrooperací.

ibm3_

Obrázek 10: Částečně zrekonstruovaný ovládací panel počítače IBM System/360 Model 91.

Velká podobnost s architekturou x86 zajisté není náhodná. V některých případech byly i mikroinstrukce pro přímé vykonání zbytečně složité a proto byly rozkládány do takzvaných nanoinstrukcí, což vedlo ke snížení potřebné kapacity mikropaměti v mikroprogramovém řadiči i ke zjednodušení návrhu samotného mikroprocesoru (z moderních procesorů se nanoinstrukce používaly například u Motoroly M68000). Procesory s architekturou CISC se většinou vyznačují velmi obsáhlou instrukční sadou, mnohdy do značné míry ortogonální (tj. většina instrukcí může být použita se všemi adresními režimy). To by ovšem v případě použití obvodového řadiče vedlo k nutnosti použití velmi složitého zapojení, zatímco při použití řadiče mikroprogramového se jedná o „pouhé“ rozšíření kapacity mikroprogramové paměti.

6. Komplexní instrukční sady (CISC) aneb jen částečně úspěšná snaha o vyplnění „sémantické mezery“

Důvodů, proč byla pro architekturu sálových počítačů IBM System/360 navržena rozsáhlá a taktéž i složitá instrukční sada, existovalo několik. Prvním důvodem bylo to, že díky instrukční sadě, v níž mohly mít instrukce podle počtu svých operandů či rozsahu uložených dat (například offsetů adres) rozdílnou bitovou délku, byla celková velikost objektového kódu vytvořeného překladačem obecně menší než v případě, že by byly využity instrukce pevné délky, jak je tomu například u mnoha procesorů typu RISC (tento termín se však začal používat až o zhruba deset let později). Tato vlastnost byla velmi důležitá právě v době kralování mainframů, protože operační paměť byla velmi drahou komoditou a na druhou stranu mikroprogramová paměť nutná pro konstrukci řadiče zpracovávajícího komplexní instrukční sadu, měla stále ještě relativně malou kapacitu v porovnání s pamětí operační. Poněkud paradoxní je, že i v současnosti je použití operační paměti „drahé“, ovšem především z hlediska času nutného pro načtení kódů instrukcí, protože výpočetní výkon procesorů roste rychleji, než vybavovací doba DRAM (částečně je tato problematika řešena systémem vyrovnávacích pamětí, ovšem i přesto se právě rychlost, nebo spíše pomalost operačních pamětí stala jedním z důvodů relativního neúspěchu klasických procesorů RISC).

lisp01

Obrázek 11: Na tomto grafu evoluce programovacích jazyků můžeme vidět některé významné vyšší programovací jazyky používané v padesátých a šedesátých letech minulého století.

Druhý důvod pro zavedení složité instrukční sady, a to možná ještě podstatnější, než byl důvod předchozí, spočíval v přesvědčení vědců a inženýrů v šedesátých letech minulého století o tom, že bohatší instrukční sada ulehčí práci překladačům z vyšších programovacích jazyků a vyplní tak takzvanou sémantickou mezeru mezi strojovým kódem a assemblerem na jedné straně a vyššími programovacími jazyky na straně druhé. Dokonce se předpokládalo, že ideální procesor vhodný pro počítače nové generace, by měl v každé instrukci vykonat ekvivalent jednoho příkazu vyššího programovacího jazyka. Na tomto přesvědčení byla postavena jak instrukční sada zde zmiňované architektury IBM System/360, tak i například instrukční sada počítačů VAX. Snaha o vyplnění sémantické mezery (semantic gap) nakonec vedla k návrhu počítače známého pod názvem SYMBOL machine, který měl umožňovat přímé spouštění programů napsaných ve vyšším programovacím jazyce, kde se každá jazyková konstrukce přeložila do poměrně komplikovaného operačního kódu (aby odpadla časově složitá lexikální a syntaktická analýza zdrojového kódu). Tento projekt však nikdy nebyl komerčně úspěšný, protože navržený procesor byl velmi složitý (a drahý), měl malou výpočetní výkonnost a současně i velmi malou flexibilitu v adaptaci nových programovacích jazyků.

ibm3_

Obrázek 12: Ovládací panel počítače IBM System/360 Model 91 po levé straně a terminál připojený pomocí modemu na straně pravé.

7. Mikroprogramové řadiče v mikroprocesorech

Mikroprogramové řadiče a v některých případech i myšlenka komplexních instrukčních sad (CISC) se začaly ve větší míře znovu objevovat spolu s prvními mikroprocesory. Důvody, které konstruktéry některých mikroprocesorů vedly k využití mikroprogramových řadičů, se vlastně ani příliš nelišily od důvodů o necelou generaci starších konstruktérů mainframů – mikroprogramový řadič byl v případě použití rozsáhlejších instrukčních sad jednodušší než řadič obvodový a navíc bylo možné mikroprogramovou paměť realizovat na čipu poměrně snadno, zejména při použití diodové matice na bipolárních čipech (u čipů unipolárních měla zpočátku paměťová matice větší rozměry než u čipů bipolárních, což bylo ovšem vyváženo dalšími výhodnými vlastnostmi unipolární technologie). Právě z tohoto důvodu jsou například mnohé osmibitové mikroprocesory ze sedmdesátých let minulého století postaveny na mikroprogramovém řadiči a současně mají komplexní instrukční sadu (i když se to nemusí na první pohled zdát, i procesor Intel 8080 má složitější instrukční sadu, než mnohý moderní procesor typu RISC).

Obrázek 13: Interní struktura známého osmibitového mikroprocesoru MOS 6502 použitého mj. i v osmibi­tových mikropočítačích firem Apple, Atari a samozřejmě i Commodore.

Buďme poněkud konkrétnější: mikroprogramový řadič byl použit zejména v osmibitových mikroprocesorech Intel 8008, které byly následovány mnohem slavnějšími čipy Intel 8080 (ty měly oproti svému předku rozšířenou instrukční sadu, i když byla dodržena zpětná kompatibilita) a taktéž mikroprocesory Intel 8085, které celou řadu osmibitových procesorů firmy Intel uzavíraly. Mikrořadič byl použit i v konkurenčním a v mnoha ohledech mnohem lépe navrženém osmibitovém čipu Zilog Z80 (zde se již dokonce objevily instrukce použitelné pro práci s bloky dat). Mikroprogramový řadič byl použit i u slavných mikroprocesorů MOS 6502 (viz též obrázky číslo 13 a 14) a posléze i u některých šestnáctibitových a 32bitových mikroprocesorů, včetně Intel 8088/Intel 8086 a Motoroly M68000.

Obrázek 14: Zvýraznění bloků mikroprogramového řadiče použitého v osmibitovém mikroprocesoru MOS 6502. Jedná se o instrukční dekodér s instrukčním registrem (červený blok), mikrosekvencér (zelený blok) a mikroprogramovou paměť (modrý blok) u níž si povšimněte, že i tak jednoduchý mikroprocesor, jakým MOS 6502 je, obsahoval celkem 130 řídicích signálů (i když některé z těchto signálů sloužily pro výběr další mikroinstrukce z mikropaměti, což jsme si vysvětlili minule).

Cloud23

8. Instrukční sada typu CISC a mikroprogramový řadič na procesorech x86

Některé myšlenky na to, že by se instrukce mikroprocesoru (prováděné řadičem a ALU) měly v určité míře přibližovat programovým konstrukcím vyšších programovacích jazyků, najdeme i v dodnes stále používané i když zastaralé instrukční sadě i386/x86. V této instrukční sadě se jedná například o instrukce pro tvorbu programových smyček JCXZ, LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ, instrukce zjednodušující volání podprogramů (funkcí) s předáváním parametrů či odchod z podprogramů ENTER, LEAVE a taktéž řetězcové operace LODS*, STOS*, MOVS*, CMPS*, SCAS* (za hvězdičku se podle typu zpracovávaných dat doplňuje B–byte, W–word atd.), před něž bylo možné vložit prefix pro opakování operací. Právě zde se ostatně ukazuje, jak mohou být tyto snahy o přiblížení se vyšším programovacím jazykům zrádné, protože „řetězcové instrukce“ procesorů i386/x86 se hodí hlavně pro pascalovské řetězce, nikoli řetězce céčkovské, tedy řetězce s ukončující nulou a bez počitadla celkového počtu uložených znaků.

Obrázek 15: Šestnáctibitový mikroprocesor Intel 8086.

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. CPU design (Wikipedia)
    http://en.wiki­pedia.org/wiki/CPU_de­sign
  5. Architecture of the WISC CPU/16
    http://www.ece­.cmu.edu/~koop­man/stack_com­puters/sec4_2­.html
  6. Zásobníkový procesor WISC CPU/16 (Root.CZ)
    http://www.ro­ot.cz/clanky/pro­gramovaci-jazyk-forth-a-zasobnikove-procesory-16/#k03
  7. Writable instruction set, stack oriented computers: The WISC Concept
    http://www.ece­.cmu.edu/~koop­man/forth/roches­ter87.pdf
  8. The Great CPU List: Part X: Hitachi 6301 – Small and microcoded (1983)
    http://jbayko­.sasktelwebsi­te.net/cpu2.html#Sec2Par­t10
  9. Control unit (Wikipedia)
    http://en.wiki­pedia.org/wiki/Con­trol_unit
  10. Microcode (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­crocode
  11. Microsequencer (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mi­crosequencer
  12. Maurice V. Wilkes Home Page
    http://www.cl­.cam.ac.uk/ar­chive/mvw1/
  13. Maurice Wilkes (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mau­rice_Wilkes
  14. 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
  15. The KimKlone: (Bride of Son of Cheap Video, page 2)
    http://laughto­nelectronics.com/ar­cana/BrideOfSon­Pg2.html
  16. Microprogram Memory
    http://free-books-online.org/com­puters/advanced-computer-architecture/mi­croprogram-memory/
  17. First Draft of a report on the EDVAC
    http://qss.stan­ford.edu/~god­frey/vonNeuman­n/vnedvac.pdf
  18. Introduction to Microcontrollers
    http://www.pic24mi­cro.com/cisc_vs_ris­c.html
  19. Micro-operation
    http://en.wiki­pedia.org/wiki/Mi­cro-operation

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.