Alapadatok

Év, oldalszám:1999, 6 oldal

Nyelv:magyar

Letöltések száma:99

Feltöltve:2009. július 29.

Méret:44 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!

Tartalmi kivonat

RISC processzorok 9-11 9.2 RISC processzorok Már a mikroprocesszorok fejlődésének korai szakaszában, a 70-es évek vége felé rájöttek a számítógép tervezők, hogy a komplexitásban egyre növekvő processzorok bizonyos részei nem feltétlenül azért kerültek integrálásra, mert szükség volt rájuk, hanem mert integrálásuk lehetővé vált. Az utasításkészlettel a programozói igények széles skáláját próbáltak kielégíteni, vagyis komplex utasításkészletet alakult ki. Történt mindez elsősorban azért, hogy a programozás nehézkes alacsony szintjét, gépközei voltát ellensúlyozzák A törekvés másik, későbbi mozgatórugója volt az is, hogy megpróbálják a magasabb szintű nyelvek lehetőségeit közelíteni, utasításainak megfelelő utasításokat implementálni. Az ilyen processzorokat nevezzük CISC (Complex Instruction Set Computer: komplex utasításkészletű) processzoroknak. A CISC törekvések markáns elemei az Intel 8-, 16-

és kezdeti 32-bites processzorai. A tapasztalatok szerint ugyanakkor a mikroprocesszorokat programozók az utasításkészlet utasításainak 20%-át használják az esetek 80%-ában és 80%-át pedig csak az esetek 20%ában. Emellett az összetettebb utasítások lehetővé válása az egyszerű utasítások végrehajtását is lassítja. Ugyanis az összetettebb utasítások és az egyszerűbb utasítások elfogadható sebességgel csak kompromisszum esetén futnak. Ezt az ellentmondást kívánták azok feloldani, akik az alábbi célokat tűzték ki: − viszonylag kevés (néhány tucat) utasítástípus, − azonos hosszúságú utasítások, − egyszerű utasítás-dekódolás kötött utasításításformátum mellett, − az egyes utasítások hozzávetőlegesen azonos idő alatt (egy órajel-ciklus) hajtódjanak végre − csak néhány címzési módot implementálnak, − a memóriaműveletek csak a betöltő és tároló utasításokra vonatkozhatnak, − az utasítások

