Hlavní navigace

Mikroprocesory a mikrořadiče s instrukční sadou SuperH (SH)

8. 9. 2016
Doba čtení: 17 minut

Sdílet

Je možné pozorovat rostoucí oblibu mikrořadičů s plně 32bitovými ALU. Kromě ARM (Cortex-M) či MIPS se zejména v průmyslu setkáme i s mikrořadiči s instrukčními sadami SuperH (SH-2, SH-2A, SH-4).

Obsah

1. Mikroprocesory a mikrořadiče s instrukční sadou SuperH (SH)

2. Použití čipů s instrukční sadou SuperH v herních konzolích

3. Sega 32X

4. Sega Saturn

5. Základní vlastnosti původních RISCových mikroprocesorů Hitachi SH-2

6. Branch delay sloty

7. Sada pracovních registrů v SH-2 ISA

8. Stavový registr

9. Další specializované registry

10. Instrukční sada SH-2

11. Použití bitu T

12. Podporované adresovací režimy

13. Význam vybraných adresovacích režimů

14. Odkazy na Internetu

1. Mikroprocesory a mikrořadiče s instrukční sadou SuperH (SH)

O stále rostoucí oblibě 32bitových mikrořadičů jsme se již v tomto seriálu několikrát zmiňovali. Je způsoben hned několika důvody, z nichž nejviditelnější je stále se snižující cena těchto čipů. Rozdíly mezi podobně vybaveným osmibitovým, šestnáctibitovým a 32bitovým mikrořadičem jsou v některých případech již minimální, takže větší úlohu hrají jiné faktory, například spotřeba. Ovšem existují i další důvody, mezi něž patří především neustále se zkracující životní cykly různých produktů s mikrořadiči, což mj. znamená, že se při vývoji používají vysokoúrovňové jazyky a nikoli přímo assembler, jak tomu bylo (a mnohdy stále ještě je) ve sféře jednodušších osmibitových mikrořadičů (viz například starodávné řady PIC, 8051 či Motorola 68HC11). U vyšších programovacích jazyků, mezi něž si v tomto oboru dovolím počítat i klasické céčko, se negativně projevují mnohá omezení instrukčních sad zmíněných osmibitových mikrořadičů: typicky se jedná o akumulátorové architektury, osmibitové registry jsou nevhodné pro adresování, adresovací režimy jsou mnohdy velmi komplikované a závislé na typu paměti (EPROM/Flash, RAM, externí RAM, …), mnohdy chybí podpora pro podmínky s celými čísly se znaménky atd.

Určité vylepšení nabízí například osmibitové mikrořadiče AVR, které nalezneme například v populárních Arduinech. Ovšem až 32bitové mikrořadiče nabízí programátorům prakticky stejné možnosti a nástroje, jaké nalezneme u běžných mikroprocesorů určených pro desktopy – plnohodnotné překladače céčka, interpretry, debuggery atd. Zajímavé je, že v oblasti 32bitových mikrořadičů se prosazují RISCové architektury, které však mnohdy musely být upraveny kvůli specifickým požadavkům této oblasti (spouštění programů z Flash atd.). Proto například již popsané čipy ARM Cortex-M používají instrukční sadu Thumb s instrukcemi o šířce šestnáct bitů. Stejný princip nalezneme i u čipů SuperH (SH-2, SH-2A, SH-4), které byly vyráběné společností Hitachi a posléze největším výrobcem mikrořadičů na světě, firmou Renesas Electronics Corporation. Čipy SuperH nalezneme v mnoha průmyslových oblastech, například v oblasti komunikací, automotive atd. Není bez zajímavosti, že některé dále popsané vlastnosti mají čipy SuperH společné se zmíněnými čipy AVR.

Obrázek 1: Vývoj výnosů v oblasti 32bitových čipů (především mikrořadičů). Kromě široce diskutovaného poklesu po roce 2008 (ten postihl celý obor) je zajímavý výraznější růst čipů s jádry ARM. Power zde znamená PowerPC, SH čipy SuperH, ARM zahrnuje jak klasické ARM11, tak i řady Cortex.

2. Použití čipů s instrukční sadou SuperH v herních konzolích

