RISC

RISC (, výslovnost risk) označuje v informatice jednu z architektur mikroprocesorů. RISC označuje procesory s redukovanou instrukční sadou, jejichž návrh je zaměřen na jednoduchou, vysoce optimalizovanou sadu strojových instrukcí, která je v protikladu s množstvím specializovaných instrukcí ostatních architektur. Přesná definice označení RISC není jasná, avšak často se používá popisnější název architektura load-store, který lépe vyjadřuje fakt, že celkový počet instrukcí RISC procesoru může být paradoxně vyšší, než u jiných architektur. Mezi zástupce RISC procesorů patří ARM, MIPS, AMD Am29000, ARC, Atmel AVR, PA-RISC, POWER (včetně PowerPC), SuperH, SPARC, DEC Alpha.

Protichůdnou architekturou jsou CISC procesory (, s komplexní instrukční sadou). Další alternativou jsou VLIW (Very Long Instruction Word) a EPIC (Explicitly parallel instruction computing) procesory. VLIW a EPIC procesory vznikly vývojem z RISC. VLIW se používají se například ve starších GPU firmy AMD. Architekturu EPIC používají například procesory Itanium a Itanium 2.

Typické rysy architektury RISC 
 procesor komunikuje s pamětí po sběrnici
 redukované jsou pouze typy strojových instrukcí (tj. "práce uvnitř", operace s pamětí a řídicí instrukce)
 délka provádění jedné instrukce je vždy jeden cyklus (tj. délka v bitech všech instrukcí je stejná)
 mikroinstrukce jsou hardwarově implementovány na procesoru, čímž je velmi výrazně zvýšena rychlost jejich provádění
 registry jsou pouze víceúčelové (nezáleží, který z nich instrukce využije, což zjednodušuje návrh překladačů)
 využívají řetězení instrukcí (pipelining)

Historie 
Během 70. let 20. století vědci (např. Seymour Cray) ukázali, že většina programů prováděných na tehdejších počítačích využívala pouze malou část (jen asi 30 %) ze všech dostupných strojových instrukcí procesoru. Bylo tomu tak proto, že tehdejší překladače nedokázaly efektivněji využít všech instrukcí. Také složitý přístup do paměti zpomaloval provádění operací. Započalo se proto s návrhem jednoduchých RISC procesorů s redukovanou instrukční sadou, které mohly s výhodou využívat mikroprocesorové ortogonality, kdy pro každou operaci existuje v procesoru jen jediná instrukce. Jedním z prvních RISCových strojů byl Superpočítač CDC 6600 navržený v roce 1964. Jeho CPU měla 74 operačních kódů (tj. různých instrukcí), v porovnání se 400 u 8086. Mezi současné zástupce plně ortogonálních procesorů patří procesory ARMv6.

RISC procesory jsou jednoduché, a proto jsou jejich výrobní náklady nižší a mají nižší spotřebu, než procesory CISC.

Mikrokód 
Ke konci 90. let 20. století, kdy se produkce procesorů CISC eskalovala k technickým limitům (zvyšování frekvence a zvětšování čipu versus konečná rychlost šíření elektromagnetického pole), byla navržena implementace mnoha komplexních (a méně využívaných) CISCových instrukcí pomocí interních jednoduchých mikroinstrukcí. CISC procesory se tak interně staly RISC procesory, které mohly pomocí mikrokódu interpretovat složité a komplexní CISC instrukce.

Zastoupení RISC procesorů 
Mezi výrobce procesorů RISC patří IBM (např. řada PowerPC), Intel (většina jeho procesorů je ale řazena mezi CISC, nebo označována jako tzv. „post-RISC“) a Sun Microsystems (např. řada Sparc). V 32bitových RISC procesorech zabírají 75% podíl procesory ARM.

Filozofie návrhu RISC

neRISCové 
Na začátku počítačového průmyslu se programovalo výhradně v assembleru nebo strojovém kódu, které se vyznačovaly jednoduchými instrukcemi. Návrháři CPU se snažili, aby instrukce dělaly tolik práce, kolik je proveditelné. S příchodem vyšších programovacích jazyků začali programátoři vytvářet specializované instrukce, aby přímo použili některé centrální mechanismy těchto jazyků. Dalším obecným cílem bylo zajistit všechny možné adresovací módy pro každou instrukci tzv. ortogonalita k usnadnění implementace kompilátoru. Proto mají často aritmetické operace stejné výsledky jako operandy přímo v paměti (s výjimkou registrů).

