Cisc, RISC processzorok

( forrás: http://www.cab.u-szeged.hu/local/archi/1998II/h836602.htm)

A CISC és RISC processzorok összehasonlítása

 

A 60-as években a számítógépekben azonos felépítésû és mûködésû processzorokat használtak, melyek jellemzõje a kevés és egyszerû utasítás illetve kevés számú címzési eljárás volt.
A 70-es évek elejére a fejlõdés oly mertékû lett, hogy a processzorok nagyszámú utasítással rendelkeztek (melyek meglehetõsen bonyolultak voltak) és sokféle címzési eljárást alkalmaztak. Ilyen bonyolultságú processzorok esetén ez már-már a hatékony mûködést veszélyeztette. Ezért tehát felmerült az egyszerûsítés kérdése.
Ez a koncepció vezetett a ma ismeretes két processzortípus a CISC (Complex Instruction Set Computer - Teljes Utasításkészletû Processzor) és RISC ( Reduced Instruction Set Computer - Csökkentett utasításkészletû Processzor) processzorok kialakulásához. A fejlesztések kezdetén a két processzor jelentõsen különbözött egymástól. Azonban a mai technika szinten a jellegzetes eltérésektõl eltekintve a határ kezd elmosódni, és a két típus egyre inkább hasonlóvá válik.

A CISC processzorok esetén az alkalmazott vezérlési mód, a MIKROPROGRAMOZOTT vezérlési eljárás. Ennek lényege, hogy a végrehajtás allatt lévõ utasítás egy mikroprogramtárban lévõ programot a MIKROPROGRAMOT indít el.
A mikroprogram utasításai a mikroutasítások, melyek elemi vezérlési lépések szerint vezérlik a hardver mûködését.
A RISC processzorok kifejlesztésénél elsõdleges cél volt, hogy kiiktassák a mikroprogramozott vezérlést, hiszen az egy számítógép a számítógépen belül, ami a felépítést meglehetõsen bonyolultá teszi és lassítja a mûködést. Ezért ezen processzortípus esetén a mikroprogram helyett direkt áramköri elemeket alkalmaznak a közvetlen vezérlés megvalósítására. Ebbõl következik egy jellegzetes eltérés a két processzor között. Míg a CICS processzor esetén a fordító a programot egyszerûbb szintre fordítja, majd ezután a mikroprogram (ami meglehetõsen összetett) veszi át a vezérlést, addig a RISC processzoroknál szükséges egy olyan fordítóprogram alkalmazása, amely megírt programot  olyan bonyolultságú szintre tudja fordítani, ami a CISC processzorok mikroutasítási szintjének felel meg és a végrehajtás ezután már "huzalozott", azaz áramköri szinten valósul meg. Ebbõl is látszik, hogy míg a CISC processzorok esetén elegendõ egy viszonylag "gyengébb" fordítóprogram alkalmazása, addig a RISC processzoroknál szükséges egy olyan fordítóprogram használata, amely különbözõ bonyolult optimalizálási feladatokat lát el annak érdekében, hogy a megírt programot olyan elemi utasításokra tudja "bontani", melyek már - hasonlóan a mikroprogramhoz - képesek vezérelni a mûködést.
Természetesen mivel a CISC processzorok esetén az utasítások egy másik programot indítanak el, végrehajtásuk idõigényesebb ( hisz egy mikroprogram több elemi lépést is vezérelhet). Evvel szemben a RISC processzorok egy-egy utasítása már csak egyetlen vezérlési lépést hajt végre, ezért végrehajtása is kevesebb idõ vesz igénybe. Ez a gyakorlatban annyit jelent, hogy a CISC processzorok utasításainak végrehajtásához több gépi ciklusra van szükség, viszont a RISC processzorok esetén általában csak egyre. A két processzor utasításai tehát  hosszukban és végrehajtásukban is különböznek egymástól. Mivel a CISC processzorok egy utasítása több mûveletet hajt végre, az elõálló program kevesebb utasítást tartalmaz, rövidebb, így kevesebb tárterületet igényel. Ez a másik processzortípusnál fordítva van tehát az elemi lépéseket végrehajtó utasításokból a megírt program többet tartalmaz, ezért hosszabb. A fellépõ többlet tárterület azonban sok esetben még kevesebb is, hisz az utasítások rövidebbek mint a CISC processzor esetén.
Fontos kiemelni, hogy a CISC processzorok mikroprogramjait is tárolni kell. Ez a ROM-ban történik, ami természetesen  plussz tárolóterületet jelent.
A mikroprogram elmaradása a RISC processzorok áramköri lapkáját egyszerûsíti le.
Mindkét processzortípus alkalmazza az utasítások átlapolt feldolgozási módszerét(pipelined), melynél az utasításokat több elemi lépésre bontják és ezeket az elemi lépéseket láncerûen egymás után hajtják végre. Ennek az eljárásnak a segítségével végre lehet hajtani utasításokat úgy, hogy még az egyik utasítás végrehajtásának befejezõdése elõtt egy másik végrehajtása kezdõhet, gyorsítva a végrehajtást.  Ezen eljárást a RISC pocesszorok esetén alkalmazzák általánosan hatékonyabbá téve a mûködést (meg kell azonban jegyezni, hogy például már az INTEL PENTIUM processzora is alkalmaz hatékony pipelined technikát pedig az CISC processzor). Az átlapolási technika hatékonyságának alapfeltétele, hogy az elemi lépések végrehajtása közel azonos idejû legyen, amelynek megvalósítása a tárolót igénybevevõ utasítások esetén jelent nagyobb gondot, hisz ennek fizikai korlátai vannak. A RISC processzoroknál ezt a problémát úgy oldották meg, hogy egyrész  csak két olyan utasítás van, mely jogosult, hogy tárolómûveleteket végezzen, másrészt a zökkenõmentes végrehajtás érdekében a mûveletek közé úgynevezett váróciklusokat iktattak be. A két tárolókezelõ utasítás a LOAD és STORE utasítás, melyeket minden utasítás végrehajtásakor igénybe kell venni. Így tehát egyrészt hatékony lehet az átlapolásos végrehajtás másrészt a teljes mûködés gyorsabbá vállik. A CISC processzorok esetén minden utasítás - ha erre alkalmas -  igénybeveheti a tárolót lassítva a mûködést.
Lényeges különbség a két processzortípus között az utasításkészlet, ahogyan azt a nevük is tartalmazza.A CISC processzorok utasításkészlete nagyszámú (100-300), változó hosszúságú utasításokból áll, melyek sokféle címzési módot (8-20) használnak, felépítésüket és végrehajtásukat tekintve bonyolultak. A RISC processzorok evvel szemben kevesebb utasítással rendelkeznek és ezen utasítások szerkezete lényegesen egyszerûbb.Az utasítások kevesebb számú címzési módot alkalmaznak. Ami azonban lényeges és eltér a CISC processzoroktól az az, hogy minden utasítás egyforma hosszúságú. Az utóbbi típus utasításszerkezetének egyszerrûsége nagymértékben hozzájárul a gyorsabb és hatékonyabb mûködéshez, hisz az utasítások végrehajtásának egyik lépése éppen az utasítás tartalmának megfejtése (utasításdekódolás), mely ha az utasítások egyszerûek és szerkezetük egységes lényegesen felgyorsul, növelve evvel az összteljesítményt. Általánosan elmondható, hogy a RISC processzorok utasításkészletének kialakításakor a hatékonyabb mûködés és nem a kényelem játszik szerepet. A RISC processzorok utasításkészlete, egyben egyik negatívuma is a processzortípusnak, mert néha nagyon speciális az utasításkészlet összetétele, ami nagyon megszabja a processzor felhasználhatósági körét. Ilyen probléma a CISC processzoroknál nem jelentkezik.
A két processzortípus összehasonlításánál fontos kiemelni a "processzor és az operációs rendszer kapcsolatát". A CISC processzorba számos olyan elem került beépítésre, mely az operációs renszert hivatott támogatni. Ilyen funkciók például a multitaskos mûködés biztosítása, különbözõ védelmi funkciók, memória-megszakításkezelés stb. Igaz ugyan, hogy ezen funkciók beépítése a processzor használhatóságát növeli de ugyanakkor bonyolítja a szerkezetet lásd plusz áramköri elemek stb, tehát csökkenti a processzor teljesítõképességét. Ezen indokok alapján ezen funkciókat nem, vagy csak csekély mértékben tartalmazzák a RISC processzorok és ott a hangsúly, a processzor és operációs rendszer kölcsönös együttmûködésén van. Természetesen evvel együtt jár az is,hogy a RISC processzorokat gépi kódban nehéz, sõt nem is szokás programozni, hanem egy magasszintû programozási nyelvre bízni a gépi szintû forráskód elõállítását.
A két processzortípus közötti különbségek vizsgálatakor ki kell emelni a tárolóhasználat különbségeit. Mindkét processzortípus esetén használnak regiszeteket. Ezen regiszterek két csoprtba oszthatók, az általános célú, a programozó számára használható regiszterek, illetve speciális állapotjelzõ regiszterek, melyeket maga a processzor használ a mûködése során. A gorsabb mûködés érdekében a RISC processzorok lényegesen nagyobb számú általános célú regiszterrel(150-400) dolgoznak mint a CISC processzorok.A nagy számú regisztertár kezelésének egyszerûbbé tételére a regisztereket un. tömbökbe csoportosítják. Többféle  regiszterkezelési eljárás alkalmaznak a gyakorlatban. A leggyakrabban alkalmazott eljárás a regiszter ablaktechnika, melynek során a regisztertömböt azonos méretû átlapolható blokkokra osztva használja a processzor. Az egyes blokkok egyenként 4*8=32 regiszter tartalmaznak, melyek felosztása a következõ: az elsõ nyolc regisztert a globális változók használják, a második nyolcat a kimenõ paraméterek, a harmadikat a lokális változó, míg az utolsót a bemenõ paraméterek.
Az átlapolhatóság miatt például jelentõsen meggyorsul a be ill. kimenõ paraméterek átadása. A nagyszámú regiszter alkalmazásával tehát nagyobb mennyiségû adat tárolható a processzor közelében, mely végsõsoron a mûködést gyorsítja.
Természetesen ez csak nagyvonalakban foglalta össze a RISC és CISC processzorok közötti legfontosabb különbségeket. Valójában nagyon sok apró részlet van ami különbséget jelent a két típus között, azonban ezeket egyre nehezebb megvilágítani, mert minden proceszorgyártónak elsõdleges célja az, hogy gyors és hatékony processzort fejlesszen ki. Ezen törekvések pedig oda vezetnek, hogy a CISC processzorok is átveszik  - ha nem is azonos formában - a RISC processzorok jellegzetességeit. Az pedig mindenkire rá van bízva, hogy melyik tipust részesíti elõnyben. Az otthoni PC-ben a CISC tipus alkamazzák, de speciálisabb felhasználásoknál (különbözö terminálok,serverek), ajánlottabb egy RISC proceszzor használata, a teljesítmény növelése érdekében.