V současnosti se sice mikrořadiče a mikroprocesory s instrukčními sadami SuperH používají v mnoha průmyslových aplikacích, ovšem původně byly vyvinuty díky kooperaci společností Hitachi a Sega pro zcela odlišnou oblast. Mělo se totiž jednat o čipy tvořící základ herních konzolí páté generace. Tento cíl byl splněn, protože čipy SH-2 byly použity v modulu Sega 32X a posléze i v plnohodnotné 32bitové herní konzoli Sega Saturn. Spolupráce společností Hitachi a Sega pokračovala i v dalších letech; výsledkem byl superskalární čip SH-4 použitý v konzoli Dreamcast, která se však s devíti miliony prodaných kusů stala poměrně velkým propadákem, protože konkurenční PlayStation 2 se prodalo více než 150 milionů kusů (mimochodem, i v PS2 byl použit RISCový mikroprocesor, tentokrát ovšem MIPS). V dalších dvou kapitolách si řekneme základní informace o modulu Sega 32X a o konzoli Sega Saturn, v kapitolách navazujících se pak budeme věnovat popisu programátorského modelu všech historických a především současných čipů používajících instrukční sadu SH-2.

Obrázek 2: Herní konzole Sega Mega Drive, na kterou měl navázat modul 32X a posléze Sega Saturn.

3. Sega 32X

Společnost Sega se, podobně jako konkurenční firma Nintendo, v první polovině devadesátých let minulého století pokoušela o vylepšení výpočetního i grafického výkonu svých stávajících herních konzolí čtvrté generace. Jednalo se o pochopitelnou snahu, protože NintendoSega byly v té době na úplné špičce v tomto segmentu trhu a neměly v této oblasti žádnou vážnější konkurenci – firma Nintendo se umístila se svojí herní konzolí Super NES (SNES), jíž se prodalo přes 49 milionů kusů, na prvním místě a na druhém místě se umístila firma Sega s herní konzolí Sega Mega Drive, které se podle oficiálních statistik prodalo 40 milionů kusů. Až daleko za těmito vítězi nalezneme konzoli TurboGrafx-16 (přibližně 10 milionů) či neúspěšný Philips CD-i (jen 570 tisíc kusů) a Commodore CDTV (což je vlastně slavná Amiga 500 doplněná o dálkové ovládání a jednotku CD-ROM). Zdálo se být tedy logické vylepšit původní herní konzole čtvrté generace (ideálně s použitím výkonných 32bitových čipů, které by doplnily původní 32bitovou Motorolu 68000 či 16bitový čip Ricoh 5A22) a zachovat přitom zpětnou kompatibilitu s již vydanými hrami.

Obrázek 3: Díky existenci výkonných čipů 80386, 80486DX a Motorola 68030/68040 již bylo možné vytvářet hry, v nichž se vykreslovala prostorová scéna programově. Na tomto screenshotu pravděpodobně většina čtenářů pozná slavný Doom, který bylo možné provozovat i na počítači s mikroprocesorem AMD 80386 40MHz. Právě tento typ her se stal velmi populární a jasně ukázal nutnost vylepšit původní šestnáctibitové herní konzole čtvrté generace, které byly orientovány na spritovou grafiku (plošinovky atd.).

Sega se navíc v roce 1993 ocitla v určité krizi, protože se sice její herní konzole Sega Mega Drive prodávala velmi dobře, ovšem vývoj další konzole páté generace (která byla později nazvána Sega Saturn, viz též navazující kapitolu) již nebyl tak rychlý, jak vedení firmy očekávalo. Obavy, které se později ukázaly být oprávněné, vládly především z rychlého uvedení konkurenční konzole PlayStation firmy Sony, protože tato herní konzole měla (podle tehdy dostupných informací) nabízet mnohem vyšší výkon než původní varianta Saturnu (původně byl grafický subsystém Saturnu optimalizován na 2D hry se sprity, posléze došlo k úpravám pro zobrazení 3D, ovšem odlišným způsobem, než u PlayStation). Společnost Sega na tuto nepříjemnou situaci reagovala vývojem doplňujícího modulu pro konzoli Sega Mega Drive, který byl představen jako relativně levná alternativa ke vznikajícím 32bitovým herním konzolím. Tento modul byl nazván Sega 32X a nejednalo se o úspěšný produkt, protože se ho prodalo pouze 600 000 kusů.

