Počítač se sníženou sadou instrukcí - Reduced instruction set computer

Sun UltraSPARC , mikroprocesor RISC

Počítač se sníženou sadou instrukcí nebo RISC ( / r ɪ s k / ) je počítač s malou, vysoce optimalizovanou sadou instrukcí , spíše než specializovanější sada, která se často nachází v jiných typech architektury, například v komplexní instrukci nastavený počítač (CISC). Hlavním rozlišovacím znakem architektury RISC je, že sada instrukcí je optimalizována pomocí velkého počtu registrů a vysoce pravidelného kanálu instrukcí , což umožňuje nízký počet hodinových cyklů na instrukci (CPI). Základní rysy filozofie RISC jsou architektura načítání/ukládání , ve které je k paměti přistupováno prostřednictvím konkrétních instrukcí, nikoli jako součást většiny instrukcí v sadě, a které vyžadují pouze instrukce s jedním cyklem .

Ačkoli řada počítačů ze 60. a 70. let byla identifikována jako předchůdce RISC, moderní koncept pochází z 80. let minulého století. Zejména dva projekty na Stanfordově univerzitě a Kalifornské univerzitě v Berkeley jsou nejvíce spojeny s popularizací tohoto konceptu. Stanfordova MIPS by byla i nadále uváděna na trh jako úspěšná architektura MIPS , zatímco Berkeleyův RISC pojmenoval celý koncept a byl komercionalizován jako SPARC . Dalším úspěchem z této éry bylo úsilí IBM, které nakonec vedlo k architektuře instrukční sady IBM POWER , PowerPC a Power ISA . Jak tyto projekty dozrávaly, na konci 80. a zejména na počátku 90. let vzkvétala řada podobných návrhů, které představovaly hlavní sílu na trhu pracovních stanic Unix i pro vestavěné procesory v laserových tiskárnách , směrovačích a podobných produktech.

Mnoho druhů návrhů RISC zahrnuje ARC , Alpha , Am29000 , ARM , Atmel AVR , Blackfin , i860 , i960 , M88000 , MIPS , PA-RISC , Power ISA (včetně PowerPC ), RISC-V , SuperH a SPARC . Použití procesorů architektury ARM v chytrých telefonech a tabletech , jako jsou zařízení iPad a Android, poskytlo širokou uživatelskou základnu pro systémy založené na RISC. Procesory RISC se používají také v superpočítačích , jako je Fugaku , který je od června 2020 nejrychlejší superpočítač na světě.

Historie a vývoj

Design Alan Turing z roku 1946 Automatic Computing Engine (ACE) měl mnoho charakteristik architektury RISC. Řada systémů, sahající až do šedesátých let minulého století, byla připsána jako první architektura RISC, částečně na základě jejich použití přístupu load/store . Termín RISC vytvořil David Patterson z projektu Berkeley RISC , přestože se dříve objevily poněkud podobné koncepty.

CDC 6600 navrhl Seymour Cray v roce 1964 použil load / store architekturu s pouhými dvěma adresování režimy (registr + evidenci a registraci + okamžitá konstanta) a 74 operačních kódů s tím, že základní takt je 10krát rychlejší než doba přístupu na paměťovou . Částečně kvůli optimalizované architektuře CDC 6600 pro načítání/ukládání , Jack Dongarra říká, že může být považován za předchůdce moderních systémů RISC, ačkoli pro vývoj moderního systému RISC bylo třeba překonat řadu dalších technických překážek.

IBM 801

Mikroprocesor RISC IBM PowerPC 601

Michael J. Flynn považuje za první systém RISC návrh IBM 801 , který v roce 1975 zahájil John Cocke a dokončil v roce 1980. 801 se vyvinul ze snahy vybudovat 24bitový vysokorychlostní procesor, který bude sloužit jako základ pro digitální telefonní spínač . Aby dosáhli svého cíle přepnutí 300 hovorů za sekundu (1 milion za hodinu), vypočítali, že CPU vyžaduje výkon řádově 12 MIPS, ve srovnání s jejich nejrychlejším mainframovým počítačem té doby, 370/168, který dosahoval rychlosti 3,5 MIPS.

