Thursday, June 16, 2011

HW: Charakteristicke znaky CISC a RISC

Jeden z problemov, ktory nastoluje ISA je odpoved na otazku, aka zlozita operacia ma byt zakodovana v jednej instrukcii a ci je lepsie mat jednu komplexnu instrukciu, alebo operacie skladat pomocou viac jednoduchych instrukcii. Odpoved sa v case menila (meni?) v zavislosti na vyzkume v architekture pocitacov, moznostiach implementacnych technologii a schopnostiach prekladacov. Pri hladani odpovede aj z dovodov uvedenych nizsie vzisli 2 pristupy a dve sady ISA, komplexna a redukovana ISA.




Complex Instruction Set Computers CISC pouzivali, ako nazov napoveda, tzv. komplexnu ISA. Takato architektura dominovala v 70. rokoch. Dovody pre taketo rozhodnutie boli vysoka cena a pomala rychlost hlavnej pamate. ROM mikroprogramu bola lacnejsia a rychlejsia. To je samozrejme rozhodujuce, nakolko pri vypocte doby vykonania instrukcie je instrucion fetch time dominujucou zlozkou. V takejto situacii komplexne instrukcie 
  • zmensia IC programu, cim usetria pamat
  • usetria dobu nacitania a dekodovania instrukcii, co urychli dobu vykonavania programu
Ako teda vyzera takato komplexna instrukcna sada (uff, to je ale skarede slovo)? Oznacenie complex vyjadruje, ze strojove instrukcie pokryvaju velmi siroky okruh funkcii, ktore by sa dali naprogramovat pomocou sady jednoduchsich, uz existujucich instrukcii (nasobenie sa da nahradit bitovym posunom). 
  • konstrukcna sada je dost kosata
  • instrukcie mau premenlivu dlzku
  • doba vykonania je premenliva
Procesor CISC ma nizky pocet registrov a moze sa stat, ze komplexna instrukcia moze byt nahradena sledom nekomplexnych, ktore sa v konecnom dosledku vykonaju rychlejsie. 

Pouzitie complex ISA zjednodusilo prekladace. Pre dalsie pohnutky, ktore k tomuto viedli sa asi musite pozriet do historie, ale pokial som pochopil, tak podla teorie zo 70-ich rokov mali buduce pocitace vykonavat priamo instrukcie vyssich programovacich jazykov a toto mal vyriesit sikovny HW - to znamena, ze tieto instrukcie mali uzavriet semanticku medzeru a zabrania programovej zaplave a vyriesia SW krizu. Tym sa ma na mysli to, ze nieco napisat bolo sakra drahe a komplikovane. A co na to wiki? 
Předtím než se v procesorech prosadila architektura RISC, se designéři počítačů snažili o překonání tzv. sémantické mezery – navrhnout sady instrukcí tak, aby by přímo podporovaly konstrukce vysokoúrovňových jazyků, např.: volání procedury, kontrola smyček. Tyto nové instrukce umožňovaly kombinovat data a přístupy k poli. Nové a kompaktní instrukce usnadnily tvorbu menších programů a zmenšení počtu přístupů dohlavní paměti, které byly značně pomalé. Zejména v 60. letech se užitím těchto instrukcí zrychlilo vykonávání operací a došlo i k šetření výdajů na počítačové paměti a disková úložiště. Kompaktnost nových instrukcí značně zvýšila produktivitu programování v jazyce symbolických adres i ve vysokoúrovňových jazycích (Fortran, nebo Algol).
Prinosom CISC je definitivne format instrukcii, ktore su vyuzite v modernych procesoroch, hlavne v cache, pretoze ich kod je mensi a lahsie sa do cache vojde.

Architektura CISC je pouzita aj v modernych pocitacoch ako superskalarna implementacia pre Pentium alebo Cyrix. Pouziva sa kodovanie s premennou dlzkou instrukcii. Zasluhou kompaktnych a semanticky bohatych instrukcii je priemerny pocet operacii vykonanych na kodovu jednotku pre CISC vyssi ako pre RISC, co je vyhodou v implementacii zalozenej na modernej cache.

CISC boli postupne vytlacene architekturou RISC, ktora vyuziva reduced instruction set architecture. K pocitacom RISC sa vyvoj posunul, pretoze sa ukazalo, ze cesta smerom ku komplexnym instrukciam nie je spravna. ISA RISC je jednoduchsia a vysoko optimalizovana. Tejto architekture zodpoveda architektura Load-Store. Pocitace RISC nevyuzivaju komplexne instrukcie a adresne mody. RISC sa snazi sustredit na tie instrukcie, ktore sa v programoch najviac vyuzivaju.

Efektivita RISC spociva v tom, ze nie je potreba mikroprogramovania, ale riadiaca pamat uvolnuje miesto registrov a cache. Pipelining je implementovatelny jednoduchsie, ako v CISC. Prekladac je vyuzity efektivnejsie vdaka viacerym registrom. Kedze procesor je jednoduchsi, tak moze fungovata na s vyssou fclk. Pocitace RISC maju sice vyssie IC ako CISC, ale nizsie priemerne CPI a vysledku maju vykonnostny naskok.

V poslednej dobe boli RISC vytlacene x86 CPU a to preto, ze sa podarilo minimalizovat problemy CISC (x86 je jednym z poslednych CISC). Moderne CISC procesory prekladaju komplexne instrukcie na RISCovske mikroinstrukcie a tie su vykonavane na superskalarnom RISCu. Pocitace "RISC only" su ale stale vyuzivane vo vstavanych systemoch, kde efektivita a spotreba je problem cislo 1.