Obrázek 4: Hra Super Mario Bros – the Lost Levels je typickou ukázkou 2D hry masivně používající sprity.

Zatímco původní Sega Mega Drive obsahovala jednu z variant slavného CISCového mikroprocesoru Motorola 68000 (zde měl taktovací frekvenci nastavenou na 7,61 resp. 7,67 MHz podle použité televizní normy), byl modul Sega 32X osazen dvojicí mnohem výkonnějších plně 32bitových RISCových mikroprocesorů s instrukční sadou SH-2 vyráběných společností Hitachi, které využívaly taktovací frekvenci 23 MHz (dnes se samozřejmě frekvence čipů se stejnou sadou pohybují na násobně vyšších hodnotách). Samotná firma Sega inzerovala, že dvojice Sega Mega Drive+Sega 32X je až 40× výkonnější, než pouze Sega Mega Drive bez jakéhokoli rozšíření, ovšem benchmarky by pravděpodobně ukázaly poněkud jiné hodnoty :-) Kromě dvojice CPU byl na 32X nainstalován i nový grafický procesor VDP nabízející rozlišení 320×240 pixelů s využitím 32767 barevných odstínů s udávanou rychlostí vykreslování vyšších primitiv 50000 polygonů za sekundu.

Obrázek 5: Způsob zapojení Sega 32X do Sega Mega Drive/Sega Genesis.

4. Sega Saturn

Po modulu Sega 32X byla v roce 1994 konečně vydána plnohodnotná 32bitová konzole Sega Saturn. Tato herní konzole je postavena na větším množství vzájemně spolupracujících čipů, které jsou mezi sebou propojeny několika sběrnicemi:

# Čip Plné jméno Funkce
1 SH-2 Hitachi SuperH-2 dvojice RISCových mikroprocesorů
2 SCU System Control Unit řízení sběrnic a koordinace ostatních čipů, centrální jednotka konzole
3 SMPC System Manager and Peripheral Control řízení RESETu, přepínání horizontálního rozlišení, čtení stavu ovladačů
4 SCSP Saturn Custom Sound Processor zvukový čip (Yamaha YMF292)
5 VDP1 Video Display Processor 1 první část grafického subsystému
6 VDP2 Video Display Processor 2 druhá část grafického subsystému
7 MC68E000 Motorola MC68E000 řízení zvukového čipu SCSP
8 DSP DSP MC68E000 řízen CPU, může provádět různé funkce (nejde o samostatný čip, ale o modul)

Srdcem herní konzole Sega Saturnu je samozřejmě dvojice třicetidvoubitových mikroprocesorů SH-2, což mělo – alespoň podle původních plánů – vést ke zvýšení čistého výpočetního výkonu této herní konzole prakticky na dvojnásobnou hodnotu. Ve skutečnosti se však v praxi dosahovalo přibližně 1,5 násobku výkonu jediného čipu, a to z toho důvodu, že oba čipy sdílely společnou sběrnici, což se negativně projevovalo při přístupu do operační paměti (i když je nutné říci, že SH-2 mají užší instrukce než většina klasických RISCových čipů).

Obrázek 6: Blokové schéma herní konzole Sega Saturn.

5. Základní vlastnosti původních RISCových mikroprocesorů Hitachi SH-2

Podívejme se nyní na základní vlastnosti původních RISCových mikroprocesorů Hitachi SH-2. Již na úvod je nutné upozornit na poměrně důležitý fakt, že původní architektura SH-2 zůstala zachována až dodnes a prošla pouze několika změnami a vylepšeními. Typickým příkladem současného mikrořadiče, který je na SH-2 založen, je čip SH7125. Čipy Hitachi SH-2 jsou typické tím, že jsou sice postaveny na klasické RISCové (LOAD/STORE) architektuře, mají pipeline s pěti řezy, ovšem oproti konkurenčním čipům MIPS, SPARC či ARM v nich nalezneme i některé prvky inspirované DSP a CISCovými procesory. Tyto čipy používají instrukce o konstantní šířce šestnácti bitů, což je pro 32bitové RISC procesory poněkud netypické, ovšem v aplikační oblasti, kde se SuperH používají, je to ve skutečnosti velmi dobré řešení (opět vzpomeňme na ARM Cortex-M, který již vůbec nepodporuje původní 32bitovou instrukční sadu ARM, ale pouze Thumb a její varianty). Mimochodem – instrukční sada obsahuje pouze 62 instrukcí, ovšem současně je podporováno jedenáct adresovacích režimů (samozřejmě ne všechny instrukce lze kombinovat se všemi adresovacími režimy).

