Számítógép architektúrák tételkidolgozás Huszka Nándor 2010. Használt források: ⋅ 2009/2010-es előadásfóliák ⋅ Tanenbaum könyv ⋅ Wikipédia ⋅ Otártics Norbert tételkidolgozása Csak saját felelősségre használja mindenki. Helyesírási hibákat, tárgyi tévedéseket tartalmazhat.
1. Fordítás és értelmezés 2. Számítógép architektúra szintjei (tematika) 3. Számítógépek fejlődése (tematika) 4. Numerikus adatok ábrázolása, fixpontos ábrázolás 5. Konverzió számrendszerek között 6. Negatív számok ábrázolásai 7. BCD ábrázolás (tematika) 8. Lebegőpontos számok 9. IEEE 754 szabvány 10. Digitális logikai szint, kapuk 11. Boole algebra 12. Boole függvények megvalósítása, áramköri ekvivalenciája, azonosságok, dualitás 13. Kombinációs áramkörök: multiplexer, demultiplexer, dekódoló, összehasonlító 14. Programozható logikai tömbök 15. Aritmetikai áramkörök, léptető 16. Fél és teljes összeadó 17. Átvitel továbbterjesztő, átvitel kiválasztó összeadás 18. ALU, ALU-val végezhető műveletek 19. Nem kombinációs áramkörök: óra, tárolók 20. Flip-flopok 21. Memória (tematika) 22. Memórialapkák (tematika) 23. SRAM, DRAM, SDRAM, ROM, PROM, EPROM, EEPROM, Flash memória (tematika) 24. Központi memória, bájtsorrend, igazítás 25. Hamming távolság, hibaészlelő, hibajavító kódok 26. Gyorsító tár (cache), találati, hiba arány, közös és osztott gyorsítótár 27. Direkt leképezésű gyorsítótár, halmazkezelésű gyorsító tár, memóriába írás 28. CPU részei, feladatai, adatút 29. RISC és CISC kialakulása 30. Utasításszintű párhuzamosítás 31. Processzorszintű párhuzamosítás 32. Adattípusok, karakterkódolás 33. CPU, sínek, sín protokoll 34. Mester-szolga, sínvezérlő, sínvevő, adóvevő, sínszélesség, sávszélesség 35. Sokszorozott sín, alaplap 1
36. Sín időzítés, szinkron, aszinkron sín, teljes kézfogás 37. Sínütemezés 38. Sínműveletek, példák sínekre 39. Általános soros sín 40. PCI Express 41. Parallel Input/Output (PIO) 42. Valódi-, memóriára leképezett I/O eszköz, teljes-, részleges címdekódolás 43. Mikroarchitektúra szint, Mic-1 és működése, adatút, adatút vezérlése 44. ALU, ALU vezérlése 45. Memória művelet, memóriaciklus, Mic-1 mikroutasítása 46. Mic-1 mikroprogramja 47. MPC új értékének kialakulása 48. IJVM, memória modellje 49. IJVM megvalósítása Mic-1 segítségével 50. WIDE utasítás hatása és működése Mic-1-en 51. Feltétlen és feltételes elágazó utasítás megvalósítása Mic-1-en 52. Utasításbetöltő egység, Mic-2 53. Csővonalas terv: Mic-3 54. A végrehajtási út csökkentése: háromsínes architektúra (tematika) 55. Egy hét szakaszú szállítószalag: Mic-4 csővezetéke 56. Elágazás, eltolási rés, statikus, dinamikus elágazás jövendölés 57. Sorrendtől eltérő végrehajtás, szuperskaláris architektúra, függőségek, regiszter átnevezés 58. Feltételezett végrehajtás 59. Pentium 4 processzor, logikai lábkiosztása-(tematika) 60. Pentium 4 memóriakezelése (tematika), mikroarchitektúrája 61. Netburst csővezeték 62. UltraSparc III processzor, logikai lábkiosztása-(tematika), memóriakezelése-(tematika) 63. UltraSparc III mikroarchitektúrája, csővezetéke 64. I-8051 processzor, mikroarchitektúrája, logikai lábkiosztása, memóriakezelése (tematika) 65. Pentium 4, UltraSparc III, I-8051 mikroarchitektúrájának összehasonlítása 66. Gépi utasítás szint, memória modellek, memória szemantika 67. Pentium 4, UltraSPARC III, I-8051 regiszterei, Pentium 4 üzemmódjai 68. Három, kettő és egy címes utasítások 69. Operandus megadás módja: közvetlen, direkt, regiszter, regiszter-indirekt, indexelt, bázisindex címzés, implicit operandus 70. Veremcímzés, fordított lengyel (postfix) jelölés, Dijkstra algoritmusa, postfix alakú formulák kiértékelése 71. Pentium 4, UltraSparc III, I-8051 utasításformái, címzési módjai, orthogonalitási elv(tematika) 72. Utasítástípusok, ciklusszervezés 73. Programozott és megszakításvezérelt I/O, DMA, átlátszóság(-tematika) 74. Vezérlési folyamat, szekvenciális vezérlés, elágazás, eljárás, rekurzív eljárás, megszakítás, csapda, korutinok 75. Feltételes végrehajtás, predikáció 76. Operációs rendszer szintje, virtuális memória, overlay technika, kérésre lapozás, munkahalmaz, kérésre lapozás, munka halmaz (tematika), lapméret, elaprózódás, szegmentálás, megvalósításai 77. Pentium 4 virtuális memóriája 78. UltraSPARC III virtuális memóriája 79. Mágneslemez, winchester, lemezvezérlők 80. SCSI, RAID szintek 81. IDE, EIDE (tematika) 2
82. Optikus lemezek 83. Egér 84. Nyomtatók 85. Terminál 86. Megjelenítők 87. Modemek, jelzési, adatátviteli sebesség, kommunikációs vonal 88. ADSL, kábeles internet
3
1. Fordítás és értelmezés Digitális számítógép: olyan gép, amely a neki szóló utasítások alapján az emberek számára problémákat old meg. Program: utasítássorozat, amely leírja, hogyan oldjunk meg egy feladatot Gépi nyelv: egy számítógép utasításainak együttese által alkotott nyelv, amelyen az ember a számítógéppel képes kommunikálni Legyen L0 a gépi nyelv, és L1 egy, az ember számára kényelmesebb nyelv. Fordítás: a végrehajtó program a fordító, a módszer a fordítás. 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 L0 utasításaiból áll. Ezután az eredeti L1 nyelvű program helyett a számítógép ezt az L0 nyelvű programot hajtja végre. Értelmezés: a végrehajtó program az értelmező, a módszer az értelmezés. 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 fordítás és az értelmezés is elvégezhető az L0 nyelvű számítógéppel. Virtuális gép: olyan gép, amely végre tudja hajtani az L1 nyelven írt programot.
4
2. Számítógép architektúra szintjei (tematika) Architektúra: a felhasználónak látszódó gép, egy-egy szint adattípusainak, műveleteinek, szolgáltatásainak összessége, nyelvek és virtuális számítógépek hierarchiája A legtöbb mai számítógép két- vagy többszintű, a szintek hierarchiába szerveződnek. Az első három szint értelmezéssel valósul meg, a 4. és 5. szint fordítással. 0: digitális logika szintje: A gép valódi hardvere, ennek az áramkörei hajtják végre az 1. szintű gépi nyelvű programokat. A kapuk a lényeges elemek: minden kapunak egy, vagy több bemenete van, kimenetként függvényértékeket számolnak ki. Néhány kapuból összeállítható: ALU, 1 bites memória, ezeknek 16-os, 32-ed, 64-es csoportjai a regiszterek 1: mikroarchitektúra szintje Ezen a szinten található a regiszterkészlet és az ALU, amely az egyszerű aritmetikai műveletek elvégzésére képes. A regiszterek az ALU-hoz kapcsolódnak, az adatok áramlásának útja az adatút. Az adatút vezérlését mikroprogram végzi, amely mikroutasításokból áll 2: utasításrendszer-architektúra szintje Azon utasítások összessége, amelyeket a programozó láthat és használhat. Feladata a mikroprogram értelmezése és végrehajtása. Itt dől el a kompatibilitás kérdése. 3: operációs rendszer szintje Egy kevert szint, feladata a 2. szintű utasítások értelmezése, de új utasításai is vannak Speciális kiegészítők helye: memóriakezelés (virtuális memória), párhuzamos futtatás A rendszerprogramozók feladata a gép kezelése eddig a szintig. 4: assembly nyelv szintje Az alsóbb szintekhez tartozó nyelvek szimbolikus formája. Az assembly nyelvű programot először lefordítják az 1., 2. vagy a 3. szint nyelvére, majd értelmeztetjük a megfelelő virtuális vagy valódi géppel. A fordítást végző program az assembler. 5: probléma-orientált nyelv szintje Alkalmazási feladatokat ellátó programozók területe. Magasabb szintű programnyelvek szintje: Pascal, C, C++, adatbázis kezelők. Ezek tényleges nyelvek, fordítás köti őket össze alacsonyabb szintekkel.
5
3. Számítógépek fejlődése (tematika) 0. generáció: mechanikus gépek Fémlemezre kiíratás használtak. Pascal (összeadás, kivonás), Leibnitz 4 alapművelet, Babbage differenciagép, analitikus gép 1. generáció: elektroncső Kezdetben két szint: digitális logika, utasítások 2-es számrendszer, 4096 szavas memória. 40 bites szavak: előjeles, egész, vagy két utasítás Tárolt program: 8 bites utasításkód, 12 bites cím, akkumulátor, csak egészaritmetika COLOSSUS, ENIAC, IBM 709, M3 Neumann elvű gép: tárolt programú elektronikus számítógép, amely az adatok és a program tárolására közös memóriát használ Harvard típusú számítógép: külön memóriát használ az adatok és külön memóriát a program számára. 2. generáció: tranzisztor 512x512 display Omnibusz (általános sín: CPU, memória, kezelő terminál, lyukszalag B/K, egyéb B/K), párhuzamos utasítás-végrehajtás, bájtszervezésű memória, DEC PDP-1 3. generáció: integrált áramkör Emuláció: a sorozat gépein futtathatók az előző típusok programjai is Mikroprogramozás: az utasítások hardverrel való megvalósítása Operációs rendszerek: rendszerhívások, kötegelt (batch) feldolgozás, időosztás 24 bites címtartomány, majd áttérés a 32 bites címre Multiprogramozás (DOS, POWER, OS), DEC PDP-11, IBM 360, R-sorozat 4. generáció: VLSI (Very Large Scale Integration) Néhány millió elem egy nyomtatott áramköri lapkán (chipen), Személyi számítógépek, kábelek, tápegység, hajlékony lemez Commodore, Apple, Spectrum-80. INTEL 8080, MS-DOS, OS/2, Windows. Moore törvénye: egy lapkán elhelyezhető elemek száma másfél évenként duplázódik Nathan első törvénye: a szoftver gáz, kitölti a rendelkezésére álló teret.
6
4. Numerikus adatok ábrázolása, fixpontos ábrázolás Véges pontosságú számok: számítógépes erőforrások véges természete csak fix számú jeggyel ábrázolható számokkal enged foglalkozni Algebrájuk: különbözik a normál algebrától, az asszociációs, disztribúciós szabály nem minden esetben működik és a műveletek sorrendje is számít Ábrázolási tartományuk: ez a halmaz nem zárt a négy alapműveletre nézve, különböző terjedelmű lehet Zártságot megszüntető okok: · túlcsordulás - az eredmény nagyobb, mint az ábrázolható legnagyobb halmazbeli szám · alulcsordulás - az eredmény kisebb, mint az ábrázolható legkisebb halmazbeli szám · az eredmény nem eleme az ábrázolható számok halmazának Némely gép speciális hardvere észreveszi a túlcsordulási hibákat. Pontosság: két egymást követő szám különbsége Maximális hiba: az ábrázolási tartományba eső tetszőleges valós szám és a hozzá legközelebb lévő ábrázolható szám különbsége
6. Negatív számok ábrázolásai Előjeles abszolút érték: a bal oldali első bit az előjelbit (0 +, 1 -), a maradék bitek jelzik a szám abszolút értékét. 8 bit esetén a legkisebb szám -127, a legnagyobb 127. A 0 kétféleképp ábrázolható. Egyes komplemens: van egy előjelbitje (0 +, 1 -), egy szám negatívját úgy kapjuk meg, hogy minden 1-est 0-ra, és minden 0-t 1-esre cserélünk, az előjelbitre is alkalmazva. Bináris összeadásnál a bal oldalon keletkezett átvitel bitet a jobb szélső bithez adjuk hozzá. A legkisebb szám -127, a legnagyobb 127 (8 bit esetén). A 0 kétféleképp ábrázolható. Kettes komplemens: szintén tartalmaz előjelbitet (0 +, 1 -), egy szám negatívját kétlépéses eljárásban kapjuk meg: Minden bitet negálunk, majd 1-et hozzáadunk az eredményhez. Bináris összeadásnál az átvitelt a bal szélső bitnél eldobjuk. A legkisebb szám -128, a legnagyobb 127. A 0 egyértelműen ábrázolható. Többletes: m bites szám esetében 2m-1 többletesnek nevezik. Egy szám helyett a számnak és 2m-1-nek az összegét tárolja, előjel nélkül. Lebegőpontos számok kitevő részénél használatos. M bit páros számú bitmintát enged meg, ezért a pozitív és negatív számok asszimmetrikusak. Az extra bitminta kényelmetlenséget okoz.
7
5. Konverzió számrendszerek között Számrendszer alapszáma: az a szám, amelynek a hatványai szerint írjuk a számokat 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 ábrázolják. Legfontosabb számrendszerek: kettes (bináris), nyolcas (oktális), tizes (decimális), tizenhatos (hexadecimális) Bit: bináris számjegy, egy 1-est, vagy egy 0-t jelent Tizedes pont: az egész részt a törtrésztől elválasztó jel (bináris pontnak is hívjuk) Számrendszerek közötti konverzió: · 2 → 8: hárombites csoportokra osztjuk a számot, a tizedesponttól kiindulva minden hárombites csoport alkot egy oktális számjegyet, szükség lehet egy, vagy két pótló 0ra a kezdő és záró csoportoknál · 2 → 16: négybites csoportokra osztjuk a számot, a tizedesponttól kiindulva minden négybites csoport alkot egy hexadecimális számjegyet, szükség lehet egy, két vagy három pótló 0-ra a kezdő és záró csoportoknál · 8 → 2: minden oktális számjegyet lecserélünk egy vele ekvivalens hárombites számra · 16 → 2: minden hexadecimális számjegyet lecserélünk egy vele ekvivalens négybites számra · 2 → 10: egyik módszer szerint összegezzük 2 azon hatványait, ahol 1-es volt a kitevőben Másik módszer: függőlegesen, fordított sorrendben írjuk le a bináris számjegyet. 1-et írunk az első sorba, az n. sor eredménye az (n-1). sor kétszerese + az n. sor bitje. Az eredmény a legfelső sorban képződik. · 10 → 2: egyik módszer szerint a legnagyobb kettes kitevővel rendelkező számot, amely nem nagyobb, mint maga a szám, le kell vonni a decimális számból. Ezután a különbségre ismételjük az eljárást. 1-es lesz azokon a bitpozíción, amelynek megfelelő számot a szétbontásban használtunk, és 0-s ott, amelyet nem használtunk Másik módszer: egészrész esetén 2-vel osztással (törtrésznél 2-vel szorzással) feljegyezzük a maradékot, majd a hányadosra ismételjük az eljárást, amíg nem lesz 0 a hányados. A maradék számjegyeket fordított sorrendben leolvasva kaphatjuk meg a bináris számot. · 10 → 8, 10 → 16: először bináris számrendszerbe konvertálunk, és azután a kívánt számrendszerbe, vagy pedig 8 illetve 16 hatványainak kivonogatásával
7. BCD ábrázolás (tematika) Binárisan kódolt decimális ábrázolás: Némely gép látszólag tud decimális aritmetikát is a bináris mellett. Egy decimális számjegyet 4 biten tárolnak, egy szó két decimális számjegyet ábrázol. A négy bit 16 kombinációt ad, a számjegyekhez elég 0-9-ig a 10 kombináció, a maradék 6 bit kihasználatlan. Decimális formátumban 16 biten 0-tól 9999-ig tudunk tárolni számokat, ellenben egy tiszta 16 bites bináris szám 65535 különböző kombinációt tárolhat. Negatív számok BCD ábrázolása: 9 vagy 10 komplemens kóddal történik
8
8. Lebegőpontos számok A szám nagyságának és pontosságának szétválasztására egy módszer a tudományos jelölés: n = f * 10e Itt f a törtrész (mantissza), e a kitevő (exponens). Ennek a jelölésnek a számítógépes verziója a lebegőpontos szám. A nagyságrendet a kitevő jegyeinek száma, a pontosságot a törtrész jegyeinek száma határozza meg. Normalizált alak: a törtrész első számjegye az adott szám első nullától különböző számjegye. Csak egyetlen normalizált forma van. A nulla ábrázolásához külön megállapodásra van szükség (általában csupa 0 számjegyből áll). A lebegőpontos ábrázolásoknál is meghatározható a legkisebb és a legnagyobb ábrázolható szám, továbbá a legnagyobb hiba. Túlcsordulási, alulcsordulási hiba léphet fel, ha egy művelet eredménye nem fejezhető ki. A lebegőpontos számok számossága nem végtelen, erre a problémára a kerekítés eljárását alkalmazzuk. Kerekítés: ha egy szám helyett a legközelebbi ábrázolható számot használjuk A szomszédos ábrázolható számok közötti távolság nem állandó. A kerekítésnél elkövetett relatív hiba közel ugyanakkora kis számokra, mint nagy számokra. A törtrész és kitevő jegyeit változtatva sok ekvivalens ábrázolási lehetőség adódik. Növelve a törtrész jegyeinek számát a számok sűrűsége növekszik, így növekszik a közelítés pontossága. Az exponens jegyeinek növelésével a kifejezhető számok száma növekszik, és csökken a túlcsordulási zóna.
9
9. IEEE 754 szabvány IEEE 754: a lebegőpontos számok szabványosítása, amelyek kicserélhetők a különböző számítógépek között, és jól működő modell a hardvertervezők számára. Három formát definiál: · egyszeres pontosságú (32 bit): előjelbittel kezdődik, törtrész: 23 bites 2-es alapú, kitevő: 127 többletes, a minimális kitevő 0, a maximális 255 · dupla pontosságú (64 bit): előjelbittel kezdődik, törtész: 52 bites 2-es alapú, kitevő: 1023 többletes, a minimális kitevő 0, a maximális 2047 · kiterjesztett pontosságú (80 bit): kerekítési hibák csökkentésére szolgál Normalizált számok: Ha 0 < kitevőrész < 255, a szám normalizált. A normalizált törtrész bináris ponttal kezdődik, amelyet 1-es bit követ, majd a törtrész többi része következik. A PDP-11 tartalmaz egy implicit 1-es bitet és a nem tárolt bináris pontot. Szignifikáns: az implicit bit, és a feltételezett bináris pont együttese a törtrész megnevezés helyett. Minden normalizált számnak van s szignifikánsa: 1≤s<2 és 24 szignifikáns bitje. Nem normalizált számok: Ha a kitevőrész = 0, ezt a 23 vagy 52 bites törtrész követi. A bináris pont bal oldalán levő implicit bit 0. 23 szignifikáns bitjük van. A 0 két módon ábrázolható (pozitív, negatív 0), amelyet az előjelbit határoz meg. Mind a kettőnek a kitevője és a törtrésze is 0. Ha a kitevőrész = 255, szintén normalizálatlan számokról beszélünk. A végtelen használható operandusként, itt a kitevő végig 1-es, a törtrész végig 0. NaN: meghatározatlan értékű szám (pl. ∞/∞ esetén)
10
10. Digitális logikai szint, kapuk Digitális áramkör: egy olyan áramkör, amelyben csak két logikai érték van jelen. Tipikusan a 0 és 1 volt 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. Digitális logikai szint: a számítógép igazi hardvere, a kapuk a legfontosabb elemei Kapu: kétértékű jelek valamilyen függvényét tudja meghatározni. Minden kapunak egy vagy több digitális bemenete van. Egy kapu legfeljebb néhány tranzisztorból áll. Kapcsolási idejük néhány nanosecundum. Legfontosabb kapuk: NEM (inverter)
NEM-ÉS
NEM-VAGY
ÉS
VAGY
Inverziós gömb: a kis körök, amiket az inverter jelölésére használunk Kapugyártás technológiái: · TTL: tranzisztor-tranzisztor logika - a bipoláris technológia fő típusa · MOS: fém-oxid félvezetős - lassabb, de kevesebb áramot igényel (pl. CMOS) · ECL: emitter csatolású logika - nagy sebességű műveletekhez
11. Boole algebra Boole-algebra: olyan algebra, amelynek változói, függvényei csak a 0 és 1 értéket veszik fel Kapcsolóalgebra: a Boole-algebra egy speciális típusa Boole-függvény: egy vagy több bemeneti változóból, Boole-műveletekből áll, egy eredményt szolgáltat, amely a változók értékétől függ. Az n változós Boole-függvényt 2n darab n változós szorzat összegével tudjuk leírni. Igazságtáblázat: n változó esetén 2n sorból áll, a változók összes lehetséges értéke mellett megadja a függvény vagy kifejezés értékét Boole-kifejezés: · a Boole függvényt írja le · felülvonás: NEM (negáció) · két változó egymás után írása, vagy pont közöttük: ÉS művelet · két változó közötti + művelet: logikai VAGY
11
12. Boole függvények megvalósítása, áramköri ekvivalenciája, azonosságok, dualitás Boole függvény megvalósításának lépései: 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 az 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 Másik módszer: mindig megvalósítható, de több kaput igényel 1. a fenti megvalósítás lépéseit elvégezzük 2. kicseréljük a többszörös bemenettel rendelkező kapukat két bemenetű kapukból álló, vele ekvivalens áramkörökkel 3. a NEM, ÉS, VAGY kapukat kicseréljük NEM-ÉS és NEM-VAGY kapukra Kapuk megvalósítása csak NEM-ÉS és NEM-VAGY kapukkal: NEM ÉS VAGY
Teljes kapuk: bármely Boole-függvény kiszámítható ezek kizárólagos felhasználásával (NEM-ÉS, NEM-VAGY) Ekvivalens áramkörök: két függvény akkor és csak akkor ekvivalens, ha az összes lehetséges bemenetre ugyanazt a kimenetet adják, ez az igazságtáblázattal ellenőrizhető Boole-algebra azonosságai: minden szabálynak két formája van, ezek egymás duáljai. Az ÉS és VAGY, valamint az 1 és 0 felcserélésével előállíthatók egymásból. Pozitív logika: 0 V a logikai 0, 3,3-5 V jelenti a logikai 1-et Negatív logika: 0 V a logikai 1, 3,3-5 V jelenti a logikai 0-t
12
13. Kombinációs áramkörök: multiplexer, demultiplexer, dekódoló, összehasonlító Kombinációs áramkör: többszörös bemenettel és többszörös kimenettel rendelkező áramkör, a kimeneteit a pillanatnyi bemenetei határozzák meg Multiplexer: olyan áramkör, amely 2n adatbemenettel, 1 adatkimenettel és n vezérlőbemenettel rendelkezik, melyek 1 adatbemenetet választanak ki. A kiválasztott adatbemenet a kimenetre irányított, „kapuzott”. Használata: többségi függvény megvalósítása, párhuzamosból sorosba történő átalakító. 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), így egymás után 8 bitet helyezünk el egyetlen kimenetre.
Demultiplexer: a multiplexer fordítottja, 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. kimenet a kiválasztott kimenet. Dekódoló: n bites számot használ bemenetként, és pontosan egyet kiválaszt a 2n kimenet közül
Összehasonlító: két bemeneti szó bitenkénti egyezőségét vizsgálja, XOR (kizáró vagy) kapukból áll, amelyek kimenetét egy VAGY kapuba tápláljuk
13
14. Programozható logikai tömbök Programozható logikai tömb (PLA): Egy nagyon általános lapka PLA, logikai szorzat-összeg képzésére szolgál. Egy lapkának 12 bemenő lába, 6 kimenő lába, tápfeszültség és föld kapcsolata van. Bemeneti rész: 50 ÉS kapuból álló tömb, ezek bemenetei a bemenő 24 jel (12 bemenő változó + ezek komplemense) részhalmazai. Az 50 ÉS kapu minden bemenete egy olvadó biztosítékot tartalmaz, A 24x50-es mátrixban a felhasználó állítja be, hogy melyik bemenő jel melyik kapura kapcsolódik. Programozás során kiégetik a megfelelő biztosítékokat. Kimeneti rész: 6 VAGY kapuból áll, mindegyik 50 bemenő jellel rendelkezik, amelyek megegyeznek az ÉS kapuk 50 kimenetével. Egy 50x6-os mátrix határozza meg, hogy melyik kapcsolat létezik. Mező-programozású PLA: kevésbé használják már Felhasználó által meghatározott PLA: sok alkalmazásnál használatosabbak. Ezekek a felhasználó tervezi meg, és a gyártó legyártja a felhasználó specifikációja alapján. Olcsóbbak, mint a mező-programozásúak
14
15. Aritmetikai áramkörök: léptető Aritmetikai áramkör: MSI-komponenseket használó kombinációs áramkörök, az aritmetikai műveleteket végzik. Léptető: 8 bemenete, 8 kimenete van. A 8 bemenő bit a D0-D7 vonalon érkezik, a kimenetek (S0-S7) pontosan a bemenő jelek 0 bittel való eltolását jelentik. A C vezérlővonal értéke határozza meg a léptetés irányát: 0 esetén balra, 1 esetén jobbra Az összes bemenő jelhez ÉS kapupárok kapcsolódnak, kivéve a szélső biteknél. Amikor C=1, minden kapupár jobb oldali tagja küldi tovább a bemenetet – jobbra léptetés történik. C=0 esetén a kapupár bal oldali fele aktivizálódik – balra léptetés lesz.
16. Fél és teljes összeadó Összeadó: lényeges része minden CPU-nak, feladata egész számok összeadása Fél összeadó (half adder): összeget és az átvitelt kiszámító egyszerű áramkör 2 bemenettel és 2 kimenettel. A bemenet 2 szám, a kimenetek: átvitel (ÉS kapu), összeg (KIZÁRÓ VAGY kapu). Megfelelő több bites szavak 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. Fél összeadó
Teljes összeadó (full adder): két fél összeadóból épül fel, a két fél összeadó együtt számolja ki az összeg- és átvitelbiteket Az Összeg 1-es, ha az A,B és Átvitel be bemeneteken páratlan az 1-esek száma Az Átvitel ki akkor 1, ha A és B is 1, vagy pontosan az egyikük 1-es, és az Átvitel be szintén 1.
15
17. Átvitel továbbterjesztő, átvitel kiválasztó összeadás Átvitel továbbterjesztő összeadó (ripple carry adder): Több bites számok összeadására alkalmas logikai áramkör. 16 bit esetén 16 teljes összeadóból épül fel, amelyek bemenete az előző összeadó átvitel kimenetével van összeláncolva. Minden átvitel bit értéke hullámzóan tevődik át a következő bitre. Az első (és csak is az első) teljes összeadó pótolható fél összeadóval. A jobb szélső összeadónál az Átvitel be bitet 0-nak vesszük. Kapukésedelem: minden egyes teljes összeadónak az átvitel bitre kell várnia melyet az előző számít ki.
Átvitel kiválasztó összeadó (carry select adder): A késleltetés kiküszöbölésére, és az összeadási idő felére redukálásához megduplázzuk a felső rész hardverét. Így három 16 bites összeadót kapunk: az alsó részt, és a két felső részt (U0, U1), ezek párhuzamosan működnek. Átvitel be értékeként 0-t töltünk U0-ba és 1-et U1-be. Mind a kettőt elindítjuk akkor, amikor az alsó részt is, de csak az egyik eredménye lesz helyes. Miután megtörtént a 16 bites összeadás, az Átvitel be érték ismert, így ki tudjuk választani a megfelelő felső részt.
16
18. ALU, ALU-val végezhető műveletek ALU (Aritmetikai Logikai Egység): az ÉS, VAGY, és két gépi szó összeadására alkalmas áramkör, n bites szavakra készül, n azonos áramkört tartalmaz az egyes bitpozíciókra. Bemenet: · 2 vezérlővonal (F0, F1) · 3 adatbemenet (A, B, INVA): a bal oldali bemenet a H regiszterhez kapcsolódik, a jobb oldali a B sínhez · 2 engedélyező vonal (ENA, ENB) · Átvitel be bit Kimenet: · Átvitel ki bit · Kimenet vonal · 2 vezérlővonal: egymástól függetlenül használható az ALU kimenetének irányítására. SLL8 a tartalmat 1 bájttal balra lépteti, feltöltve nullával a legalacsonyabb helyértékű 8 bitet · SRA1: a tartalmat 1 bittel jobbra lépteti, változatlanul hagyva a legmagasabb helyértékű bitet Négy funkció: F0 és F1 bináris értékétől függően, A ÉS B, A VAGY B, A+B, #B A bal alsó sarokban egy 2 bites dekódoló van, hogy a 4 művelet számára engedélyező jeleket hozzon létre, a négy engedélyező vonal közül pontosan egy kerül kiválasztásra, amelynek az eredménye áthalad az utolsó VAGY kapun a kimenetre A bal felső sarokban az a logika szerepel, amely az A ÉS B, A VAGY B, és #B műveleteket hajtja végre, a dekódolóból kijövő engedélyező vonalnak megfelelően A jobb alsó sarokban a teljes összeadó van, amely A+B összegét számítja ki, az átvitel kezelése is itt történik. Bitszeletek: lehetővé teszik bármilyen szélességű ALU megépítését INC jel: sorbakapcsolt ALU-knál jut szerephez, hatására 1-gyel növekszik az eredmény (A+1, A+B+1)
17
19. Nem kombinációs áramkörök: Óra, tárolók Nem kombinációs áramkör: olyan áramkör, amely kimeneteit nem csak a pillanatnyi bemenetei határozzák meg Óra: pontosan meghatározott szélességű szimmetrikus pulzusok sorozatát kibocsájtó áramkör Ciklusidő: két egymást követő pulzus élei között eltelt idő A pulzus frekvenciája általában 1 és 500 MHz között van, ennek megfelelően az óra ciklusideje 1000-től 2 nanosecundumig terjedhet. Az óra frekvenciáját kristályoszcillátor vezérli. Alciklusokra osztás: ha egy órajel alatt több eseménynek kell történnie, Késleltetés: finomabb felbontást tesz lehetővé. Másodlagos órajel készíthető egy ismert késleltetésű áramkör beszúrásával. Ekkor a felfutó és lefutó élek diszkrét események számára megfelelő időzítést biztosítanak. Több órajel: ha több mint két intervallum szükséges, vagy a magas órajelek magas állapotának részlegesen át kell lapolnia egymást Aszimmetrikus pulzuslánc: az alapóra egy késleltető áramkörrel való eltolása után ennek ÉSelése az eredeti jellel Óra
SR-tároló
Időzített SR-tároló
Tároló: szintvezérelt 1 bites memória, NEM-ÉS vagy NEM-VAGY kapukból áll SR-tároló (Set Reset latch): az áramkör „emlékszik”, hogy S vagy R jelet kapott utoljára Két bemenet: S a tárolót beállító, R a tárolót törlő jel Két kimenet: Q és #Q Időzített SR-tároló: módosított SR-tároló Egy további bemenet: órajel Órajel 1: a tároló érzékeny lesz S-re és R-re (ezt hívják érvényes vagy kapuzójelnek) Q=0: az áramkör állapota stabil. S=R=1 esetén a tároló véletlenszerűen ugrik egy állapotába. S 1-re állítása: a tároló állapotát 0-ról 1-re kapcsolja (Q=1 esetén nincs hatása) R 1-re állítása: a tároló állapotát 1-ről 0-ra kapcsolja (Q=0 esetén nincs hatása) Időzített D-tároló: S=R=1 által okozott bizonytalanságot oldja fel, egy igazi 1 bites memória Egy bemenet: D, az alsó ÉS kapu bemenete mindig #D D aktuális értékének a memóriába töltéséhez egy pozitív pulzust kell adni az órajelbemenetre. Ha az órajel 1, D értéke kerül a tárolóba. D=1 és Órajel=1 → Q=1, D=0 és Órajel=1 → Q=0. Sematikus jelölésen: · a: CK=1 esetén tölti be a tároló állapotát · b: CK=0 esetén tölti be a tároló állapotát
18
20. Flip-flop-ok Flip-flop: olyan áramkör, amely egy meghatározott időpontban vesz mintát egy vonalon levő értékről, és tárolja ezt az értéket Élvezérelt: akkor fordul elő állapotváltozás, ha az órajel 1-ből 0-ba megy át, vagy 0-ból 1-be. Az órajel hossza nem lényeges. Tervezése: egy inverterből és egy ÉS kapuból áll Az inverternek van egy rövid, de nem 0 késleltetése (1-10 ns), ez dolgoztatja meg az áramkört. Az ÉS kapu kimenete egy rövid impulzus lesz, a kapu késleltetésével eltolva. Ezt betáplálhatjuk egy D tárolóba.
Sematikus jelölésük: · a: tárolóba írás az órajel felfutó élénél · b: tárolóba írás az órajel lefutó élénél Flip-flopok konfigurációi: · duális: 14 lábú lapka · 8-as csoportban: bemeneti invertert használ erősítőként, 8 bites regiszterként használható · két 8-as csoportból álló lapka párhuzamosan kihasználva: 16 bites regiszter
19
21. Memória (tematika) Nagyobb memóriák: építéséhez szócímzés szükséges, kiterjeszthető nagyobb léptékre Az igazi memóriáknál a bemenet és kimenet közös, így kevesebb lábra van szükség. Bemenet: · 3 adatvonal: I0, I1, I2 · 2 címvonal: A0, A1 · 3 vezérlőbemenet: CS (Chip Select, lapkaválasztás), RD (Read, olvasás és írás megkülönböztetése), OE (Output Enable, kimenet engedélyezése) Kimenet: · 3 adatkimenet: O0, O1, O2 További részek: · Dekódoló: a 4 szót kiválasztó ÉS kapukból áll, minden kapu egy szókiválasztó vonalat vezérel Olvasás: CS, RD és OE mindegyike magas Az összes kapu letiltódik, egyetlen flip-flop sem módosul. Engedélyezve vannak a pufferek, a kimenő vonalokon jelenik meg a kiválasztott szó, az adatbemeneti vonalakat nem használjuk. Írás: CS, RD és OE valamelyike alacsony Csak A0-val és A1-gyel kiválasztott szóba történik írás. Az adatbemeneti vonalakon lévő bitek betöltődnek a kiválasztott memóriaszóba, az adatkimenetek lekapcsolódnak az áramkörről.
Neminvertáló puffer: háromállapotú eszköz (0, 1, semmi kibocsátása), olvasás esetén összeköti a VAGY kapukat a kimeneti vonalakkal, írás esetén teljesen leválasztja azokat. Néhány ns alatt fel tudja építeni a kapcsolatot vagy megszakítani. Jelerősítő is, így sok bemenetet tud egyszerre meghajtani Viselkedése (vezérlőbemenet értékétől függően): · magas: huzalként viselkedik, a bemenet a kimenetre továbbítódik · alacsony: lekapcsolja a kimenetet az áramkörről
20
Neminvertáló puffer
Invertáló puffer
22. Memórialapkák (tematika) Memórialapkák: Egy 4x3-as memória könnyen kiterjeszthető nagyobb méretekre. Előnyös, ha a memóriában levő szavak száma 2 hatványa. A szavakban levő bitek száma bármennyi lehet. Ismétlődő kétdimenziós mintából állnak a memórialapkák. Moore törvénye: az egy lapkán elhelyezhető bitek száma 18 hónaponként megkétszereződik Lapka jelei: beállítottak (asserted), vagy negáltak · CS (Chip Select): aktuálisan szükséges lapkát választja ki több lapka esetén · WE (Write Enable): olvasás megkülönböztetése az írástól · OE (Output Enable): kimeneti jelek vezérlése Memóriaszervezés: bármely méretű memórialapka különböző módokon szervezhető Nagy memórialapkákat nxn-es mátrixként építenek fel, így lecsökken a szükséges lábak száma, de lassabb a címzése (két címzési ciklus szükséges a sor és oszlop címzéséhez). Szükséges jelek címzéshez: 1. címlábak: egy sor kijelölése 2. RAS (Row Address Storbe): sorcím kapuzójel beállítása 3. címlábak: oszlop címének beállítása 4. CAS (Column Address Storbe): oszlopcím kapuzójel beállítása A lapka egy adatbit befogadásával, vagy kiadásával válaszol erre a folyamatra. Nagyobb memóriák: 1, 4, 8, 16 bit szélességű memórialapkákat is használnak (kimeneti szélesség) Egy 4 Mbit-es lapka lehetséges szervezései: · 512 K, bájtos elrendezés: 19 cím, 8 adat vonal. · 2048x2048 bites, elrendezés: 11 cím, 1 adat vonal
21
23. SRAM, DRAM, SDRAM, ROM, PROM, EPROM, EEPROM, Flash memória (tematika) RAM (Random Access Memory): véletlen elérésű memória, írni és olvasni is lehet. Két változata van: statikus és dinamikus SRAM (Statikus RAM): D-flip-flopból épül fel, tartalma addig marad meg, amíg az áramellátása biztosított. Elérési ideje néhány ns. Népszerű 2. szintű gyorsítótár építésére (cache). DRAM (Dinamikus RAM): cellák egy tömbjéből épül fel, mindegyik egy tranzisztort és egy kondenzátort tartalmaz. A kondenzátor feltöltött vagy kisült a tárolt értéknek megfelelően. Frissíteni kell minden bitet, mert az elektromos töltés elszivárogna. Nagyobb sűrűségűek, mint az SRAM-ok, de néhány 10 ns az elérési idejük. A főmemóriákat ebből építik. DRAM fajtái: · FPM (Fast Page Mode): gyors lapkezelésű, a memória a fő rendszerórától eltérő szinkronizációval működik · EDO (Extended Data Output): kiterjesztett adatkimenetű, megengedi egy második memóriahivatkozást, mielőtt az előző befejeződött volna SDRAM (Synchronus DRAM): SRAM és DRAM keveréke, a fő rendszeróra vezérli. Az óra kiküszöböli a vezérlőjeleket, így növekszik az adatátviteli sebessége. Blokkos átvitelt tud. Újabb fajtája a DDR: az órajel felfutó és lefutó élénél is bocsájt ki adatot ROM (Read-Only Memory): csak olvasható memória. A tárolt adatok bevitele gyártás során történik. Fényérzékeny anyag maszkon keresztüli megvilágítása majd a felület kimaratása. PROM (Programmable ROM): mező-programozható, egy biztosítékokból álló tömböt tartalmaz. Ezeket nagyfeszültségű árammal égetik ki sor és oszlop kiválasztása után. EPROM (Erasable PROM): mező-programozható, és mező-törölhető is. Kvarcüveg ablakon át erős ultraibolya fénnyel megvilágítva az összes bitje 1-esre állítható. EEPROM (Electronic Erasable PROM): impulzusokkal törölhető bájtonként speciális berendezés nélkül. Viszont fele olyan gyors, mint az EPROM és 64x kisebb tárolókapacitású. Flash memória: a legújabb EEPROM-típus, blokkonkénti törlést és újraírást tesz lehetővé. Törölhető az áramkörből való elmozdítás nélkül. Digitális kamerák képeinek tárolására, MP3lejátszókban használják. 50 ns körüli elérési idejűek, kb. 100.000 használat után elkopnak.
22
24. Központi memória, bájtsorrend, igazítás Memória (tár, tároló): a számítógép azon része, ahol a programokat és adatokat tároljuk Bit: bináris számjegy, a memória alapegysége, egy 0-t, vagy egy 1-t jelent Rekesz (cella): a memóriák ebből épülnek fel, mindegyik valamilyen információt tárolhat. Ez a legkisebb címezhető egység. Rekeszcím van minden rekeszhez rendelve, a programok ezzel tudnak rájuk hivatkozni. Minden rekeszben ugyanannyi bit van. Ha egy memóriában n rekesz van, a címek 0-tól n-1-ig terjedhetnek. Ha egy rekesz k bites, akkor 2k különböző bitkombináció valamelyikét tárolhatja. Ha egy cím m bites, akkor a megcímezhető rekeszek száma 2m. A kettes számrendszert használó gépek a memóriacímeket bináris számokkal fejezik ki. A rekeszhossz független a címtartománytól. Bájt: szabványosított 8 bit hosszúságú rekesz Szó: bájtokból épül fel, a legtöbb utasítás teljes szavakkal dolgozik → egy x bites gépnek x bites regiszterei vannak Bájtsorrend: egy gép szavainak adott irányból történő sorszámozását jelenti · nagy endián: a számozás a legnagyobb helyiértékű bájtnál kezdődik · kis endián: a számozás a legkisebb helyiértékű bájtnál kezdődik Mindkettő rendszer önmagában jó. Különböző típusú bájtsorrendet használó gépek között kommunikációnál van probléma. Ekkor eltorzulhatnak az adatok. Megoldás: minden adatelem elé egy mezőt helyezünk, amely megmondja, hogy a soron következő adat milyen típusú, és milyen hosszú.
23
25. Hamming távolság, hibaészlelő, hibajavító kódok Hibafelismerő, hibajavító kódok: a számítógép memóriái hibázhatnak, ennek kiküszöbölésére minden memóriabeli szót kiegészítenek speciális bitekkel. Egy szó kiolvasása előtt a kiegészítő biteket ellenőrzik, hogy történt-e hiba. Kódszó: n bites kódszó, ha n = m+r, ahol m az adatbit száma, r a redundáns bitek száma M bites memóriaszavak esetén 2m érvényes kódszó van. Hamming-távolság: két kódszó eltérő bitpozícióinak száma. Az egyes bitpárokra XOR (kizáró vagy) műveletekkel állapítható meg. Ha két kódszó távolsága d, d darab egyszeres bithiba kell, hogy egyik a másikba alakulhasson. Összes kódszó Hamming-távolsága: az összes érvényes kódszó meghatározása, majd ebben a listában a minimális Hamming-távolság Hibafelismerő, hibajavító képesség: Hamming-távolságtól függ, · d egyszeres bithiba felismerése: d+1 távolságú kódolással · d egyszeres bithiba javítása: 2d+1 távolságú kódolással Paritásbit: adatbitekhez hozzáadott bit, egyetlen bithibát felismerő kódoláshoz alkalmazható. Értékét úgy választjuk meg, hogy a kódszóban páros (vagy páratlan) számú 1-es legyen. Ennek a kódolásnak Hamming-távolsága 2, mert minden egyszeres bithiba hibás paritásút állít elő. Ha hibás paritású kódszó kerül kiolvasásra a memóriából, hibaüzenetet kapunk, a program leáll. Egyszeres bithiba javításához szükséges ellenőrző bitek száma: m+r < 2r Tetszőleges hosszúságú memóriaszavak hibajavító kódolása: a kódszó hossza n = m+r A biteket 1-gyel kezdődően sorszámozunk, minden egyes bit paritásbit lesz, amelynek sorszáma 2 hatványa, a többi adatbit. Minden paritásbit meghatározott bitpozíciókat ellenőriz. Hibás bit megtalálása: először megadjuk az összes paritásbitet. Ha mindegyik helyes, nem volt hiba. Ezután összeadjuk a hibás paritásbitek sorszámát, az összeg a hibás bit pozíciója.
24
26. Gyorsító tár (cache), találati, hiba arány, közös és osztott gyorsítótár A processzorok mindig gyorsabbak a memóriáknál, szoftveres, vagy hardveres várakozás teljesítménycsökkenést okoz. Gyorsítótár (cache): CPU teljesítményének növelésére szolgáló, CPU lapkára integrálható kicsi, gyors memória. Logikailag a CPU és a központi memória között helyezkedik el, fizikailag számos helye lehetséges A központi memória és a cache kötött méretű blokkokra van osztva. Alapötlete: a leggyakrabban használt memóriaszavakat a gyorsítótárban tartjuk. Ha egy utasításnak szüksége van az A szóra, először itt keresi, ha nincs itt, akkor az A-t tartalmazó blokk kerül beolvasásra a memóriából a gyorsítótárba. A siker azon múlik, hogy a keresett szavak mekkora hányada van a gyorsítótárban. Lokalitási elv: egy rövid időintervallumban a memóriahivatkozások a teljes memóriának csak egy kis részét érintik, ezek egymás közelében helyezkednek el 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 a gyorshoz. Minél nagyobb a k, annál jobb a teljesítmény. c: gyorsítótár elérési ideje m: központi memória elérési ideje h = (k-1) / k Találati arány (h): az összes hivatkozás mekkora hányada szolgálható ki a gyorsítótárból. Hibaarány: 1-h Átlagos elérési idő: c + (1-h)*m Ha h→1, akkor minden hivatkozás kiszolgálható a gyorsítótárból, az elérési idő közelíti c-t. Ha h→0, akkor minden esetben memóriaműveletet kell végezni, az elérési idő közelíti c+m-et Gyorsítósor: főmemóriában lévő blokk, ha egy keresett szó nincs a gyorsítótárban, egy egész sort betöltenek oda. Egyszerre k szót olvasni hatékonyabb, mint egy-egy szót olvasni k-szor. Tervezési szempontok: · méret: minél nagyobb, annál jobban működik, de annál drágább is. · gyorsítósor mérete: minél nagyobb a sor, a hivatkozott cím környezete nagyobb lesz a gyorsítótárban, nagyobb a sor betöltési ideje is. · gyorsítótár felépítése: milyen módon tartja nyilván a szavakat. · utasításokat és az adatokat közös, vagy külön tárban tárolja · gyorsítótárak száma: lehetséges egy elsődleges a CPU lapkán, egy másodlagos a CPUval egy tokban, és egy harmadik külön tokban Egyesített gyorsítótár: utasítások és adatok ugyanazt a gyorsítótárat használják. Egyszerűbb szerkezetű, automatikusan egyensúlyban tartja az utasítások és az adatok mozgását. Nem lehetséges vele a párhuzamosítás. Osztott gyorsítótár: az utasítások és adatok külön gyorsítótárban vannak (Harvardarchitektúra). Lehetséges vele a párhuzamosítás: egyik szállítószalag végzi az utasítás, másik az operandus előolvasást. Az utasítás gyorsítótár tartalmát sosem kell visszaírni a memóriába, mert az utasítások nem módosulnak Gyorsítótár szintek: egyre bővülők, az 1. szintű tartalma benne van a 2. szintű cache-ben, a 2. szintű cache teljes tartalma benne van a 3. szintű gyorsítótárban
25
27. Direkt leképezésű, halmazkezelésű gyorsítótár, memóriába írás Direkt leképezésű gyorsítótár: minden egyes bejegyzés egy sort tartalmazhat a főmemóriából, egy adott bejegyzés pontosan egy helyen lehet tárolva. Gyorsítótár-bejegyzés részei: · Valid bit: jelzi, hogy van-e a bejegyzésben érvényes adat, vagy nincs (bootoláskor minden bejegyzést érvénytelennek jelöl a rendszer) · Tag mező: egy 16 bites egyedi értékből áll, amely azt a memóriasort azonosítja, ahonnan származik az adat · Data mező: a memóriában lévő adat másolatát tartalmazza. Egy 32 bájtos gyorsítósort tartalmaz A gyorsítótárban a címet 4 részre tagoljuk: · TAG: a gyorsítótárban tárolt Tag bitek megfelelője · LINE: jelzi, hogy melyik gyorsítótárbejegyzés tartalmazza a megfelelő adatokat, ha azok a gyorsítótárban vannak · WORD mező: egy soron belül melyik szóra történik hivatkozás · BYTE: ha csak egy bájtra van kérés, akkor azt mondja meg, hogy a szón belül melyik bájtra van szükség Memóriacím előállítása: a hardver a cím 11 LINE bitjét indexelésre használja a gyorsítótárban hogy megtalálja a keresett bejegyzést. Ha érvényes a bejegyzés, a TAG és Tag mezők összehasonlításra kerülnek. Ha megegyeznek, akkor gyorsítótár találat van. Gyorsítótár hiány: ha a gyorsítótár bejegyzése érvénytelen, vagy a címkék nem egyeznek meg. Ekkor a teljes gyorsítósor betöltődik, és tárolódik a gyorsítótár-bejegyzésen. Ha egy program gyakran használ olyan szavakat, amelyek távol vannak egymástól, de ugyanoda képződnek le a gyorsító tárban, akkor sűrűn kell cserélni a gyorsító sort. Halmazkezelésű gyorsítótár: n utas halmazkezelésű gyorsítótár esetén minden címhez n db lehetséges bejegyzés van. 2 és 4, újabban a 8 utas kezelésű. LRU (Least Recently Used) algoritmus: rendezett listát készín minden bejegyzés halmazhoz. Frissül a lista, ha a sorokhoz hozzányúlunk, megjelöli a legutolsóként használt bejegyzést. Memóriacím előállítása: minden bejegyzés rendelkezik egy címke-összehasonlító logikával. Ha a gyorsító tár Vonal által mutatott sorában az A, B, C és D bejegyzések egyikében TAG megegyezik a címben lévő TAG-gel, és a hozzá tartozó V=1 (valid), akkor az adat bent van a gyorsító tárban (ebben a bejegyzésben). Memóriába írási stratégiák: · írásáteresztés (write through): bejegyzés azonnali frissítése a főmemóriában. Ha a cím a gyorsítótárban van, oda is be kell írni, különben el kellene dobni a gyorsítósort · késleltetett írás, visszaírás: gyorsítótár találat esetén csak a gyorsítótárba írunk. A memóriába csak gyorsítósor cserénél. · írásallokálás: gyorsítótár hiány esetén is behozza az adatot a gyorsítótárba. Többnyire ezt alkalmazzák késleltetett írás esetén.
26
28. CPU részei, feladatai, adatút CPU: központi feldolgozóegység. Feladata a központi memóriában tárolt programok végrehajtása úgy, hogy a programok utasításait egymás után beolvassa, értelmezi és végrehajtja. Az egyes részegységeket egy sín köti össze Sín: a címek, adatok és vezérlőjelek továbbítására szolgáló párhuzamos vezetékköteg Részegységei: · vezérlőegység: utasítások beolvasása a központi memóriából, és az utasítások típusának megállapítása · ALU: program utasításához szükséges műveleteket végez (összeadás, logikai ÉS) · kisméretű, gyors memória: részeredményeket és vezérlőinformációkat tárol. Regiszterekből áll, minden regiszter képes tárolni egy számot, ezeket nagy sebességgel lehet írni és olvasni. Fontosabb regiszterek: PC (utasításszámláló): következő végrehajtandó utasítás címe IR (utasításregiszter): végrehajtás alatt lévő utasítás CPU feladatai: · a végrehajtandó utasítás betöltése, a betöltött utasítás típusának megállapítása, · az ezt követő utasítás címének megállapítása, · az operandus(ok) helyének megállapítása, operandus(ok) betöltése · az utasítás végrehajtása, · az eredmény helyének megállapítása, az eredmény tárolása, · az egész ciklus újra kezdése Adatút: részei a regiszterek, az ALU, és az ezeket összekötő sínek. · a regiszterkészletből feltöltődik az ALU két bemeneti regisztere · ALU számol - ezalatt a bemeneti regiszterek tárolják a bemeneti adatokat · az eredmény az ALU kimenő regiszterébe kerül · az ALU kimenő regiszteréből a kijelölt regiszterbe kerül az eredmény Adatút ciklus: két operandus ALU-n történő átfuttatása, és az eredmény egy regiszterbe tárolása Két fő utasítástípus: · regiszter-memória: szavakat tölthetünk át memóriából regiszterbe, ahol a soron következő utasítások ALU bemenetként használhatják · regiszter-regiszter: két operandust vesz a regiszterkészletből, elhelyezi az ALU bemeneti regisztereibe, ALU számol velük, majd elhelyezi az eredményt egy regiszterbe
27
29. RISC és CISC kialakulása A 70-es években sok bonyolult utasítást építettek a gépekbe, mert a ROM-oknak a RAMokhoz viszonyított nagy sebessége a mikroprogram gyors végrehajtását eredményezte. CISC: (Complex Instruction Set Computer) összetett utasításkészletű számítógép (~200-300) · interpretálást használnak · fontos a visszafelé kompatibilitás Az IBM egyszerűbb gépek tervezésébe fogott: a 801-es volt az első kísérleti gép, Seymour Cray ötlete alapján. Nem került piacra, csak 1982-ben publikálták. 1980, Berkeley: olyan VLSI-processzorokat kezdett el tervezni, amelyek nem használtak interpretálást. Az első CPU lapka a RISC I, a második a RISC II nevet kapta. Egy másik változat az MIPS. Továbbfejlesztett változataik a SPARC és MIPS. RISC (Reduced Instruction Set Computer): csökkentett utasításkészletű számítógép (~50) · nem kell visszafelé kompatibilisnek lennie · az utasítások könnyen dekódolhatók legyenek, és közvetlenül a hardver hajtsa végre őket, az adatút egyszeri bejárásával · két regiszter tartalmának összekombinálása, majd az eredmény elhelyezése egy regiszterben · utasítások kiadásának ütemét maximalizálja · csak betöltő és tároló utasítások hivatkozzanak a memóriára · sok regiszter (legalább 32) Ha egy CISC utasítás 4-5 RISC utasítással helyettesíthető, és a RISC 10-szer gyorsabb, akkor is a RISC nyer. Hibrid technológiával az Intel túlélte a RISC-forradalmat: A 486-ossal kezdődően a processzoraik tartalmaznak egy RISC magot, amely a legegyszerűbb, leggyakoribb utasításokat egyetlen adatútciklus alatt hajtja végre. Az összetettebbeket interpretálja a CISC-elveknek megfelelően, ezért a gyakori utasítások gyorsak, a kevésbé gyakoriak lassúk. Ez nem olyan gyors, mint egy tiszta RISC processzor, de versenyképes teljesítményre képes, és a visszafelé kompatibilitás is megmarad.
28
30. Utasításszintű párhuzamosítás Lapkák gyorsítása: órajel frekvenciájának növelésével, párhuzamosság alkalmazásával Utasításszintű párhuzamosítás: az egyes utasításokban rejlő párhuzamosságot használjuk ki Csővezeték: az utasítás végrehajtását több részre osztja. Minden részt külön hardverelem kezel, amelyek egyszerre működnek (fázisok). 1. beolvassa az utasítást a memóriából és elhelyezi egy pufferben 2. dekódolja az utasítást, meghatározza a típusát és a szükséges operandusokat 3. megkeresi és beolvassa az operandusokat 4. végrehajtja az utasítást: az operandusokat átviszi az adatúton 5. visszaírja az eredményt a megfelelő regiszterbe Lehetővé teszi, hogy kompromisszumot kössünk késleltetés és áteresztőképesség között.
Késleltetés: mennyi ideig tart egy utasítás végrehajtása Áteresztőképesség: hány MIPS a processzor sebessége Ha az órajel T ns, a csővezeték n fázisú → késleltetés: n*T ns Kettős szállítószalag: közös beolvasó egységű gép. A csővezetékeknek saját ALU-juk van, így párhuzamosan tudnak működni. Főleg a RISC gépek használják, de a Pentiumban is megtalálható. A fő csővezeték az u pipeline (elsőbbséget élvez) a mellékcsővezeték a v pipeline (csak egészműveleteket tud). Két utasítás kompatibilis: · bonyolult szabályok határozzák meg · az utasítások mindig az eredeti sorrendben hajtódnak végre · gyorsabb programokat tudnak előállítani belőlük a fordítóprogramok
Szuperskaláris processzor: · egy csővezetéke van, több funkcionális egységgel · 4, vagy 6 utasítás végrehajtását kezdi el egyetlen órajel alatt · S3 fázis lényegesen gyorsabban elő tudja készíteni az utasításokat, mint ahogy az S4 fázis képes azokat végrehajtani. · a 4. fázis funkcionális egységeinek többsége egy órajelnél jóval több időt igényel a feladata elvégzéséhez · több ALU is lehet az S4 fázisban
29
31. Processzorszintű párhuzamosítás Processzorszintű párhuzamosítás: több CPU-t tartalmazó számítógép, amely 50-100szorosra is növelheti a sebességet Tömbszámítógép: nagyszámú egyforma processzorból áll, amelyek ugyanazt a műveletsorozatot végzik el különböző adathalmazokon · negyedenként egy vezérlőegység adja ki az utasításokat, melyeket a hozzá tartozó processzorok szinkronizálva végrehajtanak · mindegyik processzornak saját memóriája van · már nem divatos, mert drága és nehéz kihasználni A világ legelső tömbprocesszora az Illiac IV volt, amelyből csak az egyik negyed épül meg. Vektorprocesszor: minden összeadás egyetlen csővezeték elven működő összeadó egységben zajlik. · adattömbökkel dolgozik, mint a tömbprocesszor · vektorregiszterek használ: több hagyományos regiszterből áll · ezeket a betöltő utasítás egymás után, sorban tölti fel, két vektor elemeit páronként adnak össze, és az eredmény egy vektorregiszterbe kerül · 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 tartamát az aritmetikai egységbe · az eredmények szinten vektorregiszterbe kerülnek Multiprocesszor: közös memóriát használó, több teljes CPU-ból álló rendszer. Szorosan kapcsolt CPU-k: együttműködésre képes CPU-k. A közös memória programozási modelljét könnyű használni multiprocesszor alkalmazása esetén. Implementációs sémák: · egyetlen sín van, amelyhez csatlakoztatjuk a memóriát és az összes processzort, csak közös memória van, ez leterheli a sínt · lokális memóriával rendelkező CPU-k kapcsolódnak egy sínhez: ezt a memóriát a többi nem éri el, de van egy közös memória is · további megoldás: gyorsítótár használata
Multiszámítógép: sok (256<) összekapcsolt számítógépből álló rendszer · minden gépnek csak saját memóriája van, közös memóriájuk nincs · a processzorok üzenetek küldésével kommunikálnak egymással (néhány mikrosecundumos üzenetküldési idő) · célszerű összekötni minden számítógép minden másikkal: így az üzenetek közbeeső gépeken keresztül jut el a célgépig · szerkezet: 2,3 dimenziós hálók, fák, gyűrűk
30
32. Adattípusok, karakterkódolás Hardvertámogatás: vannak utasítások, amelyek megadott adatformátumot feltételeznek, nem választható más adatábrázolás. Amihez nincs támogatás, (pl. dupla pontosságú egész aritmetika), azt szoftveresen kell megcsinálni. Adattípusok kategóriái: numerikus és nem numerikus Numerikus adattípusok: · egész számok (8, 16, 32, 64 bit) - bináris kettes komplemens kódban ábrázolják. Előjeles és előjel nélküliek lehetnek. · lebegőpontos számok (32, 64, 128 bit) - sok gép külön regisztereket alkalmaz a lebegőpontos és az egész számításokra · binárisan kódolt decimális szám: 4 biten ábrázol egy decimális számjegyet
Nem numerikus adattípusok: · karakterek: karakterkódolásokkal valósítják meg · logikai értékek (boolean, 1 biten, vagy 1 bájton): igaz / hamis · bittérkép: logikai értékek egy tömbje · mutató: memóriacím - tőle adott távolságra lévő változó eléréséhez · bit: kapcsolók, lámpák beállítására, lekérdezésére beágyazott rendszerekben Karakterkészlet: használt jelek – nagybetűk, kisbetűk, számjegyek, írásjelek, speciális szimbólumok Karakterkód: karakterek számokra történő leképezése. Az egymással kommunikálni tudó gépek azonos karakterkódolást használnak. ASCII (American Standard Code for Information Interchange): 7 bites karakterkódolás · vezérlőkarakterek: 0 és 1F közötti kódpozíción - nem nyomtathatók · nyomtatható karakterek: angol nagybetűk, kisbetűk, számjegyek, írásjelek, matematikai szimbólumok · Latin-1 kód: 8 bitesre bővítés · IS 8859: kódlapok (256 karakterből álló készlet egy nyelvcsoport számára) · IS 8859-2: magyar betűket is kezeli UNICODE: néhány programozási nyelv (Java), operációs rendszer (Windows XP) támogatja · kódpozíció: minden karakterhez és szimbólumhoz egy állandó 16 bites értéket rendel · nincsenek vezérlőkódok és sokbájtos karakterek · blokkok: minden jelentősebb ABC néhány egymás utáni zónát foglal el – könnyű rendezés Gondot jelent a kódpozíciók kiosztása: kevés kódpozíció, folyamatosan bővülő nyelvek, némely nyelv szimbólumait nem lehet szótár szerint rendezni (külső táblázatok kellenek hozzá), Braille-írásjelek felvételére is van igény.
31
33. CPU, sínek, sínprotokoll CPU: központi feldolgozó egység. Egy lapkán helyezkedik el, lábkészlettel rendelkezik. Lábkészlet: cím-, adat-, vezérlőlábakból áll. Sín: párhuzamos vezetékköteg, a lábkészlet ezen keresztül kapcsolódik a memória, B/K egységek lábaihoz. Két paraméter határozza meg egy CPU teljesítményét: címlábak, adatlábak száma Címlábak: m címlábban 2m memóriahely címezhető meg, szokásos értékei 16, 20, 32, 64. Adatlábak: n adatlábbal n bites szavak lehet írni/olvasni egy művelettel (8, 16, 32, 36, 64) Vezérlőlábak: szabályozzák az adatok mozgásának időzítését, vegyes funkcióik is vannak. Vezérlőláb kategóriák: · sínvezérlés (3): rendszer többi részének irányítása, megmondja, mit tegyen a sín · megszakítások (2): B/K berendezésekből a CPU-ba tartó bemenetek, megszakításkérés, CPU ezeket nyugtázza · sínütemezés/kiosztás (2): a sínen a forgalom irányítása, ütközések elkerülése · segédprocesszor jelei (3): más lapkával (lebegőpontos, grafikus) való kommunikációra · állapot (2): állapotra vonatkozó információkat fogad, számítógép alaphelyzetbe állítása, kompatibilitás biztosítása korábbi B/K lapkákkal További lábak: földelés, órajel, feszültség Utasítás betöltése: 1. a CPU kéri a sínhasználat jogát 2. az utasítás címét a címlábakra teszi, 3. vezérlő vonalon informálja a memóriát, hogy olvasni szeretne 4. a memória a kért szót az adat vonalakra teszi, kész jelzést tesz egy vezérlővonalra 5. a CPU végrehajtáshoz átveszi az utasítást. Sín (bus): különböző eszközök közötti elektronikus pálya. Korai személyi számítógépeknél egyetlen (külső) rendszersín, manapság legalább 2 van: 1 belső (speciális célú, CPU és a memória között) és 1 külső (B/K berendezések számára)
Sínprotokoll: a külső sínek működésére vonatkozó pontos, meghatározott szabályok, mechanikai és elektronikus előírások. Ez teszi lehetővé, hogy egy 3. fél által tervezett kártyákat is a rendszerhez lehessen csatlakoztatni. Ezeket a szabályokat az összes csatlakoztatni kívánt eszköznek be kell tartania.
32
34. Mester-szolga, sínvezérlő, sínvevő, adóvevő, sínszélesség, sávszélesség Mester: a sínhez csatlakozó aktív berendezés, átvitelt tud kezdeményezni. A memória sosem lehet mester. Szolga: sínhez csatlakozó passzív berendezés, végrehajtó funkciót tölt be. Ezek a szereposztások tranzakciónként eltérőek lehetnek. Mester Szolga Példa CPU Memória Utasítások és adatok betöltése CPU B/K eszközök Adatátvitel kezdeményezése CPU Segédprocesszor CPU felkínálja az utasítást a koprocesszornak B/K Memória DMA (direkt memóriaelérés) Segédprocesszor CPU koprocesszor átveszi az operandusokat a CPU-tól Sínvezérlő (bus driver): digitális jelerősítő, a legtöbb sínmester ezzel kapcsolódik a sínhez Sínvevő (bus receiver): a legtöbb szolga ezzel kapcsolódik a sínhez Sínadóvevő (bus transceiver): mester és szolga módban is működni tudó eszközök kapcsolódása a sínhez. Lapkák kapcsolódása: · háromállapotú eszközök: lekapcsolódnak a sínről, amikor nem szükséges a kapcsolat · nyílt gyűjtők: ugyanazt a hatást érik el, mint a háromállapotú eszközök, de más módon kapcsolódnak a sínhez · a legtöbb sínen néhány vonal háromállapotú, a többi pedig nyílt gyűjtő. Huzalozott VAGY: nyílt gyűjtő vonal esetében, ha két vagy több berendezés egyidejűleg beállítja a jelet, az összes jel VAGY kapcsolata szolgáltatja az eredményt Sínek vonalai: cím, adat, vezérlővonalai vannak. Nem szükséges egyértelmű megfeleltetés a CPU lábaival. Egy dekódoló lapkára van szükség a CPU és a sín közé, hogy a 3 bites kódolt jelet különböző sínvezérlő jelekre válassza szét. Sínszélesség: egy sín n címvezetékét a CPU 2n különböző memóriarekesz címzésére tudja használni. Szélesebb sínnel több memória címezhető, de több fizikai helyet foglalnak, és nagyobb csatlakozókra van szükségük. → Drágábbak, későbbi kompatibilitási problémák. Sávszélesség: továbbítható bitek száma / s Sín gyorsítása: probléma a sínaszimmetria, és a visszafelé kompatibilitás · sínciklus idejének csökkentése: több adatátvitel / s · sávszélesség növelése: több bit átvitele egyszerre Sínaszimmetria (skew): az egyes sínvezetékeken a jelek kissé eltérő sebességgel haladnak. Minél gyorsabb egy sín, annál nagyobb az aszimmetria. Sín szélességének növekedése:
33
35. Sokszorozott sín, alaplap Sokszorozott sín: túl széles sínek problémáját küszöbölik ki · közös vezetékek a cím és adat számára · a sín működésének kezdetén a vezetékeket címzéshez, később adatátvitelre használják · csökkenti a sín szélességét, olcsóbb, mint az osztott cím- és adatvezetékű sínek · csökken a sávszélesség is, de nem olyan mértékben · bonyolultabb sínprotokoll szükséges hozzá Alaplap felépítése (motherboard, parentboard): nyomtatott áramköri lap Rajta van a CPU, néhány csatlakozó DIMM moduloknak, kiegészítő lapkáknak. Hosszában rámaratva található a sín, ezen illesztő helyek (slot: memória és B/K eszközök számára).
Kívánság: PC cseréjénél megmaradhasson a régi perifériák egy része, ezért az új gépben is kell a régi sín. Ez a sínek szabványosítását maga után vonja. Egy gépen belül több sín: PCI sín a B/K eszközök számára, ISA sín a hagyományos B/K kártyáknak Egy tipikus modern PC PCI, ISA és SCSI sínnel:
34
36. Sín időzítés, szinkron, aszinkron sín, teljes kézfogás Időzítéstől függően: a sínek két diszjunkt kategóriába sorolhatók Szinkron sín: egyik vezetékére egy kristály oszcillátor van kapcsolva. Ezen a vezetéken egy 5 és 100 MHz közé eső frekvenciájú négyszög hullámokból álló jel halad. Sínciklus: a négyszög hullámok időtartama, minden tevékenység ezek többszörösével működik. Az első ciklus a T1 felfutó élénél kezdődik el és a harmadik a T4 felfutó élnél ér véget. A sínciklust a sínen lévő leglassabb eszköz sebességéhez kell igazítani. Síntevékenységek: 1. cím megadása 2. vezérlőjelek beállítása (MREQ#, RD#) 3. WAIT# jel beállítása, ha szükséges – várakozó állapotok beiktatása 4. WAIT# jel negálása, az adatok az adatvezetékekre kerülnek 5. CPU leolvassa az adatvonalakat, beírja a regiszterekbe MREQ: memória elérése van folyamatban RD: olvasás van folyamatban WAIT: a sín jele a CPU-nak, hogy nem tudja szolgáltatni az aktuális ciklus végéig az adatot Aszinkron sín: nincs órajel-generátora. A jövőbeli technológiai változások előnyeit ki lehet vele használni. Az egymás után következő mester-szolga tranzakciók eltérő sebességűek lehetnek, de nehezebb megépíteni, mint a szinkron sínt. MSYN#: speciális vezérlőjel, mester szinkronizáció. A sínmester állítja be, ha kész az adatok fogadására. SSYN#: speciális vezérlőjel, szolga szinkronizáció. A szolga állítja be, ha elvégezte a feladatát. Síntevékenységek: 1. sínmester beállítja a címet, az MREQ#, az RD# jelet és MSYN#-t 2. a szolga ezt meglátja, elvégzi a munkát, majd beállítja az SSYN#-t 3. a mester érzékeli SSYN# beállítását, ezért tárolja az adatokat, majd negálja a címvezetékeket, az MREQ#, az RD# és a MSYN# jelekkel együtt 4. a szolga észleli MSYN# negálását, megtudja, hogy a ciklus véget ért, ezért negálja az SSYN#-t Teljes kézfogás: egymáshoz kapcsolódó jelek halmaza, amely négy eseményt takar. Független az időzítéstől, minden eseményt egy megelőző esemény vált ki. 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
35
37. Sínütemezés Sínütemező: ha több eszköz (koprocesszor, B/K lapkák) szeretne egyszerre sínmester lenni, akkor egy ütemező mechanizmust végez Centralizált mechanizmus: · CPU lapkába van építve, néha külön lapkán szerepel. · 1 kérés vezeték: huzalozott VAGY - egyszerre több eszköz adhat jelet · 1 engedély vonal: egyetlen ütemező dönti el, hogy ki következik · az ütemező azt látja, hogy van-e kérés, a kérő eszközök száma nem ismert · 1, vagy több prioritási szint: minden szintnek van sínhasználat kérő- és engedélyező vonala. Az egyes szinteken belül a láncolás működik. · néha van engedély fogadása vonal: ha beállított, a kérés és engedélyezés vonalakat negálni lehet. Újabb kérés lehetséges sín használata közben → bonyolultabb logika, sínciklusok jobb kihasználtsága Láncolás: az engedélyező vonal végigfut az ütemezőből indulva az összes eszközbe. Minden eszközhöz prioritást rendel, amely az ütemezőtől vett fizikai távolságtól függ. 1. a sínütemező beállítja a sínhasználati engedély jelet 2. az ütemezőhöz legközelebb lévő eszköz ellenőrzi, hogy ő adta-e ki a kérést 3. ha igen, átveszi a sín irányítását (sínmesterré válik), ha nem, akkor továbbítja az engedélyt a sorban következő eszköznek
Decentralizált mechanizmus: nincs ütemező 1. minden eszköz figyeli az összes sínhasználat kérő vonalat, így minden sínciklus végén tudja, hogy ő volt-e a legnagyobb prioritású kérő eszköz · több sínvezetéket igényel · eszközök száma nem lehet több a használati kérés vezetékek számánál 2. láncoláshoz hasonló, de nincs ütemező → gyorsabb, és olcsóbb · 1 sínhasználat kérése vonal (huzalozott VAGY), · 1 foglalt vonal (aktuális mester állítja be), · 1 ütemezést megvalósító vonal (végig van láncolva az összes eszközön) · minden eszköz ellenőrzi, hogy szabad-e a sín a be/kimenetein (IN/OUT) · ha az IN negált, az első eszköz negálja az OUT kimeneteit, és így tovább · sínmester: akinél az IN magas és az OUT negált
36
38. Sínműveletek, példák sínekre Mester-szolga: hagyományos sínművelet. Adatok beolvasása szolgától (pl. memóriától), vagy adatok kiírása a mesternek. Blokkos átvitel: új vezérlőjel: BLOCK# beállítása jelzi, hogy nem közönséges sínművelet következik. Hatékonyabb lehet, mint egyetlen szó olvasása (pl. gyorsítósor beolvasás). 1. szavak számának, és kezdőcímnek felírása az adatvezetékekre 2. minden egyes ciklusban visszaad egy szót a memória, amíg a számláló ki nem merül Olvasás-módosítás-visszaírás (szemafor): többprocesszoros rendszerekben használatos · bármelyik CPU-nak lehetővé teszi, hogy beolvasson egy szót, megvizsgálja, majd visszaírja a memóriába anélkül, hogy közben a sínt elengedné · kizárja a többi CPU-t a sínről, így befolyásolja az első működését Megszakítás kezelése: későbbi tételben Példák sínekre: · IBM PC: 62 vonalas, 20 címnek, 8 adatnak + DMA, megszakítás · PC/AT szinkron sín: további 36 vezeték (címnek összesen 24, adatnak 16) · Microchannel: IBM OS/2 gépekhez, szabadalmak · ISA: 8.33 MHz-es PC/AT sín, sávszélesség: 16.7 MB/s · EISA (Extended ISA): 32 bitesre bővített ISA, sávszélesség: 33.3 MB/s · PCI: 32 bites adat átvitel (33,3 MHz, sávszélesség: 133 MB/s) szabadon felhasználható licensz. Multiplexelt cím- és adatkivezetések. Új változatai: 64 bites adat, 66 MHz, 528 MB/s. · SCSI: sín, amelyre SCSI vezérlő és legfeljebb 7 eszköz csatlakoztatható. Az eszközök kezdeményezők, vagy fogadók, egyszerre működhet az összes. Problémák: a memóriához lassú, nem kompatibilis az ISA bővítőkártyákkal. Megoldás több sín, hidak ezek összeköttetésére. Belső sín, PCI híd, PCI sín, ISA híd, ISA sín.
37
39. Általános soros sín Általános soros sín (USB): alacsony sebességű perifériák összekapcsolására fejlesztették ki. Bármikor könnyen, azonos módon lehet sokféle perifériát kapcsolni a géphez, akár a gép működése közben, hardver ismeretek nélkül. Négy vezeték: adatok (2), tápfeszültség, föld Verziói: · 1.0: sávszélesség 1,5 Mbs – billentyűzet, egér, scanner, digitális telefon számára · 1.1: sávszélesség 12 Mb/s – nyomtatók, digitális fényképezőgépeknek · 2.0: sávszélesség 480 Mb/s – nagy sebességű eszközöknek (merevlemez, DVD lejátszó) Csomópont (root hub): rendszersínre csatlakozik, több csatlakozót tartalmaz a külső B/K eszközök, vagy további csomópontok számára. 1 ms-onként üzenetekkel (frame) kommunikál az eszközökkel. Konfigurálás: ha a központi elosztó tudja fogadni az eszközt, akkor egyedi címet (1-127) ad neki (konfigurálja). A frissen csatlakoztatott eszköz címe kezdetben 0. Keret (frame): egy, vagy több csomagból áll. Az egyes csomagok haladhatnak a központból az eszközök felé vagy fordítva. A haladási irány egy kereten belül is változhat. · vezérlő (control): eszközkonfigurálás, parancs, állapot lekérdezés · izoszinkron: valós idejű eszközöknek használják, pl. telefon. Hiba esetén nem kell ismételni az üzenetet. · csoportos (bulk): nagy tömegű adat átvitelére szolgál · megszakítás (interrupt): az USB nem támogatja a megszakítást, helyette pl. 50 ms-onként lekérdezhető az eszköz állapota. Csomag: · parancs (token): központ küldi az eszköznek o SOF: mindig az első csomag, szinkronizálja az eszközöket o IN (be): adatokat kér az eszköztől. Meg lehet adni, hogy melyik eszköztől milyen adatokra van szükség o OUT (ki): adatok fogadására kéri az eszközt. o SETUP (beállítás): konfigurálja az eszközt. · adat (data): 64 bájt információ mozgatása akármelyik irányban o SYN: 8 bit szinkronizáció o PID: a csomag típusa (8 bites) o PAYLOAD: hasznos adat o CRC: ciklikus redundancia kód, az adatátvitel helyességének ellenőrzésére (16 bit) · kézfogás (handshake): o ACK: megelőző adatcsomag rendben megérkezett o NAK: átvitel során CRC hiba észlelése o STALL: elfoglaltság jelzése · speciális
38
40. PCI Express PCI Express: egy általános célú kapcsolót biztosít a lapkák összeköttetéséhez soros kapcsolat segítségével. · kapcsoló: a csatoló lapkához kapcsolódik, mindegyik B/K lapkának egyedi összeköttetése van a kapcsolóhoz. · mindegyik kapcsolat két egyirányú csatornából álló pár. · minden eszközt azonos módon kezelnek, keskeny soros kapcsolatot alkalmaznak széles, párhuzamos sín helyett. · bővíthető, egy új B/K eszközhöz nem kell külön csatoló lapka Csomagforgalom: az egyik eszköz adatcsomagot küldhet a másik eszköznek. A csomag fejlécből és hasznos adatból áll. A fejléc vezérlési információkat tartalmaz, így nincs szükség sok vezérlőjelre. Plug & Play: az eszközök futás közben csatlakoztathatók és eltávolíthatók Kapcsolati protokollrendszer: réteges · fizikai réteg: biteket továbbít a küldőtől a fogadónak egy közvetlen kapcsolaton keresztül, a csatornáit sávnak nevezik. · kapcsolati réteg: a csomagok átvitelével foglalkozik. A fejléchez és hasznos adathoz egy sorszámot és CRC-t ad hozzá. · tranzakciós réteg: kezeli a síntevékenységeket, és a kapcsolati réteg által biztosított nyers csomagküldést további szolgáltatásokkal egészíti ki. · szoftverréteg: ezen keresztül kapcsolódik a PCI Express rendszer az operációs rendszerhez. Képes a PCI sín emulálására. CRC: ciklikus redundancia kód, hibajelző kód, ha a számított és a kapott CRC megegyezik, akkor nyugtázza a rendszer, különben újrakéri az adatot. Folyamatvezérlő mechanizmus: megakadályozza a küldő és fogadó eltérő sebességéből eredő adatvesztést.
39
41. PIO B/K lapkák: · UART: egy bájtot tud olvasni az adatsínről, és aztán sorosan továbbítja az eszközhöz (vagy fordítva), programmal konfigurálható (belső regiszterének beállításával) o szélesség: 8 bit o sebesség: 50-19200 bit/s o paritás ellenőrzést tud: páros, páratlan, kikapcsolt állapotú · USART: különböző protokollok szerinti átvitelt tud kezelni o szinkron és aszinkron módon is tud működni o az UART lapka minden funkcióját meg tudja valósítani PIO: egy központi egységben futó program 0-t, vagy 1-et tud írni tetszőleges vonalára, vagy be tudja olvasni bármely vonal állapotát. Nagyfokú rugalmasságot biztosít. · bármilyen TTL (billentyűzet, kapcsoló, nyomtató) kompatibilis eszközhöz tud csatlakozni · aszinkron eszközökhöz „kézfogás” logika van beépítve PIO részei: · 3 port: A, B, C – mindegyik egy 8 bites tároló regiszterhez csatlakozik · 8 db adatsínre csatlakozó vonal · A0-A1: címvonalak a 3 port+állapotregiszter kiválasztására – a címsín két legalsó vezetékéhez van kapcsolva · #CS: lapkaválasztó vonal · #WR/#RD: írás/olvasás jelzése · RESET: alaphelyzetbe állítás Működése: egy portot használhatunk · kimenetként: a központi egység beírja a megfelelő 8 bites számot a megfelelő regiszterbe, ez megjelenik a kimenő vonalakon, ott meg is marad a regiszter újraírásáig · bemenetként: a központi egység csak a megfelelő tárolót kiolvassa
40
42. Valódi-, memóriára leképezett I/O eszköz, teljes-, részleges címdekódolás Címdekódolás: kétféle módszer létezik egy PIO lapka kiválasztására – mint valódi B/K eszköz, vagy mint a memória egy területe Valódi B/K eszköz: külön sínvezetékre van szükség: jelzi, hogy nem a memóriát használjuk Memóriára leképezett B/K eszköz: · 4 memóriabájt: 3-at a három port és 1-et a vezérlőregiszter számára ki kell jelölnünk · EPROM: 2 KB címterületet igényel · RAM: 2 KB-ot igényel a memóriából · PIO: 4 bájtot igényel
Egy lehetséges memóriára leképezés: legyen 64 KB a teljes címterület · EPROM: 0-tól 2 KB-ig terjedő címterületet foglalja el, minden olyan cím, amelynek a legfelső 5 bitje nulla: 0000 0xxx xxxx xxxx · RAM: 32-34 KB közötti területet – hasonlóan az EPROM-hoz, minden olyan cím, amelynek a legfelső bitjei: 1000 0xxx xxxx xxxx (inverterrel megvalósítható) · PIO: memória legfelső bájtját foglalja el – 65532-65535 közötti – cím alakja 1111 1111 1111 11xx Teljes címdekódolás: ha csak CPU, két memórialapka és PIO van, akkor 4 NEM-ÉS-t tartalmazó lapka elegendő, egyébként a felépítése · 4 db nyolc bemenetű NEM-ÉS lapka · 1 VAGY kapu · 1 lapka: amelyen 3 inverter van · csak az EPROM címeinél 0 a legfelső címvezeték → összeköthető a #CS láb és A15 · RAM kiválasztására elegendő 2 bites dekódoló · PIO: minden cím, amely 11-gyel kezdődik Részleges címdekódolás: nem a teljes címet használja · tulajdonság: minden olyan cím esetében, amely a címtartomány alsó felére mutat, az EPROM lesz kiválasztva · túlságosan nagy címterületet köt le → kerülendő
Teljes címdekódolás
Részleges címdekódolás
41
43. Mikroarchitektúra szint, Mic-1, adatút, adatút vezérlése Mikroarchitektúra szint: feladata az ISA (gépi utasítás szint) megvalósítása, erre nincs egységes elv. Az ISA-szint utasításai „függvények”, ezeket egy főprogram hívja meg végtelen ciklusban. Mikroprogram: függvények (mikroutasítások) sorozata, amelyek a mikroarchitektúra szinten valósulnak meg. Feladata az IJVM utasítások betöltése, dekódolása és végrehajtása. Állapot: a mikroprogram változói (regiszterek), amelyek definiálják a számítógép állapotát. Minden függvény megváltoztatja az állapot egy részét. Pl. a PC (utasításszámláló) egy utasítás végrehajtása alatt előrehalad, hogy a következő végrehajtandó utasításra mutasson. IJVM utasítás: rövid és velős, néhány mezőt tartalmaz 1. művkód: azonosítja az utasítást és megmondja, hogy mit csinál 2. operandus mező: nem minden utasításnál létezik, az operandust határozza meg Adatút: a CPU azon része, amely tartalmazza az ALU-t bemeneteivel és kimeneteivel együtt. · 32 bites regiszterek – a legtöbbnek a tartalmát a B sínre lehet irányítani, vezérlőjelek engedélyezik a B sínre való írást, vagy a C sínről való írást · sínek – B egyszerre csak 1 regiszter értékét veheti fel, C értéke egy időben egy, vagy több regiszterbe írható · ALU – tevékenységét 6 vezérlővonal határozza meg, kimenete a léptetőbe vezet · léptető – 2 vezérlővonala van, kimenete a C sínre kerül Adatút vezérlése: 29 jel szükséges, de a B sínre egyszerre csak 1 regiszter írhat – elég 24 vezérlőjel · 9 (4) jel: B sínre írás a regiszterekből · 8 jel: 6 az ALU és 2 a léptető vezérlésére · 9 jel: C sínről regiszterekbe írás · 3 jel: a memória eléréshez · 2 jel: szó íráshoz/olvasáshoz (MAR/MDR) · 1 jel: bájt olvasáshoz (PC/MBR) Adatút ciklus: pontos időzítés szükséges a működéséhez. Az órajel lefutó éle indítja, felfutó éle feltölti a regisztereket a C sínről. Mindegyik ciklus önmagában zárt. 1. MIR feltöltődik a vezérlőtár MPC által mutatott szavával. 2. egy regiszter kikerül a B sínre, ALU és a léptető megtudja, mit kell csinálnia, az Addr mező MPC-be másolódik 3. ALU elvégzi a feladatát, kimenete a léptetőbe töltődik, a C sín, N és Z megkapja az új értékét 4. a regiszterek feltöltődnek a C sínről, kialakul MPC új értéke, memóriaciklus kezdete (rd, wr, fetch): MBR/MDR megkapja az értékét, ha az előző ciklus adatot kért a memóriából wr: memóriába írás MDR-ből a MAR címre rd: memóriából olvasás MDR-be a MAR címről fetch: 8 bites utasításkód betöltése MBR-be a PC címről
42
44. ALU, ALU vezérlése ALU: 6 vezérlővonal és 2 bemenet, N és Z · F0 és F1 határozza meg az ALU műveletet · ENA és ENB engedélyezi a két bemenetet · INVA invertálja a bal oldali bementet · INC a legalacsonyabb helyiértékű biten állítja be az „átvitel be” bemenetet 1. A: bal oldali bemenet, a H tartó regiszterhez kapcsolódik 2. B: a jobb oldali bemenet, a B sínhez kapcsolódik, képes betölteni a 9 forrásregiszter bármelyikét · N=1, ha az eredmény<0, különben 0 · Z=1, ha az eredmény=0, különben 0 H feltöltése: olyan ALU művelettel lehetséges, amely a jobb oldali bemenetet csak átengedi az ALU kimenetére. Az eredményt módosítás nélkül küldjük tovább a léptetőn és H-ban tároljuk. ALU kimenetének irányítása: · SLL8: 1 bájttal balra lépteti, feltöltve 0-val a legalacsonyabb helyiértékű 8 bitet · SRA1: 1 bittel jobba léptet, változatlanul hagyva a legmagasabb helyiértékű bitet
46. Mic-1 mikroprogramja Sorba állító: egy-egy ciklusra meghatározza · a rendszerben lévő összes vezérlőjel értékét · következő végrehajtandó mikroutasítás címét Vezérlőtár: egy 512x36 bites csak olvasható memória a gép vezérlő részében · ISA utasítások helyett mikroutasításokat tartalmaz · nem címsorrendben hajtódnak végre a mikroutasítások · nincs olvasó/író jele, mert folyamatosan olvassuk · szüksége van saját memóriacím, és memóriaadat regiszterre MPC (mikroprogram-utasításszámláló) MIR (mikroutasítás-regiszter): tartalmazza az érvényes mikroutasítást, amelynek bitjei meghajtják az adatutat működtető vezérlőjeleket · Addr(=NEXT_ADDRESS): következő mikroutasítás kiválasztását vezérlik · J(=JAM): · ALU: ALU tevékenységének kiválasztása és léptető irányítása · C: betöltetik az egyes regiszterekbe az ALU kimenetét a C sínről · M(=Mem): memóriaműveleteket vezérlik · B: dekódert irányítja, amely meghatározza, hogy mi kerüljön a B sínre
43
45. Memóriaművelet, memória ciklus, Mic-1 mikroutasítása Memóriaművelet: két különböző mód van a memóriával való kommunikálásra Szócímzésű memóriaport: 32 bites, MAR és MDR vezérli · feladata: ISA szintű adatszavak olvasása és írása · MAR (memóriacím regiszter): szócímeket tartalmaz. Nem kapcsolódik a B sínre, nincs engedélyező jele. · MDR (memóriaadat regiszter): MAR által mutatott címen található adatszót tartalmazza olvasás során Bájtcímzésű memóriaport: 8 bites · feladata: végrehajtható ISA szintű program olvasása, nem képes írni a memóriába · PC (programszámláló) vezérli: bájtcímet tartalmaz · MBR (memóriabájt regiszter): PC által mutatott címről beolvasott memóriaszó az alsó 8 bitjébe kerül, 32 és 8 bites forrásként is viselkedhet. Két móddal kapuzható a B sínre (2 vezérlőjel határozza meg) 1. MBR: tartalma előjel kiterjesztéssel kerül a B sínre (előjelbitjének a B sín felső 24 bitjére történő másolása) 2. MBRU: tartalma előjel nélküli kiterjesztéssel kerül a B sínre Valódi fizikai memória: bájtszervezésű, de trükkel megvalósítható a szószervezésű memória is. Szócím=4*bájtcím, a túlcsorduló bitek elvesznek. Memória ciklus: · az adatút végén kezdődik (a C sínről a regiszterek feltöltése után), ha a memóriaolvasás jel be van állítva. · ha a memóriacímet módosította az aktuális mikroutasítás, akkor a memóriacím a módosított MAR, illetve PC regiszter értéke lesz. · a memóriaadat csak két ciklussal később használható az ALU-ban, mert MDR és MBR csak a következő adatút ciklus vége felé töltődik fel a memóriából, addig a régi értékük érhető el Mikroutasítás: 36 bites = 24 bit (adatutat 1 ciklusra vezérli) + 9 bit (NEXT_ADDRESS) + 3 bit (JAM), minden mikroutasítás előírja, hogy melyik fogja követni · Addr (9): a lehetséges következő mikroutasítás címének megadásához · JAM (3): a következő mikroutasítás kiválasztásának módját határozza meg · ALU (8): az ALU és a léptető tevékenységei · C (9): kiválasztja, hogy melyik regiszterbe írjunk a C sínről · Mem (3): memóriatevékenységek · B (4): kiválasztja a B sín forrását, 9 bitről 4 bitre van dekódolva
44
47. MPC új értékének kialakulása Következő mikroutasítás címének kiszámítása: MPC akkor töltődik be, amikor az órajel magas, majd MIR feltöltődik az MPC által mutatott vezérlőtárbeli szóval 1. NEXT_ADDRESS mező az MPC-be másolódik, és a JAM mező vizsgálat alá kerül 2. ha a JAM egy, vagy több bitje be van állítva: · JAMN=1: N flip-flop OR kapcsolattal kerül az MPC legmagasabb bitjére · JAMZ=1: Z flip-flop OR kapcsolattal kerül az MPC legmagasabb bitjére · JAMN=1=JAMZ: mindkettő OR kapcsolattal kerül oda Magas bit: F = (JAMN AND Z) OR (JAMN AND N) OR NEXT_ADDRESS[8]
3. ha JMPC=1: az MBR 8 bitje bitenkénti OR kapcsolattal kerül az aktuális mikroutasítás NEXT_ADDRESS mezőjének legalsó 8 bitjével, az eredmény MPC-be másolódik Ha a JAM mező értéke 000, akkor nincs teendő, a NEXT_ADDRESS másolása után MPC a következő mikroutasításra mutat. Kezdődhet az új mikroutasítás végrehajtása. Többutas elágazás: MBR és NEXT_ADDRESS közötti OR művelettel valósulhat meg. A 256 cím bármelyike előírható, és kizárólag az MBR-ben lévő bitek határozzák meg. Feltétlen ugrás az MBR-ben tárolt címre: goto(MBR) vagy goto(MBR OR 0x100)
45
48. IJVM, memória modellje IJVM: A JVM egész értékű aritmetikát tartalmazó része. Mikroarchitektúrán futó mikroprogram, amely értelmezi az ISA szintet. Másik neve a makroarchitektúra. Mikroprogram: betölti, értelmezi és végrehajtja az IJVM utasításokat, ez a betöltésvégrehajtás ciklus IJVM utasítások szerkezete: rövidek és velősek 1. mező: az opcode (műveleti kód) 2. az esetleges második mezőben az operandus meghatározására szolgáló adat van Verem: lokális változóknak fenntartott memóriaterület, ezen belül a változók nem kaphatnak abszolút címet. · LV: regiszter, amely a lokális változók kiindulópontjára mutat · SP: regiszter szintén, amely a verem tetején található szóra mutat · veremműveletek: verembe betesz, veremből kivesz Operandusverem: operandusok és az eredmény ideiglenes tárolására használható egy aritmetikai kifejezés kiszámolása alatt. Pl. a1=a2+a3
Memória modellje: a memória két módon látható, 4 GB-os bájtszervezésű, vagy 1 GB-os szószervezésű · konstans mező: konstansokból, sztringekből, mutatókból áll. A program betöltődése után nem változik meg. A CPP implicit regiszter a konstans mező első szavának címét tartalmazza. Erre a területre IJVM program nem írhat. · lokális változók mezője: egy metódus minden hívásakor lefoglalódó terület, a lokális változók tárolására. Az elején vannak a paraméterek, amelyekkel a metódust meghívtuk. LV tartalmazza a lokális változók mezőjében az első hely címét. · operandus verem: közvetlenül lokális változók mezője fölött található. SP implicit regiszter tartalmazza a verem legfelső szavának címét. A megvalósításban ez a TOS regiszterben található. · metódus mező: az IJVM programot tartalmazza. PC tartalmazza a betöltendő utasítás címét.
CPP, LV, SP: szavakra vonatkozó mutatók, növelésük 1-gyel és olvasás kezdeményezése a következő szó betöltését eredményezi.
46
PC: bájtokra vonatkozó mutató, növelése 1-gyel és olvasás kezdeményezése a következő bájt betöltését eredményezi. OPC: ideiglenes, firkáló regiszter. Nincs előre meghatározott feladata. IJVM utasításkészlete: minden utasítás egy műveleti kódból és néha egy operandusból áll. · változót verembe tevő: o LDC_W: konstans mező o ILOAD: lokális változók mezője o BIPUSH: utasítás · változót veremből kivevő: ISTORE - lokális változók mezőjébe tárolás · logikai, aritmetikai műveletek: verem két felső szavát használják operandusként, az eredményt a verembe visszateszik o IAND, IOR o IADD, ISUB · elágazási utasítások: az utasításban a műveleti kódot követő eltolás mértékével módosítják PC értékét o GOTO: feltétel nélküli o IFEQ, IFLT, IF_COMPEQ: feltételes · verem két felső szavának megcserélése: SWAP · verem felső elemének megkettőzése: DUP · verem felső elemének eltávolítása: POP · másik metódus meghívása: INVOKEVIRTUAL · metódusból kilépés: IRETURN – vezérlést visszaadja annak a metódusnak, amelyik hívta
47
49. IJVM megvalósítása Mic-1-en MAL (Micro Assembly Language): szimbolikus nyelv, amely teljesen leírja a műveleteket. Egy sorban olyan tevékenység van, amely 1 óraciklus alatt lezajlik. Minden egyes ciklus alatt bármelyik regiszter írható, de csak 1, viszont több regiszter is kaphatja ugyanazt az értéket. SOURCE (bármelyik B sínre kötött regiszter): MDR, PC, MBR(U), SP, LV, CPP, TOS, OPC ALU A oldala lehet: +1, 0, -1, H DEST (bármelyik C sínre kapcsolt regiszter): MAR, MDR, PC, SP, LV, CPP, TOS, OPC, H Műveletek: · wr: memóriába írás MDR-ből a MAR címre. · rd: memóriából olvasás MDR-be a MAR címről. · fetch: 8 bites utasításkód betöltése MBR-be a PC címről. Előkészület: a gép indulásakor PC a végrehajtandó utasítás címét, MBR az utasítás kódját tartalmazza. Főciklus: legelső mikroutasítása a Main1, PC=PC+1; fetch; goto(MBR) · PC a végrehajtandó utasítás címét · MBR az utasítás kódját tartalmazza. PC a végrehajtandó utasítás utáni bájtra mutat, ez lehet egy újabb utasítás kódja, vagy operandus. PC új értékének kialakulása után indul a fetch-csel kezdeményezett memória ciklus, ez a program következő bájtját olvassa MBR-be. goto (MBR): elugrik az utasítás feldolgozásához. Minden mikroutasítás tartalmazza a rákövetkező címét. Csak akkor kell feltüntetni, ha az nem a következőként írt mikroutasítás. NOP (No OPeration): nem csinál semmit, ennek a kódja 0x00, ezért a 0x00 címen kezdődik a NOP feldolgozását végző függvény. Ez egyetlen goto Main1 mikroutasítás. Minden utasítás feldolgozását végző függvény első mikroutasítása az utasítás kódnak megfelelő címen van a mikroprogram tárban.
48
50. WIDE utasítás hatása és működése Mic-1-en WIDE: utasítás prefixum. Önmagában nem csinál semmit, csak jelzi, hogy a következő utasításnak 16 bites indexe van. Pl.: · ILOAD varnum lokális változó a verembe, varnum a lokális változó 8 bites indexe · WIDE ILOAD varnum: lokális változó a verembe, varnum a lokális változó 16 bites indexe w_iload1 címe = iload1 címe + 0x100
Dekódolása: a szokásos módon dekódolódik, amely a wide 1-hez vezet, ami kezeli a WIDE opcode-ot 1. wide 1: elhozza az opcode utáni első byte-ot, mert a mikroprogram logikája mindig elvárja azt, hogy ott legyen. VAGY művelettel összekapcsolja a 0x100-t az opcodedal, mialatt az MPC-be teszi 2. egy második többirányú elágazás történik, ezúttal a WIDE-ot követő byteot használva elküldésre A WIDE ILOAD/ISTORE: különböző mikrokódot követel, mint az ILOAD/ISTORE, a második többirányú ág nem használhatja az opcode-t célterület címnek, mint ahogy azt a Main 1 teszi. Hatások: · minden WIDE utasításkód 256-tal (azaz 0x100-zal) magasabb címen kezdődik a vezérlő tárban, mint a megfelelő reguláris opcode · az indexet két egymás utáni index byte összefűzésével kell megkonstruálni, ahelyett, hogy csak 1 byteon végeznénk előjel-kiterjesztést · PC-t kétszer kell megnövelni az utasítás végrehajtása során, hogy az a következő utasítás kódjára mutathasson Összefűzés: részletekben kell végrehajtani 1. az index első bájtját H-ba másolni, és 8 bittel balra tolni 2. MBR-en egy 0 feltöltést hajtunk végre, MBRU-t használva 3. az index második byte-ját hozzáfűzzük és az eredmény H-ban marad Innentől kezdve a művelet pontosan ugyanúgy folytatódhat, mint ha 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 wideiload 4-től az iload 3-hoz. ILOAD megnöveli azt egyszer; a WIDE-ILOAD is megnöveli egyszer.
49
51. Feltétlen és feltételes elágazó utasítás megvalósítása Mic-1-en Feltétlen ugrás (goto): goto offset · PC értékéhez hozzá kell adni az előjeles offset értékét · a következő végrehajtandó IJVM utasítás címe: elágazó utasítás címe + előjeles 16 bites eltolás · nem lehetséges az elágazás: ha 16 bitnél távolabbi címkéhez vezet Pl: · goto Main1 – az Addr mezőbe Main1 címét kell írni. · kapcsoló utasítás: feltétlen ugrás MBR szerint. Ilyenkor JMPC=1 goto (MBR OR value,) value általában 0 vagy 0x100. Feltételes elágazás: 3 utasítása van az IJVM-nek erre – IFLT, IFEQ, IF_COMPEQ IFLT: kivesz egy szót a veremből, és ugrik, ha negatív · kidob egy szót a veremből · iflt1: az új verem tetejét beolvassa és tárolja TOS-ban · iflt2: a vizsgálandó szót OPC-be menti átmenetileg · iflt3: az új verem-teteje szót MDR-ből TOS-ba másolja · iflt4: az OPC-ben tárolt szót átfuttatja ALU-n, anélkül, hogy tárolná, de az N bit tárolódik · elágazást is tartalmaz: ha N=1, akkor T-t választja (goto2-nél folytatódik), különben F-et (utasítás maradék részének átlépése és következő utasítással folytatás) IFEQ: · IFLT logikáját követi, de Z bitet használja N helyett · Ha Z=0, T 0x092 címen folytatódik, ha Z=1, akkor F 0x192 címen · T és F eltérése mindig 0x100 (256) IF_COMPEQ: · IFEQ logikájával egyezik meg · if_compeq3: második operandust beolvassa, amelyet H-ba tárol · if_compeq4: OPC-be menti az aktuális verem-teteje szót · if_compeq5: új szót TOS-ba teszi · if_compeq6: hasonló ifeq4-hez
50
52. Utasításbetöltő egység, Mic-2 Az ALU-t szinte minden ciklusban sokféle műveletre használjuk az utasításbetöltéssel, és a mezők összerakásával az utasítás valódi munkáján felül. Főciklus átlapolása: ALU felszabadítása némely műveletektől IFU (utasításbetöltő egység): egy ALU-tól független egység, betölti az utasításokat a memóriából és feldolgozza · eltávolítja a főciklust, ALU helyett növeli a PC-t · betölti a bájtokat a bájtfolyamból, mielőtt szükség lenne rájuk (fetch) · csökkenti az úthosszt: minden kódot értelmez, kell-e operandus, összerakhatja azokat egy regiszterbe, hogy készen álljanak · a kódtól függetlenül előkészíti a következő 8 és 16 bites részt IFU részei: · MBR1: 8 bites · MBR2: 16 bites · IMAR: memóriacím regiszter, szavakban számlál, 1-gyel növelődik · léptető regiszter: fenntart egy bájtsort a memóriából és továbbítja MBR1, MBR2-be. Ha MBR1-ből történik kiolvasást, jobbra léptet 1 bájtot, ha MBR2-ből, jobbra léptet 2 bájtot FSM részei (véges állapotú gép): az IFU-t erről mintázhatjuk 1. állapotok (7 db kör): egy olyan lehetséges helyzetet ábrázol, amelyben az FSM lehet 2. átmenetek (élek): eseményt ábrázol, háromféle lehetséges · MBR1: bájtot olvasunk MBR1-ből, ezt a léptető regiszterbe tesszük · MBR2: két bájtot olvasunk MBR2-ből, ezt a léptető regiszterbe tesszük · szó betöltve: memóriaszót olvasunk és 4 bájtot a léptető regiszterbe teszünk
IMAR (memóriacím regiszter): memória címzésére használjuk, ha új szót kell betölteni · saját növelő: a fő ALU-ra ezért nincs szükség · módosul, amint a léptető regiszterbe írta a következő 4 bájtot PC csak akkor módosult, ha MBR1 vagy MBR2 olvasása történik. Ha PC értéket kap a C sínről, azt IMAR is megkapja. Ekkor a mikroprogramnak várnia kell a léptető regiszter, MBR1 és MBR2 feltöltésére.
51
Mic-2: · Main1-et eltávolítja · PC növeléséhez nem az ALU-t használja · 8 és 16 bites operandusokat az IFU adja · 3 sínje van: A, B, C · több hardver kell az A sín címzése és IFU miatt · kevesebb mikroutasítás kell, némelyik utasítást jobban felgyorsítja, mint a többit · vezérlés átadáskor várni kell, míg az IFU elkészül (a léptető megkapja az új értékét, MBR1 és MBR2 feltöltése megtörténik) Mic-2 adatútja: 1. A és B sínek feltöltése a regiszterekből 2. ALU és a léptető munkája 3. eredmények tárolása a C sínről Mic-2 utasítások: különböző mértékben gyorsulnak fel, de az átlagos nyereség nagy · LDC_W: 9 utasítás helyett 3 · SWAP: 8-ról 6-ra rövidül · ILOAD: 6 helyett 3 · IADD: 4 helyett 3 · IF_ICMPEQ: sikeres esetben 13 helyett 10, sikertelen esetben 10 helyett 8
54. A végrehajtási út csökkentése: háromsínes architektúra (tematika) Az egyszerű gépek nem gyorsak, a gyors gépek nem egyszerűek. Módszerek, amelyek csökkentik az ISA utasításonkénti mikroutasítások számát (a végrehajtási út hosszát): Az értelmező ciklus és a mikrokód összefűzése: Az utasítások nem mindig vannak teljesen kihasználva. A főciklus eltüntethető minden olyan mikroutasításnál, amely a Main1-hez való elágazással fejeződik be. Itt a főciklus mikroutasítás a sorozat végéhez fűzhető (a következő utasítás kezdete helyett). Ha van meddő ciklusa az utasítássorozatnak, hozzáfűzhető a végéhez a Main1. Ez csak kis vezérlőtárba kerül. Meddő ciklus: egy részciklus az utasításban, amely nem használja ki az ALU-t Háromsínes architektúra: két teljes bemenő sínt biztosítunk az ALU-hoz, egy A sínt, egy B sínt. Minden regiszter eléri mindkét bemenő sínt, így bármelyik két regisztert összekombinálhatjuk egy cikluson belül. Ekkor H-t nem kell használni ideiglenes tárolásra. Egy utasításbetöltő egység (IFU): 52. tételben
52
53. Csővonalas terv: Mic-3 Mic-3: a Mic-2 továbbfejlesztése · IFU-t tartalmaz: előre rendelkezésre bocsájtja az utasításokat · 3 sínje van: A, B, C · 3 tároló minden egyes sín közepén: A, B, C tároló · párhuzamosságot alkalmaz · óraciklus rövidítése: mert a maximális késleltetés rövidebb · az adatút három ciklust (mikrolépést) igényel: minden ciklus alatt használható az adatút összes része Párhuzamosítás: a 3 mikrolépés egyidejűleg végrehajtható 1. A, B tárolók feltöltése a regiszterekből 2. C feltöltése az ALU és a léptető eredménye alapján 3. C tárolása egy regiszterbe Valódi függőség (RAW függőség): egy mikrolépés nem tud indulni, mert egy eredményre vár, ami egy előző mikrolépés még nem hozott létre. Késleltetéssel oldható meg. Elakadás: megáll a végrehajtási folyamat, hogy egy szükséges értéket megvárjon Csővezeték: · gyorsabbá teszi a gépet, még akkor is, ha egyszer függőség miatt le kellett állni · egy utasítás négy óraciklust igényel, de minden egyes óraciklusban egy új utasítás kezdődik, és egy régi befejeződik · egy utasítás egyszerre csak egy hardverszeletet használ, a többi szabad más utasításoknak Hardverszeletek (óraciklusok): 1. IFU betölti az utasítást 2. regiszterek feltöltik A és B tárolót 3. ALU és léptető tevékenysége, C tároló feltöltése 4. C tároló regiszterekbe töltése
53
55. Egy hét szakaszú szállítószalag: a Mic-4 csővezetéke Mic-4: csővezetékezett gép hét szakasszal. Az első három szakasz az adatút órájához köthető. Rövidek a lépések, így magas lehet az órafrekvencia. Önműködően betölt egy bájtfolyamot a memóriából, dekódolja IJVM utasításokká, ROM-ot használva átalakítja az IJVM utasításokat mikroműveletek sorozatává. 1. IFU: előre betölt szavakat a memóriából és kezeli a különböző MBR-eket 2. dekódoló egység: · az IFU adagolja neki a szavakat · belső ROM: az IJVM utasítás műveleti kódjával indexelünk. Minden bejegyzés: IJVM utasítás hossza (ezzel különíti el az utasításkódot és az operandusokat) + index: ezt a mikroműveletek ROM-jába küldi · az operandusokat a léptető regiszterbe teszi, onnan tölti fel MBR1-et és MBR2-t · másik táblázat: megmutatja, hogy a sorba állító egységben lévő ROM melyik címén kezdődnek a kódhoz tartozó mikroműveletek · az egyes IJVM utasításokat megvalósító mikroműveletek egymás után vannak a ROM-ban, az utolsónál a Final bit=1 (nincs NEXT_ADDRESS mező) 3. sorba állító egység: IJVM utasítások sorozatát átalakítja mikroműveletek sorozatára Működése: A ROM-ból a RAM-ba másolja a mikroműveleteket, amint van hely a RAM-ban. Ha Final=1, akkor megáll. Nyugtázó jelet küld a dekódolónak, ha nem volt feltéles mikroelágazás (Goto=0). Mikroelágazások: Néhány IJVM utasítás (pl. IFLT) elágazást kíván. Ezek külön mikroműveletek, amelyeknél Goto=1, és tartalmazzák a JAM biteket is. Goto: arra szolgál, hogy a sorba állító egység le tudja állítani a további utasítások dekódolását · ha egy mikroelágazás sikeres, akkor a sorbaállító egység a művelet átmásolásakor nem küldi el a nyugtázás jelet a dekódoló egységnek. A csővezeték ekkor nem folytatódhat. „Tiszta lapot” kell csinálni az IFU-ban, a dekódolóban és a sorba állító egységben. Ezután az offset-nek megfelelő címtől folytatódik a betöltés. · ha az ugrás feltétele nem teljesül, akkor a dekódoló megkapja a nyugtázó jelet, és a következő utasítással folytatódhat a dekódolás. MIR(1-4): a sorbaállító egység mikroműveletei táplálják. Jeleket küldenek az adatút vezérléséhez. Az adatutat 4 független MIR vezérli. Minden óraciklus kezdetekor MIR feltöltődik a fölötte lévőből, MIR1 pedig a RAM-ból. 4. MIR1: az A és B mezőket használjuk a regiszterek A, B tárolókba töltésére 5. MIR2: ALU mezőjét használjuk 6. MIR3: a C mezőben az eredmények regiszterbe írását vezéreli 7. MIR4: M mezővel a memóriaműveletet vezérli
54
56. Elágazás, eltolási rés, statikus, dinamikus elágazás jövendölés Probléma: A csővezeték jellege miatt a betöltő egységnek kell eldöntenie, hogy honnan töltse be a következő utasítást, mielőtt még tudná, hogy milyen utasítást kapott legutoljára. Legkorábban a dekódoló veheti észre, hogy ugró utasítást kell végrehajtani, de addigra a következő utasítás már a csővezetékben van annak ellenére, hogy logikusan nem kellene. Eltolás rés (delay slot): az elágazó (ugró) utasítás utáni pozíció. Az elágazás végrehajtásakor bizonyos utasítások már a csővezetékben vannak. · Pentium 4: bonyolult hardver gondoskodik a csővezeték helyreállításáról · UltraSPARC III: az eltolás résben lévő utasítás végrehajtásra kerül. A felhasználóra (fordítóra) bízza a probléma megoldását, a legrosszabb esetben NOP utasítást kell tenni az ugró utasítás után. Ha az elágazás jövendölés helyes, a végrehajtás éppen a célcímnél folytatódhat. Megoldási lehetőségek rossz jövendölésre: a legtöbb gép, ha talál egy feltételes elágazást, megjövendöli, hogy végre kell-e hajtani, vagy sem 1. triviális: a visszafelé irányulót végre kell hajtani, az előre irányulót nem 2. feltételes elágazás esetén a gép tovább futhat a jövendölt ágon, amíg · nem ír regiszterbe, vagy · csak „firkáló” regiszterekbe ír Statikus elágazás jövendölés: nem futásidőbeni jövendölés, fordítóprogram segítségével. A hardver azt teszi, amit a fordítóprogram mond. Az elágazási előzmények táblában nem szükséges hely bizonyos utasításokhoz. 1. UltraSPARC III: rendelkezik olyan utasításkészlettel is, amely tartalmaz bitet a jóslásra. A fordító ezt a bitet beállítja, a betöltő egység teszi, amit az utasítás mond. 2. a processzor visszafelé ugrások bekövetkeztére számít, az előre ugrásokra nem 3. az elágazás viselkedésének megfigyelése, majd ennek az információnak a fordítóprogramba táplálása Dinamikus elágazás jövendölés: futásidőbeni jövendölés, bonyolult hardverrel. Elágazás előzmények tábla: a CPU tartja fent, amelyben feljegyezhetők és kikereshetők az előforduló feltételes elágazások. Hasonló jellegű, mint a gyorsító tár, lehet több utas is. 1. egy jövendölő bit: megtörtént-e az elágazás, amit legutóbb végrehajtottunk? Minden bejegyzésben szerepel. 2. két jövendölő bit: mi várható, és mi volt legutóbb? A „várható” bitet csak két egymás utáni helytelen jövendölés után írja át. 3. legutóbbi célcím: a legutóbb tárolt célcímre történik ugrás, ha az a jövendölés, hogy lesz elágazás 4. elágazási előzmények blokkos regisztere: az utolsó k feltételes elágazást figyeli meg (k bites szám), hogy végre kellett-e őket hajtani, függetlenül attól, hogy melyik utasítás volt az. Ha a k bites szám megegyezik a táblázat valamely bejegyzésének a kulcsával (találat), akkor az ott talált jövendölést használja.
55
57. Sorrendtől eltérő végrehajtás, szuperskaláris architektúra, függőségek, regiszterátnevezés Szuperskaláris architektúra: a dekódoló egység az utasításokat mikroutasításokra darabolhatja. Az S3 fázis lényegesen gyorsabban tudja előkészíteni az utasításokat, mint ahogy az S4 fázis végrehajtja őket. Legegyszerűbb, ha a mikroutasítások végrehajtási sorrendje megegyezik a betöltés sorrendjével, de ez nem mindig optimális. Függőség: ha egy utasítás írni/olvasni akar egy regisztert, akkor meg kell várnia azon korábbi utasítások befejezését, amelyek ezt a regisztert írni/olvasni akarták. Az utasítás nem hajtható végre, ha: · RAW (valódi) függőség: onnan akarunk olvasni operandust, ahova még nem fejeződött be egy korábbi írás · WAR függőség: olyan regiszterbe szeretnénk írni az eredményt, ahonnan még nem fejeződött be egy korábbi olvasás · WAW függőség: lyan regiszterbe szeretnénk írni az eredményt, ahova még nem fejeződött be egy korábbi írás RAR függőség nincs: nincs akadálya, hogy onnan olvassunk, ahonnan egy korábbi olvasás még nem fejeződött be. Függőségek nyilvántartása: eredményjelzővel, amely regiszterenként egy-egy számláló, hogy hányszor használják a végrehajtás alatt lévő mikroutasítások a regisztert olvasásra/írásra. Biztosítja: · az utasítások indítása és befejezése az eredeti sorrendben történjék · ne boruljon föl az írások sorrendje · pontos megszakítás: a gép állapota bármikor helyreállítható Pl. ha a dekódoló ciklusonként két utasítást tud kiosztani végrehajtásra, az n. ciklusban dekódolt utasítás végrehajtása legkorábban az (n+1). ciklusban kezdődhet, és az (n+2)-ben fejeződik be, de a szorzás csak az (n+3)-ban. Sorrendtől eltérő végrehajtás: az utasításokat sorrendtől eltérően lehet kiosztani és befejezni · ki kell bővíteni az eredményjelzőt: nyomon követi azokat a tárolásokat, amiket az átugrott utasítások végeznek · nem lehet kiosztani azokat az utasításokat, amelynek operandusa egy olyan utasítással tárolódik, ami a sorban előtte van, de átugrottunk → függőben hagy, majd később visszatér rá Regiszterátnevezés: a dekódoló egység regiszterek tucatjait használja regiszterátnevezéssel. · egy táblázat képezi le a látható regisztereket titkos regiszterekre, a kapcsolatok gyakran változnak a végrehajtás során · kiküszöböli a WAR és WAW függőségeket
56
58. Feltételezett végrehajtás Feltételezett végrehajtás: kód végrehajtása, mielőtt még tudnánk, hogy szükség lesz-e rá. Támogatás szükséges a fordítóprogramtól, és némi architekturális bővítés. Alapblokk: lineáris kódsorozat, tetején egy belépési ponttal, alján egy kilépéssel. Nem tartalmaz vezérlési szerkezetet. Sokszor rövid, nincs elegendő párhuzamosság, hogy hatékonyan kihasználjuk. Emelés: egy utasítás előre hozatala egy elágazáson keresztül, és regiszterbe töltése. Lassú műveletek esetén nyerhetünk vele. Ha valamit nem biztos, hogy meg kell csinálni, de nincs más dolga a gépnek, akkor megteheti, de csak „firkáló” regiszterekbe írhat. Ha később kiderül, hogy kell, akkor átírja az eredményeket a valódi regiszterekbe, ha nem kell, elfelejti. Feltételezett végrehajtás mellékhatásai: · fölösleges gyorsító sor csere. Megoldás: SPECULATIVE_LOAD - megpróbálja a betöltést a gyorsító tárból, ha nincs ott, akkor feladja. · if(x>0) z=y/x; Az osztást a feltétel ellenőrzése előtt végzi el a processzor (emelés), x=0 esetén csapda következik be 0-val való osztás miatt. Megoldás: mérgezés bit. Mérgezés bit. Emelés esetén a csapda csak akkor következik be, ha az emelt műveletet tényleg végre kell hajtani.
57
59. Pentium 4 processzor, logikai lábkiosztása-(tematika) Pentium 4: mélyen csővezetékezett gép, RISC magja, 8 látható regisztere van, · felülről kompatibilis az I8088-Pentium III-mal, · 55 M tranzisztor, 3,2 GHz, 478 láb · 32 bites gép, 64 bites adat sín · szuperskaláris gép: megengedi a sorrenden kívüli végrehajtást is · gépi utasításokat RISC-szerű mikroutasításokra bontja, több mikroutasítás futhat egyszerre · NetBurst architektúra: két fixpontos ALU-val rendelkezik. Mindkét ALU kétszeres órajel sebességgel fut. · 2-3 szintű belső gyorsítótár o L1: 8 KB adat, 4 utas halmazkezelésű, írásáteresztő, 64 bájtos gyorsítósor o L2: 256 KB-1 MB, egyesített 8 utas halmazkezelésű, késleltetve visszaíró, 128 bájtos gyorsítósor · IFU: előre betöltő egységet használ · többszálúság használata: többszörözött regiszterkészlet, olyan, mintha több CPU működne egyszerre · szimatolás: többprocesszoros rendszerekben. Figyeli a sínen a többi processzor memóriához fordulásait, kiszolgálja a gyorsítótárból, ha lehetséges. · 5 állapota van: teljesen aktívtól a mély alvásig – bizonyos funkcionalitások tiltottak a közbenső állapotokban Logikai lábkiosztás: · sín ütemezés: o BPRI#: magas prioritási igény o LOCK#: sínfoglalás több ciklusra o BR0#: normál prioritású igény · kérés: o A#: 8 bájtos adat 36 bites címe (64 GB címezhető), o ADS#: a cím érvényes o REQ#: kívánság · válasz: o RS#: státus o TRDY#: a szolga tud adatot fogadni o BNR#: WAIT · adat: o D#: 8 bájtos adat o DRDY#: az adat a sínen van o DBSY#: a sín foglalt · RESET#: a CPU alapállapotba hozatala · megszakítások: régi vezérlő és APIC (fejlett programozható megszakításvezérlő) · különböző tápfeszültségek · hővezérlés: jelzés 130 fok felett · órajel: rendszersín frekvenciája · diagnosztika: rendszer tesztelése · alvási állapotok 58
60. Pentium 4 memóriakezelése-(tematika), mikroarchitektúrája Pentium 4 memória sín: csővezetékszerű, egyszerre 8 tranzakció is folyhat Tranzakció: memóriaigény, 6 állapota van, Csővezeték: 6 fázisú, minden fázis független a többitől. Nincs mindegyikre szükség minden egyes tranzakcióhoz. Amint a mester megkap valamit, elengedi a vonalakat. 1. sínütemezési fázis: eldől, hogy melyik sínmester következik 2. kérési fázis: címet fel lehet tenni a sínre, kérést lehet indítani 3. hibajelzési fázis: a szolga hibát jelez(het), ha paritáshibát talált a címben 4. szimatolási fázis: egyik CPU figyeli a többit 5. válaszfázis: sínmester megtudja, hogy meg fogja-e kapni az adatokat 6. adatfázis: megérkeznek a kért adatok Mikroarchitektúrája: 1. memória alrendszer: · egyesített L2 gyorsítótár: 256 KB az 1., 512 KB a 2., 1 MB a 3. generációs P4-ben. Halmazkezelésű, késleltetve visszaíró, 128 bájtos gyorsítósora van. · előre betöltő egység: megpróbálja betölteni a gyorsítósort a főmemóriából az L2be mielőtt arra szükség lenne 2. bemeneti rész: · betöltő/dekódoló egység: betölti az utasításokat az L2 gyorsítótárból, és RISCszerű mikroműveletek sorozatára bontja · nyomkövető gyorsítótár: 1. szintű utasítás-gyorsítótár. A dekódolt utasításokat tartalmazza, nincs szükség másodszori dekódolásra · µROM: ha több mint 4 mikroművelet szükséges. · elágazásjövendölő 3. sorrenden kívüliséget vezérlő egység: · ütemező: nyomkövető gyorsítótárból kerülnek ide a programnak megfelelő sorrendben. Sorrendtől eltérő utasításkiosztás, regiszterátnevezés történik itt. · befejező egység: pontos megszakítás követelménye miatt az előírt sorrendbe helyezi az utasításokat 4. végrehajtó egység: egész, lebegőpontos, speciális műveleteket hajtja végre
59
61. Netburst csővezeték Bemeneti rész: feladata, hogy betöltse az utasításokat a memóriából és előkészítse a végrehajtást. · dekódoló egység: utasításokat L2-ből kapja. Ezeket RISC szerű mikroműveletekre bontja, és a nyomkövető gyorsító tárban tárolja · L1 BTB: utolsó 4K feltételes elágazást tárolja. · nyomkövető gyorsítótár: 12K mikroműveletet tartalmaz, 6 mikroműveletet csoportosít minden sorba · mikrokód ROM: ha egy ISA utasítás több mint 4 mikroműveletet igényel, innen keresi ki a hardver · nyomkövető BTB: megjósolja, hogy hova fognak ugrani az elágazó műveletek Sorrenden kívüliség vezérlő: 12K mikroműveletet tartalmaz · ROB (átrendező puffer): ciklusonként 3 mikroművelet kerül ebbe a táblába, 128 bejegyzést tartalmazhat. WAR és WAW függőségeket a 120 firkáló regiszter segítségével kiküszöböli. RAW függőség esetén a mikroműveletet várakoztatja, a rákövetkezőt kezdi feldolgozni · memóriasor, nem memóriasor: a ROB teszi a mikroműveleteket ide, ha készen állnak a végrehajtásra · ütemezők: az utasítások a programnak megfelelő sorrendben kiveszik a sorokból az utasításokat. Eltérő sorrendben kezdődhet a végrehajtásuk. Végrehajtó egység: · regisztergyűjtők: 128 regiszter tartalmaznak, időben változik a funkciójuk · ALU-k: órajel kétszeresével dolgoznak, nehéz folyamatos munkát adni nekik 1. egész aritmetikájú: logikai, aritmetikai, elágazó műveletek 2. összeadó, kivonó, léptető, forgató utasítás végrehajtása 3. lebegőpontos műveletek elvégzése Befejező egység: biztosítja, hogy az utasítások a programnak megfelelő sorrendben fejeződjenek be · L1: 4 utas, halmazkezelésű, írásáteresztő adatgyorsítótár · pontos megszakítás: a megszakítás előtti összes utasítás befejeződött, az utána következőkből egy sem kezdődött el. · tárolás utáni betöltés: ha egy betöltő utasítás L1-ből akar olvasni, ahova egy korábbi utasítás írt akkor a tárolások pufferéből megkaphatja a kért adatot
60
62. Ultrasparc II processzor, logikai lábkiosztása-(tematika), memóriakezelése-(tematika) UltraSparc III: 64 bites RISC gép · felülről kompatibilis a 32 bites SPARC V8 architektúrával és az UltraSPARC I, II-vel · új VIS 2.0 utasításkészlet: 3D grafikus alkalmazásokhoz, tömörítéshez, hálózat kezeléshez, jelfeldolgozáshoz · többprocesszoros alkalmazásokhoz készült, az összekapcsoláshoz szükséges elemeket is tartalmazza · 1.2 GHz frekvencián működő órajel, ciklusonként 4 utasítás elvégzését tudja indítani · CPU: 29 millió tranzisztor · 4 CPU közös memóriával használható. · 1368 láb, 64 bit cím (jelenleg csak 43) és 128 bit adat lehetséges · L1: 32 KB utasítás, 64 KB adat, gyorsító sor 32 bájt méretű · 2 KB előre betöltő és tároló gyorsító tár L2 eléréséhez. · L2: osztott gyorsítótár, külső 1, 4 vagy 8 MB, gyorsító sor mérete 64, 256, 512 bájt, címzéséhez 13-18 bit szükséges. A CPU mindig 18 bites Line címet ad át. Csak maximális méret esetén van kihasználva mind a 18 bit címzésre. · 64 bit-es cím, de 44 bit-re van korlátozva o Tag: 25 bit o Line: 13 bit o bájt cím: 6 bit Cím: · 16 MB-os tár esetén 18 bites Line kell, a gyorsító tárban tárolt 20 bites Tag-et a gyorsítótár kiegészíti Tag Line 5 legmagasabb helyértékű bitjével. · az adat címe a gyorsítósor címén (Line) kívül még 2 bitet tartalmaz, mert egy átvitel során a gyorsító sornak csak negyedrésze mozgatható.
Memóriakezelés: több írást és olvasást tud egyidejűleg kezelni · UPA (Ultra Port Architecture) interfésszel, hálózati csomóponttal vagy a kettő kombinációjával kapcsolódik egy CPU a memóriához · több CPU: egy központi vezérlőn keresztül kapcsolódnak a sínhez · UDB II (UltraSPARC Data Buffer II): ezen keresztül zajlik a memória és a gyorsító tárak közötti adatforgalom. · adatsín: 150 MHz-es 128 bit széles szinkron sín, sávszélesség 2,4 GB/s
61
64. UltraSparc III mikroarchitektúrája, csővezetéke UltraSparc III: RISC elgondoláson alapul. A legtöbb utasításnak két forrás és egy célregisztere van. · L1-I: 32 KB 4 utas halmazkezelésű, 32 bájtos gyorsítósor. Az utasításkiosztó ciklusonként 4 utasítást tud kiosztani · L1 D: 64 KB-os 4 utas halmazkezelésű, írásáteresztő, 32 bájtos gyorsító sor. · utasításkiosztó egység: 4 utasítást tud előkészíteni óraciklusonként · ugrótábla: 16K bejegyzése van elágazásjövendöléshez, 2 bites statikus elágazásjövendölés · utasításpuffer: 16 elemű, kisimítja az utasítások csővezetékekbe áramlását · lebegőpontos egység: 32 regiszter, összeadó/kivonó, szorzó, osztó ALU, grafikai · egész aritmetikájú egység: 2 ALU, regiszterek, firkáló regiszterek · előre betöltő gyorsítótár: feltételezett betöltésre, 2 KB, visszafelé kompatibilitás miatt hardveresen is · tárolási gyorsítótár: 2 KB, eredmények írásának összekapcsolása, teljesítményt növeli · memóriavezérlő logika: virtuális címeket fizikai címre képezi le o L2 gyorsítótár vezérlő: egyesített L2 gyorsítótárral tartja a kapcsolatot o rendszerinterfész: 128 bit széles sínen kapcsolódik a memóriához
Csővezeték: 14 szakaszból áll 1. A (Address generation): cím generáló. Ugrás, csapda helye. Az eltolás résben lévő utasítást mindig végrehajtja. 2. P (Preliminari Fetch): előzetes betöltő. Legfeljebb 4 utasítást képes betölteni L1 I-ből. Nézi, hogy van-e köztük elágazó, elágazás jövendölés. 3. F (Fetch): befejezi az utasítások betöltését a gyorsítótárból 4. B (Branch target): elágazási cél. Ha kell ugrani, → A-hoz ugrik. 5. I (Instruction group formation): utasítás csoportosító. Aszerint csoportosítja az utasításokat, hogy melyik működési egységet használják. 6. J (instruction stage grouping) utasításkiosztó. Az elérhető működési egységektől függően akár 4 utasítást is továbbít az R szakasznak. 7. R (Register): függőség esetén vár, nincs sorrenden kívüli végrehajtás. 8. E (Execution) végrehajtó. A legtöbb egész utasítás itt befejeződik. Ha egy utasítás készen van, akkor frissül a munka regisztergyűjtő. Itt dől el, hogy az ugrás feltétele teljesül-e. Hibás jövendölés esetén jelzés A szakasznak, a csővezetéket érvényteleníti. 9. C (Cache): gyorsítótár. Itt történik az olvasás L1 D-ből. 10. M (Miss): hiány. L1 hiány esetén L2-höz fordul. Itt történik az előjel kiterjesztés, igazítás, az előre betöltő gyorsítótárból kiszolgálható betöltés. 11. W (Write): író. A speciális egység eredményei a munka regisztergyűjtőbe kerülnek. 12. X (eXtended): kiterjesztett. Itt fejeződik be a legtöbb lebegőpontos és grafikai utasítás. 13. T (Trap) csapda. Észleli az egész és FP csapdákat, pontos megszakítás történik. 14. D: véglegesíti a regiszterek értékét az architekturális regisztergyűjtőben. Megszakításkor az itteni adatok érvényesek. 62
64. I-8051 processzor, mikroarchitektúrája, logikai lábkiosztása-(tematika), memóriakezelése-(tematika) I-8051: memóriával, B/K-lel együtt egyetlen lapkára integrált számítógép. Beágyazott rendszerekben alkalmazzák, mert olcsó, sokoldalú mikrovezérlő. Legnépszerűbb az MCS-51es család. Logikai lábkiosztása: a CPU 40 multiplexelt lábú standard tokban foglal helye · 4 KB belső ROM · 128 bájt belső RAM · Address (16): 64 KB külső memóriát tud megcímezni · Data (8): 8 bites adat sín, adatátvitel a CPU és a memória között · RD#: olvas a memóriából · WR#: ír a memóriába · ALE (Address Latch Enable): külső memória esetén használják, a sínen érvényes a cím · PSEN# (Program Store Enable): olvasás a programot tároló memóriából · EA# (External Access): az értéke állandó o 1: belső címek használata esetén o 0: külső memóriát használja · időzítők (2): külső áramkörről is kaphat jelet, pl. számláló · megszakítások (2): két külső eszköznek megszakítás kérési lehetőség · TXD (Transmitted Data): továbbított adat, modemmel, terminállal soros B/K-t tesz lehetővé · RXD (Received Data): érkezett adat · RST (Reset): gép alapállapotba állítása · port 0-3 (32): 4 db 8 bites csoportba rendezett kétirányú soros vonalak
63
Mikroarchitektúrája: · fősín: regiszterek kapcsolódnak hozzá, melynek többségét az utasítások írni tudják · RAM (128 bájt): adatatok számára fenntartott 8 bites regiszterek o RAM ADDRess: RAM címzéséhez o IR (utasításregiszter): végrehajtás alatt álló utasítást tartalmazza o SP: verem tetejére mutat o B: szorzásnál, osztásnál van szerepe, ideiglenes tárolásra is használható o ACC: fő aritmetikai regiszter, a legtöbb számítás eredménye itt keletkezik o TMP1, TMP2: ALU bemenetei, az eredmény a fő sínről akármelyik regiszterbe kerülhet o PSW (Program Status Word): feltételkódok, amelyek jelzik, ha az eredmény 0, negatív · ROM (4 KB): utasítások számára fenntartott 16 bites regiszterek o ROM ADDRess: ROM címzéséhez o DPTR: dupla szélességű mutató 16 bites címek kezelésére o PC: utasításszámláló, a következőnek betöltendő utasítás címét tartalmazza o PC növelő: automatikusan növeli a PC-t. Nem érhető el a fősínről ez és a PC sem. o BUFFER: beírva, majd kiolvasva PC növelődik · 3 db időzítő (16 bit): valós idejű alkalmazások esetén nélkülözhetetlenek · 4 db port (8 bit): akár 32 külső gomb, lámpa, érzékelő vezérlését teszik lehetővé
Óraciklus: I-8051 szinkronprocesszor, a legtöbb utasítás egy óraciklust igényel. A ciklusnak 6 állapota van: 1. utasítás a ROM-ból a fősínre és IR-be kerül 2. utasítás dekódolása, PC növelése 3. operandusok előkészítése 4. egyik operandus a fősínre, onnan TMP1-be, a másik ACC-ból TMP2-be kerül 5. ALU végrehajtja a műveletet 6. ALU kimenete a fősínre kerül, ROM, ADDR felkészül a következő utasítás olvasására
64
65. Pentium 4, UltraSparc III, I-8051 mikroarchitektúrájának összehasonlítása Mindhárom processzor lelke az utasításkészlet, és 1 vagy több ALU, amely elvégzi az egyszerű aritmetikai és logikai műveleteket a regisztereken. Pentium 4, UltraSparc III hasonlóságai: · végrehajtó egység: olyan mikroműveletet fogad el, amely 1 műveleti kódot, 2 forrásés 1 célregisztert tartalmaz · végre tud hajtani egy mikroműveletet 1 ciklus alatt · nagy tudású csővezeték · elágazásjövendölés · osztott adat és utasítás gyorsítótár Pentium 4, UltraSparc III különbségei: ISA utasítások eljuttatási módja végrehajtó egységhez · Pentium 4: CISC utasításait szét kell bontani, hogy háromregiszteres formátumú legyen. Mic-4-re hasonlít, de sorrend szerinti kiosztás, sorrendtől eltérő végrehajtás, sorrend szerinti befejezés az elve. · UltraSparc III: RISC utasításai vannak, ezeket nem kell dekódolnia, egyetlen adatútciklussal végrehajthatók. I-8051: Mic-1-re hasonlít · inkább RISC, mint CISC típusú: a legtöbb utasítása egyszerű, és szétbontás nélkül végrehajtható 1 óraciklusban · nincs csővezetéke · nincs gyorsítótára · sorrend szerint kiosztás, végrehajtás, befejezés
65
66. Gépi utasítás szint, memória modellek, memória szemantika Utasításrendszer-architektúra szintje (ISA): a hardver és a szoftver határán helyezkedik el. Általában a mikroarchitektúra nem tartozik hozzá. Memóriamodell, regiszterek, adattípusok, utasítások összessége, ezeket a fordítóprogram készítőjének ismernie kell. Nyilvános definíciója van a SPARC és JVM ISA-szintjének, Pentium 4 ISA-jának nincs. A legtöbb gép legalább két módban működhet · kernelmód: operációs rendszer futtatására szánt mód · felhasználói mód: felhasználói programok futtatását célozza, nem minden utasítás érhető el Tervezési szempontjai: · később is jó legyen az architektúra, de addig is piacon kell maradni · rövidebb utasítások: kevesebb helyet foglalnak el, gyorsabban betölthetők · hosszabb utasítások: több lehetséges műveleti kód, nagyobb memória legyen címezhető · bájtcímzés hatékonyabb szövegfeldolgozásnál, szócímzés esetén viszont nagyobb memória címezhető · hatékony hardver megvalósítási lehetőség · kompatibilitás: az új gép módosítás nélkül képes végrehajtani minden régi programot Memória modellek: a számítógép memóriája cellákra van osztva, a cellák címei összefüggő tartományt alkotnak · leggyakoribb cellaméret: 8 bit, az ASCII kód 7+1 paritásbitje miatt. Ez a bájt. · a szavak 4, vagy 8 bájtos csoportba vannak rendezve, hogy az utasítások műveleteket tudjanak végezni rajtuk · szóigazítás: hatékonyabban működhet a memória, de kompatibilitási probléma lehet · néha külön memóriát használnak az adatok és az utasításoknak (Harvard-architektúra), ekkor lehetséges nagyméretű adat és program, és a programot védi a felülírástól
Memória szemantika: lényeges, hogy ugyanarra a címre kibocsátott írás, majd közvetlenül utána olvasás ugyanazt az adatot kezelje. Erre megoldás: 1. kötött sorrendű memóriaműveletek: hatékonyságot rontja 2. definiálatlan sorrend: hatékony megoldás, a hardver segítséget nyújt. Pl. a SYNC utasítás befejeztet minden megkezdett memóriaműveletet, függőség esetén a hardver vár.
66
Regiszterek: program végrehajtásának vezérlése, részeredmények tárolása. A mikroszint legtöbb regisztere nem látható (TOS, MAR), de van közös is (PC, SP). · általános célú: gyakran használt adatok gyors elérése, lokális változók tárolása. RISC gépeknél legalább 32 általános célú regiszter van. Teljesen szimmetrikusak, felcserélhetők, de megegyezés szerint használatosak. · speciális: pl. utasításszámláló (PC), veremmutató (SP) · kernelmód regiszterei: gyorsítótár vezérlés, memóriavédelem, B/K eszközök vezérlése PSW (Program Status Word): kernel/felhasználói mód keverékű regiszter. Feltételkódokat tartalmaz, amelyeket az összehasonlító és elágazó utasítások használnak. · N: eredmény negatív · Z: eredmény 0 · V: eredmény túlcsordulást okozott · C: eredmény bal szélső bit átvitelét okozta · A: átvitel történt a 3. bitről · P: az eredmény paritása · kernel/felhasználói mód jelzése · nyomkövető bit · CPU prioritási szintje · megszakítást engedélyező állapotjelző Utasításkészlet: ez határozza meg, hogy a gép mit csinálhat · LOAD, STORE mindig van: memória és regiszterek közötti adatmozgatás · MOVE: regiszterek közötti adatmozgás · aritmetikai utasítások · logikai utasítások · feltétlen, feltételes elágazó utasítások
67
67. Pentium 4, UltraSPARC III, I-8051 regiszterei, Pentium 4 üzemmódjai Pentium 4: nagyon sok elődje volt, így fontos a kompatibilitás · 4004: 4 bites processzor · 8080: 8 bites processzor · 8086, 8088: 16 bites CPU, 8 bites adat sín · 80286: 24 bites, nem lineáris címtartomány (16 K darab 64 KB-os szegmens) · 80386: IA-32 architektúra, az Intel első 32 bites gépe, lényegében az összes későbbi is ezt használja. · Pentium II-től MMX utasítások Pentium 4 üzemmódjai: · valós: az összes 8088 utáni fejlesztést kikapcsolja, valódi 8088-ként viselkedik. Hibánál a gép egyszerűen összeomlik, lefagy. · virtuális 8086: a 8088-as programok védett módban futnak. Hiba esetén átadja a vezérlést az operációs rendszernek · védett mód: valódi Pentium 4, minden szolgáltatás elérhető. 4 védelmi szint (PSW): o 0: kernelmód (operációs rendszer) o 1, 2: ritkán használt o 3: felhasználói mód Pentium 4 memóriaszervezése: · 16 K db szegmens lehetséges, de az opreációs rendszerek 1 szegmenst támogatnak, és ennek is egy részét az operációs rendszer foglalja el · minden szegmensen belül a címtartomány: 0-232-1 · little endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt Pentium 4 regiszterei: az általános regiszterek 8 és 16 bites részei önálló regiszterként használhatók · EAX: fő aritmetikai regiszter · EBX: memóriacím tárolására általános regiszterek · ECX: ciklusszervezésben van szerepe · EDX: szorzásnál, osztásnál · ESI, EDI: mutatók tárolására, szöveg kezelésre · EBP: keretmutató, verem kezelésre · ESP: verem mutató · EIP: utasítás számláló · EFLAGS: PSW, feltételkódokat tartalamaz · CS, SS, DS, ES, FS, GS: 16 bites regiszterek. A visszafelé kompatibilitást biztosítják. UltraSPARC III: SPARC még 32 bites, a Version 9 már 64 bites architektúra, az UltraSPARC ezen alapul. UltraSparc III memóriaszervezése: · 64 bites lineáris címtartomány. Jelenleg maximum 44 bit használható. · Big endian, de little endian is beállítható. · Load/Store architektúra: csak ezek az utasítások fordulhatnak a memóriához. A többi utasítás operandusa regiszterben vagy az utasításban van és az eredmény is regiszterbe kerül. 68
CWP (Current Window Pointer): mutatja az aktuális regiszter ablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogy a regiszterkészlet, memóriába mentés történik. UltraSparc III regiszterei: · 32 általános: 64 bites, a használatuk részben konvención, részben a hardveren alapul · 32 lebegőpontos: 32 vagy 64 bites, de lehetséges két regiszterben egy 128 bites számot tárolni Regiszter R0 R1-R7 R8-R13 R14 R15 R16-R23 R24-R29 R30 R21
Alternatív név G0 G1-G7 O0-O5 SP O7 L0-L7 I0-I5 FP I7
Funkció Huzalozott 0-t tartalmaz, minden tárolás eredménytelen Globális változók, minden eljárás használhatja Kimenő paraméterek Veremmutató Ideiglenes regiszter Aktuális eljárás lokális változói Bejövő paraméterek Aktuális veremkeret-mutató Aktuális eljárás visszatérési címe
I-8051 memóriaszervezése: · külön címtartományú program- és adatmemóriája van · 4 regiszterkészlete van, de egyszerre csak egy használható · bit-címezhető memória: címzésük: 0-127 · lapkán kívüli bővítési lehetőségek I-8051 regiszterei: bitutasítások szolgálnak a beállítás, törlés, ÉS, VAGY műveletekre és tesztelésre. 8 regiszter van a memóriában (R0-R7). · PSW: átvitel, túlcsordulás, paritás kezelése. RS mező mondja meg, hogy melyik regiszterkészlet az aktuális. · IE (Interrupt Enable): megszakítások regisztere o EA: megszakítás tiltása, engedélyezése o ES: megszakítás engedélyezése a soros vonalon o E0-2: időzítő csatorna engedélyezése o az engedélyezett számlálók egyszerre futhatnak, és ezek megszakítást válthatnak ki. o X0-1: külső eszköz megszakítás engedélyezése · IP (Interrupt Priority): alacsonyabb szintű megszakítást megszakíthatja egy magasabb szintű · TCON: a 0. és 1. időzítőt vezérli, ezek a fő időzítők o O0-1: beáll az időzítő túlcsordulásakor o R0-1: ezzel ki- és bekapcsolható az időzítő futása o a többi bit az időzítő él- vagy szintvezérlésével kapcsolatos · TMOD: a fő időzítők üzemmódját határozza meg 8, 13 vagy 16 bites, valódi időzítő vagy számláló, hardver jelek szintje. A 8052 valódi memóriát tartalmaz a 128255 tartományban, a speciális regiszterek címe átfed a memóriával. Direkt címzéssel a speciális regisztereket, indirekt címzéssel a RAM-ot érhetjük el.
69
68. Három, kettő, egy és nullacímes utasítások Címzés: az a módszer, amely meghatározza az operandusok helyét. A memória sok rekeszt tartalmaz, de csak kevés regiszter van. Egy regiszter néhány bittel címezhető. Regiszterek használata rövidíti a címeket, de nyújtja a programot, ha az operandus csak egyszer kell. Utasításforma: minden utasítás tartalmaz · műveleti kód: megmondja, mit csinál az utasítás · információ az operandusok, eredmény helyéről Utasítástípusok: · regiszter-memória utasítások: a regiszterek és a memória közötti adatforgalom (betöltés, tárolás). 1 regiszter és 1 memória cím megadása szükséges a címrészen. · regiszter-regiszter utasítások: összeadás, kivonás. Az eredmény is regiszterben keletkezik. 3 regiszter megadása szükséges a címrészen. Utasításhossz: némely gépeknél azonos minden utasítás esetén, másoknál különböző hosszúságú lehet. Lehet szóhosszal azonos, de különböző is. · minimalizálásával nehézzé válik a dekódolás, és az átlapolás · finomabb memóriafelbontás ára a hosszabb cím és a hosszabb utasítás Címzési módszerek: implicit operandusok a 2 címestől lefelé · 3 cím: cél = forrás1 + forrás2 · 2 cím: regiszter2 = regiszter2 + forrás1 · 1 cím: akkumulátor = akkumulátor + forrás1 · 0 cím: veremműveletek, pl. az IJVM IADD utasítása Műveleti kód kiterjesztése: · k bites műveleti kód esetén 2k különböző utasítás lehet · n bites címrésznél 2n memória címezhető · fix utasítás hossz esetén egyik csak a másik rovására növelhető Lehetőségek a műveleti kód és egyéb információk hosszánál: · fix utasításhossz: rövidebb kód mellett hosszabb operandus rész · minimális átlagos utasításhossz: a gyakori kódok rövidek, a ritkán használtak hosszabbak. Minden utasítást a lehető legkevesebb biten kódolunk. Menekülő kódokat használva lehetséges ez a megoldás.
Pl. Ha 1111 kódot nem használtuk ki 3 címes utasításnak (menekülő kód), és ez lehetővé teszi, hogy további, 2 címes utasításokat adjunk meg. · 4 bites műveleti kód: 15 db 3 címes utasítás · 8 bites műveleti kód: 14 db 2 címes utasítás · 12 bites műveleti kód: 31 db 1 címes utasítás · 16 bites műveleti kód: 16 db 0 címes utasítás
70
69. Operandus megadás módjai. Közvetlen, direkt, regiszter, regiszterindirekt, indexelt, bázis-index címzés Címzés: a legtöbb utasításnak van operandusa, módszer az operandus helyének megadására Közvetlen operandus: az operandust közvetlenül az utasításban adjuk meg. Automatikusan betöltődik az utasítással. Előnye, hogy nem kíván külön memóriahivatkozást az operandus kiolvasására. Hátránya, hogy így módon csak konstanst lehet megadni. Direkt címzés: a memóriabeli operandus teljes címének megadása. Az utasítás mindig ugyanazt a memóriamezőt érinti: a tárolt érték változhat, a hely nem. Csak olyan globális változók elérésére használható, amelyek címe fordításkor ismert. Regisztercímzés: azonos a direkt címzéssel, de memóriacím helyett regisztert határoz meg. A leggyakrabban használt változókat regiszterekbe töltik a fordítóprogramok. A töltő/tároló architektúrák (UltraSPARC III) majdnem kizárólag ezt a címzési módot alkalmazzák. Tömbelemek összeadására jól használható. Regiszter-indirekt címzés: a címrészen egy regisztert adunk meg, amely memóriacímet tartalmaz, ahol az operandus található. Ez a mutató. Előnye: a hivatkozott memória címét nem kell az utasításban tárolni és a regiszter értékének módosításával a cím változtatható. Indexelt címzés: az operandus címe egy regiszter értéke és egy konstans összege lesz Bázis-index címzés: Néhány gépnél létezik. Hivatkozott memória címe: összeadja két regiszter (bázis+index) tartalmát, és ehhez hozzáad egy eltolási értéket. Előnyös, ha csak egy tömb elemeit akarjuk összegezni. Veremcímzés: 0 címes utasítás lehetséges veremmel kapcsolatban.
71
70. Veremcímzés, fordított lengyel (postfix) jelölés, Dijkstra algoritmusa, postfix alakú formulák kiértékelése Veremcímzés: az operandus a verem tetején van. Nem kell operandust megadni az utasításban. Postfix jelölés (fordított lengyel): a kifejezéseket olyan formában adjuk meg, hogy az első operandus után a másodikat, majd ezután adjuk meg a műveleti jelet. ⋅ infix: x+y ⋅ postfix: xy+ Postfix jelölés előnyei: nem kell zárójel, nincsenek precedencia szabályok. Jól alkalmazható veremcímzés esetén, nullacímes utasításokkal. Dijkstra algoritmusa: infix alakú formulák konvertálása postfix-re. Az infix elemek egy váltóhoz érkeznek. Minden változó és konstans Kaliforniába megy (←), a többi esetben a verem tetejétől függően: ↓: a kocsi Texas felé megy ↑: a verem teteje Kaliforniába megy Ø: a kocsi eltűnik a verem tetejével együtt •: vége az algoritmusnak ?: hibás az infix formula A döntési tábla tartalmazza a prioritási szabályokat. Fordított lengyel jelölésű formulák kiértékelése: ideális számítógépes kiértékelésre verem használatával. A formula n jelből áll, mindegyik vagy operandus, vagy műveleti jel. ⋅ olvassuk a formulát balról jobbra ⋅ jelenként adunk ki egy utasítást ⋅ operandus: rakjuk a verembe ⋅ műveleti jel: hajtsuk végre a műveletet ⋅ a verem tetején van a jobb, alatta a bal operandus Pl.: ⋅ ⋅
infix: (8+2*5)/(1+3*2–4) postfix: 825*+132*+4–/
72
71. Pentium 4, UltraSparc III, I-8051 utasításformái, címzési módjai, orthogonalitási elv-(tematika) - hiányos Orthogonalitási elv: egy jó architektúrában a műveleti kódok és címzési módok majdnem szabadon párosíthatók · utasítások és címzési módok szabályos szerkezetűek, ekkor a fordítóprogramok jó kódot generálnak · minden műveleti mód megenged minden értelmes címzési módot · minden regiszter elérhető regisztermódban A bonyolult címzési módok tömörebb programokat tesznek lehetővé, de nehezítik a párhuzamosítást. Ha a párosítás nem történhet szabadon, akkor jobb, ha csak egy választási lehetőség van, így egyszerűbb hatékony fordítóprogramot írni. Háromcímes elképzelés: 1. típus: aritmetikai utasítások 2. típus: közvetlen adat megadás, index módú LOAD és STORE utasítás 3. típus: elágazó, eljárás hívó utasítások, LOAD és STORE, ezek R0-t használnák Kétcímes elképzelés: A mód 3 bitje lehetővé teszi a közvetlen operandus, operandus, direkt, regiszter, regiszter indirekt, index és verem címzési módokat. Két további mód bevezetésére is lehetőség van. Pentium 4 utasításformái: több generáción keresztül kialakult architektúra. Csak egy operandus lehet memóriacím. ⋅ Prefix, escape: bővítésre ⋅ MOD ⋅ SIB: nem biztos, hogy megéri. Legyen i az EAX regiszterben. Hivatkozás: M[4*EAX+EBP+8] Pentium 4 címzési módjai: nagyon szabálytalan Nem minden utasításban használható minden mód és nem minden regiszter használható minden módban. Nincs EBP indirekt, ESP relatív címzés. 32 bites címzési módjai vannak:
73
UltraSparc III utasításformái: 32 bites egyszerű utasítások 1. aritmetikai utasítások: 1 cél, 2 forrásregiszter 1 cél, 1 forrás regiszter, 1 közvetlen konstans ⋅ LOAD, STORE: csak ezek használják a memóriát. A cím 2 regiszter összege vagy 1 regiszter + 13 bites eltolás. ⋅ processzorokat szinkronizáló utasítás 2. 32 bites közvetlen adat megadása: SETHI - megad 22 bitet, a következő utasítás a maradék 10 bitet 3. ugrások: PC relatívok szót címeznek. Jósló utasításokhoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén. 4. eljárás hívás: 30 bites, PC relatív szót címez UltraSparc III címzési módjai: ⋅ memóriára hivatkozó utasítások: betöltő, tároló, multiprocesszor szinkronizáló o 1a: bázis-index o 1b: index + 13 bit eltolás ⋅ a többi utasítás általában 5 bites regisztercímzést használ I-8051 utasításformátumai:
I-8051 címzési módjai: · implicit: ACC · regiszter: akár forrás, akár cél operandus lehet · direkt: 8 bites memóriacím · regiszter-indirekt: 8 bites memóriacím · indirekt: 16 bites DPTR-rel vagy PC-vel · közvetlen operandus: általában 8 bites, de 11, vagy 16 bites abszolút címet használ ugráshoz, eljáráshíváshoz
74
72. Utasítástípusok, ciklusszervezés Adatmozgató utasítások: adat másolása egyik helyről a másikra. Ekkor létrejön egy új objektum, amelynek a bitképe azonos az eredetivel. Az adatok lehetnek a memóriában, vagy regiszterben. Négy esete lehet a másolásnak, néhány gépnek 4 külön utasítása van a 4 esetre: · LOAD: memóriából a regiszterbe · STORE: regiszterből a memóriába másolás · MOVE: regiszterből regiszterbe történő átvitel · nincs a memóriából közvetlen memóriába közvetlenül mozgató utasítás Diadikus műveletek: 2 operandusú, 1 eredményt szolgáltató műveletek · logikai műveletek: AND, OR, XOR, NOR, NAND · AND művelet egyik fontos alkalmazása bitek kivágása szavakból maszkolással Monadikus műveletek:1 operandusa van, 1 eredményt ad · léptetés: minden bit azonos mértékben balra vagy jobbra léptetődik, a szélen kilépő bitek elvesznek · forgatás: léptetéshez hasonló,a kilépő bitek a másik oldalon bejönnek. · INC: egy szóhoz 1 hozzáadása, az ADD monadikus megfelelője · NEG: a szám additív inverzét adja (NEG(X)=0–X) ami diadikus kivonás, de gyakori, ezért külön monadikus utasítást alkalmaznak. · NOT: a szó minden bitjét ellenkezőjére változtatja Összehasonlító és feltételes elágazó utasítások: elágazás megvalósítására. Megadott feltétel teljesülését ellenőrzi. Ha a feltétel teljesül, akkor elágazás történik megadott memóriacímre. · gép egy bizonyos bitjének 0 vagy nem 0 értéke jelenti a feltételt · CÍMKE: ha a tesztelt bit 1-es, akkor a CÍMKE című utasítás hajtódik végre · N: ha a szám negatív, akkor a feltételes elágazás végrehajtódik, ha 0/+, akkor az azt követő utasítás · Z: ha a szám nulla, akkor feltételes elágazás történik, egyébként az azt követő utasítás hajtódik végre · Eljáráshívó utasítások: az eljárás utasítások olyan sorozata, amely meghatározott feladatot old meg, a program különböző helyeiről hívható. Assemblyben szubrutin, Javaban metódus. Visszatérési cím helye: hívó utasítás tölti be · rögzített hely: nem jó megoldás · eljárás első szava: jobb megoldás, de az eljárás nem hívhatja önmagát, az első visszatérési érték felülírja a másodikat · verem: rekurzív (önmagát is hívható) eljárásokhoz is jó Ismétléses vezérlés: utasítások egy sorozatát adott számszor ismétli meg. Tartalmaz egy számlálót, amelyet minden ciklusmag lefutásakor csökkenti, vagy növeli. A számláló értékét teszteli, ha a megadott feltétel teljesül, az ismétlés véget ér · végfeltételes ismétléses vezérlés: a számlálót ciklusmagon kívül inicializálja, amit a ciklusmag utolsó utasítása aktualizál. Amíg a végfeltétel nem teljesül, ugrás történik 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. A ciklusmagot legalább egyszer mindig végrehajtja. · kezdőfeltételes ismétléses vezérlés: a számlálót a ciklusmagon kívül inicializálja, a ciklusmag első utasítása aktualizálja. Amíg a kezdőfeltétel teljesül, végrehajtódik a ciklusmag. Amint nem teljesül, a ciklus utáni utasításra kerül a vezérlés. Input/output műveletek: programozott I/O, megszakításvezérelt I/O, DMA 75
73. Programozott és megszakításvezérelt I/O, DMA, átlátszóság(-tematika) Input, output (I/O) utasítások: a külvilággal történő információcsere portokon (kapukon) keresztül zajlik. ⋅ kapu: memóriacím, az információcsere erre a címre történő írással, vagy erről a címről olvasással történik ⋅ periféria: egy cím, vagy címcsoport ide kötődik ⋅ végrehajtása lassú ↔ a CPU gyors, a CPU várakozni kényszerül I/O regiszter (port): ⋅ a port és a központi egység közötti információátadás gyors ⋅ a periféria független módon elvégzi a feladatát ⋅ újabb perifériához fordulás esetén a CPU várakozni kényszerülhet Pollozásos technika (tevékeny várakozás): adat és állapotinformációk mozgása valósítja meg a B/K műveletet ⋅ a CPU végtelenített ciklusban lekérdezi a periféria állapotát, amíg nem változik elérhetőre ⋅ a szoftver utasítást ad ki, ha a periféria fogadni tudja ⋅ hatékonysága az éppen futó programtól függ Megszakítás: az éppen futó program végrehajtása átmenetileg megszakad 1. a processzor állapota megőrződik, hogy később folytatódhasson 2. a processzor a megszakításkezelő végrehajtását kezdi meg (egy másik program) 3. miután a megszakítás kezelő elvégezte munkáját: visszaállítja a processzor eredeti állapotát és visszaadja a vezérlést a megszakított programnak Megszakítás vezérelt I/O: az I/O művelet végrehajtása közben a központi egység más feladatot végezhet 1. bizonyos előkészületek után az eszköz megkapja a feladatát és a program futása folytatódik 2. ha az eszköz elkészült a feladatával, akkor beállítja a „Megszakítás engedélyezett” bitet Ez megszakítás kérést eredményez. Megszakítás bekövetkezésekor ez a bit törlődik. 3. a megszakítás kezelő újabb feladatot ad az eszköznek mindaddig, amíg a teljes feladat el nem készült, és visszatér a megszakításból. DMA (direkt memóriaelérő eszköz): önállóan végzi az eszköz figyelését és az adatok mozgatását a sínen keresztül. Pl. tömb kiírásakor hasznos Cikluslopás: ha a DMA lapka sínciklust vesz el a CPU-tól 4 regisztert tartalmaz: a CPU-n futó programmal betölthetők 1. kezdő memóriacímet tartalmazza, amelyiket írni vagy olvasni kell 2. második az átviendő bájtok száma 3. átvitelre kiválasztott eszköz sorszáma vagy B/K cím 4. az átvitel iránya: olvasás/írás
76
Megszakításkezelés: 8-nál több eszköz kiszolgálásához több megszakítás vezérlő kapcsolható össze. Hardver tevékenységek: 1. az eszközvezérlő megszakítás jelet tesz a sínre 2. ha a CPU fogadni tudja a megszakítást, nyugtázza 3. az eszköz vezérlője az eszköz azonosítószámát (megszakítás-vektor) elküldi a sínen 4. ezt átmenetileg tárolja 5. a CPU a verembe teszi az utasításszámláló aktuális értékét és a PSW-t 6. a CPU az azonosító indexű megszakítás kezelő címét teszi az utasításszámlálóba és gyakran betölti vagy módosítja PSW-t Szoftver tevékenységek (terminálra íráskor): 7. menti a használni kívánt regisztereket 8. kiolvassa egy eszközregiszterből a terminál számát 9. beolvassa az állapotkódot 10. ha B/K hiba történt, itt lehet kezelni 11. aktualizálja a mutatót és a számlálót, a kimenő pufferbe írja a következő karaktert, ha van 12. visszajelez az eszköz vezérlőnek, hogy készen van 13. visszaállítja a mentett regisztereket 14. visszatér a megszakításból, itt történik a PSW eredeti értékének visszaállítása is
75. Feltételes végrehajtás, predikáció Predikáció: feltételes elágazások számának csökkentésére való módszer ⋅ predikátum: az utasítások feltételt tartalmaznak. Ez megmondja, hogy végre kell-e hajtani az utasítást. ⋅ minden utasítás egyetlen predikációs utasítássorozatba fésülhető össze, különböző predikátumokat alkalmazva Pl. az if utasítás then ága és else ága egy-egy gépi utasítássorozatba foglalódik, az előbbi a predikátumot, az utóbbi annak inverzét alkalmazza. Feltételes végrehajtás: a predikáció elődje ⋅ új utasítást vezet be, amely feltételt vizsgál ⋅ biztosítani kell: a feltételt már akkor ismerni kell, amikor az utasítás a tényleges végrehajtásba kezd IA-64: predikációt alkalmaz ⋅ minden összehasonlító utasítás beállíthat predikátumregisztert ⋅ minden más utasítás lehet predikációs egy predikátumregiszterre hivatkozva ⋅ ténylegesen végrehajtódik minden utasítás ⋅ a végrehajtási cső legvégében derül ki, hogy a predikátum igaz-e: o igaz: az utasítás befejeződik, az eredmény bekerül a célregiszterbe o hamis: az utasításnak nincs hatása, nem történik visszaírás
77
74. Vezérlési folyamat, szekvenciális vezérlés, elágazás, eljárás, rekurzív eljárás, megszakítás, csapda, korutinok Csapda: a program által előidézett feltétel. Hatására a csapdakezelő eljárás automatikus hívása történik. (Pl. túlcsordulás, csapdát eredményező utasítás) Megszakítás: a vezérlési folyamat eltérítése, amit általában nem a futó program, hanem valamilyen B/K eszköz idéz elő. Ekkor a megszakítás kezelő indul el. Pl. a program utasítja a lemezegységet, hogy kezdje el az adatátvitelt, és annak végeztével megszakítást küldjön. A csapda a programmal szinkronban van, a megszakítás aszinkronban. „Alap” állapot: ekkor történhet megszakítás „Megszakítási” állapot: nem lehet újabb megszakítás Hierarchia: megszakítási állapotban csak magasabb szintű ok eredményezhet megszakítást. Bizonyos utasítások csak a központi egység bizonyos kitüntetett állapotában hajthatók végre, alap állapotban nem → csapda, szoftver megszakítás keletkezik. Multiprogramozás: amíg az I/O be nem fejeződik az operációs rendszer átmenetileg felfüggeszti a program működését, és elindítja egy másik program futását. Vezérlési folyamat: az a sorrend, amelyben az utasítások végrehajtódnak dinamikusan, a program végrehajtása során. Szekvenciális vezérlés: az utasítások abban a sorrendben kerülnek végrehajtásra, ahogy a memóriában elhelyezkednek. Eljárás: az eljáráshívás úgy tekinthető, mint egy magasabb szinten definiált utasítás végrehajtása. Elég, ha azt tudjuk, mit csinál az eljárás, nem lényeges, hogy hogyan. Eljárás: paraméterek, munkaterület tartozik hozzá Rekurzív eljárás: önmagát hívja közvetlenül, vagy más eljárásokon keresztül. Programozott, hogy mikor történik az újrahívása. Veremre van szükség rekurzív eljárás megvalósításához: a hívó és a hívott eljárás paraméterei, és a lokális változók külön területen vannak. LV (Local Variable), SP (Stack Pointer) verem mutató Re-entrant eljárás: többszöri belépést tesz lehetővé, ha az eljárás még nem fejeződött be, amikor újra hívható. Az esetleges újrahívás ideje a véletlentől függ. Különálló munkaterületek biztosítása: re-entrant eljárás esetében ⋅ újabb belépés csak másik processzusból képzelhető el ⋅ minden processzus saját vermet használ Eljárás prológus: a régi veremkeret mutató (FP) elmentése, új veremkeret mutató megadása és a verem mutató (SP) növelése, hogy legyen hely a veremben a lokális változók számára. Eljárás epilógus: visszatéréskor a verem kitakarítása Korutinok: párhuzamos feldolgozás szimulálására alkalmas egy CPU-s gépen
78
76. Operációs rendszer szintje, virtuális memória, overlay technika, kérésre lapozás, munkahalmaz, lapméret, elaprózódás, szegmentálás megvalósítása
Operációs rendszer szintje (Operating System Machine): a programozók rendelkezésére álló, a felhasználói módban használható ISA szintű utasítások és az operációs rendszer által hozzáadott utasítások együttese. Rendszerhívások: ezeket az operációs rendszer eljárásai valósítják meg értelmezéssel Processzus: fut program, és ennek összes állapotinformációja. Memória, regiszterek, utasításszámláló, B/K állapot, stb.) Virtuális memória: kis memória esetén használatos, ennek növelésére alakult ki Overlay (átfedés): a program több része fut ugyanazon a memória területen, mindig az aktuálisan futó rész van a memóriában, a többi rész mágneslemezen van. A programozó dolga a feladat átfedő részekre bontása, és a részek mozgatása a memória és a háttértároló között. Lapozás: átfedések automatikus kezelésének technikája Lapok: beolvasott programrészek Virtuális címtartomány: azok a címek, amelyekre a program hivatkozni tud Fizikai címtartomány: azok a címek, amelyek tényleges memória cellát címeznek. A virtuális és fizikai címtartomány ugyanolyan méretű lapokra van osztva, de a virtuális címtartomány sokkal nagyobb, mint a fizikai. Lapkeret: memóriadarabok, amelyekbe lapokat töltünk be Lapméret: mindig 2 hatványa. 512 bájt - 64 KB (- 4 MB) ⋅ ha egy program k lapon fér el, akkor általában a k. lap nincs tele. ⋅ ha a lap mérete n, akkor programonként átlagosan n/2 bájt kihasználatlan, ez a belső elaprózódás Elaprózódás: elvesztegetett bájtokkal kapcsolatos fogalom ⋅ belső elaprózódás: lap méretének csökkentésével lehet védekezni, de ez a laptábla méretének növekedését eredményezi. A kis lap előnytelen a lemez sávszélességének kihasználása szempontjából is, viszont kisebb a vergődés esélye ⋅ külső elaprózódás (lyukacsosodás): miután egy ideig fut a program a memória szegmensekre, és közöttük lévő lyukakra osztható Laphiány esetén: ha olyan címre történik hivatkozás, amely nincs a memóriában 1. lapkeret tartalmának lemezre mentése 2. a kérdéses lap megkeresése a lemezen. 3. a kérdéses lap betöltése a lapkeretbe 4. a memória térkép megváltoztatása: címek leképezése a betöltött lapkeret címtartományába 5. végrehajtás folytatása MMU (memóriakezelő egység): a virtuális címek fizikai címekre történő leképezését végzi Memória térkép (laptábla): összekapcsolja a virtuális címeket a fizikai címekkel Asszociatív memória: leképezés megoldható vele, de igen drága. Annyi cellás, ahány lapkeret van.
79
Kérésre lapozás: lapozás csak laphiány esetén történik A program egyetlen bájtja sem kell bent legyen a memóriában, csak a másodlagos tárolón. Csak a program elindulásakor lényeges, hogy kérésre lapozást használtunk-e. Munkahalmaz: a legutóbbi k memóriahivatkozásban szereplő lapok halmaza. Az operációs rendszer feladata megállapítani. Vergődés: nagyon gyakori laphiány. Akkor történik, ha a munkahalmaz nagyobb, mint a lapkeretek száma. Időosztásos rendszerekben a kérésre lapozás nem kielégítő, a munkahalmazban lévő a lapok előre visszatölthetők. Lapkezelési eljárások: eltávolítandó lapokat megadó algoritmus, amely helyett az újat be lehet tölteni ⋅ LRU (legrégebben használt): általában jó, de nem jó pl. 9 lapon átnyúló ciklus esetén, ha csak 8 memória lap van ⋅ FIFO (először be, először ki): egyszerűbb, mint az LRU. Csak a módosult (szennyezett) lapokat kell visszaírni, a tisztát nem. Szennyezés bit jelzi, hogy hozzányúltunk-e a laphoz. Szegmentálás: egy fordítóprogramnak a következő célokra kellhet memória: ⋅ szimbólum tábla ⋅ forráskód ⋅ konstansok ⋅ elemzési fa ⋅ verem Rögzített memória felosztás esetén ezek egyike kicsinek bizonyulhat, miközben a többi nem használja ki a rendelkezésére álló tartományt. Szegmens: a programozó számára látható logikai egység, teljesen független címtartományok. ⋅ minden szegmens címtartománya 0-tól valamilyen maximumig terjed ⋅ a szegmens tényleges mérete ennél kisebb lehet. ⋅ egy szegmensben csak egyféle dolgok vannak A program számára a címtartomány kétdimenziós. Szegmentálás megvalósítása: ⋅ lapozással: minden szegmensnek saját laptáblája van. A szegmens néhány lapja a memóriában van. ⋅ cseréléssel: teljes szegmensek mozognak a memória és a lemez között. Ha olyan szegmensre hivatkozunk, amely nincs a memóriában, akkor betöltődik. ⋅ a szegmentált memória előnye: mintha az összes szegmens a memóriában lenne, megcímezhetők átfedésekkel foglalkozás nélkül Összepréselés: idő igényes, de időnként kell ⋅ legjobb illesztés ⋅ első illesztés: gyorsabb és jobb is az általános hatékonyság szempontjából Tárvédelmi lehetőségek: ⋅ kóddal: csak végrehajtható, nem írható, nem olvasható ⋅ konstanssal: csak olvasható 80
77. Pentium 4 virtuális memóriája Pentium 4: ⋅ a szegmens regiszter tartalmazza a szelektort. ⋅ a szelektor indexe választja ki a leírót a lokális (LDT) vagy globális leíró táblából (GDT) ⋅ a 0. leíró használata csapdát eredményez Kódszegmensének leírója: ha P=0, csapda: nem létező szegmens, vagy be kell tölteni a szegmenst. Offset: a szegmens elejéhez viszonyított relatív cím. Ha a szegmens határán túl van, csapda keletkezik. Lapozást tiltó flag (a globális vezérlőregiszter bitje): ⋅ engedélyezett: lineáris cím=virtuális cím ⋅ tiltott: lineáris cím=fizikai cím Lapkönyvtár: ⋅ a 32 bites lineáris címek és a 4 KB-os lapok miatt egy szegmenshez egymillió lap is tartozhat ⋅ minden futó programhoz egy lapkönyvtár tartozik ⋅ minden bejegyzés egy laptáblára mutat, vagy sehova ⋅ lineáris cím A lapkönyvtárnak azokhoz a mutatóihoz, amelyek nem mutatnak sehova, nem kell helyet foglalni a laptábla számára. A táblákban minden bejegyzéshez 32 bit áll rendelkezésre. A mutatókhoz nem használt biteket a hardver az operációs rendszer számára hasznos jelzésekkel tölti ki (védelem, szennyezettség, hozzáférés, …) Speciális hardver támogatja a legutóbb használt lapok gyorsabb elérését. Pentium 4 védelmi rendszere: ⋅ a futó program pillanatnyi szintjét a PSW tartalmazza ⋅ a program a saját szintjén lévő szegmenseket szabadon használhatja ⋅ magasabb szinten lévő adatokhoz hozzáfér, de az alacsonyabb szinten lévők kezelése csapdát okoz ⋅ más szinten lévő eljárás hívásánál CALL helyett szelektort kell alkalmazni, ez egy hívás kaput jelöl ki ⋅ más védelmi szintre csak szabványos belépési ponton lehet áttérni
81
78. UltraSparc III virtuális memóriája UltraSPARC III virtuális memóriája: ⋅ virtuális cím 64 bites, egyelőre 44 bitre korlátozva ⋅ 44 bitre korlátozva ez a címtartomány folytonos ⋅ fizikai címtartomány maximum 41 bites ⋅ a kód és adat lapokat külön kezeli Lapméret: 8, 64, 512 KB és 4 MB MMU (memóriakezelő egység): 3 szinten dolgozik ⋅ a legutóbb használt lapokat gyorsan megtalálja (hardver). A kód és az adat lapokat teljesen külön kezeli. ⋅ a nem nagyon régen használtakat már lassabban (hardver segítséggel) ⋅ a nagyon régen használtakat csak hosszas keresés után (szoftveres úton) TLB: a legutóbb használt 64 lap bejegyzését tartalmazza Környezet: processzus szám Asszociatív memória: kulcs a keresett virtuális lap és a környezet TLB hiány esetén: csapda és TSB folytatja a keresést (szoftver). TSB: olyan felépítésű, mint egy direkt leképezésű gyorsító tár. Operációs rendszer építi fel, és kezeli a központi memóriában. TSB találat: egy TLB sor helyébe beíródik a kért lapnak megfelelő bejegyzés TSB hiány: fordítótábla alapján keres. Fordítótábla: szerkezetét az operációs rendszer határozza meg. ⋅ tördeléses eljárás: a memóriába töltött virtuális lapok és a nekik megfelelő fizikai lapkeretek sorszáma listákba van helyezve ⋅ ha p-osztva q-t ad maradékul, akkor csak a q-adik listát kell végignézni ⋅ ha ez se találja a keresett lapot, akkor nincs a memóriában Virtuális memória és gyorsító tár: 2 szintű hierarchiája van ⋅ az egész programot lemezen tartjuk, fix méretű lapokra osztjuk ⋅ laphiány: a lapot a központi memóriába tölti az operációs rendszer ⋅ gyorsítótár esetén a központi memóriát gyorsító sorokra osztjuk ⋅ gyorsítósor hiány esetén a gyorsító sort a gyorsító tárba tölti a hardver
82
79. Mágneslemez, winchester, lemezvezérlők Mágneslemez: egy vagy több mágnesezhető bevonattal ellátott alumíniumkorong ⋅ indukciós tekercset tartalmazó író/olvasó fej lebeg a lemez felszíne felett vékony légrésen ⋅ a fej alatt a lemez magnetizálódik, az áram polaritásától függően a mágneses részecskék jobbra vagy balra állnak be Sáv: egy teljes körülfordulás alatt felírt bitsorozat, 5000-10000 sáv/cm Szektor: minden sáv rögzített szektorokra van osztva (tipikusan 512 bájt) ⋅ fejléc előzi meg ⋅ 4096 bit adat ⋅ hibajavító kód Szektorrés: egymást követő szektorok között, hogy az írás ne rontsa el a szomszédos szektort Formázatlan kapacitás: 15%-kal több mint a formázott Formázatlan kapacitás: nem számítja adatnak a fejlécet, ECC-t és a szektorréseket Winchester lemez: légmentesen lezárt ⋅ kezdetben 30 MB fix + 30 MB cserélhető ⋅ átmérő régen 50 cm, mostanában 3-12 cm közötti ⋅ lemezegység: közös tengelyen több (6-12) lemez ⋅ minden felülethez tartozik egy fej és egy mozgatókar, a fejek ugyanarra a sugárirányú pozícióra állnak be ⋅ cilinder: egy adott sugárirányú pozícióhoz tartozó sávok Keresés: a fej megfelelő sugárirányú pozícióba állítása Keresési idő: 5-10 ms, sáv/cilinder keresésnél Forgási késleltetés: a fej kívánt sugárirányú pozícióba beállása utáni szünet. Átlagosan egy fél fordulat ideje, 3-6 ms (60-180 fordulat/sec) Átviteli sebesség: kerületi bitsűrűségtől és fordulatszámtól függ (20-40 MB/sec) ⋅ maximális: az első adatbit beolvasásánál mérhető sebesség ⋅ átlagos: folyamatos adatátviteli sebesség Írássűrűség: ⋅ régen: belül maximális, kifelé egyre kisebb (forgás szög alapján) ⋅ jelenleg: 10-30 zóna, a külső zónákban több szektor van egy sávon Lemezvezérlő: egy lapka, vezérli a hardvert ⋅ nyilvántartja és átcímzi a hibás sávokat ⋅ szoftver parancsokat hajt végre: karmozgatás, READ, WRITE, FORMAT utasítások ⋅ hibafelismerés és javítás ⋅ 8 bites bájtok oda-visszaalakítása bitek sorozatává ⋅ soros-párhuzamos és párhuzamos-soros átalakítás Hajlékony (floppy) lemez: szerviz célokra (karbantartási információk tárolására) találták ki. Az I/O fej hozzáér a lemezhez: gyorsan kopik, ezért leáll, ha éppen nincs feladata. Kb. 0.5 s, míg a lemez felpörög. 83
80. SCSI SCSI (Small Computer System Interface) lemezek: ⋅ cilinderekre, sávokra, szektorokra van osztva ⋅ más az interfésze, mint az IDE-lemeznek ⋅ gyorsabb átvitelt biztosít, és drágább is SCSI sín részei: ⋅ sín ⋅ SCSI vezérlő ⋅ maximum 7 (15) SCSI eszköz csatlakoztatható rá (lemez, nyomtató, CD) Sín: „átmegy” az eszközökön ⋅ minden eszköznek van egy bemenő és egy kimenő csatlakozója ⋅ a visszaverődő jelek kiszűrése miatt az utolsó eszközön a sínt le kell zárni. ⋅ 50 ér, ebből 25 földpotenciálon van: zajtűrés érdekében ⋅ 25 használt ér: 8 adat, 1 paritás, 9 vezérlő, többi tápfeszültség, fejlesztésekre fenntartott SCSI vezérlők és perifériák: 2 üzemmódban működhetnek ⋅ kezdeményező: kiadja a parancsokat ⋅ fogadó: végrehajtja a parancsokat ⋅ a parancsok és válaszok fázisonként követik egymást ⋅ egyszerre több eszköz is aktív lehet ⋅ minden eszköznek 0-7 (15) közötti azonosítója van
81. RAID SLED: egyetlen nagy, drága lemez RAID: olcsó lemezek redundáns tömbje Több lemezt foglal egységbe, és ezeket úgy kezeli, mintha egyetlen nagyobb lemez lenne. A redundancia javítja a megbízhatóságot. ⋅ RAID SCSI vezérlő ⋅ több SCSI lemez RAID szintek (szabványok): 0. nagy blokkok mozgatása gyorsabb. Nem valódi RAID, nincs redundancia. Csoportokból (k db szektor) áll egy-egy szint. Csíkozást használ, körbenjárásos módszerrel osztja szét az adatokat a meghajtók között. 1. írás két példányban. Nagyobb biztonság, gyorsabb olvasás. 2. Hamming kódot alkalmaz (4 adat bit + 3 ellenőrző bit). Nagyobb biztonság és nagy átviteli sebesség. A diszkeknek szinkronban kell forogni. 3. ha egy diszk kiesik, nincs adatvesztés. A diszkeknek szinkronban kell forogni. 4. 4 csoporthoz egy paritás csoport. Íráshoz olvasni is kell mindegyik diszkről. Nagyon leterheli a paritás diszket. 5. elosztja a paritás diszk terhelését 84
81. IDE, EIDE (tematika) Seagate: két meghajtó kezelésére képes vezérlő ⋅ BIOS: lemezvezérlés a feladata, gépi utasításokat ad ki, amelyek feltöltik a lemezvezérlő regisztereit és elindítják az adatátvitelt ⋅ regiszterekbe töltött fej-, cilinder-, szektorcímek alapján számolta ki a címeket ⋅ 20 bites szektorcím, 10 bit a cilinder címzésére → később kevés lett IDE (beépített eszközelektronika): meghajtóba integrált vezérlő ⋅ Seagate kompatibilis: BIOS-hívásokat használt ⋅ a címet a vezérlő fej-cilinder-szektor címre fordítja ⋅ 504 MB-ig volt képes kezelni a lemezegységeket, e felett elkezdtek hazudni a BIOSnak ⋅ átviteli sebesség: 4 MB/s EIDE (Extended IDE): ⋅ LBA (logikai blokk címzés) támogatása: o a szektorokat 0-tól 228-1-ig számozza o a vezérlő az LBA-címeket fej, szektor és cilinder sorszámokká konvertálja ⋅ maximum 128 GB-ig címez ⋅ két csatornája lehet: elsődleges és másodlagos meghajtókkal ⋅ legfeljebb 4 meghajtó lemezegységenként ⋅ támogatta a CD-ROM és DVD meghajtókat ⋅ átviteli sebesség 16.67 MB/s EIDE szabványok: ⋅ ATA-3 (AT kiegészítő): IBM PC/AT-re utal ⋅ ATAPI-4 (ATA-csomaginterfész): 33 MB/s ⋅ ATAPI-5: 66 MB/s ⋅ ATAPI-6: 100 MB/s, 48 bites szektorcímre változtat ⋅ ATAPI-7: korábbi 80 vezetékes szalagkábel helyett 7 vezetékes kerek kábelt alkalmaz o soros ATA átviteli mód: egyszerre 1 bit továbbítása o (PCI express): jobb a légáramlás. o 150 MB/s soros átviteli sebesség, ami 1,5 GB/s fölé fog emelkedni o 5 V helyett 0.5 V: kisebb energiafogyasztású
85
82. Optikus lemezek CD: 1980, Philips, Sony: Red Book. 1. Üveg mesterlemez: írás nagy energiájú lézerrel, üreg (pit, Ø=8µ, ¼λ mély) – szint (land). 2. mesterlemezről negatív öntőforma készül 3. negatív öntőformába olvadt polikarbonát gyantát öntenek. 4. megszilárdulás után tükröző alumínium réteget visznek rá 5. védő lakk réteggel vonják be és erre nyomtatják a címkét Olvasás: kis energiájú infravörös lézerrel. Az üregből visszavert fény rövidebb utat tesz meg, mint az üreg pereméről visszavert, ezért gyengíteni fogják egymást. Spirál: belülről induló 22188 fordulatú kb. 5,6 km hosszú 35 mm-es sávban, kb. 600 menet/mm Jelsűrűség: a spirál mentén állandó. Fordulatszám: 530 és 200 fordulat/perc között változik, hogy a kerületi sebesség állandó legyen (120 cm/s). Ábrázolás: ⋅ 1: üreg-szint és szint-üreg átmenet, ⋅ 0: átmenet hiánya. ⋅ nincs redundancia, javítási lehetőség. CD-ROM: 1984, Yellow Book ⋅ Több szintű hibajavítás: kihasználtság 28% (650 MB) ⋅ szimbólum: 14 biten ábrázol 1 bájtot ⋅ keret: 42 szimbólum, ebből 24 az adat bájt ⋅ szektor: 98 db keret, ebből 16 bájt fejléc ⋅ fejléc: 12 bájt + 3 bájt szektor sorszáma + 1 bájt mód: o mód=1: 2048 adat + 288 ECC bájt o mód=2: 2336 adat bájt ECC: Error Correction Code (Reed-Solomon) Forgási sebesség: 1-szeres (75 szektor/s) – 32-szeres. Keresési idő: több 100 msec, sebesség < 5 MB/sec. 1986: Green Book, multimédiás alkalmazásokhoz CD-R (írható CD): 1989, Orange Book ⋅ spirál: 0,6 µm széles vájat mutatja, ezen egy 22,05 kHz frekvenciájú 0,03 µm amplitúdójú szinusz hullám szolgál a pontos forgási frekvencia ellenőrzésére ⋅ alumínium helyett arany bevonat ⋅ üreg helyett sötét pont ⋅ az eredetileg átlátszó festéket a nagyobb energiára kapcsolt lézer sötétre változtatja ⋅ sáv: az egyszerre felírt szektorok, a felírás több részletben történhet ⋅ minden sávot megszakítás nélkül, folyamatosan kell felírni ⋅ mindig az utolsó katalógus (VTOC) az aktuális Trükk az illegális másolat készítés nehezítésére: szándékosan hibás ECC-k
86
CD-RW (újraírható CD): ⋅ 3 különböző energiájú lézer (törlő, író, olvasó) ⋅ viszonylag drága, és néha hátrány, hogy újraírható DVD (Digital Versatile Disk): sokoldalú digitális lemez ⋅ precízebb mechanika ⋅ kisebb üreg: 0.4 µ (0.8 µ helyett) ⋅ szorosabb spirál: 0.74 µ (1.6 µ helyett) ⋅ vörös lézer: λ=0.65 µ (0.78 µ helyett) ⋅ ezek együtt nagyobb jelsűrűséget engednek meg Kapacitás: 4.7 Gbyte (133 perces video elfér rajta) 4 formátumban gyártják: 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 lézer fókuszálásával választják ki a kívánt réteget. Az alsó réteg kapacitása kicsit kisebb. Blu-Ray: kék lézert használ a DVD-ben használt piros lézer helyett. ⋅ egyoldalas: 25 GB ⋅ kétoldalas: 50 GB Átviteli sebesség: 4,5 MB/s Arra számítanak, hogy le fogja váltani a CD-ROM-ot és a DVD-t.
83. Egér Egér: az egér mozgatása egy mutató mozgását váltja ki a képernyőn. Tetején 1, 2 vagy 3 gomb van. Mechanikus: ⋅ gumi golyó vagy ⋅ két gumikerék az alján ⋅ potenciométerek: változtatható ellenállás ⋅ az ellenállás változását mérve megállapítható, hogy mennyit mozdult el az egér Optikai: ⋅ LED: fénykibocsátó dióda ⋅ rácsozott„asztal”: efelett mozgatják ⋅ fényérzékelő: érzékeli, ha vonal felett halad el Optomechanikus: ⋅ gumi golyó: két egymásra merőleges tengelyt forgat ⋅ résekkel ellátott tárcsák: a tengelyek végén vannak, a réseken áthalad a fény ⋅ LED: fénykibocsátó ⋅ fényérzékelő: fényimpulzusokat számol Működése: bizonyos időnként vagy esemény hatására 3 bájtos üzenetet küld a soros vonalon a számítógépnek, amely kiszámítja az abszolút pozícióját a képernyőn: 1. és 2. bájt: x, y irányú elmozdulás 3. bájt: egér gombok állapota 87
84. Nyomtatók Lézernyomtató: fénymásológépekhez hasonlóan működik ⋅ fényérzékeny anyaggal bevont forgó precíziós henger: nyomtatás előtt 1000 V-ra feltöltik ⋅ nagy a memóriaigénye 1. lézer pásztázza végig a hengert hosszában. A fényt modulálják: világos és sötét pontokat kapnak. Ahol a fény éri a hengert: elveszítik elektromos töltésüket. 2. 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 3. a henger hozzányomódik a papírhoz, átadva a papírnak a festéket 4. a papír felmelegített görgők között halad el, a festék hozzátapad Szürkésítés: szürkeárnyalatos képek nyomtatására ⋅ a képet halftone cellákra bontják: minden cella 0 és 36 közötti fekete pixelt tartalmaz ⋅ a több fekete pixelt tartalmaz cella sötétebbnek látszik Mátrixnyomtató: ⋅ 7-24 elektromágneses aktivizálható tűt tartalmazó nyomtatófej ⋅ nyomtatási minőség javítása: o több tű használata o egymást átfedő körök alkalmaza: vastagított betűk o egy soron többször megy át a fej ⋅ olcsók, megbízhatók, lassúak, hangosak és gyenge grafikus képességűek ⋅ felhasználási területeik: o előre nyomtatott formanyomtatványok o kis papírdarabokra való nyomtatás: pénztárblokkhoz o többpéldányos leporellókra való nyomtatás Tintasugaras nyomtató: ⋅ olcsó, lassú, csendes, jó minőséget állít elő, drága patront használ ⋅ felbontás: 1200-4800 dot/inch ⋅ mozgatható, tintapatront tartalmazó nyomtatófej vízszintesen végighalad a papír előtt ⋅ fej: tintát permetez apró fúvókáiból ⋅ piezoelektromos: speciális kristály van a tintapatron mellett o ezek feszültség hatására összehúzódnak, kitágulnak ⋅ hővezérlésű:festékbuborékos o kis ellenállás van minden fúvókában o ha feszültséget kapcsolnak rá, felhevül, és a vele érintkező festéket elpárologtatja és egy gázbuborékot képez Színkeverés: ⋅ színösszeadás: alapszínekből áll össze ⋅ színkivonás: a komplementer színek + fekete (nehéz előállítani alapszínekből) CYMK (Cyan, Yellow, Magenta, blacK) nyomtatók: komplementer színeket használja RGB (Red, Green, Blue): additív alapszíneket használja színelőállításhoz. Képernyők. 88
Gamut: előállítható színek összessége. A két elv egymásba való átalakítása nehéz lehet. Színes nyomtatók: ⋅ festék alapú: élénk színek, de könnyen fakul ⋅ pigment alapú: nem olyan élénk, nem fakul ⋅ szilárd tintás: meg kell olvasztani a tintát, néha a bekapcsolás után 10 percig is eltart ⋅ viasznyomtató: 4 lapról olvasztja a színes viaszt a papírra. Drága az üzemeltetése. ⋅ festék szublimációs: sokfokozatú fűtéssel szublimált CYMK festék kicsapódik a speciális papírra. Nagyon szép, nem kell szürkésítés.
85. Terminál Terminál: billentyűzet + monitor. Gyakran egybeépített, soros vonalon, telefonhálózaton keresztül van a központi géphez kapcsolva. Billentyűzet: ⋅ eredeti: minden billentyű alatt egy kapcsoló, amely kattanó hangot ad, ha lenyomják ⋅ most: mechanikus kontaktust hoznak létre leütéskor ⋅ rugalmas anyag van a billentyűk és az alattuk lévő nyomtatott áramköri lap között ⋅ billentyű leütésekor: zárul az áramkör Megszakítás: a billentyű leütésekor és felengedésekor keletkezik, Billentyűzet-megszakításkezelő: program, az operációs rendszer része ⋅ kiolvassa a billentyűzet vezérlőregisztereiből a leütött billentyű kódját ⋅ billentyűkombinációk kezelése szoftveres úton történik.
89
86. Megjelenítők CRT (katódsugárcsöves) monitor: soronként állítja össze a raszteres képet ⋅ elektronsugár: eltérítésére elektromos tereket használ, jobbakban mágneses tereket ⋅ elektronágyú: elektronokat bocsát ki, vízszintes irányban keresztben átfut a képernyőn ⋅ eltérítő tekercsek: ágyú alatt és felett van, függőleges irányban mozdítja ⋅ rács: szabályozza a képernyőt érő elektronok mennyiségét, pozitív feszültséget kapcsolva rá az elektronok felgyorsulnak és az ernyőbe csapódva felvillannak, a negatív feszültségről visszapattannak → bitmintázat alakítható ki ⋅ színes monitorban 3 elektron ágyú ⋅ a teljes képernyőt másodpercenként 30-60-szor újrarajzolják Folyadékkristály: nyúlós szerves molekula, de térbeli szerkezete is van. Optikai tulajdonsága a beeső fény irányától, polarizáltságától függ. Elektromos mező felhasználásával az optikai tulajdonság megváltoztatható. LCD (folyadék kristályos) monitor: többnyire hordozható gépeknél ⋅ 2 párhuzamos üveglemez ⋅ elektródák mindkét lemezen – ezek elektromos teret hoznak létre a folyadék kristályban, változtatva a feszültséget kialakítható a kívánt kép ⋅ polárszűrők a képernyő elején és hátulján TN (csavart molekula elrendeződéses) megjelenítő: ⋅ a megvilágító fényt a hátsó polárszűrő vízszintesen polarizálja ⋅ a folyadékkristály függőlegesbe forgatja a polaritást ⋅ az első polárszűrő csak a függőlegesen polarizált fényt engedi át ⋅ feszültség hatására a forgatás csökken vagy elmarad, következésképpen csökken a fényerő Feszültség beállítási módszerek: ⋅ passzív: merőleges vezetékháló o vízszintes és függőleges párhuzamos elektródák o az egyik függőleges vezetékre feszültséget kapcsolva, és impulzust bocsátva egy vízszintes vezetékre a kiválasztott pixel elsötétíthető o az egész képernyőt kirajzolják másodpercenként 60-szor ⋅ aktív mátrix (TFT megjelenítő): o pixelenként kapcsolóelem (vékonyfilm tranzisztor) van, ezeket ki-be kapcsolgatva tetszőleges feszültségminta hozható létre o drágább, de lényegesen jobb képet ad Video RAM-ok: A megjelenítők másodpercenként 60-100 alkalommal frissítik a képernyőt a videomemóriából, ami a videokártyán van. Több képernyőnyi tartalmat is tárolhat. Pixel: képpont, 3 bájtos értékből áll (Red, Green, Blue) Színpaletta (indexelt színelőállítás): 256 elemből álló színkészlet, mindegyik 3 bájtos RGB érték. A pixelekhez csak az elem indexét tárolják. A videomemóriaigényt csökkenti. Nagy sávszélesség: a képernyő kiszolgálásához ⋅ 1600-1200 pixelhez 5,5 MB kell, legalább 25 képkocka/s a folyamatos képhez ⋅ EISA és PCI sín helyett AGP sínt használnak a Pentium II-től kezdve: 32 bit továbbítása 66 MHz-en, sávszélessége 252 MB/s ⋅ AGP verziók: 2, 4, 8x-os sebesség elegendő sávszélességű, nem terheli le a PCI sínt 90
87. Modemek, jelzési, adatátviteli sebesség, kommunikációs vonal Telekommunikációs berendezések: modemek segítségével teremtenek kapcsolatot számítógépek között Modemek: adatátvitel analóg telefonvonalon 1000-2000 Hz közötti (szinuszos) vivőhullám átvihető kis torzulással Moduláció: 1-esek és 0-k sorozata átvihető vele ⋅ amplitúdó: két feszültségszintet használ (egyiket a 0-hoz, másikat 1-hez) ⋅ frekvencia (frekvenciaeltolásos kódolás): feszültségszint állandó, a vivőhullám frekvenciája eltérő 0-k és 1-eseknél ⋅ fázis: vivőhullám fázisa eltolódik minden 1-0, 0-1 váltásnál 180 fokkal ⋅ kombináltan is alkalmazhatók Dibit fáziskódolás: 45, 135, 225, 315 fokos fázisváltás minden oszthatatlan időintervallum kezdetén. 2 bitet lehet vele intervallumonként átvinni. Baud (jelzési sebesség): időintervallumok száma, a lehetséges jelváltások száma/s. Egy jel több bit információt hordozhat. 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. Adatátviteli sebesség: átvitt bitek száma/s Egy bájt továbbítása: start bit, bájt, stop bit Tipikus mai modem: 9600 baud, 28.800 vagy 57.600 bit/sec. Kommunikációs vonal: ⋅ full-duplex: egyszerre kétirányú forgalom, különböző frekvenciát használva ⋅ half-duplex: kétirányú forgalom, de nem egyszerre ⋅ simplex: csak egy irányú forgalom lehetséges
88. ADSL, kábeles internet A hagyományos telefonvonalakat 3000 Hz-es szűrővel korlátozzák. Nélküle elérheti az 1,1 MHz-t. Szélessávú szolgáltatás: eltávolítják a szűrőt, a normál telefonvonalnál nagyobb sávszélességű Digitális előfizetői vonalak: a legnépszerűbb az ADSL (aszimmetrikus digitális előfizetői vonal) ⋅ lokális hurok: az előfizetőktől a telefontársaság központjába futó vezeték ⋅ 256 független kb. 4 kHz-es csatorna ⋅ 0. csatorna: egyszerű régi telefonszolgáltatásra használják ⋅ 1-5. csatorna: nem használják, hogy ne zavarja a telefont ⋅ a maradék 250-ből 1 felmenő, 1 lemenő jelek továbbítására szolgál ⋅ a többi csatorna a felhasználók adatait továbbítja ⋅ általában 32 csatorna van feltöltésre, a többi letöltésre, különböző csatornákon eltérő lehet az átviteli sebesség 91
NID (hálózati interfész): az előfizetőnél szerelik fel Szétválasztó 1: analóg szűrő, leválasztja a telefonvonalat, az adatjeleket ADSL-modemre irányítja ADSL-modem: digitális jelfeldolgozó eszköz, Ethernet-vonalon kapcsolódik a számítógéphez Szétválasztó 2: telefontársaságnál is van egy. A jel hang részét szűri ki, a 26 KHz feletti jeleket a DSLAM-ba küldi. DSLAM (digitális előfizetői vonal hozzáférési multiplexer): digitális jelfeldolgozó egység, csomagokat alakít ki, és az internetszolgáltatóhoz küldi Kábeles internet: Fő telephely: szélessávú üvegszál kábelekkel kapcsolódik a fejállomásokhoz Fejállomás: elektronikával telezsúfolt doboz. Minden fejállomásra koaxiális kábelekkel sok felhasználóhoz csatlakozik. Kábelek: sávszélessége 750 MHz körül van ⋅ 5-42 MHz: felmenő frekvenciák ⋅ 54-550 MHz: lejövő frekvenciák, TV, rádió ⋅ 54-750 MHz: lejövő frekvenciák ⋅ megosztott kommunikáció: a felhasználók többsége adott pillanatban nem használja ⋅ a felmenő csatornákat a lemenőktől eltérően irányítják, ⋅ adatforgalom: részletes protokollok szerint zajlik Minislot: az adatforgalom egy rövid idejű szelete Kábelmodem: internet hozzáférést biztosít, folyamatosan kapcsolatban van a fejállomással. 2 interfész van benne ⋅ számítógép interfész: Ethernet-kártyával csatlakozik a gépre ⋅ kábeltv-hálózat interfész 1. bekapcsolása: ellenőrzi a lejövő csatornákat, speciális csomagot keres, amit a fejállomás küld periodikusan (rendszerparaméterek). Ha megvan, jelez a fejállomásnak, ami kiosztja a felmenő, lemenő csatornáit, és minislotkiosztását meghatározza. 2. távolságbehatárolás: fejállomástól mért távolság, egy csomag kézbesítési idejét leméri 3. hálózati címkérés: dinamikusan osztja ki az internetszolgáltató (ISP) 4. kapcsolat titkosítása, majd bejelentkezés
92