Návrh byl založen na studii rozsáhlé sbírky statistik IBM o jejich stávajících platformách. Ukázalo se, že kód v nastavení vysokého výkonu široce využíval registry a že jim často došly. To naznačuje, že další registry dále zlepší výkon. Navíc si všimli, že kompilátory obecně ignorovaly drtivou většinu dostupných pokynů, zejména režimy ortogonálního adresování . Místo toho vybrali nejrychlejší verzi jakékoli dané instrukce a poté pomocí ní vytvořili malé rutiny. To naznačovalo, že většinu pokynů lze odstranit, aniž by to ovlivnilo výsledný kód. Tyto dva závěry fungovaly ve shodě; odstranění instrukcí by umožnilo kratší instrukční kódy a uvolnění bitů v instrukci, které by pak mohly být použity k výběru mezi větší sadou registrů.

Program přepínání telefonů byl zrušen v roce 1975, ale do té doby tým prokázal, že stejný design by nabídl významné zvýšení výkonu při běhu téměř jakéhokoli kódu. V simulacích ukázali, že kompilátor naladěný na používání registrů, kdykoli je to možné, spustí kód asi třikrát rychleji než tradiční návrhy. Poněkud překvapivě by stejný kód běžel asi o 50% rychleji i na stávajících počítačích díky vylepšenému používání registru. V praxi jejich experimentální překladač PL/8, mírně omezená verze PL/1 , důsledně produkoval kód, který běžel na jejich sálových počítačích mnohem rychleji.

32bitová verze 801 byla nakonec vyrobena v jednočipové formě jako IBM ROMP v roce 1981, což znamenalo „mikroskopický výzkum OPD [Office Products Division]. Tento CPU byl navržen pro „mini“ úkoly a byl také použit v IBM RT PC v roce 1986, což se ukázalo jako komerční selhání. Ale 801 inspirovalo několik výzkumných projektů, včetně nových v IBM, které by nakonec vedly k architektuře instrukční sady IBM POWER .

RISC a MIPS

Do konce sedmdesátých let se 801 stal v tomto odvětví dobře známým. To se shodovalo s novými výrobními technikami, které umožňovaly vstup složitějších čipů na trh. Z80 z roku 1976 měl 8000 tranzistorů, přičemž z roku 1979 Motorola 68000 (68k) měl 68.000. Tyto novější návrhy obecně využívaly nově nalezenou složitost k rozšíření sady instrukcí, aby byla ortogonálnější. Většina, jako 68k, k tomu používala mikrokód , četla pokyny a znovu je implementovala jako posloupnost jednodušších interních pokynů. V 68k, plně 1 / 3 z tranzistorů byly použity pro tento Microcoding.

V roce 1979 byl David Patterson vyslán na volno z Kalifornské univerzity v Berkeley, aby pomohl týmu DEC na západním pobřeží zlepšit mikrokód VAX. Patterson byl zasažen složitostí procesu kódování a dospěl k závěru, že je neudržitelný. Nejprve napsal článek o způsobech, jak zlepšit mikrokódování, ale později si to rozmyslel a rozhodl se, že problémem je samotný mikrokód. Díky financování z programu DARPA VLSI zahájil Patterson úsilí Berkeley RISC . Program, dnes prakticky neznámý, vedl k obrovskému počtu pokroků v oblasti designu čipů, výroby a dokonce i počítačové grafiky. Berkeleyův tým vzhledem k řadě programů z jejich varianty BSD Unix zjistil, stejně jako IBM, že většina programů nevyužila velké množství instrukcí v 68k.

Pattersonova raná práce poukázala na důležitý problém s tradičním přístupem „více je lépe“; dokonce i ty pokyny, které byly rozhodující pro celkový výkon, byly zpožděny jejich cestou přes mikrokód. Pokud by byl mikrokód odstraněn, programy by běžely rychleji. A protože mikrokód nakonec vzal složitou instrukci a rozdělil ji na kroky, nebyl důvod, aby to kompilátor místo toho nemohl udělat. Tyto studie ukázaly, že i bez dalších změn by se dalo udělat čip s 1 / 3 méně tranzistorů, které by běžet rychleji. Toho si všiml i tým IBM 801; když kompilátoři čelili výběru možných operačních kódů, vybrali by ten, o kterém autoři věděli, že byl optimalizován tak, aby běžel nejrychleji. To znamenalo, že mikrokód, který sestrojil sled operací k provedení operačního kódu, vždy dělal stále to samé. Tento úkol zavedl zpoždění, které bylo možné eliminovat, pokud byl odstraněn mikrokód a skutečně používaný operační kód byl přímo k dispozici kompilátoru.