S výjimkou několika instrukcí je možné díky již zmíněné pipeline s pěti řezy v ideálním případě dokončit instrukci v každém taktu procesoru. Výjimkou je například instrukce MAC (Multiply and Accumulate), která v případě násobení dvou šestnáctibitových hodnot (s 32bitovým výsledkem) trvá dva cykly a v případě násobení dvou 32bitových hodnot (s 64bitovým výsledkem) dokonce čtyři cykly. Právě kvůli sice velmi užitečné, ovšem z hlediska architektury problematické instrukci MAC obsahují čipy SuperH dva speciální registry nazvané MACH a MACL, do nichž se ukládají mezivýsledky.

Mezi další déletrvající „neriscové“ instrukce patří všechny instrukce, které pro adresování používají registr GBR, skoky a absolutně nejdéle (celých osm cyklů!) trvá provedení instrukce TRAPA, která spustí obsluhu výjimky a současně uloží důležité registry na zásobník.

6. Branch delay sloty

Pro některé RISCové procesory (jmenujme například asi nejtypičtější MIPS, PA-RISC či SPARC) je poměrně obvyklé taktéž použití technologie takzvaných branch delay slotů, kterou najdeme i u zde popisovaných čipů SH-2. SH-2 obsahoval jeden delay slot, což znamenalo, že instrukce uložená ihned za instrukcí podmíněného či nepodmíněného skoku byla vykonána vždy, bez ohledu na výsledek skoku (zda se provede či neprovede). Díky existenci této technologie se mohla lépe využít instrukční pipeline, neboť pipeline nebylo nutno celou vyprazdňovat po každém skoku, což znamenalo zdržení až čtyři takty. Použití branch delay slotů je sice na první pohled poměrně jednoduché (ostatně většinu práce odvede překladač), ovšem může způsobit problémy ve chvíli, kdy dojde k výjimce v instrukci umístěné do delay slotu; navíc ještě záleží na tom, zda výjimka nastane už při dekódování instrukce nebo později.

Nezávisle na tom, zda je branch delay slot použit či nikoli, je při NEprovedení podmíněného skoku, tj. když nedojde ke splnění podmínky, skoková instrukce provedena za jediný takt.

7. Sada pracovních registrů v SH-2 ISA

Podobně jako další RISCové procesory jsou i čipy SuperH vybaveny relativně velkým množstvím pracovních registrů. Konkrétně se jedná o šestnáct 32bitových registrů nazvaných jednoduše R0R15. Registr R0 je význačný tím, že ho je možné použít ve funkci indexového registru v adresním režimu index register indirect a index GRP indirect (viz též kapitolu číslo 12). Pro některé operace je R0 implicitním zdrojovým nebo cílovým registrem, což je omezení způsobené použitím instrukcí se 16bitovými slovy, v nichž není k dispozici dostatek bitů pro indexování dvou zdrojových a jednoho cílového registru. Podobně i registr R15 má alternativní funkci, protože je ho možné využít ve funkci ukazatele na vrchol zásobníku SP v kódu pro obsluhu výjimek.

Poznámka: na většině čipů SuperH nenalezneme speciální banky registrů dostupné v různých režimech činnosti mikroprocesoru tak, jako je tomu například u čipů ARM.

8. Stavový registr

Kromě sady šestnácti pracovních registrů nalezneme v čipech SuperH i stavový registr. Ten má taktéž šířku třiceti dvou bitů, ovšem ve skutečnosti se v něm využívá jen osm bitů, jejichž význam je vypsán v následující tabulce:

Bit Označení Význam
9 M použit instrukcemi DIV0U, DIV0SDIV1
8 Q použit instrukcemi DIV0U, DIV0SDIV1
7 I3 maska pro přerušení (interrupt), bit 3
6 I2 maska pro přerušení (interrupt), bit 2
5 I1 maska pro přerušení (interrupt), bit 1
4 I0 maska pro přerušení (interrupt), bit 0
1 S použit instrukcí MAC
0 T „univerzální“ příznak nahrazující carry a overflow