végrehajtásának párhuzamosítására törekednek, ez a végrehajtás átlapolását jelenti, − nagy belső regiszterkészlet álljon rendelkezésre az operandusok átmeneti tárolásához. E célkitűzések megvalósítása az ún. RISC (Reduced Instruction Set Computer: csökkentett utasításkészletű) mikroprocesszor. A RISC processzorok fő előnye a felsorolt célkitűzések alapján: − a sok belső regiszter miatt csak ritkán szükséges memóriaművelet (utasítás behozatalkor, adatok be- és kivitelekor. Az átmeneti adatok, részeredmények tárolása a processzoron belül történik. − a kevés utasítástípus (ez néhány tucatot jelent, szemben a CISC-eknél megszokott többszázzal) és korlátozott számú címzési lehetőség áttekinthetőséget és gyors utasítás-végrehajtást eredményez, − az utasítás-végrehajtások párhuzamosítása a már ismert pipeline technikával, átlapolással történik, ezáltal - eltekintve a problémás esetektől

(memóriából adatbetöltő vagy vezérlésátadó: pl. elágazó) utasításoktól, ütemenként 1 utasítás hajtódhat végre. Fontos megemlíteni még azt is, hogy RISC processzoroknál alkalmaztak először gyorstárat, cache memóriát is. E megoldással (részletesebben lásd 94 fejezetben) a mégoly ritkává tett RISC processzorok 9-12 memóriaműveletek is gyorsultak (t.i az esetek jó részében a gyorsabb cache-ben találjuk meg a szükséges adatokat, és nem a lassabb program- vagy adatmemóriában) vagyis az eredő RISC processzor sebessége tovább nőtt. 9.21 Első generációs RISC processzorok Az első (generációs) RISC processzorokat a Berkely (RISC I, SPARC) és a Stanford Egyetemen (MIPS) fejlesztették ki (mindkét egyetem az USA-ban van). A RISC processzorok pipeline megoldását és annak működését az 9.10 a és b ábra mutatja be Az 9.10a ábra a pipeline szakaszait mutatja (ill átlapolás nélkül egy teljes utasításvégrehajtást) , az 910b

ábra a zökkenőmentes végrehajtást mutat be UT UD UT: UD: MV: ET: MV ET Utasítás átvitel (Transzfer) = FETCH (beolvasás) Utasítás Dekódolás = Decode Művelet Végrehajtás = Execute Eredmény tárolás (Transzfer) = Write (írás) 9.10a ábra n. utasítás n+1. utasítás n+2. utasítás n+3. utasítás n+4. utasítás n+5. utasítás Utasítás sorszáma órajel UT UD UT MV UD UT ET MV UD UT ET MV UD UT 1. 2. 3. 4. 5. órajel órajel órajel órajel órajel ET MV UD UT 6. ET MV UD 7. ET MV 8. ET 9. órajel órajel órajel órajel 9.10b ábra 9.22 Második generációs RISC processzorok A később kifejlesztett második generációs RISC processzorok egy utasítás pipeline-nal rendelkeznek, 1 utasítás végrehajtása jellemzően 1,2-1,6 órajelciklusig tart. A második generációs RISC processzorok sebessége 25-60 (VAX) MIPS (millió utasítás másodpercenként), órafrekvenciájuk 40-50 MHz. A gyakorlatban azért nem tudták elérni az 1

utasítás / óraciklus végrehajtási arányt, mert: − vezérlésátadó utasítás végrehajtása, − adatok egymástól való függősége, − regiszterkonfliktus (egymással párhuzamosan végrehajtani kívánt utasítások ugyanazt a regisztert kívánja használni), RISC processzorok − 9-13 utasítás- vagy adatcache adattévesztés (miss) és emiatt memóriából olvasó ill. memóriába író művelet szükségessége (az olvasó/író utasítások a RISC utasítások átlag 10%-át teszik ki) esetén a párhuzamosításban fennakadás (a pipeline-ban ún. ”buborék”), így a végrehajtásban ütemcsúszás következik be. Az 910c ábrán egy ilyen buborék keletkezését láthatjuk, vagyis azt, amikor valamilyen esemény miatt zökkenő csúszik a normális menetbe. Buborék helyett gyakran „egymásbaakadásnak” (interlock) is szokták nevezni azt, amikor az egymást követő utasítások azért nem hajthatók párhuzamosan végre, mert az egyik

valamilyen módon - akadályozza a másik végrehajtását. A gyakorlat szerint a programokban például minden negyedik-hatodik utasítás programszervező (elágazó) jellegű. Ilyenkor ki kell várni a szükséges adatok előálltát (pl. feltételes elágazásnál a döntés kimenetelét), majd folytatódhat a végrehajtás. A második generációs RISC processzoroknál ezen esetekre meghatározott idejű késleltetést iktattak be. A jól szervezett RISC processzornál a buborék ritka és minél rövidebb. Mégis e processzor-kategóriában átlagosan 1,2-1,6 utasítás / órajelciklus -nál nem tudtak jobb végrehajtási ütemet elérni. n. utasítás n+1. utasítás Utasítás sorszáma órajel UT UD MV ET “buborék” UT UD MV ET 1. 2. 3. 4. 5. 6. órajel órajel órajel órajel órajel órajel 9.10c ábra 9.23 Harmadik generációs RISC processzorok A harmadik generációs RISC processzorok sebessége jellemzően 50-100 MIPS közé esik. Órajelfrekvenciájuk 50-600 MHz.

Átlagosan 2-4 utasítást hajtanak végre órajelenként Ezen RISC processzorok közül néhányat jellemző paramétereikkel az 1.1 táblázatban soroltunk fel. Felismerték, hogy a processzor-környezet (memória és perifériacsatolók) sebességparaméterei mindig lemaradnak a processzorok sebességparaméterei fejlődésének ütemétől, így az órajelfrekvencia növelése nem korlát nélkül járható teljesítőképesség növelési lehetőség. Olyan módszereket kellett találni, amelyek nem „terhelik” a környezetet A. A frekvencia többszörözése Az említett korlátok miatt a RISC processzoroknál is előtérbe kerül a processzoron belüli frekvencia-többszörözés (ld. pl Power PC 620) Ez azt jelenti, hogy a processzor belül lényegesen nagyobb (2-, 3- vagy 4-szeres) sebességen dolgozik, mint amilyen frekvenciával környezete felé kommunikál. A külső memóriában levő információ gyorsabb eléréséhez inkább a memória és a processzor közti

adatút (külső busz) szélességét növelték 32 bitről 64 majd 128 (esetenként 256) bitre, vagy a processzorba iktatott gyorsabb átmeneti gyorstároló (cache, ld. korábban) memória közbeiktatásával javítanak a hozzáférésen A teljesítőképességet a belső órajelfrekvencia növelésével javítani kívánó módszernek is van korlátja, mégpedig az, hogy nem minden pipeline-szakasz egyenszilárdságú, vagyis nem mindegyik gyorsítható egyforma arányban. Így a gyorsítás ezen megoldása is csak adott RISC processzorok 9-14 korlátig járható út. Ezért kerültek előtérbe azon módszerek, melyek a teljesítőképesség növelést architekturális változtatásokkal próbálják elérni. B. Architekturális változtatások Mint mondtuk, nemcsak az órajel sebességének növelése útján próbálják a teljesítőképességet megnövelni, hanem architekturális újítások útján is. Az architektúrában rejlő tartalékok kiaknázása jelentős

eredményt hozhat. Ez két utat jelent: − szuperskalár architektúra alkalmazása, − superpipeline (információs szupercsatornás) megoldás implementálásával. a. Szuperskalár architektúra A skalár architektúra azt jelenti, hogy egyszerre csak egy uatsítás kerül végrejhajtásra. A szuperskalár architektúrájú processzorokban ezzel szemben az egyes műveleteket úgy párhuzamosítják, hogy a műveletvégző egysége/ke/t (Lehívó, Dekódoló, ALU) többszörözik és ezen egységek a több információs csatornában (pipeline-ban) egymással párhuzamosan működnek. Az ALU műveletek a RISC processzorok utasításainak 40-50%-ánál igénybe vannak véve, ezért is jó megoldás többszörözésük. A gyakorlatban ez kétszerezést vagy háromszorozást, ritkán négyszerezést (DEC ALPHA) jelent. A kisebb szám fogalma összetettebb, a nagyobb számé pedig egyszerűbb végrehajtó egységeket takar. A végrehajtó egységek között vannak egész számmal és

lebegőpontos számmal dolgozó ALU-k, grafikus egységek, bit-mezővel dolgozó, szorzó és osztó egységek. A párhuzamos utasítás-végrehajtási sorok használatakor fontos az utasítás-végrehajtási sorrend helyes előrebecslése. Ez azt jelenti, hogy az assembly programok jelentős részben elágazhatnak, vagyis a végrehajtás csak bizonyos hányadban szekvenciális a programmemória vonatkozásában. Említettük, hogy az ilyen elágazás előbecslő (jósló) logika (Branch Prediction Logic = BPL) akkor működik eredményesen, ha átlagosan legalább 80%-os becslést tud adni az elágazásokról. A legegyszerűbb ilyen logika úgy működik, hogy pl. feltételes elágazásnál a két lehetséges folytatás mindegyikét számítja, majd a nem szükségest később elveti, és a helyes ágon fut tovább a program. Ez természetesen a szükséges eszközök megduplázását jelenti Az igazi BPL az utasítás-végrehajtási sorok mentén helyezkedik el és előolvassa a

következő utasításokat. Döntése alapján kerül az adott utasítás ténylegesen lehívásra vagy sem, ill. kerül be egy adott szakasznyi utasítás a jósolt program-memória tartományból. Hibázás (téves előbecslés) esetén lényeges időkiesés történik, hiszen minden behozott byte-ot el kell dobnunk (flushed). Az előrejelzést általában ún. „elágazási cím puffer” segíti Ebben minden elágazást kiváltó utasításra vonatkozóan szerepel − az elágazást kiváltó utasítás címe, − az elágazási cím és − az ún. előzmény bitek Utóbbiak arról hordoznak információt, hogy a program az elágazást kiváltó utasításnál a korábbiakban ténylegesen hányszor ágazott el és hányszor nem. b. Superpipeline kialakítás A teljesítőképesség fokozásának egyik módszere az órajel növelése. Az órajelfrekvencia növelését a második generációs RISC processzoroknál az akadályozta, hogy a jól kiegyensúlyozott - szakaszonként

rögzített és egyenlő időszeletű - pipeline a frekvencia növelésével felborult. Az információs csatorna egyes szakaszait (fázisait) nem lehetett egyformán rövidíteni (gyorsítani). Ennek áthidalására az egyik megoldási alternatívát az infromációs szupercsatorna (superpipeline) megvalósítása nyújtja. E fogalomnak kétféle értelmezése használatos. Az első értelmezés szerint a pipeline gondolat továbbvitelét jelenti, RISC processzorok 9-15 vagyis, hogy a tovább nem gyorsítható “makro szintű” pipeline fázisokat mikro szinten “csatornásítják”, így két szintű “pipeline-ozás” jön létre. Ha a szupercsatorna adott szakaszában a részművelet végrehajtása ténylegesen gyorsítható, akkor órajelenként képes lesz egy utasítást továbbadni. Amennyiben azonban fizikailag nem rövidíthető a csatorna szakasz, e megoldással akkor is órajelenként új utasítás fogadására lesz képes (a második szintű pipeline ekkor

sorként funkcionál). Tipikusan ilyen fázis a cache-hozzáférés Az előbb említett problémán egyébként úgy is úrrá lehetne lenni - és ez a superpipeline másik értelmezése -, hogy bevezetjük a nem egyenlő állapotidejű pipeline megoldást. Ez általában egyben a csatornaszakaszok számának növelésével is jár. 4-6 szakaszú helyett 10-12 szakaszú pipeline-t implementálnak. C. Egyéb továbbfejlesztések A második generációs RISC processzoroknál látott problémákon még a további módokon segítenek: − Adatfolyam analízis végzése Az előre dekódolt utasításokat előelemzi, hogy vajon ténylegesen rendelkezésre állnak-e a végrehajtó egység(ek) számára vagy van-e az utasítások között valamilyen egymástól való sorrendet determináló - függőség. − Az adatkivitelben esetlegesen bekövetkező buborékok kialakulását buffereléssel akadályozzák meg. − A regiszterkonfliktusok csökkentésére ⇒ alkalmazzák a

“regiszter-eredményjelzés” alkalmazását, amely minden CPU regiszterhez egy bitet rendel. E bit értéke 1, amíg olyan utasítás folyik, amelynek kimenetele az adott regisztert érinti, és 0 amikor már befejeződött az ilyen utasítás végrehajtása (ld. DEC ALPHA) ⇒ alkalmazzák a regiszter-átnevezés módszerét. Gyakran nem az adott regiszter tartalomra van szüksége az utasításnak, hanem a regiszterre. Ha az adott regiszter foglalt, úgy várakoznia kellene a processzornak. Ha ekkor más - szabad - regiszterre át tudjuk irányítani az utasítást, úgy elkerülhető a várakozás. Ha a processzor-architektúrát az adott processzornál kompatibilitási okok miatt nem kívánják megváltoztatni, úgy létrehozható olyan regiszterek, melyek a programozói modellben nem szerepelnek, de foglalt regiszter átmeneti helyettesítésére igen. Így az „adott regiszter” használható, „nem foglalt”. − A függőség áthidalására alkalmazzák a ”sorrenden

kívüli” utasítás-végrehajtás (out of order execution) módszerét, vagyis azt, hogy minden olyan utasítás végrehajtása párhuzamosítható, ill. végrehajtható, amely végrehajtását nem akadályozza még végre nem hajtott más utasítás hiányzó eredménye. Vagyis nem az utasítások végrehajtásának sorban egymás utáni következése” a szempont, hanem az, hogy minél gyorsabban folyjon a processzor működése. Így - noha a sorrendi végrehajtás (in-order execution) egyszerűbb vezérlő logikát igényel -a sorrenden kívüli végrehajtást is lehetővé tevő megoldás (out-oforder execution) gyorsítást eredményez. − A sorrenden kívüli végrehajtásnál gyakran használnak ún. spekulatív végrehajtást Ez azt jelenti, hogy előrehaladva az utasítások sorában minden olyan utasítást - előre - végrehajt a processzor, amely végrehajtható. Amikor a sorbani tényleges végrehajtásukra sor kerülne, akkor már csak eredményeiket kell átadni. A

sorrenden kívüli végrehajtás és az elágazás előrejelző logika természetesen „össze kell dolgozzon”. A RISC és CISC párharc nem dőlt el ill. átalakult Ma már a korszerű CISC processzorok (i80486, iPentium, M68040) már számos RISC megoldást is tartalmaznak, így a jövőben valószínűleg összemosódik a két technika. RISC processzorok 9-16 Típus Gyártó i960CA R4200 R4400 R4600 Alpha 21064 21064A 21164 21164 Intel MIPS M88110 Motorola SuperSparc Texas T9000 SGS Thomson Power PC Motorola,Apple, IBM 601 603e 604 620 SuperSPARCII MicroSPARC UltraSPARC i860XP Megjegyzések: DEC Sun Intel Tranzisztor-szám Sebesség (SPEC-int92/ fp92)* Cache méret (utasítás/adat) [kbyte] 1 / 1.5 8/8 n.a n.a 8/8 16 / 16 8 / 8 + 96 8 / 8+ 96 40 80 150 150 200 275 300 600 575,000 1,100,000 n.a n.a 1,680,000 n.a 9.300000 9,300,000 Utasítás/órajel / (egész) pipeline hossza 3/3 n.a / 8 n.a n.a 2/7 2/7 4/7 4/7 50 1,300,000 2/4 30 / n.a 50 / 30 97 /

101 104 / 81 100 / n.a 190 / 290 300 / 500 ℘ 814 / 1133 63,7 100 3,100,000 3/4 50 3,200,000 100 100 100 67#. 100 100 200% 50 2,800,000 n.a 3,600,000 7,000,000 3,100,000 n.a n.a 2,550,000 Órafrekvencia (MHz) Belső adatút/ Regiszterszélesség [bit] 128 / 32 128 / 64 Újítások, megjegyzések elágazás-előrejelző logika pipeline késleltető (elágazás: 3 órajel, betöltés: 2 órajel) 64 / 64 64 / 64 64 / 64 64 / 64 betöltési puffer, elágazás-előrejelző logika, 2. szintű cache@ 8/8 80 / 64 75 20 / 16 64 / 32 4/5 70 16 64 / 8 4/6 4/6 4/6 n.a / 6 3 / n.a 3 / n.a n.a / na 2/4 105 / 125 120 / 105 160 / 165 320 / 330 130 / 190 70 / 61 32 32 16 32 / 32 20 / 16 n.a 16 / 16 16 / 16 64 / 64 64 / 64 64 / 64 64 / 64 64 / n.a 32 / n.a 64 / 64 64 / 32 elágazás-előrejelző logika, betöltési puffer elágazás-előrejelző logika, utasítás prefetch puffer elágazás és pipeline-szakaszkölcsönhatás figyelő logika write-back cache elágazás

előrejelző logika, 42 képkezelő utasítások elágazás-előrejelző logika, VLIW* architektúra VLIW = Very Long Instruction Computer (igen hosszű utasítású számítógép): az utasítás igen sok bitből áll, ami lehetővé teszi, hogy közvetlenül párhuzamosan egyszerre vezéreljük a processzor különböző részeit (nem kell előtte dekódolni az utasítást). Az utasítás egy ilyen hosszú szava azonnal az operandus(oka)t is tartalmazhatja *: A sebesség szabványos mérése szétválasztva egész műveletek (Specint92, int: integer = egész) és lebegőpontos műveletek (Specfp92, fp:floating point = lebegőpontos) vizsgálatára #: Belül kétszeres frekvenciával, 133 MHz-en dolgozik @ : Második szintű cache a DEC 21164-nél van ℘: Becslés, SPint95 (18) és SPfp95 (27) alapján *: 9.1 táblázat