számítógép architektúrák -...

84
Számítógép architektúrák 2008/2009 KIDOLGOZOTT TÉTELEK

Upload: ngotram

Post on 20-Feb-2018

242 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

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

2008/2009

KIDOLGOZOTT TÉTELEK

Page 2: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

2

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

Fontosabb tételek

1. Fordítás és értelmezés 2. Numerikus adatok ábrázolása: fixpontos ábrázolás, konverzió a számrendszerek között. Negatív számok ábrázolásai 3. Lebegıpontos számok. IEEE 754 szabvány 4. Digitális logikai szint. Kapuk. Boole algebra. Boole függvények megvalósítása, áramköri ekvivalenciája. A Boole algebra legfontosabb azonosságai, dualitás 5. Kombinációs áramkörök, multiplexer, demultiplexer, dekódoló, összehasonlító 6. Programozható logikai tömbök 7. Aritmetikai áramkörök. Léptetı, fél és teljes összeadó, ALU, az ALU-val végezhetı mőveletek, átvitel továbbterjesztı és kiválasztó összeadás 8. Nem kombinációs áramkörök. Óra, tárolók, flip-flop-ok 9. A CPU részei, feladatai, adatút 10. A CISC és a RISC kialakulása 11. Utasítás és processzor szintő párhuzamosítás 12. Központi memória, bájtsorrend 13. Hamming távolság. Hibaészlelı, hibajavító kódok 14. Gyorsító tár (cache). Találati és hiba arány. Egyesített és osztott gyorsító tár. Direkt leképezéső és halmaz kezeléső gyorsító tár. Memóriába írás 15. Adat típusok, karakter kódolás 16. CPU, sínek. Sín protokoll. Mester – szolga. Sín vezérlı, vevı, adóvevı. Sáv szélesség, sín szélesség. 17. Sokszorozott sín 18. Sín idızítés: szinkron, aszinkron sín, teljes kézfogás. 19. Sín ütemezés. Sín mőveletek. 20. Általános soros sín. PCI express

Page 3: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

3

21. Paralell Input/Output (PIO), valódi és memóriára leképezett I/O eszköz. Teljes és részleges cím dekódolás 22. Mikroarchitektúra szint. Mikroutasítások: Mic-1. A Mic-1 mőködése. Memória mőveletek. ALU és az adatút vezérlése. 23. Mic-1 mőködése, adatút ciklusa, memória ciklusa, mikroprogramja. 24. MPC új értékének kialakulása Mic-1-en. 25. Az IJVM, az IJVM memória modellje, az IJVM megvalósítása Mic-1-en. 26. A WIDE utasítás hatása és mőködése Mic-1-en. 27. Utasítás betöltı egység: Mic-2. 28. Csıvonalas terv: Mic-3. 29. Egy hét szakaszú szállítószalag: a Mic-4 csıvezetéke 30. Elágazás, eltolási rés. Statikus és dinamikus elágazás jövendölés 31. Sorrendtıl eltérı végrehajtás, szuperskaláris architektúra, függıségek, regiszter átnevezés 32. Feltételezett végrehajtás 33. A Pentium 4 processzor, a Pentium 4 mikroarchitektúrája 34. A NetBurst csıvezeték 35. Az UltraSPARC III processzor és az UltraSPARC III mikroarchitektúrája, csıvezetéke 36. Az I-8051 processzor és az I-8051 mikroarchitektúrája 37. A Pentium 4, az UltraSPARC III és az I-8051 mikroarchitektúrájának összehasonlítása 38. Gépi utasítás szint. Memória modellek, memória szemantika 39. A Pentium 4 ISA szintje 40. A Pentium 4, az UltraSPARC III és az I-8051 regiszterei 41. Három, kettı egy és nulla címes utasítások 42. Operandus megadás módjai. Közvetlen operandus, direkt, regiszter, regiszter-indirekt, indexelt, bázis-index címzés, implicit operandus 43. Veremcímzés. Fordított lengyel (postfix) jelölés. Dijkstra algoritmusa. Poxtfix alakú formulák kiértékelése

Page 4: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

4

44. A Pentium 4, az UltraSPARC III, I-8051 utasítás formátumai, címzési módjai 45. Utasítás típusok 46. Programozott és megszakítás vezérelt I/O. DMA 47. Vezérlési folyamat. Szekvenciális vezérlés, elágazás, ciklus szervezés, eljárás, rekurzív eljárás, korutinok, megszakítás, csapda 48. Feltételes végrehajtás, predikáció 49. Operációs rendszer szintje. Virtuális memória. 50. Lapméret, elaprózódás 51. Szegmentálás. A Pentium 4 és az UltraSPARC III virtuális memóriája 52. Mágneslemezek, lemezvezérlık, SCSI 53. RAID 54. Optikus lemezek 55. Egér, nyomtatók, megjelenítık 56. Terminál. Modemek, jelzési, adatátviteli sebesség. 57. ADSL, kábeles internet. További tematika:

Számítógép architektúra szintjei. Számítógépek fejlıdése.

BCD ábrázolás.

SRAM, DRAM, SDRAM, ROM, PROM, EPROM, EEPROM, flash. Memória lapkák.

Pentium 4, UltraSPARC III és 8051 logikai lábkiosztása, memória kezelése.

Átlátszóság.

A végrehajtási út csökkentése. Három sínes architektúra.

A Pentium 4 üzemmódjai.

Orthogonalitási elv.

Overlay technika. Kérésre lapozás. Munka halmaz.

IDE, EIDE, Kommunikációs vonal, PCI.

Page 5: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

5

1. Fordítás, értelmezés: Az új utasítások együttese is nyelvet alkot – nevezzük ezt L1-nek -, ugyanúgy, ahogy a

beépített utasítások nyelvet alkotnak – legyen ez utóbbi L0. Számítógép hogyan hajtja végre az L1 nyelven írott programokat, miközben csak a saját, L0 gépi nyelvén írt programokat képes végrehajtani?

Elıször az L1 nyelvő program minden utasítását helyettesítjük az L0 nyelv utasításainak egy vele ekvivalens sorozatával. Az így nyert program teljes egészében az L 0 utasításokból áll. Ezután az eredeti L1 nyelvő program helyett a számítógép ezt az L0 nyelvő programot hajtja végre. Ezt nevezzük fordításnak. A másik módszer szerint megírunk egy L0 nyelvő programot, amely az L1 nyelvő programokat bemenı adatokként kezeli, és úgy hajtja végre azokat, hogy minden utasításukat elemzi, és a vele ekvivalens L0 nyelvő utasítássorozatot azonnal végrehajtja. A módszert értelmezésnek, a végrehajtó programot pedig értelmezınek nevezzük. A különbség csak az, hogy a fordítás esetében elıször az egész L1 nyelvő programot átírjuk L0 nyelvővé, majd az L0 programot töltjük a számítógép memóriájába, és azt hajtjuk végre. Az értelmezés esetében L1 minden utasításának elemzését és dekódolását az utasítás azonnali végrehajtása követi. A számítógépet az értelmezı vezérli. Olyan, mintha lenne olyan gépünk, amely végre tudja hajtani az L1 nyelven írt programot: virtuális gép.

Page 6: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

6

2. Numerikus adatok ábrázolása: fixpontos ábrázolás, konverzió számrendszerek, negatív számok ábrázolásai:

Az adattípusok két kategóriába sorolhatók: numerikus és nem numerikus adattípusok. Az egész számok kitüntetettek a numerikus adattípusok között. Méretük sokféle lehet, tipikusan 8, 16, 32 és 64 bit. A modern számítógépek az egész számokat bináris kettes komplemens kódban ábrázolják. Az elıjel nélküli egészek esetében nincs elıjelbit, minden bit számjegyet tartalmaz, így egy 32 bites kettes szó értéke 0 és 232 – 1 közötti lehet. Ellenben, a 32 bites kettes komplemens kódban a legnagyobb szám 231 – 1 lehet, de képes negatív számokat is kezelni.

A legtöbb számítógépen egy szám tárolására szolgáló memória fix mérető. A számítógépes erıforrásnak a véges természete csak azokkal a számokkal enged foglalkozni, amelyek fix számú számjeggyel ábrázolhatók. Ezeket a számokat véges pontosságú számoknak (finiteprecision numbers) hívjuk. Egyik legfontosabb sajátossága az összes egész szám halmazán történı számolásnak az, hogy ez a halmaz zárt (closure) az összeadás, kivonás és a szorzás mőveletére nézve.

A legfontosabb alapszámok: a 2, a 8 és 16. Ezen alapszámokra épülı számrendszereket sorrendben kettes (bináris), nyolcas (oktális) és tizenhatos (hexadecimális) számrendszernek nevezzük. A k alapszámú számrendszerek k különbözı szimbólumot igényelnek, hogy a számjegyeket 0-tól (k-1)-ig tudjuk ábrázolni. A decimális számok 10-féle decimális jegybıl épülnek fel: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Ezzel szemben a bináris számok nem tíz jegyet használnak. Ezeket kétféle jeggyel írhatjuk fel: 0, 1. Az oktális számok 8 oktális jegybıl épülnek fel: 0, 1, 2, 3, 4, 5, 6, 7. A hexadecimális számoknál 16-féle számjegy szükséges, így ha új szimbólumra van szükség. Kényelmes bevezetni a nagybetőket A-tól F-ig, amelyek a 9-et követı hat számjegy számára szolgálnak. Így a hexadecimális számok a következı jegyekbıl épülnek fel: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. A „bináris számjegy” kifejezést, amely egy 1-est vagy egy 0-t jelent, bitnek hívjuk.

Az egész részt a törtrésztıl elválasztó jelet tizedes pontnak nevezzük, még abban az esetben is, ha nem tízes számrendszerben dolgozunk. Ezt gyakran bináris pontnak is nevezzük. Egy bináris szám oktálisra való konvertálásához osszuk hárombites csoportokra a számot. A tizedes ponttól közvetlenül balra (vagy jobbra) az elsı három bit alkot egy csoportot, a tılük közvetlenül balra (vagy jobbra) esı három bit a következı csoportot és így tovább. Minden egyes ilyen hárombites csoportot direkt módon konvertálhatunk egy oktális számjegyre, 0-tól 7-ig aszerint, hogy a konverziókban mely adott sorával egyezik meg. Lehet, hogy szükséges egy vagy két kezdı vagy záró 0-val kitölteni a hárombites sorozatokat. A konverzió az oktális számrendszerbıl a bináris számrendszerbe is hasonlóan egyszerő. Minden oktális jegyet egyszerően cseréljünk le egy vele ekvivalens hárombites bináris száma. A konverzió hexadecimálisból binárisba lényegében hasonló, mint az oktálisból binárisba, csak minden hexadecimális szám megfelel egy négybites csoportnak az elızıekben használt három bit helyett. A decimális számrendszerbeli számok konverziója bináris számrendszerbe: csak egészek esetén alkalmazható, 2-vel való osztást tartalmaz. A hányadost az eredeti szám alá írjuk, a maradék 0 vagy 1, ezt a hányados mellé a következı oszlopba írjuk. Ezután a hányadossal addig folytatjuk ezt az eljárást, amíg hányadosként 0-t nem kapunk. Ennek az eljárásnak az eredménye két oszlopot tartalmaz, a hányadosét és a maradékokét. A bináris számot most már közvetlenül a maradék oszlopból olvashatjuk le úgy, hogy elindulunk az oszlop aljától felfelé a leolvasással. A bináris számok konvertálása decimális számra (triviális).

A negatív számok megjelenítésére négy különbözı módszert használtak a digitális számítógépek történetében, újra és újra elıvéve. Az elsıt elıjeles abszolút értéknek (signed magnitude) a módszernél a bal oldali elsı bit az elıjelbit és a maradék bitek jelzik a szám abszolút értékét. A második rendszernek, amelyet egyes komplemens (one’s complement)

Page 7: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

7

rendszernek hívunk, szintén van egy elıjelbitje, 0 jelenti a pozitív, 1 a negatív számot. A harmadik rendszer, amelyet kettes komplemensnek (two’s complement) nevezzünk, szintén tartalmaz elıjelbitet, amely 0 a pozitív, 1 a negatív számok esetében. Egy szám negatívját kétlépéses eljárással kapjuk meg. A negyedik rendszer, amelyet az m bites szám esetében 2m-1 többletesnek (excess 2m-1) hívunk, egy szám helyett a számnak és 2m-1-nek az összegét tárolja.

Page 8: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

8

3. Lebegıpontos számok. IEEE 754 szabvány: Olyan számok ábrázolására, amelyek nem fejezhetıek ki egészként, mint például a

3,5, lebegıpontos számábrázolást alkalmaznak. A lebegıpontos számok lehetnek 32, 64 vagy néha 128 bitesek. Sok gép külön regisztereket alkalmaz az egész és a lebegıpontos aritmetikai utasításokkal. A lebegıpontos számábrázolás elvei: A szám nagyságának és pontosságának szétválasztására az egyik módszer, hogy a számokat a jól ismert tudományos jelöléssel ábrázoljuk: n = f x 10e ahol az f a törtész (fraction) vagy mantissza (mantissa), az e pedig egy pozitív vagy negatív szám, amelyet kitevınek vagy exponensnek (exponent) hívunk. Ennek a jelölésnek a számítógépes verzióját lebegıpontos számnak (floating point) hívjuk.

IEEE 754 szabvány: Körülbelül 1980-ig minden számítógépgyártónak saját lebegıpontos formátuma volt. A helyzet javítására 1970-es évek végén az IEEE felállított egy bizottságot a lebegıpontos számítások szabványosítására. A cél nemcsak az volt, hogy olyan lebegıpontos adatokat tervezzenek, amelyek kicserélhetık a különbözı számítógépek között, hanem az is, hogy egy helyes jól mőködı modellt biztosítsanak a hardvertervezık számára. Ez a munka vezetett el az IEEE 754-es szabványhoz. A legtöbb központi egység napjainkban olyan lebegıpontos utasításokat használ amelyek az IEEE lebegıpontos szabványokkal dolgoznak. Más szabványokkal ellentétben, amelyek beérik „nesze semmi, fogd meg jól” kompromisszumokkal, amelyek senkinek se tetszenek, ez a szabvány nem számít rossznak, mivel alapvetıen egy embernek William Kahannek, a Berkeley Egyetem professzorának munkája. Ezt a szabvány mutatjuk be. A szabványforma három formát definiál: az egyszeres (32 bit), a dupla (64 bit) és a kiterjesztett pontosságút (80 bit). A kiterjesztett pontosságú forma arra szolgál, hogy csökkentse a kerekítési hibákat. Az egyszer és a dupla pontosságú forma egyaránt kettes alapot használ a törtrészben és többletes ábrázolást a kitevıben. Mindkét forma elıjelbittel kezdıdik, ahol 0 a pozitív, 1 pedig a negatív elıjel. Ezután következik a kitevı, 127 többletes szimpla pontosságú és 1023 többletes dupla pontosságú ábrázolásban. Végül a törtrészek következnek 23, illetve 52 biten. A normalizált törtrész bináris ponttal kezdıdik, amelyet 1-es bit követ, és ezután a törtrész további része következik. A lebegıpontos számábrázolás hagyományos problémája, hogy hogyan kezeljük az alulcsordulást, túlcsordulást és kezdeti érték nélküli számokat. A normalizált számokon túlmenıen négy további numerikus típus van: nem normalizált, nulla, végtelen, nem szám.

Page 9: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

9

4. Digitális logikai szint. Kapuk. Boole algebra. Boole függvények megvalósítása áramköri ekvivalenciája. A Boole algebra legfontosabb azonosságai, dualitás: A digitális logikai szint, alkotja a számítógépek igazi hardverét. A digitális áramkör egy olyan áramkör, amelyben csak két logikai érték van jelen. Tipikusan a 0 és 1 volt (V) közötti jelet képvisel az egyik, és a 2 és 5 volt közötti egy másik értéket. Más feszültséget nem enged meg.

A pici elektromos eszközöket kapuknak (gates) hívjuk, amelyek kétértékő jelek valamilyen függvényét tudják meghatározni. Kapcsolási idejük néhány ns. A tranzisztornak három kapcsolata van a külvilággal: a kollektor , a bázis és az emitter. A bemenı feszültség, Vbe bizonyos érték alatt van, a tranzisztor zárt állapotban van. Az áramkör outputja, Vki közel van Vcc értékéhez, ami egy külsıleg vezérelt feszültség. Amikor Vbe meghaladja a kritikus értéket, a tranzisztor kinyit, azt eredményezi, hogy a Vki-t lehúzza a földhöz. Ez az áramkör egy fordító (inverter), amely a logikai 0-t logikai 1-gyé konvertálja, s a logikai 1-et pedig logikai 0-vá. Három áramkör alkotja a legegyszerőbb kaput. Nevük: NEM (NOT), NEM-ÉS (NAND) és NEM-VAGY (NOR) kapu. A nem kapukat gyakran hívjuk invertereknek (fordítók). Az árbrákon A és B bemenet, X a kimenet. A kis köröket, amelyeket szimbólumok részeként használunk az inverter jelölésére a NEM-ÉS és NEM-VAGY kapuknál, inverziós gömböknek nevezünk.

Új típusú algebrára lesz szükség, amelynek változói és függvényei csak a 0 és 1 értéket vehetik fel. Egy ilyen ábrát Boole-algebránakhívnak. Boole-algebra specifikus típusa a kapcsolóalgebra (switching algebra). Minden n változós Boole-függvény változóinak csak 2n lehetséges kombináicója van, a függvényt teljesen leírhatjuk egy 2n sorral rendelkezı táblázattal, ahol egy-egy sor megmondja a bemeneti értékek adott kombinációja mellett a függvény értékét. Ezt a táblázatot igazságtáblázatnak (truth table) nevezzük. Implicit jelöléső szorzást vagy egy pontot használunk a Boole ÉS (AND, logikai szorzás) és +-t a Boole VAGY (OR, logikai összeadás), illetve fölülvonást a Boole NEM (NOT, logikai hamis) függvény jelölésére. Például: az ABC azt jelenti, hogy ennek az értéke csak akkor 1, ha A = 1, B = 0 és C = 1. Egy M függvény igaz, ha a négy eset valamelyike igaz; így felírhatjuk, hogy M = ABC + ABC + ABC + ABC Szükségünk van bemeneti változók invertált értékére (komplemensére). Az áramkör négy ÉS kaput tartalmaz, az M függvény minden tagjához egyet. Minden és kapu kiszámolja az igazságtáblázatnak egy sorát. Végül a szorzatok eredményei VAGY-olásra kerülnek, és ez adja a végeredményt. A Boole-függvény megvalósítása áramkörrel: 1. Írjuk fel a függvény igazságtáblázatát. 2. Biztosítsunk nem kapukat minden bemenet komplemensének elıállításához. 3. Rajzoljunk és kaput minden sorhoz, amelynek eredményoszlopában 1 van. 4. Kapcsoljuk össze az és kapukat a megfelelı bemenetekkel. 5. Az összes és kapu kimenetét tápláljuk be egy vagy kapuba. Az áramköröket kényelmesebb egyfajta kapukkal megvalósítani. Áramkört alakítsuk tisztán NEM-ÉS vagy tisztán NEM-VAGY

Máté: Architektúrák 2. eloadás 39

Néhány azonosság(3.6. ábra)

A+B=ABAB=A+BDe Morgan

A+AB=AA(A+B)=AAbszorpciós

A(B+C)=AB+ACA+BC=(A+B)(A+C)Disztribúciós

(A+B)+C=A+(B+C)(AB)C=A(BC)Asszociatív

A+B=B+AAB=BAKommutatív

A+A=1AA=0Inverz

A+A=AAA=AIdempotens

1+A=1 0A = 0Null

0+A=A1A = AIdentitás

VAGY formaÉS formaSzabály

Page 10: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

10

formájúvá. A NEM-ÉS és a NEM-VAGY kapukról azt mondjuk, hogy teljesek (complete), mert bármely Boole-függvény kiszámítható ezek bármelyikének felhasználásával. Az ekvivalens áramkörök keresésébe a Boole-algebra nagyon értékes eszköz. Két függvény akkor és csak akkor ekvivalens, ha az összes lehetséges bemenetre a két függvény ugyanazt a kimenetet adja. Az áramkörtervezık Boole-függvénnyel kezdenek, és aztán alkalmazzák a Boole-algebra szabályait. Ezt a megközelítést használjuk, szükség van a Boole-algebra néhány azonosságára (3.6 ábra). Minden szabálynak két formája van, amelyek egymásnak duáljai.

Page 11: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

11

5. Kombinációs áramkörök, multiplexer, demultiplexer, dekódoló, összehasonlító: A digitális logika nagyon sok alkalmazása megkívánja, hogy egy áramkör többszörös bemenettel és többszörös kimenettel rendelkezzen, és a kimeneteit határozzák meg a pillanatnyi bemenetei. Az ilyen áramkört kombinációs áramkörnek (combinational circuit) hívjuk. Multiplexer: A digitális logika szintjén a multiplexer olyan áramkör, amely 2n adatbemenettel, 1 adatkimenettel és n vezérlıbemenettel rendelkezik, mely utóbbiak egy adatbemenetet választanak ki. A kiválaszott adatbemenetre azt mondjuk, hogy a kimenetre irányított vagy „kapuzott” (gated). Multiplexert használva megvalósíthatjuk a többségi függvényt. Egy másik alkalmazás: párhuzamosból sorosba történı átalakítóként való használat. A 8 bites adatot elhelyezzük a bemeneti vonalakon, és ezután a vezérlıvonalakkal sorban lépegetünk 000-tól 111-ig (binárisan), ezzel a 8 bitet egymás után helyeztünk el egyetlen kimenetre. A párhuzamos-soros konverzió tipikus felhasználása történik a klaviatúrában. A multiplexer fordítottja a demultiplexer, amely egy egyedi bemenı jelet irányít a 2n kimenet valamelyikére az n vezérlıvonal értékétıl függıen. Ha a vezérlıvonalak bináris értéke k, a k-adik kimenet a kiválaszott kimenet. Dekódolók: Egy olyan áramkört amely, n bites számot használ bemenetként, és pontosan egyet kiválaszt a 2n kimenet közül (1-re állítja). Az ilyen áramkört dekódolónak nevezzük. Összehasonlítók: Egy másik hasznos áramkör az összehasonlító (comparato), amely két bemeneti szót hasonlít össze. Az áramkör a KIZÁRÓ-VAGY (EXCLUSIVE OR, XOR) kapun alapul, amely 0-t ad, ha a bemenetek egyenlık és 1-et, ha nem egyenlık. Ha a két bemeneti szó egyenlı, akkor mind a négy kizáró-vagy kapu 0-t kell adjon kimenetén. Ezt a négy jelet VAGY mővelettel össze tudjuk kapcsolni; ha az eredmény 0, a bemeneti szavak azonosak, különben nem.

Máté: Architektúrák 2. eloadás 46

D0

D1

D2

D3

D4

D5

D6

D7

D0

D1

D2

D3

D4

D5

D6

D7

multiplexer demultiplexer

• Demultiplexer: egy egyedi bemenetet irányít az n vezérlobemenet értékétol függoen a 2n kimenet egyikére

Máté: Architektúrák 2. eloadás 48

KIZÁRÓ VAGY kapu

110101

1

0B

01

00XA

Igazság tábla:

Szimbolikus jelölése

A

BX

• Összehasonlító (comparator):(3.14. ábra).

A0

B0

A1

B1

A2

B2

A3

B3

A = B

4 bites összehasonlító

Page 12: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

12

6. Programozható logikai tömbök: Programozható logikai tömbök: Ez egy nagyon általános lapka, a programozható logikai tömb vagy PLA (Programmable Logic Array) szolgál a logikai szorat-össeg képzésére. Ennek a lapkának 12 változó számára van bemeneti vonala. Mindegyik bemenetnek a komplemense a lapkán belül képzıdik, így végül 24 bemeneti jelet kapunk. Az áramkör kimeneti része hat VAGY kapuból áll, mindegyik 50 bemenı jellel rendelkezik, amelyek megegyeznek az ÉS kapuk 50 kimenetével. Léteznek mezı-programozású PLA-k (field-programmable), és a felhasználó által meghatározott PLA-k (custom-made). A mezı-programozású PLA-t még használják de nagyon sok alkalmazásnál a felhasználó által meghatározott PLA-k használatosabbak. Ezek nagy részét a felhasználó tervezi meg, és a gyártó legyártja a felasználó specifikációja alapján. Az ilyen PLA-k olcsóbbak, mint a mezı-programozásúak.

Máté: Architektúrák 2. eloadás 49

• Programozható logikai tömbök: PLA (3.15. ábra) (Programmable Logic Array).

0

1

49

0 1 5

A B L

12 bemeno jel

Ha ezt a biztosítékot kiégetjük, akkor nem jelenik meg #B az 1-es ÉS kapu bemenetén

Ha ezt a biztosítékot kiégetjük, akkor az 1-es ÉSkapu kimenete nem jelenik meg az 5-ös VAGY kapu

bemenetén

24 bemenovonal

50 bemenovonal

6 kimenet

Page 13: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

13

7. Aritmetikai áramkörök. Léptet ı, fél és teljes összeadó, ALU, átvitel továbbterjesztı és kiválasztó összeadás, ALU-val végezhetı mőveletek: Az MSI kombinációs áramkörök az aritmetikai mőveleteket végzik. Léptetı: Az elsı aritmetikai MSI áramkörünk 8 bemenettel, 8 kimenettel rendelkezı léptetı (shifter). A kimenetek a bementeket pontosan 1 bittel való eltolását jelentik. A vezérlıvonal (C)határozza meg a léptetés irányát. Az összes bithez ÉS kapupárok kapcsolódnak, kivéve a végeken (csak 1 kapu). A jobb oldali ÉS kapu kimenet össze van kötve a tıle jobbra esı VAGY kapu bemenetével (és fordítva). Tehát C = 1 érték esetén jobbra (kapupár jobb oldala aktivizálódik), 0 esetén balra léptetést hajt végre. Fél és teljes összeadó: Nagyon lényeges része minden CPU-nak (központi egységnek) egy összeadást végrehajtó áramkör. Az összeget és az átvitelt kiszámító áramkör ez az egyszerő áramkör széles körben fél összeadóként (half adder) ismert. A fél összeadó egy egyszerő áramkör két bemenettel és két kimenettel. A bemenet két szám, az egyik kimenet az átvitel (ÉS kapu), a másik kimenet az összeg (KIZÁRÓ VAGY kapu). Egy fél összeadó megfelelı két több-bites bemenı szó alsó bitjeinek összeadására, de nem jól mőködik a szavak középsı bitpozícióin, mert nem kezeli a jobbról érkezı átvitelt. Helyette teljes összeadó szükséges, ami kettı fél összeadóból épül fel. . Vannak átvitelt kezelı teljes összeadók és átvitel kiválasztó teljes összeadók. Az átvitelt kezelı összeadóknál fellép egy bizonyos késleltetés a mővelet során, ami miatt lassabbak lesznek. Az átvitel kiválasztó összeadók gyorsabbak, az összeadási idıt a felére redukálják (mindegyik 16 bites összeadót 8 bites összeadókból duplikálással építünk fel). Fél összeadó Teljes összeadó ALU (Aritmetikai-logikai egységek): A legtöbb számítógép egyetlen áramkört tartalmaz az ÉS, VAGY végrehajtására és két gépi szó összeadására. Ez az áramkör tipikusan n bites szavakra készül, és n azonos áramkört tartalmaz az egyes bit pozíciókra. Az ilyen áramkört hívjuk aritmetikai-logikai egységnek. Ez az áramkör négy funkció bármelyikét végre tudja hajtani (ÉS, VAGY , negáció, összeadás), attól függıen, hogy a funkciót kiválasztó F0 és F1 bemenı vonalak bináris értéke 00, 01, 10 vagy 11. A bitszeletek lehetıvé teszik, hogy a számítógép-tervezık bármilyen kívánt bitszélességő ALU-t építsenek. Az INC jel csak összeadásnál használatos. Amikor aktív, megnöveljük az eredményt, így ki tudjuk számolni az A + 1 és A + B +1 összegeket.

Page 14: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

14

ALU-val végezhetı mőveletek: Az ALU tevékenységét hat vezérlıvonal határozza meg. Közülük F0 és F1 határozza meg az ALU-mőveletet, ENA és ENB egyedileg engedélyezi a bemeneteket, INVA invertálja a bal oldali bemenetet, és INC a legalacsonyabb helyiértékő biten az „átvitel be” bemenetet. INC beállítása gyakorlatilag 1-et hozzáad az eredményhez. ALU mőveletek például: összeadás, kivonás, negálás, komplementer-képzés stb. Az ALU-nak két adatbementre van szüksége: a bal oldalira és a jobb oldalira. A bal oldali bemenet a H (Holding) tartó regiszterhez kapcsolódik. A jobb oldali bemenet pedig a B sínhez, amelyik képes betölteni a szürke nyilak által megmutatott kilenc forrás bármelyikét. A H úgy tölthetı fel, hogy választunk egy olyan ALU-tevékenységet, amelyik a jobb oldali bemenetet (B sínrıl) csupán átengedi az ALU kimenetére. Az egyik ilyen tevékenység az ALU bemeneteit összeadja, csak negált ENA-val, ami a bal oldali bemenetet nullává teszi. Nullát adva a B sín értékéhez, éppen a B sín értékét kapjuk. Ezt az eredményt azután módosítás nélkül küldjük tovább a léptetın, és H-ban tároljuk. A fenti függvényeken kívül két másik vezérlıvonal használható egymástól függetlenül az ALU kimenetének irányítására. Az SLL8 a tartalmat 1 bájttal balra lépteti, feltöltve nullával a legalacsonyabb helyértékő 8 bitet. SRA 1 a tartalmat 1 bittel jobbra lépteti, változatlanul hagyva a legmagasabb helyértékő bitet. Lehetséges olvasni és írni ugyanazt a regisztert egy cikluson belül.

Page 15: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