Bity I0 až I3 se nezpracovávají samostatně, ale dohromady tvoří číslo 0..15 označující prioritu přerušení či výjimky. Pokud dojde k přerušení, jehož priorita je nižší nebo rovna zde uložené hodnotě, je přerušení ignorováno. Zajímavé je, že řadič přerušení může být nakonfigurován tak, že pro každý typ přerušení lze zvolit libovolnou prioritu (u dalších čipů se mnohdy setkáme s více či méně komplikovanými skupinami zdrojů přerušení). Podrobnosti si řekneme příště.

9. Další specializované registry

Mezi další registry se speciálním významem patří především:

Jméno Význam
MACH uložení (akumulace) mezivýsledků instrukce MAC
MACL uložení (akumulace) mezivýsledků instrukce MAC
GBR Global Base Register – obsahuje bázovou adresu pro nepřímý adresovací režim (viz další kapitoly). Použit pro přístup k periferním zařízením na čipu.
VBR Vector Base Register – obsahuje bázovou adresu tabulky vektorů použitých při zpracování výjimek
PR Procedure Register –používán při volání podprogramů (subrutin) pro uložení návratové adresy. U jiných architektur se setkáme se jménem LR – Link Register.
PC Program Counter – známý z jiných procesorů, ukazatel na právě zpracovávanou instrukci

Poznámka: všechny registry bez výjimky mají šířku 32 bitů, což je hlavní důvod pro existenci registrového páru MACH (čte se MAC-A, nikoli s ch :-) a MACL.

10. Instrukční sada SH-2

Již v předchozích kapitolách jsme si řekli, že instrukční sada procesorů SH-2 obsahuje pouze 62 instrukcí. Tyto instrukce lze rozdělit do několika kategorií:

  1. Pět instrukcí určených pro přenosy dat.
  2. Dvacet jedna aritmetických instrukcí (včetně konverzních instrukcí).
  3. Šest instrukcí pro logické a bitové operace.
  4. Deset instrukcí pro různé typy bitových posunů a rotací.
  5. Devět instrukcí pro podmíněné i nepodmíněné skoky (u některých s variantami s branch delay slotem).
  6. Konečně jedenáct instrukcí pro nastavení/vynulování bitu T, nastavení stavového registru atd.

Většina aritmetických, logických a bitových instrukcí používá dva zdrojové operandy (registr + určení adresy), přičemž první vstupní registr je současně i registrem pro uložení výsledku. Nenalezneme zde tedy v oblasti RISC běžný tříadresový kód.

Podrobnější popis jednotlivých instrukcí bude uveden v navazující části článku.

11. Použití bitu T

Při popisu stavového registru jste si pravděpodobně povšimli, že je v něm obsažen pouze jediný příznakový bit nazvaný T (od slova test). Tento bit slouží k mnoha účelům, pro které se v jiných procesorech používá větší množství příznakových bitů, například Zero, Carry a Overflow. Bit T lze nastavit či vynulovat přímo instrukcemi CLRT a SETT, ovšem většinou je nastavován a/nebo čten automaticky aritmetickými instrukcemi ADDV, ADDC, SUBV, SUBC, rotacemi a bitovými posuvy SHAR, SHAL, SHLR, SHLL, ROTR, ROTR i při dělení DIV0U, DIV0S a DIV1.

Tento bit lze testovat i v podmíněných skocích, konkrétně v instrukcích BT (test na 1), BF (test na 0) a dvojici BT/S a BF/S (varianty s branch delay slotem).

12. Podporované adresovací režimy

Čipy s instrukční sadou SH-2 podporují relativně velké množství adresovacích režimů, přičemž některé režimy by vlastně ani neměly být v čistě RISCové architektuře použity. Jedná se například o v praxi velmi užitečné režimy, při nichž dochází ke snížení či zvýšení obsahu pracovního registru použitého pro adresování apod. I zde tedy můžeme vidět, že SuperH je architektura, která se sice snaží využít všechny dostupné výhody RISCových procesorů, ovšem v případě potřeby převáží praktické hledisko. Ostatně podívejme se na následující tabulku, v níž nalezneme stručný popis všech podporovaných adresovacích režimů:

CS24 tip temata