V této době byl design hardwaru vyspělejší než design kompilátoru. Což bylo důvodem k použití jednotlivých částí hardwaru nebo mikrokódu než pamětí omezené kompilátory. Tato filozofie designu byla zpětně pojmenována jako komplexní instrukční výpočetní sada (complex instruction set computing – CISC), poté, co se objevila RISCová filozofie mikroprocesorů.

CPU měly relativně málo registrů a to zejména z těchto důvodů:
 Více registrů znamená také časově náročnější ukládání a obnovení jejich obsahu ze zásobníku.
 Velký počet registrů vyžaduje velký počet instrukčních bitů jako registr specifikací, což zpřehledňuje kód
 CPU registry jsou dražší než externí paměťová místa, velké registrové sady byly značně těžkopádné s omezenými obvody na desce nebo čipovou inteligencí.

Hlavní nevýhodou byla omezená hlavní paměť, pouze několik kilobytů. Proto bylo výhodnější uchovávat informace ve složitých počítačových programech a tím zbytečně neblokovat paměť. Proto byly vyvinuty funkce, které více kódují instrukce, proměnné délky instrukce, které načítají data stejně dobře jako počítají. Tyto problémy měly vyšší prioritu než snadné dekódování instrukcí.

Další nevýhodou bylo, že hlavní paměti byly poměrně pomalé (běžný typ paměti byla paměť s feritovým jádrem); díky velkému množství informací, mohla jedna snížit frekvenci CPU, který má přístup k těmto prostředkům. Moderní počítače se setkávají s podobnými limitujícími faktory: hlavní paměti jsou ve srovnání s CPU pomalé a rychlé vyrovnávací paměti (cache paměti) jsou omezené svojí velikostí. To může částečně vysvětlit, proč dokážou vysoce zakódované instrukční sady být stejně užitečné jako RISC procesory v moderních počítačích.

Raný RISC 
První systém, který by mohl být dnes znám jako RISC, byl CDC 6600 supercomputer, navržený roku 1964, tedy deset let předtím, než byl samotný pojem RISC objeven. CDC 6600 využíval load-store architekturu s pouze dvěma adresními módy (registr-registr a registr-konstanta) a 74 operačních kódů (zatímco Intel 8086 jich měl 400). CDC 6600 obsahovalo jedenáct zřetězených funkčních jednotek pro aritmetické a logické výpočty, pět načítacích a dvě ukládací jednotky. Paměť CDC 6600 obsahovala násobné paměťové banky; všechny load-store jednotky mohly pracovat současně. Základní hodinový takt cyklu/instrukce byl desetkrát rychlejší než přístup do paměti.

Jiné rané load-store zařízen byl minipočítač Data General Nova navržený roku 1968 vývojářem Edson de Castro. Měl téměř čistou RISCovou instrukční sadu, pozoruhodně podobnou dnešním procesorům ARM.

Nejstarší pokus vyrobit čipově založený RISC procesor byl projekt od společnosti IBM, který odstartoval roku 1975. Byl pojmenován podle budovy, ve které projekt probíhal. Projekt vedl k rodině procesorů IBM 801, která byla široce užita v hardware IBM. IBM 801 byl nakonec produkován v jednočipové podobě jako ROMP (Research OPD[Office Products Division] Micro Processor) v roce 1981.Jak vyplývá z názvu, tento procesor byl navržen pro "mini" úlohy a když IBM vydalo IBM RT-PC založené na tomto návrhu roku 1986, jeho výkon nebyl přijatelný. Přesto IBM 801 inspiroval několik výzkumných projektů včetně nových u IBM, které vedly k IBM POWER systému.

RISCové 
V polovině 70. let 20. století prokázali výzkumní pracovníci IBM (zejména John Cocke), že většina kombinací z těchto ortogonálních adresních módů a instrukcí nebyla použita ve většině programů generovaných kompilátory. Tím se prokázalo, že je obtížné napsat kompilátor, který by kromě základních používal i pokročilejší funkce klasických CPU.