15

8. Nem kombinációs áramkörök. Óra, tárolók, flip-flop-ok: Órák: Sok digitális áramkörben az események, történések sorrendje nagyon kritikus. Annak, érdekében, hogy a tervezık el tudják érni a kívánt idızítéseket, nagyon sok digitális áramkör órát használ a szinkronizáció biztosítására. Az óra (clock) ebben az értelemben egy áramkör, amely pontosan meghatározott szélességő pulzusok sorozatát bocsátja ki, és nagyon precízen meghatározott két egymás utáni pulzus közötti idıintervallum is. A két egymást követı pulzus élei közötti intervallumot az óra ciklusidejének (clock cycle time) nevezzük. A pulzus frekvenciája általában 1 és 500 MHz között van, ennek megfelelıen az órajel 1000 ns-tól 2 nsec-ig terjedhet. A nagy pontosság eléréséhez az óra frekvenciáját általában egy kristályoszcillátor vezérli. Egy számítógépen több esemény történhet egyetlen órajel alatt. Ha ezeknek az eseményeknek egy speciális sorrendben kell bekövetkezniük, az órajelet alciklusokra kell osztanunk. Különbözı eseményeknek a különbözı élekhez való hozzárendelésével tulajdonképpen elérjük a kívánt sorrendet. Ha több mint négy idızítési referencia szükséges egy adott idızítési ciklusban, akkor több különbözı késleltetéső másodlagos vonalat kell csatlakoztatnunk az elsıdlegeshez. Tárolók: Az 1 bites memória készítéséhez szükségünk van olyan áramkörre, amelyik valahogyan „visszaemlékszik” az elızı bemeneti értékre. Egy ilyen áramkört készíthetünk két NEM-VAGY kapuból. A kombinációs áramkörökkel ellentétben a tárolók kimenetei nem csupán az aktuális bemenetektıl függnek. Idızített SR-tároló: Gyakran fontos, hogy a tároló állapotváltozásai csak bizonyos meghatározott pillanatban történjenek. E cél eléréséhez kicsit módosítjuk az áramkört, ahogy (Tannenbaum 178. o. 3.23 ábra) látható, így megkapjuk az idızített SR-tárolót (clock SR latch). Ez az áramkör egy további bemenettel rendelkezik, az órajellel, amely alaphelyzetben 0. A 0-s órajel hatására az ÉS kapu kimenete 0, függetlenül S-tıl (Set) és R-tıl (Reset), tehát a tároló nem változtatja meg állapotát. Amikor az órajel 1, az ÉS kapuk hatására megszőnik. És a tároló érzékeny lesz S-re és R-re. A nevével ellentétben, az órajelet nem szükséges órával vezérelni. Az érvényes (enable) és kapuzójel (strobe) kifejezések széles körben használták, ami azt jelenti, hogy ha az órabemeneten a jel 1, az áramkör érzékeny az S és R állapotokra. Idızített D-tárolók: Az SR tároló S = R = 1 által okozott bizonytalanságának feloldására, hogy ennek az elıfordulását megakadályozzuk. A (Tannenbaum 179. o. 3.24 ábra) egy egyetlen D bemenettel rendelkezı tároló áramkört mutat. Mivel az alsó ÉS kapu bemenete mindig komplemense a felsı kapu bemenetének, a két 1-es bemenet problémája nem fordul elı. Amikor az órajel 1, a D pillanatnyi értéke mintának tekinthetı, és ezt tároljuk a tárolóban. Ezt az áramkört idızített D tárolónak (clocked D latch) hívjuk, amely egy igazi 1 bites memória. Flip-flopok: Sok áramkörnél szükséges lehet, hogy egy meghatározott idıpontban vegyen mintát bizonyos vonalon levı értékrıl, és tárolja azt az értéket. Ezt a változatot flip-flopnak

Page 16: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

16

(flip-flop, billenıkör) nevezzük. Flip-flop esetén az órajel 1-es állásánál nem fordul elı állapotváltozás, hanem csak akkor, amikor az órajel átmegy 0-ból 1-be (felfutó él) vagy 1-bıl a 0-ba (lefutó él). Így az órajel hossza nem lényeges, ha elég gyors az átmenet. A flip-flop élvezérelt (edge triggered), míg a tároló szintvezérelt (level triggered). (lényegesebb mőködése lásd: Tannenbaum 179-180-181 o.)

Page 17: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

17

9. A CPU részei, feladatai. CPU, adatút A CPU (Central Processing Unit, központi feldolgozóegység) a számítógép „agya”. Feladata az, hogy a központi memóriában tárolt programokat végrehajtsa úgy, hogy a programok utasításait egymás után beolvassa, értelmezi és végrehajtja. Az egyes részegységeket egy sín (bus) köti össze, amely címek, adatok és vezérlıjelek továbbítására szolgáló párhuzamos vezetékköteg. A CPU több különálló részegységbıl áll. A vezérlıegység feladata az utasítások beolvasása a központi memóriából és az utasítások típusának megállapítása. Az aritmetikai-logikai egység a program utasításainak végrehajtásához szükséges mőveleteket végez, mint például az összeadás vagy a logikai ÉS. A CPU egy kismérető, gyors memóriát is tartalmaz, amelyben részeredményeket és bizonyos vezérlıinformációkat tárol. Ez a memória több regiszterbıl áll, mindegyiknek meghatározott mérete és funkciója van. A regisztereket nagy sebességgel lehet olvasni és írni, mivel a CPU-n belül vannak. A legfontosabb regiszter az utasítás- vagy programszámláló (Program Counter, PC), amely a következı végrehajtandó utasítás címét tartalmazza. Fontos még az utasításregiszter (Instruction Register, IR), amely az éppen végrehajtás alatt levı utasítást tartalmazza. A legtöbb számítógép még számos regisztert is tartalmaz, ezek némelyike általános célú, míg mások speciális célúak. CPU felépítése: Egy tipikus Neumann-elvő számítógép egy részének belsı felépítése a 2.2. ábrán látható részletesebben. Ez a rész az úgynevezett adatút (data path), amelynek részei a regiszterek, az aritmetikai-logikai egység (ALU, Arithmetic Logic Unit) és az ezeket összekötı néhány sín. A regiszterek két ALU bemeneti regiszterbe csatlakoznak. Ezek a regiszterek tárolják a bemeneti adatokat, amíg az ALU más számításokon dolgozik. Az ALU a bemenı adatokon összeadást, kivonást és egyéb egyszerő mőveleteket végez, és az eredményt a kimeneti regiszterbe teszi. Ennek a kimeneti regiszternek a tartalma visszaírható egy regiszterbe. Késıbb, ha szükséges, a regiszter tartalma beírható a memóriába. A legtöbb utasítás a következı két kategória egyikébe sorolható: regiszter-memória vagy regiszter-regiszter. A regiszter memória utasítások segítségével tölthetünk át szavakat a memóriából regiszterekbe, ahol a soron következı utasítások például az ALU bemeneteként használhatják. Más regiszter-memória utasítások segítségével a regiszterek tartalmát írhatjuk vissza a memóriába. A másik csoportba tartoznak a regiszter-regiszter utasítások. Egy tipikus regiszter-regiszter utasítás vesz két operandust a regiszterekbıl, elhelyezi ıket az ALU bemeneti regisztereibe, az ALU elvégez rajtuk valamilyen mőveletet, majd az eredményt tárolja az egyik regiszterbe. A két operandusnak az ALU-n történı átfuttatásából és az eredmény regiszterbe tárolásából álló folyamatot adatciklusnak nevezzük.

Page 18: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

18

10. A RISC és CISC kialakulása A tervezık megpróbálták bezárni azt a „szemantikai rést”, amely a számítógépek képességei és a magas szintő programozási nyelvek követelményei között húzódott. Az IBM John Cocke vezette csoportja mégis ebben az irányban indult el, és megpróbálta Seymour Cray néhány ötletét alkalmazni egy nagy teljesítményő miniszámítógépben. Ez a munka vezetett el egy kísérleti miniszámítógéphez, a 801-hez. 1980-ban David Patterson és Carlo Séquin vezetésével egy csoport a Berkeley-n olyan VLSI-processzorokat kezdett el tervezni, amelyek nem használtak interpretálást. A koncepciójuk a RISC nevet kapta, és az elsı CPU lapkát RISC I-nek, a másodikat pedig RISC II-nek nevezték el. Standfordban, John Hennessy tervezett és készített el egy ettıl kicsit eltérı lapkát, amelyet MIPS-nek nevezett el. Mindkettı továbbfejlesztett változata kereskedelmi forgalomba is került SPARC és MIPS néven. Amikor elıször terveztek ilyen egyszerő processzorokat, mindenki figyelmét felkeltette, hogy viszonylag kevés utasításuk van (50). Tulajdonképpen a RISC rövidítés a Reduced Instruction Set Computer (csökkentett utasításkészlető számítógép) kifejezésbıl ered, szemben a CISC, vagyis Complex Instruction Set Computer (összetett utasításkészlető számítógép) elnevezéssel, ami egy alig leleplezett utalás a VAX-ra, amely abban az idıben uralta az egyetemi számítóközpontokat. Azt állították, hogy a számítógépek tervezésének legjobb módja, ha kevés egyszerő utasításunk van. Tehát, azt jelenti, hogy vesszük két regiszter tartalmát, valahogyan kombináljuk ezeket, végül az eredményt elhelyezzük egy regisztert regiszterben. Úgy érveltek, hogy még ha egy CISC-utasítás helyettesítéséhez 4-5 RISC-utasítás kell is. Azt gondolnánk, hogy a RISC technológia, a teljesítményben nyújtott elınyét kihasználva, a RISC gépek (mint Sun UltraSPARC) kiszoríthatták volna a CISC gépeket (mint az Intel Pentium) a piacról. Mindenekelıtt itt van a visszafelé kompatibilitás kérdése. Másodszor meglepı módon az Intel képes volt alkalmazni ugyanezeket az ötleteket még egy CISC-architektúra esetén is. A 486-ossal kezdıdıen az Intel-processzorok tartalmaznak egy RISC-magot, amely a legegyszerőbb utasításokat egyetlen adatútciklus alatt hajtja végre, míg a komplikáltabb utasításokat interpretálja a CISC-elvnek megfelelıen. Ennek az eredménye, hogy a gyakori utasítások gyorsak, míg a kevésbé gyakoriak lassúak.

Page 19: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

19

11. Utasítás és processzor szintő párhuzamosítás: A párhuzamosság kétféleképpen lehet jelen: utasításszintő párhuzamosság vagy processzor szintő párhuzamosság formájában. Az elıbbiben, az egyes utasításokban rejlı párhuzamosságot használjuk ki, hogy több utasítást tudjunk másodpercenként kiadni. A másik esetben több processzor dolgozik egyszerre ugyanazon a feladaton Csıvezeték: Az utasítások végrehajtásának egyik legszőkebb keresztmetszete az utasítások kiolvasása a memóriából. Képesek voltak elıre beolvasni utasításokat, hogy azok rendelkezésre álljanak, amikor szükség van rájuk. Ezeket az utasításokat egy elıolvasási puffer (prefetch buffer) elnevezéső regiszterkészletben rátolták. Az elıolvasás az utasítás végrehajtását két részre osztja. A csıvezeték ezt a stratégiát viszi sokkal tovább. Az utasítás végrehajtását kettı helyett több részre osztja, minden részt külön hardverelem kezel, amelyek mind egyszerre mőködnek.

Az ábra egy öt fázisból álló csıvezetéket szemléltet. Az elsı fázis beolvassa az utasítást a memóriából, és elhelyezi a pufferben, amíg szükség nem lesz rá. A második fázis dekódolja az utasítást, meghatározza a típusát és a szükséges operandusokat. A harmadik fázis megkeresi és beolvassa az operandusokat akár regiszterbıl, akár a memóriából. A negyedik fázis hajtja végre valójában az utasítást, ez tipikusan azt jelenti, hogy az operandusokat átviszi az adatúton. Végül az ötödik fázis visszaírja az eredményt a megfelelı regiszterbe. A csıvezeték lehetıvé teszi, hogy kompromisszumot kössünk késleltetés (mennyi ideig tart egy utasítás végrehajtása) és áteresztıképesség (hány MIPS a processzor sebessége) között. Ha az órajel T nanoszekundum, és a csıvezeték n fázisú, a késleltetés nT nanoszekundum, mivel minden utasítás n állapoton halad keresztül és mindegyikben T ideig tartózkodik. Több szállítószalagos CPU: Itt az egyetlen utasítást elıolvasó egység két utasítást olvas be egyszerre, majd ezeket az egyik, illetve a másik csıvezetékre teszi. A csıvezetékeknek saját ALU-juk van, így párhuzamosan tudnak mőködni. Egyszeres és kétszeres csıvezetékeket fıként RISC gépekben használják, a 486-ostól kezdıdıen az Intel elkezdett csıvezetékeket alkalmazni a processzoraiban. Bonyolult szabályok határozzák meg, hogy két utasítás kompatibilis-e, vagyis végrehajtható-e párhuzamosan. A csıvezetékek számának négyre emelése még elképzelhetı, de ekkor már túl sok hardverelemet kell megduplázni. Ehelyett nagy teljesítményő processzorokban más megoldást alkalmaztak. Szuperskaláris processzor: Alapötlet az volt, hogy csak egy csıvezetéket használnak, de több funkcionális egységgel. A CDC 6600-as számítógép 100 ns-ként olvasott be egy utasítást és adta tovább a 10 funkcionális egység valamelyikének párhuzamos végrehajtására, mialatt a CPU újabb utasítás beolvasásába kezdett. Egy szuperskaláris CPU-nak több funkcionális egységének kell lennie, amelyek kezelik mindezeket az utasításokat. A CDC 6600 technikailag nem volt szuperskaláris, mivel egy órajel alatt csak egy utasítás végrehajtását kezdte meg. Azonban a hatás lényegében ugyanez volt: az utasítások megkezdését sokkal nagyobb ütemben végzik, mint amilyen ütemben azokat végre lehetett hajtani. Processzorszintő párhuzamosság: Lényege, hogy több processzor dolgozik ugyan azon a feladaton.

Page 20: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

20

Tömb (array) processzor: Egy tömbprocesszor nagyszámú egyforma processzorból áll, ezek ugyanazt a mőveletsorozatot végzik el különbözı adathalmazokon. A világ elsı tömbprocesszora a University of Illinois, ILLIAC IV számítógépe volt. Az eredeti terv szerint egy 4 negyedbıl álló gépet építettek volna, minden negyedben egy 8 x 8-as négyzethálóban processzor/memória párokkal. Negyedenként egy vezérlıegység adta ki az utasításokat, melyeket a hozzá tartozó processzorok szinkronizálva hajtottak végre, az adatokat mindegyik a saját memóriájából vette. Csak egyetlen negyedet építettek meg, de ez is elérte az 50 megaflop sebességet. Vektorprocesszor: A vektorprocesszor a programozó szemszögébıl nagyon hasonlít a tömbprocesszorra. A tömbprocesszortól eltérıen azonban, minden összeadás egyetlen csıvezeték elven mőködı egységben zajlik. A tömb- és a vektorprocesszorok is adattömbökkel dolgoznak. A vektorprocesszorok vektorregisztereket használnak. Egy vektorregiszter több hagyományos regiszterbıl áll. Gyors szállítószalag gondoskodik a regiszterek feltöltésérıl, szintén gyors szállítószalag továbbítja a regiszterek tartalmát az aritmetikai egységbe. Multiprocesszorok: Egy tömbprocesszor feldolgozóegységei nem függetlenek egymástól, mert mindegyiküket egy közös vezérlıegység felügyeli. A multiprocesszor egy olyan rendszer, amelyben közös memóriát használó egynél több CPU található. Több implementációs séma lehetséges. A legegyszerőbb, ha egyetlen sín van, amelyhez csatlakoztatjuk a memóriát és az összes processzort.

(a) (b)

− a: egy sínre vannak csatlakoztatva a processzorok (gond vele: ha több processzor egyszerre próbálja elérni a közös memóriát, akkor ütközések keletkezhetnek).

− b: saját lokális memóriával rendelkeznek a processzorok, ide azokat az adatokat tárolhatják, amelyeket nem kell megosztaniuk a többi processzorral.

Multiszámítógépek: Sok összekapcsolt számítógépbıl álló rendszereket építenek, amelyeknek csak saját memóriájuk van, közös memóriájuk nincs. Ezeket a rendszereket nevezik multiszámítógépeknek. A multiszámítógépek CPU-it idınként lazán kapcsoltaknak nevezik. A multiszámítógép processzorai üzenetek küldésével kommunikálnak egymással, amely néhány milisecundum. Nagy rendszerekben célszerő minden számítógépet minden másikkal összekötni, ezért 2-3 dimenziós rácsot, fákat és győrőket használnak. Közel 10 000 processzort tartalmazó multiszámítógépeket is építettek már és vettek használatba.

Page 21: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

21

12. Központi memória, bájtsorrend. A memória a számítógépnek az a része, ahol a programokat és az adatokat tároljuk. Sok informatikus a memória helyett szívesebben használja a tár (store) vagy tároló (storage) megnevezést. Bitek: A memória alapegysége a bináris számjegy, a bit. Egy bit egy 0-t vagy egy 1-est tartalmazhat. A bináris számrendszer csak két érték megkülönböztetését igényli. Emiatt ez a digitális információ legmegbízhatóbb kódolási formája. Némely számítógépet, mint például az IBM-nagygépeket, úgy reklámozzák, hogy bináris aritmetika mellett decimálist is tudnak. Ezt a trükköt úgy csinálják, hogy egy decimális számjegyet 4 biten tárolnak az ún. BCD (Binary Coded Decimal, binárisan kódolt decimális) kódolással. A négy bit 16 kombinációt ad, a számjegyhez 0-tól 9-ig elég 10 kombináció, a maradék 6 kihasználatlan. Alább látható az 1944 decimálisan, majd 16 biten binárisan kódolva: decimális: 0001 1001 0100 0100 bináris: 0000011110011000 Decimális formátumban (BCD) 16 biten 0-tól 9999-ig tudjuk tárolni a számokat, ez összesen csak 10 000 kombináció, míg egy tiszta 16 bites bináris szám 65 536 különbözı kombinációt tárolhat. Memóriacímek: A memóriák rekeszekbıl (cellákból) állnak, amelyek mindegyike valamilyen információt tárolhat. Minden rekeszhez hozzá van rendelve egy szám, a rekesz címe, a programok ezzel hivatkoznak rájuk. Ha egy memóriában n rekesz van, a címek 0-tól n – 1-ig terjednek. A memóriában minden rekeszben ugyanannyi bit van. Ha egy rekesz k bites, a 2k különbözı bitkombináció bármelyikét tárolhatja. A kettes számrendszert használó számítógépek a memóriacímeket bináris számokkal fejezik ki. Ha egy cím m bites, a megcímezhetı rekeszek száma 2m. A cím bitjeinek száma határozza meg a memória közvetlenül megcímezhetı rekeszeinek számát; ez független attól, hogy a rekeszek hány bitesek. Az utóbbi években majdnem minden számítógépgyártó szabványosította a 8 bites rekeszt, amelyet bájtnak nevezünk. Bájtokból épülnek fel a szavak. Egy 32 bit szóhosszúságú számítógép szavai 4 bájtosak, míg egy 64 bit szóhosszúságúé 8 bájtosak. Bájtsorrend: Egy szó bájtjainak sorszámozhatóak balról jobbra vagy jobbról balra. Az elsı rendszer neve nagy endián (big endian), mert a számozás a legnagyobb helyértékő bájtnál kezdıdik , ezzel ellentétben a kis endián (little endian). Az angol elnevezések Jonathan Swifttıl származnak. A számítógép-architektúrákkal kapcsolatban a kifejezést Cohen használta elıször. Fontos megérteni azt, hogy mind a nagy endián, mind a kis endián rendszerben egy 32 bites szám, például a 6, ugyanúgy a 3 legkisebb helyértékő biten elhelyezett 110 bitkombinációval van reprezentálva, a többi 29 bit pedig mind 0. A nagy endián séma szerint az 110 bitek a 3. bájtban vannak, míg a kis endián séma szerint a 0. bájtban. A számot tartalmazó szó címke mindkét esetben 0. A problémák akkor kezdıdnek, amikor az egyik gép adatokat akar küldeni a másiknak hálózaton keresztül. Tegyük fel, hogy a nagy endián elküldi a struktúrát bájtonként a kis endiánnak, a 0. bájtnál kezdi és a 19. bájtnál fejezi be. Amikor a kis endian megpróbálja kinyomtatni a nevet, akkor még minden rendbe van, de az életkor 21 x 224 lesz és az osztály száma is hasonlóan eltorzul. Annyi látszik, hogy a bájtsorrend egyértelmőségének hiánya nagy kellemetlenségeket okoz különbözı gépek közötti adatátvitel során.

Page 22: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

22

13. Hamming távolság. Hibaészlelı, hibajavító kódok: Az elektromos hálózatban keletkezı áramlökések és egyéb okok miatt a számítógépek memóriái néha hibáznak. Az ilyen hibák ellen védekezésül bizonyos memóriák hibafelismerı vagy hibajavító kódot alkalmaznak. Ezek használata esetén minden memóriabeli szót kiegészítenek speciális bitekkel. Egy szó kiolvasása után a kiegészítı biteket ellenırzik, hogy lássák, történt-e hiba. Tegyük fel, hogy egy memóriabeli szó m adatbitbıl áll, ehhez adunk még r redundáns, más néven ellenırzı bitet. A teljes hossz legyen n (vagyis n = m + r). Egy n bites, m adatbitet és r ellenırzı bitet tartalmazó egységet gyakran n bites kódszónak neveznek. Ha adott két kódszó, mondjuk 10001001 és 10110001, megállapíthatjuk, hogy hány bitpozíción térnek el. Jelen esetben 3 bit különbözik. Az eltérı bitpozíciók számnak megállapításához egy egyszerő logikai KIZÁRÓ-VAGY mőveletet kell végezni a két kódszón, majd megszámolni az eredményben az 1-es biteket. Az eltérı bitpozíciók számát a két kódszó Hamming-távolságának nevezzük. Az ellenırzı biteket kiszámító algoritmus ismeretében meghatározható az összes érvényes kódszó listája, majd ebben a listában meg lehet keresni azt a két kódszót, amelynek a Hamming-távolsága minimális(>1). Ez az érték lesz az összes kód Hamming-távolsága. Egy kódolás hibafelismerı és hibajavító képessége a Hamming-távolságtól függ. Egyszerő hibafelismerı kódolásra példaként tekintsük azt a kódolást, amikor az adatbitekhez egyetlen paritásbitet adunk. A paritásbit értékét úgy határozzuk meg, hogy a kódszóban páros (vagy páratlan) számú 1-es legyen. Ennek a kódolásnak a távolsága 2, mert minden egyes bithiba hibás paritású kódot eredményez. Egy hibát javítani képes: kódoláshoz szükséges ellenırzı bitek száma:

Szó hossza Ellenırzı bitek Teljes hossz Hozzáadott bitek %a 8 4 12 50 16 5 21 31 32 6 38 19 64 7 71 11 128 8 136 6 256 9 265 4 512 10 522 2

Tetszıleges hosszúságú memóriaszavak hibajavító kódolására használt Hamming algoritmus, mellyel az elméleti alsó korlát számolható ki: A kódolás során r redundáns bitet adunk egy m bites szóhoz, így a kódszó teljes hossza n=m+r bit lesz. A bitek nem 0-val, hanem 1-gyel kezdıdıen sorszámozzuk, a legnagyobb helyi értékő lesz az 1-es sorszámú. Minden olyan bit paritásbit lesz, amelynek sorszáma 2 hatványa; a többi adatbit. Például egy 16 bites kódszóhoz 5 paritásbitet adunk. Az 1,2,4,8,16 pozíción vannak a paritásbitek, a többi ,mind adatbit. A memóriaszó összesen 21 bites. Ebben a példában páros paritást fogunk használni. Minden paritásbit meghatározott bitpozíciókat ellenıriz; a paritásbit értékét úgy állítjuk be, hogy az ellenırzött pozíciókon lévı 1-esek száma páros legyen.

Page 23: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

23

14. Gyorsító tár (cache). Találati és hiba arány. Közös és osztott gyorsító tár. Direkt leképezéső és halmaz kezeléső gyorsító tár. Memóriába írás: A számítógépek története során a processzorok mindig gyorsabbak voltak a memóriáknál, s ez a különbség a késıbbiekben is fennmaradt. Vannak olyan módszerek, amelyek a kicsi gyors, és nagy lassú memória kombinálásával egyszerre nyújtják mérsékelt áron a gyors memória sebességét és a lassú memória méretét. A kis, gyors memória neve gyorsítótár (cache, jelentése: elrejteni). A gyorsítótár alapötlete egyszerő: a leggyakrabban használt memóriaszavakat a gyorsítótárban tartjuk. Amikor a processzornak szüksége van egy szóra, elıször belenéz a gyorsítótárba. Ha a szó nincs benne, csak akkor fordul a központi memóriához. Ha a szavak jelentıs része a gyorsítótárban van, az átlagos elérési idı nagymértékben csökken. Az a megfigyelés, hogy egy rövid idıintervallumban a memóriahivatkozások a teljes memóriának csak egy kis részét érintik, a lokalitási elv. Ha a CPU rövid idın belül egy szóra k-szor hivatkozik, ebbıl 1-szer kell a lassú memóriához fordulni, k-1-szer pedig a gyorshoz. Minél nagyobb a k, annál jobb a teljesítmény. Formálisan is elvégezhetjük a számítást, jelöljük c-vel a gyorsítótár elérési idejét, m-mel a központi memória elérési idejét és h-val a találati arányt, ami azt mutatja, hogy az össze hivatkozás mekkora hányadát lehetett a gyorsítótárból kielégíteni. Az elızı példában tehát: h=(k-1)/k. Bizonyos szerzık a hibaarányt is definiálni szokták, ennek értéke 1-h. Ezekkel a definíciókkal kiszámíthatjuk az átlagos elérési idıt = c+(1-h)*m. A lokalitási elvtıl vezéreltetve a központi memória és a gyorsítótár kötött mérető blokkra van osztva. Amikor a gyorsítótáron belüli blokkról esik szó, akkor ezeket általában gyorsítósornak (cache line) nevezik. Az egyesített gyorsítótár egyszerőbb szerkezető, és automatikusan egyensúlyban tartja az utasítások és az adatok mozgását. Mindazonáltal mára az osztott gyorsítótár felé történt elmozdulás, amikor is az utasítások és az adatok külön gyorsítótárban vannak. Direkt leképezéső gyorsítótárak: A legegyszerőbb gyorsítótár a direkt leképezéső gyorsítótár. A gyorsítótárban minden egyes bejegyzés (sor) pontosan egy gyorsítósort tartalmazhat a fımemóriából. 32 bájtos gyorsítósormérettel a gyorsítótár 64 KB-ot tartalmazhat. Egy direkt leképezéső gyorsítótárban egy adott memóriaszó pontosan egy helyen lehet tárolva. Amikor a CPU elıállít egy memóracímet, a hardver kiveszi a címbıl a 11 LINE bitet, és indexelésre használja a gyorsítótárban, hogy megtalálja a 2047 bejegyzés egyikét. Ha a bejegyzés érvényes, a memóriacím TAG mezıje és a gyorsítótár bejegyzések TAG mezıje összehasonlításra kerül. Ha megegyeznek, akkor a gyorsítótár-bejegyzés tartalmazza a keresett szót, ezt az esetet gyorsítótár-találatnak nevezzük. Ha a gyorsítótár bejegyzése érvénytelen, vagy a címkék nem egyeznek meg, akkor a keresett bejegyzés nincs a gyorsítótárban, ezt az esetet gyorsítótárhiánynak nevezzük. A dierkt leképezéső gyorsítótárak a gyorsítótárak legelterjedtebb fajtái, és meglehetısen hatékonyan is mőködnek. Halmazkezléső (csoportasszociatíc) gyorsítótárak: Az olyan gyorsítótárat, ameléynek minden egyes címhez n lehetséges bejegyzése van, n utas halmazkezeléső gyorsítótárnak nevezzük. Egy halmazkezeléső gyorsítótár bonyolultabb, mint egy direkt leképezéső, mivel a hivatkozott memóriacímbıl csak a bejegyzéshalmaz címe számítható ki, és a gyorsítótár-bejegyzések n elemő halmazát kell ellenırizni, hogy ott van e a szükséges sor. Legtöbbször elég jó algoritmus az LRU (Least Recently Used, legrégebben használt). Ez az algoritmus rendezett listát készít minden bejegyzéshalmazhoz. A bejegyzés azonnali frissítését a fımemóriában írásáteresztésnek nevezzük. Ezt a megközelítést általában egyszerőbb megvalósítani, megbízhatóbb is, mivel a memória mindig naprakész és szükség van a memória állapotának helyreállítására. Sajnos, ez általában nagyobb írásforgalmat követel a memóriába, így sok kifinomult megvalósítás hajlik a másik megoldás alkalmazására, amelyet késleltetett írásnak vagy visszaírásnak neveznek. A legtöbb késleltetett memóriába írást alkalmazandó konstrukció hajlik arra, hogy behozza az adatot a gyorsítótárban íráshiány esetén is. Ezt a módszert írásallokálásnak nevezzük.

Page 24: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

24

Memóriába írás: − Stratégiák:

o Írás áteresztés: az írás a memóriába történik. Ha a cím a gyorsítóban van, oda is be kell írni, különben el kellene dobni a gyorsító sort.

o Késleltetett írás: (write deferred, write back) ha a cím bent van a gyorsító tárban, akkor csak a gyorsító tárba írunk, a memóriába csak gyorsító sor cserénél.

o Írás allokálás: (write allocation) ha a cím nincs a gyorsító tárban, akkor elıtte betölthetjük – többnyire ezt alkalmazzák késleltetett írás esetén.

Page 25: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

25