Bylo také zjištěno, že u mikrokódovaných implementací určitých architektur měly složité operace tendenci být pomalejší než posloupnost jednodušších operací, které dělají totéž. To byl částečně důsledek skutečnosti, že mnoho návrhů bylo uspěchaných, s malým časem na optimalizaci nebo vyladění každé instrukce; optimalizovány byly pouze ty nejčastěji používané a sekvence těchto instrukcí mohla být rychlejší než méně vyladěná instrukce provádějící ekvivalentní operaci jako tato sekvence. Jeden neslavný příklad byl VAX ‚s INDEXinstrukce.

Berkeleyova práce také přinesla řadu dalších bodů. Mezi nimi byla skutečnost, že programy strávily značné množství času prováděním podprogramových volání a návratů, a zdálo se, že existuje potenciál ke zlepšení celkového výkonu urychlením těchto hovorů. To vedlo návrh Berkeley k výběru metody známé jako registrační okna, která může výrazně zlepšit výkon podprogramu, i když za cenu určité složitosti. Také si všiml, že většina matematických pokyny byly jednoduché úkoly, pouze 1 / 3 z nich skutečně provedl operaci, jako je sčítání nebo odčítání. Když ale k těmto operacím došlo, měly tendenci být pomalé. To vedlo k mnohem většímu důrazu na základní aritmetickou datovou jednotku, na rozdíl od předchozích návrhů, kde byla většina čipu věnována ovládání a mikrokódu.

Výsledný Berkeley RISC byl založen na získávání výkonu pomocí pipeliningu a agresivního používání registrace oken. V tradičním CPU má jeden malý počet registrů a program může kdykoli použít jakýkoli registr. V CPU s registrovými okny existuje velké množství registrů, např. 128, ale programy jich mohou používat pouze malý počet, např. Osm, v jednom okamžiku. Program, který se omezuje na osm registrů na proceduru, může provádět velmi rychlá volání procedur : Volání jednoduše přesune okno „dolů“ o osm, do sady osmi registrů použitých touto procedurou a návrat přesune okno zpět. Projekt Berkeley RISC dodal procesor RISC-I v roce 1982. Skládal se pouze z 44 420 tranzistorů (ve srovnání s průměrem asi 100 000 u novějších návrhů CISC té doby) RISC-I měl pouze 32 instrukcí, a přesto zcela překonal jakýkoli jiný jednočip design. Na to navázali 40 760 tranzistorem, 39 instrukcemi RISC-II v roce 1983, který běžel třikrát rychleji než RISC-I.

Jak se projekt RISC začal proslavovat v Silicon Valley , podobný projekt začal na Stanfordské univerzitě v roce 1981. Tento projekt MIPS vyrostl z absolventského kurzu Johna L. Hennessyho , v roce 1983 vytvořil fungující systém a mohl spouštět jednoduché programy od 1984. Přístup MIPS kladl důraz na agresivní hodinový cyklus a používání potrubí a zajišťoval, aby mohl být provozován co nejplněji. Na systém MIPS navázal MIPS-X a v roce 1984 Hennessy a jeho kolegové založili MIPS Computer Systems . Komerční podnik vyústil v novou architekturu, která se v roce 1985 také nazývala MIPS a mikroprocesor R2000 .

Celková filozofie konceptu RISC byla ve druhé polovině 80. let široce chápána a vedla konstruktéry MIPS-X v roce 1987 k tomuto způsobu:

Cílem jakéhokoli formátu instrukce by mělo být: 1. jednoduché dekódování, 2. jednoduché dekódování a 3. jednoduché dekódování. Jakékoli pokusy o zlepšení hustoty kódu na úkor výkonu CPU by měly být při každé příležitosti zesměšňovány.

Komerční útěk

Prototyp čipu RISC-V (2013).