Bylo také objeveno, že na některých implementovaných architekturách byly složité operace pomalejší než posloupnost jednodušších operací vykonávající stejnou věc. To bylo z části způsobeno tím, že návrhy procesorů byly často dělány ve spěchu, s nedostatkem času na optimalizaci či doladění všech instrukcí. Vyladěny byly pouze nejčastěji používané instrukce. Jedním neblaze známým příkladem byla instrukce VAX's INDEX.[3]

Hlavní paměť byla pomalejší než mnohé CPU. Nástupem polovodičových pamětí se tento rozdíl snížil. Bylo ale stále zřejmé, že více registrů (a později vyrovnávací paměti) by umožnilo zpracovávat data vyšší rychlostí. Další registry by však vyžadovaly větší čip nebo další místo na základní desce, což by v této době (1975) bylo reálné pouze za předpokladu snížení složitosti logiky v CPU.

Ještě jeden impulz jak RISC a další návrhy přišly z praktických měření do světa reálných programů. Andrew Tanenbaum shrnul mnoho ukázek, že procesory byly často bezprostřední. Například ukázal, že 98% všech konstant v programu by se vešlo do 13 bitů, dosud ale mnoho CPU vyhrazovalo 16 nebo 32 bitů pro jejich uložení. To naznačuje, že ke snížení počtu přístupů do paměti by se mohly konstanty uložit do nepoužívaných částí instrukčního slova (u procesorů se stejně dlouhými instrukcemi), takže by byly okamžitě k dispozici vždy, když je procesor potřebuje (podobně jako při přímém adresování v tradičním designu). To však vyžadovalo navrhnout krátké operační kódy, aby zůstal v 32bitovém instrukčním slově prostor pro rozumně velkou konstantu.

Srovnání s jinými architekturami 
Některé CPU byly navrženy tak, aby disponovaly jen velmi omezenou instrukční sadou. Vzhledem k tomu, že jsou tyto návrhy dost odlišné od klasických návrhů RISC, mají i jiný název a to MISC (neboli Minimální instrukční sada počítače), nebo jsou též známy pod názvem Transport triggered architecture (TTA).
Přes veškerou snahu nedokázala architektura RISC ovládnout desktopové počítače a ty servery, kde do té doby dominoval Intel se svou platformou x86. Hlavní důvody:
 Opravdu velmi velká základna proprietárních počítačových aplikací je psána pro platformu x86, případně je do této platformy zkompilována, zatímco RISC nemá žádnou takovou podobnou architekturu, proto byli uživatelé zamčeni na platformě x86.
 Ačkoliv byl RISC schopen velmi rychle a levně škálovat výkon, Intel využil své stabilní velké základny a velké množství peněz začal utrácet za vývoj procesorů. Intel by mohl utrácet daleko více a častěji než jakýkoliv výrobce RISC na zlepšení výroby. Totéž nelze říci o menších společnostech, jako např. Cyrix nebo NexGen, které vycházely z myšlenky využít užšího pipeliningu i na x86 architektuře, stejně jako na i486 nebo Pentiu. Šestá generace (6x86) od společnosti Cyrix udělala přesně to, aby se o ní dalo hovořit jako o vyspělé, zejména využila superskalární spekulativní vykonávání kódu pomocí přejmenování registrů. Jiní, jako je Nx586 a AMD K5 udělaly totéž, ale nepřímo pomocí ukládání dynamického mikrokódu do vyrovnávací paměti a částečným nezávislým plánováním. První čipy využívající tuto techniku byly NexGen Nx586, který byl uveden v roce 1994, AMD K5 byl o rok později, tj. v roce 1995.
 Pozdější procesory byly více výkonnější, zejména procesory Intel P6, AMD K6, AMD K7, a Pentium 4 byly založeny na dynamickém ukládání do vyrovnávací paměti včetně implementace základních plánovací technik. Prováděly i samotné volně spojené superskalární (spekulativní) sekvence, které se generovaly z několika paralelních x86 dekódovací stanic.

Zatímco dříve byly rozdíly mezi RISC a CISC poměrně značné, od roku 2000 jsou téměř k nerozeznání.

Reference

Související články 
 PA-RISC
 Advanced RISC Machine
 CISC

Externí odkazy 
 

Architektura procesoru
Počítačová terminologie
Zkratky