15. Adat típusok, karakter kódolás Ahhoz, hogy a számítógépben tárolni tudjuk ezeket a karaktereket, mindegyikhez hozzá kell rendelni egy számot: pl.: a = 1, b = 2, …, z = 26, + = 27, - = 28. A karakterek számokra történı leképezését karakterkódnak nevezzük. ASCII: Széles körben elterjedt kód az ASCII (American Standard Code for Information Interchange, az információcsere amerikai szabványos kódrendszere). Minden ASCII karakter 7 bites. A 0 és 1F (hexadecimális) közötti kódok vezérlıkarakterek , amelyek nem nyomtathatók. Sok ASCII vezérlıkarakter eredetileg adatátvitelre szánták. A gyakorlatban azonban a telefonvonalakon és a hálózaton keresztül küldött üzeneteket egészen máshogy állítják össze, így az ASCII vezérlıkaraktereket már nem nagyon használják. Az ASCII nyomtatható karakterek egyértelmőek. Szerepelnek közöttük az angol nagybetők, kisbetők, számjegyek, írásjelek és néhány matematikai szimbólum.

Hexadecimális kód

Név Jelentés

0 NULL Null 1 SOH Start Of Heading (fejléc kezdete) 2 STX Start Of Text (Szöveg kezdete) … … … 1F US Unit Separator (Egységelválasztó)

Hexadec. Kód Karakterek

20 (Szóköz) 21 ! … … 7F DEL UNICODE: Az ASCII kiváló az angol nyelvterületen, de kevésbé jó más nyelvhez. Néhány nyelvnek teljesen eltérı ábécéje van (pl.: arab), bizonyos nyelveknek pedig nincs is ábécéjük (pl.: kínai). Az ASCII kibıvítésére tett elsı próbálkozás az IS 646 volt, amikor is újabb 128 karaktert adtak az ASCII-hez, ez a 8 bites Latin-1 kód volt. Az új karakterek többnyire ékezetekkel és diakritikus jelekkel ellátott latin betők voltak. A következı próbálkozás az IS 8859 volt, amely bevezette a kódlap fogalmát, ami egy 256 karakterbıl álló készlet egy bizonyos nyelvcsoport számára. Az IS 8859-2 kezeli a latinalapú szláv nyelveket és a magyart. Egy számítógépes cégekbıl álló csoport elhatározta, hogy megoldja a problémát, és életre hív egy konzorciumot egy új rendszer, a UNICODE létrehozására és nemzetközi szabvánnyá nyilvánítására (IS 10646). A UNICODE-ot már támogatja néhány programozási nyelv (JAVA), néhány operációs rendser (Windows XP) és sok alkalmazás. A UNICODE alapötlete az, hogy minden karakterhez és szimbólumhoz egy állandó, 16 bites értéket kell rendelni, amit kódpozíciónak neveznek. Megkönnyíti a programok írását, hogy minden szimbólum 16 bites. 16 bites szimbólumokkal a UNICODE 65 536 kódpozícióval rendelkezik. A kódpozíciók 16-osával blokkokra vannak osztva. Bár a UNICODE a nemzetközi használattal kapcsolatos sok problémát megold, nem vállalkozik a világ összes problémájának megoldására. Han ideogramok nincsenek ábécé szerint rendezve. A vakok szerint a Braille-írásjeleket is fel kellene venni.

Page 26: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

26

16. CPU sínek. Sín protokoll. Mester – szolga. Sín vezérlı, vevı, adóvevı. Sáv szélesség, sín szélesség. Minden modern CPU egyetlen lapkán helyezkedik el. Minden egyes CPU lapkának van lábkészlete. A CPU lapka lábait három csoportra oszthatjuk: cím, adat és vezérlés. Ezek a lábak párhuzamos huzalokon keresztül kapcsolatban vannak a memória és a B/K lapkák hasonló lábaival. A CPU a memóriával és a B/K berendezésekkel úgy tartja a kapcsolatot, hogy jeleket küld és fogad a lábain. Két lényeges paraméter határozza meg a CPU teljesítményét: az egyik a címlábak, a másik az adatlábak száma. Egy lapka m címlábbal 2m memóriahelyet tud megcímezni. m szokásos értéke 16, 20, 32 és 64. Hasonlóan egy lapka n adatlábbal n bites szavakat tud írni és olvasni egyetlen mővelet során. Az általános értékek itt 8, 16, 32, 36 és 64. A cím- és adatlábakon kívül minden CPU-nak van néhány vezérlılába is. A vezérlılábak szabályozzák a folyamatot, a CPU-ból és a CPU-ba mozgó adatok idızítését, és további, vegyes funkciók is vannak. A vezérlılábakat következı fıbb kategóriákba sorolhatjuk : 1. Sínvezérlés: a sínvezérlı lábak fıként a CPU-ból a sínre történı kimenetként szolgálnak 2. Megszakítások: a megszakítási lábak a B/K berendezésekrıl a CPU-ba tartó bemenetek 3. Sínütemezés/kiosztás: a sínütemezéslábak a sínen a forgalom irányításához szükségesek 4. Segédprocesszor jelei: a CPU és a segédprocesszor közötti kommunikáció biztosítására speciális lábak szolgálnak 5. Állapot : állapotra vonatkozó információt szolgáltat vagy fogad 6. Vegyes: A sín (bus) különbözı eszközök közötti elektronikus pálya. A korai számítógépeknek egyetlen külsı sínje vagy rendszersínje (system bus) volt. A modern személyi számítógépekben általában egy speciális célú sín áll rendelkezésre a CPU és a memória között, és egy másik sín a B/K berendezések számára. A külsı sínek mőködésére vonatkozóan pontosan meghatározott szabályokra van szükség. Ezeket a szabályokat hívjuk sínprotokollnak (bus protocoll). Szükség van mechanikai és elektronikus elıírásokra is. Néhány sínhez csatlakozó berendezés aktív, és átvitelt tud kezdeményezni, míg mások passzívak és kérésre várnak. Az aktívakat mestereknek (masters) hívjuk, a passzívakat pedig szolgáknak (slaves). Amikor a CPU a lemezvezérlıtıl egy blokk olvasását vagy írását kéri, a CPU mesterként viselkedik, a lemezvezérlı pedig a szolga. Késıbb azonban a lemezvezérlı mesterként is viselkedhet, amikor a memóriának ad ki parancsot. A számítógép által kibocsátott bináris jelek, gyakran nem elég erısek, hogy elegendı áramot adjanak a sínnek, fıleg akkor, ha a sín meglehetısen hosszú, és sok berendezés van rajta. Ezért a legtöbb sínmester egy sínvezérlınek (bus driver) nevezett lapkával kapcsolódik a sínhez, mely lényegében egy digitális erısítı. A legtöbb szolga egy sínvevıvel (bus receiver) kapcsolódik a sínhez. Azok a berendezések, amelyek mesterként és szolgaként is mőködhetnek egy kombinált lapkát használnak, a sínadóvevıt (bus transceiver). Ezek a sínhez kapcsolódó lapkák nagyon gyakran háromállapotú (tri-state) eszközök, hogy lekapcsolódhassanak a sínrıl, amikor nem szükséges a kapcsolat, máskor pedig nyílt győjtık (open collector). Ezt az elrendezést gyakran huzalozott VAGY-nak (wired-OR) hívják. Két módon tudjuk egy sín sávszélességét ( (továbbítható bitek száma) / sec ) megnövelni: vagy csökkenteni kell a sínciklus idejét (több adatátvitel/s), vagy növelni kell a szélességet (több bitet kell átvinni egyszerre). Ugyan egy sínt fel lehet gyorsítani, de nehéz, mivel az egyes vezetékeken a jelek kissé eltérı sebességgel haladnak – ez a probléma sínasszimmetriaként (bus skew) ismert. Minél több címvezetéke van egy sínnek, annál nagyobb memóriát tud a központi egységnek közvetlenül megcímezni. A szélesebb sínek több vezetéket igényelnek, több fizikai helyet is foglalnak, valamint nagyobb csatlakozóra van szükség. Mindezek költségesebbé teszik a síneket. Az eredeti IBM PC egy 8088 típusú CPU-t tartalmazott és egy 20 bites

Page 27: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

27

címsínt. Ez a 20 bit 1 MB memória megcímzését tette lehetıvé a PC számára. Amikor a következı lapka (80286) megjelent, az Intel elhatározta, hogy megnöveli a címtartományt 16 MB-ra, így négy újabb címvezetéket lehetett hozzáadni. Az új címvezetékek miatt azonban több vezérlıjelre is szükség volt.

Page 28: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

28

17. Sokszorozott sín A tervezık, hogy megkerüljék a túl széles sínek problémáját, idınként multiplexelt sínt (multiplexed bus) részesítik elınyben. Ebben a konstrukcióban, ahelyett hogy külön cím és külön adatvezetékek lennének, mondjuk 32 vezeték van a címeknek és adatoknak együtt. A sín mőködésének kezdetén a vezetékeket a címzéshez használják, a késıbbiekben pedig adattovábbításra. A vezetékek multiplexelése csökkenti a sín szélességét (és a költségeket), ugyanakkor lassabb rendszert eredményez. A síntervezıknek gondosan mérlegelniük kell mindezeket a lehetıségeket, amikor kiválasztják a megfelelıt.

Page 29: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

29

18. Sín idızítés: szinkron, asszinkron sín, teljes kézfogás A sínek két diszjunkt kategóriába csoportosíthatók, az idızítésüktıl függıen. Szinkron sínnek (synchronous bus) van egy vezetéke, amelyre egy kristályoszcillátor van kapcsolva. Ezen a vezetéken egy általában 5 és 100 MHz közé esı frekvenciájú négyszög hullámokból álló jelet ad. Példában 100 MHz-es órajelet használunk, ami 10 ns-os sínciklust jelent. Feltesszük továbbá, hogy a memóriából történı olvasás 15 ns idıt igényel, attól számítva, hogy a cím a sínen van és stabil. Az elsı ciklus a T1 felfutó élénél kezdıdik el és a harmadik a T4 felfutó élnél ér véget. A T1 kezdetét az órajel felfutó éle definiálja. A T1 periódus közben a CPU felteszi a kívánt memóriaszó címét a címvezetékekre. Amikor a címvezetékek már abban az állapotban vannak, hogy éppen felveszik az új értéküket, az MREQ és az RD jeleket beállítják. Az elıbbi azt jelzi, hogy a memória elérése van folyamatban. A memória számára 15 ns szükséges, miután a cím stabil, ezért nem tudja T2 alatt szolgáltatni a kívánt adatot. Hogy közölje a CPU-val, hogy ne várjon az adatra, a memória jelet küld a WAIT vezetéken T2 kezdetekor. Ez várakozó állapotokat (wait states) szúr be. A T3 kezdetekor, amikor már biztos, hogy ebben a ciklusban meglesz az adat, a memória negálja a WAIT jelet. A T3 elsı felében a memória felteszi az adatokat az adatvezetékekre. A T3 lefutó élének hatására a CPU leolvassa az adatvonalakat, és feljegyzi az értékeket egy belsı regiszterben. Az aszinkron sínnek (asynchronous bus) nincs ilyen fı órajel-generátora. Bár a szinkron sínekkel diszkrét idıintervallumaik miatt egyszerőbben dolgozhatunk, mégis van néhány problémájuk. Például minden sínciklus többszörösével mőködik. Ami még rosszabb, ha kiválasztották a sín frekvenciáját, majd elkészítették a memória- és a B/K kártyákat, már nehéz a jövıben bekövetkezı technológiai változások elınyeit kihasználni. A heterogén technológiával készült eszközöket kezelni tudjuk, ha áttérünk az aszinkron sínre, amelyben nincs órajel. Miután a sínmester beállította a címet, az MREQ, az RD jeleket és minden mást, amire szükség van, beállít egy speciális vezérlıjelet, amelyet MSYN (Master SYNchronization) mesterszinkronizációnak nevezünk. Amint a szolga ezt meglátja, elvégzi a munkát, amilyen gyorsan csak tudja. Amikor elkészült, beállítja az SSYN (Slave SYNchronization) szolgaszinkronizáció jelet. Amint a mester érzékeli hogy beállították az SSYN jelet, megtudja, hogy rendelkezésére állnak az adatok, ezért tárolja azokat, majd negálja a címvezetékeket, az MREQ, az RD és a MSYN jelekkel együtt. Amint a szolga észleli MSYN negálását, megtudja, hogy a ciklus véget ért, ezért ı is negálja az SSYN jelet. Az MSYN jel hatására megjelennek az adatbitek a sínen, valamint a szolga beállítja az SSYN jelet. Az SSYN jel a címvezetékek, MREQ, RD és MSYN jelek negálását eredményezi. Végül az MSYN jel negálása az SSYN negálását okozza. Az ilyen módon egymáshoz kapcsolódó jelek halmazát hívják teljes kézfogásnak (full handshake). A lényeg négy eseményt takar: 1. MSYN beállítása. 2. SSYN beállítása válaszul MSYN beállítására. 3. MSYN negálása válaszul SSYN beállítására. 4. SSYN negálása válaszul MSYN negálására. Teljes kézfogás független az idızítéstıl. Minden eseményt egy megelızı esemény vált ki.

Page 30: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

30

19. Sín ütemezés, sín mőveletek Mi történne, ha két vagy több eszköz egyszerre szeretne sínmester lenni? A válasz, hogy sínütemezı (bus arbitration) mechanizmusra van szükség, hogy elkerülhessük a káoszt. Az ütemezı mechanizmusa lehet centralizált vagy decentralizált. Elsıként nézzük meg a centralizált mechanizmust. Amikor a sínütemezı egy sínkérést észlel, beállítja a használati engedélye jelet a sínhasználatot engedélyezı vonalon. Amikor a sínütemezıhöz fizikailag legközelebbi eszköz meglátja az engedélyezést, ellenırzi, hogy adott-e ki kérést. Ha igen, átveszi a sín irányítását. Ha nem adott ki kérést, továbbítja az engedélyt a sorban következı eszköznek, amely ugyanígy viselkedik, és így tovább, amíg valamelyik eszköz nem fogadja az engedélyt, és át nem veszi a sín szerepét. Ezt a módszert láncolásnak (daisy chaining) nevezik. Minden szintnek van vezetéke a sínhasználat kérésére és sínhasználat engedélyezésére. Ha több szinten is érkezik kérés, az ütemezı a sínhasználat engedélyét csak a legnagyobb prioritásúnak fogja megadni. Az azonos prioritású eszközök között pedig a láncolás mőködik. Bizonyos sínütemezıknek van egy harmadik vezetéke is, amelyet akkor állít be egy eszköz, ha fogadta az engedélyt, és átvette a sín irányítását. Az elv az, hogy a CPU mindig tud várni, viszont egy B/K eszköznek gyakran gyorsan meg kell kapnia a sínt egyébként elveszti a bejövı adatokat. A decentralizált sínütemezés szintén megvalósítható. Például, egy számítógépnek 16 prioritással rendelkezı vezetéke lehet a sínhasználat kérésére. Minden eszköz az összes ilyen vezetéket figyeli, így minden sínciklus végén, minden eszköz tudja hogy ı volt-e a legnagyobb prioritású kérı eszköz. Összehasonlítva a centralizált ütemezéssel, ez az ütemezı módszer több sínvezetéket igényel, viszont megtakarítható az ütemezı költsége. Ezenkívül az eszközök száma nem lehet több a használati kérés vezetékek számánál. Eddig közönséges sínciklusokkal foglalkoztunk, amelyekben egy mester adatokat olvas be a szolgától, vagy adatokat ír ki számára. Rendszerint egyszerre egy szó kerül továbbításra. Azonban, ha gyorsítótárat használnak, egyszerre egy egész gyorsítósor átvitelére van szükség. A blokkátvitel gyakran hatékonyabb lehet, mint egyes szavak átvitele. Másfajta sínciklusok is vannak. Például, egy többprocesszoros rendszerben, amelyben két vagy több CPU kapcsolódik rá ugyanarra a sínre, gyakran szükséges annak biztosítása, hogy egyszerre csak egy CPU használhasson valamilyen kritikus adatstruktúrát a memóriából. Baj akkor történik, ha egy szerencsétlen véletlen következtében a két CPU is kiolvassa a változót két egymás követı sínciklusban. Ezt megelızendı, a többprocesszoros rendszerben gyakran van egy olvasás-módosítás-vísszaírás sínmővelet. A sínciklusok egy másik fontos típusa a megszakítások kezelésére szolgál. Az IBM PC és minden követıje, Intel 8259A lapkát használja. Maximum nyolc B/K vezérlılapka kapcsolható közvetlenül a 8259A nyolc IRX megszakításkérés bemenetére.

Page 31: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

31

20. Általános soros sín, PCI Express: Általános soros sín: 1993-ban hét vállalat képviselıi összeültek, hogy megvitassák a problémát, és a számítógépek és az alacsony sebességő perifériák összekapcsolásának jobb módját dolgozzák ki. Az eredményül kapott szabványt, az USB-t (Universal Serial Bus, univerzális soros sín) hivatalosan 1998-ban jelentették be. Olyan alacsony sebességő eszközök számára tervezték, mint a billentyőzet, az egerek, digitális telefon stb. Az USB 1.0-ős verziójának sávszélessége mintegy 1,5 MB/s, amely elegendı a billentyőzet és az egerek számára, az 1.1-es verzió pedig 12 MB/s sebességgel mőködik, amely elegendı a nyomtatók, digitális fényképezıgépek számára. Egy USB-rendszer egy központi csomópontból (root hub) áll, amely a rendszersínre csatlakozik. Most, hogy az USB 2.0 480 Mbps sebességgel mőködik, nyilvánvalóan versenytársa az IEEE 1394 szabványú sínnek, amelyet közismerten FireWire-nek neveznek, és ami 400 Mbps sebességgel mőködik. Majdnem minden új Pentium rendszer az USB 2.0-val kapható, mégsem valószínő, hogy az IEEE 1394 eltőnik. PCI Express: PCI Express arhitektúra: A PCI Express megoldás lényege, hogy szabaduljunk meg a párhuzamos síntıl, annak sok sínmesterétıl és szolgájától, és térjünk át jól megtervezett, nagy sebességő közvetlen soros kapcsolatokra. Ez a megoldás gyökeresen szakít az ISA/EISA/PCI síntradícióval. Az alapötlet a következı: A PC legbelül a CPU, memória- és B/K vezérlılapkából áll, amelyeket össze kell kapcsolni. A PCI Express egy általános célú kapcsolót biztosít a lapkák összekötéséhez soros kapcsolat segítségével. Új az a kapcsoló, amely a csatoló lapkához kapcsolódik. Mindegyik B/K lapkának saját egyedi összeköttetése van a kapcsolóhoz. Mindegyik kapcsolat két egyirányú csatornapárból áll. A PCI Express a régi PCI sín arhitektúrától három fontos dologban tér el. Kettıt már láttunk: a központosított kapcsoló, a több leágazású sín helyett, valamint a keskeny közvetlen soros kapcsolat a széles, párhuzamos sín helyett. A harmadik a PCI sín mögött rejlı elképzelés az, hogy a sínmester parancsot ad a szolgának, ha egy szót vagy egy adatblokkot be akar olvasni. A PCI Express modellje ezzel szemben az, hogy egyik eszköz egy adatcsomagot küld a másik eszköznek. Valójában egy PC a PCI Express-szel egy kicsi csomagkapcsolt hálózat. A negyedik különbség az, hogy hibajelzı kódot használnak a csomagoknál. Az ötödik, hogy a kapcsolat egy lapka és a soros kapcsoló között hosszabb lehet, elérheti az 50 cm-t. A hetedik különbség, hogy az eszközök melegen csatlakoztathatóak. Végül, a soros csatlakozók sokkal kisebbek, mint a régi PCI csatlakozók. PCI Express protokollrendszer: A PCI Express réteges kapcsolati protokollrendszerrel

rendelkezik. A protokoll a két fél közötti párbeszédet irányító szabályok halmaza. A protokollrendszer protokollok hierarchiája. A PCI Express protokollrendszer az ábrán látható. A legalsó réteg a fizikai réteg. Azzal foglalkozik, hogy biteket továbbít a küldıtıl a fogadónak egy közvetlen

kapcsolaton keresztül. Minden egyes kapcsolat egy vagy több szimplex csatornapárból áll. Egy-egy csatornát sávnak neveznek. Az elsı generációs termékeknek bármely irányban

Page 32: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

32

legalább 2,5 Gbps sebességet kell biztosítaniuk, de remélik, hogy a sebesség hamarosan mindkét irányban eléri a 10 Gbps-t. Az ISA/EISA/OCI sínekkel ellentétben a PCI Expressnek nincs fı órajel-generátora. Amíg a fizikai téret a bitek átvitelével foglalkozik, addig a kapcsolati réteg a csomagok átvitelével. Fogja a tranzakciós rétegtıl kapott fejlécet és hasznos adatot, egy sorszámot és egy CRC-nek (Cyclic Redundancy Check, ciklikus rendundanciakód) nevezett hibajelzı kódot ad hozzá. A CRC egy bizonyos algoritmusnak a fejlécre és a hasznos adatokra történı futtatásával számítható ki. Ha megegyeznek, egy rövid nyugtázó csomagot küld vissza, ezzel jelzi a csomag hibátlan megérkezését. Ha a két eredmény nem egyedik, a fogadó kéri a csomag újraküldését. A tranzakciós réteg kezeli a síntevékenységeket. Egy szó olvasása a memóriából két tranzakciót kíván: az egyiket a CPU vahy egy DMA csatorna kezdeményezi, és kér bizonyos adatokat, a másik az adatokat szolgáltató céleszköz. Minden egyes sávot feloszthat nyolc virtuális áramkörre, amlyek mindegyike különbözı jellegő forgalmaz bonyolít le. A PCI Express rendszer a szoftverrétegen keresztül csatlakozik az operációs rendszerhez. Képes a PCI sín emulálására, így a létezı operációs rendszerek változtatás nélkül tudnak mőködni a PCI Express rendszert alkalmazva.

Page 33: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

33

21. Parallel Input/Output (PIO), valódi és memóriára leképezett I/O eszköz. Teljes és részleges cím dekódolás. Egy tipikus kis vagy közepes számítógéprendszer CPU lapká(k)ból, memórialapkákból és néhány B/K vezérlıbıl áll, amit mind egy sín köt össze. Számos B/K lapka kapható, és állandóan egyre újabbakat hoznak forgalomba. A leggyakoriabbak az UART, az USART, a képrernyımeghajtó, a diszkvezérlı és a PIO lapkák. Az UART egy olyan lapka, amely egy bájtot tud olvasni az adatsínrıl, és azt bitenként továbbítja egy soros vonalon egy terminál felé, illetve adatokat tud fogadni egy terminálról. Az USART lapkák nagyrész protokollok szerinti szinkron átvitelt tudnak kezelni, másrészt az UART lapkák minden funkcióját megtudják valósítani. PIO (Paralell Input/Output) lapkák: Egy tipikus PIO lapka az Intel 8255A típusú. E lapkának 24 B/K vonala van, amellyel bármilyen TTL kompatibilis eszközhöz tud kapcsolódni. A legegyszerőbb módja a 8255A használatának, hogy három teljesen független 8 bites portra osztjuk, A-ra, B-re és C-re. Mindegyik port egy 8 bites tárolóregiszterrel van kapcsolatba. Ahhoz, hogy a port kimenı vonalait beállíthassuk, a központi egység beírja a megfelelı 8 bites számot a megfelelı regiszterbe, a 8 bites szám megjelenik a kimenı vonalakon, és ott meg is marad egészen a regiszter újraírásáig. Amikor a portot bemenetként használjuk, akkor a központi egység csupán a megfelelı tárolót olvassa ki. Más mőködési módjai kézfogást biztosítanak a külsı eszközökkel. Ha valódi B/K eszközként szeretnénk használni, akkor egy külön sínvezetékre van szükség, amellyel jelezni tudjuk, hogy egy B/K eszközt szeretnénk használni, nem pedig a memóriát. Ha a memória leképzett B/K módszert szeretnénk használni, akkor a memória 4 bájtját ki kell jelölnünk, három bájtot a három port számára és egy bájtot a vezérlıregiszter számára. Az EPROM 2 KB címterületet igényel, a RAM szintén 2 KB területet és a PIO 4 bájtot. Az EPROM a 2 KB-ig terjedı címterületet foglalja el, a RAM a 32 KB-tól 34 KB-ig terjedı területet, valamint a PIO a memória legfelsı 4 bájtját 65532-tıl 65535-ig. Ha a másik módszert választottuk volna a PIO megcímzésére, a külön B/K címterületet, akkor az semmilyen memória címtartományt nem igényelt volna (viszont 4 bájt területet igényelt volna a B/K címtartományból). Minden olyan cím, amelynek a felsı 5 bitje 0, a memória alsó 2 KB területére esik, tehát az EPROM területére. Az EPROM lapka kiválasztó vezetékét egy 5 bites összehasonlító áramkör bemenetére kell kötni, az egyik bementét pedig a 00000-ra. Ugyanezt az elvet használják a RAM esetében is, azonban a RAM az olyan bináris címekre kell, hogy válaszoljon, amelyek 1000 0xxx xxxx xxxx alakúak binárisan, ezért még egy inverterre is szükség van. A PIO címdekódolás kissé bonyolultabb. A PIO-t akkor kell használni, ha a cím 1111 1111 1111 11xx alakú. Ha azonban a számítógép csak a központi egységet, két memórialapkát, és a PIO-t használja, akkor nagy mértékben egyszerősíthetı a címdekódolás feladata, mivel csak és kizárólag az EPROM címeinek esetében fordul elı az, hogy a legfelsı címvezeték az 0. A RAM kiválasztása történhet az alapján, hogy csak az 10xx xxxx xxxx xxxx alakú érvényes címek lehetnek a RAM-ban, ezért a kiválasztás céljára elegendı a felsı 2 bit. Minden cím, ami 11-gyel kezdıdik az a PIO címe lesz. A részleges címdekódolás esetében nem teljes címeket használunk fel a dekódolásra. Megvan az a tulajdonsága, hogy ha olvasunk a 0001 0000 0000 0000, 0001 1000 0000 0000 vagy a 0010 0000 0000 0000 címekrıl, ugyanazt az eredményt kapjuk. Minden olyan címzés esetében, amely a memória alsó felére mutat, az EPROM lesz kiválasztva. A részleges címdekódolást el kell kerülni, mert túlságosan nagy címterületet köt le. Teljes címdekódolás megvalósítására 8 darab 8 KB x 8 bájtos RAM-ot használunk fel. Egy olyan számítógép számára, amelyben 8 darab 2 KB x 8 bájtos memória van, egyetlen ilyen

Page 34: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

34

dekóder szintén elegendı, feltéve, hogy a lapkák mind a memóriatartomány különbözı 8 KB mérető címterületén vannak.

Page 35: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

35

22. Mikroarchitektúra szint. Mikroutasítások: Mic-1. A mic-1 mőködése(lásd:23-as tétel). Memória mőveletek. ALU és az adatút vezérlése. Microarchitektúra szint: A digitális logika szintje feletti szint a microarchitektúra szintje. Feladata a felette lévı ISA-szint megvalósítása. A mikroarchitektúra-szintjének tervezése függ az ISA-szint megvalósításától, valamint a számítógép ár- és teljesítmény-célkitőzéseitıl. Összetettebb ISA-k, mint a Pentium 4, egyetlenegy utasítás végrehajtásához több ciklust igényelnek. Mikroutasítások: Az adatutat 9 + 4 + 8 + 2 + 1 = 24 jellel, azaz 24 bittel vezérelhetjük. Azonban ez a 24 bit csak egy ciklusra vezérli az adatutat. A vezérlés második része arra való, hogy meghatározza, mit szándékozunk tenni a következı ciklusban. Ezt is bevonjuk a vezérlı tervezésébe, megalkotunk egy formátumot a végrehajtandó mőveletek leírására, használni fogjuk a 24 vezérlıbitet, valamint további két mezıt: a NEXT_ADDRESS és a JAM mezıt. Memória mőveletek: Gépünknek két különbözı módja van, hogy a memóriával kommunikáljon: egy 32 bites, szúcímzéső memóriaport és egy 8 bites, bájtcímzéső memóriaport. A 32 bites portot két regiszter vezérli, a MAR (memóracím-regiszter) és az MDR (memóriaadat-regiszter). Az utóbbi port csak adatot tud olvasni memóriából; nem képes abba adatot írni. Ezeket a regisztereket egy vagy két vezérlıjel irányítja. Egy memória olvasás vagy írás kezdeményezéséhez a megfelelı memóriaregisztereket fel kell tölteni, majd egy olvasó vagy író jelet kell kibocsátani a memória felé. A MAR szó címeket tartalmaz, úgy, hogy a 0, 1, 2… értékek egymást követı szavakra hivatkoznak, a PC pedig bájt címeket tartalmaz, úgy, hogy a 0, 1, 2… értékek egymást követı bájtokra hivatkoznak. A valódi fizikai megvalósításban csak 1 tényleges memória van, és az bájtszervezéső. Megengedi a MAR-nak, hogy szavakban számláljon, mialatt a fizikai memória bájtokban számlál. Ez úgy küszöbölhetı ki, hogy a MAR 0. bitje a címsín 2. vonalához kötıdik, az 1. bit a 3. vonalhoz és így tovább. A másik lehetıség, hogy a 8 bites MBR-t 32 bites szóvá konvertáljuk, úgy, hogy egy -128 és +127 közötti elıjeles értéknek tekintjük, és generálunk egy 32 bites szót. Ez valójában az MBR elıjelbitjének a B sín felsı 24 bitjére történı másolását jelenti, és elıjel-kiterjesztésnek nevezzük. Ilyenkor a felsı 24 bit vagy mind 0, vagy mind 1 lesz, attól függıen, hogy a 8 bites MBR bal szélsı bitje 0 vagy 1. ALU és az adatút vezérlése: A Mic-1 adatútjának vezérléséhez 29 jelre van szükség. Ezek öt mőködési csoportba oszthatók. 1. 9 jel vezérli az adatírást a C sínrıl a regiszterekbe. 2. 9 jel vezérli a regiszterek engedélyezését a B sínre az ALU bemenete számára. 3. 8 jel vezérli az ALU és a léptetı tevékenységeit. 4. 2 jel (nem látható) mutatja a memóriaolvasást/írást MAR /MDR-n keresztül. 5. 1 jel (nem látható) mutatja a memóriabetöltést a PC/MBR-n keresztül A ciklus a regiszterek értékének B sínre másolásából, a jelek az ALU-n és a léptetın keresztüli továbbításából, az eredmény C sínre vitelébıl, és végül az eredménynek a megfelelı regiszterbe írásából áll. Ezek után, a memóriamővelet az adatútciklus végén kezdıdik, miután a regiszterek (MAR vagy PC) feltöltıdtek. A memóriaadat a következı ciklus legvégén áll rendelkezésre az MBR vagy MDR-ben, és csak az ezt követı ciklusban használható fel. Az MBR és MDR más regiszterekhez hasonlóan az óra emelkedı élére töltıdik fel, ezért olvashatók abban a ciklusban, amelyben az új memóriaolvasás megtörténik. A C sínen lévı eredményt egynél több regiszterbe írjuk, addig sose kívánunk egyszerre egynél több regisztert a B sínre engedni. Redukálhatjuk azon bitek számát, melyek kiválasztják a lehetséges források közül, hogy melyiket vezessük a B sínre. Csak 9 lehetséges regiszter van, amit a B sínre vezethetünk.