# Adresovací režim Zápis Stručný popis
1 Immediate #xxx operandem je osmibitová konstanta
2 Register direct Rn operand je uložen přímo v registru Rn
3 Register indirect @Rn adresa=Rn
4 Register indirect with post-increment @Rn+ dtto, ale následně je registr zvýšen o 1, 2 či 4
5 Register indirect with pre-decrement @-Rn před adresováním je obsah registru snížen o 1, 2 či 4,
6 Register indirect with displacement @(disp, Rn) adresa=Rn+disp(*1, *2, *4)
7 Index register indirect @(R0, Rn) adresa=Rn+R0
8 GBR indirect with displacement @(disp, GBR) adresa=GBR+disp(*1, *2, *4)
9 Index GBR indirect @(R0, GBR) adresa=GBR+R0
10 PC relative PC+Rn adresa=PC+Rn
11 PC relative with displacement @(disp, PC) adresa=PC+disp(*2, *4)

13. Význam vybraných adresovacích režimů

Některé adresovací režimy vypsané v tabulce v předchozí kapitole přímo odpovídají konstrukcím, které nalezneme ve vyšších programovacích jazycích. Jedná se především o možnost umístění adresy do zvoleného pracovního registru Rn, popř. použití dvou registrů pro výpočet adresy. V tomto případě může první registr sloužit pro uložení bázové adresy (začátek pole, začátek datové struktury struct/record či objektu) a druhý registr může obsahovat offset. Při průchodu polem se uplatní adresovací režimy s post-inkrementem či pre-dekrementem pracovního registru, v němž je uložena adresa právě zpracovávaného prvku (typicky se na začátku programové smyčky do tohoto registru uloží bázová adresa pole). Povšimněte si přitom, že hodnota registru je zvýšena/snížena o konstantu 1, 2 či 4, a to v závislosti na typu prvku pole (bajt, 16bitové slovo, 32bitové slovo).

Podobně je použit konstantní offset disp(lacement), který je taktéž v případě potřeby vynásoben konstantou 2 či 4. Interně se samozřejmě namísto násobení pouze provede bitový posun v barrel shifteru. Adresování @(disp, PC) je velmi užitečné v případě, že je zapotřebí do nějakého registru vložit konstantu, protože kvůli instrukcím se šířkou šestnácti bitů není možné mít v instrukčním slovu kromě kódu instrukce uloženu i 16bitovou či 32bitovou konstantu (pouze některé instrukce mohou použít osmibitovou konstantu). Řešení je jednoduché – překladač či assembler vytvoří na konci subrutiny tabulku, na níž se pak odkáže přes PC+disp*2 či PC+disp*4. Ostatně s tímto řešením jsme se již setkali i u dalších RISCových procesorů.

