BMF-NIK Államvizsga Tételek Architektúrák (2007) SzA1.
Számítási modell (fogalma; kapcsolatai, fajtái, a Neumann-féle és az adatfolyam számítási modell)
Számítási modell fogalma: A számításra vonatkozó alapelvek absztrakciója. Jellemzői: 1. Min hajtjuk végre a számítást? 2. Hogyan képezzük le a számítási feladatot? 3. Mi vezérli a végrehajtást? Architektúra
Programnyelv Végrehajtás
Specifikáció
Adatokon hajtjuk végre a számítást.
Számítási modell
Implementáció
Számítási modell
Fejlesztési kronológia:
Programnyelv
Architektúra A számítási modellek osztályozása: -
-
Adatalapú számítási modell - Neumann-féle számítási modell - adatfolyam számítási modell piaci megvalósítás - applikatív Objektum alapú számítási modell Predikátum – logikai számítási modell (prolog) Tudás alapú számítási modell kísérleti stádium Hibrid számítási modell
bonyolultság
Adatalapú számítási modell: Az adatokat típusokba soroljuk (elemi és összetett). Az elemi adattípusok meghatározzák az adat értelmezési tartományát, értékkészletét, az értelmezett műveletek halmazát. Pl.: integer (16 bites) esetén ÉT: –32768 – +32767, ÉK: egész értékek, értelmezett műveletek: +, –, ×, ÷. 1 / 121
Neumann-féle számítási modell: 1. Min hajtjuk végre a számítást: - Adatokon. - Az adatokat a változók képviselik. Deklarált változók
-
Az architektúra biztosítja, hogy a változók korlátlan számban változtathassák értékeiket.
2. Hogyan képezzük le a számítási feladatot: - Adatmanipuláló utasítások sorozatával. Deklarált változó
Adatmanipuláló programutasítás adatmanipuláció
3. Mi vezérli a végrehajtást: - Az adatmanipuláló utasítások implicit szekvenciája - Az explicit vezérlést átadó utasítás. Vezérlés-átadás Utasítások
PC
Nem számolja, csak egyesével tudja növelni magát. Az adat elejét tudja értelmezni move utasításként. Programnyelvek: Imperatív (parancs) nyelvek, pl.: Pascal, C, Basic, Fortran. Architektúra: Neumann-féle architektúra. Adatfolyam számítási modell: 1. Min hajtjuk végre a számítást: Adatokon. 2. Hogyan képezzük le a számítási feladatot: - A bemenő adatok halmazának értelmezésével és, - Adatfolyam gráffal: a) Csomópontok: műveletvégzők. b) Élek: input/output lehetőségek, ahol az adat áramlik.
2 / 121
Pl.:
Z=(X+Y)×(X–Y) X Y –
+ ×
bemenő adatok halmaza - párhuzamos műveletvégzés időmegtakarítást eredményez (33%) a Neumann-féle szekvenciálisan dolgozott
Z 3. Mi vezérli a végrehajtást: Adat. Stréber modell: 1. Még nincs operandus. 2. Az egyik operandus megjelent. 3. Összes operandus megérkezése → Műveletvégzés. 4. Megjelenik az eredmény. Az utolsó operandus megjelenése indítja el a műveletet. Lehet akárhány operandus, akár több száz is. Programnyelv: Sisal. Architektúra: The Manchester Dataflow Machine Neumann-féle számítási modell 1. Közös memória (adat + program) 1. Változó 2. Adatmanipuláló utasításokkal 3. Implicit szekvencia 3. Explicit vezérlésátadás
@
Adatfolyam számítási modell Műveletvégzőben „tárolhatóak” az adatok Egyszeri értékadás (a bejött adat elveszik) Adatfolyam gráffal Adatvezérelt Nincs PC, nincs vezérlési szekvencia
A Pentium processzorokban a CISC magban van adatfolyam.
SzA2.
Az adattér (fogalma; a memória-tér; a regisztertér és fejlődése: egyszerű, adattípusonként különböző, többszörös regisztertér)
A processzor által manipulálható tér. Adattér Memóriatér
Regisztertér
Nagyobb Lassúbb Olcsóbb Processzoron kívül (külön lapkán) Közös az I/O térrel
Kisebb Gyorsabb Drágább Processzoron belül Mindig önálló
Memóriatér: -
A legfontosabb jellemzője a tárolási kapacitása. Címtér: a) Modell címtere: címsín szélessége határozza meg b) Implementáció címtere: pénztárca
3 / 121
-
A valós memóriatér fejlődése: a) 40-es évek: néhány száz szó. b) 1950 IAS: 10 bites címsín, 210=1024 szó. c) 1964 IBM 360: 16 Mbyte.
-
Virtuális tár a) 1960-ban jelent meg az ötlete s az IBM 370-es gépcsalád vitte sikerre. b) Alap jellemzői: 1. kétféle címet értelmezünk: a. valós cím (ezt látja a processzor) b. virtuális cím (programozó) Virtuális tér Nagyobb Lassúbb Háttértárolón helyezkedik el Programozó látja Várakozik a program
Valós címtér Kisebb Gyorsabb Alaplaphoz illesztve, félvezető lapkán Processzor látja Itt fut a program
2. Létezik egy olyan, a programozó számára transzparens mechanizmus, mely: a. Az éppen futó program számára szükséges program- és adatrészeket behozza a virtuális tárból a valós tárba, illetve b. Az éppen futó program számára nem szükséges program- és adatrészeket kiviszi a valós tárból a virtuális tárba. 3. Létezik egy olyan, a felhasználó számára transzparens mechanizmus, mely a programozó által használt virtuális címeket a végrehajtási (execution) fázisban lefordítja valós címekké. transzparens
2. pont
Valós címek
Virtuális címek mechanizmus
3. pont
Az Intel processzorok valós és virtuális memóriájának fejlődése: Típus Megjelenés Valós memória Virtuális memória éve (Mbyte) 8086 1978 1 20 bit 80286 1982 16 1 Gbyte 24 bit 80386 1985 4096 64 Tbyte 32 bit Regisztertér: Osztályozása: - egyszerű - adattípusonként különböző - többszörös
4 / 121
Egyszerű regisztertér: Egyszerű regisztertér 40-es évek 50-es évek 60-as évek egyetlen akkumulátor egyetlen akkumulátor általános célú regisz+ dedikált regiszter terkészlet
Verem regiszterek
+
-
Egyetlen akkumulátor Hátránya: 1. Szűk keresztmetszet. 2. Két eredmény esetén csak az egyiket tudta tárolni (pl.: osztásnál a hányados és a maradék).
-
Egyetlen akkumulátor + dedikált regiszter Előnye: A hányados regiszter bevezetése felgyorsította az osztást. Hátránya: Igen drágán valósították meg, mégis gyakran kihasználatlan volt.
-
Általános célú regiszterkészlet Előnye: 1. Minden regiszter kihasználtsága javul. 2. Új programozói stílus: a regiszter operandusú műveletek számának maximalizálása.
-
Verem regiszterek Hátránya: Szűk keresztmetszet, mivel csak a verem tetejét látjuk. Előnye: Gyors.
Adattípusonként különböző regiszterkészlet: Megjelenésének oka a lebegőpontos feldolgozás gyorsítása. karakterisztika (8)
mantissza előjele (1)
mantissza (23)
1964 IBM 360 Általános célú regiszterkészlet, feladata: fixpontos, karakteres, logikai feldolgozás.
Lebegőpontos regiszterkészlet, feladata: lebegőpontos műveleti feldolgozás. 5 / 121
1998 Pentium III
általános célú regiszterkészlet Megjelenés éve: 1964 1985 1990 1998
MMX2 (Katmai) Egy utasítással több műveletvégzést ér el. A vektorgrafikánál fontos. 12 bites, 3D filmeket ez tette lehetővé.
lebegőpontos regiszterkészlet Típus IBM 360 Intel 80386 IBM RISC 6000 Pentium III
Általános célú regiszterkészlet 16x32 8x32 32x32 8x32
Lebegőpontos regiszterkészlet 4x64 8x80 32x64 8x80
Katmai (MMX2) 8x128
Többszörös regiszterkészlet: Háttérismeretek: - kontextus: a) regiszterek aktuális értékei b) az állapottér (flag, PC) - Megszakításkor a futó program kontextusát le kell menteni annak érdekében, hogy a megszakítás feldolgozása után azt visszatöltve a program futása folytatódhasson. - Többfeladatos és többfelhasználós környezetben igen sok megszakítás lép fel. A kontextus memóriába való mentése lassú → gyorsítás többszörös regiszterkészlet révén. Fajtái: 1. Több, egymástól független regiszterkészlet, pl.: 1964 – Sigma7. - Paraméterátadásos eljáráshívásoknál a paraméterátadás csak memórián keresztül történhet, így nem gyorsít. - Ideális egymástól független megszakításoknál, pl.: I/O megszakítások
6 / 121
INS regiszterek száma
2. Átfedő regiszterkészlet, pl.: 1980 RISC I. - A hívóeljárás OUTS része fizikailag megegyezik a meghívott eljárás INS részével → nincs paraméterátadás - Regiszterek száma merev → viszonylag üres regiszterkészlet esetén is előfordulhat túlcsordulás. - A túlcsordult paraméterek mentése a memórián keresztül történik → lassú. - Konkrét regiszter számok: (ins/locals/outs) RISC I: 6/10/6 SPARC: 8/8/8
Locals OUTS
INS Locals OUTS
INS Locals OUTS
regiszterkészletek száma
-
Regiszterkészletek száma: A mérési eredmények azt mutatták, hogy 8 db regiszterkészlet esetén már csak 2% körüli a túlcsordulás.
túlcsordulás (%)
2 -
4
6
8
regiszterkészletek száma
A programozás módszertana sem ajánl nyolcnál több egymásba ágyazott eljárást, mivel az ennél több már nehezen tekinthető át.
3. Stack-cache, pl.: 1982 C-Machine - a stack verem szervezését és - a regiszterek közvetlen címzési lehetőségét egyesíti. Működése: itt is van átfedő rész az INS és OUTS-nál - A compiler minden eljáráshoz hozzárendel egy változó hosszúságú aktiválási rekordot (regiszterkészlet). - A SP lehetővé teszi az aktiválási rekordok közvetlen elérését. aktuális - A SP és a relatív távolság megadásával aktiválási rekord bármely adat közvetlenül elérhető a stackaktuális cache-ben. stack pointer - Az aktiválási rekordok számának csak a (SP) stack cache fizikai mérete szabhat határt.
7 / 121
előző aktiválási rekord előző SP
SzA3. -
A szekvenciális utasítás-végrehajtás menete (az aritmetikai utasítások és a feltétlen vezérlés-átadási utasítás végrehajtásának sémája)
Egy gépi kódú utasítás általános formátuma: MK Címrész
-
MK : műveleti kód, mit csináljon a processzor Címrész : mivel tegye mindezt
Az utasítás-feldolgozás nagyvonalú folyamatábrája: megszakítás feldolgozása következik
igen
Megszakítás nem
I. utasítás lehívás (fetch) II. utasítás végrehajtás (execution)
MAR: Memory Address Register – memória-címregiszter (egyirányú). PC: Program Counter. MDR: Memory Data Register – memória-adatregiszter (kétirányú). IR: Instruction Register – utasításregiszter. DEC: Decoder. ALU: Arithmetical Logical Unit – műveletvégző (utasítást is képes továbbítani). AC: Accumulator – általános célú regiszterkészlet. -
Egy hagyományos szekvenciális feldolgozást végző processzor részei: Operatív tár adatsín címsín processzor
MAR
Vezérlő egység
MDR
PC ALU
IR I. Utasítás lehívás DEC
AC
8 / 121
A PC tartalmazza a következő végrehajtandó utasítás címét. MAR ← PC MDR ← (MAR) – nem a címét jutatja el, hanem a tartalmát. IR ← MDR – itt már az IR-ben adat van. PC ← PC + 1 – következő feldolgozandó utasításra mutat, a +1 egységre utal, 2, 4 byte lehet. Ez a folyamat minden utasítás esetén megegyezik. II. Utasítás végrehajtás -
Betöltés (load): DEC ← IR MAR←DEC
műveleti kód
IR címrész
címrész
MDR ← (MAR) AC ← MDR
-
-
Aritmetikai-logikai utasítások: DEC ← IR MAR ← DECcímrész MDR ← (MAR) AC ← AC + MDR vagy AC ← AC – MDR vagy AC ← AC és MDR
értelmezi, hogy mi van a címrészben a másik tag elmentése műveletvégzés
Kiírás (store): DEC ← IR MAR ← DECcímrész MDR ← AC (MAR) ← MDR – meghatározott helyre történő visszaírás.
-
feltétlen vezérlésátadás (ne a soron következő utasítást végezze, hanem amit mi megadunk): DEC ← IR PC ← DECcímrész
9 / 121
SzA4.
Az állapottér és az állapotműveletek (az állapottér összetevői; az állapotműveletek) Állapottér a felhasználó számára látható
a felhasználó számára transzparens virtuális memória
állapotjelzők
PC
egyéb, a felhasználó számára látható állapotformáció
CC
állapot-indikátorok
CC
- Condition Code - 2 bites négy érték felvétele - IBM 360
állapot-indikátorok (flag):
megszakítások verem ....
adattípusonként különböző állapot-indikátorok
nyomkövetés (debug)
indexelés
- minden helyiérték saját jelentéssel bír, pl. negatív, nulla, túlcsordulás
adattípusonként különböző állapot-indikátorok: - minden regiszterkészlet típushoz hozzárendelnek külön állapot-indikátor készletet, pl. az általános célú processzorhoz tartozó flag-eken kívül a lebegőpontos proceszszorhoz is hozzárendelnek külön flag-készletet. - a lebegőpontos flag-készlet eseményei pl. alul-, túlcsordulás, denormalizált szám, 0 Megszakításoknál (fejlődés íve): -
1973 → IBM 370-es gépcsaládnál bevezetik a PSW-t (Program Status Word): megszakításoknál a PSW-t mentik el. Kontextus: a) A regiszterek aktuális értékei és b) Az állapottér aktuális értékei (PC, flag) Megszakításnál a kontextust mentik. Állapotműveletek PC Inkrementálás (növelés) Felülírás
Flag Set (beállítás) Save (mentés) Load (visszatöltés) Clear (törlés) Reset (kezdeti értékek visszaállítása)
10 / 121
SzA5.
Az utasítás- és operandus típusok (utasítás- és operandus típusok; szabályos architektúrák)
Az utasítások fajtái (típusai): op – operandus s – source (forrás) d – destination (cél) @ - tetszőleges művelet 4 címes utasítás opd:=ops1@ops2, op4 MK Opd ops1 ops2 op4
Az op4 a következő utasításra mutat, csak néha van nagy ugrás. Neumann szerint PC és címregiszter legyen az op4 helyett. Hátránya: - memóriapazarló - adatrögzítési hibák lehetősége nő - nehézkes a program karbantartása 3 címes utasítás opd:=ops1@ops2; Az eredmény helyének explicit deklarálása. Előnye: - Az aktuális utasítás eredményének mentésével párhuzamosan betölthetjük a következő utasítás bemenő operandusait. Hátránya: - Neumann szerint: Az aktuális művelet eredménye tipikusan a következő művelet egyik bemeneti operandusa. Pl.: RISC számítógépek (processzorok). 2 címes utasítás ops1:=ops1@ops2; a mai gyakorlat általában ops2:=ops1@ops2; Pl.: ADD[100],[102]; [memóriacímek] Előnye: - Memória- vagy regisztertakarékosabb, kiküszöböli a Neumann által említett hátrányt. Hátránya: - Az a forrásoperandus, ahol az eredmény képződik értékét veszti, ha később szükségünk van rá, a művelet előtt ki kell menteni. Pl.: IBM 360/370, Intel processzorok.
11 / 121
1 címes utasítás - Az egyik forrásoperandust betöltjük az AC-ba: LOAD[100] - Az AC aktuális tartalmához hozzáadjuk az utasításban szereplő operandust: ADD[102] - Végül az AC tartalmát kimentjük az operatív tárba: STORE[100] Előnye: - Rövidebb utasítások. Hátránya: - Több utasítást kell használnunk. Pl.: 1951 IAS (Neumann gépe), csak az 50-es 60-as években készült ilyen processzor. 0 címes utasítás Fajtái: - NOP (no operation). - Veremműveletek (csak a verem tetejét látja): POP, PUSH. - A műveleti kód tartalmazza az operandust, pl.: CLEAD (a D flag törlése). Napjaink trendje: - CISC: - kétcímes - az első helyen képződik az eredmény - tipikusan csak a második cím lehet memóriacím - RISC: - aritmetikai-logikai utasítások esetén háromcímes utasítások - mindhárom regisztercím Operandus-típusok: Operandus-típusok akkumulátor (a)
memória (m)
regiszter (r)
verem (stack - s)
immediate (i)
immediate: magában a programban adunk értéket a változónak a gyakorlatban ez bemenő operandus Architektúrák szabályos
akkumulátor a-r aar
memória a-m
ara
kombinált(pl. a+m) - a mai CISC processzorok
2 címes
regiszter 3 címes
2 címes
aam ama m1m1m2 m2m1m2 m1m2m3 r1r1r2
Akkumulátor: Előny: Gyors, rövid címrész. Hátrány: Szűk keresztmetszet. Napjainkban nem aktuális.
12 / 121
verem 3 címes
r2r1r2
SSS
r1r2r3
Regiszter: Előny: Gyors, rövid címrész. A mai RISC számítógépek mindegyike. Memória: Előny: Nagy címtér. Hátrány: Hosszú címrész, hosszú utasítások, lassú. Napjainkban nem aktuális. Verem: Előny: Gyors, rövid címrész (0 hosszúságú). Hátrány: Szűk keresztmetszet. Pl.: HP3000, VT1005, Napjainkban nem aktuális.
SzA6.
Az aritmetikai egységek felépítése I. (az n-bites soros és párhuzamos összeadó, valamint az előrejelzett átvitellel felépített n-bites összeadó)
n-bites soros összeadó Megjelenésének oka az, hogy az összeadandók tipikusan n bit hosszúságú regiszterekben helyezkednek el. n fokozatosan növekszik (ma: 32/64). Jellemzői: - A két operandus léptetőregiszterben (shift) helyezkedik el. - Az eredmény az A operandus helyén képződik. - A kimenő átvitelt tárolóba vagy késleltetőbe helyezzük, hogy a következő bitpároshoz (összeadáshoz) megfelelő időben érkezzen. - A Cin csak az első bithelyiérték összeadásakor aktív. Értékelése: - Ha az egybites teljes összeadó műveleti ideje t, akkor az n-bites összeadási ideje: T=n×t. Gyorsítás: - t: A lehető leggyorsabb kialakítást alkalmazzuk. - N: Az egybites teljes összeadók számát megtöbbszörözzük → n-bites párhuzamos öszszeadóra. n-bites párhuzamos összeadó 4 bites párhuzamos összeadó tesztelése: I. eset: A 0101 B +1010 1111
Cin=0; T=t
13 / 121
II. eset: A 0101 B +1010 1. lépés 2. lépés 3. lépés 4. lépés
Cin=1; T=n×t 1110 1100 1000 0000
C0=1 C1=1 C2=1 Cout=1
Értékelés: - Igen komoly beruházás árán (egy darab helyett n db egybites teljes összeadó) csupán hullámzó teljesítményt értünk el. Az ok: meg kell várni az átvitel terjedését. Az átvitel előrejelzéses összeadó (Carry Look-Ahead – CLA) Cout=A×B+(A+B) ×Cin A×B → G (Generate) A+B → P (Propagate) Az egyes bithelyiértékeken keletkező átvitel függ - a bemenő operandusoktól és - a kívülről beérkező átviteltől, melyek előre ismertek, de nem függ az előző bithelyiértékeken keletkező átviteltől. Az egyes bithelyiértékeken keletkező átvitel: Ci=Gi+Pi×Ci-1 C0=G0+P0×Cin C1=G1+P1×C0=G1+P1×G0+P1×P0×Cin C2=G2+P2×C1=G2+P2×G1+P2×P1×G0+P2×P1×P0×Cin C3=G3+P3×C2=G3+P3×G2+P3×P2×G1+P3×P2×P1×G0+P3×P2×P1×P0×Cin Értékelése: ÉS kapuk sorozata: 1 fokozat Összekapcsolásuk egy vagy kapuval: 1 fokozat P és G meghatározásához egy vagy és egy és kapu kell:+1 fokozat 3 fokozat Amennyiben egy fokozat végrehajtási ideje d, akkor egy bithelyiérték átviteli idejének meghatározása: T=3d Megvalósítási alternatívák: 1. Katalógus áramkör egybites teljes összeadók + CLA
14 / 121
2. Az egybites teljes összeadókat helyettesítjük a P és a G meghatározásához szükséges kapukkal (vagy valamint és kapuk). A vagy kapu bemeneteinek száma technológiai korlátba ütközik, ezért max. 8 bithelyiértékre alakítható ki a CLA.
3. 32 bites megoldás: A CLA-k között az átvitel sorosan terjed
4. A CLA-khoz is hozzárendelünk egy CLA-t
SzA7.
Az aritmetikai egységek felépítése II. (a fixpontos szorzás algoritmusai és gyorsítási lehetőségek)
Hagyományos szorzás: 13×123 39 26 13 1599
Algoritmizált változat: 13×123 0000 felveszünk egy gyűjtőt, amit nullázunk 39 0039 260 10-zel szorozzuk 0299 1300 100-zal szorozzuk 1599
10/100-zal való szorzás helyett léptetés: 13×123 0000 Konklúzió (decimális számoknál): 39 Az összeadási ciklus annyiszor fut le, 0039 ahány helyiértékből áll a szorzó. 26 0299 13 1599
15 / 121
A bináris szorzás sajátosságai: -
A bináris szám hossza Példa
Decimális szám Bináris szám helyiértékeinek száma helyiértékeinek száma 9 1 4 99 2 7 999 3 10
-
Konklúzió: A bináris szám hosszabb, mint a decimális, ezért a ciklus többször fut le.
A szorzat hossza A decimális helyiértékek száma Általánosítva A 1 2 2 m B 1 1 2 n Xmax 2 3 4 m+n Példa: 9×9 99×9 99×99 A szorzó és a szorzandó egy-egy regiszterben helyezkedik el, ezért az eredmény két regiszterben képződik.
Példa: Legyen egy regiszterünk három helyiértékű, a szorzat kisebb helyiértékei keletkeznek a szorzó helyén:
0 0 1
1 9 9 5
2 1 9 9
3 2 1 9
eredmény
A bináris szorzás gyorsítása: -
Bitcsoportokkal való szorzás: A szorzó helyiértékeit nem egyesével, hanem csoportokban kezeljük, így a csoportokat léptethetjük, ami gyorsabb. Pl.: kettes csoportokban: 00 – kettőt léptetünk balra. 01 – a gyűjtőhöz hozzáadjuk a szorzandó egyszeresét és kettőt léptetünk balra. 10 – a gyűjtőhöz hozzáadjuk a szorzandó kétszeresét és kettőt léptetünk balra. 11 – a gyűjtőhöz hozzáadjuk a szorzandó háromszorosát és kettőt léptetünk balra. Példa: Segédszámítás: 7×9 = 0111×10|01 a szorzandó kétszerese: 0111 0000 A: összeadással 0111 0111 1110 0111 1110 0111→1110 B: léptetéssel 111111B = 63D
16 / 121
-
SzA8.
Booth féle algoritmus: - Bináris számok esetén az összeadási ciklus annyiszor fut le, ahány egyes van a szorzóban (nulla esetén csak léptetünk). - A szorzóban lévő egyesek számának csökkentése a cél. Példa: 62-vel kell szorozni: 62=111110B 5 db összeadás. Helyette: ×64=100000B 1 db összeadás Összesen 3 db művelet, 40%-os ×2=000010B 1 db összeadás időmegtakarítás, pl.: mai processzorok – 1 db kivonás mindegyike.
Az aritmetikai egységek felépítése III. (a fixpontos osztás algoritmusai; a fixpontos multimédia (a raszteres képfeldolgozás és a hangfeldolgozás) probléma-felvetése és megoldása)
Osztás: X=A/B Hagyományos osztás: 150/48 150 I –48 102 II –48 3,1… 54 III –48 60 I –48 120 I –48 72 II
Konklúzió: Minden kivonás előtt komparálunk (összehasonlítunk), ezért lassú.
Visszatérés a nullán át csak az előjel flag-et vizsgálva: 150 –48 102 I –48 54 II –48 6 III –48 –42 kiírja a gyűjtőt (3,) +48 hozzáadja a maradékhoz az osztót (–42+48) 60 tízszerezi (6×10=60) és folytatja –48 12 –48 –36 kiírja a gyűjtőt (,1)… +48
17 / 121
Itt minden kivonás automatikus (nincs komparálás, ami lassú). Mivel nem kell minden kivonás előtt komparálni, csak a gyors előjel flag vizsgálatot végezzük, a két felesleges művelet (hozzáadás +48 és szorzás) ellenére gyorsabb. Visszatérés nélküli osztás: 11/6 11 I –6 5 10. lépés –6 –10 9. lépés +6 –4 8. lépés +6 +20 I –6 14 II –6 8 III –6 2 10. lépés –6 –40 9. lépés
1,8 kiírja a gyűjtőt szorozza 10-zel
Fixpontos multimédia feldolgozás A probléma felvetése: A, Hangfeldolgozás: -
analóg jel digitális jelfeldolgozásához digitalizálni kell analóg digitális (A-D) konverter
Amplitúdó vagy felbontás: - A leképezendő hanghullám minimális és maximális értékhez hozzárendeljük az értelmezési tartományunk minimális és maximális értéket. - 8 bit 256 pontos felbontás - 16 bit 65536 pontos felbontás (a mai gyakorlat)
18 / 121
Mintavétel: - Példán keresztül: Egy 50kHz-es mintavétel azt jelenti, hogy másodpercenként 50000 mintát veszünk az adott hullámból (minden egyes mintánál az amplitúdó értékét tároljuk el). -
Mai példák: a) b) c) d)
Alkalmazás Telefon Audio CD DVD DVD (minőségi)
kHz 8 44 48 96
Egy másodperc hanganyag tárolási igénye audio CD, 16 bites felbontás, sztereó esetén: - 44000 minta×2 byte felbontás×2 a sztereó miatt = 176000 byte/sec ~ 170 kbyte/sec - Percenként: 60×170 ~ 10Mbyte/min Feladat: Nagy tömegű fixpontos adat - tárolása - továbbítása - feldolgozása B, Pixeles képfeldolgozás: -
A fénykép és a festmények analóg formátumúak, hiszen a fények, árnyékok és színek folyamatos átvitelével írhatók le. A képeket digitalizálnunk kell.
Felbontás: - A képeket képpontokra (pixel) bontjuk. Minél sűrűbb a rácsszerkezet, annál jobb minőségű képet kapunk a digitalizálás során. Minél kisebb egy pixel, annál jobb a leképezés. Pl.: 800×600; 1280×1024 Pixelek vagy képpontok: - Minden szín leírható három szín összetételeként, tehát minden pixelhez három darab színkódot kellene hozzárendelni, de helyette ezeket egyetlen vektorrá kódolták. Pl.: 000 → 0, 001 → 1, 010 → 2 … A pixelek lehetséges értékei: - 1 bit: fekete-fehér, sötét-világos - 1 byte: 256 féle színt írhatunk le - 2 byte: 65536 féle szín (high-color) - 3 byte: 224 féle szín (true-color) (az emberi szem ennyit nem tud megkülönböztetni, azért jó a sok szín, mert a számítógép ezt is tudja értelmezni) - 4 byte: a negyedik byte az úgynevezett alfa csatorna, az effektek jelzésére szolgál (pl.: átlátszóság mértéke)
19 / 121
Egy kép tárolásához szükséges memóriaterület: egy byte 800×600 480000 byte 1280×1024 1,3 Mbyte
két byte 960000 byte 2.6 Mbyte
A képfeldolgozás feladata: Nagy tömegű fixpontos adat tárolása, továbbítása, feldolgozása. Megoldás: -
Tárolás, továbbítás hatékony tömörítéssel. Feldolgozás: - Probléma: a 3 perces számot 3 perc alatt le kell tudni játszani - Hagyományos feldolgozás: pl. 2 kép összeadása a 800×600-as felbontás mellett 1. Az 1. kép 1. byte-ját betöltjük az AC-ba. 2. A 2. kép 1. byte-ját hozzáadjuk az AC-hoz, az eredmény az AC-ban keletkezik. 3. Az AC tartalmát lementjük az eredmény memóriaterületre. Ez a ciklus 480000-szor fut le. (minden bájtra) -
Megoldás SIMD módszerrel (single instruction, multiple data): Több adattal ugyanazt az utasítást hajtja végre, ~ 8-szoros gyorsítást eredményez, 60000-szer fut le a ciklus. A + + + + + + + + +B = = = = = = = = X
-
8 db A gyakorlatban kétféle megoldás: - multimédia segédprocesszor - az általános célú processzorba beleintegrálják a multimédia feldolgozó egységét. -
Az Intel MMX kiterjeszés: a) 1997-ben jelent meg b) Matrix Math Extension (Multimedia Extention) c) Logikai architektúra: 1. Pakolt adattípusok bevezetése a. Ezek mindegyike 64 bites, ami megegyezik a processzor belső sínjének szélességével. b. Fajtái: pakolt byte: 8 db 8 bites = 64 bit, pakolt félszó: 4 db 16 bites = 64 bit, pakolt szó: 2 db 32 bites = 64 bit. 2. Új utasítások bevezetése A négy aritmetikai művelet (+,–,×,÷) és a logikai műveletek mindhárom új adattípushoz.
20 / 121
d) Fizikai architektúra: 1. Az Intel nem akart új regisztereket bevezetni az új adattípusokhoz, hanem a 80 bites lebegőpontos regisztereket használja a 64 bites pakolt adattípusok feldolgozására. 2. Egy évre rá az MMX műveletvégzőket 2-re növelték, így a ciklusok száma 30000-re csökkent.
SzA9.
Az aritmetikai egységek felépítése IV. (a lebegőpontos algebrai műveletek és megvalósításuk. A lebegőpontos multimédia (vektoros képfeldolgozás) probléma-felvetése és megoldása)
Lebegőpontos műveletek Összeadás: X=A+B A=mArka B=mBrkb
Példa:
0,9×103 +0,95×104 0,09×104 +0,95×104 1,04×104 0,104×105
Közös kitevőre kell hozni, a mantisszában a törtpontot ciklikusan léptetetem jobbra/balra.
Mantissza vizsgálata, majd szükség esetén normalizálása. Bonyolultabb, mint a fixpontos.
Algoritmus: 1. A kitevők megvizsgálása: csak azonos kitevőjű számok mantisszái adhatók össze. 2. Amennyiben a kitevő eltérő, akkor a kisebb kitevőjű szám mantisszájában a törtpontot jobbra léptetjük és a kitevőt inkrementáljuk. Ez a ciklus addig fut, míg a kitevők meg nem egyeznek. 3. Összeadjuk a közös kitevővel rendelkező számok mantisszáit. 4. Szükség esetén normalizálunk. Szorzás: X=A×B=mA×mBrka+kb Algoritmus: A mantisszákat összeszorozzuk, a karakterisztikákat pedig összeadjuk. Osztás: X=A/B=mA/mBrka-kb Algoritmus: A mantisszákat elosztjuk, a karakterisztikákat pedig kivonjuk egymásból. Megvalósítás: Univerzális műveletvégző -
az ALU parciálásával (részekre bontásával) karakterisztika
mantissza
fixpontos ALU Ez egy kicsit bonyolultabb vezérléssel megoldható.
21 / 121
-
Szervezési módosítással a) Mind a mantisszát, mind a karakterisztikát külön-külön regiszterekben helyezzük el. b) Egymás után elvégezzük a mantissza és a karakterisztika műveleteket. c) Az eredményt pedig az egyik regiszterben összevonjuk.
Dedikált műveletvégző adatsín
Karakterisztika egység
Mantissza egység visszacsatolás
Vezérlő
vezérlés
Következtetések: -
Míg a mantissza egységnek ismernie kell a szorzást és osztást is, a karakterisztika egységnek elegendő az összeadást és a kivonást ismernie. Párhuzamosan lehet végezni a karakterisztika és a mantissza műveleteket. A szűk keresztmetszetet a mantissza egység jelenti (a szorzás, osztás miatt), mivel a karakterisztika egység az összeadást és kivonást gyorsan el tudja végezni. A gyorsítást a mantissza egységnél kell végezni.
Lebegőpontos, vektorgrafikus multimédia műveletek: -
Az egyenesekkel és görbékkel határolt objektumok geometriai jellemzőikkel leírhatók. Elegendő a geometriai jellemzők tárolása. Például: a) Egyenes esetén: Két pontjának koordinátáit. b) Kör: A középpont koordinátáját és a sugár hosszát.
Jellemzők: -
2D: Egy kép igen sok objektumra (sokszögre, háromszögre) bontható egy átlagos kép objektumainak száma ~20000. - Miután a számítógép a geometriai jellemzők alapján meghatározza a ~20000 objektumot, a színek valósághűbb átmenete érdekében egy úgynevezett textúrát alkalmaz. A megoldandó feladat: - Viszonylag kevés lebegőpontos adaton - sok műveletet hajtunk végre. -
22 / 121
-
3D: -
-
Egy harmadik dimenzió kerül hozzáadásra. a) Biztosítani kell a párhuzamosoknak a végtelenben való találkozását. b) Az atmoszférikus sajátosságok is megvalósításra kerülnek, azaz a közelebb lévő tárgyak élesebbek, a távolabbiak kékesebbek és elmosódottabbak. Sok 3D film készül, ahol minimum 15 képet kell vetíteni másodpercenként annak érdekében, hogy folyamatosnak láthassuk. Pl.: képenként 20000 objektummal számolva 20000×15=300000 obj/sec feldolgozási sebesség szükséges.
A megoldandó feladat: - Viszonylag kevés lebegőpontos adaton - sok műveletet kell végrehajtanunk - adott időegység alatt. Megoldás az Intel processzoroknál: - 1998: MMX2, azaz a KNI (Katmai New Instruction) - a megoldás: a SIMD elv (Single Instruction Multiple Data) - 1985 óta először új regisztereket vezetett be az Intel: 8 db 128 bites regisztert. - Formátumok: a) 4 db 1-szeres pontosságú vagy b) 2 db 2-szeres pontosságú számon hajt végre egy időben műveletet:
-
+
+
+
+
=
=
=
=
70 db új utasítást vezettek be. 100%-osan megfelel az IEEE 754-es szabványának. Megszakítás esetén az új regisztereket is menteni kell, ezt először a Win98 operációs rendszer végzi.
A lebegőpontos műveletvégzés jelentősége: - A tudományos és multimédia számításokhoz szükséges. - A miniatürizálás és a fajlagos árcsökkenés eredményeként a jelenleg kereskedelmi forgalomban lévő processzorok mindegyike hardver úton megvalósítja.
23 / 121
SzA10. A vezérlőegység (az áramköri vezérlőegység és a mikrovezérlő jellemzőinek szembeállítása. Az áramköri vezérlőegység megvalósítása és működése) -
-
Centralizált vagy szekvenciális vezérlés: a) Huzalozott vezérlés. 1. 1947: első elektronikus számítógép b) Mikroprogramozott vezérlés. 1. 1954: Wilkes 2. 1963: CDC6600 Decentralizált vagy párhuzamos vezérlés: a) Szuperskalár. 1. 1966: IBM 360/91 b) Futószalag.
Huzalozott vagy áramköri vezérlés Hátrányai: - Az ember számára nehézen áttekinthető. - Nehézkesen módosítható. Előnye: - Gyors. Tervezése: - igazságtábla - logikai függvények - azonos átalakítások a következő célfüggvényekkel: a) az elemek számának minimalizálása b) a végrehajtási idő minimalizálása - megvalósítás Megvalósítás:
24 / 121
Elv: -
Egy forrásregiszterből módosító áramkörökön keresztül egy célregiszterbe juttatjuk az adatot.
Regiszterek: - Memória regiszterek (MDR, MAR). - ALU regiszterei (AC, általános célú regiszterkészlet). - I/O regiszterek (vezérlőkártyán). - Vezérlőrész regiszterei (utasítás regiszter, PC). Módosító áramkörök: - Összeadó - Invertáló - Inkrementáló - Léptető… Működése: - A forrásregiszter kimenetét rákapuzzuk a módosító áramkör bemenetére. - Előírjuk a módosító áramkör számára, hogy most éppen milyen módosítást hajtson végre. (Pl.: léptetés, összeadás…) - A módosító áramkör kimenetét rákapuzzuk a célregiszter bemenetére. A mai processzorokban tipikusan több száz olyan vezérlési pont van, amit vezérelni kell. Mikroprogramozott vezérlés 1954: Maurice Wilkes (University of Cambridge). Cél: - Ember számára áttekinthetővé tenni a vezérlést. a) Mikroutasítások, melyek meghatározott vezérlővonalat, vagy -vonalakat aktiválnak. b) A gépi kódú utasítások végrehajtása mikroutasítások sorozatával érhető el. c) A hagyományos (Neumann-elvű) számítógépet tekinthetjük egy makroszámítógépnek, ezen belül helyezkedik el egy mikroszámítógép mikroutasítássokkal, mikroprogrammal. -
A vezérlést rugalmassá, könnyen módosíthatóvá alakítani. a) A mikroprogramot tároló Control Memory-ban cserélhetjük, változtatjuk magát a mikroprogramot.
Huzalozott kontra mikroprogramozott vezérlés: sebesség gyors áttekinthetőség ember számára nehezen áttekinthető módosíthatóság merev, nehézkesen módosítható
25 / 121
mindig lassabb ember számára áttekinthető rugalmas
SzA11. Félvezető tárak (jellemzőik; csoportosításuk) Csoportosításuk:
Félvezető memória-típusok
írható-olvasható RAM
DRAM (operatív tár)
főképpen csak olvasható - CMOS (setup)
csak olvasható ROM (BIOS)
SRAM (gyorsító tár)
A számítógépen belül a legelterjedtebb a RAM (Random Access Memory). Szó szerinti fordításban ez közvetlen elérésű tárat jelent, azonban ez a táblázatban szereplő valamennyi tárra vonatkozóan igaz, tehát nem egy egyedi jellemzőt tartalmazó elnevezés. Így inkább szabad fordításban írható-olvasható tárnak nevezhetjük. Ennek kétféle gyártási technológiája van. A megengedett Az adaA memóOlvasási írási Jelleg tok élet- Írási idő Törölhetőség ria típusa idő ciklusok tartama száma írható60-100 programból, DRAM 4-32 ms 60-100 ns végtelen olvasható ns bájt szinten az áramprogramból, írhatóforrás SRAM 10-25 ns 10-25 ns végtelen blokkolvasható kikapszinten csolásáig csak olcsak nem lehetROM végtelen különböző 100 ns vasható egyszer séges csak olcsak nem lePROM végtelen órák 100 ns vasható egyszer hetséges főképpen ultraviola pár máEPROM csak ol- végtelen 100 ns sokszor fénnyel, lapsodperc vasható ka-szinten főképpen kb. 1 mákorlátoEEPROM programból, csak ol- végtelen sodperc/ 100 ns zott bájt szinten vasható bájt számban főképpen korláto- programból, Flash csak ol- végtelen n. a. 100 ns zott blokk szinvasható számban ten a tápfőképpen elem CMOS csak ol- által törn. a. n. a. sokszor programból vasható ténő táplálásig A fontosabb félvezető memória-típusok és tulajdonságaik
26 / 121
A DRAM a Dynamic RAM, azaz a dinamikus RAM jelenti az alkalmazás során a nagyobb tárolási kapacitást. Fizikailag bitenként egy kondenzátort alkalmaznak benne, melynek feltöltött állapota jelenti az 1-et, és az ellenkező állapota pedig a 0-t. Sajnos a kondenzátor jellemző fizikai tulajdonsága, hogy az alkalmazott szigetelő tökéletlensége miatt idővel elveszíti töltését. Annak érdekében, hogy az adatvesztést megakadályozzuk, a tartalmát rendszeresen újra kell írni, azaz frissíteni kell. Ez a felhasználó számára teljesen észrevétlenül történik, az alkalmazott memória jellemzőitől függően 4-30 msec-onként. A DRAM viszonylag könnyen és olcsón gyártható, kis energia-fogyasztású, de például a processzorhoz képest viszonylag lassú. Hátránya, hogy a tápáram kikapcsolásával elveszíti tartalmát. A gyakorlatban ezt a memóriatípust alkalmazzák operatív memóriaként. Fast Page Mode DRAM 1, Cím-folytonos olvasás: egyszerre több bitet olvasunk a mátrixból, így a RAS jelet elég csak egyszer kiadni. (6+4+4+4 ns). Nibble Mode FPM DRAM: 4 rekeszes RAM 1. az első olvasásnál rákerülnek a címek, a RAS és a vezérlőjel 2. a címek növelése az IC-n belül történik, nincs külső címzés. Mindez a CAShez szinkronizálva; (6+4+4+4… ciklus). Ez akkor előny, ha a CPU 4 bájtos egységekben hívja le az adatot OPT-ból, és folyamatosan tudja fogadni az adatokat. Extended Data Out DRAM = EDORAM +1 kimenet bevezetése (tároló) a nCAS visszabillenésének tárolására. A kimeneti adat érzékelését ehhez kötik: előbb indulhat a kiolvasás (egy ciklus megspórolása). 6+3+3+3…ciklus – Output Enable nOE // nX = X negáltja Burst Extended Data Out DRAM = BEDO RAM Nincs szükség az oszlop vezérlőjelre, a címeket az IC-n belül generálja. Saját címszámlálóval és belső pipeline-nal rendelkezik. A bemenetén már megjelenik az új adat, amikor a kimenetére kerül az előző adat. (6+2+2+2…ciklus). Synchronous DRAM = SDRAM Az olvasás a CPU vezérlőjeléhez van szinkronizálva, nem pedig a CAS-RAS-hoz. 5+1+1+1… ciklus. 1 SDRAM lapra → 4db Bank (4*8 bit) Rambus DRAM • teljesen új architektúra, több egymástól független memóriamodult tartalmaz • rendkívül nagy belső cache-tárja van (1M-hoz 2K cache), • NINCS nRAS, nCAS → helyette 1 lépésben kapja meg a címet • blokkos az adatátvitel; blokk: 8db 256 bájt terjedelmű, adatszélesség: 8bit • gyors blokkmozgatás, speciális illesztő-áramkör szükséges (rambus) • nagyon drága, mert az eltérő technológia miatt más gyártósort igényel DDR SDRAM SDRAM esetén a művelet a felfutó élre van szinkronizálva, míg a DDR SDRAM esetén a lefutóra is. • A belső memória lapokra van bontva: az egyik rekeszben adatforgalom, a másikba beolvasás. • Nagyon gyors belső órajelgenerátor és pipeline. • Kompatibilis a jelenlegi gyártási technikával. • PC 2100: 2100 Mb/s / 266MHz / 7,5ns • PC 2700: 2700 Mb/s / 333MHz / 6ns • PC 3200: 3200 Mb/s / 400MHz / 5ns Összefoglalva: 27 / 121
DRAM
[ns] [Mb/s]
60 100
FPM
EDO Aszinkron → burst 40 25 200 266
BEDO
SDRAM
RDRAM DDR szinkron
15 532
15/10/7,5 4/3,3 1600
7,5/6/5
Az SRAM a Static RAM, azaz a statikus RAM jelenti a gyakorlatban a kicsi, de gyors memóriát. Ezt hagyományos flip-flop alkalmazásával készítik, így frissítést nem igényel (innen ered a neve is), s a tartalmát egészen addig megőrzi, amíg a tápáramforrás be van kapcsolva. A DRAM-hoz képest a gyártása nehezebb, az ára magasabb, s több áramot is fogyaszt. Ez utóbbi esetben nem annyira a magasabb fogyasztás jelent hátrányt, hanem inkább az, hogy nagyobb energia alakul át hőenergiává, aminek elvezetéséről gondoskodni kell. A sebessége viszont már közelebb áll a processzor sebességéhez. Ezért a számítógépen belül ezt a memória-típust alkalmazzák gyorsítótárként. A főképpen csak olvasható memóriák közé sorolható CMOS memóriát alkalmazzuk a PC-nk egyedivé alakítására, a beállítási (setup) adatok (a külső tárolók indítási sorrendje, a külső tárolók jellemzői, a memória mérete stb.) tárolására. A CMOS memória a számítógépben lévő elemmel táplálva alacsony feszültségszinten, igen csekély fogyasztás mellett a számítógép kikapcsolása után is képes a benne tárolt adatok megőrzésére, s üzemi feszültségszinten pedig azok módosítására is. A CMOS lapka az adattároló egységen túlmenően tartalmaz egy órát is, mely az elem táplálásával a számítógép kikapcsolása után is képes követni az idő múlását. A csak olvasható memóriából (ROM) töltődnek be az első programok, így az egyes részegységek működőképességét letesztelő programok valamint az alapvető beviteli-kiviteli műveletek (BIOS) programjai, s így bekapcsolásakor e memória-típus segítségével éled fel a számítógép.
28 / 121
SzA12. A megszakítási rendszer (fogalma; megszakítási okok; a megszakítás folyamata; az egy- és a többszintű megszakítási rendszer) A számítógépnek rugalmasan reagálnia kell a külvilág eseményeire. Erre a célra szolgál a számítógép megszakítási rendszere. A megszakítás bekövetkezésekor az éppen futó programról vezérlés ideiglenesen átadódik egy másik program számára, amely kiszolgálja a bekövetkezett eseményt. A megszakítást kiszolgáló program lefutása után pedig a megszakított program végrehajtása a következő utasításától kezdve folytatódik. Váratlan esemény
aszinkron (teljesen reprodukálhatatlan) várható pl. DMA
szinkron (bármikor reprodukálható, a program minden futásakor ugyanott következik be)
nem várható pl. hardver hiba → paritás hiba, áramkimaradás
A megszakítások okai vagy forrásai: 1. Géphibák: - Az egyes eszközök valamilyen hibajavító kód segítségével ismerik fel a hibákat - A CPU regiszterei - Operatív tár - Adatátvitel - Energiaellátás hibái - Klimatizáció 2. I/O források: a perifériák megszakítás-kérő jelzései (CPU dobozon belül) 3. Külső források → másik számítógép 4. Programozói források Utasítások végrehajtásakor keletkező megszakítások: Hiba, nem kért, váratlan (arch. specifikusak) o Memóriavédelem megsértése (saját részéről túlmutat) o Tárkapacitás túlcímzés (tényleges) o Címzési előírások megsértése o Aritmetikai és logikai műveletek miatti megszakítás (kivételek:tömbindextúlcímzés, 0-val való osztás, overflow) Szándékos o Rendszerhívások (pl. az Intel CPU-k overflow flag-je jelzi, ha túlcsordulás lépett fel. Az INTO utasítással egy megszakítás kérhető: korrekció.) Megszakítás-kiszolgálás 1. egy egység aktiválja az INTR. bemenetet 2. a CPU elfogadja ezt az INT kérést, ha megszakítható állapotban van megfelelő a prioritás nagysága a beérkezett megszakítás nincs maszkolva (letiltva) A 3 felt. teljesülése esetén INT elfogadva
29 / 121
3. minden utasítás-töréspontban a vezérlőegység megvizsgálja, hogy van-e megszakítás. Észleli, hogy van megszakítás. Az INTACK vezérlővonal aktiválásával jelzi a megszakítási kérés elfogadását, mire a megszakítást kérő deaktiválja az INTR vonalat 4. CPU elmenti a verembe az aktuális állapot információkat (PC, flag) automatikusan 5. a megszakított program adatterének mentése (regiszterkészlet) 6. a megszakítást igénylő azonosítása (ha egy INT-hez több egység is tartozik) 7. megszakítás kiszolgálása 8. az adattér visszaállítása 9. A CPU a kiszolgálás végeztével visszaküld egy nyugtát az egységnek, az pedig deaktiválja a jelet A megszakítás kiszolgálása után a megszakított program folytatódik, vagy nem (reset). Mindegyik INT-hez tarozik egy bit: a CPU ezeket vizsgálja, amikor fogadóképes. A megszakítást kérő azonosítása A legegyszerűbb lehetőség a megszakítások egyenkénti kiszolgálása, azok beérkezési sorrendjében. Hátránya, hogy a megszakítások kiszolgálása közben érkező megszakítást nem tudja kiszolgálni, így a halaszthatatlan kérelmek elveszhetnek. 1. Lekérdezéses (polling): Valamilyen sorrendben lekérdezzük az egységeket Hardveres úton: daisy chain Szoftveres úton: az operációs rendszer 2. Vektoros: A megszakítást kérő eszköz a kiszolgáló rutin kezdőcímét határozza meg a megszakítási vezérlő és a processzor számára. Több megszakítási vonal esetén minden eszköz saját megszakítást kérő vezetékkel rendelkezik, így a kérelem helye egyértelműen megállapítható.
30 / 121
Megszakítási rendszerek szintek szerint Egyszintű: Nincs lehetőség a kiszolgáló rutin felfüggesztésére egy újabb megszakítási kérelem által. A kiválasztó logika a kiszolgálás közben érkezett megszakítások közül a legmagasabb prioritású engedélyezett megszakítás-kérést engedélyezi. Az 1-es forrás szerinti kérés feldolgozása hosszabb ideig is eltarthat, viszont az 0-ás forrás megszakítás-kérése esetleg nem tűrhet ekkora halasztást. 1
INT
0
2
normál felh.-i szint t 1 2
0
0 2
Többszintű: keresi a pillanatnyi CPU-szintnél magasabb prioritás-szintű engedélyezett megszakítás-kéréseket. Kiválasztja a legalacsonyabb prioritás-szintűt. PSW-csere esetén ez oly módon zajlik le, hogy a megszakított szint PSW-je Old PSW-ként tárolódik, a másik rekesz tartalma pedig New PSW-ként betöltődik a programállapot-regiszterbe. Az elfogadott megszakítás-kérés nyugtázódik. Ha nem talál az utolsó szintnél magasabb prioritású engedélyezett kérést, akkor megengedi a legutolsó New PSW-ben megjelölt utasítás végrehajtását. 0 1 2 3
0 1
1 2
1 0 t 2 2 Kompromisszum: az előző kettő ötvözése, azaz szinteket rendelnek a megszakítások egy-egy csoportjához 0 1 2 3
0/a 1/a
Szinten belül egyszintű, szintek között többszintű
1/a 2/a
1/a 0/a 2/a 2/b
2/b
t 2/a 2/b
31 / 121
SzA13. A külső sínrendszer (fogalma; jellemzői; csoportosítása, a sínfoglalás (bus arbitration) módjai; az adatátvitel és felügyelete (szinkron, aszinkron)) Fogalma: - Műszaki: Olyan vezetékköteg, melynek minden egyes erén vagy csak a logikai 0-nak megfelelő 0 Volt, vagy csak a logikai 1-nek megfelelő +12, +5, +3.3, +2.8 Volt jelenhet meg. - Funkcionális: Olyan vezetékköteg, mely lehetővé teszi egyszerre n bit továbbítását a forrástól a célig. Ebben a kontextusban a sín fogalmába beleértjük a sín forgalmát vezérlő intelligenciát is. Jellemzői: - A vezetékek száma. - Napjainkban tipikusan megosztott eszköz: a) Minden vezeték egy időpillanatban 1 bitnyi információt továbbíthat b) Mindig csak egyetlen adó lehet, vevőoldalon lehet több eszköz is. - Regiszter tulajdonsággal rendelkezik. Értelmezett: r1r0 úgy történik, hogy: databusr0 r1databus Csoportosítás: -
Átvitel iránya szerint: a) Szimplex: egyirányú. b) Duplex: egy időben egyirányú; kétirányú. c) Full-duplex: egy időben kétirányú (két vezeték van). d) Pl.: Egyirányú: órajel, reset, cím. Kétirányú: adat.
-
Az átvitel jellege szerint: a) Dedikált sín: 1. Jellemzői: Minden egységet minden egységgel összekötünk. Egysínes: (n×(n–1)) /2 sín. U3 U4 Kétsínes: n×(n–1) sín. 2. Előnyei: a. Gyors: minden egység minden egységgel párhuzamosan kommunikálhat. b. Megbízhatóság: amennyiben biztosított az infrastruktúra, akkor pl. az U1-U2 közötti szakadás esetén a két egység továbbra is kommunikálhat U3 vagy U4 egységen keresztül. 3. Hátrányai: a. Drága. b. Újabb egységek csatlakoztatása bonyolult. c. Újabb csatlakozási felületek kialakítása bonyolult. d. Újabb csatlakozási felületek kialakítása technológiai nehézséget jelent.
U1
32 / 121
U2
b) Közös (shared) sín: 1. Jellemzője: Minden egység egyetlen közös sínen keresztül kommunikálhat. U1 … U2 Un 2. Előnyei: a. Olcsóbb. (nem sokkal) b. A szabványos közös sín csatlakozási felületek miatt könnyű az újabb egységek csatlakoztatása. 3. Hátrányai: a. Lassúbb, mivel egyidejűleg csak egyetlen adó lehet a sínen, a többinek várnia kell a sín felszabadulására. b. Érzékeny a közös sínrendszer meghibásodására. c. A közös sínrendszer vezérlése bonyolult (nem olcsó). Funkcionális csoportosítás: a) Címsín: 1. Feladata: Az egységek (pl.: hálókártya) illetve egységrészek (pl.: memóriacím) azonosítása. 2. Fejlődése az Intel esetében: 20 bit v. v. 4 bit v. v.
20 bit
80386
20 bit vezérlő vezetékek
80286
8088
-
v. v. 4 bit v. v. 8 bit v. v.
20 bitnél 1MB-ot tudunk megcímezni, 24 bitnél már 16MB-ot, 32 bitnél 4GB-ot. Napjainkban is 32 bit a címzési lehetőség. 3. A kompatibilitás megtartása nem eredményezett tiszta tervet. b) Adatsín: 1. Feladata: Adatok továbbítása. 2. Fejlődése: a. 8088 – 8 vezetékes volt. b. 80286 – 16 vezetékes volt. c. 80386– 32 vezetékes. 3. A kompatibilitás megtartása nem eredményezett tiszta tervet. c) Közös adat- és címvezeték: 1. Akkor alkalmazzák, amikor: a. vezetéket kívánnak megtakarítani, vagy b. a csatlakozó lábak számát szeretnék csökkenteni. 2. Külön vezérlővezetékkel kell jelezni, hogy mi van az adott pillanatban a sínen (cím vagy adat). 3. Akkor érdemes alkalmazni, ha blokkos átvitelt használunk. A blokk kezdőcíme átvitele után a többi cím inkrementálással megállapítható. 4. Időbeli multiplexelés elvén alapul. 5. Pl.: PCI.
33 / 121
d) Vezérlővezetékek (sín): 1. Számuk tipikusan 10-15 db. 2. Fajtái: a. Adatátvitel vezérlése: 1. R/W – read/write: a processzor nézőpontjából mutatja az átvitel irányát. 2. B/W – byte/word: hány bitet kell párhuzamosan átvinni. 3. A/D – address/data: a közös vezetékeken cím vagy adat van-e. 4. AS – address strobe: a címet felhelyeztük a sínre. 5. DS – data strobe: az adatot felhelyeztük a sínre. 6. M/U – memory/unit: a címvezetéken memóriacím van-e vagy egységcím. 7. RDY – ready: kész. b. A megszakítások vezérlése: A megszakítások kérése és engedélyezése. c. A sínhasználattal kapcsolatos vezérlővezetékek: A sínhasználat kérése, engedélyezése, a sínfoglaltság jelzése. d. Egyéb: 1. CLCK – órajel. 2. Reset – kezdeti értékek visszaállítása. Az összekapcsolt területek alapján: M1
CPU
-
…
rendszersín
Mn
bővítősín
Sínvezérlő I/O1
…
I/On
a) Rendszersín: 1. A rendszersín tipikusan gyorsabb, mint a bővítősín. 2. A rendszersín nehezen szabványosítható, mivel CPU közeli sajátosságok kihasználásával teljesítménye növelhető. 3. Elnevezések: a. Rendszersín: A rendszer adatforgalom itt zajlik. b. Memóriasín: Memóriablokkok összekapcsolása. c. Processzorsín: 1. A winchesteren tárolt adatokat a DMA vezérlő segítségével közvetlenül a memóriába visszük. 2. A processzor pedig a másodszintű gyorsítótárból dolgozik.
34 / 121
b) Bővítősín: 1. Feladata: az I/O egységek csatlakoztatása a processzor-memória kettőshöz. 2. Fejlődése: a. Kábelekkel egyedi módon csatlakoztatták a perifériákat. b. DEC első gépei sín-orientáltak voltak. Aljzatokat alakítottak ki tesztkészülékek csatlakoztatására. Megoldásaikat szerzői jogi védelem alá helyezték. c. 1976: az Altair tervezője kialakította az S-100-as bővítősín architektúrát, mely 100 db érintkező felületet biztosított. Ezt az IEEE szabványként fogadta el. d. 1981: IBM PC 3. Elnevezések: a. bővítősín b. I/O sín c. helyi sín A sínrendszer működése Megosztott sínrendszer esetén két fázisból áll: - A sínfoglalás (bus arbitration) – ha két vagy több egység szeretne master lenni, akkor sínütemezésre van szükség, hogy a káoszt elkerüljük - A sínhasználat (bus timing) – maga az adatátvitel folyamata Sínfoglalás: Soros sínfoglalás: -
Hardver lekérdezéses (daisy chain – gyermekláncfű).
Előnyei: a) b) Hátrányai: c) d) e)
Kevés vezetéket igényel (olcsó) Elvben végtelen számú egységet tudunk csatlakoztatni A prioritás hardveres úton szabályozott (merev) Az előrébb álló egységek elnyomhatják a hátrébb állókat Érzékeny a bus grant vonal meghibásodására
35 / 121
Működése: Amikor az ütemező egy sínkérést észlel, használati engedélyt ad ki oly módon, hogy beállítja a sínhasználat engedélyezése jelet. Ez sorban keresztülfut az összes egységen. Amikor az ütemezőhöz fizikailag legközelebbi eszköz meglátja az engedélyezést, ellenőrzi, hogy ő adta-e ki a kérést. Ha igen, akkor átveszi a sínt, és nem továbbítja az engedélyt a következő eszköznek. Az egységek távolsága egyben a prioritásukat is meghatározza.
-
Szoftver lekérdezéses (software polling).
Előnyei: a) b) Hátrányai: c) d)
A prioritás szoftveres úton szabályozott (rugalmas) Kevésbé érzékeny a bus grant vonal meghibásodására több vezérlővonal (drága) A csatlakoztatható egységek számát a bus grant vonalak száma korlátozza, példánkban maximum 23=8 db
Párhuzamos sínfoglaltság:
a) Előnye: gyors b) Hátránya: még több vezérlővonalat igényel (még drágább), pl.: PCI. Rejtett sínfoglalás: - Előfeltétele: két, egymástól független hardver vezérelje a sínfoglalást és az adatátvitelt - Amíg az aktuális adatátvitel folyik, az alatt lehetőség van az adatsín következő használójának kiválasztására
36 / 121
Adatátvitel (bus timing) Szinkron adatátvitel - Fogalma: Az adatátvitel mind az adó, mind a vevő számára előre ismert időintervallumban történik - Óra-ütemadó: a) Mind az adó, mind a vevő közös forrásból kapja az órajelet (akkor alkalmazzák, ha kicsi a távolság az adó, és a vevő között) b) Mind az adónak, mind a vevőnek saját, de azonos frekvenciával járó óra-ütemadója van. Ezek időben elcsúszhatnak egymástól, ezért egy szinkronjel segítségével hangolják össze a működésüket Értékelése: - Előnye: olcsó, egyszerű a megvalósítása - Hátrány: Az előre ismert idő intervallum hosszát mindig a leglassúbb egység határozza meg ez visszafogja a gyors egységeket (ez kiküszöbölhető többszintű sínrendszer alkalmazásával, ahol átviteli-sebesség függő tartományonként csoportosítják az egységeket) A Bővítősínek fajtái: - Átviteli sebesség szerint (szinkron meghajtású sínek): a) Kompatibilitási vagy hagyományos sín (~ 5MB/s) b) Helyi sín, pl.: PCI (lehet 132 vagy 264 MB/s) c) AGP 1x (500 MB/s) - Tervezési szempontok szerint: a) Platformfüggő, pl.: ISA, EISA b) Platformfüggetlen, pl.: USB, SCSI, PCI. Aszinkron adatátvitel - Fogalma: Az előző elemi művelet befejeződése egyben jelzés a következő elemi művelet kezdetére. -
Egyvezetékes (egy vezérlővezeték) a) Adó oldali vezérlés: Először az adat az adatsínre kerül, majd késleltetést alkalmazunk. Hátránya: Az adónak nincs visszacsatolása arról, hogy a vevő valóban elolvasta-e az adatsínre helyezett adatot. Lehet, hogy a vevő ki van kapcsolva. (Jobbra az alsó ábrán: Data; Data ready)
b) Vevő oldali vezérlés: Ez biztonságosabb átvitelt jelent, mert a vevő az átvitel igénylésének pillanatában aktív, de továbbra sincs visszacsatolás az adat célba érkezéséről. (Jobbra az alsó ábrán: Data; Data request)
37 / 121
-
Kétvezetékes átvitel (handshaking - kézfogás) a) Adó oldali vezérlés: az alsó ábrán Data, Data Ready, Data Acknowledge
b) Vevő oldali vezérlés: az alsó ábrán Data, Data Request, Data Ready
38 / 121
SzA14. A processzor részvételével zajló I/O rendszer (a programozott I/O, a különálló I/O címtér és az I/O port; a memóriában leképezett I/O címtér; működése (feltétlen és feltételes)) I/O Rendszer Programozott I/O
DMA
A processzor közreműködésével
Címzés
A processzor működése nélkül
Működés
Fogalma, jellemzői
Működése
Különálló I/O címtér blokkos feltételes
cikluslopásos
feltétlen
Programozott I/O Fogalma: minden egyes I/O művelethez a processzornak egy-egy utasítást kell végrehajtania Fajtái címtér szerint: Különálló I/O címtér. - Elve: A processzor két különálló címteret lát.
-
Jellemzői: a) A címsín szolgál: 1. az operatív tár, 2. és az I/O egység címzésére b) Létezik olyan vezérlővonal (memória / I/O) mely megmutatja, hogy az adott időpillanatban a címsínen memória vagy I/O cím található c) mivel két különálló címtérről van szó, ugyanaz a cím szerepelhet memóriacímként és I/O címként is. d) Pl.: Intel esetében az eszköz 16 biten címezhető meg (65536 féle I/O cím).
39 / 121
e) azon regisztereket, amelyeken keresztül a processzor a perifériákkal kommunikálhat, I/O portnak nevezzük, amely fizikailag a vezérlőkártyán helyezkedik el -
Az I/O Port regiszterei: a) Parancs (command) regiszter, amelybe a processzor írhatja a kívánságait a perifériákhoz b) Adat (data) regiszter 1. Data input regiszter: ebből olvassa a processzor a perifériától kapott adatokat 2. Data output regiszter: ebbe írja a processzor a periféria számára küldött adatokat c) Állapot (Status) regiszter: innen olvassa a processzor a periféria üzeneteit d) Az input, output regisztereket a mai gyakorlatban összevonják: parancs állapot regiszter, adat input-output regiszter. e) Napjainkban az I/O porton belül több regiszter is található, pl.: 1. I/O egység működőképességét jelző regiszter. 2. I/O egység típusát, konfigurációs jellemzőit tároló regiszter (plug & play) 3. a nagyobb teljesítményű, összetettebb I/O egységeknél több parancs-, adat-, és állapotregiszter lehetséges
A különálló I/O címtér megvalósítása:
-
Következmény: a) Különálló utasítások szolgálnak a memória-műveletekre (pl.: load/store), és b) Különálló utasítások szolgálnak az I/O műveletekre. Pl.: Intel esetében 1. inX: a processzor olvassa be az X című I/O port adatregiszterét az AC-ba outX: a processzor beírja az AC tartalmát az X című I/O port adatregiszterébe
40 / 121
-
Értékelés: a) Előnyei: egyszerű, olcsó a megvalósítása b) Hátránya: a processzor részt vesz az I/O műveletekben szűk keresztmetszet c) az AC szűk keresztmetszetet jelent nagy tömegű I/O számára d) Pl.: Hálókártya (ISA), amely az IBM PC-nél különálló IO címtérrel rendelkezik e) Minden mai piacon lévő processzorban megtalálható
A Memóriára leképzett I/O (Memory mapped I/O) Elve: Ezt látja a processzor Processzor Ezt az I/O egység látja Jellemzői: -
A megosztás: a processzor memóriakezelő utasítással (load-store) éri el azt a közös memóriaterületet, amit a periféria is kezelhet Ebben az esetben az I/O egység használhatja a rendszersínt nagyobb az átviteli sebesség
Megvalósítása:
Értékelése: -
Jóval gyorsabb, mint a különálló I/O címtér (előny) Minden I/O esetén a processzornak egy utasítást végre kell hajtania (hátrány) Pl.: Az IBM PC-nél a képernyőkezelés
Működése: Feltétlen átvitel: - A vevő mindig vételre kész állapotban van - Nem ellenőrizzük az átvitel sikerességét - Nincs szinkronizálás a vevő és az adó között. - Pl.: LED
41 / 121
Feltételes átvitel: - Lekérdezés (wait for flag) a) A processzor beírja a kívánságát az I/O port parancsregiszterébe b) A processzor kiolvassa az I/O egység állapotregiszterének tartalmát c) Amennyiben nem „ready”, akkor vissza a (b) pontra d) Amennyiben „ready”, akkor kiolvassa az I/O egység adott adatregiszterének tartalmát, majd beírja azt az akkumulátorba (AC) Értékelése: A processzor - I/O egység közti sebességkülönbség miatt a proceszszor akár több milliószor olvassa be feleslegesen az állapotregiszter tartalmát -
Megszakításos: a) A processzor beírja a kívánságát az I/O egység parancsregiszterébe, majd elkezd mást csinálni b) Amikor az I/O egység begyűjtötte a perifériától a szükséges adatot az adatregiszterben: 1. Beállítja az állapot regiszter „ready” bitjét, és 2. Megszakításkérést küld a processzor felé c) A processzor a következő utasítás-töréspontban elkezdheti a megszakításkérés feldolgozását 1. Beolvassa az I/O egység állapotregiszterét 2. ha ott a „ready” bit be van állítva, akkor egy ennek megfelelő megszakítás-feldolgozó programot indít el; ez kiolvassa az I/O port adatregiszterét és tartalmát átviszi az AC-ba
SzA15. A közvetlen memória-hozzáférés (DMA) (fogalma; megvalósítása; működése: blokkos és cikluslopásos üzemmód) Fogalma: nagy tömegű adat gyors periféria alkalmazásával történő átvitele, a processzor közreműködése nélkül Elve:
Megvalósítása: 42 / 121
DC – decrementer I/O AR – I/O Address Register I/O DR – I/O Data Register
Működése: -
a DMA vezérlő „felprogramozása”: programozott I/O-val átvisszük a processzorból a DMA vezérlőbe az átvitelt leíró alapinformációkat: a) A DC-be beírjuk az átviendő adategységek számát b) Az I/O AR-be beírjuk az átviendő memóriablokk kezdőcímét c) Az adatátviteli egysége (byte, félszó, szó) d) Az átvitel irányát e) A résztvevő periféria címét, és a DMA vezérlő címét f) Az átvitel módját blokkos vagy cikluslopásos módon
-
Blokkos vagy (burst) üzemmód (pl.: Winchester esetén memóriacíminkrementálás) a) Mihelyt a DMA vezérlő előkészítette az első átviendő adatelemet az I/O DR-ben, akkor egy DMA request jelzést küld a processzornak. Ezzel kéri a rendszersín használati jogát! b) A processzor DMA acknowledge jelzéssel lemond a rendszersín használati jogáról c) A DMA vezérlő beírja az I/O DR tartalmát az I/O AR által kijelölt memóriacímre, majd a DC értékét csökkenti, az I/O AR értékét növeli d) Ez a ciklus addig fut, míg a DC értéke nullára nem csökken
-
Cikluslopásos (cycle stealing) átvitel
Értékelése: Míg az utasítás-töréspontban a megszakítás feldolgozással a processzorra további munka várhat, addig a DMA töréspontban a DMA vezérlő a processzor helyet dolgozhat.
43 / 121
SzA16. Az egyes alkotóelemek összerakása (egy hipotetikus számítógép tervezése és működése) Korlátaink – jellemzők: - minden utasítás két byte hosszú (256 lehetséges cím): MK
címrész
1 byte
1 byte
- két egységből áll - Processzor - Memória - utasításkészlet: - Összeadó: -
ADD 100 → AC:=AC+100. ADD [100] → AC:=AC+Memo[100] Inkrementálás AC:=AC+1. Nullázás AC:=0; Betöltés a regbe LOAD [100] → AC:=Memo[100]. Kiírás a memóriába STORE [100] → Memo[100]:=AC. Feltétlen ugrás JMP 120 → PC:=120;
PC tartalma: 100 LOAD[200] 102 ADD[201] 104 STORE[202] 106 JUMP 120
//ez egy memóriahely
//azért kettesével növekszik mert 2 byte az utasításhossz
I. Utasítás-lehívás (fetch) A PC mindig a következő végrehajtandó utasítás címét tartalmazza. Az utasítás lehívás minden utasítás esetén megegyezik. MAR PC MDR (MAR) IR MDR PC PC+1
44 / 121
II. Utasítás-végrehajtás (execution) - adatbehívás (load) DEC IR MAR DEC címrész IR MDR PC PC+1 - aritmetikai-logikai utasítás, pl. összeadás DEC IR MAR DEC címrész MDR (MAR) AC AC + MDR vagy AC AC – MDR vagy AC AC * MDR vagy AC AC / MDR - adattárolás (store) DEC MAR MDR (MAR)
IR DEC címrész AC MDR
- a feltételes ugrás DEC PC
IR DEC címrész
SzA17. Számítógép architektúrák osztályozása (Flynn-féle, illetve korszerű osztályozás) Flynn féle csoportosítás a hatvanas évekből: o Értelmezett fogalmak: SI – Single Instruction Stream: egyetlen vezérlő egyetlen utasításfolyamot bocsát ki MI – Multiple Instruction Stream: a vezérlő több, egymástól elkülönülö folyamatot bocsát ki SD – Single Data Stream: A műveletvégző egyetlen adatfolyamot hajt végre, dolgoz fel. MD – Multiple Data Stream: A műveletvégzők több adatfolyamot dolgoz fel. o A fogalmak kombinációi: Az architektúrák: SISD: szekvenciális architektúra SIMD: multiple 3D feldolgozás MISD MIMD o Értékelése: Hátránya, hogy nem mutatja Sem a párhuzamosság forrását (adat) Sem pedig a szintjét (szál/utasítás) 45 / 121
Párhuzamos architektúrák korszerű csoportosítása Adatpárhuzamos
Funkcionálisan párhuzamos
Vektorprocesszorok Asszociatív és neurális processzorok SIMD Szisztolikus architketúrák
Utasításszinten párhuzamos architektúrák
Futószalag
Szálszinten párhuzamos
Folyamatszinten párhuzamos
Szuperskalár
VLIW (Very Long Instruction Word)
Utasításszinten párhuzamos architektúrák (Instruction Level Parallelism – ILP) Az ILP architektúrák fő fejlődési útja Neumann-féle szekvenciális architektúra 1950
Futószalagos (pipeline) processzorok 1985
Szuperskalár processzorok 1990
Soros kibocsátás, soros végrehajtás
Soros kibocsátás, párhuzamos végrehajtás
Párhuzamos kibocsátás, párhuzamos végrehajtás
Szekvenciális feldolgozás
Időbeli párhuzamosság
Időbeli párhuzamosság, kibocsátásbeli párhuzamosság
Egyetlen processzorban egyetlen, nem futószalagos végrehajtó egység
Futószalagos processzor, több, nem futószalagos végrehajtó egységgel
Több futószalagos végrehajtó egységet tartalmazó VLIW és szuperskalár processzorok
Szuperskalár processzorok MM/3D kiegészítéssel 1994 Párhuzamos kibocsátás, párhuzamos végrehajtás, utasításokon belüli párhuzamosság (SIMD) Időbeli párhuzamosság, kibocsátásbeli párhuzamosság, utasításon belüli párhuzamosság MM/3D kiegészítéssel rendelkező szuperskalár processzorok
1. 1950 Neumann-féle szekvenciális architektúra: soros kibocsátás és végrehajtás 2. 1985: Futószalag processzorok: Időbeli párhuzamosság 46 / 121
Megvalósítási technikái: - Futószalag (időbeli párhuzamosság)
-
A
Többszörözés (térbeli párhuzamosság) A végrehajtó egység szakosodott, pl.: fixpontos / lebegőpontos
A futószalag processzorok teljesítményét: - hatékony memória alrendszerrel (gyorsító tárak), és - hatékony ugrás előre jelzéssel juttatták el az ezen az úton elérhető teljesítmény határáig 3. 1990: Kibocsátásbeli párhuzamosság – szuperskalár processzorok - A futószalagos végrehajtó egységeket többszörözték, tehát az időbeli párhuzamossághoz hozzáadódott a térbeli párhuzamosság - Előzmények: o Mivel a többszörözött futószalagelvű végrehajtóegységek óraciklusonként egynél több utasítást is képesek lettek végrehajtani, a soros kibocsátás szűk keresztmetszetet eredményezett. Ennek feloldására vezették be a párhuzamos kibocsátást - Fejlődési irányok: o Statikus ütemezésű VLIW processzorok (egyszerűbb) o Dinamikus ütemezésű szuperskalár processzorok (bonyolultabb) A szuperskalárok fejlődése - Első generációs szuperskalárok: o Közvetlen (nem pufferelt) utasítás-kibocsátás o Elágazásbecslés o Korszerű memória alrendszer - Második generációs szuperskalárok: o Pufferelt (közvetett) utasítás kibocsátás o Regiszter-átnevezés Ezzel az általános célú programok vonatkozásában kimerültek az ILP processzorokban rejlő teljesítménynövelési lehetőségek (ILP). 4. 1995: Utasításbeli párhuzamosság jellemzi: MM/3D kiterjesztés. - A SIMD elv alkalmazásával gyorsul a vektorgrafikus műveletvégzés
47 / 121
SzA18. Adatfüggőségek (fogalma, főbb fajtái, teljesítmény-korlátozó hatása) Az adatfüggőségek fogalma: Ha egy program két egymást követő utasítása ugyanazt a regiszter-, vagy memória operandust használja, kivéve, ha a közös operandus mindkét utasításban forrás operandus. Az adatfüggőség nyilvánvaló esete az, hogy a soron következő utasítás az előző utasítás eredményt használja forrás operandusként. Amíg egy processzor az utasításokat sorosan hajtja végre, az adatfüggőségek nem okoznak gondot. Más a helyzet, ha az utasításokat a processzor párhuzamosan dolgozza fel, mint ILP végrehajtásnál. Ilyenkor az adatfüggőségek észrevétele és megfelelő kezelése a processzor elsődleges feladatává válik. Az adatfüggőségek főbb fajtái: Adatfüggőség Jellege szerint Soros utasításSzekvenciákon Valós függőség (RAW)
Helye szerint
Ciklusban
Regiszter
Memória
Álfüggőség WAR
WAW
RAW-függőség (írást követő olvasási függőség, true dependence). Valamely utasítás forrásoperandusza felhasználja a másik utasítás eredményét i1: load r1, a // r1 <=(a) i2: add r2,r1,r1 // r2 <=(r1)+(r1) Az i2 utasítás az r1 regisztert, mint forrást használja. Így az i2 utasítás mindaddig nem hajtható végre helyesen, míg az i1 utasítás nem hajtódik végre és eredménye nem áll rendelkezésre. Ezért i2 utasítás RAW-függőségben van az i1 utasítástól. A RAW függőségek fajtái Behívási függőség: a kívánt operandust előbb be kell olvasni (r1-be) ahhoz, hogy i2 végrehatható legyen. i1: load r1, a // r1<=(a) i2: add r2,r1,r1 // r2<=(r1)+(r1) Műveleti függőség: ha a keresett operandust a megelőző utasítás aritmetikai, logikai stb. műveletek eredményeként állítja elő. i1: mul r1, r4, r5 // r1<=(r4)*(r5) i2: add r2, r1, r1 // r2<=(r1)+(r1) WAR-függőség (olvasást követő írásfüggőség, anti dependence) Valamely utasítás célregisztere megegyezik az előző utasítás forrásregiszterével i1: mul r1, r2, r3 //r1<=(r2)*(r3) i2: add r2, r4, r5 //r2<=(r4)+(r5)
48 / 121
Ebben az esetben, az i2 utasítás az r2 regiszterbe ír, míg az i1 utasítás r2 tartalmát forrásoperandusként használja. Ha bármely okból i2 előbb hajtódik végre, mint i1, akkor r2 tartalmát i2 korábban írná át, mint ahogy azt i1 olvasná, és ez nyilvánvalóan hibát eredményezne. WAW-függőség (írást követő írásfüggőség, output dependence) Valamely utasítás célregisztere megegyezik az előző utasítás célregiszterével i1: mul r1,r2,r3 // r1<=(r2)*(r3) i2: add r1,r4,r5 // r1<=(r4)+(r5) A ciklusbeli adatfüggőség: Ciklusokban megjelenő függőségek. Akkor van, ha a ciklusmag valamely utasítása olyan értékre hivatkoznak, amely valamely előző ciklus eredménye. Fontos probléma, mivel a futásidőt döntően a ciklusok összideje adja ki. (80/20-as szabály). Kezelésük a compiler feladata. Pl. do i=2, n x(i)=a(i)*x(i-1)+b enddo Elsőrendű ciklusok Ha a ciklus az őt közvetlenül megelőző ciklus eredményét használja fel. Általános formája: X(i) = a(i) * X(i-1) + b(i) Teljesítmény-korlátozó hatása - valódi adatfüggőség (RAW): ki kell várni, amíg a szükséges adat elkészül. Nem lehet kiküszöbölni. - hamis adatfüggőség (WAR, WAW): csak az ugyanarra a tároló helyre hivatkozás miatti függőség, regiszter átnevezéssel megszüntethető. Valódi adatfüggőség esetén,a teljesítménycsökkenés nem kiküszöbölhető, de csökkenthető, részlegesen feloldható utasítás várakoztatással és eredmény előreküldéssel.
SzA19. Vezérlésfüggőségek és teljesítmény korlátozó hatásuk csökkentése (vezérlésfüggőségek fogalma, teljesítmény korlátozó hatása és annak csökkentése, a feltétlen vezérlésátadás, a statikus és dinamikus elágazásbecslés, valamint a spekulatív elágazás-kezelés elve) Vezérlőfüggőség fogalma: Elágazáskor a processzor (ugrás esetén) nem az elágazás utasítás utáni utasítást olvassa be, dekódolja, stb. hanem az ugrás címén találhatót. Ehhez feltétlen ugrásnál is címet kell számítani, feltételes ugrás esetén pedig feltétel vizsgálatot is kell végezni. Mindez időbe telik és addig az egységek nem tudnak dolgozni (úgynevezett buborék keletkezik). Tehát itt is függ a feldolgozás az előző (elágazás) utasítástól. Feltétlen elágazás – késleltetett ugrás:
Probléma: MUL JMP címke
49 / 121
ADD címke SHL Mivel a JMP hatására feltétlen ugrás következik be, az ADD utasítás nem hajtódik végre. Nem az ADD hanem az SHL a következő (a JMP utáni) utasítás: - feleslegesen hívjuk le az ADD utasítást, sőt - veszélyeztetjük a regiszter-tartalmakat Kezelése: - utasításrés (buborék) segítségével - Kétfokozatú futószalag: 1 utasításrés - Négyfokozatú futószalag: 3 utasításrés. - n fokozatú futószalag: n-1 utasításrés (a futószalag miatt kell az n-1-edik eredmény a végeredményhez)
-
Statikusan történik, a compiler által o Egyszerű compiler: minden feltétlen ugrás után beszúr egy NOP-ot (kétfokozatú futószalag esetén) Értékelés: bár felesleges műveletet végzünk (egy ciklus), de már nem veszélyeztetjük a regiszter-tartalmat o Optimalizáló compiler: A compiler a JMP utasítás előtt adatmanipuláló utasításokkal kísérli meg feltölteni az utasításrést Pl.: JMP címke MUL ADD címke SHL Amennyiben az utasításrés mérete 1 akkor a feltöltés valószínűsége 85%, ha nagyobb, akkor az esély csökken Ezt a megoldást korai RISC processzorok alkalmazták Ezzel megszűnt a ciklus-veszteség is!
Elágazások gyakorisága általános célú programokban 20-30%, tudományosoknál 5-10%. Feltételes elágazások gyakorisága általános célú programoknál 20%, tudományosnál 5-10%. Általános célú programok esetén a legtöbb vizsgálat meglepően alacsony gyorsítási lehetőséget mutat, 1.2 – 3.0 értékek között, 2 körüli átlagértékkel. Tudományos programoknál a párhuzamos végrehajtásával elérhető gyorsítás mértéke valamivel nagyobb, 1.2 – 17 közötti tartományokba esik, 2-4 közötti átlagértékkel. Ezeknek az eredményeknek az az oka, hogy a vezérlésfüggőségek erőteljesen behatárolták az utasítások párhuzamos végrehajtását. A feltételes elágazások alapblokkokra tagolják a programot, és a párhuzamosítás alapblokkonként külön-külön történik (alapblokk-ütemezés). Mivel az alapblokkok viszonylag rövidek (az ütemezéshez csak kisszámú utasítás áll rendelkezésre), az adódó gyorsítás mértéke is alacsony marad. Többirányú elágazás: egy feltételes elágazás esetén mindkét lehetséges útvonalat egyidejűleg követik a feltétel kiértékeléséig, majd a feltétel kiértékelése után a helytelennek bizonyult útvonalat elvetik, és a helyes útvonalon folytatják a program végrehajtását. 50 / 121
Spekulatív elágazáskezeléssel: A processzor minden függő feltételes elágazás esetén becslést végez a feltétel kimenetéről és az utasítások feldolgozását e becslésnek megfelelően vagy a soros vagy az elágazási ágon folytatja. A feltétel kiértékelése után a processzor ellenőrzi a becslést. Ha a becslés helyes volt érvényesíti a feltételes elágazást követően végrehajtott utasításokat és folytatja a feldolgozást. Ha a becslés hibás volt a feltételesen végrehajtott utasításokat törli és a végrehajtást a helyes ágon folytatja. A statikus módszer: a becslést a processzor a tárgykód valamely jellemzőjéből származtatja pl. műveleti kódból az elágazás irányából, vagy a fordító program által adott ajánlásból. A dinamikus módszer: az elágazás történetén alapul 1 bites eljárás: a processzor elágazásonként 1 bittel írja le az elágazás történetét. Ez jelzi hogy az elágazás a legutolsó végrehajtáskor bekövetkezet –e vagy sem. 80/20-as szabály Ha az előző ugrás teljesült, akkor a következő is fog. 2 bites eljárás: ha az egyes elágazások leírásához több bit áll rendelkezésre hosszabb lesz az elágazás-történet és így a becslés várhatóan pontosabb lesz. A processzor 2 biten (telített számláló) 4 állapotú véges automata ként tartja nyilván a múltat: 1. 2. 3. 4. 5.
00: határozott soros folytatás (ugrás esetén 01, nem ugráskor 00 az új állapot) 01: gyenge soros folytatás (ugrás esetén 10, nem ugráskor 00 az új állapot) 10: gyenge elágazás (ugrás esetén 11, nem ugráskor 01 az új állapot) 11: határozott elágazás (ugrás esetén 11, nem ugráskor 10 az új állapot) Alapállapot az 11.
SzA20. Szekvenciális konzisztencia (az utasítás-feldolgozás és a kivételkezelés soros konzisztenciája, a precíz megszakítás-kezelés) Szekvenciális konzisztencia
Utasításfeldolgozás Szekvenciális konzisztenciája
Kivételkezelés Szekvenciális konzisztenciája
Utasítás-végrehajtás Memória-hozzáférés Szekvenciális konzisztenciája Konzisztenciája Memória-konzisztencia Processzor-konzisztencia
Processzor-konzisztencia Probléma: MUL
51 / 121
Kivétel-konzisztencia
ADD JZ (JMP ZERO) Ha nem figyelünk, akkor a MUL értékére reagál! - Soros feldolgozás esetén, amennyiben az ADD eredménye nulla, akkor ugrik. - Párhuzamos feldolgozás esetén várhatóan a MUL utasítás fejeződik be később, tehát biztosítani kell, hogy az ugrás továbbra is az ADD utasítás nulla eredménye esetén történjen Kivételek konzisztenciája
Erős konzisztencia
Gyenge konzisztencia
Pontatlan megszakítás-kezelés
Pontos megszakítás-kezelés
Pontatlan megszakításkezelés: Probléma: MUL ADD JZ -
-
Párhuzamos feldolgozás esetén várhatóan az ADD utasítás fejeződik be hamarabb, és lehet, hogy pl. túlcsordulással – amennyiben ezt a processzor elfogadja, akkor az állapottere elveszti korrektséget, ami csak kiegészítő eljárásokkal lehet helyreállítani. Ennek oka, hogy a korábbi MUL utasítás még definiálatlan s így felborulhat a kivételkezelés soros konzisztenciája Pl.: Power1 (1990) és Power 2 (1993) – csak a lebegőpontos utasításoknál. Az Alpha processzorok viszont minden utasításnál
Pontos megszakításkezelés - A processzor kizárólag az eredeti utasítás szekvenciának megfelelő sorrendben fogadja el a megszakításkéréseket - Ehhez általában átrendező-puffert használ, így a processzor csak akkor fogadja el a megszakításkérést, amikor az adott utasítást kiírjuk az átrendező-pufferből. Pl.: Az Intel processzorcsalád, és a mai processzorok
52 / 121
SzA21. Az utasítások időben párhuzamos feldolgozásának alapvető lehetőségei (prefetching, átlapolt utasítás végrehajtás, futószalag elvű feldolgozás, ebből adódó szűk keresztmetszetek (memória sávszélesség és elágazások) feloldása) Futószalagos feldolgozás: -
Előfeltételei (két fokozatot figyelembe véve): o Két egymástól teljesen független hardver egységet kell kialakítani o Mindkét egység feldolgozási ideje megegyezik o Az egyik egység kimenete lesz a másik bemenete Időbeli párhuzamosság (átlapolás)
Következtetés: Kellően nagy számú utasítás esetén, két hardveregység használva, elvben megduplázódik a feldolgozás sebessége -
El Bontsuk négy részre az utasítás-feldolgozási ciklust: F Fetch D-S/O Decoding – Source Operand E Execution W/B Write Back Ekkor elvben megnégyszereződik az utasítás-feldolgozás sebessége, de a teljesítmény növekedését a függőségek mérséklik!
-
Előlehívás: Az előző utasítás visszaírási fázisát és az aktuális utasítás lehívási fázisát párhuzamosítjuk
o maximum egy óraciklus nyerhetünk, amit a függőségek mérsékelnek o Példa: A hatvanas évek nagyszámítógépeinek egy része A 8086-os mikroprocesszor -
Csak a végrehajtás fázisban (futószalag-elvű kialakítás):
o Példa:
Nagyszámítógépek: a 60-as évek vektorprocesszoros gépei Mikroszámítógépek: ez a fázis kimaradt
53 / 121
-
A teljes utasítás-feldolgozási fázisban o Maximum óraciklusonként tudunk feldolgozni egy utasítás, amit a függőségek mérsékelnek o Példa: Nagyszámítógépek (1960) Mikroszámítógépek: 80286
A futószalagos feldolgozás következményei -
Memóriakezelés: o A memória lassabb, mint a processzor. Hagyományos, szekvenciális elvű 4 ciklusú utasítás:
Négyfokozatú futószalag esetén:
Míg a hagyományos szekvenciális feldolgozásnál – a példánk esetében – csak minden negyedik óraciklusban kell utasítást lehívni, addig 4 fokozatú futószalagnál már maximum óraciklusonként, amit a függőségek csökkenthetnek. o A memória-alrendszert gyorsításokkal egészítették ki o A gyorsítótárak a 80-as évek második felében terjedtek el robbanásszerűen, a futószalagos feldolgozás terjedésével párhuzamosan -
Vezérlés-függőségek: o Az okozott teljesítmény-redukció mértéke: Feltétlen vezérlésátadás esetén az ugrási rés (buborék) mérete N-1, ahol N a futószalag fokozatainak száma Feltételes vezérlésátadás esetén ehhez hozzájön a feltétel kiértékelés, az ugrási cím számítása és a bonyolultabb dekódolás is o A teljesítmény-csökkenés mérséklése: A korai gépekben hardver-kiegészítéssel lehetővé tették, hogy a dekódolás végére előálljon az ugrási cím A korai RISC gépekben késleltetett ugrást alkalmaztak A CISC gépek esetén megjelent: A fix előrejelzés: A következő végrehajtandó utasítás mindig az ugrási címen helyezkedik el Az ugrási cím előáll a dekódolási szakasz végére, majd folytatják az utasítások lehívását az ugrási címet követően A feltételes vezérlés-átadásokban a feltételek kiértékelése az execution szakasz végén következett be:
54 / 121
o Az előrejelzés helyes volt s folytatódott az utasítások feldolgozása az elkezdett irányba o Hibás volt, ekkor az elkezdett utasításokat eldobták és elkezdték a feldolgozást a helyes irányba. Pl.: 80486. Feloldatlan feltételes vezérlési függőség: amikor a feltétel nagy késleltetésű (látenciájú) (szorzás, osztás) utasításra vonatkozik, ami nem hajtódik végre a feltételes vezérlésátadási utasítás execution szakaszának végére → ezért blokkolódik a feldolgozás. Pl.: a=x/y if a=1 (várnia kell az előzőre)
SzA22. A futószalag (pipeline) elvű utasítás-végrehajtás, futószalag processzorok (a futószalag elve; jellemzői; logikai és fizikai futószalagok kiváltott szűk keresztmetszetek és feloldásuk) Futószalag (pipeline) => Gyakorlati vonatkozás:
T – egy termék elkészülésének időtartalma. t – egy egység mennyi ideig van egy munkaállomáson
Egyszerre n db készül! (t időközön-
ként egy termék)
n – futószalagon lévő egységek száma A futószalagos feldolgozás jellemzői 1. A fokozatok száma: A függőségek miatt sok utasítást kell eldobni! - Pl.: 1980, RISC I. – kétfokozatú, 1982, RISC II – háromfokozatú, napjainkban 15 – 20 fokozat 2. Újrafeldolgozás Újrafeldolgozás nélkül: Újrafeldolgozással, pl.: szorzás, osztás esetén igen hosszú lenne, ha a részeredményeket műveletenként kimentenénk a regiszterekbe. Helyette a részeredményeket az E fokozat végéről visszavezetjük az E fokozat bemenetére.
(elemi műveletek sorozata)
55 / 121
3. Operandus-előrehozás 4. Szinkron – aszinkron: napjainkban szinkron az elterjedt A futószalag logikai felépítése 1. szint: A futószalagok funkcionális meghatározása pl.:
2. szint: az egyes fokozatok által végrehajtandó elemi műveletek pl.: Fetch MAR ← PC MDR ← (MAR) IR ← (MDR) PC ← PC+1 A futószalagok fizikai felépítése -
általános fizikai felépítés 1960-80
90-es évek (itt jelenik meg a többszörözés):
56 / 121
-
fizikai megvalósítás: o Univerzális futószalag: minden logikai futószalagot egyetlen fizikai futószalagon valósítunk meg, Pl.: RISC I o Master futószalag (Pentium I.): Két futószalag közül: Az egyik minden utasítás végrehajtására alkalmas, A másik csak az egyszerűbb utasítások végrehajtására képes o Dedikált futószalag, pl.: ProwerPC 604
FX összetett: szorzás, osztás. Képes az újrafeldolgozásra. Soros konzisztencia (CO): A konzisztencia biztosítja, hogy az utasítások az eredeti sorrendjüknek megfelelően kerüljenek kiírásra. CISC – RISC futószalagok: A CISC futószalagok jellemzően hosszabbak: - A címszámító fokozat illetve, - A gyorsítótár-elérés miatt
SzA23. Első generációs (keskeny) szuperskalár processzorok áttekintése(közvetlen kibocsátás, végrehajtási modelljük, kibocsátási szűk keresztmetszetük) Jellemzői: - Közvetlen (nem pufferelt) utasítás-kibocsátás. - Statikus elágazásbecslés: o A programkód jellemzői alapján történik az írás becslése o Pontosabb, mint a fix előrejelzés - A memória-alrendszer kétszintű gyorsítótárat tartalmaz: o L1: A processzorlapkán helyezkedik el Külön adat- és utasítás-gyorsítótár egyportos o L2: Külön lapkákon helyezkedik el Közös gyorsítótár az adatok és az utasítások számára A processzorsínre csatlakozik 57 / 121
Közvetlen utasítás-kibocsátás: Megvalósítása: Utasítás-puffer
Működési alternatívák: - Az utasítások sorrendiségének tekintetében o Sorrendben történő kibocsátás: a függő utasítások blokkolják az utasításkibocsátást o Sorrenden kívül történő kibocsátás: a függő utasítások nem blokkolják az utasítás-kibocsátást -
Az utasítás-ablak feltöltése: o Az utasításokat egyenként pótoljuk o Az utasítások ablak teljes kiürülése után az egészet pótoljuk
Tipikus példa az első generációs szuperskalárra: - Sorrendben történő utasítás kibocsátás - Az utasítás-ablak teljes kiürülése után a teljes feltöltése - Az utasítás-ablak 3 db utasítást tartalma - Jelölés:
Az i-edik ciklusban egyetlen utasítás tudunk kibocsátani, mert az i2 blokkolja a további utasítás kibocsátást. Az i+1 ciklusban időközben feloldódott az i2 függősége, ezért kibocsátható mind az i2, mind pedig az i3. Az utasítás-ablak ezáltal teljesen kiürül. Az i+2 cikusban teljesen feltöltjük az utasítás-ablakot, és két független utasítást tudunk kibocsátani.
Az első generációs szuperskalár RISC processzor működési modellje
58 / 121
-
Az utasítás feldolgozási rendszert alrendszerekre tudjuk bontani, és ezeket külön vizsgálhatjuk
-
Értelmezhetjük a rendszer átbocsátó-képességét (rátáját, szélességét) A teljes utasítás-feldolgozási rendszer átbocsátási rátáját a legszűkebb keresztmetszetű alrendszer átbocsátási rátája határozza meg Az egyes alkalmazások utasítás-mixe sajátos és távol áll az utasítás feldolgozásának szempontjából ideális utasítás-mixtől → minden alkalmazásnak más az átbocsátási rátája
-
Kibocsátási szűk keresztmetszet Kezeljük a: o Behívási függőségeket gyorsítótárakkal o A vezérlés-függőségeket statikus elágazás-becsléssel Az adatfüggőségek (a valódi és álfüggőségek) okoznak főképpen teljesítménycsökkenést o A tipikus példákból láthatjuk, hogy a 3 utasítás-szélességű ablakból nem mindig sikerül kibocsátani 3 utasítást, a függőségek miatt o A gyakorlatban: RISC esetén 2-3, CISC esetén 2 utasítás feldolgozása történik óraciklusonként o Tehát az első generációs szuperskalárokat keskeny szuperskalároknak nevezzük Jellemző megvalósítások: - Viszonylag általános célú 2 db futószalag (Pentium I) - 2-4 db dedikált futószalag (Alpha 21064)
59 / 121
SzA24. Második generációs (széles) szuperskalár processzorok áttekintése(a kibocsátási szűk keresztmetszet kiküszöbölése: dimnamikus utasítás-ütemezés és regiszter-átnevezés, végrehajtási modelljük, értékelésük) Jellemzői: -
Dinamikus utasítás-ütemezés Regiszter-átnevezés
Dinamikus utasítás-ütemezés (részei): -
Pufferelt utasítás-kibocsátás Sorrenden kívüli utasítás-végrehajtás
Megvalósítása:
Működés: - Kibocsátási puffereket alakítottak ki - A kibocsátás során nem történik semmiféle függőség-ellenőrzés (adat, vezérlés, erőforrásfüggőséget sem)
- A várakoztató-állomásokban addig tartózkodnak az utasítások, amíg függetlenné nem válnak - Minden óraciklusban ellenőrzésre kerül a várakoztató állomásokban levő összes utasítás függőség szempontjából, és az összes független utasítás kiküldésre kerül, mégpedig sorrenden kívül. - Az utasításablak több tucat utasítást tartalmaz → rendkívül kiszélesedett, azaz eltűnt a kibocsátási szűk keresztmetszet
60 / 121
Regiszter-átnevezés: - Lényege: minden eredmény-regiszter átnevezésre kerül. Kezeli ennek következményeit is: o Amennyiben később forrásregiszterként hivatkozunk rá, akkor az átnevezési regisztert fogja használni o Amikor egy utasítás-feldolgozás a befejeződött, akkor átmásolja az átnevezési regiszter tartalmát az architekturális regisztertárba, és felszabadítja az átnevezés regisztert. o Hibás elágazásbecslés esetén az átnevezési regiszterek alapján történik a visszajátszás; kezeli a kivételeket is. - A második generációs szuperskalároknál jelent meg, pl.: PowerPC 603 (1993), PentiumPro (1995), Alpha 21264 (1998) A második generációs szuperskalár RISC gépek végrehajtási modellje
Működése: - Az első rész feladata az utasításablak feltöltése - A forrás-operandusok lehívása architektúrától függően lehet: o kibocsátáshoz kötött vagy o kiküldéshez kötött - A kiküldés során a független utasításokat sorrenden kívül tölti ki - A végrehajtás során az átnevezési regiszterekbe kerülnek az eredmények - Visszaíráskor az eredmények az utasítások eredeti sorrendjében másolódnak át az átnevezési regiszterekből az architekturális regiszterekbe Sávszélesség: - Kibocsátás ráta: 4 utasítás / ciklus - Kiküldési ráta: 5-8 utasítás / ciklus - Végrehajtási ráta: még magasabb Oka: - Bizonyos végrehajtó egységek nem képesek minden ciklusban utasítást fogadni (a bonyolultabb utasítások miatt) - Az utasítás-mix az egyes alkalmazásoknál nem egyezik meg a végrehajtható egységek eloszlásával
61 / 121
CISC gépek: - A CISC processzorok belsejében RISC magot alakítottak ki - A CISC utasítások lefordítják RISC utasításokká - Egy CISC utasításból átlagosan 1,2-1,5 RISC utasítás keletkezik. Mivel a bonyolult CISC utasításokat elhagyták, ezért ezeket valahogy helyettesíteni kell. Pl.: for ciklus esetén (bonyolult utasítás): egy if, egy inkrementálás, egy goto és egy ciklus vége utasítás szükséges. - Óraciklusonként ~3 CISC utasítás kerül lehívásra, tehát 3 x (1,2-1,5), azaz ~4 db RISC utasítás kerül kibocsátásra Adatfolyam modell: - Mivel a függőségeket kezeljük csak műveleti és a behívási függőség feloldását kell kivárni - Mihelyt a bemenő operandusok rendelkezésre állnak, a kiküldés elvben bekövetkezhet (erőforrás-függőség lehetséges), s a végrehajtó egység azonnal működésbe lép (adatmeghajtott elv)
SzA25. Harmadik generációs szuperskalár processzorok: az utasításon belüli párhuzamos végrehajtás áttekintése (három-operandusú utasítások, SIMD-utasítások, VLIW-architektúrák) Utasításon belüli párhuzamosság
Duál-műveletes utasítások
SIMD
Multimédia (fixpontos)
VLIW
3D (lebegőpontos)
A logikai architektúra kiterjesztése
Teljesen új logikai architektúra
Duál műveletes utasítások: - Fogalma: egyetlen utasításban kettő darab művelet - Pl.: X=a*b+c (A szorzatok eredményét c-ben felgyűjtjük) LOAD/OP (Betöltés után azonnal elvégzi a műveletet is) - A 70-es években jelentek meg - Numerikus feldolgozásoknál használják, de az általános célúaknál nem jellemző SIMD: - Fogalma: egyetlen utasításban ugyanazon művelet több operanduson van értelmezve - Fajtái: Fixpontos: ~ 2-8-szoros gyorsítás Lebegőpontos: 2-4-szeres gyorsítás - Ez képezi a processzorok fejlődésének fő irányvonalát: ~ 1994-től - Sajátosságai: o A logikai architektúra módosítást igényel o Az L2 gyorsítótár felkerül a processzor lapkájára o A rendszer-architektúra is módosul: megjelenik az AGP (Accelerated Graphics Port)
62 / 121
VLIW: - Fogalma: egyetlen utasításban sok műveletet írunk elő - Korai VLIW-ek: o Igen hosszú utasítások, pl.: a TRACE VLIW processzor esetén: 256-1024 bites utasítások 7-28 műveletet tartalmaz o A statikus ütemezés során a compiler gondoskodik a függőségek feloldásáról o A compiler szoros kapcsolatban áll a fizikai architektúrával, pl.: ismernie kell a végrehajtó egységek számát, azok késleltetését, a behívási késleltetést, stb. o A 80-as évek első felében papíron, második felében a piacon is megjelentek (pl.: TRACE) o Gyorsan leállt a forgalmazásuk, mivel a compiler túlságosan kötődött a fizikai architektúrához -
Mai VLIW-ek: o A compilerek fejlődtek, ezért a 90-es évek végén újra megjelentek o Szerverek piaca: INTEL Itanium: 6 db végrehajtó egységgel rendelkezik A szuperskalárok 4 db / ciklus feldolgozási rátáját kívánják a 6 db végrehajtó egységgel túlszárnyalni o Hordozható gépek piaca: a Transmeta cég processzorai: A statikus ütemezés egyszerűbb processzort eredményez → kisebb áramfogyasztás (2W DVD-lejátszás közben!) Fajtái: 4 db végrehajtó egységgel 8 db végrehajtó egységgel
63 / 121
III. ILP processzorok – kiemelt kérdések SzA26. Az ILP-processzorok teljesítményviszonyai (az abszolút teljesítmény összetevői, a fixpontos teljesítmény, a processzor hatékonyság és az órafrekvencia időbeni fejlődése a 2. generációs szuperskalárokig ill. azt követően) Az abszolút teljesítményt az egy másodperc alatt sikeresen végrehajtott utasítások száma jelenti: Pai = fc * IPCeff * [OPI] órafrekvencia utasítások száma/ciklus műveletek száma/utasítás (csak SIMD)
fc: IPC: OPI:
P = fc * 1/nCPI * nIL * nOPI * η 2 lehívás közt eltelt idő átlaga (kibocsátás) párhuzamos kibocsátás tényezője műveletek száma/utasítás (csak SIMD) spekulatív elágazásbecslésből adódó végrehajtás hatékonysága
nCPI: nIL: nOPI: η:
Az utóbbi 4 tényező az ISA és a mikroarchitektúra hatékonyságát jelenti. Az órajel technológiafüggő. A fixpontos teljesítmény fejlődése x86 Intel processzorok esetében: SPECint92
Saturation
10000
* **Prescott (2M)
P4/3200 * * Prescott (1M) P4/3060 * Northwood B * **P4/2800 P4/2400 P4/2000 * *P4/2200 P4/1500 * * P4/1700
5000 2000 PIII/600
1000
PIII/1000
* **PIII/500 * * PII/450
PII/400 PII/300
500 ~ 100*/10 years
200 100
Pentium/66
50 20 486/25
10
*
*
* Pentium/120
*
* 486-DX4/100 * 486-DX2/66
*486-DX2/50
* * 386/33
386/20
5
386/16 80286/12
2 80286/10
1
8088/8
0.5 0.2
* Pentium Pro/200 * * * Pentium/166
Pentium/200 Pentium/133 Pentium/100 *
486/50 486/33
*
*
*
*
386/25
*
*
*
* 8088/5 Year 79
1980 81
82
83
84
85
86
87
88
89 1990
91
92
93
94
64 / 121
95
96
97
98
99 2000 01
02
03
04
05
Az Intel x86 processzorok órafrekvenciájának változása: fc (MHz)
Saturation
5000 * * * * * * * * *
Pe ntium 4
2000
* *
~100*/10ye ars
1000
*
Pe ntium III* *
500
*
**
Pe ntium II * * *
200
*
Pe ntium 486-DX4 **
100
*
~10*/10ye ars
50
486-DX2 *
486 386
20
*
286
10
*
*
*
*
Pe ntium Pro
*
*
* *
8088 * *
5
* *
*
*
2 1 78 79 1980 81 82
83 84 85 86 87 88 89 1990 91 92 93 94 95 96 97 98 99 2000 01 02
03 04 05
Year
Year of first volume shipment
Az x86 processzorok hatékonyságának fejlődése (az előbbi 2 alapján): SPECint92/f c
~ constant
Pentium Pro (2. gen. szuperscalars) 1 0.5 ~ 10x/ 10 years 0.2 0.1 0.05
0.02 0.01
~ ~ 78
Year 79 1980 81
82
83
84
85
86
87
88
89 1990 91
92
65 / 121
93
94
95
96
97
98
99 2000 01
02
03
04
05
SzA27. Az ILP-processzorok hatékonysági kérdései (a hatékonyság forrásának kimerülése, a hatékonyság stagnálásának okai, kiváltott fejlődési főirányok) A hatékonyságot időrendben az alábbi tényezőkkel növelték: Szóhossz növelése: 8/16 bit 32 bit (286 386DX) Időbeli párhuzamosság bevezetése, növelése: 1. és 2. gen. futószalag processzorok (386 DX, 486 DX) Kibocsátási párhuzamosság bevezetése, növelése: 1. és 2. gen. szuperskalárok (Pentium) Összegezve tehát minden fejlődési lépcső a párhuzamosság egy dimenziójának bevezetéséből, a bevezetésből adódó feldolgozási szűk keresztmetszetek megszüntetése érdekében kiegészítő technikák kifejlesztéséből és alkalmazásából, valamint az adott dimenzióban rejlő párhuzamosság kimerüléséből áll. A 2. generációs szuperskalárokkal kezdődően általános célú alkalmazásokban a processzor hatékonyságának extenzív növelési forrásai kimerültek. Az ilyen utasításokban rejlő párhuzamosságot teljes mértékben kihasználták. A hatékonyság stagnált. A hatékonyság két tényezőjének javítása közül lehetett választani. A kiváltott 2 fejlődési főirány: 1. Az órajelfrekvencia erőteljes (~100* / 10 év) növelése. 2. Új ISA, mikroarchitektúra bevezetése: VLIW, EPIC
SzA28. Az ILP-processzorok fejlődésének erőltetett ütemű órafrekvencia növelési szakasza, ennek következményei (a hatékonysági, disszipációs és skew problémák, kiváltott fejlesztési irányok) Általános célú alkalmazásokban a 2. generációs szuperskalárok kimerítették a lehetséges párhuzamosságot. Ettől kezdődően egészen az egyik fő fejlődési irányként a 2004-es telítettségi pontig az órajelet 10 évenként 100-szorosára növelték. Fokozatosan csökkent a vonalvastagság (évente 0.7-szeresére) és nőtt a futószalag hossza. Ennek hatásai: 1. RISC processzorok (MIPS R, Alpha, HP PA 8000, POWER PC) kiszorulása, hiszen már eleve magas órajelen működtek, nem lehetett ezt az ütemet tartani ezeknél 2. Fejlődési korlátok jelentek meg. Hatékonysági korlát: a processzor és a memória alrendszer közötti táguló sebességolló miatt. A memóriák relatív késleltetési ideje, relatív átviteli rátája és a processzorbusz sebessége mind hozzájárult ahhoz, hogy 100-200 feldolgozási ciklus is „kieshet”. A memóriák frekvenciáját nem lehetett olyan mértékben növelni, mint a processzorokét. Ezt különféle kiegészítő technikákkal (L2 cache, FSB növelés, memória-alrendszer javítása) megpróbálták orvosolni, de csak átmeneti sikerrel. Egyre kevesebb teljesítménytöbblet jelentkezett az órajel drasztikus emelése mellett is. Disszipációs korlát: D = A * C * V * fc + V * Ileak (aktív kapuk részaránya, a kapuk összesített kapacitása, tápfeszültség, órafrekvencia, zárt tranzisztoron átfolyó szivárgási áram). Mértékegysége W/cm2. A korlát az egységnyi területen leadható hőmennyiségre vonatkozik.
66 / 121
D/die area (W/cm2) 100
Prescott
*
0.09μ
* 50
Northwood
0.13μ
* 0.13μ * Willamette *** * *0.18μ
Tualatin
0.25μ
Katmai Klamath
20 P54CS
*
10
** 0.35μ
* * *
*
0.35μ
0.25μ
* Deshutes
*
0.18μ
Coppermine
*
*
P54C P5
5
*
*
0.6μ
0.8μ
*
*
0.35μ
P6
* 0.6μ
2 20
50
100
200
500
1000
2000
5000
f c (MHz)
E korlát miatt előtérbe kerültek a disszipációt csökkentő technikák, az ISA hatékonyságának növelése. Háttérbe szorult az órafrekvencia növelése. Megjelent a VLIW/EPIC architektúra, mely teljesen új mikroarchitektúrát jelentett. Átmenetileg alkalmazták a magfeszültség csökkentését, a nem aktív feldolgozóegységek szüneteltetését illetve a „forró pontok” megkeresését és pihentetését, valamint a hatékonyabb hűtést lehetővé tevő BTX szabványú alaplapok bevezetését. Párhuzamos buszok frekvenciakorlátja: az ilyen buszoknál a nagy órafrekvenciák alkalmazásakor felléphet a skew, azaz egy-egy vezetékben eltérő idők alatt haladnak át a jelek az eltérő kapacitív jellemzők miatt. Az órejel növekedésével a jelmeredekségi eltérések, áthallások az impulzushoz viszonyítva egyre jelentősebbek. Ez szinkronizációs problémákhoz vezet. Átmeneti megoldásként a vezetékeket eltérő hosszúságuakra készítették el. Végleges megoldást azonban az új, soros buszok bevezetése jelentette: AMD Hypertransport busz, USB, SATA, SAS, PCI-Express. Ezek a soros buszok bitenként két vezetéket használva differenciális, kis amplitúdó váltású (néhány száz mV) jelátvitelt valósítanak meg. A jelentkező fejlesztési korlátok végső következménye egy ún. telítettségi állapot lett 2004ben. Ekkor lépett előtérbe a TLP, azaz a szálszintű párhuzamosítás (SMT) illetve a többmagos processzorok használata (SMP): -
-
-
a fejlesztések színtere az utasítás szintről a szálszintre tevődött át, a hosszú futószalagokra alapozó magas órafrekvenciájú processzorokat leváltják a közepes (10-15) fokozatszámú, lassabb de hatékonyabb mikroarchitektúrájú többmagos processzorok és a párhuzamos processzorbuszokat egyrészt a sebességkorlátok elérése miatt míg másrészt a párhuzamos periféria buszokat a ráfordítás csökkentése érdekében kiszorítják a gyors, egyszerűen skálázható soros buszok, végül a nagy sávszélesség igényű videó alkalmazások ill. az Internet használat rohamos elterjedésével várható, hogy a hagyományos adatforgalmak kiszolgálására tervezett jelenlegi rendszerarchitektúrákban is alapvető változások következnek be a közeljövőben.
67 / 121
SzA29. A VLIW (EPIC) architektúrák (értelmezésük, jellemző megvalósításuk, hatékonyságuk, fejlődésük) Teljesen új ISA-t és mikroarchitektúrát jelent. A processzorok hatékonyságának stagnálása által kiváltott egyik fejlődési főirány, mely a hatékonyság növelését célozta. A VLIW jelentése: very large instruction word, azaz igen hosszú utasításszó. Egy-egy részutasítás 32 bites, a teljes utasításhossz n*32 bit. Ideális esetben illetve valós esetben az alábbiak szerint alakul az utasítások párhuzamos kibocsátása:
Az alábbi ábra szemlélteti a hagyományos szuperskalároktól eltérő működést.
Szuperskalár feldolgozás elve
VLIW feldolgozás elve utasítások független utasítások (statikus függőség kezelés)
függő utasítások
dinamikus függőség kezelés F E
F E
F E
F E
Processzor
F E
F E Processzor
VLIW: Very Large Instruction Word
Lényege, hogy egyetlen utasításban sok műveletet írunk elő. A korai VLIW-ekben (80-as évek) igen hosszú utasítások voltak (256-1024 bites utasításhossz, 7-28 művelet utasításonként). Párhuzamos utsaításkibocsátású architektúra, akárcsak a szuperskalároknál. A statikus ütemezés során a compiler gondoskodik a függőségek feloldásáról, tehát a végrehajtó egységekhez (10-30 db) már egymástól és időben átlapolva is független utasítások kerülnek. Ebből következik, hogy a compilernek ismernie kell a fizikai architektúrát (VE-k száma, késleltetés stb.), azonban kisebb komplexitásúak lettek a magok. A VLIW utasítások részleges kitöltöttsége további hátrány (rossz kihasználtságú tártér és sávszélesség). Emiatt csak elszigetelten jelentek meg a piacon: pl. Transmeta cég hordozható eszközei. Az EPIC (Explicitly Parallel Instruction Computer) elnevezés 1997-ben született meg, lényegében egy továbbfejlesztett VLIW-ről van szó, melyben a compiler expliciten támogatja a végrehajtást: elágazásbecslés használata, explicit cache utasítások.
68 / 121
Bekerült a SIMD feldolgozás, és DLP-ről (data level parallelism) beszélhetünk. Az új generációs VLIW-ek sorában a szerverpiacon elsőként 2001-ben az IA-64 architektúrájú Intel Itanium jelent meg. Hatékonyságuk és a magok fejlődése az alábbi ábrából látszik. SPECint_base2000/fc Itanium 2
1.0
128-bit FSB/400 MT/s
0.9
* *
*
0.8
* 256K L2/9M L3/DDR 266 256K L2/6M L3/DDR 266
* * 256K L2/3M L3/DDR 266
0.7 0.6
Itanium 64-bit FSB/266 MT/s
0.5
* 96K L2/4M dir. L3 0.4
* 96K L2/2M dir. L3
~ ~
~ ~
500
f c (MHz) 1000
1500
2000
Az adatpárhuzamos feldolgozás bevezetésével elérhető teljesítménynövekedés korlátai: 2. gen. szuperskalároknál az ILP kimerülése általános célú alkalmazásokban 3. gen. szuperskalároknál az ILP kimerülése a dedikált (MM, 3D) alkalmazásokban is A várakozás az volt, hogy 2002-re az Itanium processzorok nagymértékben átveszik az x86 architektúrától a piaci részesedést, 2004-ig pedig megvalósul a teljes átállás. Ez nem következett be, mert az AMD előállt az x86-64 architektúrával, mely a jelenlegivel kompatibilis volt, mégis hatékonyabb. Nem kellett újraírni az alkalmazásokat.
SzA30. A szuperskalár processzorok tervezési tere (a tervezési tér főbb komponensei, értelmezésük, jellemző megvalósítások) Tervezési tér
Utasítás lehívás
Párhuzamos dekodolás
Szuperskalár kibocsátás
Párhuzamos végrehajtás
Szekvenciális konzisztecia
1. Utasítás lehívás: feladata a következő utasítás címének átadása az utasítás cache-nek 2. Dekódolás: minden órajelben több utasítást bocsát ki egyszerre, ezért párhuzamos dekódolásra van szükség 3. Szuperskalár utasítás kibocsátás: Magasabb utasítás kibocsátási ráta nagyobb teljesítményt eredményez, de egyben erősíti a vezérlési és adatfüggőségek teljesítmény-visszafogó hatását is. Ennek mérséklésére különböző kiküldési politikákat (dispatch policy) alkalmaznak, mint például shelving, regiszter átnevezés, spekulatív elágazás kezelés. 4. Párhuzamos végrehajtás: a szuperskalár feldolgozás alapfeltétele. 5. Szekvenciális konzisztencia biztosítása: az utasítások párhuzamosan hajtódnak végre, de szekvenciális logika kell látszódjon kívülről (a programkód egy sorozata adja az elvárt eredményt). A kivételek kezelésénél is biztosítani kell.
69 / 121
I$ Utasítás cache
IB Utasítás buffer
D/F Dekódolás Függőség kezelés
FX
FX
FP
Programtér
L/S Load/Store
R Regiszter M Memória
Szekvenciális konzisztencia Utasítások logikája szekvenciális
Az utasítás lehívásakor az előlehívást alkalmazzák: az előző utasítás visszaírási fázisát és az aktuális utasítás lehívási fázisát párhuzamosítják HW támogatással.
+
PC
I$
IB
Utasítás lehívás elágazásokkal 70 / 121
+
nincs elágazás IFA IFA – Instruction Fetch Address BTA – Brench Target Address
I$
BTA
IB
Decode
elágazás
Feltételes elágazás: Csak a végrehajtási szakaszon értékelődik ki a feltétel.
F
D
E
W/B
Feltétel kiértékelése BTA számítása F
A párhuzamos dekódolás során a processzor meghatározza az utasítások kezdetét és végét, az elődekódolás meghatározza, hol vannak az utasításon belül a prefix tagok, a kiegészítő utasításokat pedig hozzáfűzi az utasításhoz. Az utasításkibocsátás során lehet közvetlen (1.gen) vagy bufferelt (2. gen) kibocsátás. Ha rossz a stratégia, az kibocsátási blokkoláshoz vezet. Ezt feloldandó alkalmazzák: az utasítás várakoztatást (reservation station), a regiszter-átnevezést és a spekulatív elágazásbecslést. +
I F A R
IIFA
N
Y I$
Branch fetch Branch prediction
IB
Further processing
71 / 121
BTA
Az utasításkibocsátás tervezési tere: Utasítások kiküldési módja
Kiküldési politika Kiküldési sorrend
Kiküldési ráta
Döntési szabály Kiválasztási szabály
Üres várakoztató állomás kezelése
Az operandusok rendelkezésre állása megállapításának módja
Sorrendben történő Részben sorrenden Sorrenden kívüli kívüli kiküldés kiküldés kiküldés
Kiküldési politika: milyen módon válasszuk ki az utasítást a végrehajtáshoz, és hogyan kezelje a kiküldési blokkolást. Kiküldési ráta: definiálja az egy ciklusban a várakozó pufferekből kiküldhető utasítások számát Operandusok rendelkezésre állásának megállapítási módja: az utasítások kiküldhetők-e járulékos késés nélkül vagy sem. Üres várakoztató puffer kezelése: el kell döntenünk, hogy egy üres várakozó állomás elkerülhető-e Kiküldési szabályok értelmezése: Kiválasztási szabály. Ez határozza meg, hogy a várakoztató pufferekben tárolt utasítások mikor minősülnek végrehajthatónak. Amennyiben a processzor fejlett utasítás-kibocsátást alkalmaz (regiszterátnevezés + spekulatív elágazás-kezelés) ennek eldöntése arra a vizsgálatra korlátozódik, hogy az utasítás forrásoperandusai rendelkezésre állnak-e. Döntési szabályra akkor van szükség, ha a továbbíthatónál több alkalmas utasítás áll rendelkezésre. Általánosságban elmondhatjuk, hogy ahány szabad vezérlőegységhez kapcsolódik egy várakoztató puffer, annyi végrehajtható utasítás előállítása jelent optimális működést ciklusonként, hiszen ekkor biztosítható az, hogy minden ciklusban, minden vezérlőegység valamilyen hasznos munkát végezzen. Ha ennél több végrehajtható utasítás szerepel a pufferben, akkor dönt a döntési szabály. A legtöbb processzor ilyenkor egy nagyon egyszerű döntést hoz: a „legidősebb” utasítást küldi ki. Kiküldési sorrend alternatívái: A kiküldési sorrend szabja meg azt, hogy egy nem végrehajtható utasítás megakadályozza-e a sorban következő végrehajtható utasítás vagy utasítások kiküldését. Ha sorrendben (in-order) küldi ki az utasításokat, egy nem végrehajtható utasítás a pufferben meggátolja a soron következő utasítást vagy utasításokat a kiküldésben, vagyis blokkolódás jön létre. Ez nyilván csökkenti a teljesítményt, ugyanakkor csökkenti a komplexitást is, mivel elegendő csupán a várakoztató puffer utolsó elemét leellenőrizni. Ha részben sorrenden kívül (partially out-of-order) küldi ki az utasítást, akkor kismértékű teljesítménynövekedés érhető el. Ez jelentheti azt is, hogy a sorrenden kívüli kiküldést csak bizonyos típusú vezérlőegységeknél alkalmazza, de azt is jelentheti, hogy csak egy nem kiküldhető utasítást tud átlépni. Például a Power2 csak a lebegőpontos utasításokat várakoztatja, és kiküldéskor csak egyetlen nem végrehajtható lebegőpontos utasítást tud átlépni. Ha sorrenden kívül (out-of-order) küldi ki az utasításokat, mely a leghatékonyabb eljárás egyike a három közül. Itt egy nem végrehajtható utasítás nem blokkolja a várakoztató pufferben sorban következő végrehajtható utasítások kiküldését. A legkorszerűbb processzorok ezt a
72 / 121
kiküldési módot alkalmazzák, bár az IBM360/91 is implementálta már. Ennek oka egyszerű: a mai architektúrák többnyire csoportos vagy központi várakoztató puffereket alkalmaznak, melyeknél több vezérlőegységhez egy várakoztató puffer kapcsolódik. Ilyenkor, ha a blokkoló sorrendben kiküldést alkalmazná a processzor, az jelentős teljesítménycsökkenéshez vezetne. Trendek és példák: Egyértelműen a sorrenden kívüli kiküldés felé mutat. A csoportos vagy központi várakoztató állomást használó processzoroknál ez szinte követelmény, különben rendkívüli teljesítménycsökkenés következne be. Sorrendi kiküldés: IBM Power1, PowerPC 603. Részben sorrendi kiküldés: IBM Power2, PowerPC 604. Sorrenden kívüli kiküldés: Pentium Pro, R10000. A soros konzisztencia megvalósítását a Reorder Bufferrel (ROB) valósítják meg.
Logikailag 2 koncentrikus körből áll, a külsőn vannak az utasítások azonosítói, a belsőn a végrehajtási állapotuk (kiküldve, végrehajtás alatt, végrehajtva). 2 mutató, egy beírási és egy kiírási vezérli a működést. Az egymást követő utasítások ROB-beli azonosítóit beírja a beírási pointer által mutatott helyhez. A kiírási pointernél történik a programállapot módosítása. Ez a pointer addig vár, amíg a soron következő utasítás állapota „végrehajtott” nem lesz.
73 / 121
SzA31. Szuperskalár processzorok dekódolási eljárásai I. (az eljárások áttekintése, az egyszerű dekódolás, az elődekódolás, RISC/CISC konverzióval bővített dekódolás) CISC
RISC
4Byte/utasítás
- nem lehet tudni, hogy hol kezdődik a következő utasítás - végig kell menni az egészen -utasítás hosszt felismerni
1.
Straightforward parallel decoding. Az 1. generációs RISC szuperskalárok alkalmazták. Egyidőben 3 utasítást dekódolt különösebb vizsgálatok nélkül.
2.
Predecoding. A 2. generációs szuperskalároktól használatos. Mivel sok függőséget kellett vizsgálni, gyorsítani kellett a dekódolást. A dekódolási feladatok egy részét a processzor már aközben végrehajtja, amikor az utasításokat az L2 cache-ből vagy a memóriából az L1 cache-be írja. Ennek szélessége jellemzően 128 vagy 256 bit ciklusonként. Az elődekóder 4-7 bitet fűz hozzá az utasításokhoz. Ebben kódolják például az utasítás típusát, erőforrás-igényét, elősegítve ezzel a dekódolást. 2-3 év alatt terjedt el, az AMD K8 is használta.
3.
Decoding with CISC/RISC conversion. A CISC utasítássorozatot először belső utasításokra tördeli, ezt a RISC mag feldolgozza, végül visszalakítják az eredményt. A szekvenciális konzisztenciát biztosító ROB bevárja, amíg az 1 CISC egységet alkotó 3 RISC mindegyike kiszámítódik, és csak ekkor kerül sor a programtér módosítására. Megjelenése a 2. generációs szuperskalároktól. Két megközelítése van: Mikroutasítások: load, store, reg-reg, elemi utasítások (Intel PPRO), lásd SzA36. Makroutasítások: load vagy store + aritmetikai, logikai utasítások (AMD), lásd ábra.
Kizáró jelleggel vagy a komplex dekóder működik, vagy a MikroROM. Végeredményben 3 makroutasítás jön ki. Ezek szélesebbek, mint 3 mikroutasítás.
74 / 121
4.
Using a trace cache: Jellemzően az Intel P4-ben, vagyis egy harmadik generációs CISC rendszerben jelent meg.
5.
Decoding with instruction grouping. Az Intel Core a CISC utasítások csoportosításával, míg a Power 4,5 a RISC utasítások csoportba foglalásával működik.
SzA32. Szuperskalár processzorok dekódolási eljárásai II. (az eljárások áttekintése, trace-cachek, ill. utasítás csoportosítást használó eljárások) Trace cache: Lényege az a felismerés, hogy az utasítások kb. 80%-át a ciklusok végrehajtása jelenti, így azonos utasítások folyamatos lehívásával és dekódolásával felesleges műveleteket végzünk. Ötlet: a dekódolt utasítások tárolása, a ciklusok végrehajtásának gyorsítása ezek trace cache-ből történő közvetlen lehívásával. Így nem kell az ilyen utasításokat egyesével dekódolni. Utasítás csoportosítást használó eljárások: 1. RISC utasítások csoportosítása: Power4,5
Dispatch instruction groups in-order, forward individual instructions to the issue queues
Instruction groups
Issue queues
Execution units
Execute individual instructions ooo
EU
EU
ROB
Retire isntruction groups in-order, modify program state
Retire
Csoportképzési szabályok: - az első a legrégebbi (i0) - az ötödik csak elágazás lehet Ha ez nem így alakul, a közbenső utasításokat NOP-pal feltöltik. Csak 1 elágazás lehet 1 csoportban. Előnyei: - közbülső állapotok kezelése elmaradhat, ha az eseményeket csak csoportok végén (csoportok között) engedik meg - egyszerűbb szerkezet
75 / 121
2. CISC utasítások csoportosítása: Intel Pentium-M, Core Macro-op fusion: a dekóderek képesek 2 db x86 utasítás kombinálására bizonyos feltételek mellett. A speciális esetek kombinálhatók, egybe vonhatók: - compare & test utasítások + elágazások - x86 jump Ezáltal kb. 10%-kal kevesebb utasítással kell foglalkozni, és a sorrenden kívüli végrehajtás is hatékonyabb, mert az azonos méretű utasításablakba több utasítás fér el.
SzA33. Szuperskalár processzorok elágazásbecslési eljárásai I. (utasítás gyakoriságok, növekvő futószalaghossz miatti elvárások, az elágazásbecslés alapkérdései; az elágazás irányának és címének becslése) A szuperskalár processzorok utasításainak gyakoriságai általános célú programokban dinamikusan, sztochasztikusan változnak az alábbi értékek körül (elméleti és futás közbeni): Fixpontos: ~40% Elágazás: ~20% Load/Store: ~30-40% Lebegőpontos: ~0-5%
Feltétlen elágazás 10%, feltételes elágazás 10-20% Fixpontos műveletek: 30-40% Store 10%, Load 20% Lebegőpontos 0-5%
Az elágazás 3-féle lehet: ugrás, átlépés, szökdécselés. Az órajel drasztikus növelése maga után vonta a futószalag-fokozatok számának emelkedését, másrészt a csíkszélesség csökkenését. Míg a Pentium 1-nél ez 5 volt, addig a Pentium Pro-nál 10-12, A pentium 4-nél 20, a P4 Prescottnál már 40. A legnagyobb órafrekvenciát a legnagyobb időigényű szakasz határozza meg. Tekintsünk egy relatíve hosszú futószalagot: F1 F2 D1 D2 E1 E2 Csak a végrehajtási fázisban dől el például a feltételes elágazások esetében, hogy valóban a szükséges utasítás irányban indul-e el a feldolgozás. Tévedés esetén 4 hosszú buborék keletkezik. A futószalag hosszának növekedésével egyenes arányban nő a hiba esetén eldobandó fokozatok száma, ezáltal a teljesítmény csökken. Erős igény jelentkezett az elágazásbecslés pontosságának növelésére. Az elágazásbecslés alapkérdései és tervezési tere az alábbi elemekből áll: - becslés az elágazás irányára - becslés az elágazás célcímére (BTA – branch target address) - szubrutin-visszahívások becslése (RAS – return address stack) - ciklusokban megjelenő elágazások becslése - speciális funkciók: pl. mi történjen, ha a becslés helytelen volt; hogyan kezeljük a többszörös elágazásokat
76 / 121
SzA34. Szuperskalár processzorok elágazásbecslési eljárásai II. (az elágazás irányának becslésére szolgáló lokális és globális eljárások áttekintése és részletezése) Elágazás irányának becslése Globális 2 level
Lokális
1 level
Statikus
Compiler
Mikroarchitektúra
2 level
Shift regiszter
GSelect
GShare
Dinamikus
1 bites
2 bites
Lokális eljárásról beszélünk, ha a becslés csak az adott elágazásra vonatkozó információk alapján történik (1 szintes). Globális az eljárás, ha a programokban az elágazásokhoz több út is vezethet. Ekkor az úttól függően más-más lehet a becslés eredménye (2 szintes). Lokális becslés Statikus A programjellemzők alapján történik
Compiler Kódolja az utasításban. Compiler hints (utalások felülír, felülbírál)
Dinamikus A becsléstörténet alapján határozza meg az elágazás irányát. (1 bites, 2 bites)
Mikroarchitektúra Vizsgálja az elágazás D (displacement) értékét If D<0 D>0 Vizsgálja az elágazás minőségét
1 bites
2 bites
Utolsó végrehajtás eredményét tárolják a bitben.
Smith diagramm Telítéses számláló Y
N
N
00
N
01 Y
N
10 Y
11 Y
Kezdőértéket kell neki adni
77 / 121
Statikus: Programjellemzők alapján, vagy a mikroarchitektúra bizonyos elemei alapján (pl. eltolás értéke alapján). Utóbbinál ha D > 0 nem ugrik, D < 0 esetén ugrik. A Pentium proceszszorok például – ha dinamikus becslés nincs – ennek értéke alapján döntenek. Compiler hints: Az utasítás 1 bitje ki van jelölve, és ennek értékétől függően ugrik. Ez általában magasabb prioritású a többinél, a többi eljárást felülírhatja. Ez is statikus. Dinamikus: az eddigi becsléstörténet alapján születik meg a döntés az adott szakaszban. 1 bites: az utolsó végrehajtás eredménye tárolódik, döntés ez alapján. 2 bites: Smith-diagram, telítéses számláló. Az utolsó 2 végrehajtás eredménye alapján döntés. Az MSB dönt: ha 1, ugrik, ha 0, nem ugrik. Megvalósításához ugrási címenként egy 4 bites számlálóra van szükség. Megvalósításuk:
2-level local branch prediction
With a shared global history table for all patterns
With individual history tables for different patterns
(Alpha 21264)
(Pentium Pro)
IFA:
IFA: Local BHT (e.g. 1K*10bit)
Local BHT (e.g. 1K*3bit)
Local BHT (e.g. 128*4bit)
Local BHT
e.g. 4-ways each
A globális eljárások közül a shift-regiszter elvű, a G-Share és a G-Select ismeretesek.
78 / 121
Shift regiszteres: Adott egy shift regiszter, melyben az utoljára végrehajtott 8-10 elágazás eredménye található. Ezzel megcímezzük a BHT-t, ahol minden egyes mintához egy adott érték van rendelve. A BHT 2 bites értékének MSB-je dönt az ugrásról.
Global history (shift register)
0
1
1
0
0
1
1 BHT
x
Branch history
G-Share: 1993 McFarling nevéhez kötődik. Eddig pusztán az eddigi elágazástörténet alapján történt döntés. Ezt most kombináljuk az utasításcím bizonyos bitjeivel, XOR alapján: Global history IFA
...
0
1
1
0
0
1
1
1
0
0
1
1
0
0
}
XOR
BHT
x
79 / 121
Branch history
G-Select: A BHT-ben az IFA 4 bitjével jelölöm ki az oszlopot, a globális történet néhány bitjével pedig a sort. Global history
0
1
1
0
0
1
1
BHT
Branch history
x
... 1 IFA:
0
0 1 1 0
Használják együtt a lokális- és globális becsléseket is. Amelyik többször ad helyes eredményt, azt fogják figyelembe venni (choice prediction). Akkor van egy úgynevezett best selection tábla is, melyet minden egyes elágazás után frissítenek az eredménnyel (hogy melyik adta a jó választ).
SzA35. Szuperskalár processzorok elágazásbecslési eljárásai III. (az elágazási cím generálására szolgáló eljárások áttekintése és részletezése) Az elágazási címet háromféleképpen határozhatjuk meg: 1. Menet közben számítódik: UltraSparc, K6, Power 4-5 2. A BTAC-ból (elágazási címpuffer) olvassa ki: PPro-P4, Power 3, K7-K8 (nincs buborék) 3. Az I$-ből (utasítás cache) olvassa ki: Alpha 21264
A BHT-ben azon elágazások címei találhatók, melyekbe már ugrottunk. Tipikus megoldás, hogy a BHT-t és a BTAC-t együttesen használják, a BHT-val megcímzik a BTAC-ot. Ha a BTAC BHT által mutatott címén a TAG benne van, akkor az ott lévő címre ugrik, különben szekvenciálisan megy tovább. Ha BHT értéke 1, törli a bejegyzést BTAC-ből. Ha 0, beírja a bejegyzést a BTAC-ba, ha az még nem szerepel benne. A BHT/BTAC táblák elérési módjai: 80 / 121
Indexelt: interferencia lép fel, mert több cím mutat ugyanarra a helyre, így kis táblák esetén a becslési pontosság csökken, viszont megvalósítása egyszerű. Nagy tábláknál ritka az ütközés. Pl. a Power 4 használja. Cache-szerű: nagyobb költségű a megvalósítás, de kevesebb az interferencia is, mivel többutas a tár. Pl. a Pentium Pro használja. Asszociatív hozzáférés: egyáltalán nincs interferencia, viszont nehéz megvalósítani. Pl. a PowerPC használja. Kiegészítő eljárások az elágazási cím becslési pontosságának javítására: 1. Backup use of static prediction: ha nem ad egyértelmű becslést az adott eljárás, egy statikus becslést használnak 2. Preemptive use of compiler hints: a nagyobb prioritás miatt a compiler hint felülbírálhatja az aktuális döntést 3. RAS: Return address stack. Függvényhívások visszatérési címének meghatározásához. Definiálnak egy stack-et, melybe beleírják a visszatérési címet. LIFO jellegű return cache. 4. Loop detection: ciklusokra. Eltárolják a ciklusok címét és azt, hogy hányadik iterációnál tart (count) 5. Indirect Branch Prediction: regiszterben lévő címekre. Nincs publikálva. Becslési eljárások kombinácíója
Támogató mechanizmus (Pentium)
Preemptive mechanizmus
Választásos (best choice) eljárás
Dedikált mechanizmus
Alapeljárás (dinamikus) nem ad becslést, egy egyszerűbb (statikus) eljárást használnak.
Alapeljárásra erőszakolt „compiler hint” A compiler elágazását veszi figyelembe elsődlegesen
A processzor két eltérő eljárást használ és a jobbikat fogja használni Alpha 21254, Power 4
Bizonyos elágazás típusokra külön eljárás vonatkozik
RETURN
81 / 121
For loops
Indirekt eljárások
SzA36. Reprezentatív szuperskalár mikroarchitektúrák I. (a Pentium Pro, Pentium 4 Willamette és Prescott, a Pentium M és a Core proceszszorok) Pentium Pro:
82 / 121
Pentium 4 Willamette és Prescott:
Az Intel netburst architektúráján alapszik, melyre anno még azt jósolták, hogy 10 GHz-s tartományba is elérhet az órajele. Azóta tudjuk, hogy a disszipációs korlát miatt ez nem lehetséges. Az alacsonyabb (~1.5 GHz, 2000. nov.) órajelű változatok 20, a magasabb órajelű (~3 GHz) pedig 40 fokozatú futószalaggal rendelkeznek. FSB-jük 400-ra nőtt a korábbi 100,133-ról. 256Kbyte L2 cache-el rendelkeznek a desktop vonalban. 2002. novemberétől, 3.06 GHz-től a Hyperthreading technológiát támogatja. A 64 bites utasításkészlet – bár nem volt publikálva – már ebben a processzorban is megtalálható, mert tranzisztorszáma az elviekben szükséges kétszerese (megegyezik a technológiát publikusan is támogató Northwood-éval). A Willamette a Celeron (low-end) vonal képviselője, on-die 128Kbyte L2 cache-el, 1.7 GHz órafrekvenciával. Lényegét tekintve a Prescott cache-tekintetében „megfelezett” társa. 1 darab HW dekódolója van, amit kiegészítettek 1 mikrokód-szekvencerrel. Trace cache-t is használ. A később kijött P4 670-es sorozat azonos FSB-vel, de 90 illetve 65 nm-es csíkszélességgel rendelkezik, és támogatják az XD/ED bitet (biztonság), az EM64T technológiát (AMD kompatilibis x86-64) és az Enhanced Intel Speed Stepping technológiát (terhelésfüggő teljesítményszabályozás). Egyes új modellek a VT virtualizációt is támogatják.
83 / 121
Pentium-M Yonah:
Mikroarchitektúrája hasonlít a Pentium Pro-éra. A Pentium 3 továbbfejlesztése, új foglalattal. Futószalag-fokozatainak száma kb. 14. 3 maggal forgalmazzák: Banias, Dothan és Yonah. Banias: 24.5 W TPD (thermal power dissipation). L1 cache: 32-32 Kb, a P4 négyszerese. Lényegében vették a P4 buszát, és négyszeres L1, kétszeres L2 cache-el (1M) látták el. A P4-nél hatékonyabb és a disszipáció is jóval alacsonyabb a kisebb órajel miatt. Dothan: hatékonyság további növelése, 2M L2 cache-el, 21 W TPD-vel. 1.7-2.3 GHz órajel, FSB 400-533.
84 / 121
Yonah: 65 nm technológia. Centrino duo illetve solo néven árusítják. Az első kétmagos Pentium M a Centrino duo. Ennek két változata volt: low voltage, performance. SSE-t integrálták, az órafrekvenciát megnövelték. Új foglalata miatt nem lehetett 1 magos architektúrában elhelyezni. 2 GHz-en TPD-je 96 W. Intel Core:
A Yonah-tól lényegében csak annyira különbözik, hogy 1-gyel több simple decoderrel rendelkezik és 7+ bejegyzést tud tárolni a mikroutasítás-pufferje. A sárgával jelölt részeken az utasítás már nem 3, hanem 4 mikroutasítás hosszúságú lehet. A Pentium 4-ből a 64 bites technológiát hozták át, és: - disszipációt csökkentő technikák alkalmazása - többmagos technológia – többportos L2 cache - memóriaelérés hatékonyságának növelése
85 / 121
SzA37. Reprezentatív szuperskalár mikroarchitektúrák II. (az Athlon és a Hammer processzorok) Az Athlon (K7):
Az FPU regiszterfájl összevont fájl. 3 címösszeadóval rendelkezik a Load/Store műveletekhez. 3 utas utasításdekódere van. Mind az adat-, mind az utasításcache 64 kbyte. A korábbiakhoz képest nagyobb órafrekvenciával rendelkezett és a futószalagja is több fokozatból állt. A direkt csatolt cache csak ekkor jelent meg, emiatt szükségszerűen Slot A foglalatba kellett helyezni. A 2000-ben megjelent Thunderbird-nél már on-die L2 cache volt, normál socketbe került, 750-1000 Mhz órajellel. Kisebb L2-vel rendelkező low-end társa a Spitfire kódnevet kapta. Mindkettő támogatja az Enhanced 3Dnow! technológiát. Az Athlon 64-nél az SSE-t átvették az Inteltől.
86 / 121
A Hammer:
2000-ben jelent meg az x86-64 ISA architektúra zászlóshajójaként: -
32 bites regisztereket 64 bitesre „nyújtották” 64 bites adatformátumot vezettek be Kompatibilis az x86 ISA-val
A mag hatékonysága körülbelül megegyezik a Pentium M-ével. L1 utasítás- és adatcache-e 64 kbyte. A dekódolt utasításokat eltárolták a trace cache-ben a végrehajtás gyorsítása céljából. Órajele 1.4-1.8 Ghz között mozog. Újdonságként ennél jelent meg a direkt csatolt architektúra: -
a memóriavezérlést áthelyezték a chipre (on-board memory) hypertransport busz megjelenése. 800-1000 MHz-n futó soros busz. multiprocesszoros környezet támogatása (Opteron): crossbar kapcsoló használata, 3x2 link definiálásával
87 / 121
A direkt csatolt architektúra előnyei: -
gyorsabb memória-elérés, közel 20%-os megtakarítás a hozzáférési időben 4-8 processzorból álló komplexum hatékonyan kialakítható megoldja a memória-északi híd-magok közti szűk busz keresztmetszetet, a 2 mag között 1 GHz Hypertransport a nagy sávszélességigényű komponensek jobban kapcsolódnak, mint az Intelnél
Server/Workstation változata a SledgeHammer, mely magasabb órafrekvenciával (max 2.4 GHz) és új sockettel rendelkezik.
88 / 121
SzA38. Rendszerarchitektúrák I. (fejlődésük áttekintése, az egyes fejlődési mozzanatok bemutatása) A rendszerarchitektúra átfogja a mikro- és makroarchitektúrát illetve ezek környezetét mutatja be: processzormag, lapkakészlet, alaplap. A fejlődésük 3 párhuzamos vonal mentén folyt: - value PC-k, 2005-ig - desktop PC-k - szerver/munkaállomás
89 / 121
90 / 121
8086 8088 286 386 486 P Ppro PII PIII PIV Címbusz 20 20 24 32 32 32 36 36 36 36 Adatbusz 16 8 16 32 32 64 64+8 64+8 64+8 64+8 MPXBU DWA DWA QWA SD SD SD SD MPXBU: multiplexált buszhasználat DWA: Doubleword aligned QWA: Quadword aligned SD: SECDED for error protection (a +8 bit)
SzA39. Rendszerarchitektúrák II. (a Pentium 4 asztali PC-k lapkakészleteinek áttekintése) A Pentium 4 asztali PC-k 2000 novemberétől 2005 májusáig terjedtek el. Port típusú rendszerarchitektúrával rendelkeznek. MCH: északi híd (memória-processzor közötti kapcsolat) ICH: déli híd (processzor-perifériák közötti kapcsolat) A lapkakészletek fejlődése során általánosságban elmondható, hogy mind újabb és újabb funkciók integrálása történt meg: video, audio, hálózat, diszkvezérlő. 11/02
AGP 8x
AGP
5/03
SATA 1.0a
SATA
5/03
PCI 2.3
PCI
2/04
PCI-X 2.2
PCI-X
6/04
PCI Express
PCI Express 1.0a 5/02
USB
USB 2.0 12/01
AC' 97
AC' 97 2.3 6/04
HDAI
HDAI
2001
2002
2003
2004
2-4 GB memória használata esetén még nem szükséges pufferelni a memóriát, ezen felül viszont már igen, így az ilyen nagy memóriát kezelni képes lapkakészleteknek erről gondoskodniuk kell. A fejlődés 2 fő irány mentén folyt: -
value PCs (Celeron) desktop PCs
91 / 121
A value line fejlődési folyamata: P4 Celeron FSB SDRAM interface
MCH
VGA1 AGP/4X/8X2
(845G/GL/GV, 865G/ GV/P/PE, 910GL)
Max. 2/4 GB PC 133, DDR 200/266/333/400
S DRAM
SDRAM 3 interface
unbuffered, no ECC
S DRAM3
HI 1.5/DMI ICH2 6x v2.2
ICH4
ICH6
6x v2.2 7x v2.3
PCI ATA/100
PCI-X
6x v2.0 8x v2.0 v2.3
v2.3
2
2
1
2
4
GPI0
AC/97
v2.3
ICH6
LAN 10/100
USB
8x v2.0
ICH4
SATA
ICH
PCI Express x1
4
ICH2
LPC
HDAI
(ICH2/4/6)
845G/GL 865G/GV 910GL /GV /P/PE
845G/GL 865G/GV 910GL /GV /P/PE
FWH
BIOS 1
The chipsets including the letter G in their designation provide an integrated graphics controller. The chipsets including the letters GL or GV in their designation don't have an AGP interface. 3 The 845G/GL/GV chipsets have a single channel memory link, while the others listed above have a dual channel link. 2
A desktop line fejlődési folyamata: P4 FSB VGA1 2
AGP 4X/8X/PCI Express x.16
MCH (845/845xx/848P/865xx/ 875P/915xx)
SDRAM interface
Max. 2/4 GB4 PC 133, DDR 200/266/333/400, DDR2 400/533
S DRAM
SDRAM 3 interface
unbuffered, ECC opt.
S DRAM3
HI 1.5/DMI 5
ICH2
ICH4
ICH5(R)
6x v2.2
6x v2.2
6x v2.3
ICH6(R)6 7x v2.3
ICH2 PCI ATA/100
PCI-X 4 4x v1.1
6x v2.0
8x v2.0
8x v2.0
v2.1
v2.3
v2.3
v2.3
PCI Express x1
1 2
845xx
848P 865xx 875P
915xx
ICH5(R)5 ICH6(R) 6
2
2 2
SATA
ICH
46
LAN 10/100 GPI0
AC/97 5
ICH2/4/5/5R /6/6R6
LPC
FWH
845
845xx
848P 865xx 875P
BIOS
The chipsets including the letter G in their designation provide an integrated graphics controller. The chipsets including the letters GL or GV in their designation don't have an AGP or PCI Express x16 interface.
3
The 845, 845xx and 848P chipsets have a single channel memory link, while the others listed above have a dual channel link. The 845 has a max. memory of 3 GB for SDR SDRAM s. 5 The ICH5R includes an integrated RAID controller that utilizes the dual SATA ports for a high performance RAID Level 0 implementation.
4
6
1 5
USB
HDAI 845
2
ICH4
The ICH6R includes an integrated RAID controller that utilizes the dual SATA ports for a high performance RAID Level 0 implementation.
92 / 121
915xx
A 845-ös lapkakészlet fejlődésének folyamata.
Egy tipikus konfiguráció ugyanezen chipsettel: P4 Northwood FSB 400/533 MHz
VGA
1
845xx 1,2
SDRAM interface
(G)MCH
AGP 4x 3
SDRAM
HI 1.5
MbE
MbE c.
GbE
GbE c.
LAN 10/100 PCI v.2.2
Ultra ATA/100 (2 ports)
ICH4
PCI v.2.2 (3-6 slots)
GPIO
USB 2.0 (4-6 ports) Audio
CODEC
AC'97 v.2.3 LPC
S IO
FWH FD
KB
MS
SP
PP
1
The chipsets including the letter G in their designation provide an integrated VGA controller.
2
Mainboards based on the 845 chipset have a different configuration since they work with the ICH2.
3
The chipsets 845GL/GV don't offer an AGP interface.
93 / 121
Max. 4 GB DDR 200/266/333 unbuffered, no ECC
A 865-ös sorozat tipikus konfigurációja: P4 Northwood B/C FSB 400/533/800 MHz
GbE
VGA
1
AGP 8x
2
GbE c.
865xx 1,2 (G)MCH
CSA (HI 1.5)
SDRAM interface
SDRAM
SDRAM interface
SDRAM
Max. 4 GB DDR 266/333/400 unbuffered, no ECC
HI 1.5
MbE
MbE c. PCI v.2.3 (3 slots)
LAN 10/100
Ultra ATA/100 (2 ports)
PCI v.2.3
ICH5
SATA (2 ports)
USB 2.0 (6-8 ports)
Audio
CODEC
GPIO
AC'97 v.2.3
LPC
S IO
FWH FD
KB
MS
SP
1
The chipsets including the letter G in their designation provide an integrated VGA controller.
2
The chipset 865GV does not offer an AGP 8X interface.
PP
A 915-ös sorozat tipikus konfigurációja: P4 Prescott FSB 533/800 MHz
VGA1
PCI E. x16
915xx1 (G)MCH
PCI E. x162
SDRAM interface
SDRAM
SDRAM interface
SDRAM
DMI
MbE
MbE c. PCI v.2.3 (2-4 slots)
GbE
GbE c.
LAN 10/100 PCI v.2.3
Ultra ATA/100 (1 port)
PCI E. x1 SATA (4 ports)
ICH6
PCI E. x1 (1-2 ports)
GPIO USB 2.0 (8 ports) Audio
CODEC
AC'97 v.2.3 LPC
S IO
FWH FD
KB
MS
SP
1
The chipsets including the letter G in their designation provide an integrated VGA controller.
2
The 915GL/GV chipsets don't offer a PCI Express x16 interface.
94 / 121
PP
Max. 4 GB DDR 333/400, DDR2 400/533 unbuffered, no ECC
SzA40. Rendszerarchitektúrák III. (sávszélesség kérdések; az FSB, a memória interfész, ill. a periféria interfészek jellemző sávszélesség értékei, a párhuzamos ill. soros busz összeköttetésű Intel Pentium 4 rendszerarchitektúrák sávszélesség viszonyai) Width
Peak aggregate bandwidth
FS B
64-bit
8 * f c Mbyte/s
S DRAM-interface
64-bit
8 * f SDRAM Mbyte/s
FSB és SDRAM interfészek Used in the chipsets
Width
Peak aggregate bandwidth
HI 1.5
All prior chipsets
8-bit
266 M Byte/s
DMI
910GL, 915xx, 925X, 925XE
4*1 bit
2000 M Byte/s
MCH/ICH interfészek Used in the chipsets
Width
Peak aggregate bandwidth
16-bit
533 M Byte/s
8-bit
266 M Byte/s
E7500/7501/7505
16-bit
1066 M Byte/s
E7221/7320/7520/7525
8*1 bit
4000 M Byte/s
HI
860
CS A
848P/865xx/875P/E7210
HI 2.0 PCI E. x8
Nagysebességű MCH interfészek Peak bandwidth MByte/s AGP 4X
1066
AGP 8X
2132
VGA port
S ustained data rate up to MByte/s
analog port
MbE c.
12.5
GbE c.
125
S CS I Ultra 320
320
Ultra ATA/100
100
~30-60/drive
S ATA 1.0
150
~30-60/drive
PCI 32-bit/33 MHz
133
PCI-X 64-bit/66 MHz
533
PCI-X 64-bit/133 MHz
1066
PCI E. x1
500
PCI E. x4
2000
PCI E. x8
4000
PCI E. x16
8000
US B 1.0
~125 60-90/drive, ~200-250/bus
~400-450
1.5
US B 2.0
60
AC'97
~1.4
HDA
3/SDI, 6/SDO
LPC
~5
Perifériabuszok
95 / 121
~50
A 865-ös lapkakészlet jellemző sávszélesség-viszonyai:
A 915-ös sorozat esetében pedig:
A DMI busz bevezetésével nyolcszorosára nőtt a sávszélesség az északi és a déli híd között. Ez soros busz, bitvezetékenként 500 Mbyte/sec átviteli sebességgel. PCI-Express bevezetése. 96 / 121
SzA41. Alaplapok I (alaplap típusok fejlődésének áttekintése, az AT és a korai ill. fejlett Baby AT alaplapok karakterisztikus jegyei 1974-től kezdődött meg a PC-k árusítása: Atari, Apple, Commodore. 1981-ben az IBM meghozta az áttörést: nyílt sínrendszer és kapcsolódási felületek (nem kötődik a gyártóhoz). Alaplapok típusai: • • • • • • • • • •
1981 IBM/PC az eredet 1984 AT minden kártyákon keresztül valósul meg 1985 Baby AT: méretcsökkenés, oka: chipkészletek, memórialapkák megjelenése 1985 Pentium alapú Baby AT: PCI slotok megjelenése 1987LPX célja keskeny házak megvalósítása, megjelent a Riser Card 1996 ATX funkcionális javítás 1997 NLX funkcionális javítás 1998 microATX 2000 ATX w/riser 2004 BTX; microBTX; picoBTX hűtés megoldása
AT 8/84
LPX 2
ATX w/riser 5
NLX 4
1987
11/96
Baby AT 1
ATX3
~1985
8/95
12/99
BTX 7
microBTX 7
microATX 6 1/98
picoBTX 7 9/03
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
00
01
02
03
04
1 Baby AT: Smaller board size through higher integrated components (chip sets) 2 Non-standardized slimline design with a central mounted riser card allowing 2-3 expansion slots 3 Through better component arrangement reduced cost and EMI emission, integrated AGP (from version 2.02 on) 4 Standardized, improved slimline design with an edge mounted riser card, integrated AGP 5
Low cost slimline ATX design by using a riser card with 2-3 expansion slots
6 Reduced size low cost ATX design with up to four expansion slots 7 In-line core lay out to improve sy stem cooling with scalable board dimensions
AT alaplapok karakterisztikus jegyei: • • • •
Nem tartalmazott chipkészletet Rögzített memória az alaplapon (DIPP) Ezekből következik: nagy méret 8/16-os ISA billentyűzet (KYB) kivételével minden periféria ezen át kapcsolódik. 97 / 121
05
Korai Baby AT karakterisztikus jegyei: • • • • • • • •
Megjelenik a chipkészlet Memória külön lapkán Ezekből következik: kisebb helyigény 8/16 bites ISA CPU: 386 SIMM/30 L2 cache DIPP (alaplapra integrálva) KYB csatlakozó
98 / 121
Fejlett Pentium alapú Baby AT alaplapok karakterisztikus jegyei: • • • • • • • • •
Megjelenik a chipkészlet Memória külön lapkán Ezekből következik: kisebb helyigény 16 bites ISA PCI 32 bites CPU: Pentium SIMM/72: 72 lábú SIMM RAM L2 cache DIPP fixen KYB, FD, HD on-board vezérlők
99 / 121
SzA42. Alaplapok II (a riser card fogalma, célja, alkalmazása, az ATX és a BTX alaplap szabványok) Riser Card: Fogalma: Olyan kártya, melybe több periféria illesztőkártya (ISA, PCI) helyezhető. Az alaplapra merőleges, így párhuzamosan helyezkednek el a periféria illesztőkártyák az alaplappal. Cél: méretek csökkentése Slim alaplap típusok: LPX (Socket 7 Pentium), NLX (Riser card a szélén), ATX w/riser
ATX alaplap szabvány tulajdonságai: • A CPU-t a tápegység mellé helyezi, így egyszerre hűthető a kettő (2,3). • HD és FD csatolók közel helyezkednek el a meghajtókhoz, így is csökkentve az EMI-t (Elektromágneses interferencia) (4,5) • Kétsoros I/O csatlakozók megjelenése (1)
100 / 121
Korai ATX alaplapok tulajdonságai: • 1 ISA (egyre kevesebb ISA slotra van szükség) • PCI • AGP • Slot1 (PII/III) • DIMM/168 • Kétsoros I/O csatlakozók Jelenlegi ATX alaplapok tulajdonságai: • Nincs ISA, PCI-32 • PCI-E 1x, PCI-E 16x • L2 cache a chipen belül van • Socket 478 (P4) • 1 ATA; 4 SATA BTX alaplap szabvány megjelenésének oka: BTX alaplap szabvány megjelenésének legfőbb oka a processzorok magas disszipációja volt. Ennek a problémának a megoldására az alaplapi chipkészletet és a CPU-t egy légáramba helyezték.
Micro BTX A légáram a CPU-MCH-ICH úton halad.
101 / 121
IV. Többmagos processzorok SzA43. Többmagos processzorok I. (kiváltó okok, megjelenésük áttekintése, makro-architektúrájuk tervezési tere) Kiváltó okok: - telítődés 2003 után - hatékonyság stagnálása a nagymértékben növekvő órajel ellenére is - disszipációs fal elérése a rendkívül magas órajel miatt Többféle innováció: - SMP (simultaneous multiprocessing) – több magos, magonként egy szálas: egy lapkán két vagy több processzormaggal. 50-80%-os komplexitásnövekedés és többletráfordítás 50-70%-os teljesítménynövekedést eredményezett. - SMT (simultaneous multithreading) – egy magos, több szálas: egyetlen többszálas processzormaggal. Kb. 5%-os többletráfordítás 0-15%-os teljesítménynövekedést eredményezett. - A kettő kombinációja: SMP with MT – több magos, több szálas Három fajtájuk jelent meg: - szuperskalár RISC - szuperskalár CISC - VLIW
102 / 121
Makroarchitektúrájuk tervezési tere: Rendszerarchitektúra megvalósítása
L2 csatolás
L3 csatolás
I/O csatolás
Memória csatolás
A makroarchitektúra ötödik elemeként a 2006 őszi előadásban megjelent a „Layout of the interconnections”. A mostani kérdéssorban ez nem szerepel külön, de célszerű ismerni.
103 / 121
SzA44. Többmagos processzorok II. (L2 gyorsítótárak használatának tervezési tere, az egyes szempontok ismertetése)
104 / 121
Az IBM Power 4 és 5 hashing megoldása révén a cache-ek terhelés egyenletesebb.
105 / 121
Inclusive L2: a jelenlegi legtöbb megvalósítás Exclusive L2: Athlon 64X2, kétmagos Opteronok (2005)
Ha L1-ből egy vonalat ki kell írni, az a victim bufferbe kerül, idővel pedig az L2-be. A trend: - közös használatú L2 elterjedése - osztott L2 cache - komplexitás növekszik 106 / 121
SzA45. Többmagos processzorok III. (L3 gyorsítótárak használatának tervezési tere, az egyes szempontok ismertetése)
Exkluzív cache: 1 cache vonal XOR jelleggel vagy az L2-ben vagy az L3-ban van. Ennek előnye, hogy a rendelkezésre álló cache terület összeadódik. Ezáltal nő a hatékonyság és így a teljesítmény is. A módosított cache vonalak (dirty) akkor kerülnek a memóriába, ha „helyet kell csinálni”. Minden módosítás érinti a cache-et és a memóriát egyaránt.
107 / 121
108 / 121
Use by instructions/data
Unified instr./data cache(s)
Split instr./data caches
Jelenleg az összes többmagos processzor mind az utasításokat, mind az adatokat az egyesített L3 cache-ben tárolja.
109 / 121
Banking policy
Single-banked implementation
Multi-banked implementation
Jelenleg az összes többmagos processzor több-bankos.
SzA46. Többmagos processzorok IV. (az I/O és a memória architektúra)
110 / 121
A rendszerbuszon (FSB) át csatlakoztatott I/O és memória alrendszer példái:
Dedikált aszimmetrikus kapcsolódásnál az I/O-t az ún. interconnection network-ön át csatoljuk, a memóriát pedig az L2/L3 cache-en át. Dedikált szimmetrikus kapcsolatnál ezzel szemben mind az I/O, mind a memória a közbülső kapcsolóhálózatra csatlakozik.
111 / 121
A tervezési tér harmadik eleme szerint a kapcsolódás helye alapján az IN: - elhelyezkedhet a cache hierarchia legtetején (L2 vagy L3 fölött). A memóriavezérlő általában így csatlakozik, ha a legmagasabb szintű cache inkluzív. - A L2 és L3 cache-ek között (a magok és az osztott L2 összekötése vagy az osztott L2 és az osztott L3 összekötése). A memóriavezérlő általában így csatlakozik, ha a legmagasabb szintű cache exkluzív.
112 / 121
113 / 121
SzA47. Többmagos processzorok V. (fontosabb többmagos Intel és AMD processzorok bemutatása) Intel
Platform
The Move to Intel Multi-core 2005
2006
Itanium® Itanium® processor
MP Server DP Server / WS
Desktop Client
Mobile Client today All products and dates are preliminary and subject to change without notice.
Refer to ‘fact sheet’ for specific product timings
114 / 121
2007+
115 / 121
A fenti ábra a Core processzorok típusjelzéseit és a hozzájuk tartozó paramétereket mutatja. A különböző technikák és leírásuk: ED: Execute Disable Bit Buffer overflow támadások elhárítására szolgál. Segítségével a processzor osztályozni képes a memória adott részeit az alapján, hogy abban a részben lehet-e futtatható kód vagy sem. Ha egy program „tiltott” helyre akar kódot beszúrni, a processzor megállítja annak futását, megelőzve ezzel a buffer overflow támadást. VT: Virtualizaton Technology Ez lényegében egy sor hardverfejlesztés, mely növeli a szoftveres virtualizáció teljesítményét. A virtualizáció lehetővé teszi, hogy egyetlen platformon többféle operációs rendszer és ezekhez tartozó alkalmazások fussanak akár egyidőben, elszigetelt partíciókon. EIST: Enhanced Intel SpeedStep Technology Segítségével a rendszer dinamikusan (terhelésfüggően) állíthatja a processzor feszültségét és a mag órajelét, ezzel egyrészt csökkenthető az áramfogyasztás, másrészt az átlagos hőkibocsátás alacsonyabb. Ez az egyik legfontosabb disszipáció-csökkentő technológia.
116 / 121
AMD
Az Intel EIST-hez hasonló disszipáció-csökkentő technika a Cool’n’Quiet, amivel a proceszszor terhelésének függvényében állítható a ventilátor fordulatszáma és az órajel.
117 / 121
SzA48. Többmagos processzorok VI. (fontosabb többmagos SUN és IBM processzorok bemutatása) SUN
118 / 121
IBM
Power 4 és 5 logikai nézete illetve rendszerfelépítése
119 / 121
Power 4 chip részei
CELL (BE) mikroarchitektúrája SPE: EIB: MFC: PPE: AUC:
Synergistic Processing Element Element Interface Bus Memory Flow Controller Power Processing Element Atomic Update Cache
120 / 121
A Cell SPE architektúrája
Cell „floorplan”
121 / 121