Page 36: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

36

23. Mic-1 mőködése, adatút ciklusa, memória ciklusa, mikroprogramja Mic-1 mőködése: Az 1. részciklus alatt, melyet az óra lefutó éle indított, a MIR feltöltıdik az MPC-ben jelenleg lévı címsínrıl. A 2. részciklus alatt a jelek szétterjednek MIR-bıl, és B sín feltöltıdik a kiválasztott regiszterbıl. A 3. részciklus alatt az ALU és a léptetı mőködik, és stabil eredményt állít elı. A 4. részciklus alatt a C sín, a memóriasínek és az ALU értékei stabillá válnak. Az óra emelkedı élére a regiszterek a C sínrıl feltöltıdnek, az N és Z flip-flopok betöltıdnek, és az MBR és MDR megkapják az elızı adatútciklus végén idított memóriamőveletbıl származó eredményüket. Amint az MBR elérhetı, az MPC betöltıdik a következı mikroutasítás elıkészítéséhez. Így az MPC megkapja értékét valamikor annak az intervallumnak a közepén, amikor az óra magas, de már az után hogy MBR/MDR készen van. Ez vagy szintvezérelt lehet, vagy az élvezérelt egy meghatározott késleltetéssel az óra felfutó éle után. Egy a lényeg, az MPC addig nem töltıdik be, amíg azok a regiszterek készen nincsenek, amelyektıl függ (MBR, N és Z). Ahogy az órajel lefut, az MPC megcímezheti a vezérlıtárat, és egy új ciklus kezdıdhet.

Adatút ciklusa: Minden órajel ciklus kezdetén (az óra lefutó éle) a MIR feltöltıdik az MPC által mutatott vezérlıtárbeli szóval. A MIR feltöltési idejét az ∆w jelöli. Ha valaki részciklusokban gondolkodik, a MIR az elsı részciklusban feltöltıdik. Mihelyt a mikroutasítás bekerül a MIR-be, különbözı jelek futnak az adatútra. Egy regiszter kikerül a B sínre, az ALU megtudja, melyik a végrehajtandó mővelet, és sok tevékenység zajlik arrafelé. Ez a második részciklus. Az óra kezdetétıl ∆w + ∆x idı után az ALU bemeneti stabilak lesznek. Egy másik ∆y-nál késıbb minden megállapodik, és az ALU, N, Z és a léptetı kimenete stabil lesz. Az N és Z értékek ekkor eltárolódnak két 1 bites flip-flopban. Ezek a bitek az óra emelkedı élére tárolódnak, melyek a C sínrıl és a memóriából töltıdnek fel. Az ALU kimenete nem tárolódik, hanem azonnal a léptetıbe töltıdik. Az ALU és a léptetı tevékenysége a 3. részciklusba esik. Egy további ∆z idı után, a léptetı kimenete a C sínen keresztül eléri a regisztereket. Ekkor, a ciklus vége közelében a regiszterek feltölthetık. A 4. részciklus a regiszterek és a N és Z flip-flopok betöltésébıl áll. Egy kicsivel az óra emelkedı éle után befejezıdik, amikor minden eredmény el van már mentve, és az elızı memóriamővelet eredményei rendelkezésre állnak, és az MPC is fel van töltve.

Memória ciklusa: A memória ciklus az adatútciklus végén kezdıdik, (a C sínrıl a regiszterek feltöltése után), ezért ha a memória címet módosította ez a mikroutasítás, akkor a memória cím a módosított MAR illetve PC regiszter értéke lesz. Az olvasás eredménye csak két ciklussal késıbb használható az ALU-ban, mert MDR illetve MBR csak a következı adatút ciklus vége felé töltıdik fel a memóriából, addig MDR illetve MBR régi értéke érhetı el.

Page 37: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

37

Mikroprogramja: - 512x36 bites vezérlıtár a mikroprogramnak, - MPC (MicroProgram Counter): mikroprogram-utasításszámláló - MIR (Micro Instruction Register): mikroutasítás-regiszter Az adatút ciklus elején MIR feltöltıdik a vezérlıtár MPC által felmutatott szavával.

Page 38: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

38

24. MPC új értékének kialakulása Mic-1-en A következı mikroutasítás címének kiszámítása azután kezdıdik, hogy a MIR feltöltıdik és stabilizálódik. Elıször a 9 bites NEXT_ADDRESS mezı az MPC-be másolódik. Mialatt a másolás zajlik, a JAM mezı vizsgálat alá kerül. Ha JAM egy vagy több bitje 1, több tevékenység szükséges. Ha JAMN be van állítva, az 1 bites N flip-flop OR kapcsolattal kerül az MPC legmagasabb bitjére. Hasonlóan, ha JAMZ be van állítva, az 1 bites Z flip-flop kerül OR kapcsolattal oda. Ha mindkettı be van állítva, mindkettı OR kapcsolattal kerül ugyanoda. Az N és Z flip-flop azért szükséges, mert az órajel emelkedı éle után (mialatt az óra magas) a B sín nincs már tovább vezérelve, így az ALU kimeneteirıl a továbbiakban már nem tételezhetjük fel, hogy helyesek. Elmentve az ALU állapotjelzıit N-be és Z-be, a helyes értékeket elérhetıvé és tartóssá tesszük az MPC kiszámításához. A számítást végzı logikát „magas bit”-nek jelöljük. Ezt a következı logikai függvény valósítja meg:

F = (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRESS[8] Minden esetben az MPC csak a következı két lehetséges érték egyikét veheti fel: 1. A NEXT_ADDRESS értéke; 2. A NEXT_ADRESS értéke, és a legmagasabb helyértékő biten OR 1 mővelet. Tehát a következı mikroutasítás címe az elızı ALU-mőveletnél tárolt Z bittıl függ. Ha a Z bit 0, a következı mikroutasítás a 0x92-rıl jön. Ha a Z bit 1, a következı mikroutasítás a 0x192-rıl érkezik. A harmadik bit a JAM mezıben a JMPC. Az MBR 8 bitje bitenkénti OR kapcsolatba kerül az aktuális mikroutasítás NEXT_ADDRESS mezıjének legalsó 8 bitjével. Az eredmény az MPC-be kerül. Amikor a JMPC1, a NEXT_ADDRESS alsó 8 bitje általában nulla. A magas helyértékő bit lehet 0 vagy 1, vagyis a JMPC által használt NEXT_ADDRESS értéke általában 0x000 vagy 0x100. Azáltal, hogy OR mőveletet végzünk az MBR és NEXT_ADDRESS között, és az eredményt MPC-be tároljuk, lehetıvé válik a többutas elágazás hatékony megvalósítására. Egy jellemzı használatban az MBR mőveleti kódot tartalmaz, így a JMPC használata egyértelmő választást eredményez a következı mikroutasítás számára minden lehetséges mőveleti kód esetén.

Page 39: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

39

25. Az IJVM, az IJVM memóra modellje, az IJVM megvalósítsa Mic-1-en Az IJVM utasításai rövidek és velısek. Minden utasítás tartalmaz néhány mezıt, és mindegyiknek van valami speciális szerepe. Minden utasítás elsı mezıje a mővkód (Operation Code, mőveleti kód), amelyik azonosítja az utasítást, és megmondja, hogy ez ADD vagy BRANCH vagy valami más. Sok utasításnak van egy további mezıje is, amely az operandust határozza meg. A végrehajtásnak ez a betölt-végrehajt ciklusként is nevezett modellje hasznos, alapja lehet olyan ISA-k megvalósításának is, mint az IJVM, melynek bonyolult utasításai vannak. Olyan memóriából áll, amely két módon látható: egy 4 294 967 296 bájtos (4 GB) vagy egy 1 073 741 824 (1 GB) szavas tömb, ahol minden szó 4 bájtból áll. A következı memóriaterületek vannak definiálva: 1. Konstans mezı: Erre a területre IJVM-program nem írhat, konstansokból, stringekbıl és olyan mutatókból áll, amelyek a memória más, hivatkozható területeire mutatnak. 2. Lokális változók mezıje: Egy metódus minden hívásakor egy terület foglalódik le, hogy a hívás ideje alatt a változók itt tárolódjanak. Ezt a lokális változók mezıjének nevezzük. Ennek a területnek az elején vannak a paraméterek, amelyekkel metódust hívhatunk. 3. Operandusverem: A verem mezı garantáltan nem halad meg egy bizonyos méretet, amit a Java-fordítóprogram elıre kiszámol. Az operandusverem helye közvetlenül a lokális változók mezıje fölött van lefoglalva. Mindenesetre van egy SP implicit regiszter, amely tartalmazza a verem legfelsı szavának címét. 4. Metódus mezı: Végül a memóriának van egy olyan része, amely a programot tartalmazza, „szöveg” területként hivatkozhatunk rá UNIX processzusban. Van egy implicit regiszter, amely tartalmazza annak az utasításának a címét, amelyet következıként be kell tölteni. Ez a mutató az utasításszámláló vagy PC. Minden mikroutasításhoz három oszlop van megadva: a szimbolikus név, a hozzá tartozó mikrokód és a megjegyzés. A legtöbb regisztere számára a nevek kiválasztása nyilvánvalóvá Címke Mőveletek Megjegyzések Main1 PC = PC + 1; goto(MBR) MBR-ben a mőleleti kód; veszi a következı bájtot, elágazás. vált: CPP, LV és SP arra szolgálnak, hogy mutatókat tartalmaznak rendre a konstans mezıre, lokális változókra és a verem tetejére, míg a PC az utasításfolyam következıként betöltendı bájtjának címét tartalmazza. Az MBR egy 1 bájtos regiszter, amelyik az utasításfolyam bájtjait egymást követıen tartalmazza. Minden utasítás elején és végén TOS tartalmazza annak a memóriahelynek az értékét, melyre SP mutat. Néhány olyan utasítás számára, amely a TOS-t karbantartja, ez többlet memóriamőveletet jelent. Ilyen például a POP utasítás, amelyik eldobja a legfelsı szót. Az OPC regiszter ideiglenes (azaz firkáló) regiszter. Nincs elıre meghatározott használata. Használjuk például annak a címnek a tárolására, ahol az elágazó utasítás mőveleti kódja van, miközben a PC-t megnöveljük, hogy paramétereket elérjünk. A fıciklus a Main1-gyel címkézett sorban kezdıdik. Mindig úgy indul, hogy a PC egy mőveleti kódot tartalmazó memóriahely címét tartalmazza, továbbá ez a mőveleti kód már be van töltve az MBR-be.

Page 40: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

40

26. A WIDE utasítás hatása és mőködése Mic-1-en A WIDE utasítás egy prefix utasítás, a következı utasításnak 16 bites indexe van. A WIDE a szokásos módon dekódolódik, amely a wide 1-hez vezet, ami kezeli a WIDE opcode-t. Bár a „kiszélesítendõ” opcode már közvetlenül elérhetõ az MBR-ben, wide 1 elhozza az opcode utáni elsõ byte-ot, mert a mikroprogram logikája mindig elvárja azt, hogy ott legyen. Ezután egy második többirányú elágazás történik, ezúttal a WIDE-ot követõ byte-ot használva elküldésre. Mindazonáltal, mivel a WIDE ILOAD különbözõ mikrokódot követel, mint az ILOAD és a WIDE ISTORE különbözı mikrokódot követel, mint az ISTORE stb. ez a második többirányú ág nem használhatja az opcode-t, mint célterület címet, mint ahogy azt a Main 1 teszi. Ehelyett a wide 1 VAGY mûvelettel összekapcsolja 0x100- t az opcode-dal, mialatt az MPC-be teszi. Eredményképpen a WIDE ILOAD megvalósítása 0x115-ön kezdõdik (0x15 helyett), a WIDE ISTORE megvalósítása pedig a 0x136-on kezdõdik (0x36 helyett) stb. Ez alapján minden WIDE utasításkód 256-tal (azaz 0x100-zal) magasabb címen kezdõdik a vezérlõ tárban, magasabban mint a megfelelõ reguláris opcode. A mikroutasítások kezdeti sorozata, mind az ILOAD-ra, mind a WIDE ILOAD-ra a 4-20-as ábrán láthatók. Amint a kód elér a WIDE ILOAD megvalósításához (0x115) a kód a normális ILOAD-tól mindössze annyiban különbözik, hogy az indexet két egymás utáni index byte összefûzésével kell megkonstruálni, ahelyett, hogy csak egy byte-on végeznénk „elõjel-kiterjesztést”. Az összefûzést és a rákövetkezõ összeadás mûveleteket részletekben kell végrehajtani, elõször az INDEX BYTE 1-et H-ba másolva és 8 bittel balra tolva. Mivel az index elõjel nélküli egészet reprezentál, az MBR-en nulla-feltöltést hajtunk végre, MBRU-t használva. Ezután az index második byte-ját hozzáadjuk (az összeadás itt megfelel a konkatenáció (összefûzés) mûveletének, mivel a H alsó byte-ja nulla, így garantálva van, hogy nincs átvitel (carry) a byte-ok között) és az eredmény H-ban marad. Innentõl kezdve a mûvelet pontosan ugyanúgy folytatódhat, mint ha egy standard ILOAD-ról lenne szó. Ahelyett, hogy duplán végrehajtanánk az ILOAD záró utasításait (iload 3-tól iload 5-ig) egyszerûen leágazunk wide-iload 4-tõl az iload 3-hoz. Figyeljük meg azonban, hogy PC-t kétszer kell megnövelnünk az utasítás végrehajtása során, hogy az a következõ utasítás kódjára mutathasson. Az ILOAD megnöveli azt egyszer; a WIDE-ILOAD is megnöveli egyszer. Ugyanez a szituáció a WIDE-ISTORE-ral, miután az elsõ 4 mikroutasítás végrehajtódik (wide_istore 1-tõl 4-ig) a folytatás ugyanaz a sorozat, mint az ISTORE elsõ két utasítása után, így a wide-istore 4 leágazik az istore 3-hoz.

Page 41: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

41

27. Utasítás betöltı egység. Mic-2. Ha egy utasításnak további mezıi vannak (operandusok számára), minden mezıt be kell tölteni, egyszerre csak egy bájtot, és össze kell rakni, mielıtt felhasználnánk. Egy mezı betöltése és összerakása bájtonként legalább egy ciklusra leköti az ALU-t, hogy megnövelje a PC-t, és azután ismét egyre, hogy összerakja a keletkezı indexet vagy eltolást. Az ALU-t szinte minden ciklusban sokféle mőveletre használjuk az utasításbetöltéssel és az utasításon belüli mezık összerakásával kapcsolatban, az utasítás „valódi” munkáján felül. Annak érdekében, hogy a fıciklust átlapoljuk, szükséges, hogy az ALU-t felszabadítsuk a fenti feladatok némelyikébıl. A Mic-1–ben sok betöltés eltávolítható az ALU-tól egy független egység megalkotásával, amely betölti és feldolgozza az utasításokat. Ez az egység, amit IFU-nak (Instruction Fetch Unit, utasításbetöltı egység) nevezünk, amely képes függetlenül növelni a PC-t és betölteni a bájtokat a bájtfolyamból, még mielıtt szükség lenne rájuk. Az IFU felelıs egy bájtfolyam betöltéséért. Ezt azzal éri el, hogy a hagyományos 4 bájtos memóriaportot használja idı elıtt betöltve teljes 4 bájtos szavakat, és az egymást követı bájtokat egy léptetıregiszterbe tölti, ami egyesével vagy kettesével szolgáltatja azokat a betöltés sorrendjében. A léptetıregiszternek az a szerepe, hogy fenntart egy bájtsort a memóriából, és tölti MBR1-be és MBR2-be. Valahányszor az MBR1 kiolvasódik, a léptetıregiszter jobbra léptet egy bájtot. Valahányszor az MBR2 kiolvasódik, jobbra léptet 2 bájtot. Ezután az MBR1 és MBR2 újratöltıdik a legrégebbi bájtból, illetve bájtpárból. Ha most elegendı hely marad a léptetıregiszterben egy másik teljes szó számára, akkor az IFU elkezd egy memória ciklust a beolvasásra. Hogy helyesen dolgozzunk, az IFU-nak le kell blokkolnia, amikor arra kérik, hogy tegyen meg valamit, amit nem tud, úgy mint szolgáltassa MBR2 értékét, amikor csak 1 bájt van a léptetıregiszterben és a memória még el van foglalva egy új szó betöltésével. Ezenkívül egyszerre csak egy dolgot tud csinálni, így a beérkezı eseményeket sorba kell állítania. Végül valahányszor a PC megváltozik, az IFU-t frissíteni kell. Az IFU-nak saját memóriacím-regisztere van, az IMAR , melyet a memória címzésére használunk, amikor egy új szót kell betölteni. Ennek a regiszternek saját tulajdonú növelıje van, így a fı ALU-ra nincsen szükség, amikor a következı szó eléréséhez növeljük azt. Az IFU-val a fı végrehajtási egység csak akkor ír a PC-be, amikor meg kell változtatni az utasításbájt folyamának soros jellegét. Mivel a mikroprogram már nem közvetlenül növeli a PC-t a mőveleti kódok betöltésénél, az IFU-nak kell a PC-t idıszerően tartani. Ezt azzal éri el, hogy érzékeli, amikor az utasításfolyamból 1 bájt felhasználásra kerül, vagyis, amikor MBR1-et vagy MBR2-t (vagy az elıjeltelen verziókat) kiolvassák. A PC-hez kapcsolódik egy önálló növelı, amelyik attól függıen képes 1 vagy 2 bájttal növelni, hogy hány bájtot használtunk fel. Így a PC mindig a még fel nem használt elsı bájt címét tartalmazza. Minden egyes utasítás kezdetén az MBR tartalmazza az ehhez az utasításhoz tartózó mőveleti kód címét. Mic-2: Az IFU nagyon lecsökkentheti az átlagos utasítás úthosszát. Elıször is, teljesen eltávolítja a fıciklust, mivel minden egyes utasítás vége egyszeően közvetlenül ágazik el a következı utasításra. Másodszor, elkerüli, hogy az ALU-t a PC növelésére kössük le. Harmadszor, csökkenti az úthosszt valahányszor egy 16 bites indexet vagy eltolást számítunk ki, mert összerakja a 16 bites értéket, és ezt, mint 32 bites értéket, közvetlenül szolgáltatja az ALU-nak, elkerülve, hogy a H-ban kelljen összeraknia. Az IADD mővelet betölti a veremben lévı második szót és elvégzi az összeadást. Amikor az IFU észleli, hogy az IADD-ban hivatkozunk MBR1-re, a belsı léptetıregisztere mindent jobbra tol és újratölti MBR1-et és MBR2-t. Végrehajt egy átmenetet is a jelenlegi állapotából az eggyel alacsonyabba. Ha az új állapot 2, az IFU elkezd betölteni egy szót a memóriából.

Page 42: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

42

Mindez a hardverben történik, a mikroprogramnak semmit sem kell tennie, ezért csökkenthetı az IADD öt mikroutasításról három mikroutasításra. A Mic-2 néhány utasítást jobban feljavít, mint másokat, és ebbıl következik, hogy nagyobb nyeresége van. Az LDC_W kilenc mikroutasításról csupán háromra változik, harmadolva a végrehajtási idıt. Másrészrıl, a SWAP csak nyolcról hat mikroutasításra változik. Átlagos teljesítménynél valójában a gyakoribb utasításoknál kapott nyereség számít. Ezek közé tartozik az ILOAD (6 volt, most 3), az IADD (4 volt, most 3) és az IF_ICMPEQ (sikeres esetben 13 volt, most 10; sikertelen esetben 10 volt, most 8). Ahhoz, hogy megmérjük a gyorsítást, választanunk és futtatnunk kellene egy tesztágyat, de világos, hogy itt nagy a nyereség.

Page 43: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

43

28. Csıvonalas terv: Mic-3. A Mic-3 a Mic-2 továbbfejlesztése. Még gyorsabbá úgy tudnánk tenni, ha

megpróbálnánk csökkenteni a ciklusidıt. Jelentékeny méretékben a ciklusidıt a lapkatechnológia határozza meg. Minél kisebbek a tranzisztorok és minél kisebb a köztük lévı fizikai távolság, annál gyorsabban tud az óra futni. Egy adott technológia számára az idı, amely egy teljes adatút mővelet végrehajtásához szükséges, állandó. A másik választás a gyorsabbá tételre, ha párhuzamosságot viszünk a gépbe.

Mint az elıbb említettük, az óraciklust behatárolja az idı, amelyik szükséges a jel tovaterjedéséhez az adatúton. Három fı alkotóelem van a folyamatban levı adatút ciklushoz:

− Az idı a kiválasztott regiszterek rávezetéséhez az A és D sínekre. − Az idı, amíg az ALU és a léptetıregiszter elvégzi a munkáját. − Az idı, amíg az eredményeket visszaküldjük a regiszterekbe és eltároljuk. A Mic-3 csıvonalas modell, háromsínes architektúrából áll, hozzávéve az IFU-t, és

három további tárolót (regisztert), melyeket minden egyes sín közepére illesztünk. A tárolókat minden egyes ciklusban írjuk. Végeredményben a regiszterek szétválasztják az adatutat különbözı részekre, amelyek most egymástól függetlenül mőködhetnek. Most három óraciklus kell az adatút használatához. A tárolók beillesztésének értelme kétszeres:

− Gyorsítjuk az órát, mert a maximális késleltetés most rövidebb. − Minden egyes ciklus alatt az adatút minden részét használhatjuk.

Az adatút három részre osztásával a maximális késleltetés csökken annak

eredményeképpen, hogy az órafrekvencia növekedhet. Tegyük fel, hogy az adatút három idıintervallumra osztásával mindegyik körülbelül harmad olyan hosszú, mint az eredeti, így az óra sebességét megháromszorozhatjuk.

Az adatút most három ciklust igényel a mőködéséhez: egyet az A és B betöltéséhez, egyet a mővelet elvégzéséhez és a C feltöltéséhez, és egyet az eredmény visszaírására a regiszterekbe. Minden egyes ilyen darabot mikrolépésnek hívunk.

Ahol egy mikrolépés nem tud indulni, mert egy eredményre vár, amit az elızı mikrolépés még nem hozott létre, valódi függıségnek vagy RAW függıségnek nevezzük. A függıségekre gyakran úgy hivatkozunk, hogy akadályok. A RAW egy rövidítés a Read After Write számára, és azt jelenti, hogy egy mikrolépés olvasni akar egy regisztert, melybe még nem írtunk. Elakadásnak nevezzük, amikor megállunk, hogy egy szükséges értéket megvárjunk.

Habár a Mic-3 több ciklust igényel, mint a Mic-2 program, mégis gyorsabban fut. Ha a Mic-3 ciklusidejét t ns-nak vesszük, akkor a Mic-3 11t ns-ot igényel a SWAP végrehajtásához. Ellenben, a Mic-2 6 ciklust igényel, melyek mindegyike 3t, összesen 18t. A csıvezeték gyorsabbá teszi a gépet, még akkor is, ha egyszer le kellett állni, hogy elkerüljünk egy függıséget.

A csıvezeték egy kulcsmódszer minden korszerő CPU-ban. Még egy fontos részlet, hogy bár egy egydülálló utasítás négy óraciklust igényel a végrehajtáshoz, minden egyes óraciklusban egy új utasítás kezdıdik és egy régi utasítás fejezıdik be.

Page 44: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

44

29. Egy hét szakaszú szállítószalag: a Mic-4 csıvezetéke A Mic-3-hoz hasonlóan, van egy IFU, amelyik elıre betölt szavakat a memóriából, és

kezeli a különbözı MBR-eket. Az IFU a bejövı bájtfolyamot egy új alkatrész, a dekódoló egység számára adagolja. Ennek az egységnek van egy belsı ROM-ja, amit az IJVM mőveleti kódjával indexelünk. Minden egyes bejegyzés két részbıl áll: ennek az IJVM-utasításnak a hossza és egy index a másik ROM-ba, a mikromőveletek ROM-jába. Az IJVM-utasítás hossza azért kell, hogy a dekódoló egység felismerje a bejövı bájtfolyamatban az utasításokat, így mindig tudja, melyek a mőveleti kód bájtjai és melyek az operandusok. A dekódoló egység elküldi a mikromőveletek ROM-jához a saját táblázatában talált indexet a következı rész, a sorba állító egység számára. Ez az egység némi logikát és két belsı táblázatot tartalmaz, egyet ROM-ban és egyet RAM-ban. A ROM azt a mikroprogramot tartalmazza, ahol minden IJVM-utasításnak néhány egymást követı mikromőveletnek nevezett bejegyzése van. Két új bit kell: a Final és a Goto. A Final bit be van állítva minden egyes IJVM-mikromővelet sorozatának utolsó mikromőveleténél, hogy jelezze a sorozat végét. A Goto bit a feltételes mikroelágazások megjelölésére szolgál. A sorba állító egység a következıképpen mőködik. Átvesz egy indexet a mikromővelet ROM-hoz a dekódoló egységtıl. Ez alapján kikeresi a mikromőveletet, és bemásolja egy belsı sorba. Majd a következı mikromőveletet is bemásolja a sorba, és ezután a következıt is. Ezt addig folytatja, amíg talál egy olyat, ahol a Final bit 1. Ezt is átmásolja, és megáll. Feltéve, hogy nem talált olyan mikromüveletet, amelyben a Goto bit egy, és maradt még elegendö hely a sorban, a sorba állító egység ezután egy nyugtázó jelet küld vissza a dekódoló egységnek. Amikor a dekódoló egység felfogja a nyugtázást, a következö IJVM-utasítás indexét elküldi a sorba állító egységnek. Ilyen módon a memóriában lévö IJVM-utasítások sorozata alapvetöen átalakul mikromüveletek egy sorozatára egy sorban. Ezek a mikromüveletek táplálják a MIR-eket, amelyek jeleket küldenek az adatút vezérléséhez. A Mic-4 egy utolso szempontja most némi megbeszélést igényel: mikroelágazások. Néhány IJMV-utasítás, mint amilyen az IFLT, megkívánja, hogy a feltételes elágazás, mondjuk az N biten alapuljon. Amikor egy mikroelágazás megtörténik, a csövezeték nem folytatódhat. Hogy ezt kezelni tudjuk, hozzávettük a Goto bitet a mikromüvelethez. Amikor a sorba állító egység talál egy olyan mikromüveletet, amelyiknek ez a bitje be van állítva, miközben átmásolja azt a sorba, ráébred, hogy nehézségek következnek, és tartozkodik a nyugtázás elküldésétöl a dekódoló egységnek. Eredményként a gép elakad ezen a ponton, amíg a mikroelágazás meg nem oldódik. Elképzelhetıen, néhány IJVM-utasítás az elágazáson túl már a dekódoló egységbe be lett táplálva (de a sorba állító egységbe nem), mivel nem küldött vissza nyugtázo (vagyis folytató) jelet, amikor megtalált egy Goto bittel beállított mikromüveletet. Különleges hardver és mechanizmusok szükségesek, hogy az össze-visszaságot tisztázzák és visszatáncoljanak, de ezek már túlmutatnak ennek a könyvnek a témakörén. Amikor Edsger Dijkstra megírta híres levelét „ GOTO Statement Considered Harmful” („ A GOTO utasítást károsnak tartják”) (Dijkstra, 1968 ), sejtelme se volt, hogy mennyire igaza volt. Hosszú utat jártunk be a Mic-1 óta. A Mic-1 egy nagyon egyszerü hardverdarab volt, szinte teljes szoftvervezérléssel. A Mic-4 egy erösen csövezetékezett terv hét szakasszal és sokkal bonyolúltabb hardverrel. A csövezetéket vázlatosan a 4.36. ábrán mutatjuk be, azzal, hogy a bekarikázott a 4.35. ábra alkotóelemeire hivatkoznak. A Mic-4 önmüködöen elöre betölt egy bájtfolyamota memoriábol, dekódolja azokat IJVM-utasításokká, átalakitja azokat mikromüveletek egy sorozatává egy ROM-ot használva, és sorba állítja azokat felhsználásra, amint szükséges. A csövezeték elsö három szakasza az adatút orájához köthetö, ha szükséges, de nem mindig van elvégezendö munka. Például, az IFU biztosan nem képes táplálni egy új IJVM müveleti kódot a dekódoló egységben minden oraciklusnál, mert az IJVM-utasítások különbözö ciklusokat igényelnek a végrehajtáshoz, és a sor gyorsan túlcsordúlna.

Page 45: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

45

Minden egyes ora ciklusban, a MIR-ek elöre lépnek, és a sor alján levö mikromüvelet bemásolodik MIR1-be, hogy elkezdje a végrehajtást. A négy MIR-böl jövö vezérlö jelek ekkor kiterjednek az adatút felé, tevékenységek bekövetkezését okozva. Minden egyes MIR az adatút különbözö részeit vezérli és ennek következtében különbözö mikrolépéseket. Ebben a tervben egy mélyen csövezetékezett CPU-nk van, amelyik megengedi, hogy az egyes lépések nagyon rövidek és ennélfogva az ora frekvencia magas legyen. Számos CPU alapvetöen ilyen módon van tervezve, különösen azok, melyeknek egy régebbi (CISC) uatsításhalmazt kellet megvalósítaniuk. Például, a Pentium II megvalósítás elviekben hasonló a Mic-4-hez bizonyos szempontból, ahogy azt késöbb látni fogjuk ebben a helyzetben.

Page 46: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

46

30. Elágazás, eltolási rés. Statikus és dinamikus elágazás jövendölés A modern számítógépek magas szinten vannak csıvezetékkel ellátva. A

csúcsteljesítményő gépeknek néha 10 vagy még több szakaszos csıvezetéke van. A csıvezetékek legjobban lineáris kóddal dolgoznak, de a programok nem lineáris kódsorozatok. Teli vannak elágazási utasításokkal. Az utasítás-dekódoloás a második szakaszban történik /4.35. ábra/. Így a betöltı egységnek kell eldöntenie, hogy honnan töltse be a következıt, még mielıtt tudná, milyen utasítást kapott éppen. Csak egy ciklussal késıbb tudhatja meg, hogy pont egy feltétel nélküli elágazási utasítást kapott, és akkorra már elkezdte a feltétel nélküli elágazást követı utasítást betölteni. Ennek következtében a csıvezetéket alkalmazó gépek (pl. UltraSPARC III) tekintélyes részének megvan az a tulajdonsága, hogy egy feltétel nélküli elágazást követı utasítás végrehajtódik, annak ellenére, hogy logikusan nem kellene. Az elágazás utáni állapotot eltolás résnek nevezzük.

A feltételes elágazások nem csak eltolás réseket hoznak létre, hanem a betöltı egység még azt sem tudja, hogy sokkal késıbb honnan olvasson a csıvezetékbe. A korai csıvezetékes gépek csaknem bedugultak, amíg nem derült ki, hogy lesz elágazás vagy nem. Következésképpen a legtöbb gép, amikor talál egy feltételes elágazást, megjövendöli, hogy végre fogjuk hajtani vagy nem. Különféle módszereket gondoltak ki a jövendölésre. Dinamikus elágazásjövendölés: Világos, hogy nagyszámú pontos jövendölés lehetıvé teszi a CPU-nak, hogy teljes sebességgel haladjon. Ennek következtében számos jelenlegi kutatás az elágazás jövendölı algoritmus javítását célozza. Egy közelítés az, hogy a CPU fenntart egy elızmények táblát, amelyben feljegyzi a feltételes elágazásokat, amint elıfordulnak, így azok kikereshetık, ha ismét elıfordulnak. Számos módszer van az elızmények tábla szervezésére. Valójában ezek pontosan ugyanazok a módszerek, mint amelyeket a gyorsítótár szervezésénél használunk. Tekintsünk egy gépet 32 bites utasításokkal, amelyek szóhatáron kezdıdnek, vagyis minden memóriacím alsó 2 bitje 00. Egy direkt leképezéső 2 az n-ediken bejegyzést tartalmazó elızmények tábla esetén egy elágazási utasítás alsó n+2 bitjét kivehetjük, és 2 bittel jobbra léptethetjük. Az n bites számot indexként használhatjuk az elızmények táblához, ahol egy ellenörzést végzünk annak megállapítására, hogy az ott tárolt cím megegyezik-e az elágazás címével. Úgy mint a gyorsítótárnál nincs szükség az alsó n+2 bit tárolására, így mellözhetjük azokat. Ha találat van, a jövendölö bitet használjuk az elágazás jóslására. Ha rossz cimke van ott vagy a bejegyzés érvénytelen, akkor hiány lép fel, épp úgy, mint a gyorsítótárnál. Ebben az esetben az elöre/visszafelé elágazási szabályt alkalmazhatjuk. Ha elég nagy a táblaméret és elegendö az asszociativitás, akkor ez az elrendezés a legtöb esetben jól müködik. Viszont egy rendszeres probléma mindig elöfordul. Amikor a ciklus végül kilép, a végén az elágazás tévesen lesz megjövendölve, és a rossz jövendölés megváltoztaja az elözmények táblát úgy, hogy "nincs elágazás"-nak jelöli a következö jövendölést. Amikor legközelebb a ciklusba lépünk, az elsö ismétlés végén az elágazás rosszul lesz megjövendölve. Ha a ciklus egy külsö ciklus belsejében van, vagy egy gyakran meghívott eljárásban, akkor ez a hiba gyakran elöfordulhat. Hogy kiküszöböljük ezt a téves jövendölést, adhatunk a táblázat bejegyzésének egy második lehetöséget. Ezzel a modszerrel a jövendölés csak két egymás utáni helytelen jövendölés után változik meg. Ez a megközelítés két jövendölö bit meglétét követeli meg az elızmények táblában, egyet arra, hogy az elágazás "feltehetöleg" mit fog csinálni, és egyet arra, hogy mit csinált legutóbb. Mindeddig feltételeztük, hogy minden feltételes elágazás célpontja ismert, jellemzöen vagy egy határozott cím, ahova el kell ágazni, vagy mint egy relatív eltolás a jelenlegi utasításhoz képest. Gyakran ez a feltételezés indokolt, de néhány feltételes utasítás a célcímet regisztereken végzett aritmetikai müveletekkel számolja ki, és azután megy oda. Az olyan jövendölésnek nincs haszna, amelynél a célcím ismeretlen. Egy modszer ennek a helyzetnek a kezelésére, hogy tároljuk az elözmények táblában azt a tényleges címet, ahová legutóbb

Page 47: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

47

elágaztunk. Egy másik megközelítése az elágazás jövendölésnek, hogy nyomon követjük. hogy az utolsó k feltételes elágazás, ami elöfordul, vége lett-e hajtva, függetlenül attól, hogy az melyik utasítás volt. Ezt a k bites számot, amelyet az elágazási elızmények blokkos regiszterében tárolunk, összehasonlítjuk párhuzamosan az elözmények tábla minden bejegyzés egy k bites kulcsával, és ha egy találat elıfordul, akkor az ott talált jövendölést használjuk. Statikus elágazás jövendölés: Minden eddig tárgyalt elágazásjövendölési modszer dinamikus, azaz futásidöben hajtjuk végre, mialatt a program fut. Alkalmazkodik a program érvényes viselkedéséhez, ami jo dolog. A rossz oldal az, hogy szakosított és drága hardvert igényel, és nagyszámú lapka bonyolult összességét. Néhány gép, mint az UltraSPARC III, rendelkezik egy második feltételes elágazási utasítás halmazzal, a szokásoson felül. Az új tartalmaz egy bitet, amelyben e fordítoprogram meghatározhatja, hogy úgy gondolja, hogy az elágazás végre lesz hajtva, vagy nem. Ha ezek egyike elöfordul, a betöltö egység pontosan azt teszi, amit mondanak neki. Továbbá, nem szükséges értékes helyet pazarolni az elágazási elözmények táblában ezekre az utasításokra, így csökkennek itt az öszzeütközések. Végül az utolsó elágazásjövendölési modszerünk a metszetben ábrázoláson alapszik Ez szintén egy statikus módszer, de ahelyett, hogy a fordítoprogramnak kelljen megprobálni kiszámolni, hogy melyik elágazást hajtjuk végre, és melyiket nem, a program valójában fut, és az elágazás viselkedését megfigyeljük. Ezt az információt betápláljuk a fordítoprogramba, amely azután felhasználja az egyedi elágazás utasításokat arra, hogy a hardvernek megmondja, mit csináljon.

Page 48: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

48

31. Sorrendtıl eltérı végrehajtás, szuperskaláris architektúra, függıségek, regiszter átnevezés. Sorrendtıl eltérı végrehajtás, függıségek, regiszter átnevezés

Világos, hogy a számítógép-tervezés legegyszerőbb akkor, ha minden utasítást abban a sorrendben hajtunk végre, ahogyan betöltöttük azokat (pillanatnyilag feltételezve, hogy az elágazás-jövendölı algoritmus soha nem ad rossz tippet). Mégis, a sorrend szerinti végrehajtás nem mindig eredményez optimális teljesítményt az utasítások közötti függıség miatt. Ha egy utasításnak egy olyan értékre van szüksége, amit az elızı utasítás számit ki, akkor a második nem tudja elkezdeni a végrehajtást, amíg az elsı nem állítja elı a szükséges értéket. Ebben az esetben (RAW függıség) a második utasításnak várnia kell. A függıségnek más fajtái is léteznek:

A szuperskaláris processzor elvében implicit módon benne van az a feltételezés, hogy az S3 lényegesen gyorsabban tudja elıkészíteni az utasításokat, mint ahogy az S4 fázis végrehajtja ıket. Ha az S3 fázis 10 ns-ként produkál egy utasítást, és az összes funkcionális egység végezni tud 10 ns alatt, akkor mindig csak legfeljebb egy fog dolgozni, így az egésznek nincs semmi haszna. Valójában a negyedik fázis funkcionális egységeinek egy órajelnél jóval több idıt igényel feladata elvégzéséhez, a memóriához fordulók vagy a lebegıpontos mőveleteket végzık legalábbis biztosan. Lehet több ALU az S4 fázisban.

A RAW függıség az, ami akkor fordul elı, amikor egy utasításnak szüksége lenne egy olyan eredményt használni forrásként, amit az elızı utasítás még nem állított elı. A két másik függıség kevésbé súlyos. Alapvetıen forrás-összeütközések. A WAR függıségben (Write After Read; olvasás után írás) egy utasítás megpróbál felülírni egy regisztert, amelynek olvasását az elızı utasítás még lehet, hogy nem fejezte be. A WAW függıség (Write After Write; írás utáni írás) hasonló. Ezek gyakran elkerülhetık, ha a második utasítás az eredményt valahova máshova teszi (esetleg ideiglenesen). Ha a fenti három függıség egyike sem áll fenn, és a szükséges mőködési egység elérhetı, az utasítás kiosztható.

Tekintsünk egy alternatív elgondolást: a sorrendtıl eltérı végrehajtást. Ebben az elgondolásban az utasításokat sorrendtıl eltérıen lehet kiosztani, és ugyanígy sorrendtıl eltérıen lehet befejezni. Pl. bár I4 elakadt, dekódolhatjuk és kioszthatjuk I5-öt, mivel ez nem ellenkezik egyik függıben lévı utasítással sem. Mindamellett, utasítások átugrása egy új problémát okoz. Tegyük fel, hogy I5 használt egy olyan operandust, amelyet az átugrott utasítás, I4 számol ki. Ilyenkor ki kell bıvítenünk az eredményjelzıt úgy, hogy nyomonkövesse azokat a tárolásokat, amelyeket az átugrott utasítások végeznek. Ezt egy második, regiszterként egy bites bittérkép hozzáadásával tudjuk megtenni, hogy nyomon tudjuk követni az elakadt utasítások által végrehajtott tárolásokat. Az utasítás kiosztás szabályát most ki kell terjeszteni, hogy megakadályozzuk minden olyan utasítás kiosztását, amelynek operandusa ütemjelzés szerint egy olyan utasítással tárolódik ami elıtte jött, de átugrottuk.

Egy új módszert vezettünk be, a regiszterátnevezést. Az elırelátó dekódoló egység az R1 használta az I6-ban és I7-ban egy titkos regiszterre, S1-re váltja, ami nem látható a programozó számára. Most az I6-ot kioszthatjuk I5-tel párhuzamosan. A modern CPU-k gyakran titkos regiszterek tucatjait használják regiszter átnevezéssel. Ez a módszer gyakran kiküszöböli a WAR és a WAW függıségeket.

Page 49: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

49

32. Feltételezett végrehajtás A számítógépes programok alapblokkokra bonthatók szét, ahol minden alapblokk lineáris kódsorozatokból áll, a tetején egy belépési ponttal, az alján egy kilépéssel. Egy alapblokk nem tartalmaz egyetlen vezérlési szerkezetet sem. A páros és páratlan számok köbének összegét számoljuk egy bizonyos határig, és evensum-ban, illetve oddsum-ban győjtjük. A gond az, hogy a legtöbb alapblokk rövid , és nincs bennük elegendı párhuzamosság. Tehát megengedjük, hogy az átrendezés az alapblokkok határain átnyúljon, megkísérelve ezzel az összes kiosztási hely feltöltését. Ez lehet a lehet a load utasítás, lebegıpontos mővelet vagy akár egy hosszú függıségi lánc. A kód egy elágazás fölötti elıremozdítását emelésnek nevezzük. Képzeljük el, hogy minden változót regiszterekben tartunk, kivéve evensum-t és oddsum-t. Akkor értelme lenne ezek load utasításait a ciklus elejére vinni, k kiszámítása elé. Egy kód végrehajtását, mielıtt még tudnánk, hogy egyáltalán szüksége lesz-e rá, feltételezett végrehajtásnak nevezzük. E módszer alkalmazásához támogatás kell a fordítóprogramtól, és a hardvertıl is némi architekturális bıvítés. A feltételezett végrehajtás néhány érdekes problémát vet fel. Elıször is, alapvetı, hogy egyik feltételezett végrehajtásnak sem lehetnek visszavonhatatlan eredményei. Bonyolultabb kódsorozatoknál gyakori módszer a feltételezett végrehajtás során használt összes célregiszter átnevezése, megelızve ezzel, hogy a feltételezett végrehajtás felülírja a regisztereket. Ezáltal csak a firkáló regiszterek módosulnak. Számos modern gépnek van egy különleges SPECULATIVE-LOAD utasítása, amely megpróbálja a szót a gyorsítótárból betölteni, de ha nincs ott feladja. Ha az értékre nincs szükség, a gyorsítótárhiányért nem kell büntetést fizetni.

Page 50: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

50

33. A Pentium 4 processzor, a Pentium 4 mikroarchitektúrája Kívülrıl a Pentium 4 hagyományos CISC gépnek tőnik, nagy és nehezen kezelhetı utasításrendszerrel, amely támogatja a 8, 16 és 32 bites egész mőveleteket, valamint a 32 és 64 bites lebegıpontos mőveleteket is. Csupán 8 látható regisztere van. Az utasítások hossza 1 és 17 bájt között változik. Belülrıl azonban a Pentium 4 egy modern, egyszerő, mélyen csıvezetékezett RISC-magot tartalmaz, mely különlegesen gyors órafrekvencián fut. A Pentium 4 mikroarchitektúrája, melyet NetBurst mikroarchitektúrának neveznek, teljesen elszakad a Pentium Pro, Pentium II és Pentium III-nál használt korábbi P6 mikroarchitektúrától. A Pentium 4 négy fı részbıl áll: a memória-alrendszer, a bemeneti rész, a sorrenden kívüli egységet vezérlı és a végrehajtó egység. A memória-alrendszer tartalmazza az egyesített L2 gyorsítótárat és a külsı RAM-nak a memóriasínen való eléréséhez szükséges logikát. Az L2 gyorsítótár 8 utas halmazkezeléső gyorsítótár, mely 128 bájtos gyorsítósoron alapszik. Az L2 gyorsítótár egy visszaíró szervezéső gyorsítótár. Ez azt jelenti, hogy a sor módosulásakor az új tartalom nem kerül vissza a memóriába, amíg a sor a memóriába nem töltıdik. A gyorsítótárhoz kapcsolódik egy elıre betöltı egység amely megpróbálja elıre betölteni az adatokat a fımemóriából az L2 gyorsítótárba, még mielıtt szükség lenne rá. A memória-alrendszer alatt a bemeneti rész található, amelyik betölti az utasításokat az L2 gyorsítótárból, és dekódolja a programnak megfelelı sorrendben. Minden Pentium 4 ISA-utasítást lebont RISC-szerő mikromőveletek sorozatára. A dekódolt mikromőveletek bekerülnek a nyomkövetı gyorsítótárba, amely az 1. szintő utasítás-gyorsítótár.

Page 51: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

51

34. NetBurst csıvezeték A bementi résznek a feladata, hogy betöltse az utasításokat a memóriából, és elıkészítse a végrehajtást. A bemeneti rész az új Pentium 4 utasításokat az L2 gyorsítótárból kapja, egyszerre 64 bitet. Ezeket dekódolja mikromőveletekre és tárolja a nyomkövetı gyorsítótárban. A nyomkövetı gyorsítótár hat mikromőveletet csoportosít minden nyomkövetı sorba. A nyomkövetı sor mikromőveletei sorrendben kerülnek végrehajtásra. Ha egy Pentium ISA-utasítás több mint négy mikromőveletet igényel, nem dekódolódik a nyomkövetı gyorsítótárba. Ha a dekódoló egységes feltételes elágazáshoz ér, kikeresi a jövendölt címet az L1 BTB-bıl (Branch Target Buffer, elágazási célpuffer) és jövendölt címtıl folytatja a dekódolást. A nyomkövetı BTB-t arra használja, hogy megjósolja, hova ugranak az elágazó mikromőveltek. A csıvezeték második részét, a sorrenden kívüli egységet vezérlı logikát a nyomkövetı gyorsítótár táplálja. Lefoglaló/átnevezı egység egy 128 bejegyzést tartalmazó táblába veszi fel ıket, amit ROB-nak (ReOrder Buffer, átrendezı puffer) hívnak. Ez a bejegyzés követi nyomon a mikromővelet állapotát, amíg nem fejezıdik be. Négy ütemezı is található, amelyek kiveszik a mikromőveleteket. Minden ütemezı erıforrásokat ütemez az alábbiak szerint: 1. ütemezı: ALU 1-et és a lebegıpontos mozgató egységet. 2. ütemezı: ALU 2-t és a lebegıpontos végrehajtó egységet. 3. ütemezı: betöltı utasításokat. 4. ütemezı: kimenı utasításokat. Az ALU -t és a lebegıpontos egységet két, 128 elemő regisztergyőjtı szolgálja ki. A regiszterátnevezés következtében nyolc tartalmazza az ISA-szinten is látható regisztereket (EAX, EBX, ECX, EDX stb.). Az L1 adatgyorsítótár része a nagy sebességő áramkörnek. Ez 8 KB-os gyorsítótár, egyáltalán nincs dekódolva. A befejezı egység feladata, hogy az utasítások sorrendben fejezıdjenek be, és helyüket nyilvántartsa. Ha egy késıbbi betöltés tárolt adatot próbál olvasni, azt az utasítás még akkor is megkaphatja a folyamatban lévı tárolási pufferbıl, ha az L1 gyorsítótárban még nem érhetı el. Ezt a folyamatot tárolás utáni betöltésnek nevezzük.

Page 52: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

52

35. Az UltraSPARC III processzor és az UltraSPARC III mikroarchitektúrája, csıvezetéke Az UltraSPARC III Cu processzor megnevezésében lévı Cu, a lapka vezetékeinél használt rézre utal. A rének kisebb az ellenállása, ami vékonyabb vezetékeket és gyorsabb mőködést tesz lehetıvé. Az UltraSPARC III Cu egy teljesen 64 bites gép, 64 bites regiszterekkel és 64 bites adatúttal. A Pentium 4-gyel ellentétben az UltraSPARC egy valódi RISC-architektúra. Néhány lényeges komponens hasonlít a Pentium 4-nél használtakhoz. Például, amikor ezeket a lapkákat tervezték, ésszerőnek számított a 8-16 KB mérető L1 adatgyorsítótár. 32 KB-os 4 utas halmazkezeléső utasítás-gyorsítótár, mely 32 bájtos gyorsítósort használ. Az utasításkiosztó egység négy utasítást is elı tud készíteni óraciklusonként. Ha egy feltételes elágazó utasításba ütközik, utánanéz a 16K bejegyzést tartalmazó ugrótáblában, hogy az a következı utasítást jövendöli. Ezen felül, az utasítás-gyorsítótárban lévı szavakhoz kapcsolt extrabit is segíti az elágazásjövendölést. Az egész aritmetikájú végrehajtó egység tartalmaz két ALU-t és egy rövid csıvezetéket is az elágazó utasításokhoz. A lebegıpontos egység 32 regisztert és három külön ALU-t tartalmaz rendre az összeadás/kivonás, a szorzás és az osztás számára. Az adatgyorsítótár egy hagyományos 64 KB-os 4 utas halmazkezeléső gyorsítótár. A 2 KB-os elıre betöltı gyorsítótár azért van jelen, mert az UltraSPARC ISA tartalmaz elıre betöltı utasításokat, melyek lehetıvé teszik a fordító számára, hogy adatszavakat töltsenek be. A tárolási gyorsítótár egy kismérető gyorsítótár, melyet arra használunk, hogy összekapcsoljuk a eredmények írását, és jobban kihasználjuk az L2 gyorsítótárba menı 256 bit széles sínt. Egyedüli feladata a teljesítmény növelése. Az interfész úgy tervezték, hogy több UltraSPARC-ot is lehessen ugyanahhoz a memóriához kapcsolni, hogy ezek multiprocesszort alkossanak. A memóriavezérlı képezi le a 64 bites virtuális címeket 43 bites fizikai címekre. A leképezés gyorsítására speciális táblázatok, ún. TLB-k (Translation Lookside Buffer, lapkezelı segédpuffer) állnak rendelkezésre. Az UltraSPARC III Cu-nak tizennégy szakaszos csıvezetéke van. A 14 szakaszt A, …, D betőkkel nevezték el. Az A (Adress generation, címgeneráló) szakasz van a csıvezeték elején. Normálisan ez az a cím, amelyik az aktuális szakaszt követi. A P (Preliminary fetch, elızetes betöltı) szakasz, az A szakasz által szolgáltatott címrıl kezd el betölteni ciklusonként legfeljebb négy utasítást az L1 I-gyorsítótárból. Az F (Fetch, betöltı) szakasz befejezi az utasítások betöltését az I-gyorsítótárból. A B (Branch target, elágazási cél) szakasz dekódolja az imént betöltött utasításokat. Az I (Instruction group formation, utasításcsoportosító) szakasz csoportokba sorolja a bejövı utasításokat attól függıen, hogy a következı hat mőködési egység közül melyiket használják. 1. Egész ALU 1. 2. Egész ALU 2. 3. Lebegıpontos/grafikus ALU 1. 4. Lebegıpontos/grafikus ALU 2. 5. Elágazási csıvezeték 6. Betöltı, tároló és speciális mőveletek. A J (Instruction stage grouping, utasításkiosztó) kiveszi az utasításokat az utasítássorból, és elıkészíti a végrehajtó egységek számára. Az R szakasz kikeresi az egész utasításokhoz szükséges regisztereket és továbbítja a lebegıpontos regiszter kéréseket a lebegıpontos regisztergyőjtınek. Az E (Execution, végrehajtó) szakasz az, ahol az egész utasítások ténylegesen végre hajtódnak. A C (Cache, gyorsítótár) szakaszban zárul le az L1 gyorsítótár elérése. Az M (Miss, hiány) szakasz kezdi meg azoknak az adatoknak a megkeresését, amelyekre szükség van, de nincs L1 gyorsítótárban. A W (Write, író) szakaszban a speciális egység eredményei bekerülnek a regisztergyőjtıbe. A T (Trap, csapda) szakasz észleli az

Page 53: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

53

egész lebegıpontos csapdákat. A D szakasz véglegesíti az egész és lebegıpontos regisztereket a megfelelı arhitekturális regisztergyőjtıkben.

Page 54: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

54

36. Az I-8051 processzor és az I-8051 mikroarchitektúrája A 8051 CPU mikroarchitektúrája: Ez jóval egyszerőbb a Pentiumnál és az UltraSPARC-nál. Az egyszerőség oka, hogy a lapka nagyon kicsi, és még a csıvezeték elterjedése elıtt tervezték. Tovább az, hogy elsıdleges tervezési szempont az volt, hogy a lapka olcsó legyen, és nem az hogy gyors. A 8051 lelke a fısín. Számos regiszter kapcsolódik hozzá, melyek többségét a programok képesek írni olvasni. Az ACC regiszter az akkumulátor, a fı aritmetikai regiszter, melyben a legtöbb számítás eredménye keletkezik. Az IR regiszter az utasításregiszter. Az éppen végrehajtás alatt álló regisztert tartalmazza. A TMP1 és TMP2 regiszterek az ALU tárolói. A PSW regiszterekbe kerülnek a feltételkódok, melyek jelzik, ha az eredmény nulla, negatív, stb. A 8051-es külön memóriával rendelkezik az adatok és a kód számára. Az adat RAM 128 (8051) vagy 256 bájtos (8052), így 8 bites RAM ADDR regiszter elegendı széles a címzésre. A DTR 16 bites regiszter a 16 bites címek kezelésére és összeállítására. A 8051 rendelkezik még a lapkán elhelyezett három 16 bites idızítıvel, melyek nélkülözhetetlenek valós idejő alkalmazások esetén. Van még 8 bites B/K portja. A 8051 szinkronprocesszor, melynek legtöbb utasítása egy óraciklust igényel. Minden óraciklust fel lehet osztani hat részre, melyeket állapotoknak nevezünk.

Page 55: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

55

37. A Pentium 4, az UltraSPARC III és az I-8051 mikroarchitektúrájának összehasonlítása. A Pentium 4-nek van egy régi CISC-utasításhalmaza. Az UltraSPARC III tiszta RISC-elképzelés, szegényes és egyszerő utasításhalmazzal. A 8051 egyszerő 8 bites processzor a beágyazott alkalmazások számára. Mégis mindegyik lelke a regiszterkészlet. Ezen nyilvánvaló különbségek ellenére a Pentium 4-nek és az UltraSPARC III-nak nagyon hasonlók a végrehajtó egységei. Mindkét végrehajtó egység olyan mőveleteket fogad el, amelyek egy mőveleti kódot, két forrásregisztert és egy célregisztert tartalmaznak. Mindkettı végre tud hajtani egy mikromőveletet egy ciklus alatt. Mindkettınek nagy tudású csıvezetékei, elágazásjövendölése, valamint osztott I- és D-gyorsítótára van. A fı különbség a Pentium 4 és az UltraSPARC III között az, ahogy ISA-utasításaikat a végrehajtó egységhez juttatják. A Pentium 4-nek szét kell bontania a CISC-utasításait, hogy háromregiszteres formátumúvá alakítsa ıket. Az UltraSPARC III-nak nem kell semmit tennie. Ezért van az, hogy a legtöbb új ISA RISC típusú. A Pentium 4-gyel és az UltraSPARC III-mal szemben aí 8051 igazán egyszerő gép. Inkább RISC, mint CISC típusú, hiszen legtöbb utasítása egyszerő és szétbontás nélkül végrehajtható egy óraciklusban. Nincs csıvezetéke és gyorsítótára, van viszont sorrend szerinti kiosztása, sorrend szerinti végrehajtása és sorrend szerinti befejezése. Egyszerőségében fıleg a Mic-1-gyel rokon.

Page 56: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

56

38. Gépi utasítás szint. Memória modellek, memória szemantika. Gépi utasítás szint: Alapvetıen az ISA-szint azt jelenti, ami a gépi szintő programozó számára látszik a gépbıl. ISA-szintő kód készítése céljából a fordítóprogram írójának ismernie kell a memóriamodellt, hogy milyen regiszterek vannak, milyen adatokat és utasításokat használhat. Mindezen információk összessége alkotja az ISA-szintet. Néhány architektúra ISA-szintjét formális dokumentum definiálja, amelyet gyakran ipari konzorciumok készítenek. Mások esetén ilyen dokumentum nem létezik. Például a V9 SPARC rendelkezik hivatalos dokumentációval. Az ilyen definiáló dokumentumnak az a célja, hogy lehetıvé tegye a különbözı megvalósítók számára, hogy olyan gépeket építsenek, amelyek ugyanazt a szoftvert futtatják ugyanolyan eredményt produkálva. Az ilyen definiáló dokumentum tartalmaz normatív fejezeteket, amelyek követelményeket állítanak fel, valamint informatív fejezeteket, amelyek az olvasót hivatottak segíteni, de nem része a formális definíciónak. A Pentium 4 ISA-szintjének nem létezik definiáló dokumentuma. Az ISA-szint másik két fontos tulajdonsága, hogy a legtöbb gép legalább két módban mőködhet. A kernelmód az operációs rendszer futtatására szánt mód, amikor is minden utasítás végrehajtható. A felhasználói mód a felhasználói programok futtatását célozza. Memória modellek, memória szemantika: Minden számítógép memóriája cellákra van osztva, és a cellák címei összefüggı tartományt képeznek. A leggyakoribb cellaméret napjainkban 8 bit , de régebben alkalmaztak 1-60 bites cellaméretet is (lásd 2.10 ábrát). Egy 8 bites cella neve bájt. A 8 bites cellaméret oka az, hogy az ASCII kód karakter 7 bit, így a paritásbittel együtt éppen belefér egy bájtba. A bájtok általában 4 bájtos vagy 8 bájtos (64 bit) csoportokba, szavakba vannak rendezve, lehetövé téve, hogy az utasítások teljes szavakon végezzenek mőveletek. Sok architektúra megköveteli, hogy a szavak természetes határokhoz legyenek igazítva, pl. a 4 bájtos szavak címe 0,4,8,…stb kell legyen. Az igazítást gyakran azért követelik meg, mert a memória így hatékonyabban mőködhet. A Pentium 4 például, amely 8 bájtot olvas ki a memóriából, 36 bites fizikai címet használ, de csak 33 bit címe van. A legtöbb gép egyetlen lineáris címtartományt alkalmaz, ami 0-tól valami maximumig terjed, ami gyakran 232 vagy 264 bájt. Azonban néhény gép külön címtartománnyal rendelkezik az adatok, és külön az utasítások számára. Így a 8 címrıl történı utasítás kiolvasása más címtartományra vonatkozik, mint a 8 címrıl történı adat kiolvasása. Ez a séma bonyolultabb, mint amikor csak egyetlen címtartomány van, azonban két elınye is van. Elıször, lehetséges 232 méretü program és 232 adatok csak 32 bites címzést használva. Másodszor, mivel minden írás automatikusan az adat-címtartományra vonatkozik, nem lehet a programot ily módon felülírni, ami egy programozási hibaforrás kiküszöbölését jelenti. Még egy aspektusa van az ISA szintő memória-modellnek – ez a memória szemantika. Természetes elvárás, hogy egy LOAD utasítás, amely ugyanazon címre vonatkozó STORE utasítás lett végrehajtva, éppen eltárolt adatot eredményez. Azonban, a mikroutasítások sorrendje átrendezıdhet. Tehát valós a veszély, hogy a memória nem az elvárt módon viselkedik. A probléma még rosszabbá válhat multiprocesszor esetén, amikor a különbözı CPU-k (esetleg átrendezett) olvasási szorzatot bocsátanak ki osztott memıriára vonatkozóan. Egy szélsıséges megoldás, ha minden memóriahivatkozást szekvencializálnak, így mindegyik elıbb befejezıdik, mint egy másik elkezdıdne. Másik szélsıséges megoldás esetében semmi garancia nincs általánosan biztosítva. A memórihivatkozások sorrendjének kikényszerítésére SYNC utasítást kell a programnak végrehajtania, amely blokkolja minden memóriamővelet kibocsátását mindaddig, amíg az összes eddig kiadott memóriamővelet be nem fejezıdött.

Page 57: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

57

Közbülsı megoldás is lehetne a memóriamodellre, amikor is a hardver automatikusan blokkol bizonyos memóriahivatkozásokat (többek között a RAW és WAR szükséget tartalmazókat), de nem mindet.

Page 58: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

58

39. A Pentium 4 ISA szintje Az alapvetı ISA teljesen támogatja a 8086 és a 8088 processzorokra írt programok végrehajtását. Szoftverszempontból a 8086 és a 8088 16 bites gépek voltak. Ezek leszármazottja a 80286, amely szintén 16 bites gép. A 80386 volt az Intel család elsı 32 bites processzora. A Pentium 4-nek három mőködési módja van. Valós módban minden olyan tulajdonság ki van kapcsolva, amelyet a 8088 után vezettek be, a gép úgy mőködik mint egy egyszerő 8088-as. Ha a program valami szabálytalant csinál, a gép egyszerően összeomlik. Egy lépés elıre a virtuális 8086 mód, amely lehetıvé teszi régi 8088-as programoknak védett módon történı futtatását. Ebben a módban valódi operációs rendszer vezérlete alatt mőködik a teljes gép. A lényeges kivétel, hogy a program összeomlásakor értesíti az operációs rendszert. Végül a harmadik mód a védett mód, amelyben a Pentium 4 valódi Pentium 4-ként viselkedik, és nem úgy, mint egy erısen kiterjesztett 8088-as. A Pentium 4 hatalmas címtartománnyal rendelkezik, a memória 16 384 darab szegmensre van osztva. A legtöbb operációs rendszer (UNIX, minden Windows) csak egy szegmenst támogat. A címtartományban minden bájtnak saját címe van, a szavak 32 bitesek. A szavak tárolása kis endián kódban történik.

Page 59: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

59

40. A Pentium 4, az UltraSPARC III és az I-8051 regiszterei A Pentium 4 elsı négy regisztere, az EAX, az EBX, az ECX és az EDX többé-kevésbé általános célú regiszter. Az EAX a fı aritmetikai regiszter, az EBX jól használható mutató (memóriacím) tárolására, az ECX-nek a ciklusszervezésben van szerepe. Az EDX a szorzás és osztás utasításoknál kell, amikor is az EAX-szel együtt tartalmazzák a 64 bites szorzatot, illetve az osztandót. A felsorolt regiszterek mindegyikének elsı 16 bitje egy 16 bites, elsı 8 bitje pedig egy 8 bites regisztert alkot. A 8088 és 8026 csak 8, illetve 26 bites regisztert tartalmazott. A 32 bites regisztereket a 80386-tal vezették be, E betővel jelölve ıket, ami Extended-et jelent. Az ESI-t és EDI-t memóriába mutató mutatók tárolására szánták. Az EBP is mutatóregiszter, tipikusan az aktuális veremkeret címét tartalmazza. Ha egy regiszter a lokális veremkeret címét tartalmazza, akkor azt mondjuk, hogy keretmutató. Végül az ESP is veremmutató. A következı az EIP, amely az utasításszámláló. Végül az EFLAGS regiszter látható, amely a PSW.

Az UltraSPARC III regiszterek két csoportját tartalmazza: 32 darab 64 bites általános célú regiszter és 32 darab lebegıpontos regiszter. Általános célú regiszter jelei: R0, …, R32. Minden általános regiszter 64 bites. Az ábrán látható regiszterhasználat részben

konvención alapszik, részben azon, ahogyan a hardver kezeli ıket. A fordítóprogram és a programozó felelıssége, hogy a regisztereket megfelelıen használja. A globális változók olyan konstansok, változók és mutatók, amelyeket minden eljárás használ, bár szükség esetén elmenthetık és visszatölthetık eljárásba való belépéskor, illetve kilépéskor. Az Ix és Ox regisztereket paraméterek átadására használják, hogy elkerüljék a memóriahivatkozást. Három dedikált regisztert speciális célra használnak. Az FP és SP regiszterek az aktuális keret határait tartalmazzák. A harmadik speciális célra használt regiszter az R31, amely az aktuális eljárás visszatérési címét tartalmazza. Az UltraSPARC III ténylegesen 32-nél több általános regisztert tartalmaz, de csak 32 látszik a programozó számára adott pillanatban. Ezt a tulajdonságot regiszterablaknak nevezik. A I-8051-es regiszterkészlete szokatlan. A legtöbb 8051-es program úgy készül, hogy nyolc darab 8 bites regisztert használ. A regiszterekre R0, …, R7 nevekkel hivatkozunk. Négy regiszterkészlete van, de egyszerre csak az egyik használható. A PSW 2 bites mezıje mondja meg, éppen melyik az aktuális készlet. A többi regiszterkészlet célja az, hogy lehetıvé tegye a nagyon gyors megszakításfeldolgozást. A 8051-esnek ez a tulajdonsága lehetıvé teszi, hogy másodpercenként nagyon nagyszámú megszakítást tudjon feldolgozni. Egy másik sajátossága a 8051 regisztereinek, hogy a memóriában vannak. A memória 0. bájtja a 0. regiszterkészlet R0 regisztere. Ha egy utasítás megváltoztatja az R0 regiszter tartalmát, majd késıbb egy utasítás a 0. bájtot olvassa, akkor ott a megváltozott R0 értékét találja. Közvetlenül a négy

Page 60: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

60

regiszterkészlet felett a 32. memóriacímtıl a 47-ig terjedı 16 bájt a bit-címezhetı memóriamezı. A bitek címzése 0-tól 127-ig terjed. A 8051 négy általános regiszterkészleten kívül tartalmaz néhány speciális célú regisztert is. A PSW-ben balról jobbra haladva van az átvitelbit, kiegészítı átvitel bit, a használt regiszterkészletre utaló bitek, a túlcsordulásbit és a paritásbit. Az IE regiszter a megszakítások egyedi és kollektív engedélyezését és tiltását kezeli. Az es bit engedi vagy tiltja a soros vonali megszakítást. Az IP regiszter határozza meg a megszakítások prioritás szintjét. A TCON regiszter vezérli a 0. és az 1. idızítıt, ezek a fı idızítık. Az utolsó regiszter, a TMOD az idızítık üzemmódját határozza meg (8, 13 vagy 16 bites), hogy valódi idızítı avagy számláló, továbbá a fokozatot, hogy mely hardverjelek vezérelhetik az idızítıt.

Page 61: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

61

41. Három, kettı egy és nulla címes utasítások Azt az általános módszert, amely meghatározza az operandusok helyét címzésnek nevezzük. Az utasítás mindig tartalmaz mőveleti kódot, amely megmondja, hogy mit csinál az utasítás. Ezenkívül tartalmazhatja 0, 1, 2 vagy 3 operandus címét. Tekintsünk egy (n + k) bites utasításkészletet, ahol k bit a mőveleti kód és n bit a címrész. Ez a 2k különbözı utasítást és 2n memóriacímet tesz lehetıvé. Egy változat lehetne az n + k bit felosztására, ha k – 1 bites mőveleti kódot és n + 1 bit címrészt választanánk. Ekkor feleannyi utasításunk lenne, de kétszer akkora memóriát tudnánk címezni. A k + 1 bites mőveleti kód és n – 1 bites cím több utasítást, de kisebb vagy durvább felbontású memóriát eredményezne. A továbbiakban a mőveletikód-kiterjesztést tárgyaljuk. Tekintsünk egy olyan gépet, amelynek utasításai 16 bitesek, a címrész pedig 4 bites. Olyan utasításrendszer kell, ahol 15 háromcímes, 14 kétcímes, 31 egycímes és 16 0 címes utasítás van, akkor 0-tól 14-ig kódolhatnánk utasításokat. Tényleges mőveleti kódot a 8-15. bitek tartalmazzák, nem pedig a 12-15. bitek. A 0-3. és 4-7. bitek két címet alkotnak. A 14 darab kétcímes utasítás mindegyikében a bal oldali 4 bit értéke 1111, és a 8-11. biteken rendre a 0000-tól 1101-ig terjedı számok vannak. Mivel csak 31 darab egycímes utasítás kell, így az 1111 1111 1111 mőveleti kódot úgy értelmezzük, hogy a tényleges mőveleti kód a 0-15. biten van, és nincs címrész. Ahogy haladunk elıre az eljárásban, egyre hosszabb mőveleti kódot kaptunk: a háromcímesek hossza 4 bit, a kétcímeseké 8 bit, az egycímeseké 12 bit, a 0 címeseké pedig 16 bit lett.

Page 62: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

62

42. Operandus megadás módjai. Közvetlen operandus, direkt, regiszter, regiszter-indirekt, indexelt, bázis-index címzés: A legtöbb utasításnak van operandusa, ezért kell valamilyen módszer az operandus helyének megadására. Ezt nevezzük címzésnek. Közvetlen címzés: Az operandus specifikációjának a legegyszerőbb módja, ha az operandust közvetlenül az utasításban adjuk meg, nem pedig a címét vagy más információt, amely leírja, hogy az operandus hol található. Az ilyen operandust közvetlen operandusnak nevezzük, mert automatikusan betöltıdik az utasítással. A közvetlen címzés lényege, hogy nem kíván külön memóriahivatkozást az operandus kiolvasására. Hátránya, hogy ily módon csak konstanst lehet megadni. Direkt címzés: A memóriabeli operandus megadása egyszerően teljes címének megadásával megtehetı. Ezt a módot direkt címzésnek nevezzük. A direkt címzés használata is korlátozott: az utasítás minden végrehajtása ugyanazt a memóriamezıt érinti. Amíg az érték változhat, a hely nem, vagyis a direkt címzés csak olyan globális változók elérésére használható, amelyek címe fordításkor ismert. Regisztercímzés: A regisztercímzés alapvetıen azonos a direkt címzéssel, azzal a különbséggel, hogy memóriacím helyett regisztert határoz meg. Sok fordítóprogram megnézi, hogy mely változókat használják a legtöbbet, és ezeket regiszterekbe tölti. Ez a címzési mód egyszerően regisztermódként ismert. A töltı/tároló architektúrák, mint az UltraSPARC II, majdnem kizárólag ezt a címzési módot alkalmazzák. Regiszter-indirekt címzés: Ebben a címzési módban is a memóriából olvassuk a specifikált operandust, vagy oda írjuk, mint a direkt címzés esetén, de nem közvetlenül a címe van adva az utasításban. Helyette a címet egy regiszter tartalmazza. Ha egy címet ilyen módon adunk meg, mutatónak hívjuk. A regiszter-indirekt címzés nagy elınye, hogy úgy hivatkozik a memóriára, hogy annak címét nem kell az utasításban tárolni. Továbbá az utasítás különbözı végrehajtása más-más memóriamezıre hivatkozhat. Az olyan programot amely saját magát módosítja, önmódosító programnak nevezzük. Az ötlet Neumann Jánostól ered. Indexelt címzés: Gyakran jól kihasználható, ha ismerjük egy memória címét egy regiszter tartalmához képest. Láttunk erre példát az IJVM esetén, ahol a lokális változókat az LV regiszterhez képest címzik. Azt a címzési módot, amikor a hivatkozott memória címét egy regiszter értéke és egy konstans határozza meg, indexelt címzésnek nevezzük. Bázis-index címzési mód: Néhány gép rendelkezik olyan címzési móddal, amely úgy határozza meg a hivatkozott memória címét, hogy összeadja két regiszter tartalmát, és ehhez hozzáad egy eltolási értéket. Néha ezt a módot bázis-index címzésnek nevezik.

Page 63: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

63

43. Veremcímzés. Fordított lengyel (postfix) jelölés. Dijkstra algoritmusa. Postfix alakú formulák kiértékelése Veremcímzés: Már korábban megjegyeztük, mennyire kívánatos, hogy a gépi utasítás annyira rövid legyen, amennyire csak lehet. A végsıkig redukálva a cím hosszát, eljutunk a 0 címes utasításhoz. Mint már láttuk, 0 címes utasítás lehetséges a veremmel kapcsolatban, például ilyen az IADD. Ebben a szakaszban alaposabban megvizsgáljuk a veremcímzést.

Fordított lengyel jelölés: A matematikában régi hagyomány, hogy a mővelet jelét az operandusok közé írják, mint x + y, nem pedig azok után, mint x y +. Ha a mőveleti jel az operandusok között van infix jelölésrıl beszélünk. Ha a mőveleti jel az operandusok után áll, akkor postfix vagy fordított lengyel jelölés az elnevezés, a lengyel logikatudós J. Lukasiewicz után, aki kimutatta ennek a jelölésnek a jó tulajdonságait.

A fordított lengyel jelölésnek számos elınye van az infix jelöléssel szemben algebrai kifejezések esetén. Elıször is, minden formula kifejezhetı zárójel nélkül. Másodszor, kényelmesen kiértékelhetık a formulák számítógéppel verem használatával. Harmadszor, az infix operátorokra elsıbbségi szabály vonatkozik, amely tetszıleges és nem kívánatos. Például tudjuk, hogy az a * b + c jelentése (a * b) + c és nem a * (b + c), mivel a szorzás nagyobb prioritású, mint az összeadás. Vajon nagyobb prioritású-e a balra léptetés, mint a logikai AND? Ki tudja. A fordított lengyel jelölés kiküszöböli ezt a kellemetlenséget.

Számos algoritmus ismert infix formulák fordított lengyel jelölésre konvertálására. Az itt következı algoritmus E.W Dijkstra ötletén alapszik. Tegyük fel, hogy a formula a következı jeleket tartalmazhatja: változók, bináris (kétoperandusú) operátorok: + - * /, továbbá bal és jobb zárójelek. A formula végeinek jelzésére a formula elé és után a ⊥ jelet tesszük. Példa rajzzal együtt a könyv 386. oldalán.

A változók sorrendje az infix és prefix jelölésben megegyezik. A mőveleti jelek sorrendje azonban nem mindig azonos. A fordított lengyel jelölésben a mőveleti jelek olyan sorrendben szerepelnek, amilyen sorrendben azok végrehajtódnak a kifejezés kiértékelésekor.

Fordított lengyel jelöléső formulák kiértékelése: A fordított lengyel jelölés ideális formulák számítógépes kiértékelésére verem használatával. A formula n jelbıl áll, mindegyik vagy operandus, vagy mőveleti jel. A fordított lengyel jelöléső formulának veremmel való kiértékelése egyszerő algoritmus. Olvassuk a formulát balról jobbra. Ha az operandushoz érünk, akkor rakjuk a verembe. Ha az aktuális jel mőveleti jel, akkor hajtsuk végre a megfelelı mőveletet. Az ábra a (8 + 2 * 5) / (1 + 3 * 2 - 4) formula kiértékelését mutatja JVM-ben. Az ennek megfelelı fordított lengyel jelölés a következı: 8 2 5 * + 1 3 2 * + 4 - / Az ábrán bevezettük az IMUL és IDIV utasításokat, amelyek a szorzás illetve az osztás mőveletet végzik. A verem tetején lévı operandus a jobb és nem a bal operandus. Ez fontos az osztás (és kivonás) esetén, mivel az operandusok sorrendje lényeges (nem úgy, mint az összeadásnál és szorzásnál). Más szóval az IDIV utasítást körültekintıen definiálták, elıször az osztandót kell a verembe tenni, majd az osztót, és ez után kell elvégezni a mőveletet, hogy helyes eredményt kapjunk. Vegyük észre, hogy milyen egyszerő kódot generálni az (I)JVM-re fordított lengyel jelölésbıl: csak olvassuk balról jobbra a formulát, és jelenként kiadunk egy utasítást. Ha a jel konstans vagy változó, akkor olyan utasítást kell kiadni, amely azt a verembe teszi. Ha a jel mőveleti jel, akkor a mőveletet megvalósító utasítást kell kiadni.

Page 64: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

64

44. A Pentium 4, az UltraSPARC III, az I-8051 utasítás formátumai, címzési módjai. A Pentium 4 utasításformátumai nagyon bonyolultak és szabálytalanok. Általánosan

érvényes, hogy ha egy kétoperandusú utasítás egyik operandusa a memóriában van, akkor a másik nem lehet a memóriában. Léteznek utasítások, amelyek regiszter-regiszter, regiszter-memória, memória-regiszter operandusokon dolgoznak. A korai Intel-architektúrákban minden utasítás mőveleti kódja 1 bájtos volt, bár utasítások módosítására intenzíven használták az úgynevezett prefix bájt módszert. Intel kifogyott a mőveleti kódokból, és bevezette a 0xFF kiterjesztı kódot (escape code), hogy lehetıvé tegyen egy második mőveletikód-bájtot. Sok memóriára hivatkozó utasításban a mőveleti kód bájtot a következı bájt adja meg ténylegesen az utasítást. Ez a 8 bit egy 2 bites MOD és két 3 bites REG és R/M mezıkre oszlik. Néhány mód további bájtot igényel, ezek az SIB (Scale, Index, Base – skála, index, bázis).

A Pentium 4 címzési módjai nagyon szabálytalanok, és attól is függnek, hogy 16 vagy 32 bites az utasítás. A támogatott módok: közvetlen, direkt, regiszter-, regiszter-indirekt, indexelt címzés és még egy speciális mód tömbelemek címzésére. A MODE bájt vezérli a címzési módot. Az egyik operandust a MOD és az R/M mezık határozzák meg. A másik operandus mindig regiszter, hogy melyik, azt a REG mezı tartalmazza. Ha 8 bitest választunk, akkor a hozzáadás elıtt elıjelesen kiterjeszti 32 bitesre. Például az ADD utasítás az R/M = 011, MOD = 01 és 6 eltolás esetén kiszámítja az EBX és 6 összegét. Az EBX nem módosul.

Az UltraSPARC III ISA minden utasítása pontosan 32 bit és szóhatárra igazított A tipikusan aritmetikai utasítás két regisztert specifikál a bemenı operandusok és egyet az eredmény számára. Van olyan változat, amikor az egyik regiszter helyett egy 13 bites elıjeles konstanst lehet megadni. A LOAD utasítás összeadja a két regiszter tartalmát, így képezve a betöltendı cella címét. 32 bites utasítás esetén nem lehet 32 bites konstanst megadni az utasításban. A SETHI utasítás 22 bitet ad meg, a maradék 10 bitet másik utasítás adja meg.

Az UltraSPARC ISA minden utasítása közvetlen vagy regisztercímzést használ, kivéve azokat, amelyek memóriára hivatkoznak. Regisztermódban 5 biten van adva regiszter. A közvetlen módban 13 bites (elıjeles) adat lehet konstans. Háromféle utasítás hivatkozik a memóriára: a betöltı (LOAD), a tároló (STORE) és egy multiprocesszor-szinkronizáló utasítás. A 8051-es processzornak hatféle egyszerő utasításformája van. Az utasítások hossza 1, 2 vagy 3 bájt. Az elsı forma csak egyetlen mőveleti kódot tartalmaz. A 2. formátum hossza szintén egy bájt, amely 5 bites mőveleti kódot és 3 bites regisztercímet tartalmaz. A 3. formátumnak egy 1 bájtos operandusa van. A 4. és 5. formátum ugró és szubrutinhívó utasítások formája. A 6. formátumú két 8 bites operandusa van. A 8051 címzési módja nagyon szabályos. Öt alapvetı címzési módja van. Sok utasítás végez mőveleteket, ilyen az összeadás, kivonás, ÉS, VAGY. Az akkumulátort használó utasításokban nincs speciális bit. A másik regisztermód, amikor az egyik operandus regiszter. Regiszter lehet akár forrás, akár cél. A harmadik mód a direkt címzés, amikor az operandus a memóriában van. A negyedik mód a regiszter-indirekt címzés, amikor az operandus címe regiszterben van. Az ötödik mód a közvetlen mód, amikor az operandus megában az utasításban van megadva.

Page 65: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

65

45. Utasítás típusok Adatmozgató utasítások: Adat másolása egyik helyrıl a másikra a legalapvetıbb mővelet. Másoláson azt értjük, hogy létrehozunk egy új objektumot, amelynek a bitképe azonos az eredetivel. Az A = B értékadás megvalósítása az, hogy az B memóriacímrıl az A memóriacímre másolódik az ottani érték, mert a programozó ezt kérte. Az adatoknak forrásuk szerint két lehetséges helye van: a memória vagy a regiszter és a cél is vagy a memória, vagy a regiszter, ezért négy esete lehet a másolásnak. Néhány gépnek négy külön utasítása van a négy esetre. Még mások a LOAD utasítást adják a memóriából a regiszterbe, a STORE utasítást a regiszterbıl a memóriába, a MOVE utasítást pedig a regiszterbıl regiszterbe történ átvitelre, és nincs a memóriából közvetlen memóriába közvetlenül mozgató utasítás. Diadikus mőveletek: A kétoperandusú, egyetlen eredményt szolgáltató mőveleteket nevezzük diadikus mőveleteknek. A diadikus mőveletek másik csoportjába tartoznak a logikai utasítások. Szokásos az AND, OR és NOT, néha a XOR kizáró vagy, a NOR, valamint a NAND is megtalálható. Az and mővelet egyik fontos alkalmazása bitek kivágása szavakból. Karakter kivágása úgy történik, hogy a karaktert tartalmazó szónak és egy konstansnak, a maszknak az and mővelettel vett eredményét képezzük. A mővelet eredményeként az összes nem kívánt bit értéke 0 lesz, kimaszkolódik. Monadikus mőveletek: A monadikus mőveleteknek egy operandusa van, és egy eredményt ad. A léptetı mővelet hatására minden bit azonos mértékben balra vagy jobbra léptetıdik, a szélén kilépı bitek elvesznek. Forgatás esetén a kilépı bitek a másik oldalon bejönnek. Egy szóhoz 1 hozzáadása gyakori számláláskor. Az ADD utasítás monadikus megfelelıje az INC utasítás, amely 1-et ad az operandushoz. A NEG (negáció) utasítás szintén jó példa. X negálása a 0 – X kiszámítását jelenti, ami diadikus kivonás lenne, de szintén gyakori, ezért külön monadikus utasítást alkalmaznak, ez a NEG. A NEG mővelet a szám additív inverzét adja. A NOT mővelet pedig a szó minden bitjét ellenkezıjére változtatja. Összehasonlító és feltételes elágazó utasítások: Az elágazás megvalósításának általános módszere az, hogy feltételes elágazó utasítást vezetnek be, amely megadott feltétel teljesülését ellenırzi, és ha a feltétel teljesül, akkor elágazás (ugrás) következik egy megadott memóriacímre. A leggyakrabban a gép egy bizonyos bitjének 0 vagy nem 0 értéke jelenti a feltételt. Ha egy utasítás azt írja elı, hogy teszteljük egy szám elıjelbitjét és ugorjunk a CÍMKE címre, ha a bit 1-es, akkor a CÍMKE címő utasítás hajtódik végre, ha a szám negatív, és a feltételes elágazást követı utasítás, ha a szám 0 vagy pozitív. Eljáráshívó utasítások: Utasítások olyan sorozatát nevezzük eljárásnak, amely meghatározott feladatot old meg, és a program különbözı helyeirıl hívható. A szubrutin elnevezés használatos, különösen, ha assembly nyelvrıl van szó. A JAVA nyelvben a metódus elnevezést használják. Javított megoldás az, amikor a visszatérési címet a hívó utasítás a hívott eljárás elsı szavába tölti. Ilyenkor az eljárás elsı végrehajtandó utasítása az ezt következı szó. Ez a séma megbukik, ha az eljárás önmagát hívja, mivel az elsı visszatérési érték felülírja a másodikat. Azt a képességet, amikor az eljárás önmagát hívhatja, rekurziónak nevezzük. Ismétléses vezérlés: Gyakran elıfordul, hogy utasítások egy sorozatát adott számszor meg kell ismételni, ezért néhány gép erre külön utasítást biztosít. Az egyik módszer szerint a számlálót ciklusmagon kívül inicializálják, és azonnal elkezdıdhet a ciklusmag végrehajtása. A ciklusmag utolsó utasítása aktualizálja a számláló értékét, és ha a befejezési feltétel nem teljesül, akkor ugrás következik a ciklusmag elsı utasítására. Egyébként az ismétlés véget ér, és a ciklusmagot követı utasításra kerül a vezérlés. Ezt az ismétlést végfeltételes ismétlésnek nevezzük.

Page 66: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

66

46. Programozott és megszakítás vezérelt I/O. DMA A mai személyi számítógépek három különbözı sémát használnak. 1. Programozott B/K tevékeny várakozással. 2. Megszakításvezérelt B/K. 3. DMA B/K A legegyszerőbb B/K módszer a programozott B/K, amelyet általánosan használnak egyszerő mikroprocesszorokban. A CPU-nak általában egyetlen bemeneti és egyetlen kimeneti utasítása van. Egyetlen karakter kerül átvitelre a processzor rögzített regisztere és a kiválasztott B/K között. Tekintsük a következı egyszerő példát erre a módszerre, amikor egy terminál négy 1 bájtos regiszterrel rendelkezik. Két regiszter használatos a bemenet (állapot és adat) és ugyancsak kettı a kimenet számára. A billentyőzet-regiszter 2 használt és 6 nem használt bitet tartalmaz. Amikor bekövetkezik, a szoftver beolvassa a karaktert a billentyőzetpufferbıl. A beolvasás hatására az állapotregiszter „Karakter elérhetı” bitje 0-ra állítódik. A kimenet hasonlóan mőködik. A programozott B/K elsıdleges hátránya, hogy a CPU azzal van elfoglalva, hogy egy ciklusban arra várjon, mikor válik az eszköz átviteli állapotra késszé. Ezt tevékenység várakozásnak nevezzük. Úgy szabadulhatunk meg a tevékenység várakozástól, hogy a CPU-t megkérjük, indítsa el a B/K eszközt, és az eszközmegszakítással jelezzen, ha elvégezte az átvitelt. Érdemes megjegyezni, hogy sok számítógép esetén a megszakítási jelet úgy generálják, hogy veszik a „Megszakítás engedélyezett” és a „Karakter elérhetı” bitek logikai AND szorzatát. Ha a szoftver elıbb állítja be a megszakítás engedélyezését, akkor azonnal jelentkezik a megszakítás. Egy új lapkát adunk a rendszerhez, a DMA- (Direct Memory Access, direkt memóriaelérés) vezérlıt, amely közvetlenül eléri a sínt. A DMA lapka legalább négy olyan regisztert tartalmaz, amelyek a CPU-n futó szoftverrel betölthetık. Az elsı azt a kezdı memóriacímet tartalmazza, amelyiket írni vagy olvasni kell. A második az átviendı bájtok számát tartalmazza. A harmadik az átvitelre kiválasztott eszköz sorszámát vagy B/K címet tartalmazza. A negyedik regiszter az átvitel irányát tartalmazza, tehát olvasást vagy írást akarunk. Bár a DMA megszabadítja a CPU-t a B/K munka dandárjától, a CPU nem teljesen szabad. Ha a DMA nagy sebességő eszközt, például mágneslemezt vezérel, akkor sok sínciklusra van szüksége mind a memória, mind az eszköz elérése érdekében. Amikor a DMA sínciklust vesz el a CPU-tól, azt cikluslopásnak nevezzük.

Page 67: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

67

47. Vezérlési folyamat. Szekvenciális vezérlés, elágazás, ciklus vezérlés, eljárás, rekurzív eljárás, korutinok, megszakítás, csapda A vezérlési folyamat azt a sorrendet jelenti, amelyben az utasítások végrehajtódnak dinamikusan, tehát a progrma végrehajtása során. Általában elágazás és eljáráshívás hiányában az egymás után végrehajtott utasítások egymás utáni memóriahelyekrıl töltıdnek be. Eljáráshívás hatására a végrehajtási sorrend megváltozik, az éppen végrehajtás alatt lévı eljárás felfüggesztıdik, és a hívott eljárás végrehajtása elkezdıdik. Szekvenciális vezérlés és elágazás: A legtöbb utasítás nem változtatja a végrehajtási sorrendet. Miután egy utasítás végrehajtódott, a memóriában ıt követı utasítás olvasódik és hajtódik végre, Minden utasítás után az utasításszámláló értéke növelıdik a végrehajtott utasítás hosszával. Dinamikus sorrend, ahogy a processzor ténylegesen végrehajtja az utasításokat, megegyezik az utasítások programbeli sorrendjével. Ha a program tartalmaz elágazást, akkor ez az egyszerő kapcsolat az utasítások memóriabeli sorrendje és a végrehajtásuk sorrendje között nem áll fenn. Ha van elágazás, akkor az utasításszámláló értéke nem lineáris függvénye többé az idınek. Eljárások (rekurzív eljárás): Bizonyos szempontból az eljáráshívás ugyanúgy eltéríti a végrehajtási sorrendet, mint az ugrás, csak amikor befejezte feladatát az eljárás, a vezérlés visszatér a hívást követı utasításra. Más szempontból azonban az eljárás törzse úgy tekinthetı, mint egy magasabb szintő utasítás definíciója. Eljáráshívást tartalmazó program megértéséhez azt kell tudni, hogy mit csinál, azt nem, hogy az eljárás hogyan mőködik. Eljárások egyik speciális fajtája, a rekurzív eljárás, amely önmagát hívja vagy közvetlenül, vagy más eljárásokon keresztül. Rekurzív eljárások megvalósításához verem kell, ahol az eljárás paramétereit és lokális változóit tároljuk minden egyes hívás esetén, mint az az IJVM esetén láttuk. Minden egyes eljáráshíváskor a hívott eljárás számára új veremkeret létesül a verem tetején. A veremmutató mellett, amely mindig a verem tetejére mutat, gyakran kényelmes, ha van egy veremkeret-mutatónk is, az FP, amely a kereten belül fix helyre mutat. Ez lehet a kapcsolómutató (OBJREF), mint az IJVM-ben, vagy a nulladik lokális változó. Eljárásprológusnak nevezzük azt a tevékenységet, amely a régi veremkeret-mutató elmentését, az új veremkeret-mutató megadását és a veremmutatónak, a lokális változók befogadása miatti növelését tartalmazza. Az eljárásból való visszatéréskor a vermekt ki kell takarítani, ezt nevezzük eljárásepilógusnak. Korutinok (társrutinok): Tekintsük az A eljárást, amely hívja B eljárást. A B eljárás számol egy ideig, aztán visszatér az A eljáráshoz. Az asszimetria abból adódik, hogy amikor a vezérlés A-tól B-hez kerül, akkor a végrehajtás B eljárástörzsének elején kezdıdik, amikor pedig a visszatér B-tıl A-hoz, akkor a végrehajtés nem A törzsének elején folytatódik, hanem a hívást követı utasítással. Ha A késıbb ismét hívja a B-t, akkor a végrehajtás ismét B elején kezdıdik. Ha A futása közben többször is hívja B-t, B végrehajtása mindig az elején kezdıdik. Ez a különbség tükrözıdik abban a módszerben, ahogy a vezérlés átadódik A és B között. Néha hasznos, ha két eljárás, A és B egymást követı eljárásaként hívja. Ha B visszatér A-hoz, akkor a végrehajtás a B-t követı utasítás után folytatódik. Ha a vezérlés A-tól B-hez kerül, akkor a végrehajtás a legutolsó B-bıl való visszatérést követı, vagyis az utolsó A-t hívü utasítással folytatódik. Az olyan két eljárást, amelyek ilyen módon mőködnek, korutinnak (társrutin) nevezzük. Korutinokat általában párhuzamos feldolgozás szimulálására hasznáénak olyan gépeken, amelyekben csak egy CPU van.

Page 68: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

68

Csapdák: A csapda olyan automatikusan hívott eljárás, amelyet valamely, a program által elıidézett fontos, de ritkán elıforduló feltétel vált ki. Jó példa erre a túlcsordulás. Sok számítógépen, ha az aritmetikai mővelet eredménye olyan nagy lenne, hogy nem lehet a gépet ábrázolni, akkor csapda keletkezik. Azt az eljárást, amelyre ilyenkor a vezérlés adódik, csapdakezelınek hívják, amely valamilyen megfelelı tevékenységet végez, például hibaüzenetet ír ki. A csapda jellemzıje, hogy a program maga okoz valamilyen kivételes helyzetet, amelyet a hardver vagy mikroprogram fedez fel. Néhány kivétele helyzet, amely csapdával lekezelhetı: lebegıpontos túlcsordulás, lebegıpontos alulcsordulás, veremtúlcsordulás stb. Megszakítások: A megszakítás olyan eltérítése a vezérlési folyamatnak, amelyet nem a program okoz, hanem valami más, általában a B/K. Például, a program utasíthatja a lemezegységet, hogy kezdje az adatátvitelt, és annak befejezésekor megszakítást küldjön. Ugyanúgy, mint a csapda a megszakítás bekövetkeztekor is megáll a program végrehajtása, és a vezérlés a megszakításkezelıre adódik, amely elvégzi a kívánt tevékenységet. Az alapvetı különbség a csapdák és a megszakítások között a következı: a csapdák a programmal szinkronban vannak, a megszakítások pedig aszinkronban. Ha egy programot milliószor megismétlünk ugyanazzal a bemenettel, a csapda mindig pontosan ugyanott keletkezik, de a megszakítás nem.

Page 69: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

69

48. Feltételes végrehajtás, predikáció Az IA-64 másik fontos jellemzıje az a módszer, amellyel a feltételes elágazásokat

kezeli. Ha mód lenne arra, hogy a legtöbbjüktıl megszabaduljunk, a CPU sokkal egyszerőbb és gyorsabb lenne. Elsı ránézésre lehetetlen megszabadulni tılük, mert a programok tele vannak if utasításokkal. Azonban, az IA-64 olyan technikát használ, az ún. predikációt, amely használatával nagymértékben csökkenthetı a számuk.

A jelenlegi számítógépek minden utasítása feltétel nélküli abban az értelemben, hogy amikor a CPU eléri, akkor feltétel nélkül végrehajtja. Nincs helye belsı kérdésnek: "Tenni vagy nem tenni?" Ezzel ellentétben a predikációs architektúrákban az utasítások feltételt tartalmaznak (predikátum), amely megmondja, hogy végre kell-e hajtani az utasítást, vagy sem. Ez a paradigma, amely elmozdulást jelent a feltétel nélküli utasításoktól a predikációs utasítások felé, lehetıvé teszi, hogy (sok) feltételes elágazástói megszabaduljunk. Ahelyett hogy két, feltétel nélküli utasítássorozat között kellene választani, valamennyi utasítást egyetlen predikációs utasítássorozatba fésülnek össze, különbözı predikátumot alkalmazva különbözı utasításokban.

A predikáció mőködésének bemutatását kezdjük egy egyszerő példával Ez a feltételes végrehajtás (feltételes utasítás), a predikáció elıdje. Az (a) ábra az if utasítást mutatja, a (b) ábrán pedig ennek három utasítássá való lefordítása látható: összehasonlítás, feltételes elágazás és mozgató utasítás. A (c) ábrán megszabadultunk a feltételes elágazástói, bevezetve egy új utasítást, a feltételes mozgatást. Ez megvizsgálja az Rl regiszter tartaimát, ha 0, akkor R3-at átmásolja R2-be, ha nem 0, akkor nem tesz semmit. (a) if(R1==0) R2=R3; (b) CMP R1, 0 BNE L1 MOV R2, R3 L1: (c) CMOVZ R2, R3, R1

Page 70: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

70

49. Operációs rendszer szintje. Virtuális memória. Az operációs rendszer (operating system) a programozó szempontjából olyan program,

amely az ISA-szint fölött és alatt számos új utasítást és lehetıséget kínál. Az általa megvalósított szintet röviden OSM (Operating System Machine Level, operációs rendszer gép szintje) néven fogjuk emlegetni. Az OSM-szintő utasítások az alkalmazói programozók rendelkezésére álló teljes utasításkészletet jelentik. Tartalmazzák majdnem az összes ISA-szintő utasítást, valamint az operációs rendszer által hozzáadott új utasításokat. Ezeket az új utasításokat rendszerhívásoknak (system calls) szokás nevezni.

Gyakran csupán azért kellett lassúbb algoritmusokkal használni, mert a jobb algoritmusok túl nagyok voltak. A probléma hagyományos megoldása a másodlagos memória. A programozó olyan átfedéseknek (overlays) nevezett kisebb részekre osztotta fel programját, amelyek külön-külön már elfértek a memóriában. Az átfedések kezelése igen sok munkával járt. Egy manchesteri kutatócsoport 1961-ben olyan módszert javasolt az átfedések automatikus kezelésére, melynél a programozónak nem is kellett tudnia az egész rendszerrıl. Ez a módszer, amely ma virtuális memória (virtual memory) néven ismert.

Példaként vegyünk egy akkoriban tipikusnak számító gépet, melynek, mondjuk, 4096 szavas memóriája, utasításaiban pedig 16 bites címrésze volt. A gépen futó programok 65 536 szót tudtak megcímezni. Figyeljük meg, hogy a megcímezhetı szavak száma a címben lévı bitek számától függ. Ennek a gépnek a címtartománya (address space) tehát a 0, 1, 2, …, 65 535 számokból áll, mivel ez a lehetséges címek halmaza.

Virtuális memóriával rendelkezı gépen a következı lépések hajtódnak végre: 1. A memória tartalmának lemezre mentése. 2. A 8192 és 12287 közti szavak megkeresése a lemezen. 3. A 8192 és 12287 közti szavak betöltése a memóriába. 4. A memóriatérkép megváltoztatása: a 8192 és a 12287 közti címek leképezése a 0 és 4095 közti memóriarekeszekre. 5. A végrehajtás folytatása Az átfedések automatikus kezelésének ezt a technikáját lapozásnak (paging), a lemezrıl beolvasott programrészeket pedig lapoknak (page) nevezzük. A nyomaték kedvéért azokat a címeket, amelyekre a program hivatkozhat, virtuális címtartománynak (virtual address space), míg a tényleges memóriacímeket fizikai tartománynak (physical address space) fogjuk nevezni. A memóriatérkép (memory map) vagy laptábla (page map) az egyes virtuális címeknek megfelelı fizikai címeket határozza meg. A virtuális címtartomány azonos mérető lapokra szokás felosztani. A ma szokásos lapméretek 512 és 64 KB bájt közé esnek, bár alkalmanként használnak 4 MB-os lapokat is. A darabok mérete a lapmérettel megegyezı, így mindegyikük pontosan egy lap tárolására alkalmas. Ezeket a memóriadarabokat, melyekbe lapokat töltünk be, lapkereteknek (page frames) nevezzük. Vizsgáljuk meg, hogyan képezhetı le valamely 32 bites virtuális cím a fizikai memória egy címére. A memória csak ilyen címekkel tud dolgozni. Minden virtuális memóriával ellátott számítógép tartalmaz a virtuálisról fizikai címre való leképezést megvalósító eszközt. Ennek neve MMU (Memory Management Unit, memóriakezelı egység). Elhelyezkedhet magán a CPU lapkán vagy külön lapkán, mely utóbbi szorosan együttmőködik a CPU-val.

Page 71: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

71

50. Lapméret, elaprózódás Ha egy 4096 bájtos lapmérető gépen például a program és az adatok összesen 26 000 bájtot igényelnek, akkor megtelik az elsı 6 lap (6 x 4096 = 24 576 bájt), és az utolsó lapra marad még 26 000 – 24 576 = 1424 bájt. Mivel laponként 4096 bájt számára van hely, elpocsékoltunk 2672 bájtot. Az elvesztegetett bájtokkal kapcsolatos fenti problémára belsı elaprózódás (internal fragmentation) néven fogunk hivatkozni. A lapméretet n bájtosra választva a belsı elaprózódás miatt a program utolsó lapján elveszített hely átlagosan n/2 bájt lesz. Ráadásul kis lapméretnél a lemez sávszélességének kihasználtsága sem megfelelı. Átvitel kezdete elıtt körülbelül 10 ms-ot kell várakozni a keresési és forgási késleltetés miatt, a nagyobb mennyiségő átvitel hatékonyabb a kisebbnél. 10 MB/s átviteli sebesség esetén 1 KB helyett 8 KB átmásolása csak 0,7 ms-mal igényel több idıt. A kis lapoknak viszont megvan az elınye, hogy virtuális címtartomány elkülönült helyein elhelyezkedı sok kis lapból álló munkahalmaz esetén kisebb a vergıdés helye. 1 KB lapmérettel csak 10 MB RAM.ra lenne szükség.

Page 72: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

72

51. Szegmentálás. A Pentium 4 és az UltraSPARC III virtuális memóriája Sok esetben elınyösebb, ha egyetlen virtuális címtartomány helyett kettı vagy több

külön címtartományunk van. A szimbólumtábla számára lefoglalt memóriarész akkor is betelhet, ha a többi táblában még rengeteg hely van. A fordítóprogram egyszerően kiírhatja, hogy a túl sok változó miatt nem tudja folytatni a munkáját. Az egyik nyilvánvaló megoldás sok teljesen független címtartomány, ún. szegmensek (segments) bevezetése. Minden szegmens 0-tól valamely maximális értékig terjedı címek lineáris sorozata. Mivel minden szegmens külön címtartományt alkot, a különbözı szegmensek egymástól függetlenül nıhetnek vagy zsugorodhatnak. Amikor az egyik szegmensben elhelyezkedı veremnek a növekedéséhez nagyobb címtartományra van szüksége, nyugodtan megkaphatja. A szegmens olyan logikai egység, amely a programozó számára is látható, s amelyet ı is egyetlen logikai egységként kezel. A szegmens tartalmazhat eljárást, tömböt, vermet stb. A különbözı programok közti kód- és adatmegosztást is elısegíti a szegmentálás.

A szegmentálás kétféle módon valósítható meg: cseréléssel (swapping) vagy lapozással. Az elsı módszernél minden idıpillanatban szegmensek bizonyos halmaza van a memóriában. A szegmensek cserélése bizonyos értelemben hasonló a kérésre lapozáshoz: a szegmensek szükség szerint mozognak a lemez és a memória között. A szegmentálás megvalósítása azonban lényegesen eltér a lapozásétól: míg a lapméret rögzített, a szegmensek mérete változó. Miután egy ideig fut a rendszer, a memória szegmenseket és „lyukakat” tartalmazó részekre osztható. A jelenség neve külsı elaprózódás (external fragmentation), mivel az elpocsékolt hely a szegmenseken kívül, a köztük lévı lyukakban van. A külsı elaprózódást néha lyukacsosodás (checkerboarding) néven is emlegetik. Egy népszerő algoritmus, a legjobb illesztés (best fit), azt a legkisebb lyukat választja, amelybe belefér a kért szegmens. Emögött az az ötlet áll, hogy a lyukak és a szegmensek összepárosításánál lehetıleg ne „törjünk le” darabokat olyan nagy lyukakból, amelyeket fel lehetne használni a késıbbi nagy szegmensekhez. A másik kedvelt eljárás, az elsı illesztés (first fit), körbemegy a listán, és azt az elsı lyukat választja, amely elég nagy a szegmens tárolására. Ehhez nyilvánvalóan kevesebb idı kell, mint az egész lista átnézéséhez a legjobb illesztés megkeresésénél.

Pentium 4 virtuális memóriája: A Pentium 4 virtuális memóriájának legfontosabb része két tábla, az LDT (Local Descriptor Table, lokális leírótábla) és a GDT (Global Descriptor Table, globális leírótábla). Minden programnak saját LDT-je van, de a gépen futó összes program egyetlen megosztott GDT-t használ. A szelektor egyik bitje azt mondja meg, hogy a szegmens lokális vagy globális. Tizenhárom további bit adja meg az LDT-n vagy GDT-n belüli bejegyzés sorszámát, ezek a táblák tehát legfeljebb 8 K bejegyzést tárolhatnak. A 0. leíró érvénytelen, használata csapdát (trap) eredményez. Amikor a szelektor betöltıdik valamelyik szegmensregiszterbe, az LDT-bıl vagy a GDT-bıl a megfelelı leíró is bekerül az MMU belsı regisztereibe, hogy gyorsabban el lehessen érni. Elıször a szelektor 2. bitje alapján vesszük az LDT vagy GDT táblát. Ezután a szelektor az MMU egyik munkaregiszterébe másolódik át. Végül hozzáadódik az LDT vagy GDT tábla belsı MMU-regiszterekben tárolt címe, amivel közvetlenül a leíróra mutató pointert kapunk. Ha a szelektor példádul a GDT tábla 9. bejegyzésére hivatkozik, akkor a GDT + 72. címen található. Kövessük végig a (szelektor, eltolás) pár fizikai címmé alakításának lépéseit. Mihelyt megtudja a hardver, hogy melyik szegmensregisztert kell használni, belsı regisztereiben rögtön megtalálja a szelektorhoz tartozó teljes leírót. Ezután megvizsgálja, hogy az eltolás (offset) a szegmens határain belül van-e. Ha a leíró G bitje 0, akkor a LIMIT mezıa szegmens pontos méretét adja meg. Ha ez a bit 1, akkor a LIMIT mezı bájtok helyett lapokban tartalmazza a méretét. Ha a szegmens a memóriában van, és az eltolás is a megengedett határok közé esik, akkor a Pentium 4 a leíró 32 bites BASE mezıjét az eltoláshoz hozzáadva a lineáris címet (linear address) alakítja ki. Ha a lapozás tiltott, akkor a lineáris

Page 73: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

73

címet fizikai címként értelmezi, és rögtön továbbítja a memória felé íráshoz vagy olvasáshoz. Ha viszont engedélyezett a lapozás, akkor a lineáris címet virtuális címként értelmezi, és laptáblák használatával képezi le a fizikai címre. Minden futó programhoz tartozik egy lapkönyvtár (page directory), amely 1024 darab 32 bites bejegyzést tartalmaz, erre a lapkönyvtárra egy globális regiszter mutat. A laptábla bejegyzései 32 bitesek, ebbıl 20 bit tartalmazza a lapkeret számát. A fennmaradó részt az operációs számára hasznos értékekkel tölti fel a hardver.

A Pentium 4 védelmi szintje: A Pentium 4 négy védelmi szintet támogat, a 0. a legerısebb, a 3. a leggyengébb. A program futásának minden pillanatában adott szinten van, ezt a PSW (Program Status Word, programállapotszó) nevő regiszter 2 bites mezıje tartalmazza. Az alacsonyabb szinteken található adatok elérése illegális, az ilyen kísérletek csapdát okoznak. Egy szintközi hívásnál a CALL utasításnak a cím helyett szelektort kell tartalmaznia. Ez a szelektor egy híváskapu (call gate) nevő leírót jelöl ki.

A 0. szinten az operációs rendszer magja (kernel) található. Ez kezeli a B/K-t, a memóriát és más kritikus dolgokat. Az 1. szinten van a rendszerhívás-kezelı. A 2. szint a könyvtári eljárásokat tartalmaz, melyeket esetleg több program használ. Végül a felhasználói programok a legkisebb védettségő 3. szinten futnak.

Az UltraSPARC III virtuális memóriája: Az UltraSPARC III 64 bites virtuális címeken alapuló lapszervezéső virtuális memóriát támogató 64 bites gép. Csak 44 bit érhetı el, emiatt a programok nem lehetnek 1,8 x 1013 bájtnál hosszabbak. A négy támogatott lapméret: 8 KB, 64 KB, 512 KB és 4 MB. Az UltraSPARC MMU-ja ehelyett egészen más megközelítést használ. Tartalmaz egy TLB (Translation Lookaside Buffer, lapkezelı segédpuffer) nevő hardvertáblát a virtuális lapok fizikai lapkeretekre való leképezésére. A TLB ehelyett csak a legutóbb használt virtuális lapok sorszámát tárolja. Minden TLB-bejegyzés egy virtuális lapsorszámból és a neki megfelelı fizikai lapkeret sorszámából áll. Amikor az MMU egy processzusszámot vagy másképp környezetet (context), és egy ebbe a környezetbe tartozó virtuális címet kap, speciális áramkörök segítségével összehasonlítja az adott környezethez tartozó összes TLB-bejegyzéssel. Ha egyezést talál valahol, a megfelelı TLB-bejegyzésben szereplı lapkeretsorszámot a virtuális címben szereplı eltolással (offset) összekombinálva képezi. Elsısorban azt várjuk el, hogy az operációs rendszer készítsen gyakran használt TLB-bejegyzésekrıl egy szoftveres gyorsítótárat a TSB (Translation Storage Buffer) nevő táblázatban. TLB-hiány esetén az operációs rendszer megvizsgálja, hogy a megfelelı TSB-bejegyzés a szükséges lapot tartalmazza-e. TSB-találat esetén valamelyik TLB-bejegyzés törlıdik, majd helyére bemásolódik a kért TSB-bejegyzés. Ha a TSB-keresés sikertelen volt, a virtuális lap címe nincs a „gyorsítótárban”, az operációs rendszer egy másik táblázatban keresi a lapra vonatkozó információt. A végsı megoldásként használt tábla neve fordítótábla (translation table).

Összehasonlítás: A Pentium 4 támogatja a tiszta szegmentálást, a tiszta lapozást és a lapozott szegmenseket. Az UltraSPARC III-on csak lapozás van, A Pentium 4 használ hardver segítségét a laptábla bejárásához, TLB-hiány esetén újra kell tölteni a TLB-t. Az UlraSPARC TLB-hiány elıfordulásakor csupán átadja a vezérlést az operációs rendszernek.

Page 74: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

74

52. Mágneslemezek, lemezvezérlık, SCSI Egy mágneslemez egy vagy több mágnesezhetı bevonattal ellátott alumínium korongból áll. Egy indukciós tekercset tartalmazó fej lebeg a lemez felszíne felett egy vékony légpárnán. Ha pozitív vagy negatív áram folyik az indukciós tekercsben, a fej alatt a lemez magnetizálódik. Egy teljes körfordulás alatt felírt bitsorozat a sáv. Minden sáv rögzített mérető, tipikusan 512 adatbájtot tartalmazó szektorokra osztva, melyeket egy fejléc elız meg, lehetıvé téve a fej szinkronizálását írás és olvasás elıtt. Az adatok után hibajavító kód található, ez vagy Hamming-kód, vagy egyre gyakrabban a többszörös hibákat is javítani képes Reed-Solomon-kód. Az egymást követı szektorok között keskeny szektorrés van. A formázott kapacitás általában 15 százalékkal kisebb, mint a formázatlan. A felület tisztasága és a levegı minısége érdekében a legtöbb lemezt gyárilag légmentesen lezárják. Az ilyen lemezeket winchesternek hívják. Az elsı ilyen lemezegységekben 30 MB lezárt, fix tárolóhely és 30 MB cserélhetı tárolóhely volt. A legtöbb lemezegység több egymás felett elhelyezett korongból áll. Egy adott sugárirányú pozícióhoz tartozó sávok összességét cilindernek nevezzük. Jelenlegi PC diszkekben 6-12 korong található egymás felett. Egy szektor beolvasásához vagy kiírásához elıször a fejet a megfelelı sugárirányú pozícióba kell állítani. Ezt a mőveletet keresésnek (seek) hívják. Az átlagos keresési idık 5 és 10 ms között vannak. A fej kívánt sugárirányú pozícióba való beállása után van egy kis szünet, az ún. forgás késleltetés, amíg a keresett szektor a fej alá fordul. Minden lemezhez tartozik egy lemezvezérlı, egy lapka, amely vezérli a meghajtót. Egyes vezérlıkben egy teljes CPU van. A Seagate lemezegységben 4 fej, 306 cilinder és sávonként 17 szektor volt. Az operációs rendszer a lemezre íráshoz, és a lemezrıl olvasáshoz a paramétereket CPU-regiszterekbe töltötte, majd meghívta a PC beépített, csak olvasható memóriájában tárolt BIOS-t (Basic Input Output System). A technológia gyorsan fejlıdött a külön kártyán elhelyezett vezérlıtıl meghajtóba invertált vezetıig, ezek közül az elsık az IDE- (Integrated Drive Electronics, beépített eszközelektronika). Nem sok idı telt el, és 504 MB-nél ugyan kisebb lemezegységek kezdtek megjelenni, de rossz felosztással. Az operációs rendszer nem tudta kezelni ezeket a régóta megkövesedett BIOS-hívásokkal. Ennek következtében a lemezvezérlık elkezdtek hazudni. Végül felváltották az EIDE- (Extended IDE) kiterjesztett IDE) meghajtók, amelyek támogatnak egy másik címzési módot is; ez az LBA (Logical Block Addressing, logikai blokk címzés), amely a szektorokat egyszerően 0-tól a maximális 228 – 1-ig számozza. Az EIDE utódja az ATA-3 (AT Attachment, AT kiegészítı) lett. A szabvány következı változatában, az ATAPI-4-ben (ATA Packet Interface, ATA-csomaginterfész) a sebességet 33 MB/s-re növelték. Az ATAPI-5 esetében pedig 66 MB/s-re. Az ATAPI-7 megváltoztatta az LBA-címek méretét 48 bitre. Az ATAPI-7 ahelyett, hogy a lemezvezérlı csatlakozójának a méretét növelték volna meg, ez a szabvány soros ATA átviteli módot használ arra, hogy egyszerre 1 bitet továbbítson egy 7 érintkezıs csatlakozón keresztül. Az ANSI 1986-ban szabványosította, és nevét SCSI-re (Small Computer System Interface, kis számítógéprendszerek interfésze) módosította. A SCSI-lemezek a nagyobb adatátvitel sebességük miatt a Sun, HP, SGI és más cégek legtöbb UNIX-munkaállomásának szabványfelszereléséhez tartoznak. A SCSI több egy merevlemez-inferfésznél. Ez egy sín, amelyre egy SCSI-vezérlı és legfeljebb hét eszköz csatlakoztatható. Minden SCSI-egységnek van egy 0 és 7 közötti egyértelmő azonosítója. A sorban utolsó eszközt le kell zárni, nehogy a SCSI sín végérıl induló visszaverıdések zavart okozzanak az adatforgalomban.