14. Odkazy na Internetu

  1. Konkurence procesorů s mikroprogramovým řadičem – RISC
    http://www.root.cz/clanky/konkurence-procesoru-s-mikroprogramovym-radicem-architektura-risc/
  2. Mikroprocesory s architekturou RISC I
    http://www.root.cz/clanky/mi­kroprocesory-s-architekturou-risc-i/
  3. Procesory RISC v pracovních stanicích a serverech
    http://www.root.cz/clanky/procesory-s-architekturou-risc-v-pracovnich-stanicich-a-serverech/
  4. Procesory RISC v pracovních stanicích a serverech – architektura SPARC V8 a
    http://www.root.cz/clanky/procesory-risc-v-pracovnich-stanicich-a-serverech-architektura-sparc-v8-a-v9/
  5. Procesory RISC v pracovních stanicích a serverech – architektura PA-RISC
    http://www.root.cz/clanky/procesory-risc-v-pracovnich-stanicich-a-serverech-architektura-pa-risc/
  6. Rozšíření instrukční sady procesorových jader s otevřenou architekturou RISC-V
    http://www.root.cz/clanky/rozsireni-instrukcni-sady-procesorovych-jader-s-otevrenou-architekturou-risc-v/
  7. Sega documentation
    http://koti.kapsi.fi/~anti­me/sega/docs.html
  8. 1995 Programming on the Sega Saturn
    http://cowboyprogramming.com/2010/06/03/1995-programming-on-the-sega-saturn/
  9. Sega Myths-Saturn was the most difficult console to program for of 5th Gen
    http://forums.sega.com/show­thread.php?313485-Sega-Myths-Saturn-was-the-most-difficult-console-to-program-for-of-5th-Gen
  10. SuperH RISC engine Family
    http://www.renesas.com/pro­ducts/mpumcu/superh/index­.jsp
  11. Sega Saturn
    http://en.wikipedia.org/wi­ki/Sega_saturn
  12. Fourth-Generation Consoles
    http://gaming.wikia.com/wiki/Fourth-Generation_Consoles
  13. Fifth-Generation Consoles
    http://gaming.wikia.com/wiki/Fifth-Generation_Consoles
  14. History of video game consoles (fifth generation)
    http://en.wikipedia.org/wi­ki/History_of_video_game_con­soles_(fifth_generation)
  15. Sega Mega Drive
    http://sega.jp/archive/segahard/md/
  16. Sega Archives
    http://sega.jp/archive/segahard/
  17. Sega Genesis
    http://www.dmoz.org/Games/Vi­deo_Games/Console_Platfor­ms/Sega/Genesis/
  18. The Sega Mega Drive/Genesis
    http://www.captainwilliam­s.co.uk/sega/megadrive/me­gadrive.php
  19. Sega Master System Museum
    http://alexkidd.com/
  20. Jadeite's Sega Master System Museum
    http://rp_gamer.tripod.com/SMS/1.html
  21. Sega Master System (Wikipedia)
    http://en.wikipedia.org/wi­ki/Sega_Master_System
  22. Sega Card (Wikipedia)
    http://en.wikipedia.org/wi­ki/Sega_Card
  23. Sega Master System VDP documentation
    http://www.smspower.org/u­ploads/Development/msvdp-20021112.txt?sid=28c370e1fcac51d­5774319979bf96f4c
  24. The16bit Era Of Console Video Games
    http://tvtropes.org/pmwiki/pmwi­ki.php/Main/The16bitEraOf­ConsoleVideoGames
  25. The Console Wars
    http://www.cracked.com/funny-2590-the-console-wars/
  26. Console Wars
    http://tvtropes.org/pmwiki/pmwi­ki.php/Main/ConsoleWars
  27. Era of the „Bit Wars“
    http://www.gtplanet.net/fo­rum/threads/era-of-the-bit-wars.119796/
  28. Rez Wars: How the Bit Wars never really ended
    http://www.ign.com/blogs/be­astmastertoad/2013/01/31/rez-wars-how-the-bit-wars-never-really-ended
  29. Which system ended the „Bit Wars“?
    http://atariage.com/forum­s/topic/199163-which-system-ended-the-bit-wars/
  30. Status Register
    https://en.wikipedia.org/wi­ki/Status_register
  31. Introduction to ARM Thumb
    http://www.embedded.com/electronics-blogs/beginner-s-corner/4024632/Introduction-to-ARM-thumb
  32. Code Size – a comprehensive comparison of microMIPS32 and Thumb code size using many Megabytes of customer code
    https://community.arm.com/grou­ps/processors/blog/2014/04/28/co­de-size-a-comprehensive-comparison-of-micromips32-and-thumb-code-size-using-many-megabytes-of-customer-code
  33. MIPS MCUs Outrun ARM
    http://www.linleygroup.com/new­sletters/newsletter_detail­.php?num=5117
  34. Carry bits, The Architect's Trap
    http://yarchive.net/comp/ca­rry_bit.html
  35. Microprocessor Design/ALU Flags
    https://en.wikibooks.org/wi­ki/Microprocessor_Design/A­LU_Flags
  36. Flags register in an out-of-order processor
    http://cs.stackexchange.com/qu­estions/42095/flags-register-in-an-out-of-order-processor
  37. Berkeley RISC
    http://en.wikipedia.org/wi­ki/Berkeley_RISC
  38. Great moments in microprocessor history
    http://www.ibm.com/develo­perworks/library/pa-microhist.html
  39. RISC vs. CISC
    http://www-cs-faculty.stanford.edu/~ero­berts/courses/soco/projec­ts/2000–01/risc/risccisc/
  40. RISC and CISC definitions:
    http://www.cpushack.com/CPU/cpu­AppendA.html
  41. The Evolution of RISC
    http://www.ibm.com/develo­perworks/library/pa-microhist.html#sidebar1

Autor článku

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