Počátkem 80. let koncepce RISC obklopovala značná nejistota. Jeden problém zahrnoval využití paměti; jedna instrukce od tradičního procesoru, jako je 68k, může být zapsána jako snad půl tuctu jednodušších instrukcí RISC. Teoreticky by to mohlo zpomalit systém, protože trávil více času načítáním pokynů z paměti. V polovině osmdesátých let však koncepce dozrály natolik, že byly považovány za komerčně životaschopné.

Komerční návrhy RISC začaly vznikat v polovině 80. let minulého století. První MIPS R2000 se objevil v lednu 1986, krátce poté Hewlett Packard ‚s PA-RISC v některé ze svých počítačů. Mezitím se úsilí Berkeley stalo tak známým, že se nakonec stalo názvem celého konceptu. V roce 1987 společnost Sun Microsystems začala dodávat systémy s procesorem SPARC , přímo založené na systému Berkeley RISC II. Vládní výbor USA pro inovace v oblasti výpočetní techniky a komunikace připisuje přijetí životaschopnosti konceptu RISC úspěchu systému SPARC. Úspěch SPARC obnovil zájem v rámci IBM, která do roku 1990 uvolnila nové systémy RISC a do roku 1995 byly procesory RISC základem serverového průmyslu za 15 miliard dolarů.

Pozdnější 1980, nové designy RISC byly snadno překonávat všechny tradiční designy s velkým náskokem. V tu chvíli začali všichni ostatní prodejci s vlastním úsilím RISC. Mezi nimi byly DEC Alpha , AMD Am29000 , Intel i860 a i960 , Motorola 88000 , IBM POWER a o něco později IBM/Apple/Motorola PowerPC . Mnoho z nich od té doby zmizelo, protože často nenabízí žádnou konkurenční výhodu nad ostatními ve stejné době. Ty, které zůstávají, se často používají pouze na specializovaných trzích nebo jako součást jiných systémů, pouze SPARC a POWER mají významný zbývající trh. Odlehlým bodem je ARM , který ve spolupráci s Apple vyvinul design s nízkou spotřebou a poté se specializoval na tento trh, který v té době byl mezerou. S nárůstem mobilních počítačů, zejména po představení iPhonu , je ARM nyní nejpoužívanější špičkovou konstrukcí CPU na trhu.

Konkurence mezi RISC a konvenčními CISC přístupy byla také předmětem teoretické analýzy na začátku 80. let, což vedlo například k železnému zákonu výkonu procesoru .

Od roku 2010 je na Kalifornské univerzitě v Berkeley vyvíjena nová open source architektura instrukční sady (ISA), RISC-V , pro výzkumné účely a jako bezplatná alternativa k proprietárním ISA. Od roku 2014 je verze 2 uživatelského prostoru ISA opravena. ISA je navržen tak, aby byl rozšiřitelný z jádra barebones dostatečného pro malý vestavěný procesor na superpočítačové a cloudové výpočetní použití se standardními rozšířeními a koprocesory definovanými návrhářem čipů. Byl testován v silikonovém provedení s ROCKET SoC, který je k dispozici také jako generátor generátoru open-source v jazyce CHISEL.

Charakteristika a filozofie designu

Filozofie instrukční sady

Běžným nedorozuměním fráze „počítač se sníženou sadou instrukcí“ je, že instrukce jsou jednoduše odstraněny, což má za následek menší sadu instrukcí. Ve skutečnosti se za ty roky sady instrukcí RISC rozrostly a dnes mnoho z nich má větší sadu instrukcí než mnoho CPU CISC. Některé procesory RISC, jako například PowerPC, mají sady instrukcí tak velké jako například CISC IBM System/370 ; naopak DEC PDP-8- jasně CISC CPU, protože mnoho z jeho instrukcí zahrnuje více přístupů do paměti-má pouze 8 základních instrukcí a několik rozšířených instrukcí. Termín „snížený“ v této frázi měl popsat skutečnost, že množství práce, kterou každá jednotlivá instrukce vykonává, je sníženo - maximálně jeden cyklus datové paměti - ve srovnání se „složitými instrukcemi“ CPU CISC, které mohou vyžadovat desítky dat paměťové cykly za účelem provedení jediné instrukce.

Někdy je preferován termín architektura load/store .

