RISC

RISC (anglicky Reduced Instruction Set Computing, výslovnost risk) označuje vinformatice jednu z architektur mikroprocesorů. RISC označuje procesory sredukovanou 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[1] (například u RISC neexistuje instrukce pro násobení, které se realizuje softwarově pomocí jednoduchých instrukcísčítání a bitových posunů). 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. [zdroj?] Mezi zástupce RISC procesorů patří ARMMIPSAMD Am29000,ARCAtmel AVRPA-RISCPower (včetně PowerPC), SuperHSPARCDEC Alpha.

Alternativní architekturou jsou CISC procesory (anglicky Complex Instruction Set Computers, s komplexní instrukční sadou).

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 řídící 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.[zdroj?] 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ří procesoryARMv6.

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 nejznámější 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.[2][3]

Filozofie návrhu RISC 

neRISCové 

Na začátku počítačového průmyslu se programovalo výhradně v assembleru nebostrojové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ěli 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ěmi 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 ukázalo, že je obtížné napsat kompilátor s omezenou schopností využívat funkce, které poskytují klasické 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 mnohé návrhy byly dělány ve spěchu, s nedostatkem času na optimalizaci či doladění každé instrukce. Byly však doladěny 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 vyšší operační frekvenci CPU. Další registry by vyžadovaly další čip nebo board areas, což by v této době (1975) bylo reálné pouze za předpokladu snížení logické složitosti 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 mohla proměnná délka konstant sama uložit do nepoužívaných částí instrukčního slova, takže by byly okamžitě k dispozici vždy, když je procesor potřebuje (stejně jako okamžité adresování v tradičním designu). To vyžadovalo malé operační kódy, aby se ponechal prostor pro rozumně velkou konstantu v 32 bitovém instrukčním slově.

Velikost instrukční sady a alternativní terminologie 

Běžně se setkáváme s nepochopením fráze "počítač s redukovanou instrukční sadou". Tato chybná idea je založena na představě, že některé instrukce jsou prostě eliminovány z procesoru a výsledkem je menší sada instrukcí. Ve skutečnosti RISCové instrukční sady stále narůstají a spousta z nich má dokonce širší instrukční sadu než procesory založené na CISC.