RISC

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Tento článek pojednává o typu procesorů. O komplexu účastnícím se RNA interference pojednává článek RISC (komplex).

RISC (anglicky Reduced Instruction Set Computing, 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[1]. 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ří ARM, MIPS, AMD Am29000, ARC, Atmel AVR, PA-RISC, Power (včetně PowerPC), SuperH, SPARC, DEC Alpha.

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

Typické rysy architektury RISC[editovat | editovat zdroj]

  • 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[editovat | editovat zdroj]

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ří 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[editovat | editovat zdroj]

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ů[editovat | editovat zdroj]

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[editovat | editovat zdroj]

neRISCové[editovat | editovat zdroj]

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ě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[editovat | editovat zdroj]

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é[editovat | editovat zdroj]

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ě.


Srovnání s jinými architekturami[editovat | editovat zdroj]

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ů RICS, 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). I přes mnoho úspěchům, měla architektura RISC snahu ovládnout i desktopové počítače a servery, kde do té doby dominoval Intel se svou platformou x86. Hlavní důvody:

  1. 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.
  2. 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, kteří vycházeli z myšlenky využít užšího pipeliningu i na x86 architektuře, stejně jako na 486 nebo Pentium. Š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ělali 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 byli NexGen Nx586, který byl povolen v roce 1994, AMD K5 byl o rok později, tj v roce 1995.
  3. 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ěli i samotné volně spojené superskalární (spekulativní) sekvence, které se generovaly z několika paralelních x86 dekódovací stanic.

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

V tomto článku byl použit překlad textu z článku RISC na anglické Wikipedii.

Reference[editovat | editovat zdroj]

  1. Studenti Stanfordovy univerzity definovali RISC jako „a type of microprocessor architecture that utilizes a small, highly-optimized set of instructions, rather than a more specialized set of instructions often found in other types of architectures“.
  2. http://web.archive.org/web/20041014143736/http://www.arm.com/miscPDFs/3823.pdf
  3. Patterson, D. A. and Ditzel, D. R. 1980. The case for the reduced instruction set computing. SIGARCH Comput. Archit. News 8, 6 (October 1980), 25-33. DOI= http://doi.acm.org/10.1145/641914.641917
  4. "Schaum's Outline of Computer Architecture" od Nicholas P. Carter 2002 p. 96 ISBN 0-07-136207-X
  5. "CISC, RISC, and DSP Microprocessors" od Douglas L. Jones 2000
  6. "A History of Apple's Operating Systems" od Amit Singh. "the line between RISC and CISC has been growing fuzzier over the years." - neboli "Hranice mezi RISC a DISC se v průběhu let stírají."

Související články[editovat | editovat zdroj]