BMF-NIK Államvizsga Tételek Architektúrák (2007)



Hasonló dokumentumok
Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Összeadás BCD számokkal

Számítógép Architektúrák I-II-III.

elektronikus adattárolást memóriacím

Architektúra, megszakítási rendszerek

Számítógép felépítése

Az interrupt Benesóczky Zoltán 2004

Számítógépek felépítése

Architektúra I. A Számítási modell fogalma: A számításra vonatkozó alapelvek absztarakciója. Jellemzői: - Tudás alapú számítási modell.

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Bevezetés az informatikába

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

Számítógépek felépítése, alapfogalmak

SzA19. Az elágazások vizsgálata

Számítógép architektúra

Digitális rendszerek. Digitális logika szintje

Digitális rendszerek. Mikroarchitektúra szintje

Bepillantás a gépházba

A mikroprocesszor felépítése és működése

Műveletek lebegőpontos adatokkal

Utasításszintű architektúra Adattér

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

Számítógép Architektúrák I-II-III.

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Központi vezérlőegység

Első sor az érdekes, IBM PC ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat

Processzor (CPU - Central Processing Unit)

A számítógép egységei

A számítógép fő részei

Digitális rendszerek. Utasításarchitektúra szintje

OPERÁCIÓS RENDSZEREK. Elmélet

Programozás alapjai. 10. előadás

VEZÉRLŐEGYSÉGEK. Tartalom

Bevezetés a számítástechnikába

Informatika érettségi vizsga

Dr. Oniga István DIGITÁLIS TECHNIKA 8

7. Fejezet A processzor és a memória

Aritmetikai utasítások I.

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Számítógépek felépítése, alapfogalmak

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

statikus RAM ( tároló eleme: flip-flop ),

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Adatok ábrázolása, adattípusok

Digitális technika VIMIAA hét

8. témakör. Memóriák 1. Számítógép sematikus felépítése: 2.A memória fogalma: 3.A memóriák csoportosítása:

Digitális technika VIMIAA hét

Mikrorendszerek tervezése

Alaplap: közös kapcsolódási felület a számítógép részegységei számára

5. tétel. A számítógép sematikus felépítése. (Ábra, buszok, CPU, Memória, IT, DMA, Periféria vezérlő)

Műveletek fixpontos számokkal

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Dr. Oniga István. DIGITÁLIS TECHNIKA 10 Memóriák

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Szekvenciális hálózatok és automaták

Programozási nyelvek 6. előadás

Dr. Oniga István. DIGITÁLIS TECHNIKA 10 Memóriák

2017/12/16 21:33 1/7 Hardver alapok

Az operációs rendszer szerkezete, szolgáltatásai

A számítógépek felépítése. A számítógép felépítése

Számítógépek felépítése

Párhuzamos programozási platformok

Párhuzamos programozási platformok

MEMÓRIA TECHNOLÓGIÁK. Számítógép-architektúrák 4. gyakorlat. Dr. Lencse Gábor. tudományos főmunkatárs BME Híradástechnikai Tanszék

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

7.hét: A sorrendi hálózatok elemei II.

Bevezetés az informatikába

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

2016/08/31 02:45 1/6 Hardver alapok

1. Az utasítás beolvasása a processzorba

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

A 32 bites x86-os architektúra regiszterei

Számítógép architektúrák 2. tétel

Számítógép egységei. A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése.

Programozott soros szinkron adatátvitel

4. Fejezet : Az egész számok (integer) ábrázolása

Megszakítási rendszer

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

I+K technológiák. Számrendszerek, kódolás

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Digitális technika (VIMIAA01) Laboratórium 9

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék

Adatelérés és memóriakezelés

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

DIGITÁLIS ADATTÁRAK (MEMÓRIÁK)

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