Page 75: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

75

53. RAID 1988-as cikkük során Patterson és társai hat olyan lemez-összakapcsolási módot javasoltak, amelyek vagy teljesítmény, vagy a megbízhatóság, vagy mindkettı növelésére használhatók. Ez elvezetett egy új típusú B/K eszköz megszületéséhez, amelynek neve: RAID. Pattersonék RAID-definíciója eredetileg olcsó lemezek redundáns tömbje (Redundant Array of Inexpensive Disks) volt. Azon túl, hogy a RAID szoftverszempontból egyetlen lemeznek látszik, az adatok szét vannak osztva a meghajtók között, lehetıvé téve a párhuzamos mőködést. Ma a RAID-nak 0-tól 5-ig vannak szintjei. A RAID-0 által szimulált virtuális lemez k darab szektorból álló csíkokra van felosztva, a 0-tól a k – 1-ig terjedı szektorok a 0. csoporthoz tartoznak, k-tól a 2k – 1-ig a 1. csoporthoz és így tovább. k = 1 esetén minden csík egyetlen szektorból áll, k = 2 esetén két szektorból stb. A RAID-0 az egymás után következı csíkokat körben forgó módszerrel írja fel a lemezekre. Ezt a fajta adatelosztást csíkozásnak (striping) hívják. A RAID-0 nagymérető blokkokkal mőködik a legjobban. A RAID-0 olyan operációs rendszerekkel teljesít a leggyengébben, amelyeknek az a szokása, hogy szektoronként kezeli az adatokat. Az eredmények helyesek lesznek de nincs párhuzamosság, így nincs teljesítménynövekedés sem. A RAID-1, amely már igazi RAID. Minden lemezt megdupláz, tehát négy elsıdlehes és négy tartalék lemez van. Az írás nem hatékonyabb, mint egyetlen meghajtó esetén, de az olvasás kétszer olyan gyors lehet. Eltérıen a 0-s és 1-s szintektıl, amelyek szektorcsoportokkal dolgoznak, a RAID-2 szóalapú, esetleg bájtalapú is lehet. Hátránya ennek a sémának, hogy az összes meghajtó forgásának szinkronban kell lennie, és csak elég sok meghajtó használata estén van értelme. A RAID-3 a RAID-2 egy egyszerősített változata. Itt minden adatszóhoz egyetlen paritásbit van rendelve, amelyet egy külön paritásmeghajtón tárolunk. A RAID-4 és RAID-5 megint csak csíkozással dolgozik, nem paritásbitekkel ellátott egyedi szavakkal, ezért ezek nem igénylik a meghajtók szinkronizálását. A RAID-4 hasonlít a RAID-0-ra, azonban a csíkonkénti paritást felírja külön meghajtóra. Ez a megoldás védelmet nyújt egy meghajtó elvesztése ellen, de nem hatékony, ha gyakran kell kis mennyiségő adatot újraírnunk. A paritásmeghajtóra nehezedı nagy terhelés miatt az válhat a szők keresztmetszetté. Ezt a szők keresztmetszetet a RAID-5 azzal szünteti meg, hogy a paritásbiteket egyenletesen, körbejárásos módszerrel szétosztja a meghajtók között.