Dalším způsobem, jak se podívat na debatu RISC/CISC, je zvážit, co je kompilátoru vystaveno. V procesoru CISC může hardware interně používat registry a příznakový bit za účelem implementace jedné složité instrukce, jako je STRING MOVE, ale skrýt tyto detaily před kompilátorem. Interní operace procesoru RISC jsou „vystaveny kompilátoru“, což vede k přezdívce „Přenést zajímavé věci do kompilátoru“.

Instrukční formát

Většina architektur RISC má instrukce s pevnou délkou (běžně 32 bitů) a jednoduché kódování, což značně zjednodušuje načítání, dekódování a logiku vydávání. Jednou nevýhodou 32bitových instrukcí je snížená hustota kódu, což je u vestavěných počítačů nepříznivější charakteristika než u pracovních stanic a serverových trhů Architektury RISC byly původně navrženy tak, aby sloužily. K řešení tohoto problému má několik architektur, jako ARM , Power ISA , MIPS , RISC-V a Adapteva Epiphany , volitelný krátký formát instrukcí s omezenou funkcí nebo funkci komprese instrukcí. SH5 také se tohoto vzoru, byť mít se vyvinul v opačném směru, že přidá delší médií pokyny pro původní 16-bitové kódování.

Využití hardwaru

Pro jakoukoli danou úroveň obecného výkonu bude mít čip RISC typicky mnohem méně tranzistorů věnovaných základní logice, což původně umožňovalo konstruktérům zvětšit velikost sady registrů a zvýšit vnitřní rovnoběžnost.

Mezi další funkce architektury RISC patří:

Návrhy RISC také pravděpodobněji obsahují Harvardský paměťový model , kde jsou instrukční tok a datový proud koncepčně odděleny; to znamená, že úprava paměti, kde je uložen kód, nemusí mít žádný vliv na instrukce prováděné procesorem (protože CPU má samostatnou instrukci a mezipaměť dat ), alespoň dokud nebude vydána speciální synchronizační instrukce; Procesory CISC, které mají oddělené instrukční a datové mezipaměti, je obecně automaticky synchronizují, aby byla zajištěna zpětná kompatibilita se staršími procesory.

Mnoho raných návrhů RISC také sdílelo charakteristiku slotu zpoždění větve , prostoru instrukcí bezprostředně po skoku nebo větvi. Instrukce v tomto prostoru se provede bez ohledu na to, zda je větev přijata nebo ne (jinými slovy, účinek větve je zpožděn). Tato instrukce zaměstnává ALU CPU na delší dobu, která je normálně nutná k provedení větve. V dnešní době je slot pro zpoždění větví považován za neblahý vedlejší účinek konkrétní strategie pro implementaci některých návrhů RISC a moderní designy RISC se s tím obvykle vypořádají (například PowerPC a novější verze SPARC a MIPS).

Některé aspekty přisuzované prvním návrhům označeným RISC kolem roku 1975 zahrnují pozorování, že tehdejší kompilátory omezené pamětí často nebyly schopné využívat funkce určené k usnadnění kódování ručního sestavení a že složité režimy adresování vyžadují mnoho cyklů k provedení na požadované další přístupy do paměti. Tvrdilo se, že tyto funkce by byly lépe vykonávány sekvencemi jednodušších instrukcí, pokud by to mohlo poskytnout implementace dostatečně malé na to, aby ponechaly prostor pro mnoho registrů, čímž by se snížil počet pomalých přístupů do paměti. V těchto jednoduchých provedeních má většina instrukcí jednotnou délku a podobnou strukturu, aritmetické operace jsou omezeny na registry CPU a pouze oddělují paměť pro načítání a ukládání instrukcí. Tyto vlastnosti umožňují lepší vyvážení fází potrubí než dříve, čímž jsou kanály RISC výrazně efektivnější a umožňují vyšší taktovací frekvence .

Ještě další impuls jak RISC, tak dalších návrhů přišel z praktických měření na programech v reálném světě. Andrew Tanenbaum shrnul mnoho z nich a ukázal, že procesory často měly nadměrné velikosti meziproduktů. Ukázal například, že 98% všech konstant v programu se vejde do 13 bitů , ale mnoho návrhů CPU věnovalo 16 nebo 32 bitům jejich uložení. To naznačuje, že ke snížení počtu přístupů do paměti by stroj s pevnou délkou mohl ukládat konstanty do nevyužitých bitů samotného instrukčního slova, takže by byly okamžitě připraveny, když je CPU potřebuje (podobně jako okamžité adresování v konvenčním provedení) . To vyžadovalo malé operační kódy , aby byl v 32bitovém instrukčním slově ponechán prostor pro přiměřeně velkou konstantu.