Nagy Gergely április 4.

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Átírás:

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? Programnyelv Végrehajtás Architektúra Adatokon hajtjuk végre a számítást. Specifikáció 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 bonyolultság - 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 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 Adatfolyam számítási modell 1. Közös memória (adat + program) Műveletvégzőben tárolhatóak az adatok 1. Változó Egyszeri értékadás (a bejött adat elveszik) 2. Adatmanipuláló utasításokkal Adatfolyam gráffal 3. Implicit szekvencia Adatvezérelt 3. Explicit vezérlésátadás 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. Memóriatér: Adattér Memóriatér Regisztertér Nagyobb Kisebb Lassúbb Gyorsabb Olcsóbb Drágább Processzoron kívül (külön lapkán) Processzoron belül Közös az I/O térrel Mindig önálló - 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, 2 10 =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é. Virtuális címek transzparens mechanizmus 2. pont Valós címek 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 egyetlen akkumulátor 50-es évek egyetlen akkumulátor + dedikált regiszter 60-as évek általános célú regiszterké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) Általános célú regiszterkészlet, feladata: fixpontos, karakteres, logikai feldolgozás. mantissza (23) 1964 IBM 360 5 / 121 Lebegőpontos regiszterkészlet, feladata: lebegőpontos műveleti feldolgozás.

regiszterek száma 1998 Pentium III általános célú regiszterkészlet lebegőpontos regiszterkészlet 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é. Megjelenés éve: Típus Általános célú regiszterkészlet Lebegőpontos regiszterkészlet Katmai (MMX2) 1964 IBM 360 16x32 4x64-1985 Intel 80386 8x32 8x80-1990 IBM RISC 6000 32x32 32x64-1998 Pentium III 8x32 8x80 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 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 INS Locals OUTS INS Locals OUTS INS Locals OUTS regiszterkészletek száma 6 / 121

- Regiszterkészletek száma: túlcsordulás (%) 2 4 6 8 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. - 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: - 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. - A SP és a relatív távolság megadásával bármely adat közvetlenül elérhető a stackcache-ben. - Az aktiválási rekordok számának csak a stack cache fizikai mérete szabhat határt. itt is van átfedő rész az INS és OUTS-nál aktuális aktiválási rekord aktuális stack pointer (SP) előző aktiválási rekord előző SP 7 / 121

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 igen megszakítás feldolgozása következik 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 PC MDR Vezérlő egység IR ALU 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 címrész MDR (MAR) AC MDR műveleti kód IR címrész - Aritmetikai-logikai utasítások: DEC IR MAR DEC cí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 DEC cí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 DEC cí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 megszakítások verem... PC állapotjelzők egyéb, a felhasználó számára látható állapotformáció CC állapot-indikátorok adattípusonként nyomkövetés (debug) indexelés különböző állapot- -indikátorok CC - Condition Code - 2 bites négy érték felvétele - IBM 360 állapot-indikátorok (flag): - 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. PC Inkrementálás (növelés) Felülírás Állapotműveletek 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 kombinált(pl. a+m) - a mai CISC processzorok akkumulátor memória regiszter verem a-r a-m 2 címes 3 címes 2 címes 3 címes SSS aar ara aam ama m1m1m2 m2m1m2 m1m2m3 r1r1r2 r2r1r2 r1r2r3 Akkumulátor: Előny: Gyors, rövid címrész. Hátrány: Szűk keresztmetszet. Napjainkban nem aktuális. 12 / 121

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 C in 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 C in =0; T=t B +1010 1111 13 / 121

II. eset: A 0101 C in =1; T=n t B +1010 1. lépés 1110 C 0 =1 2. lépés 1100 C 1 =1 3. lépés 1000 C 2 =1 4. lépés 0000 C out =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) C out =A B+(A+B) C in 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: C i =G i +P i C i-1 C 0 =G 0 +P 0 C in C 1 =G 1 +P 1 C 0 =G 1 +P 1 G 0 +P 1 P 0 C in C 2 =G 2 +P 2 C 1 =G 2 +P 2 G 1 +P 2 P 1 G 0 +P 2 P 1 P 0 C in C 3 =G 3 +P 3 C 2 =G 3 +P 3 G 2 +P 3 P 2 G 1 +P 3 P 2 P 1 G 0 +P 3 P 2 P 1 P 0 C in É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: Algoritmizált változat: 13 123 13 123 39 0000 felveszünk egy gyűjtőt, amit nullázunk 26 39 13 0039 1599 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 helyiértékeinek száma Bináris szám 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 X max 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: 1 2 3 9 1 2 9 9 1 0 0 1 5 9 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: 7 9 = 0111 10 01 0000 0111 0111 1110 111111 B = 63 D Segédszámítás: a szorzandó kétszerese: 0111 0111 1110 0111 1110 A: összeadással B: léptetéssel 16 / 121

