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.