Protože mnoho programů v reálném světě tráví většinu času prováděním jednoduchých operací, někteří výzkumníci se rozhodli zaměřit se na to, aby tyto operace byly co nejrychlejší. Taktovací frekvence z procesoru je omezen čas potřebný k provedení nejpomalejší dílčí provoz jakéhokoliv poučení; zkrácení této doby cyklu často urychluje provádění dalších instrukcí. Zaměření na „redukované instrukce“ vedlo k tomu, že se výslednému stroji říkalo „počítač se sníženou instrukční sadou“ (RISC). Cílem bylo, aby instrukce tak jednoduchý, že oni mohli snadno být pipeline , aby se dosáhlo jednotné hodinový výkon při vysokých frekvencích .

Později bylo poznamenáno, že jednou z nejvýznamnějších charakteristik procesorů RISC bylo, že externí paměť byla přístupná pouze pomocí instrukce načítání nebo ukládání . Všechny ostatní pokyny byly omezeny na interní registry. To zjednodušilo mnoho aspektů návrhu procesoru: umožnění instrukcí s pevnou délkou, zjednodušení kanálů a izolaci logiky pro řešení zpoždění při dokončení přístupu do paměti (vynechání mezipaměti atd.) Pouze dvěma instrukcím. To vedlo k tomu, že se návrhy RISC označovaly jako architektury load/store .

Srovnání s jinými architekturami

Některé procesory byly speciálně navrženy tak, aby měly velmi malou sadu instrukcí - ale tyto návrhy se velmi liší od klasických návrhů RISC, takže dostaly jiná jména, jako je počítač s minimální instrukční sadou (MISC) nebo architektura spouštěná transportem (TTA).

Architektury RISC mají tradičně jen málo úspěchů na trzích stolních počítačů a komoditních serverů, kde dominují architektury procesorů platformy založené na x86 . To se však může změnit, protože procesory založené na ARM jsou vyvíjeny pro systémy s vyšším výkonem. Výrobci včetně společností Cavium , AMD a Qualcomm vydali serverové procesory založené na architektuře ARM. ARM dále spolupracuje s Cray v roce 2017 na výrobě superpočítače založeného na ARM. Na desktopu Microsoft oznámil, že plánuje v roce 2017 v rámci partnerství s Qualcommem podporovat PC verzi Windows 10 na zařízeních na bázi Qualcomm Snapdragon . Tato zařízení budou podporovat aplikace Windows kompilované pro 32bitové x86 pomocí emulátoru procesoru x86, který překládá 32bitový kód x86 do kódu ARM64 . Apple oznámil, že převede své stolní a přenosné počítače Mac z procesorů Intel na interně vyvinuté SoC založené na ARM64 s názvem Apple silicon ; první takové počítače využívající procesor Apple M1 byly vydány v listopadu 2020. Na počítačích Mac s křemíkem Apple lze spouštět binární soubory x86-64 pomocí Rosetty 2 , překladače x86-64 na ARM64.

Mimo desktopovou arénu je však architektura ARM RISC široce používána v chytrých telefonech, tabletech a mnoha formách vestavěných zařízení. Zatímco rané návrhy RISC se výrazně lišily od současných návrhů CISC, do roku 2000 byly nejvýkonnější CPU v řadě RISC téměř k nerozeznání od nejvýkonnějších CPU v řadě CISC.

Využití architektur RISC

Architektury RISC se nyní používají na celé řadě platforem, od chytrých telefonů a tabletů až po některé z nejrychlejších superpočítačů na světě, jako je Fugaku , nejrychlejší na seznamu TOP500 v listopadu 2020, a Summit , Sierra a Sunway TaihuLight , další tři na tom seznamu.

Low-end a mobilní systémy

Na začátku 21. století se většina low-endových a mobilních systémů spoléhala na architektury RISC. Mezi příklady patří:

Stolní a přenosné počítače

Pracovní stanice, servery a superpočítače

Viz také

Reference

externí odkazy