- 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=111110 B 5 db összeadás. Helyette: 64=100000 B 1 db összeadás Összesen 3 db művelet, 40%-os 2=000010 B 1 db összeadás időmegtakarítás, pl.: mai processzorok 1 db kivonás mindegyike. SzA8. 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 Konklúzió: Minden kivonás előtt 48 komparálunk (összehasonlítunk), ezért lassú. 102 II 48 3,1 54 III 48 60 I 48 120 I 48 72 II 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 1,8 6 5 10. lépés kiírja a gyűjtőt 6 10 9. lépés szorozza 10-zel +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 Fixpontos multimédia feldolgozás A, Hangfeldolgozás: A probléma felvetése: - 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: Alkalmazás khz a) Telefon 8 b) Audio CD 44 c) DVD 48 d) DVD (minőségi) 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: 2 24 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 két byte 800 600 480000 byte 960000 byte 1280 1024 1,3 Mbyte 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 Példa: 0,9 10 3 Közös kitevőre kell hozni, a mantisszában a A= m A r ka +0,95 10 4 törtpontot ciklikusan léptetetem jobbra/balra. B= m B r kb 0,09 10 4 +0,95 10 4 1,04 10 4 Mantissza vizsgálata, majd szükség esetén 0,104 10 5 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=m A m B r ka+kb Algoritmus: A mantisszákat összeszorozzuk, a karakterisztikákat pedig összeadjuk. Osztás: X=A/B=m A /m B r ka-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és Vezérlő 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 mindig lassabb áttekinthetőség ember számára nehezen áttekinthető ember számára áttekinthető módosíthatóság merev, nehézkesen módosítható rugalmas 25 / 121

SzA11. Félvezető tárak (jellemzőik; csoportosításuk) Csoportosításuk: Félvezető memória-típusok írható-olvasható - RAM főképpen csak olvasható - CMOS (setup) csak olvasható - ROM (BIOS) DRAM (operatív tár) 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 memória típusa DRAM SRAM Jelleg írhatóolvasható írhatóolvasható csak olvasható ROM csak olvasható PROM főképpen EPROM csak olvasható EEPROM főképpen csak olvasható főképpen Flash csak olvasható CMOS főképpen csak olvasható Az adatok élettartama Írási idő 4-32 ms 60-100 ns az áramforrás kikapcsolásáig végtelen különböző Olvasási idő 60-100 ns A megengedett írási ciklusok száma végtelen 10-25 ns 10-25 ns végtelen 100 ns végtelen órák 100 ns végtelen végtelen pár másodperc kb. 1 másodperc/ bájt csak egyszer csak egyszer 100 ns sokszor 100 ns végtelen n. a. 100 ns a tápelem által történő táplálásig korlátozott számban korlátozott számban Törölhetőség programból, bájt szinten programból, blokkszinten nem lehetséges nem lehetséges ultraviola fénnyel, lapka-szinten programból, bájt szinten programból, blokk szinten n. a. n. a. sokszor programból 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 FPM EDO BEDO SDRAM RDRAM DDR Aszinkron szinkron burst [ns] 60 40 25 15 15/10/7,5 4/3,3 7,5/6/5 [Mb/s] 100 200 266 532 1600 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) szinkron (bármikor reprodukálható, a program minden futásakor ugyanott következik be) várható pl. DMA 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. INT 1 0 2 normál felh.-i szint t 1 0 0 2 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 1 0 1 2 1 0 2 2 Kompromisszum: az előző kettő ötvözése, azaz szinteket rendelnek a megszakítások egy-egy csoportjához t 0 1 2 3 1/a 0/a 1/a 2/a 2/b Szinten belül egyszintű, szintek között többszintű 1/a 0/a 2/a 2/a 2/b 2/b t 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: r 1 r 0 úgy történik, hogy: databus r 0 r 1 databus 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. Kétsínes: n (n 1) sín. 2. Előnyei: U 1 U 3 U 2 U 4 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 U 1 -U 2 közötti szakadás esetén a két egység továbbra is kommunikálhat U 3 vagy U 4 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. 32 / 121