Page 76: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

76

54. Optikus lemezek CD-ROM: Az elsı generációs optikai lemezeket a holland elektronikai cég, Philips fejlesztette ki mozifilmek tárolására. 1980-ban a Philips és a Sony megtervezte a CD-t (Compact Disk, kompakt-lemez), amely gyorsan felváltotta a 33⅓ percenkénti fordulatszámmal lejátszott bakelit lemezeket. A CD pontos technikai részleteit egy hivatalos nemzetközi szabványban (IS 10149) rögzítették, amelynek elterjedt elnevezése Red Book borítójának színe után. Minden CD 120 mm átmérıjő és 1,2 mm vastag, közepén egy 15 mm-es lyukkal. Egy CD úgy készül, hogy nagy energiájú infravörös lézerrel 0,8 mikron átmérıjő lyukakat égetnek egy bevonattal ellátott, üveg mesterlemezbe. Errıl a lemezrıl negatív öntıforma készül. Az öntıformába olvadt polikarbonát gyantát töltenek, így egy olyan CD-t kapnak, amelyen a lyukak mintázata azonos a mesterlemezével. Ezután egy nagyon vékony fényvisszaverı alumíniumréteg, majd egy lakk védıréteg és egy címke kerül a lemezre. A polikarbonát rétegben elhelyezkedı mélyedéseket üregeknek (pit), az üregek közötti érintetlen területeket pedig szintnek (land) hívják. Az üregek és a szintek egyetlen folytonos spirálban kerülnek felírásra, amely a lyuk közelében kezdıdik és a lemez széle felé tartó 35 mm széles sávot foglal el. Írható CD-k: Hamar felhasználták ıket a nagy mágneslemezek biztonsági másolataihoz, ezenkívül egyének és kisebb cégek elkészítették saját, kis sorozatú CD-ROM-jaikat vagy egy mesterlemezt a nagy szériát elıállító kereskedelmi CD-sokszorosító üzemek számára. Ezeknek a meghajtóknak CD-R (CD-Recordable, írható CD) volt a nevük. Fizikailag az írható CD-khez ugyanolyan 120 mm-es polikarbonát lemezeket használnak, amelyek hasonlítanak a CD-ROM-okra, kivéve, hogy egy 0,6 µm szélességő barázda van rajtuk az író lézernyaláb irányítására. A CD-R-ek úgy néznek ki, mint a szokványos CD-ROM-ok, csak annyi a különbség, hogy a felsı oldaluk aranyszínő, nem ezüst. Az aranyszín azért van, mert valódi aranyat használnak visszaverı rétegnek alumínium helyett. Az egyszerre felírt egymás után következı szektorokat CD-ROM sávnak (CD-ROM track) nevezzük. Az inkrementális írás azonban új problémát is felvet. Az Orange Book elıtt minden CD-ROM-nak egyetlen tartalomjegyzéke (VTOC, Volume Table of Contents) volt, az elején. Ez a módszer nem felel meg inkrementális (többsávos) írás esetén. Az Orange Book azt a megoldást adta, hogy minden sávhoz külön tartalomjegyzéket rendelt. Újraírható CD-k: Egy rendelkezésre álló technológia ma a CR-RW (CD-ReWritable), amely CD-R mérető lemezeket használ. Utóbbitól eltérıen azonban az adattároló réteg a cianin és ftalocianin festék helyett ezüst, indium, antimon és tellúr egy ötvözetét tartalmazza. A CD-RW-meghajtók három eltérı energiájú lézert alkalmaznak. A legmagasabb energián az ötvözet megolvad. Közepes energián az ötvözet megolvad, és visszatér természetes kristályos állapotába. Kis energián az anyag állapotát lehet érzékelni, de nem történik alakulás. DVD: A technológia és a három hihetetlenül gazdag és hatalmas iparágban mutatkozó kereslet kombinációja vezetett a DVD-hez, amely eredetileg a Digital Video Disk, ma hivatalosan a Digital Versatile Disk (Sokoldalú Digitális Lemez) rövidítése. A DVD alapfelépítése ugyanaz mint a CD-é. Amiben más: 1. kisebb üregek 2. szorosabb spirál 3. vörös lézer Ezek a javítások együtt hétszeresre, 4,7 GB-ra növelték a kapacitást. MPEG-2 tömörítést alkalmazva egy 4,7 GB-os DVDD-lemez 133 percnyi teljes képernyıs, folyamatos videofilmet képes tárolni nagy felbontással, ezen kívül 8 nyelven szinkronhangot és további 32 nyelven feliratot. Négy formátumot különböztetünk meg:

Page 77: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

77

1. Egyoldalas, egyrétegő (4,7 GB); 2. Egyoldalas, kétrétegő (8,5 GB); 3. Kétoldalas, egyrétegő (9,4 GB); 4. Kétoldalas, kétrétegő (17 GB). A kétréteges technológia úgy mőködik, hogy legalul egy visszaverı réteget helyeznek el, fölötte pedig egy részben visszaverı réteget. Attól függıen, hogy a lézert hova fókuszálják, az egyik vagy a másik rétegrıl verıdik vissza. Blu-Ray: A DVD-t épphogy csak bevezették, amikor megjelent a következı versenytársa. A DVD utódja az ún. Blue Ray; így nevezik, mivel kék lézert használ a DVD-ben használt piros helyett. A kék fénynek rövidebb a hullámhossza, mint a pirosnak, ezért pontosabban fókuszálható, és így kisebb mélyedéseket tesz lehetıvé. Az egyoldalas Blu-Ray lemez 25 GB, a kétoldalas 50 GB adatot tárol.

Page 78: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

78

55. Egér, nyomtatók, megjelenítık Egér: Az egér egy kis mőanyag doboz, amely a billentyőzet mellett helyezkedik el az asztalon. Ha mozgatjuk, a képernyın látható jel szintén elmozdul. Eddig háromféle egeret gyártottak: mechanikus, optikai és optomechanikus egeret. Az elsınek két gumikerék áll ki az aljából, egymásra merıleges tengellyel. Az egerek másik fajtája az optikai. Ennek nincs se kereke, se golyója, ehelyett egy LED (Light Emitting Diode, fénykibocsátó dióda) és egy fénydetektor van az aljában. A harmadik fajta az optomechanikus egér. Az újabb mechanikus egérhez hasonlóan egy golyó két, egymáshoz képest 90 fokban elhelyezett tengelyt forgat. Jóllehet az egereket sokféleképpen be lehet állítani, a leggyakoribb az, hogy az egér egy 3 bájtból álló üzenetet küld a számítógépnek, ha megtesz egy bizonyos minimális távolságot, amelyet néha mickey-nek neveznek. A legolcsóbb a mátrixnyomtató , amelyben egy 7-24 elektromágneses aktivizálható tőt tartalmazó nyomtatófej halad el minden nyomtatandó sorban. A nyomtatási minıség kétféleképpen javítható: több tő használatával vagy egymást átfedı körök alkalmazásával. A mátrixnyomtatók olcsók és nagyon megbízhatók, habár lassúak, hangosak és gyengék a grafikus képességeik. A mai rendszerekben három fı felhasználási területük van. Elıször is igen népszerőek a nagy elıre nyomtatott formanyomtatványokhoz. Másodszor, jók a kis papírdarabokra való nyomtatáshoz, például pénztárblokkhoz. Harmadszor, többpéldányos leporellókra való nyomtatáshoz ez a legolcsóbb technológia. Olcsó otthoni nyomtatáshoz a tintasugaras nyomtató az egyik legkedveltebb. A mozgatható, tintapatront tartalmazó nyomtatófej vízszintesen végighalad a papír elıtt, mialatt tintát permetez apró fúvókáiból. A tintacseppecskék térfogata körülbelül 1 pikoliter, ami azt jelenti, hogy 100 millió kényelmesen belefér egy cseppnyi vízbe. A tintasugaras nyomtatók két változatban kaphatók: piezoelektromos (az Epson használja) és a hıvezérléső (a Canon, HP és a Lexmark). A piezoelektromos tintasugaras nyomtatókban egy speciális kristály van a tintapatron mellett. A hıvezérléső nyomtatókat általában festékbuborékos nyomtatóknak (bubble-jet) nevezik. Ezekben egy kis ellenállás van minden fúvókában. Amikor az ellenállásra feszültséget kapcsolnak, nagyon gyorsan felhevül, és a vele érintkezı festéket azonnal felmelegíti, a festék elpárolog és egy gázbuborékot képez. A tintasugaras nyomtatók felbontása tipikusan legalább 1200 dpi (dots per inch), a legjobbaké eléri a 4800 dpi-t. Olcsók, csendesek és jó minıséget állítanak elı, de egyúttal lassúak is, és drága tintapatronokat használnak. Talán a lézernyomtató megjelenése volt a nyomtatás egyik legizgalmasabb eseménye. A lézernyomtatók majdnem ugyanazt a technológiát használják, mint a fénymásolók. A nyomtató szíve egy fényérzékeny anyaggal bevont forgó precíziós henger. Egy-egy lap nyomtatása elıtt körülbelül 1000 voltra feltöltik. Ezt követıen egy lézer fénye pásztázza végig a hengert hosszában, hasonló a katódsugárcsöves pásztázáshoz, csak itt elektromos feszültség helyett egy nyolcszöglető tükörrel irányítják a fényt a hengerre. A fényt modulálják, hogy világos és sötét pontokat kapjanak. Azok a pontok, ahol a fény éri a hengert, elveszítik elektromos töltésüket. Késıbb a sor eléri a toner kazettát, amely elektrosztatikusan érzékeny fekete port tartalmaz. A por hozzátapad a még feltöltött pontokhoz. Tovább fordul a bevont henger hozzányomódik a papírhoz, átadva a papírnak a festéket. A papír ezután felmelegített görgık között halad el, ezáltal a festék véglegesen hozzátapadt a papírhoz, kialakul a kép.

Page 79: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

79

56. Terminál. Modemek, jelzési, adatátviteli sebesség A számítógépes terminálok két részbıl állnak: egy billentyőzetbıl és egy monitorból. Billentyőzet: A billentyőzetnek számos fajtája létezik. Az eredeti IBM PC billentyőzetének minden billentyője alatt egy olyan kapcsoló volt, amely jól érzékelhetı visszacsatolást és kattanó hangot adott, ha eléggé lenyomták. A jobbakban rugalmas anyag van a billentyők és az alattuk levı nyomtatott áramköri lap között. A személyi számítógépekben egy billentyő leütésekor megszakítás generálódik, és a billentyőzet-megszakításkezelı elindul. A több billentyő leütésébıl álló, a SHIFT, CTRL és ALT billentyőket is tartalmazó sorozatok kezelése teljesen szoftveres úton történik. Katódsugárcsöves monitorok: A monitor egy katódsugárcsövet (Carhode Ray Tube, CRT) és hozzá tartozó energiaellátó berendezéseket tartalmazó doboz. A katódsugárcsıben van egy olyan ágyú, amely elektronsugarat tud lıni a csı elülsı részéhez közel elhelyezkedı foszforeszkáló ernyıre. A vízszintes átfutás alatt a sugár körülbelül 50 µs alatt keresztben átfut a képernyın, és egy majdnem vízszintes vonalat rajzol ki az ernyıre. Ezután a vízszintes-futás következik. Az ilyen eszközöket, amelyek a képeket soronként állítják össze, raszteres eszközöknek nevezzük. Azért, hogy a képpontokat lehessen megjeleníteni a képernyın, a CRT-ben egy rács helyezkedik el. Lapos megjelenítık: A legelterjedtebb az LCD (Liquid Crystal Display, folyadékkristályos kijelzı) technológia. A folyadékkristályok nyúlós, ragadós szerves molekulák, amelyek úgy folynak, mint a folyadékok, de térbeli szerkezetük is van. Ha az összes molekula azonos irányban helyezkedik el, a kristály optikai tulajdonsága a beesı fény irányától és polarizáltságától függ. Elektromos mezı felhasználásával a molekulák elrendezıdése, így az optikai tulajdonsága megváltoztatható. Egy LCD képernyı két párhuzamos üveglemezbıl áll, melyek közötti zárt térben folyadékkristály van. Átlátszó elektródákat erısítenek mindkét lemezhez. A lemezekhez erısített elektródákkal hoznak létre elektromos teret a folyadékkristályban. Kétféle módszert alkalmaznak a feszültség beállítására. Egy (olcsó) passzív mátrixmegjelenítıknél mindkét elektróda párhuzamos vezetékeket tartalmaz. Egy 640 x 480-as képernyıben például a hátsó elektróda 640 függıleges, az elsı elektróda pedig 480 vízszintes vezetéket tartalmazhat. A másik széles körben elterjedt módszer az aktív mátrixmegjelenítı. Ez drágább, de jobb képet ad. A két merıleges vezetékháló helyett az egyik elektródában egy apró kapcsolóelem van minden pixelnél. A kapcsolóelemeket vékonyfilm-tranzisztoroknak, azokat a lapot megjelenítıket pedig, amelyek ilyeneket használnak TFT megjelenítıknek nevezik. Modemek: Egy sima telefonvonal azonban nem alkalmas a számítógép jeleinek továbbítására, mivel utóbbiak általában a 0-kat 0 volttal, az 1-eseket 3-5,5 volt közötti feszültséggel reprezentálják. Egy 1000 és 2000 Hz közötti, vivıhullámnak nevezett tiszta szinuszos hullám azonban aránylag kis torzulással átvihetı. Az amplitúdó, a frekvencia vagy a fázis változtatásával azonban átvihetjük 1-esek és 0-k sorozatát. Ezt a folyamatot modulációnak nevezzük. Az amplitúdómoduláció két feszültséget használ, egyiket 0-khoz, a másikat az 1-esekhez. A frekvenciamoduláció esetén a feszültségszint állandó, de a vivıhullám frekvenciája eltérı 1-esek és 0-k esetén. Az egyszerő fázismodulációnál az amplitúdó és a frekvencia nem változik, de a vivıhullám fázisa 180 fokkal eltolódik minden 0-1 vagy 1-0 váltásnál. Kifinomultabb fázismodulációs rendszerekben minden osztatlan idıintervallum kezdetén a vivıhullám fázisa hirtelen eltolódik, ezzel az ún. dibit fáziskódolással 2 bitet lehet intervallumonként átvinni. Az idıintervallumok száma a baud. Intervallumonként 2 vagy több bit étvitele esetén a másodpercenként átvitt bitek száma nagyobb, mint a jelváltások száma.

Page 80: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

80

Több módszer kombinációját használják arra, hogy több bitet küldhessenek jelváltásonként, modulálják az amplitúdót, a frekvenciát és a fázist is. Majdnem mindegyik full-duplex, ami azt jelenti, hogy egyszerre tudnak mindkét irányba kommunikálni. Half-duplex a neve az olyan modemnek vagy átviteli vonalnak, amely egyszerre csak egy irányban tud adatokat átvinni. A csak egy irányban mőködı vonalak neve szimplex.

Page 81: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

81

57. ADSL, kábeles internet Azokat a szolgáltatásokat, amelyek a normál telefonvonalnál nagyobb sávszélességet biztosítanak, idınként szélessávúnak nevezik, bár ez a meghatározás inkább piaci, mint speciális technikai fogalom. Kezdetben több egymást átfedı ajánlat jelent meg, amelyek az xDSL (Digital Subscriber Line, digitális elıfizetıi vonal). A legnépszerőbb, az ADSL (Asymmetric DSL, aszimmetrikus digitális elıfizetıi vonal). Az elıfizetıktıl a telefontársaság központjába futó vezetéket, amelyet lokális huroknak (local loop) neveznek, tradicionálisan egy 3000 MHz-es szőrıvel korlátozzák a telefontársaságnál. Azt teszik, hogy eltávolítják a szőrıt, és az elérhetı 1,1 MHz spektrumot 256 független, egyenként 4312,5 Hz szélességő csatornára osztják fel. A 0-s csatornát az egyszerő régi telefonszolgáltatás (Plain Old Telephone Servicvem POTS) céljaira használják. Az 1-5. csatornát nem használják, azért hogy megelızzék a telefonhang és az adatjelek interferenciáját. Az ADSL olyan, mintha 250 modemünk lenne. A felhasználó vagy telefontársaság szerelıjének egy hálózati interfészt (Network Interface Decice, NID) kell felszerelnie az elıfizetı telephelyén. Ez a kis mőanyag doboz jelöli a telefontársaság birtokának a végét és az elıfizetı birtokának a kezdetét. A hálózati interfész közel található a szétválasztó (splitter); ez egy analóg szőrı, amely leválasztja a hálózatról a 0-4000 Hz-es sávot a POTS számára. A POTS jelet egy meglévı telefonra vagy telefaxra, az adatjeleket pedig az ADSL-modemere irányítják. A vezeték másik végén, a telefontársaság végpontján egy megfelelı szétválasztót kell felszerelni. A jel hang részét itt is ki kell szőrni. A 26 kHz feletti jeleket egy újfajta készülékbe, a DSLAM-ba (Digital Subscriber Line Access Multiplexer, digitális elıfizetıi vonal hozzáférési multiplexer) irányítják, ami ugyanolyan digitális jelfeldolgozó egység, mint az ADSL modem. A kábelszolgáltatók minden városban fı telephellyel rendelkeznek, valamint rengeteg, elektronikával zsúfolt dobozzal szerte a mőködési területükön, amelyet fejállomásoknak (headend) neveznek. Felhasználók százai osztoznak egy a fejállomáshoz vezetı kábelen. Rendszerint a kábelek sávszélessége 750 MHz körül van. A kábeltévé-csatornán Észak-Amerikában rendesen az 54-550 MHz tartományt foglalják el. Ezek a csatornák 6 MHz szélességőek. Európában a sáv alsó határa 65 MHz, a csatornák szélessége pedig 6-8 MHz a PAL és a SECAM rendszer nagyobb felbontása miatt. A modern kábelek jóval 550 MHz felett is mőködnek, gyakran 750 MHz-ig vagy még tovább. A feltöltésre szolgáló csatornák az 5-42 MHz sávban vannak, a letöltésre szolgáló csatornák forgalma a frekvenciatartomány felsı részére esik. Az internet-hozzáféréshez egy kábelmodemre van szükség, amelyben két interfész van, egyik a számítógéphez, a másik a kábeltévé-hálózathoz. A kábelszabvány nagyobb része rádióelektronikával foglalkozik. Jobban megértsük a mőködésüket, nézzük meg mi történik, amikor a kábelmodemet csatlakoztatjuk és bekapcsoljuk. A modem végigellenırzi a lejövı csatornákat, és olyan speciális csomagot keres, amelyeket a fejállomás periodikusan küld, és a rendszerparamétereket tartalmazzák az újonnan bekapcsolódó modemek számára. Amint a modem megtalálta ezt a csomagot, jelzi a jelenétét. A fejállomás azzal válaszol, hogy kijelöli a modem felmenı és lemenı csatornáit. Ez a kijelölés késıbb megváltozhat. Ezután a modem meghatározza a fejállomástól mért távolságát egy speciális csomag küldésével, úgy hogy leméri, mennyi ideig tart a válasz megérkezése, Ezt a folyamatot távolságbehatárolásnak (ranging) hívják. Az adatforgalmaz rövid idejő szeletekre, ún. minislotokra osztják. A lejövı csatornákat a felmenı csatornáktól eltérıen irányítják. Visszatérve a modem inicializásához, amint a modem behatárolta a távolságát, megkapta a felmenı és lejövı csatornáit, valamint a minislotkiosztását, elkezdheti a csomagok küldését. Az internetszolgáltató (Internet Secvice Provider, ISP) felé menı elsı csomag a hálózaticím-kérés, amelyet dinamikusan osztanak ki. A következı lépés a biztonsághoz kötıdik. Annak megakadályozására,, hogy mindenki a szomszédjai után szimatoljon, a forgalom mindkét irányban titkosított. Végül a modemnek be kell jelentkeznie.

Page 82: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

82

További tematika Számítógépek fejlıdése(röviden): - 0. generáció. Mechanikus gépek. Pascal, 1642, összeadás, kivonás; Leibniz (1646-1716), szorzás, osztás, Babbage (1792-1871), 1834: difference engine - összeadás, kivonás kiírás fémlemezre (csak egy program), analytical engine (négy egység: memória, számoló, input, output). 1000 darab 50 számjegyő adatot tudott tárolni! Utasítások lyukkártyáról - programozás (Ada Lovelance). Eddig mind mechanikus. Zuse, 1936: elektromágneses relék használata. - 1. generáció: elektroncsövek (1945-1955). COLOSSUS (Turing, 1943) - titkosírások megfejtése - 30 évre titkosítva. ENIAC (Electronic Numerical Integrator and Computer) (Mauchley, Eckert, 1943), 18000 csı, 30 tonna súly, 20 darab 10 decimális jegyes regiszter. 1946-ig nem sikerült befejezni - nyári iskola - sok próbálkozás. EDSAC (Wilkes, Cambridge, 1949), EDVAC (1949), UNISYS. Sikertelenül próbálják találmánynak elfogadtatni. Neumann János: öt szerkezeti egység: vezérlı, aritmetikai-logikai egység, memória, input, output. Kettes számrendszer! 4096 szavas memória, 40 bites szavak (elıjeles egész, vagy kér utasítás - 8 bites utasításkód, 12 bites cím), akkumulátor. Nem volt lebegıpontos aritmetika! IBM 701 (1953) 2K 36 bites memória. Legnagyobb 1. generációs: IBM 709 (1958). (Szegeden: M4). - 2. generáció: tranzisztorok (1955-1965). Tranzisztor feltalálása: 1948, Nobel díj: 1956. Elsı jelentıs tranzisztoros gép: DEC PDP-1 (1961). 4k 18 bites szó, 5 µsec ciklusidı, 120000 US dollár. 512x512 display! Teljesítménye fele az IBM 709-nek, ára a töredéke. Néhány évvel késıbb: PDP-8: omnibusz - 50 000 eladott gép. Magyarországon: KFKI, TPAi. IBM 7090, 7094. Eddig mind számításigényes problémák. Elsı üzlet-orientált gép: IBM 1401 - byte-szervezéső memória. Elsı szuper-gyors gép: CDC 6600 (tervezı: Cray)- párhuzamos utasítás-végrehajtás. Burroughs B5000: könnyen lehessen ALGOL-ban programozni! Szegeden: MINSZK 22. - 3. generáció: integrált áramkörök (1965-1980). Integrált (szilicon alapú) áramkör: Noyce, 1958. IBM problémája: 7094 és 1401 nem kompatíbilis. Radikális lépés (1964): 360-as sorozat (szocialista országok: R-sorozat). Emuláció: a sorozat gépein az elızı típusok programjai futtathatók. Másik lényeges újítás: multi-programozás. 24 bites címtartomány (16 Mbyte). A nyolcvanas évek közepéig elég, akkor áttérés a 32 bites címre. DEC: PDP 11, 16 bites memóriaelemekkel. 4. generáció: VLSI (very large scale integration) (1980- ). Néhány millió elem egy lapkán (chipen). Személyi számítógépek - INTEL 8080, hajlékony lemez - kit, CP/M; Commodore, Apple, Spectrum-80. IBM PC -klónok. MS-DOS - Microsoft. BCD ábrázolás: Némely számítógépet, mint például az IBM-nagygépeket, úgy reklámozzák, hogy a bináris aritmetika mellett decimálist is tudnak. Ezt a trükköt úgy csinálják, hogy egy decimális számjegyet 4 biten tárolnak az ún. BCD (Binary Coded Decimal, binárisan kódolt decimális) kódolással. A négy bit 16 kombinációt ad, a számjegyekhez 0-tól 9-ig elég 10 kombináció, a maradék 6 kihasználatlan. Alább látható az 1944 decimálisan, majd 16 biten binárisan kódolva: Decimális: 0001 1001 0100 0100 Bináris: 0000011110011000 Statikus RAM (SRAM): belsı áramkörei hasonlóak az alap D-flipflophoz; tartalmuk addig marad meg, amíg az áramellátás mőködik, akár napokra; A SRAM-ok nagyon gyorsak (elérési idı néhány ns), ezért fıleg másodszintő gyorsítótárként használják

Page 83: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

83

Dinamikus RAM (DRAM): nem használ flipfloppot, hanem cellák tömbjébıl épül fel, amelyben mindegyik cella egy tranzisztort és egy kicsi kondenzátort tartalmaz; ez feltöltıdik és kisül aszerint, hogy 0-át vagy 1-et tárol. Az elektromos töltés hajlamos a szivárgásra, ezért frissíteni kell néhány ezredmásodpercenként; ezt a mőveletet egy külsı logika ügyeli. Ezáltal a DRAM jóval bonyolultabbak de sokkal nagyobb a tárolókapacitásuk. Általában fımemóriákban használják alacsony sebessége (néhány 10 ns) miatt. Míg dinamikus RAM-ok egy tranzisztor, egy kondenzátor kell bitenként (szemben a statikus RAM-kal ahol 6 tranzisztor) ROM (Read Only Memory) -nem változtatható és nem törölhetı A ROM-ban tárolt adatok bevitele a gyártás alatt történik meg. A ROM olyan alkalmazási területeken használatos, ahol fontos, hogy ne vesszen el az adat akkor sem, ha kikapcsoljuk az áramot. (ROM típusú memóriában tárolódik a BIOS is, mivel az abban tárolt adatokra minden bootoláskor szükség van, nem veszhet el kikapcsoláskor). PROM - Programmable ROM; az adatmezı egyszer programozható. Legtöbbjük biztosítékokból álló tömböt tartalmaz; ezeket úgy égetjük el, hogy a megfelelı sorokat ill. oszlopokat kiválsztjuk, majd nagy feszültséget kapcsolunk a lapka megfelelı lábaira. Erasable Programmable ROM ; Mezı-programozható és mezı-törölhetı ROM. Ha kvarcüveg ablakon át erıs ultraviola fénnyel 15 percig megvilágítjuk, akkor az összes bit 1-re állítódik. Általában ugyanazt a szervezést használják, mint a statikus RAM-ok. Orthogonalitási elv: Szoftverszempontból az utasítások és a címzési módok szabályos szerkezete lenne kívánatos a legkevesebb utasítás formátummal. Ilyen szerkezet könnyővé tenné a fordítóprogramoknak, hogy jó kódot generáljanak. Minden mőveleti kód megengedne minden értelmes címzési módot. Továbbá, minden regiszter elérhetı lehetne minden regisztermódban. Azaz a jó architektúrában a mőveleti kódok és a címzési módszerek (majdnem) szabadon párosítható. IDE: IDE (Integrated Drive Electronics - Beépített eszközelektronika): meghajtóba integrált vezérlı Jellemzıi: régi BIOS hívási konvenciók megtartása; szektorok címzése fej, cilinder és szektorok sorszámának megadásával történik maximálisan 16 fej, 63 szektor és 1024 cilinder lehet (összesen 1 032 192) – ennyi szektorban 528 MB adat fér el. Az 528 Mb-nál nagyobb lemezegységek elterjedésével az IDE-t felváltották az EIDE meghajtók. Ezek támogatnak egy ún. LBA címzési módot, amely a szektorokat 0-tól a maximális 2^24 -1-ig számozza, így az képes az 528 MB-os határ fölé kerülni. EIDE: Végül az IDE-meghajtókat felváltották az EIDE- (Extended IDE, kiterjesztett IDE) meghajtók, amelyek támogatnak egy másik címzési módot is; ez az LBA (Logical Block Addressing, logikai blokk címzés), amely a szektorokat egyszerően 0-tól a maximális 228-1-ig számozza. Az EIDE meghajtók és –vezérlık más elınyökkel is rendelkeztek. Például az EIDE-vezérlıknek két csatornájuk lehetett, mindegyik egy elsıdleges és egy másodlagos diszkegységgel. Ez az elrendezés legfeljebb 4 meghajtót tett lehetıvé vezérlıegységként. PCI: Az ISA sín legfeljebb 8,33 MHz sebességgel mőködhet, és egy ciklusban 2 bájtot képes átvinni; ezzel a maximális sávszélesség 16,7 MB/s. Az Intel 1990-ben új sínt tervezett. Az új sínt PCI (Peripheral Component Interconnect bus) sínnek nevezték el. Az eredeti PCI sín

Page 84: Számítógép architektúrák - users.atw.huusers.atw.hu/infojegyzet/szemeszter_1/szar_tetelek_08_09.pdf · KIDOLGOZOTT TÉTELEK. Számítógép arhitektúrák Otártics Norbert

Számítógép arhitektúrák Otártics Norbert 2008/2009

84

32 bitet tudott átvinni egy ciklus alatt 33 MHz sebességgel, a teljes sávszélesség 133 MB/s volt. A PCI 2.2 már a hordozható személyi számítógépek számára is nyújtott szolgáltatásokat. Az újabb PCI sín már 66 MHz frekvencián mőködik, és 64 bites adatátvitelt képest kezelni, így a sávszélessége 528 MB/s. Az 528 MB/s meglehetısen gyorsnak hangzik, mégis van két probléma. Elıször is nem elég jó egy memóriasín számára. Másodszor pedig nem kompatibilis a régi ISA bıvítıkártyákkal. A központi egység a memóriával egy speciális memóriasínen keresztül kommunikálhatm és egy ISA sín kapcsolódhat a PCI sínre. A két kulcselem ebben az architektúrában a két csatoló lapka, más néven híd. A PCI csatoló áramkör a központi egységet, a memóriát és a PCI sínt köti össze. Az ISA csatoló lapka pedig a PCI sínt köti össze az ISA sínnel, valamint egy vagy két IDE mágneslemezegységgel. A PCI sín egy szinkron sín, mint minden PC sín, egészen az eredeti IBM PC-ig visszamenıen. A PCI sínen minden tranzakció egy mester, amelyet hivatalosan kezdeményezınek (initiator) neveznek, valamint egy szolga, hivatalosan céleszköz (target), között történik. A kivezetések számának alacsonyan tartása érdekében, a PCI sínen a cím- és adatvezetékek multiplexeltek. Ahhoz, hogy egy eszköz használhassa a PCI sínt, le kell foglalnia. Minden PCI eszköztıl két szál vezet a központi ütemezıbe. Az egyik a REQ#, amely a sín használati jogának kérésére szolgál. A másik vezeték a GNT#, amely a használati jog elnyerését jelzi. A sín megszerzéséhez a PCI eszköz beállítja a REQ# jelet, és addig várakozik, amíg nem látja, hogy GNT# jelet beállította az ütemezı. Amikor ez bekövetkezik, a következı órajelciklusban ez az eszköz használhatja a PCI sínt. A sín használatának engedélyezése egy tranzakcióra érvényes, azonban a tranzakció hossza elméletileg nincs korlátozva. Ha a sínmester egy nagyon hosszú adatátvitelbe kezdett, és közben egy másik eszköz kéri a sínt, az ütemezı negálhatja a GNT# vonalat. Az aktuális sínmesternek figyelnie kell a GNT# vonalat, és amint észleli a negálást, fel kell szabadítania a sínt a következı ciklusban.