8088 80286 80386 b) Közös (shared) sín: 1. Jellemzője: Minden egység egyetlen közös sínen keresztül kommunikálhat. 2. Előnyei: U 1 U 2 U n 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 vezérlő vezetékek 20 bit v. v. 4 bit v. v. 20 bit 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

CPU 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. - Az összekapcsolt területek alapján: 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. M 1 rendszersín M n Sínvezérlő I/O 1 bővítősín I/O n 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) Kevés vezetéket igényel (olcsó) b) Elvben végtelen számú egységet tudunk csatlakoztatni Hátrányai: c) A prioritás hardveres úton szabályozott (merev) d) Az előrébb álló egységek elnyomhatják a hátrébb állókat e) É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) A prioritás szoftveres úton szabályozott (rugalmas) b) Kevésbé érzékeny a bus grant vonal meghibásodására Hátrányai: c) több vezérlővonal (drága) d) A csatlakoztatható egységek számát a bus grant vonalak száma korlátozza, példánkban maximum 2 3 =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 A processzor működése nélkül Címzés Működés Fogalma, jellemzői Működése Különálló I/O címtér blokkos cikluslopásos feltételes 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 különálló I/O címtér megvalósítása: 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 - 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 Jellemzői: Megvalósítása: Ezt az I/O egység látja - 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 É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] //ez egy memóriahely - 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 //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 IR MDR PC PC+1 DEC címrész - 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) - a feltételes ugrás DEC PC IR DEC címrész AC MDR 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 Vektorprocesszorok Asszociatív és neurális processzorok SIMD Szisztolikus architketúrák Funkcionálisan párhuzamos Utasításszinten párhuzamos Szálszinten Folyamatszinten architektúrák párhuzamos párhuzamos Futószalag VLIW Szuperskalár (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 Soros kibocsátás, soros végrehajtás Szekvenciális feldolgozás Egyetlen processzorban egyetlen, nem futószalagos végrehajtó egység Futószalagos (pipeline) processzorok 1985 Soros kibocsátás, párhuzamos végrehajtás Időbeli párhuzamosság Futószalagos processzor, több, nem futószalagos végrehajtó egységgel Szuperskalár processzorok 1990 Párhuzamos kibocsátás, párhuzamos végrehajtás Időbeli párhuzamosság, kibocsátásbeli párhuzamosság 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) - Többszörözés (térbeli párhuzamosság) A 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 Helye szerint Soros utasítás- Ciklusban Regiszter Memória Szekvenciákon Valós függőség (RAW) WAR Álfüggőség 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. 00: határozott soros folytatás (ugrás esetén 01, nem ugráskor 00 az új állapot) 2. 01: gyenge soros folytatás (ugrás esetén 10, nem ugráskor 00 az új állapot) 3. 10: gyenge elágazás (ugrás esetén 11, nem ugráskor 01 az új állapot) 4. 11: határozott elágazás (ugrás esetén 11, nem ugráskor 10 az új állapot) 5. 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 Kivétel-konzisztencia Szekvenciális konzisztenciája Konzisztenciája Memória-konzisztencia Processzor-konzisztencia Processzor-konzisztencia Probléma: MUL 51 / 121

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 Gyenge konzisztencia Erős 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: Egyszerre n db készül! (t időközön- T egy termék elkészülésének időtartalma. t egy egység mennyi ideig van egy munkaállomáson 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 i 2 blokkolja a további utasítás kibocsátást. Az i+1 ciklusban időközben feloldódott az i 2 függősége, ezért kibocsátható mind az i 2, mind pedig az i 3. 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 VLIW Multimédia (fixpontos) 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: P ai = f c * IPC eff * [OPI] f c : IPC: OPI: órafrekvencia utasítások száma/ciklus műveletek száma/utasítás (csak SIMD) P = f c * 1/n CPI * n IL * n OPI * η n CPI : 2 lehívás közt eltelt idő átlaga (kibocsátás) n IL : párhuzamos kibocsátás tényezője n OPI : műveletek száma/utasítás (csak SIMD) η: spekulatív elágazásbecslésből adódó végrehajtás hatékonysága 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 10000 5000 2000 1000 500 200 100 50 20 10 5 2 80286/12 * 386/16 Saturation P4/3200 * * ** Prescott (2M) * Prescott (1M) P4/3060 * * * * * * Northwood B P4/2400 P4/2800 P4/2000 P4/2200 P4/1500 * * P4/1700 PIII/600 ** * PIII/1000 PII/400 * * PIII/500 PII/300 PII/450 * * Pentium Pro/200 ~ 100*/10 years Pentium/200 * * * Pentium/133 Pentium/166 Pentium/100 * * Pentium/120 Pentium/66 * * 486-DX4/100 486/50 * * 486-DX2/66 486/33 * 486-DX2/50 * 486/25 * * 386/33 * 386/20 * 386/25 * 1 80286/10 * 0.5 8088/8 * 0.2 * 8088/5 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 64 / 121

Az Intel x86 processzorok órafrekvenciájának változása: f c (MHz) 5000 2000 1000 500 200 100 50 20 10 5 * 8088 * * 286 * Saturation Pentium 4 * * * * * * * * * ~100*/10years * * * Pentium III * * * * Pentium II * * ** * * Pentium Pentium Pro * * * 486-DX4 * ~10*/10years 486-DX2 * * * * 486 386 * * * * * * 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 Pentium Pro (2. gen. szuperscalars) ~ constant 1 0.5 ~ 10x/ 10 years 0.2 0.1 0.05 0.02 0.01 ~ 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 65 / 121

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 * f c + V * I leak (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/cm 2. A korlát az egységnyi területen leadható hőmennyiségre vonatkozik. 66 / 121

D/die area (W/cm 2 ) 100 50 20 10 5 * * 0.25μ Katmai Klamath * * * 0.35μ * * 0.25μ P54CS 0.35μ Deshutes * * * * * 0.35μ P54C 0.6μ P5 P6 0.8μ * 0.6μ * Tualatin * 0.18μ Coppermine 0.13μ * * * * * * Prescott 0.09μ Willamette 0.18μ * Northwood 0.13μ 2 20 50 100 200 500 1000 2000 5000 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 2004- ben. 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. f c (MHz) 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üggő utasítások független utasítások (statikus függőség kezelés) dinamikus függőség kezelés F E F E F E F E F E F E Processzor 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/f c 1.0 0.9 0.8 0.7 * Itanium 2 128-bit FSB/400 MT/s * * 256K L2/9M L3/DDR 266 256K L2/6M L3/DDR 266 * * * 256K L2/3M L3/DDR 266 0.6 0.5 0.4 Itanium 64-bit FSB/266 MT/s * 96K L2/4M dir. L3 * 96K L2/2M dir. L3 ~ ~ 500 1000 1500 2000 f c (MHz) 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 Programtér FX FX FP L/S Load/Store R Regiszter Szekvenciális konzisztencia M Memória 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

+ IFA nincs elágazás I$ IFA Instruction Fetch Address BTA Brench Target Address IB BTA 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 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. + F I F A R IIFA N Y I$ Branch prediction Branch fetch BTA IB Further processing 71 / 121

Az utasításkibocsátás tervezési tere: Utasítások kiküldési módja Kiküldési politika Kiküldési ráta Üres várakoztató állomás kezelése Az operandusok rendelkezésre állása megállapításának Kiküldési sorrend Döntési szabály Kiválasztási szabály módja Sorrendben történő kiküldés Részben sorrenden kívüli kiküldés Sorrenden kívüli 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) RISC CISC 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 Instruction groups Dispatch instruction groups in-order, forward individual instructions to the issue queues Issue queues Execute individual instructions ooo Execution units 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% Feltétlen elágazás 10%, feltételes elágazás 10-20% Elágazás: ~20% Fixpontos műveletek: 30-40% Load/Store: ~30-40% Store 10%, Load 20% Lebegőpontos: ~0-5% 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 Lokális Globális 2 level 1 level 2 level Shift regiszter GShare GSelect Statikus Dinamikus Compiler Mikroarchitektúra 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 Dinamikus A becsléstörténet alapján határozza meg az elágazás irányát. (1 bites, 2 bites) Compiler Kódolja az utasításban. Compiler hints (utalások felülír, felülbírál) 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. N N N Smith diagramm Telítéses számláló Y N 00 01 10 11 Y Y 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 (Alpha 21264) With individual history tables for different patterns (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 0 1 1 0 0 1 1 (shift register) 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 0 1 1 0 0 1 1 IFA... 1 0 0 1 1 0 0 } XOR BHT x Branch history 79 / 121

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 x Branch history IFA: 0 1 1 0... 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 For loops Indirekt eljárások 81 / 121

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 AGP 8x 5/03 SATA SATA 1.0a 5/03 PCI PCI-X PCI 2.3 PCI-X 2.2 2/04 PCI Express USB AC' 97 HDAI AC' 97 2.3 USB 2.0 12/01 5/02 PCI Express 1.0a HDAI 6/04 6/04 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 Max. 2/4 GB 1 MCH SDRAM VGA interface PC 133, DDR 200/266/333/400 AGP/4X/8X2 (845G/GL/GV, 865G/ 3 SDRAM GV/P/PE, 910GL) interface SDRAM 3 unbuffered, no ECC ICH2 ICH4 ICH6 HI 1.5/DMI ICH2 ICH4 ICH6 6x v2.2 6x v2.2 7x v2.3 6x v2.0 8x v2.0 8x v2.0 4 v2.3 v2.3 v2.3 845G/GL 865G/GV /GV /P/PE 910GL PCI PCI-X PCI Express x1 USB AC/97 HDAI ICH (ICH2/4/6) FWH ATA/100 SATA LAN 10/100 GPI0 LPC 2 2 1 2 845G/GL 865G/GV /GV /P/PE 4 910GL BIOS 1 The chipsets including the letter G in their designation provide an integrated graphics controller. 2 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. A desktop line fejlődési folyamata: P4 FSB VGA 1 2 AGP 4X/8X/PCI Express x.16 MCH (845/845xx/848P/865xx/ 875P/915xx) SDRAM interface 3 SDRAM interface SDRAM SDRAM 3 Max. 2/4 GB4 PC 133, DDR 200/266/333/400, DDR2 400/533 unbuffered, ECC opt. HI 1.5/DMI ICH2 6x v2.2 4x v1.1 v2.1 845 ICH4 5 ICH5(R) ICH6(R) 6 6x v2.2 6x v2.3 7x v2.3 4 6x v2.0 8x v2.0 8x v2.0 v2.3 v2.3 v2.3 845xx 848P 915xx 865xx 875P PCI PCI-X PCI Express x1 USB AC/97 HDAI ICH 5 6 ICH2/4/5/5R /6/6R FWH BIOS ATA/100 SATA LAN 10/100 GPI0 LPC ICH2 2 845 ICH4 ICH5(R) 5 ICH6(R) 6 2 2 1 5 2 46 845xx 848P 915xx 865xx 875P 1 The chipsets including the letter G in their designation provide an integrated graphics controller. 2 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. 4 The 845 has a max. memory of 3 GB for SDR SDRAMs. 5 The ICH5R includes an integrated RAID controller that utilizes the dual SATA ports for a high performance RAID Level 0 implementation. 6 The ICH6R includes an integrated RAID controller that utilizes the dual SATA ports for a high performance RAID Level 0 implementation. 92 / 121

A 845-ös lapkakészlet fejlődésének folyamata. Egy tipikus konfiguráció ugyanezen chipsettel: P4 Northwood FSB 400/533 MHz 1 VGA 3 AGP 4x 845xx (G)MCH 1,2 SDRAM interface SDRAM Max. 4 GB DDR 200/266/333 unbuffered, no ECC HI 1.5 MbE MbE c. LAN 10/100 GbE GbE c. PCI v.2.2 (3-6 slots) USB 2.0 (4-6 ports) PCI v.2.2 ICH4 Ultra ATA/100 (2 ports) GPIO Audio CODEC AC'97 v.2.3 LPC FWH SIO 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

A 865-ös sorozat tipikus konfigurációja: P4 Northwood B/C FSB 400/533/800 MHz GbE 1 VGA 2 AGP 8x GbE c. CSA (HI 1.5) 865xx (G)MCH 1,2 SDRAM interface SDRAM interface SDRAM SDRAM Max. 4 GB DDR 266/333/400 unbuffered, no ECC HI 1.5 MbE MbE c. PCI v.2.3 (3 slots) USB 2.0 (6-8 ports) LAN 10/100 PCI v.2.3 ICH5 Ultra ATA/100 (2 ports) SATA (2 ports) Audio CODEC AC'97 v.2.3 GPIO LPC FWH SIO FD KB MS SP PP 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. A 915-ös sorozat tipikus konfigurációja: P4 Prescott FSB 533/800 MHz VGA1 PCI E. x162 PCI E. x16 915xx 1 (G)MCH SDRAM interface SDRAM interface SDRAM SDRAM Max. 4 GB DDR 333/400, DDR2 400/533 unbuffered, no ECC DMI MbE GbE MbE c. PCI v.2.3 (2-4 slots) GbE c. PCI E. x1 (1-2 ports) USB 2.0 (8 ports) LAN 10/100 PCI v.2.3 PCI E. x1 ICH6 Ultra ATA/100 (1 port) SATA (4 ports) GPIO Audio CODEC AC'97 v.2.3 LPC FWH SIO FD KB MS SP PP 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

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) FSB Width 64-bit Peak aggregate bandwidth 8 * f Mbyte/s c SDRAM-interface 64-bit 8 * f Mbyte/s SDRAM FSB és SDRAM interfészek Used in the chipsets Width Peak aggregate bandwidth HI 1.5 DMI All prior chipsets 8-bit 266 MByte/s 910GL, 915xx, 925X, 925XE 4*1 bit 2000 MByte/s MCH/ICH interfészek Used in the chipsets Width Peak aggregate bandwidth HI CSA HI 2.0 PCI E. x8 860 848P/865xx/875P/E7210 16-bit 8-bit 533 MByte/s 266 MByte/s E7500/7501/7505 E7221/7320/7520/7525 16-bit 8*1 bit 1066 MByte/s 4000 MByte/s Nagysebességű MCH interfészek AGP 4X AGP 8X VGA port MbE c. GbE c. SCSI Ultra 320 Ultra ATA/100 SATA 1.0 PCI 32-bit/33 MHz PCI-X 64-bit/66 MHz PCI-X 64-bit/133 MHz PCI E. x1 PCI E. x4 PCI E. x8 PCI E. x16 USB 1.0 USB 2.0 AC'97 HDA LPC Peak bandwidth Sustained data rate up to MByte/s MByte/s 1066 2132 analog port 12.5 125 ~125 320 60-90/drive, ~200-250/bus 100 ~30-60/drive 150 ~30-60/drive 133 533 ~400-450 1066 500 2000 4000 8000 1.5 60 ~50 ~1.4 3/SDI, 6/SDO ~5 Perifériabuszok 95 / 121

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 NLX 4 ATX w/riser 5 1987 11/96 12/99 Baby AT 1 ~1985 ATX 3 8/95 BTX 7 microatx 6 microbtx 7 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 05 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 layout to improve system 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

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 2007+ 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

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 SPE: Synergistic Processing Element EIB: Element Interface Bus MFC: Memory Flow Controller PPE: Power Processing Element AUC: Atomic Update Cache CELL (BE) mikroarchitektúrája 120 / 121