![]() |
. | . | ![]() |
. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TARTALOMJEGYZÉK
Winword 8.0 formátumban Utolsó módosítás: 2001. december 21. Winword 6.0-ban TARTALOMJEGYZÉK ELŐSZÓ 1 BEVEZETÉS 1.1 RENDSZEREZETT SZÁMíTÓGÉP FELÉPíTÉS 2 1.1.1 Nyelvek, Szintek, és Virtuális Gépek 2 1.1.2 A Jelenlegi Többszintű Gépek 4 1.1.3 A többszintű gépek fejlődése 8 1.2 MÉRFÖLDKŐ A SZÁMÍTÓGÉP ARCHITEKTÚRÁBAN 13 1.2.1 Az nulladik generáció - Mechanikus számítógépek ( 1642-1945) 13 1.2.2 Az első generáció - Elektroncsövek ( 1945-1955) 16 1.2.3 A második generáció - Tranzisztorok ( 1955-1965 ) 19 1.2.4 A harmadik generáció - Integrált áramkörök ( 1965-1980 ) 21 1.2.5 A negyedik generáció - Nagyon nagy mértékű integráltság ( 1980-? ) 1.3 A SZÁMÍTÓGÉPEK VILÁGA 24 1.3.1 Technológiai és Gazdasági Erők 25 1.3.2 A Számítógép választék 26 1.4 PÉLDA SZÁMÍTÓGÉP CSALÁDOKRA 29 1.4.1 A Pentium II bemutatása 29 1.4.2 Az UltraSPARC II bemutatása 31 1.4.3 A picoJava II bemutatása 34 1.5 A KÖNYV ÁTTEKINTÉSE 36 2 SZÁMÍTÓGÉP RENDSZER FELÉPÍTÉSE 2.1 PROCESSZOROK 39 2.1.1 CPU felépítése 40 2.1.2 Utasítás végrehajtása 42 2.1.3 RISC és CISC összehasonlítása 46 2.1.4 A modern számítógépek tervezési elvei 47 2.1.5 Utasítás-szintű párhuzamosság 49 2.1.6 Processzor-szintű párhuzamosság 53 2.2 ELSŐDLEGES MEMÓRIA 56 2.2.1 Bitek 56 2.2.2 Memória címzés 57 2.2.3 Byte elrendezés 58 2.2.4 Hibajavító kódok 61 2.2.5 Közbülső cache memória 65 2.2.6 Memória szervezése és típusai 67 2.3 MÁSODLAGOS MEMÓRIA 68 2.3.1 Memóriák hierarchiája 69 2.3.2 Mágneses lemezek 70 2.3.3 Floppylemez 73 2.3.4 IDE lemez 73 2.3.5 SCSI lemez 75 2.3.6 RAID 76 2.3.7 CD-ROM 80 2.3.8 Az írható CD 84 2.3.9 Az újraírható CD 86 2.3.10 DVD 86 2.4 INPUT/OUTPUT 89 2.4.1 Busz 89 2.4.2 Terminál 91 2.4.3 Az egér 99 2.4.4 A nyomtató 101 2.4.5 A Modem 106 2.4.6 Karakter kódok 109 2.5 ÖSSZEFOGLALÁS 113 3 A DIGITÁLIS LOGIKA SZINTJE 3.1 KAPUK ÉS A BOOL ALGEBRA 3.1.1 Kapu 118 3.1.2 A Boole algebra 120 3.1.3 A Bool-függvények megvalósítása 122 3.1.4 Áramkörök egyenértékűsége 123 3.2 ALAPVETŐ DIGITÁLIS ÁRAMKÖRÖK 128 3.2.1 Integrált áramkörök 128 3.2.2 Kombinált áramkörök 129 3.2.3 Aritmetikai áramkörök 134 3.2.4 Idő 139 3.3 MEMÓRIA 141 3.3.1 Kódnyelv 141 3.3.2 Flip-flop 143 3.3.3 A regiszter 145 3.3.4 A memória felépítése 146 3.3.5 Memória lapka 150 3.3.6 RAM és ROM 152 3.4 CPU LAPKA ÉS A BUSZ 154 3.4.1 CPU lapka 154 3.4.2 Számítógép busz 156 3.4.3 A busz szélessége 159 3.4.4 A busz időzítése 160 3.4.5 A busz eljárás 165 3.4.6 A busz műveletek 167 3.5 PÉLDA CPU EGYSÉGRE 170 3.5.1 A Pentium II 170 3.5.2 Az UltraSPARC II 176 3.5.3 A picoJava II 179 3.6 PÉLDA BUSZOKRA 181 3.6.1 Az ISA Busz 181 3.6.2 A PCI Busz 183 3.6.3 Az Univerzális Soros Busz 189 3.7 CSATLAKOZTATÁS 193 3.7.1 I/O Egységek 193 3.7.2 Cím dekódolása 195 3.8 ÖSSZEFOGLALÁS 198 4. A MIKROFELÉPÍTÉS SZINTJE 203 4.1 MIKROFELÉPÍTÉSI PÉLDA 203 4.1.1 Az adat 4.1.2 Mikroutasítás 211 4.1.3 Mikroutasítás vezérlés: A Mic-1 213 4.2 ISA PÉLDA: IJVM 218 4.2.1 Verem 218 4.2.2 Az IJVM memória modell 220 4.2.3 Az IJVM utasítás készlet 4.2.4 Java fordítása IJVM -mé 226 4.3 MEGVALÓSÍTÁS PÉLDA 227 4.3.1 Mikroutasítás és jelölés 227 4.3.2 ILVM megvalósítása Mic-1 segítségével 232 4.4 A MIKROFELÉPÍTÉS SZINTJÉNEK TERVEZÉSE 243 4.4.1 A gyorsaság és a költségek ellentmondása 243 4.4.2 A végrehajtás útjának lerövidítése 245 4.4.3 Előbetöltést alkalmazó tervezés: A Mic-2 4.4.4 Csővezetékes tervezés: A Mic-3 253 4.4.5 Hét-szakaszos csővezeték: A Mic-4 260 4.5 TELJESÍTMÉNY JAVÍTÁSA 4.5.1 Közbülső memória 265 4.5.2 Elágazás becslése 270 4.5.3 Sorrenden kívüli végrehajtás és regiszter újracimkézése 276 4.5.4 Mérlegeléses végrehajtás 281 4.6 PÉLDÁK A MIKROFELÉPÍTÉS SZINTJÉRE 283 4.6.1 A Pentium II CPU mikrofelépítése 283 4.6.2 Az UltraSPARC II CPU mikrofelépítése 288 4.6.3 A picoJava II CPU mikrofelépítése 4.6.4 A Pentium az UltraSPARC és a picoJava összehasonlítása 296 4.7 ÖSSZEFOGLALÁS 298 5 AZ UTASÍTÁS KÉSZLET FELÉPÍTÉSÉNEK SZINTJE ( ISA ) 303 5.1 AZ ISA SZINT ÁTTEKINTÉSE 305 5.1.1 Az ISA szint tulajdonságai 305 5.1.2 Memória modellek 305 5.1.3 Regiszterek 309 5.1.4 Utasítások 311 5.1.5 A Pentium II ISA szintjének áttekintése 311 5.1.6 Az UltraSPARC II ISA szintjének áttekintése 313 5.1.7 A Java Virtuális Gép áttekintése 317 5.2 ADAT TÍPUSOK 5.2.1 Numerikus adat típusok 319 5.2.2 Nem numerikus adat típusok 319 5.2.3 A Pentium II adat típusai 320 5.2.4 Az UltraSPARC II adat típusai 321 5.2.5 A Java Virtuális Gép adat típusai 321 5.3 UTASÍTÁS FORMÁTUMOK 322 5.3.1 Az utasítás formátumok tervezési jellegzetességei 322 5.3.2 Utasítás kódok kiterjesztése 325 5.3.3 A Pentium II utasítás formátuma 327 5.3.4 Az UltraSPARC II utasítás formátuma 328 5.3.5 A JVM utasítás formátuma 330 5.4 CÍMZÉS 332 5.4.1 Címmegadási módszerek 333 5.4.2 Azonnali címzés 334 5.4.3 Közvetlen címzés 334 5.4.4 Regiszter címzés 334 5.4.5 Regiszter indirekt címzés 335 5.4.6 Indexelt címzés 336 5.4.7 Alap-indexelt címzés 338 5.4.8 Verem címzés 338 5.4.9 Az elágazó utasítások címmegadási módszerei 341 5.4.10 Az utasításkódok és a címzési módok merőlegessége 342 5.4.11 A Pentium II címmegadási módszerei 344 5.4.12 Az UltraSPARC II címmegadási módszerei 346 5.4.13 A JVM címmegadási módszerei 346 5.4.13 A címmegadási módszerek áttekintése 347 5.5 UTASÍTÁS TÍPUSOK 348 5.5.1 Adat mozgató utasítások 348 5.5.2 Kétcímű utasítások 349 5.5.3 Egycímű utasítások 350 5.5.4 Összehasonlító és feltételes elágazó utasítás 352 5.5.5 Eljáráshívó utasítások 353 5.5.6 Ciklusvezérlés 354 5.5.7 Input/Output 356 3.5.8 A Pentium II utasításai 359 5.5.9 Az UltraSPARC II utasításai 362 5.5.10 A picoJava II utasításai 364 5.5.11 Az utasításkészletek összehasonlítása 369 5.6 AZ IRÁNYÍTÁS FOLYAMATA 370 5.6.1 Egymást követő vezérlések és eljárások 371 5.6.2 Eljárásmódok 372 5.6.3 Korutinok 376 5.6.4 Csapdák 379 5.6.5 Megszakítások 379 5.7 EGY RÉSZLETES PÉLDA: HANOI TORNYAI 383 5.7.1 Hanoi tornyai a Pentium II Assembly nyelvben 384 5.7.2 Hanoi tornyai az UltraSPARC II Assembly nyelvben 384 5.7.3 Hanoi tornyai a JVM Assembly nyelvben 386 5.8 AZ INTEL IA-64 388 5.8.1 A Pentium II problémája 390 5.8.2 Ai IA-64 Mocell: Egyértelműen meghatározott párhuzamos utasítások 391 5.8.3 Előjelzés 393 5.8.4 Mérlegeléses betöltés 395 5.8.5 A valóság vizsgálata 396
Bevezetés A digitális számítógép egy olyan gép, ami problémákat tud megoldani az embereknek az általuk kiadott utasítások alapján. Az utasítások sorrendjét, mely leírja, hogyan kell végrehajtani egy adott feladatot, programnak nevezünk. Minden egyes számítógép elektronikus áramköre képes felismerni és közvetlenül végrehajtani egyszerű utasítások meghatározott sorozatát. Minden programot a végrehajtás előtt ilyen egyszerű utasításokká kell alakítani. Ezek az alapvető utasítások ritkán bonyolultabbak, mint például az, hogy
munikálni a számítógéppel. Ezt a nyelvet gépi nyelvnek hívjuk. Az új számítógépeket tervező embereknek el kell dönteniük, hogy milyen utasításokat tartalmazzon az új számítógép gépi nyelve. Azért, hogy a szükséges elektronikai berendezések bonyolultságát és árát csökkentsék, általában a lehető legegyszerűbb utasításokat próbálják elkészíteni a tervezők figyelembe véve, hogy mire akarják majd használni a gépet illetve milyen teljesítménybeli követelménynek kell megfelelniük. A legtöbb gépi nyelv nagyon egyszerű, ezért van az, hogy az emberek számára bonyolult és fárasztó dolgozni velük. Ez az egyszerű megfigyelés idővel oda vezet, hogy egy számítógép tervezése, felépítése egy sor absztrakcióra (elvonatkoztatásra) épül, és minden egyes absztrakció egy másikra. Ily módon a komplexibilitás (bonyolultság) megérthető, megismerhető, és számítógépes rendszerek tervezhetők módszeres, rendezett módon. Ezt a megközelítést strukturált számítógép szerkezetnek hívjuk és a könyvben később is így használjuk majd. A következő fejezetben leírjuk, mit értünk ezen a fogalmon. Azután pedig néhány történelmi fejlesztést, állapotot és fontosabb példákat érintünk.
Ahogy fent említettük, nagy távolság van az emberek számára kényelmes és a számítógépek számára kényelmes dolgok között. Az emberek "X"-et akarnak csinálni, a számítógépek viszont csak "Y"-ra képesek. Ez okozza a problémát. Ennek a könyvnek a célja az, hogy megmagyarázza, hogyan is oldható meg ez a probléma. 1.1.1 Nyelvek, szintek, virtuális (látszólagos) gépek A probléma két oldalról közelíthető meg: mindkettő egy új utasítás sorozat tervezését foglalja magába, melynek használata az emberek számára kényelmesebbek, mint a beépített gépi utasításoké. Ezek az új utasítások szintén alkotnak egy nyelvet, melyet L1-nek (Level 1, 1. szint) hívunk, csakúgy, mint a beépített utasítások, melyek nyelvét L0-nak hívunk. A két megközelítés abban különbözik egymástól, hogy az L1 nyelven megírt programokat milyen módon hajtaja végre a számítógép, mely persze csak a saját, Lo nyelvén megírt programként tud értelmezni. Az L1 nyelven megírt program elvégzésének egyik módszere, hogy először minden utasítást helyettesítünk egy megfelelő L0 nyelvű utasítás sorozattal. Az így keletkezett program csak L0 nyelvű utasításokból áll. A számítógép ezután ezt az új L0 nyelvű programot végzi el az eredeti L1 helyett. Ezt a technikát fordításnak nevezzük. A másik eljárás szerint L0 nyelven íródik meg egy program, mely az L1 nyelvű programot bemenő adatként kezel és végrehajtja úgy, hogy minden egyes utasítást sorban megvizsgál és közvetlenül végrehajtja az L0 nyelvű megfelelő utasításokat. Ezen eljárás során nem szükséges létrehozni egy új programot L0 nyelven. Ezt a módszert tolmácsolásnak hívjuk, a program, amely ezt végzi a tolmács. A fordítás, a tolmácsolás hasonló eljárás. Mindkét módszer során az L1 nyelven megírt utasítások elvégzése végül a megfelelő L0 nyelvű utasítások elvégzésével történik meg. A különbség az, hogy a fordítás során az eredeti L1 program először egy L0 programmá lesz alakítva, majd az L1 programot tovább nem is figyelve, az új L0 program töltődik be a számítógép memóriájába és ezt hajtja végre a gép. A végrehajtás során ez az újonnan létrehozott L0 program fut és van a számítógép irányítása alatt. A tolmácsolás során minden egyes L1 utasítás-megvizsgálás és dekódolás után rögtön végrehajtásra kerül. Lefordított program nem is készül. Itt a tolmács-program az, akinek az irányítása alatt van a számítógép. Számára az L1 program csak adat. Mindkét módszert, és egyre inkább a kettő kombinációját, széles körben használják. Ahelyett, hogy a fordítás és a tolmácsolás definícióján (meghatározásán) rágódunk, gyakran sokkal egyszerűbb elképzelni egy feltételezett számítógép vagy virtuális gép létezését, mely gép nyelve L1. Nevezzük ezt a virtuális gépet M1-nek (és az L0-nak megfelelő virtuális gépet M0-nak). Ha egy ilyen gépet elég olcsón lehetne előállítani, akkor egyáltalán nem lenne szükség L1-re vagy olyan gépre, mely L1 nyelven végzi a programokat. Az emberek egyszerűen megírnák a programjaikat L1 nyelven és a számítógép közvetlenül elvégezné. Annak ellenére, hogy a virtuális gép, melynek nyelve L1, túl drága vagy túl bonyolult lenne elektronikus áramkörökből kialakítani, ezért számára az emberek megírhatják a programot. Ezeket a programokat vagy tolmácsolhatjuk vagy lefordíthatjuk egy L1-ben írt programmal, mely maga is elvégezhető egy létező számítógéppel. Más szóval, az emberek ugyanúgy írhatnak programokat a virtuális gépekre, mintha valójában is léteznének. Ahhoz, hogy a tolmácsolás vagy fordítás alkalmazható legyen, az L0 és L1 nyelveknek nem szabad ?túl? különbözőnek lennie. Ez a kényszer gyakran azt jelenti, hogy az L1 bár jobb, mint a L0, messze van az ideálistól a legtöbb esetben (alkalmazásnál). Ez valószínűleg ellentmond az L1 nyelv létrehozásának alapelvének, melynek célja, hogy megkönnyítse a programozóknak az algoritmusok kifejezését egy olyan nyelven, amely jobban megfelel a gépeknek, mint az embereknek. Ennek ellenére a helyzet nem reménytelen. A nyilvánvaló megoldás az, hogy találjunk ki még egy utasítás sorozatot, ami még felhasználó-orientáltabb, és kevésbé gép-központú, mint az L1. Ez a harmadik utasítás sorozat szintén alkot egy nyelvet, melyet nevezzünk L2-nek (a virtuális gépet pedig M2-nek). Az emberek írhatnak programokat L2-ben úgy, mintha egy virtuális gép L2 gépi nyelvvel valójában létezne. Ezek a programok lefordíthatók L1 nyelvre, vagy egy L1 nyelven írt tolmács programmal végrehajthatók. Egész sor, az előzőeknél mindig jobb és jobb új nyelvek kifejlesztése akár a végtelenségig is folytatódhat, míg egy valóban megfelelő el nem készül. Minden egyes nyelv az előző nyelvet, mint alapot használja, így úgy tekinthetjük az ezt a technikát használó számítógépet, mintrétegek vagy szintek összességét, ahogy az (1-1)-es ábra is mutatja. A legalsó szint vagy nyelv a legegyszerűbb, a legfelső a legbonyolultabb. A virtuális gép és a nyelv között egy nagyon fontos összefüggés (kapcsolat) van. Minden gépnek van egy gépi nyelve, mely tartalmazza az összes utasítást, melyet a számítógép el tud végezni. Tehát minden gép meghatároz egy nyelvet. Hasonlóan a nyelv meghatározza a gépet ? azaz azt a gépet, amely az adott nyelven írt programok összes utasítását véghez tudja vinni. Természetesen, egy adott nyelv által meghatározott gép lehet, hogy túlságosan bonyolult és drága lenne elektromos áramkörökből felépíteni, ennek ellenére azért el lehet képzelni. Egy gép, melynek gépi nyelve C++ vagy COBOL, valóban nagyon komplex, de a mai technológiával könnyen elkészíthető. Azonban van egy jó indok, hogy miért ne építsünk ilyen számítógépeket: nem kifizetődő a többi technológiához viszonyítva. Számítógép, mely n szinttel rendelkezik, n különböző virtuális gépnek tekinthető, mindegyik külön saját gépi nyelvvel. A ?szint? és a ?virtuális gép? definícióját felcserélhetően használjuk. Csak az L0 nyelven írt programok végezhetők el közvetlenül elektromos áramkörökkel tolmácsolás vagy fordítás nélkül. Az L1, L2, ? Ln nyelveken írt programokat vagy egy alacsonyabb szinten futó tolmácsprogrammal tolmácsolni kell vagy lefordítani egy alacsonyabb szintnek megfelelő nyelvre. Azoknak az embereknek, akik programokat írnak n szintű virtuális gépekre, ismerniük kell az alap fordító és tolmácsoló programokat. A gép felépítése biztosítja, hogy ezek a programok valahogy végre lesznek hajtva. Az nem lényeges, hogy egy tolmács-program végzi el az utasításokat lépésről lépésre, mely tolmács-programot egy másik tolmács-program hajtja végre, vagy közvetlenül az elektromos berendezések végzik el a feladatokat. Mindkét esetben azonos eredményt kapunk: a programok lefuttatódnak. A legtöbb n-szintű gépet használó programozót csak a felső szint érdekli, az, amelyik a legkevésbé közelíti meg a gépi nyelvet a szintek legalján. Azonban, ha az emberek meg szeretnék érteni, hogyan működnek valójában a számítógépek, meg kell ismerniük az összes szintet. Azoknak az embereknek, akik új számítógépek vagy új szintek (pl.: új nyelvek) készítése, tervezése iránt érdeklődnek, szintén ismerniük kell nemcsak a legfelső szintet, hanem a többi, alacsonyabb szinteket is. A számítógépek, mint különböző szintek sorozatából felépülő gépek, tervezési módszerei, koncepciói, a különböző szintek részletei, leírásai adják ennek a könyvnek a fő témáját.
1-1. ábra : A több-szintű gép 1.1.2 Napjaink több-szintű számítógépei A legtöbb modern számítógép két vagy több szintből áll. Léteznek hat vagy több szintű gépek is, a (1-2). ábra legalján található a gép valódi hardvere. Ennek az áramkörein átközvetítődik az első szint gépi nyelve. A teljesség kedvéért meg kell említenünk egy másik szintet is, amely a mai 0-s szintünk alatt helyezkedik el. Ez a szint nincs feltüntetve az ábrán, mivel ez már az elektromérnökök szakterülete (és ezért ez a könyv nem is tér ki rá). A neve: eszköztár. Ezen a szinten a tervező külön kezeli az egyes tranzisztorokat, melyek a számítógép-tervezők a legegyszerűbb szintű egységek. Ha megkérdeznénk, hogyan működik egy tranzisztor, az egyenesen a térfizikához vezet minket.
1-2. ábra : A hat-szintű számítógép A legalsó szinten, melyet tanulmányozni fognak a digitális logika szintjén, a tárgyakat kapuknak hívják, bár analóg alkatrészekből épülnek fel, mint például: tranzisztorok, a ?kapuk?-at pontosan lehet modellezni, ábrázolni, mint digitális eszközöket. Minden ?kapu?-nak van egy vagy több digitális bemenete (jelek, melyek 1-et vagy 0-át jelenítenek meg) és mint kimenetek ezen bemenetek, olyan egyszerű műveleteket végeznek el, mint az ÉS vagy a VAGY. Minden egyes ?kapu? maximum egy maréknyi tranzisztorból áll. Néhány kapu összerakható úgy, hogy 1 bit memóriát alkosson, mely egy 0-ást vagy egy 1-est képes tárolni. Az ilyen 1-bites memóriákat 16-os, 32-es és 64-es csoportokon lehet rendezni, hogy adattárolót alkossunk. Minden ilyen adattároló egy 2-es (bináris) számrendszerbe tartozó számot tud tárolni bizonyos felső korláttal. A ?kapu?-kat úgy is össze lehet illeszteni, hogy a számító-, számoló-egység magvát alkossák. A ?kapu?-kat és a digitális logikai szintet a harmadik fejezetben tárgyaljuk. A következő szint a mikroösszeállítási szint, ezen a szinten általában 8 és 32 közötti az a szám, melyek az adattároló csoportokat alkotják, melyek a helyi memóriát és egy logikai áramkört képeznek. Bizonyos ALU -t (Arithmetikai Logikai Egység), melyek képesek végrehajtani egyszerű arithmetikai logikát. ***[6-9] Nem érkezett meg. ?Tibor: h938527 ***[10-13] Tóth Éva,10-11.oldal 6. A program végrehajtása megkezdődött.Elég gyakran megesett,hogy nem működött és váratlanul félbeszakadt.Rendszerint a programozó babrált a konzol kapcsolókkal és későn vette észre a konzolfényt.Ha szerencséje volt rájött a hibára és kijavította azt,majd visszatért a kabinethez,ami tartalmazta a nagy FORTAN szerkesztőt,melynek segítségével mindent kezdhetett elölről.Ha kevésbé volt szerencséje kapott a memória tartalmáról egy kiírást,ún. core dump -ot,amit végül otthon áttanulmányozhatott. Ez az eljárás,kisebb változtatásokkal évekig elfogadott volt a számítógép központokban. Rákényszerítette a programozókat,hogy megtanulják hogyan működtessék a gépet és tudják mit tegyenek,amikor elromlik,ami elég gyakran megesett. A gép sokszor állt kihasználatlanul,miközben a szakemberek kártyákkal próbálták megoldani a problémát vagy azon törték a fejüket,vajon a programok miért nem működnek megfelelően. 1960 körül megpróbálták csökkenteni az elvesztegetett idő mennyiségét az operátor munkájának automatizálásával. Az operációs rendszernek nevezett programot állandó jelleggel a számítógépen tárolták.A programozó bizonyos vezérlőkártyákról gondoskodott a programmal együtt, hogy az olvasható és végrehajtható legyen az operációs rendszer segítségével.Az 1-3.ábra egy kártyacsomag(deck) mintáját mutatja be, mely az egyik széles körben elterjedt operációs rendszer, FMS (FORTRAN Monitor System), Az IBM 709-ből. *JOB,5494,BARBARA *XEQ *FORTRAN FORTRAN program { *DATA Data kártyák { *End 1-3.ábra Az FMS operációs rendszer egy minta feladata Az operációs rendszer leolvasta a *JOB kártyát és információt könyvelése céljából használta fel azt. (A csillagjelet vezérlőkártyák azonosítására használták azért,hogy ne tévesszék össze a program és adat kártyákkal.) Ezután a *FORTRAN kártyát olvasta le,mely a FORTRAN szerkesztő számára volt utasítás mágneses szalagról történő betöltéséhez.Ezt követően a szerkesztő beolvasta és megszerkesztette a FORTRAN programot.Amikor a szerkesztés befejeződött visszatért leellenőrizni az operációs rendszert,mely ezután a *DATA kártyát olvasta le.Ez utasítás volt fordító program végrehajtásához,mely használva a kártyákat követte a *DATA kártyát,mint adatot. Bár az operációs rendszert úgy tervezték ,hogy automatizálja az operátor munkáját (innen származik a név) ,az első lépés volt egy új virtuális gép fejlődésében.A *FORTRAN kártya virtuális ?szerkesztő program? utasításnak,míg a *DATA kártya egyszerűen,virtuális ?végrehajtó programnak? tekinthető.A mindössze két utasítással rendelkező szint nem volt túl magas,de ez csak kiindulópont ebbe az irányba. A rákövetkező években az operációs rendszerek egyre bonyolultabbá váltak. Új parancsokkal ,lehetőségekkel és jellegzetességekkel látták el az ISA-szintet,mígnem egy új szint körvonele kezdett kirajzolódni.Ezen új szint parancsai közül néhány azonos volt az ISA-szint parancsaival,míg mások,különösen az input/output parancsok teljesen különböztek tőlük.Az új parancsokat gyakran operating system macro -nak vagy supervisor call -nak hívták.A szokásos szakkifejezés ma a system call . Az operációs rendszerek más irányokba is fejlődtek.Az elsők leolvasták a kártyacsomagokat és az outputot soros nyomtatóval nyomtatták ki.Ezt az elrendezést batch system -nek (kötegelt rendszer) nevezték. Általában több óra várakozási idő telt el ,mire a program engedelmeskedett és az eredmények elkészültek. Ilyen körülmények között igen bonyolult volt a szoftver fejlesztése. Az 1960-as évek elején a Dartmouth College,MIT, kutatói és mások kifejlesztették az operációs rendszereket úgy,hogy engedélyezték a (multi) programozóknak a számítógéppel történő közvetlen kommunikálást.Ezekben a rendszerekben kapcsolták össze telefonvonalakon keresztül a remote terminálokat a központi számítógéppel.A CPU-t sok felhasználó között osztották meg.A programozók begépelhették a programot és majdnem azonnal visszakapták a begépelt Tóth Éva,11-13.oldal eredményeket az irodában,az otthoni garázsban vagy bárhol,ahol a terminált elhelyezték.Ezeket a rendszereket hívják timesharing system -nek (időosztott rendszer). Számunkra az operációs rendszerek azon részei érdekesek,melyek a 3.szintben jelen levő parancsokat és jellemvonásokat interpretálják,de az ISA-szintben nem találhatók meg még az időosztás szempontjából sem. Bár nem fogjuk kihangsúlyozni,mégsem szabad megfeledkezni arról ,hogy az operációs rendszerek többet csinálnak,minthogy sajátságokat interpretálnak,melyeket az ISA-szinthez adtak hozzá. A feladatkör átváltozása mikrokódba Egyszercsak a mikroprogramozás egyszerűvé vált (1970-re), a tervezők rájöttek arra,hogy mindössze a mikroprogran kiterjesztésével képesek új utasításokat hozzákapcsolni. Más szavakkal, képesek ?hardvet? (azaz új gépi utasításokat) programozással hozzáadni. Ez a felfedezés "virtuális robbanáshoz" vezetetta gépi utasítású készülékek terén, amikor a tervezők egymással versengve hoztak létre nagyobb és jobb utasítású gépeket.Ezen parancsok közül sok nem volt lényeges,abban az értelemben,hogy eredményük könnyebben megvalósítható volt létező parancsokkal, de gyakran némileg gyorsabbak voltak,mint a létező parancsok sorozata. Például sok gépnek volt egy INC (INCrement) nevű utasítása,mely minden számhoz hozzáadaott egyet. Amióta ezek a gépek rendelkeznek az általános ADD utasítással is ,ami olyan speciális parancs, mely hozzáad egyet (vagy akár 720-at) szükségtelenné vált.Bárhogyanis, az INC általában kicsit gyorsabb volt, mint az ADD , így ezt alkalmazták inkább. Sok egyéb utasítást is hozzáadtak a mikroprogramhoz hasonló okokból.Ezek gyakran tartalmaztak: 1.Egész értékű szorzásra és osztásra való parancsokat. 2.Lebegőpontos aritmetikai utasításokat. 3.Műveletekbe való hívásra és műveletekből való visszatérésre vonatkozó parancsokat. 4.Kapcsolás felgyorsítására vonatkozó utasításokat. 5.Karakterláncok kezelésére való utasításokat. Ráadásul egyszercsak a géptervezők rájöttek , hogy milyen egyszerű új utasítások hozzáadása, így elkezdtek újabb tulajdonságok után kutatni , amiket hozzáadhattak saját mikroprogramjukhoz.Néhány példa arra,hogy mit tartalmaznak ezek a kiegészítések: 1.Tulajdonságokat,melyek felgyorsítják a számításokat tartalmazva azok sorrendjét (megjelölés és közvetett címzés) 2.Tulajdonságokat,melyek engedélyezik a programok memóriába történő átmozgatását, miután elindították őket (áthelyezési lehetőségek) 3.Félbeszakító rendszerek, melyek jelzik a számítógépnek,amint egy input/output művelet befejeződött 4.Egy program megszakításának és egy másik elindításának lehetősége kevés utasítással (eljárás kapcsolás) Sok más tulajdonságot és lehetőséget is hozzáadtak az évek során, néhány különleges tevékenység felgyorsításának érdekében. A mikroprogramozás kiküszöbölése A mikroprogramozás virágzó korszakában nagyon elszaporodtak a mikroprogramok (1960-as és 1970-es évek). A probléma csak az volt ,hogy elterjedésükkel egyidejűleg egyre lassabbá váltak. Végül náhány kutató rájött,hogy a mikroprogram kiküszöbölésével , az utasítássorozat leredukálásával és a megmaradó parancsok közvetlen végrehajtásával (azaz a hardver felügyeli az adatok útvonalát) fel lehet gyorsítani a gépeket. Bizonyos értelemben a számítógép terv teljes kört tett meg , majd visszakanyarodott, mielőtt Wilkes elsőként feltalálta a mikroprogramozást. Tóth Éva,13.oldal A vita tárgy megmutatni , hogy a hardver és a szoftver közötti határvonal korlátlan és állandóan változik.A mai szoftver lehet, hogy a holnapi hardver, és viszont.Továbbá a különböző szintek közötti határok is változatlanok még. A programozó szemszögéből az,hogy egy utasítás hogyan megy végbe tulajdonképpen lényegtelen (kivéve talán a sebességet).Az ISA-szinten programozó használhatja a sokszoros parancsot , mintha hardver parancs lenne anélkül,hogy aggódnia kellene felőle, vagy tudatában lenni annak , hogy vajon valóban hardver utasítás-e. Ami az egyik személynek hardver az a másiknak szoftver.Mindezen témára még vissza fogunk térni ebben a könnyvben. 1.2. Mérföldkövek a számítógép architektúrában A modern digitális számítógép fejlődése során százával terveztek és építettek különböző típusú számítógépeket.A legtöbb már rég feledésbe merült,de néhány közülük lényeges hetással volt a modern eszmékre.Ebben a fejezetben röviden vázoljuk a történelmi fejlődés kulcsfontosságú lépését annak érdekében, hogy jobban megértsük, hogyan jutottunk el a jelenlegi állapotokhoz. Szükségtelen mondani, hogy ez a fejezet csak felületesen érinti a kiemelkedő mozzanatokat és sok kérdést nyitottan hagy.Az 1-4.ábra néhány mérföldkő jelentőségű gépet sorol fel , melyeket ebben az időszakban fejlesztettek ki.A Slater (1987) című könyv sok jó információt ad további történelmi jelentőségű személyekről, akik megalapozták a számítógép korszakát.A számítógép korát megalapozó személyekről szóló,Morgan által gazdagon illusztrált könyvben (1997) a rövid életrajzokat és szép színes képeket Louis Fabian Bachrach készítette.Másik életrajzi könyv pedig a Slater (1987). 1.2.1. A Nulladik Generáció-Mechanikus Számítógépek (1642-1945) Az első személy, aki működő számítógépet konstruált, a francia tudós, Blaise Pascal (1623-1662) volt,akinek a tiszteletére adták a programnyelvnek a Pascal nevet.Ezt a készüléket Pascal 1642-ben, 19 éves korában készítette azért, hogy édesapjának segítsen, aki adóbeszedő volt a francia kormánynál.A szerkezet teljesen mechanikus volt , melyet fogaskerekek működtettek és kézi hajtású indítókarral lehetett üzembe helyezni. Pascal gépe csak összeadni és kivonni tudott, de harminc évvel később a nagyszerű német matematikus, Baron Gottfried Wilhelm von Leibniz (1646-1716) konstruált egy másik mechanikus gépet, mely már szorozni és osztani is tudott.Ennek következményeként Leibniz három évszázaddal ezelőtt megalkotta a mai értelemben vett négy-műveletes zsebszámológép megfeleőjét. 150 évig semmi nem történt, amikoris a University of Cambridge matemetikus professzora, Charles Babbage (1792-1871), a sebességmérő feltalálója megtervezte és megépítette a difference engine -t. Ezt a mechanikus készüléket, mely a Pascal-éhoz hasonlóan csak összeadni és kivonni tudott, úgy tervezte, hogy kiszámolja a számtáblákat, melyek igen hasznosak a tengerészeti kormányzásnál. ***[14-17] 14.old.
1.4 ábra. : A modern digitális számítógépek fejlődésének néhány mérföldköve A gép teljes megépítése azon alapult, hogy egy egyszerű algoritmust futtatott, a ?véges differenciálás? eljárását polinomokat használva. A differenciálmotor legérdekesebb vonása a kiviteli eljárása volt: az eredményeket egy réz gravírozott lemezbe ütötte egy acél tűvel, ezzel előrevetítve a későbbi egyszer írható információhordozókat, mint pl. a lyukkártya és a CD-ROMok. Bár a differenciálmotor meglehetősen jól működött, Babbage gyorsan ráunt a gépre, amely mindössze egy algoritmust tudott futtatni. Elkezdte egyre több idejét és családja vagyonának (nem beszélve a 17000 fontról a kormány pénzéből) nagy részét arra áldozni, hogy megtervezze és megépítse az analitikai motornak nevezett utódot. Az analitikai motornak négy alkotóeleme volt: a tároló (memória), a központi egység (számítást végző egység), a bemeneti egység (lyukkártya-olvasó) és a kimeneti egység (a lyukasztott és a nyomtatott adatok). 15.old. A memória 50 tízes számrendszerbeli számjegyű szóból állt, és mindegyik változókat és eredményeket tartalmazott. A központi egység elő tudta hívni az operanduszokat a tárolóból, azután összeadta, kivonta, szorozta vagy elosztotta őket egymással , majd az eredményt visszajuttatta a tárolóba. A differenciálmotorhoz hasonlóan ez is teljesen mechanikus volt. Az analitikai motor óriási előrelépését az jelentette, hogy általános rendeltetésű volt. Beolvasta az utasításokat a lyukkártyáról, és végrehajtotta azokat. Néhány parancs arra utasította a gépet, hogy hívjon elő 2 számot a tárolóból, vigye őket a központi egységbe, végezze el rajtuk a műveleteket (pl. adja őket össze), és az eredményt olvassa be a tárolóba. Más utasítások meg tudtak vizsgálni egy számot, és bizonyos feltételek mellett osztályozni tudták őket aszerint, hogy pozitív vagy negatív. Ha a bemeneti kártyára más programot lyukasztottak, akkor az analitikai motor képes volt már eddigiektől különböző számításokat elvégezni, ami nem volt igaz a differenciálmotor esetében. Amióta az analitikai motor egy egyszerű assembly nyelven programozható volt, szoftverre volt szüksége. Hogy létrehozza ezt a szoftvert, Babbage egy Ada Augusta Lovelace nevű fiatal nőt fogadott fel, aki a híres brit költő, Lord Byron lánya volt. Így vált Ada Lovelace a világ első programozójává. Az Ada?nevű modern programozási nyelvet az ő tiszteletére nevezték el. Sajnos, sok tervezőhöz hasonlóan Babbage sem tudta a hardverhibákat teljesen kiküszöbölni. A probléma az volt, hogy neki több ezer nagy precizitással elkészített apró alkatrészre, fogaskerekekre volt szüksége, amit a 19. századi technológia képtelen volt kivitelezni. Mindazonáltal elképzelése korán meghaladta, és még ma is a legtöbb modern számítógép felépítése nagyon hasonlít az analitikai motorhoz, szóval úgy igazságos, ha azt mondjuk, hogy Babbage volt a modern digitális számítógépek (nagy)apja. A következő nagy fejlődés az 1930-as évek végén történt, amikor egy Konrad Zuse nevű német mérnökhallgató egy sorozat automata számítógépet épített, amelyek elektromágneses reléket használtak. Miután a háború elkezdődött, nem tudott kormányzati támogatást kérni, mivel a kormány bürokratái arra számítottak, hogy megnyerjék a háborút, amilyen gyorsan csak lehet, így az új gép nem készülhetett el addig, amíg az véget nem ért. Zuse nem tudott Babbage munkájáról és a gépeit 1944-ben Berlin bombázásakor az Allied lerombolta, így a munkája nem gyakorolt hatást a későbbi gépekre. Mindezek ellenére a terület egyik úttörője volt. Röviddel ezután az Egyesült Államokban is tervezett két ember számítógépeket: John Atanastoff az Iowa Állami Akadémiáról és George Stibbitz a Bell Laboratóriumban. Atanastoff gépe korához képest elképesztően fejlett volt. Kettes számrendszer használt, a memóriákat kondenzátorok működtették, amiket folyamatosan frissítettek, nehogy az adatok elvesszenek, ezt a folyamatot ő a ?memória frissítésének? nevezte. A modern dinamikus memóriachipek (RAM) tejesen hasonló módon működnek. Sajnos ez a gép soha nem vált működővé. Ily módon Atanastoff Babbage-hez hasonlóan egy látnok volt, aki végül is kudarcot vallott, korának nem megfelelő hardver-technikája miatt. 16.old. Stibbitz számítógépe, bár sokkal egyszerűbb volt, mint Atanastoffé, valóban működött. Stibbitz 1940-ben a Darmouth Akadémián egy konferencián nyilvános előadást tartott róla. A hallgatóság egyik tagja John Mauchley, a Pennsylvaniai Egyetem egy ismeretlen fizikaprofesszora volt. Mauchley professzorról a számítástechnika világa később még sokat hallott. Míg Zuse Stibbitz és Atanastoff automatikus számítógépeket terveztek, egy Howard Aiken nevű fiatalember a Harvardon Ph.D. kutatásainak részeként kézzel dolgozott ki unalmas numerikus számításokat. Miután diplomáját megszerezte, Aiken felismerte annak fontosságát, hogy géppel is képes legyen számításokat végezni. Elment a könyvtárba, felfedezte Babbage munkáját, és elhatározta, hogy relékből építi fel azt az általános rendeltetésű számítógépet, amit Babbage nem tudott megépíteni fogaskerekekből. Aiken első gépét a Mark I-t a Harvardon készítette el 1944-ben. Tárolója 72 db 23 tízes számrendszerbeli szót tudott tárolni, és egy műveletet 6 másodperc alatt végzett el. Bemeneti és kimeneti egységként lyukszalagot használt. Idővel Aiken elkészítette ennek utódját, a Mark II-t, a relét használó számítógépek elavultak. Elkezdődött az elektronikus számítógépek kora. 1.2.2 Az első generáció - Elektroncsövek (1945-1955) Az elektronikus számítógépek készítését a II. világháború ösztönözte. A háború korai szakaszában a német tengeralattjárók angol hajók elpusztításával álltak bosszút. A parancsokat Berlinből a német tengernagyok rádión keresztül küldték a tengeralattjáróknak, amikről a britek tudomást szereztek és le is hallgattak. A baj az volt, hogy ezeket az üzeneteket egy ENIGMA nevű gépezet segítségével kódolták, aminek elődjét egy amatőr feltaláló és az Egyesült Államok egy korábbi elnöke, Thomas Jefferson tervezte. A háború elején a brit hírszerzésnek sikerült szereznie egy ENIGMA gépet a Lengyel Hírszerzéstől, akik a németektől lopták el. Azonban ahhoz, hogy feltörjenek egy üzenetet, hatalmas mennyiségű számításokra volt szükség, mégpedig nagyon kevéssel azután, hogy az üzeneteket befogták, hogy valami értelme is legyen. Hogy megfejtse ezeket az üzeneteket, az angol kormány egy titkos laboratóriumot állított fel, amelyben megépítettek egy COLOSSUS nevű elektronikus számítógépet. A gép tervezésében a híres brit matematikus, Alan Turing nyújtott segítséget. A COLOSSUS 1943-ban vált működőképessé, de miután a brit kormányzat a kutatás gyakorlatilag minden egyes lépését 30 évre katonai titokká minősítette, a COLOSSUS-ág alapvetően zsákutca volt. Csak azért érdemes megjegyezni, mert ez volt a világ első elektronikus, digitális számítógépe. Zuse számítógépének lerombolásán és a COLOSSUS építésének ösztönzésén kívül a háború az Egyesült Államok számítástechnikájára is hatással volt. A hadseregnek lőtáblázatra volt szüksége a nehéztüzérsége számára. Ezeket a táblázatokat úgy állították elő, hogy nők ezreit bérelték fel, hogy kézi számológép segítségével határozzák meg őket (úgy gondolták, hogy a nők sokkal alaposabbak, mint a férfiak). Mindazonáltal a folyamat időigényes volt, és gyakran fordultak elő benne hibák. John Mauchleynak, aki jól ismerte Atanastoff és Stibbitz munkáját is, tudomása volt arról , hogy a hadsereg érdeklődik a mechanikus számítógépek iránt. Sok utána következő számítástechnikai tudóshoz hasonlóan, egy javaslatot állított össze, megkérve ezzel a hadsereget, hogy finanszírozzák egy elektronikus számítógép megépítését. 17.old. A javaslatot 1943-ban elfogadták, és Mauchley és az ő diplomázó tanulója, J. Presper Eckert hozzáfogtak, hogy megépítsenek egy elektronikus számítógépet, amit ők ENIAC -nak ( Elektronic Numerical Integrator And Computer ) neveztek el. Ez 18000 elektroncsőből és 1500 reléből állt. Az ENIAC 30 tonnát nyomott, és 140 kW volt a teljesítménye. Szerkezetileg, a gépnek 20 regisztere volt, mindegyik egyenként 10 tízes számrendszerbeli szót tartalmazott. (A decimális regiszter nagyon kicsi memória, amely egytől néhány tízes számrendszerbeli maximum számot képes tárolni, kicsit hasonlóan, mint a kilométer-számláló, amely azt követi nyomon, egy autó életében milyen hosszú utat tett meg.) Az ENIAC 6000 többállású kapcsoló létrehozásával és nagyszámú konnektor és valódi erdőnyi kapcsolókábel összekapcsolásával programozták. A gép nem készült el 1946-ig, amikor is már túl késő volt eredeti rendeltetésére való használatához. Mindezek ellenére, miután a háború véget ért, Mauchley és Eckert engedélyt kaptak arra, hogy nyári egyetemet szervezzenek, ahol bemutatták munkájukat tudományos munkatársainak. Ez a nyári egyetem jelentette a nagy digitális számítógép építése iránti érdeklődés robbanásszerű növekedésének kezdetét. Ezután a történelmi nyári egyetem után sok más tudományos kutató kezdett elektronikus számítógépek építésébe. Az első működőképes az EDSAC (1949) volt, amelyet Maurice Wilkes épített a Cambridgei Egyetemen. A többiek közé sorolható a JOHNIAC a Rand Részvénytársaságtól, az ILLIAC az Illinosisi Egyetemen, a MANIAC a Los Alamosi Laboratóriumban és a WEIZAC a Weizmann Intézetben Izraelben. Eckert és Mauchley hamarosan az utódon, az EDVAC -on ( Electronic Discrete Variable Automatic Computer ) kezdtek el dolgozni. Bár a tervek súlyosan károsodtak, mikor ők elhagyták a Pennsylvaniai Egyetemet, hogy létrehozzanak egy gyorsan fejlődő vállalatot, az Eckert-Mauchley Számítógépes Társulatot Philadelphiában (a Szilíciumvölgyet még nem fedezték fel). Egy sor fúzió után ez a vállalat vált a modern Unisys Társulattá. Törvényes részletként, Eckert és Mauchley benyújtották a szabadalmazásra vonatkozó kérelmet, állítva, hogy ők találták fel a digitális számítógépet. Visszatekintve, nem lett volna rossz egy ilyen szabadalmat birtokolni. A pereskedés évei után a bíróság úgy határozott, hogy az Eckert-Mauchley szabadalmi kérvény érvénytelen, és hogy John Atanastoff találta fel a digitális számítógépet, még ha nem is szabadalmaztatta. Míg Eckert és Mauchley az EDVAC-ot építették, az ENIAC tervein dolgozó emberek egyike, John Von Neumann, a Magasabb Tanulmányok Princetoni intézetébe ment, hogy megépítse az EDVAC egyéni verzióját, az IAS gépet. Neumann ugyanolyan nagy zseni volt, mint Leonardo Da Vinci. Sok nyelven beszélt, kiváló fizikus és matematikus volt, és mindenre pontosan vissza tudott emlékezni, amit valaha hallott látott vagy olvasott. Képes volt szó szerint idézni olyan könyvek szövegét, amit évekkel ezelőtt olvasott. Amikor elkezdett érdeklődni a számítástechnika iránt, már a világ legkimagaslóbb matematikusa volt. A dolgok közül elsőként az vált nyilvánvalóvá számára, hogy a számítógépet nagyszámú kapcsolóval és kábelekkel programozni unalmas és merev. ***[18-21] a számítógép memóriája az adatokkal együtt. Azt is észrevette, hogy az ENIAC által használt ügyetlen decimális aritmetika, melyben mindegyik számjegy 10 vákuumcsővel van ábrázolva, helyettesíthető párhuzamos bináris aritmetika használatával. Az alapgondolat, melyet legelőször felvázolt, ma Neumann gépként ismert. Ez az EDSAC-ban, az első programtárolású számítógépben volt használva, és most is, több mint egy fél évszázaddal később, még mindig az alapja majdnem az összes digitális számítógépnek. Ennek a konstrukciónak és az IAS gépnek, amit Herman Goldstine-nal együttműködve építettek olyan óriási hatása volt, hogy megéri röviden leírni. Az architektúra vázlata az 1.-5. ábrán látható. A Neumann gépnek öt elemi része volt: a memória, az aritmetikai-logikai egység, a vezérlő egység, a bemeneti és a kimeneti berendezések. A memória 4096 szóból állt, szavanként 40 bitet tárolva, melyek 0-k vagy 1-k voltak. Mindegyik szó vagy két 20 bites utasítást vagy egy 40 bites előjeles egész számot tartalmazott. Az utasításokban 8 bit az utasítás típusának meghatározására és 12 bit a 4096 memóriaszó egyikének meghatározására volt szánva. Az aritmetikai-logikai egységen belül volt egy speciális 40 bites regiszter, az akkumulátor. Egy tipikus utasítás egy memóriaszót tett az akkumulátorba vagy az akkumulátor tartalmát tárolta a memóriában. Ez a gép nem tudott lebegőpontos aritmetikát végezni, mert Neumann úgy gondolta, hogy egy kompetens matematikusnak képesnek kell lennie a tizedespontot (vagyis a binárispontot) nyomon követnie a fejében. Körülbelül ugyanabban az időben, amikor Neumann megépítette az IAS gépet, az MIT kutatói szintén alkottak egy számítógépet. Az IAS-szel ellentétben az MIT gép, a Whirlwind I. 16 bites szóval rendelkezett és valós idejű vezérlésre tervezték. Ez a projekt vezetett a Jay Forrester által feltalált mágnesmagú memóriához és tulajdonképpen az első kereskedelmi kisszámítógépekhez. Míg ezek történtek, az IBM egy olyan kis cég volt, amelyik lyukkártya lyukasztók és mechanikus kártyaválogató gépek gyártásával kezdett el foglalkozni. Habár az IBM adta az Aiken pénzének egy részét, nem volt túlságosan érdekelve a számítógépekben, amíg el nem készítette a 701-et 1953-ban, jóval az után, hogy Eckert és Mauchley cége első volt a kereskedelmi piacon az UNIVAC számítógépével. A 701 számítógép 2048 darab 36 bites szóval rendelkezett, két utasítással szavanként. A tudományos gépek sorozatában ez volt az első, ami egy évtizeden belül dominálta az ipart. Három évvel később jött a 704, amelyiknek 4K magmemóriája volt, 36bites utasításai és lebegőpontos hardvere. 1958-ban az IBM megkezdte az utolsó vákuumcsöves gépének a gyártását, a 709-ét, ami alapvetően egy feljavított 704 volt. 1.2.3. A második generáció ? Tranzisztorok (1955-1965) A tranzisztort John Bardeen, Walter Brattain és William Shockley találták fel 1948-ban a Bell Laboratóriumokban, amiért 1956-ban fizikai Nobel-díjat kaptak. Tíz éven belül a tranzisztor forradalmasította a számítógépeket, és az 1950-es évek végére a vákuumcsöves számítógépek elavultnak számítottak. Az első tranzisztoros számítógépet az MIT Lincoln Laboratóriumában építették, egy 16 bites gép volt a Whirlwind I. nyomában. TX-0-nak hívták és csupán egy eszköznek szánták, hogy teszteljék a sokkal különlegesebb TX-2-t. A TX-2 sose vitte sokra, de a laboratóriumban dolgozó mérnökök egyike, Kenneth Olsen alapított egy céget, a Digital EquipmentCorporation-t (DEC) 1957-ben, hogy egy TX-0-hoz hasonló gépet készítsen. Ez négy évvel azelőtt volt, hogy ez a gép, a PDP-1 megjelent, főleg azért, mert a merész kapitalisták, akik a DEC-t alapították mereven hittek abban, hogy a számítógépek számára nincs piac. Ehelyett a DEC főleg kis áramkörlapokat árult. Amikor a PDP-1 végre megjelent 1961-ben, 4K-s 18 bites szavai voltak és a ciklusidő 5 ?sec volt. Ez a teljesítmény a fele volt az IBM 7090-ének, a 709-es tranzisztoros utódja teljesítményének, ami ebben az időben a leggyorsabb számítógép volt a világon. A PDP-1 120 ezer dollárba került, a 7090 milliókba. A DEC PDP-1-esek tucatjait adta el, és a kisszámítógép-ipar megszületett. Az első PDP-1-esek egyikét a MIT-nek adták el, ahol gyorsan megragadta néhány fiatal bimbózó tehetség figyelmét, akik a MIT-en olyan gyakoriak. A PDP-1-esek sok újítása közül az egyik a vizuális kijelző és a pontok ábrázolásának a képessége bárhol az 512-szer 512-es képernyőjén. Hamarosan a hallgatók programozták a PDP-1-et, hogy űrháborút játsszanak, és a világnak megvolt az első videojátéka. Pár évvel később a DEC bemutatta a PDP-8-at, ami egy 12 bites gép volt, de sokkal olcsóbb, mint a PDP-1 (16 ezer dollár). A PDP-8-nak egy óriási újítása volt: az egyszerű busz, az omnibusz, ahogy az 1.-6.-os ábrán is látható. A busz párhuzamos kábelek gyűjteménye, amelyeket a számítógép részeinek összekötésére használnak. Ez az architektúra egy óriási eltávolodás volt a memóriaközpontú IAS géptől és ezt azóta átvette majdnem minden kisszámítógép. A DEC azzal, hogy 50000 PDP-8-ast adott el, tulajdonképpen megalapozta vezető szerepét a kisszámítógép-iparban. Eközben az IBM reakciója a tranzisztorra a 709-es tranzisztoros verziójának, a 7090-nek a megépítése volt, mint már fentebb is megemlítettük, majd később a 7094-esé. A 7094-nek 2 ?sec-os ciklusideje és 32K-s, 32 bites szavakból álló magmemóriája volt. A 7090 és a 7094 jelentették az ENIAC típusú gépek végét, de a tudományos számításokban még az 1960-as években is domináltak. Ezzel egy időben, hogy az IBM egy fontosabb hatalom lett a tudományos számításokban a 7094-gyel, óriási összegeket keresett egy kis üzlet-orientált gép, az 1401-es eladásával. Ez a gép mágnesszalagokat tudott írni és olvasni, kártyákat lyukasztani és olvasni, és majdnem olyan outputot tudott nyomtatni, mint a 7094, és az ára csak töredéke volt. Tudományos számításokra szörnyű volt, de üzleti feljegyzések tárolására tökéletes. Az 1401-es szokatlan volt abban, hogy nem voltak regiszterei vagy akár fix szóhosszúsága. A memóriája 4K-s 8 bit bájtos volt. Mindegyik bájt egy 6 bites karaktert tartalmazott, egy adminisztratív bitet és egy bitet, hogy jelezze a szó végét. Egy MOVE utasításnak pl. volt egy forrás és egy cél címe, amíg elért egy 1-re állított szó vége bitet. 1964-ben egy új induló cég, a CDC bemutatta a 6600-at, egy gépet, amelyik majdnem egy nagyságrenddel gyorsabb volt, mint a hatalmas 7094. A "számaprítóknak" szerelem volt ez első látásra és a CDC elindult a sikere útján. A gyorsaságának a titka, és az ok, amiért sokkal gyorsabb volt a 7094-esnél az volt, hogy a belső CPU egy magasan párhuzamos gép volt. Több funkciós egysége is volt összeadás elvégzésére, mások szorzásra,mások osztásra és ezek közül mindegyik párhuzamosan futhatott. Habár pontos programozást igényelt az, hogy a legtöbbet hozzák ki belőle, de valamennyi munkával lehetővé vált, hogy akár 10 utasítást végezzen egyszerre. Mintha ez nem lett volna elég, a 6600-ba számos kis számítógép volt beépítve, hogy segítse, mint pl. Hófehérke és a hét törpe. Ez azt jelentette, hogy a CPU az összes idejét számok feldarabolásával töltheti, a munka végrehajtását, és az input/output műveletek nagy részét a kis számítógépekre hagyva. Visszatekintve a 6600-as évtizedekkel megelőzte saját korát. A modern számítógépekben található kulcsötletek nagy része visszavezethető egyenesen a 6600-asra. A 6600 tervezője, Sejmour Cray egy legendás alak volt, egy csoportban Neumannal. Egész életét egyre gyorsabb számítógépek építésére szentelte, amiket ma szuperszámítógépeknek hívunk, beleértve a 6600-at, a 7600-at és Cray-1-et. Ő találta fel a híres autóvásárlási algoritmust: a lakhelyedhez legközelebbi eladóhoz elmész, az ajtóhoz legközelebbiautóra rámutatsz, és azt mondod: ?Azt megveszem?. Ez az algoritmus a legkevesebb időt pazarolja nem fontos dolgokra (pl. autóvásárlás) és a legtöbb időt fontos dolgok elvégzésére (mint a szuperszámítógépek tervezése). Több más számítógép volt ebben a korban, de az egyik kiemelkedik egy különleges ok miatt és ezt érdemes megemlíteni: a Burroughs B5000. Az olyan gépek tervezői, mint a PDP-1, 7094 és a 6600 el voltak foglalva a hardverrel, hogy vagy olcsóbbá tegyék (DEC), vagy gyorsabbá (IBM, CDC). A szoftver majdnem teljesen lényegtelen volt. A B5000 tervezői más irányt választottak. Építettek egy gépet specifikusan azzal a szándékkal, hogy Algol 60-ban (a Pascal előfutára) lehessen programozni, és több sajátosságot helyeztek el a hardverben, hogy könnyítsék a fordító feladatát. Az ötlet, hogy a szoftver is számít, megszületett. Sajnos ezt majdnem egyből el is felejtették. 1.2.4. A harmadik generáció ? Integrált áramkörök (1965-1980) A szilikon integrált áramkörök feltalálásával, amit Robert Noyce talált fel 1958-ban, több tucat tranzisztor elhelyezése vált lehetővé egyetlen chipen. Ez a csomagolás lehetővé tette, hogy olyan számítógépeket építsenek, amelyek kisebbek, gyorsabbak és olcsóbbak, mint tranzisztoros elődjeik. 1964-re az IBM lett a vezető számítógépes cég és egy nagy problémája volt két nagyon sikeres gépével, a 7094-gyel és az 1401-gyel: annyira inkompatibilisek voltak, amennyire két gép lehet. Egyik egy nagysebességű számdaraboló volt párhuzamos bináris aritmetikát használva 36 biten és a másik egy dicsőített input/output processzor volt soros decimális aritmetikát használva változó hosszúságú szavakon a memóriában. A testületi vásárlóik közül soknak mind a kettő meg volt és nem tetszett nekik az, hogy két külön programozó osztályt kell működtetniük, amikben semmi közös nincs. Mikor elérkezett az idő e két sorozat lecserélésére az IBM egy radikális lépést tett. Egyetlen termékvonalat vezetett be, a System/360-at, ami az integrált áramkörökön alapult, ami mind tudományos, mind kereskedelmi számításokra volt tervezve. A System/360 sok újítást tartalmazott, ezek közül a legfontosabb, hogy ez egy kb. fél tucat gépből álló, ugyanazt az assembly nyelvet használó gépek családja volt növekvő mérettel, és teljesítménnyel. Egy cég ki tudta cserélni az 1401-ét egy 360 Model 20-ra és a 7094-ét egy 360 Model 75-re. A Model 75 nagyobb és gyorsabb volt (és drágább is), de az egyiken írott szoftver, elvileg, futott a másikon is. Gyakorlatban, egy kis modellen írt szoftver elfutott a nagy modellen, de ha egy kisebb modellre tették át, a program nem fért bele a memóriába. Így is ez egy nagy előrelépés volt a 7094 és a 1401 szituációjához képest. ***[22-25] 22.oldal BEVEZETÉS 1. Fejezet A kezdő 360-as család néhány jellemzőjét mutatja be az 1-7. ábra. Egyéb modelleket később mutatunk be. TULAJDONSÁG Modell 30 Modell 40 Modell 50 Modell 65 Relatív teljesítmény 1 3.5 10 21 Forgási idő 1000 625 500 250 Maximális memória(KB) 64 256 256 512 Byte áramlás/ciklus 1 2 4 16 Adatcsatornák max. száma 3 3 4 6 1-7. ábra Az IBM 360-as termékvonal kezdeti ajánlata. A 360-as másik fő újítása a multiprogramozás volt, ami számos programot tartalmazott egyszerre a memóriában, tehát amíg valaki egy input/output-ra várt, hogy befejeződjön, addig másik programmal is tudott dolgozni. A 360-as volt az első olyan gép, ami versenyképes volt a többi számítógéppel. A kisebb gépek versenyképesek voltak az 1401-sel, míg a nagyobbak a 7094-sel, így a vásárlók folyamatosan tudták futtatni az elöregedett programjaikat a gépeken, mert az átkonvertálta a 360-asra. Néhány modell gyorsabban futtatta az 1401-es programjait, mint maga az 1401-es, így sok vásárló soha nem is újította meg a programjait. A vesenyképesség fenntartása azért volt könnyű a 360-nál, mert mind a kezdeti modellek, mind a későbbiek nagy része mikroprogramozású volt. Ennek érdekében az IBM-nek 3 utasításcsomagot kellett írnia: egyet az eredeti 360-asra, egyet az 1401-esre és egyet a 7094-esre. Ez a rugalmasság volt az egyik fő oka, hogy a mikroprogramozást bevezették. A 360-as megoldotta a 2-es és a 10-es számrendszer közötti ellentmondást egy kompromisszummal: a gépnek 16 db 32 byte-os regisztere van a bináris számrendszerhez, de a memóriája byte orientált, úgy mint az 1401-esé. Ennek szintén 1401-es stílusú utasítás sorozata van a különböző méretű mozgatható recordoknak a memória körül. Abban az időben a másik fő tulajdonsága volt a 360-asnak a hatalmas cím kiterjesztés, ami 224 byte (16Mbyte) volt .Akkoriban a memória byte-ként nagyon sokba került, a 16 Mbyte pedig elérhetetlennek látszott. Sajnos a 370-es, 4300-as, 3080-as és a 3090-es szériák, amelyek a 360-ast követték, ugyanazt a szerkezeti felépítést használták. A 1980-as évek közepére a 16 Mbyte-os határ élő problémává vált, és az IBM-nél a kompatibilitás rovására ment a 32 bites címjegyzékhez szükséges új 232byte memória kialakítása. Utólag bebizonyosodott, hogy, míg 32 bit kiterjesztsű szavaik és regisztereik vannak, addig valószínüleg 32 bites címeik lehetnek, de abban az időben senki nem tudott elképzelni 16 Mbyte-os gépet. Az előrelátás hiba volt az IBM részéről, úgy mintha egy modern személyi számítógép eladónak csak 32 bites címkiterjesztése lenne. Néhány éven belül a PC-knek több mint 4GB-os memóriával kell rendelkezniük, amikor a 32 bit címkiterjesztés tűrhetetlenül kicsivé válik. 23.oldal MÉRFÖLDK? A KOMPUTER FELÉPÍTÉSBEN A minikomputer világ is hatalmas lépést tett előre a 3. generációban a PDP-11-es széria DEC bevezetésével, és a 16 bites PDP-8 utóddal. Több esetben is a PDP-11-es széria mintha csak a kistestvére lenne a 360-asnak, csakúgy mint a PDP-1-es a 7094-esnek. A 360-as és a PDP-11-es is szövegorientált regiszterű és byte orientált memóriájú, mindkettőnek tekintélyes az ár/teljesítmény aránya. A PDP-11 rendkívül sikeres volt, különösen az egyetemeken, és biztosította a DEC vezető helyét a többi minikomputer gyártóknál. 1.2.5 A 4. generáció-VLSI( Nagyon Széles Skálájú Integráció (1980-?)) Az 1980-as évekre a VLSI lehetővé tette, hogy az ezrekből az első 10 majd 100 tranzisztort később milliókat tegyenek egy egyszerű chipre. Ez a fejlődés kisebb és gyorsabb komputerekhez vezetett. A PDP-1-es előtt a számítógépek olyan nagyok és drágák voltak, hogy a cégeknek és az egyetemeknek egy külön speciális részleget kellett fenntartani, amiket számítógép központoknak neveztek, hogy tudják őket működtetni. A minikomputer megjelenésével már egyes részlegek is képesek voltak sajaát számítógépet venni. Az 1980-as évekre az árak annyira leestek, hogy egyes embereknek is lehetett már saját gépük. A PC korszak ezzel elkezdődött. A PC-k használata nagyon eltér a nagy számítógépekétől. Ezeket szövegszerkesztésre, lapterjesztésre és számos magas szintű alkalmazásra használták, amire a nagy gépek nem túl jók. Az első PC-ket általában egységcsomagonként árusították. Minden csomag tartalmazott egy nyomtatott áramkötáblát, egy köteg chippet, többnyire magában foglalt egy Intel 8080-ast, néhány kábelt, erősítőt és esetleg egy 8 inches floppy lemezt. A részek összeszerelése. a gép összeállítása a vásárlóra maradt. Software-rel nem volt ellátva.Ha valaki akart volna, annak magának kellett megírnia. Később a Gary Kildall által írt CP/M operációs rendszer nagyon népszerű lett a 8080-ason. Ez egy igazi (floppy) lemezes operációs rendszer volt, file szervezésű, és a vezényszavakat közvetlenül a klaviatúráról írhatta be a felhasználó. Másik korai PC-k voltak az Apple és később az AppleII, amiket Steve Jobs és Steve Wozniak terveztek egy híressé vált garázsban. Ez a gép rendkívül népszerű volt az otthoni felhasználók körében, és komoly ?játékossá? lett csaknem éjszakákon át. Hosszas tanácskozások és megfigyelések után, amit más cégek tettek, az IBM, mint a számítógép ipar domináns ereje, végül elhatározta, hogy kiveszi a részét a PC üzletből. Mivel a gép teljes tervezését a semmiből kellett kezdeni csak IBM alkatrészek felhasználásával, amelyek elavultak voltak, az IBM rá nnem jellemző lépést tett.Megbízták az IBM egyik vezetőjét Philip Estridge-t, hogy egy zsák pénzzel vonuljon el a bürokrácia látóköréből a szövetséges Armonk-i (NY) főhadiszállásra, és addig ne jöjjön vissza, amíg szert nem tesz egy működő PC-re. Estridge felépített egy üzletet a Főhadiszállástól messze, Boca Ratonban (FL), kiválasztotta az Intel 8080-ast, mint a saját CPU-ját, és épített egy IBM PC-t a kereskedelmi forgalomban lévő alkatrészekből. A gépet 1981-ben mutatták be, és hamarosan a történelem egyik legkeresettebb számítógépévé vált. Az IBM tett még egy rá nem jellemző dolgot, amit később meg is bánt. Ahelyett, hogy a gép terveit teljes titokban tartották volna (vagy legalább szabadalommal levédték volna ), mint ahogy az szokás, megjelentették a komplett terveket a kapcsolási rajzokkal együtt egy 49 $-os könyvben. Az ötlet az volt, hogy lehetővé tegyék más számítógépes cégeknek az IBM PC-hez való csatlakozást, ezzel is növelve annak népszerűségét és rugalmasságát. Az IBM szerencsétlenségére mivel a tervek most már teljesen publikusak voltak, és valamennyi része könnyen beszerezhető volt a kereskedelmi forgalomban, számos más cég elkezdte a PC-k klónjait gyártani, gyakran sokkal olcsóbban, mint az IBM. Így indult el a sorozatgyártás. Bár az egyébb cégek nem Intel CPU-t alkalmaztak a PC-kben, beleértve a Commodore-t, Apple-t, Amigra-t és Altari-t, az IBM súlya olyan nagy volt, hogy ezeket a cégeket az IBM lesöpörte a piacról. Csak néhányan maradtak meg a piacon mint pl: a mérnöki állomások vagy a szuperkomputerek. Az IBM PC első verziói MS-DOS operációs rendszerrel voltak felszerelve, amelyeket a ( then-tiny) Microsoft Corporation működtetett. Mint ahogy az Intel képes volt egyre erősebb CPU-kat előállítani, az IBM és a Microsoft ki tudta fejleszteni az MS-DOS jogutódját, amit OS/2-nek neveztek, amely képes volt grafikus feldolgozásokra csakúgy mint az Apple Macintoshé. Miközben a Microsoft is kifejlesztette a saját Windows operációs rendszerét és ez az MS-DOS csúcsára futott, addig az OS/2 nem volt sikeres. Egy szónak is száz a vége az OS/2 nem sikerült, az IBM és a Microsoft nyilvánosan összevesztek, és a Windows Microsoft fejlesztésként vált sikeressé. Ahogy az apró Intel és a még apróbb microsoft elérte az IBM trónfosztását, ami a világtörténelem egyik legnagyobb és legerőteljesebb cége volt, kétségtelenül példaértékű, ami részletesen érdemes elmondani a manager iskolákban az egész világon. Az 1980-as évek közepére egy RISC nevű új fejlesztés kezdi átvenni a komplikált felépítésű CISC helyét, amely jóval egyszerűbb ( de gyorsabb). Az 1990-es években a szuperskálájú CPU-k kezdenek megjelenni. Ezek a gépek egyidőben képesek összetett feladatokat végrehajtani, gyakran olyan parancsokat is, amelyek eltérőek a programjukban leírtaktól. A második fejezetben bemutatjuk a CISC és a RISC és a szuperskála alapelveit, és a könyv folyamán megtárgyaljuk a részleteket. 1.3 KOMPUTER PARK Az előző részben rövid áttekintést adtunk a számítógép történetéről. Ebben a részben a jelenről lesz szó és kitekintünk a jövőre is. Bár a PC-k a legismertebb komputerek, napjainkban léteznek olyan gépek is amelyekről nagyon nehéz röviden elmondani működésüket és felhasználásukat. 25.oldal 1.3.1 Technikai és gazdasági erők A számítógép gyártás soha nem látott léptekkel fejlődik. Az elsődleges mozgatóereje az, hogy a chip gyártók képesek egyre több tranzisztort elhelyezni egy chipre évről-évre. Több tranzisztor, amelyek pici elektronikus kapcsolók, nagyobb memóriát és nagyobb erejű processzort jelentenek. A technológiai haladás mértéke a Moore-törvénynek nevezett megfigyelés alapján modellezhető, amely a nevét Gordon Moore-ról, az Intel egyik alapítójáról és vezetőjéről kapta, és amit 1965-ben fedezett fel. Miközben Moore a beszédeit állította össze az ipari társaságnak, felismerte, hogy a memória chippek új generációját 3 évenként mutatják be. mivel minden új generációban 4-szer annyi memória van, mint az elődjében, rájött, hogy az 1 chipre tehető tranzisztorok száma egy állandó szerint növekszik, és megjósolta, hogy ez a növekedés még évtizedekig fog tartani.Napjainkban Moore-törvényét gyakran úgy értelmezik, mint a tranzisztorok számának 18 havonkénti megduplázódása. Megjegyezzük, hogy ez egyenlő a tranzisztorok számának évenkénti kb. 60%-os növekedésével. A memória chippek mérete, és a bemutatásuk dátuma az 1.8 ábrán látható, amely igazolja, hogy a Moore-törvény még mindig működik. 1.8 ábra A Moore- törvény az 1 chipre tehető tranzisztorok számának évenkénti 60%-os növekedését jósolta meg. Az adatpontok, amelyeket az ábrán felhasználtunk az 1 bitben található memória helyeket mutatják. Természetesen a Moore-törvény nem egy általános érvényű törvény, csupán egy tapasztalati megfigyelés arról, hogy a stabil tudományú fizikusok és a folyamat mérnökök milyen előrehaladást tudnak elérni, és annak a jóslata, hogy ezt az előrehaladást ugyanilyen tempóban tudják biztosítani a jövőben is. Sok megfigyelő azt várja el a Moore-törvénytől, hogy még a XXI. században is jól működik majd, talán 2020-ig. Ennél a pontnál a tranzisztorok már csak néhány megbízható atomból fognak állni, jóllehet a kvantum komputerizálás előnyei lehetővé teszik, hogy 1 bit tárolására egy magányos elektron is elegendő legyen. A Moore-törvény olyasvalamit adott, amit néhány közgazdász erkölcsös körforgásnak nevez. A technológiából adódó előnyök ( tranzisztorok száma/chip ) jobb termékekhez és alacsonyabb árakhoz vezettek. Az alacsonyabb árak új felhasználásokat eredményeztek ( senki sem készített video játékokat a számítógépekhez, amíg azok 10 millió dollárba kerültek). Az új felhasználások új piacokat nyitottak és új cégek ismerték fel a számítógépek előnyeit. ***[26-29] Fordítás, 26-29 Az ilyen vállalatok léte versengéshez vezet, ami olyan gazdasági igényt támaszt a jobb technológiák iránt, amivel legyőzhetik a többieket. Így a kör bezárul. Egy újabb vezető technológiai előrelépés Nathan első software törvénye (Nathan Myhrvold, a Microsoft ügyvezetője). Eszerint: ?A Software gáz. Kitágul, hogy kitöltse a tárolőedényét?. Az 1980-as évekre visszamenőleg a szövegszerkesztést olyan programokkal csinálták, mint a troff (amit a könyvhöz is használtak). A troff több tíz KByte memóriát foglal el. A modern szövegszerkesztők több tíz Mbyte-ot birtokolnak. A jövőbeliek kétségkívül több tíz Gbyte igényűek lesznek. A software ami egyre inkább olyan sajátságokkal rendelkezik (hasonlóan a hajók oldalára rakódó kagylóhoz) egy állandó igényt jelent a gyorsabb proceszorokra, a nagyobb memóriára és több I/O kapacitásra. Amíg a csipenkénti tranzisztorból származő nyereség drámainak mondtható az elmúlt években, az egyéb kompjuter technológiákból származó profit nőtt. Például az IBM PC/XT-t 1932-ben 10 MB-s hard disc-kel vezették be. Törvényszerűen a jelenlegi desktop rendszerek ennél valamivel nagyobbak. A lemezek fejlesztésének mérése már nehezebb, hiszen számos paraméter van (kapacitás, adatok aránya, ár, stb.) de szinte minden mérési eredmény azt mutatná, hogy a kapacitás azóta legalább 50%-kal nőtt évente. Egy másik terület, mely látványos nyereséget termel a mai napig a telekommunikáció és a hálózat. Kevesebb mint 20 év alatt 300 bit/perc modemektől eljutottunk az analóg 56 kbps modemekig, ISCN telefonvonalak 2x64 kbps-nál, a száloptikás hálozatok már jóval 1 Gbyte/perc fölett vannak. Az Atlanti-óceánon áthúzódó száloptikás telefonkábelek, mint a TAT-12/13 , kb 700 millió dollárba kerülnek, 10 éveig tartanak 300,000 egyidejű hívást képesek továbbítani, ami kevesebb, mint 1 centet jelent egy 10 perces interkontinentális hívásnál. Laboratoriumi kisérletek szerint bizonyíthatóan megvalósítható a száloptikás 1 terabit/perc (1012bit/perc)-os komunikációs rendszerek amelyek 100 km-t is meghaladhatnak erősítő használata nélkül. Az Internet exponenciális növekedését nem szükséges kommentálnunk. 1.3.2 A számítógép válszték Richard Hamming, a Bell Laboratórium egy régebbi kutatója, egyszer megfigyelte, hogy a mennyiség nagyságrenddel való változtatása minőségi változást okoz. Ekkép egy versenyautó, amely 1000 km/óra sebességgel képes menni a Nevada sivatagban, alapvetően különböző fajtáju gép, mint egy normál autó, amely 100 km/óra sebességgel halad az autópályán. Hasonlóképpen egy 100 emeletes felhőkarcoló nem csak egy arányosan felnagyított 10 emeletes lakóház. És a számítóképeknél nem 10-szeres szörzókról, hanem a több mint 3 évtized folyamán milliós szorzókról beszélünk. A nyereség Morre törvénye szerint számos módon felhasználható. Az egyik mód, hogy állandó ár mellett növekvő erősségü számítógépeket építenek. Egy másik megközelítés, hogy ugyanaz a számítógépet minden évben egyre alacsonyabb áron állítják elő. A számítógépipar megtette mindkettőt s még többet is, bizonyítja ezt a ma elérhető számítógépek széles választéka. Egy nagyon ?durva? kategorizációját a ma forgalomban léjvő számítógépeknek a következő ábra nyújtja:
Táblázat: Jelenleg elérhető számítógépek átfogó csoportosítása, az árakat a viszonyítást tükrözik. Az alsó végen olyan önálló csipeket találunk az üdvözlőkártyák belsejébe ragasztva, melyek eljátszák a ?Boldog Születésnapot?, az ?Itt jön a menyasszonyt? vagy néhány egyaránt szörnyő versikét. A szerző nem figyelt még fel részvétnyilvánítő kártyákra, melyek gyászzenét játszanak, de most hogy beleültettük a közösségi gondolatba, hamarosan várja ezt. Mindenkinek aki milliódolláros óriásszámítógépekkel nőtt fel, az eldobható számítógépek kétségkívűl jelen vannak (mi van a szemetesládákkal, melyek az aluminium dobozok újrafelhasználására emlékeztetnek?) Következőként a létrán vannak olyan számítógépeink, melyek telefonok, televíziók és mikrohullámu sütők belsejében vannak elhelyezve, vagy áppen CD lejátszók, játékok, babák és ezer egyébb eszközben. Néhány éven belül minden elektromos készülékben egy számítógép lesz. Az "elrejtett" számítógépek száma milliókra lesz becsülve, eltörpítve minden más számítógépet a nagyságrenddel való kombinálás által. Ezek a számítógépek egy processzorral rendelkeznek, kevesebb mint egy Mbyte memóriával és néhány I/O képességgel, mindez egy önálló kis csipen, melyet néhány dollárért árulnak. Egy lépéssel feljebb a videójátékok találhatók. Ezek rendes számítóképek speciális grafikai képességgel, de korlátozott software-rel és szinte semmi kiterjeszthetőséggel rendelkeznek. Szintén ezen árkategóriában találhatók meg a személyi szervezők, hordozható digitális aszisztensek és hasonló palmtop számítógépes eszközök, éppúgy mint hálózati számítógépek és web terminálok. Ami ezekben a számítógépekben közös az az, hogy tartalmaznak egy processzort, néhány Mbyte memóriát, egy bizonyos kivetítőt (lehetőleg egy tv készülék) és nem sok egyébb dolgot. Ez teszi őket olyan olcsóvá. Következőként elérkezünk a személyi számítógépekhez, amire a legtöbb ember gondol, amikor a "számítógép" terminust hallja. Ezek magukba foglalják mind az asztali számítógépeket, mind pedig a notebookokat. Ezek általában több megabájt memóriával készülnek, egy merev lemezzel, mely néhány Gbyte adatot tartalmaz, CD-ROM meghajtóval, modemmel, hangkártyával és egyébb perifériákkal. Gondosan kidolgozott operációs rendszerrel rendelkeznek, sok kiterjesztési lehetőséggel és széles skálában elérhető software-rel. Azokat, amelyekbe Intel CPU van beépítve gyakran ?személyi számítógépeknek? hívják, míg a különböző fajtáju CPU-val rendelkezőket ?munkaállomásoknak?, de fogalmilag van egy kis különbség a két fajta között. Felerősített személyi számítógépeket vagy munkaálomásokat gyakran használnak hálózati szerverként mind helyi hálózatokhoz (tipikusan egy önálló vállalaton belül) és az Internethez. Ezek önálló processzor vagy többszörös processzor formákban készülnek, néhány Gbyte memóriáig, sok Gbyte-os merevlemez hellyel és gyors hálózati kapacitással. Néhányuk több tucat vagy több száz bejövő hívást tud fogadni egyszerre. A kis multiprocesszor szerverek mellett olyan rendszereket is találunk, melyeket úgy hívnak, hogy "NOW" (Networks of Workstations) vagy "COW" (Clusters of workstations) rendszerek. Szabványos személyi számítógépekből vagy munkaállomásokból állnak, melyek Gbyte/másodperc hálóztok által vannak összekötve, és olyan speciális softwaret futtatnak, amely az összes gépet engedi együtt dolgozni ugyanazon a problámán gyakran a tudományban vagy a technikában. Könnyedén skálázhatóak egy maréknyi géptől kezdve a több ezerig. Az alacson áruk következtében egyes ágazatok rendelkezhetnek ilyen gépekkel, amelyek ténylegesen miniszuperszámítógépek. Elérkeztünk az óriásszámítógépekhez, szobányi méretű számítógépek, melyek az 1960-as éveket idézik. Sok esetben ezek a gépek egyenes leszármazottaik az IBM 360-as óriásszámítógépeinek melyet évtizedekkel ezelőtt készítettek. Legnagyobb részben nem sokkal gyorsabbak, mint az óriási szerverek, de általában több I/O kapacitásuk van és el vannak látva hatalmas lemez farmokkal, melyek gyakran tartalmaznak egy Tbyte adatot vagy többet (1TB=1012byte). Habár elképeztően drágák, mégis gyakran alkalmazzák őket, köszönhetően a tömérdeknyi befektetésnek a softwarebe, adatokba, operációs módokba és személyzetbe, amiket képviselnek. Sok vállalat olcsóbnak találja, ha csak időnként fizet náhány millió dollárt egy újért, mint hogy azokat az erőfeszítéseket figyeljék, amelyek a kisebb gépek alkalmazásához szükséges újraprogramozással járnak. Ez az a számítógépcsoport, amelyik mostan a hirhedt 2000. év problémájához vezetett, melyet a COBOL programozók okoztak az 1960-az és1970-es években azáltal, hogy az évet 2 decimális szájegyként jelentették meg (memória megtakarítás céljából). Soha sem képzelték, hogy a software-eik 3-4 évtizednél tovbb lesznek használva. Sok vállalat követte el ugyanazt a hibát azáltal, hogy egyszerűen 2 újabb számjegyet adtak az évhez. A szerző ezzennel megjövendöli a civilizáció végét ahogyan ezt tudjuk 9999 dec. 31-én éjfélkor, amikor a 8000 éves jól kihasznált COBOL programok egyszerre összeomlanak. Az óriásszámítógépek után jönnek az igazi szuperszámítógépek. Elképesztően gyors CPU-kkal rendelkeznek, sok Gbyte főmemóriával és nagyon gyors lemezekkel és hálózatokkal. Mostanában a szuperszámítógépek nagy része vált sok párhuzamos géppé, nem túlzottan különbözővé a COW tipustól, de gyorsabb és több komponenssel. A szuperszámítógépeket a tudományban és technikában fellépő számításos intenzív problémák megoldására használják, mint pl. összeütköző galaxisok szimulálására, új gyógyszerek szintetizálázára vagy a levegő egy repülőgép szárnya körüli áramlásának modellezésére. 1.4. Példa számítógép családokra Ebben a részben egy rövid bevezetést adunk 3 kompjúterhez, amiket legtöbbször példának hozunk fel a könyv nagy részében: a Pentium II, az UltraSPARC II és a picoJAVA II[sic]. 1.4.1. A Pentium II bevezetés 1968-ban Pobet Noyce, a szilícium integrált áramkör feltalálója, Gordon Moore, aki Moore-törvényéről hírneves, és Arthur Rock, egy San Fransiscoi kapitalista vállalatot alapítottak az Itel Corporation-t, hogy memória csipeket gyártsanak. Működése első évében az Intel csak 3000 dollár értékű csipet adott el, de az üzlet azóta fellendült. A 60-as évek második felében a számológápek nagy elektromechanikus eszközök voltak, amik mérete megegyezett egy modern lézernyomtatóval és 20 kg-ot nyomtak. 1969 Szeptemberében egy japán vállalat, a Busicom megbízta az Intelt, hogy készítsen 12 csipet egy tervezett elektromos számítógéphez. Az Intel mérnökei nekiláttak a projectnek. Ted Hoff megnézte a terveket és észrevette, hogy bele tud helyezni egy 4 bites általános célú CPU-t egy önálló csipbe, ami ugyanazt a funkciót látja el, de ugyanakkor egyszerűbb és alcsóbb is. Így 1970-ben az első ilyan CPU, ami egyetlen csipben van, a 2300-tranzisztor 4004 meglátta a napvilágot. (Faggin et al., 1996). Ez semmit sem ért mivel sem az Intel, sem a Busicom nem tudta, hogy épp mit fedeztek fel. Amikor az Intel eldöntötte, hogy megérné esetleg a 4004-est kipróbálni a többi projectben, felajánlotta, hogy visszavásárolja az új csip összes jogát a Busicomtól, visszatérítése 60 000 dollárt, amit a Busicom fizetett neki kifejlesztésért. Az Intel ajánlatát gyorsan elfogadták, aki ezután hozzálátott a csip 8 bit-es változatának kidolgozásához, amit 1972-ben mutattak be. Az Intel nem várt nagy keresletett a 8008, így egy alacson volumenű gyártásra állt be. De legtöbbek megrökönyödésére akkora volt az érdeklődés, hogy az Intel hozzáfogott egy új CPU csip tervezéséhez, aminek a memóriája a 8008-a 16K-s kapacitásához hasonló (amit a csipen levő láb száma ír elő). Ez a kivitelezés a 8080-t eredményezte, egy kicsi általános célú CPU-t, aminek bemutatására 1974-ben került sor. Sokkal inkább, mint a PDP-8-as, ez a termék egy csapásra meghódította a szakmát, és azonnal tömegcikk lett. Az ezres eladás helyett (amit a DEC tett) az Intel milliókat adott el. 1978-ban jött a 8086, igazi 16-bites CPU egy önálló csipen. Az 8086-ost úgy tervezték, hogy kicsit hasonlítson a 8080-ashoz, de ne legyen vele kimpatibilis. A 8086-ost a 8088-as követte, aminek ugyanaz az architekturája, mint a 8086-nak és ugyanazokat a programokat futtatta, de volt egy 8-bites buszja a 16 bites helyett, ami lassúbbá viszont olcsóbbá tette a 8086-osnál. Amikor az IBM kiválasztotta a 8088-ast, mint az eredeti IBM PC CPU-ját, ez a csip nagyon gyorsan a személyi számítógépipar standardjévé vált. Sem a 8088-as sem a 8086-os nem tudott 1 Mbyte memóriánál többet küldeni. Az 1980-as évek első felére ez egyre inkább égető problámává vált, tehát az intel megtervezte a 8286-ot, ami a 8086 fölfelé kompatibilis verziója. ***[30-33] Fordítás: 30-33.oldal Készítette: Gyarmati Andrea (h938709) Az alap utasítás készlet lényegében azonos volt a 8086 és a 8088-ban. De a memória kezelés teljesen különbözött, és inkább nehézkes volt. A feltétel a korábbi chippekkel való kompatibilitás volt. A 80286-ost IBM PC/AT gépeken használták és a középkategóriás PS/2-ben. Csak úgy mint a nagysikerű 8088-ast, lényegében azért, mert ezt egy gyorsabb 8088- asnak tekintették. . A következő lépés az igazi 32 bites processzor volt, a 80386, amit 1985-ben hoztak ki. Mint a 80286-os ez is többé-kevésbé kompatibilis volt visszamenőleg egészen a 8080 -ig . A visszafelé való kompatibilitás elôny volt azok számára, akiknek a régi programok futtatása fontos volt, de ellenszenvett ébresztettek azokban , akik jobb szerették az egyszerű, tiszta, modern a múlt hibáitól mentes felépítést. Négy évvel később kijött a 80486-os. Ez lényegében egy gyorsított válltozata volt a 80386-nak, aminek szintén volt egy lebegő-pontos-egysége, valamint 8K Cache memóriát is tartalmazott a chipbe építve. A cache memóriát arra használják, hogy tárolja a legtöbbet használt memória részt, a processzorban vagy annak a közelében, a lassú központi memória hozzáférés elkerülése végett. A 80386-os támogatja a többprocesszoros környezetet, ami megengedi a gyártóknak, hogy olyan rendszereket építsenek , amiben több processzor van. Ezen a ponton az Intel rájött, hogy a nehéz (mivel elvesztette a szabadalmi pert) szabadalom alá vonni számokat (mint a 80486), így a következő generáció nevet kapott: Pentium (a görög szóbol penta (öt)). A 80486 -ban egy beépített pipeline van , ellenben a Pentiumban már kettő, amelyik lehetővé teszi kétszer gyorsabban való végrehajtást. (A pipeline -ról már volt szó a 2 fejezetben). Amikor a következő generáció megjelent, elkeseredtek azok, akik abban reménykedtek, hogy az új család a Sexium (latin: sex = 6) nevet kapja. A Pentium név már jól csengett a köztudatban, igy az értékesítéssel foglalkozó emberek meg akarták tartani és az új chip neve a Pentium Pro lett. A kis névváltozás ellenére ez a processor nagy áttörést mutatott. A helyett, hogy kettő vagy több Pipeline lenne benne, a Pentium Pro telljesen más belső szervezése révén 5 utasítást tudott egyszerre végrehajtani. A másik újjítás , hogy a Pentium Pro két szintes Cache memóriát tartalmazott. Magában a chipben van 8K a gyakran használt utasítások tárolására , és van még 8K a gyakran használt adatok számára. Valamint ugyanabban a tokban (a Pentium Pro dobozában) , de nem magába a Chipbe építve van a második-szintű cache, ami 256 KB. A következő Intel processzor a Pentium II , lényegében egy Pentium Pro egy különleges multimedia utasítás kiegészítéssel (MultiMedia Extension). Ezek az utasítások a számitás igényes audio és video lejátszások sebességét hivatottak növelni, fölöslegessé téve egy multimédiás társprocesszor hozzáadását. Ezek az utasítások a későbbi Pentiumokban is hozzáférhetőek, de a Pentium Pro-ban nem. Egyszóval a Pentium II kombinálta a Pentium Pro erősségeit egy multimédia támogatással. 1998 elején az Intel bemutatta új termékét a Celeront, ami alapjába véve egy alacsony árú, gyengébb teljesítményű verziója a Pentium II-nek. A Celeront alacsony minőségű PC-be szánták (low-end). Mivel a Celeron ugyanolyan felépítésű, mint a Pentium II , nem fogjuk megvitatni a könyvben. 1998 júnisában a Pentium II különleges verzióját mutatta be az Intel, amit a piac magasabb rétegeibe szánt. Ez a processzor a Xeon nevet kapta, nagyobb cache, gyorsabb bus, valamint jobb többprocesszoros támogatás jellemzi, de másrészről egy normál Pentium II, így ezt sem beszéljük meg részletesen a későbbiek folyamán.
{ Az ábrán az Intel család látható. Az órasebesség MHZ-ban van megadva, ami 1 millió fordulat/másodperc. } Az összes Intel chip kompatibilis volt az elődeivel vissza egészen a 8086. Egyszóval a Pentium II képes 8086 programokat futtatni módosítás nélkül. Ez a kompatibilitás mindig is tervezési minimum volt, hogy megengedjék a felhasználóknak, hogy megtarthassák a már meglévő szoftver beruházásukat. Természetesen a Pentium II 250 - szer bonyolultabb, mint a 8086, így a Pentium II meg tud csinálni olyan dolgokat, amit a 8086- os nem tudott. Ezek a részekre szedtett darabok azt erdeményezik, hogy a felépítése nem annyira elegáns, mintha odadnánk valakinek a Pentium II -t felépítő 7.5 millió tranzisztort és utasításait, hogy kezdje el előről fölépíteni. Érdekes megjegyezni, hogy a Moore törvénye -sokáig a memória bitjeinek számához volt társítva- ugyanolyan jól alkalmazható a processzorokra is. Ábrázolva a trancisztorok számát a megjelenés függvényében, észrevesszük, hogy minden chip egy félegyenesen helyezkedik el; itt is azt látjuk, hogy Moore törvénye igaz. Az UltraSPARC II bemutatása Az 1970- es években a UNIX volt népszerű az egyetemeken, de nem a személyi számítógépeken futó UNIX, tehát a UNIX-kedvelők időosztásos (gyakran túlterhelt) miniszámítógépeket használtak, mint például a PDP-11 és a VAX. 1981-ben egy German Stanford-on végzett hallgató, Andy Bechtolsheim, aki megunta, hogy a számítógépközpontokban UNIX-ot használtak, elhatározta, hogy épít magának egy személyi UNIX munkaállomást használaton kívüli részekből. SUN-1-nek (Stanford University Network) hívta. Bechtolstheim nemsokára felhívta Vinod Khosla, egy 27 évesindiai figyelmét, aki égett a vágytól, hogy 30 éves korára milliomos legyen. Khosla meggyőzte Bechtolsheim-et, hogy alakítson egy céget, ami SUN munkaállomásokat épít és ad el. Khosla szerződtette Scott McNealy-t, egy másik Stanford-on végzett diákot a gyártás vezetőjének. A szoftver megírásához szerződtették Bill Joy-t, a Berkeley UNIX legfontosabb tervezőjét. Ők négyen alapították a SUN Microsystem-et 1982-ben. A SUN első terméke Sun-1, amely MOTOROLA 68020 CPU-val működött, amely azonnali siker volt, mint az ezt követő SUN-2 és SUN-3 gépek is, melyek szintén MOTOROLA CPU-t használtak. Nem lehet más személyi száémítógépekkel egy napon említeni. Ezek a gépek messze erősebbek voltak (innen az elnevezés ?munkaállomás? ), és azt tervezték, hogy a kezdetektőlhálózaton fog futni. Mindegyik SUN munkaállomás ETHERNET kapcsolattal és IPC/IP szoftverrel az ARPANET-hez, az Internet előfutárához való kapcsolódáshoz. 1987-re a SUN eladott fél billió dollár értékű rendszereket, elhatározta, hogy megtervezi saját CPU-ját. Ezt egy új forradalmi tervre alapozta a California Egyetemről Berkeley-ből (RISK II). Ez a CPU, amit SPARC-nak (Scalable Processzor Architecture) hívtak, a SUN-4 munkaállomás alapja. Rövid időn belül minden SUN terméket használt a SPARC CPU. Eltérően a többi számítógépes cégtől, a SUN elhatározta, hogy nem maga fogja gyártani a SPARC CPU chipeket. Ehelyett engedélyezte gyártásukat néhány különböző kisebb vállalatnak remélve, hogy a versengés köztük növelni fogja teljesítményüket és csökkenti az árakatEzek a vállalatok számos különböző chippeket gyártottak, különböző technológián alapulva, különböző órasebességgel futva és különböző áron. Ezek a chipek magukba foglalták a MicroSPARC-ot, a HyperSPARC-ot, a SuperSPARC-ot és a TurboSPARC-ot. Bár ezek a CPU-k kisebb dolgokban különböztek, de mind kompatibilis volt és futott rajtuk ugyanaz a felhasználói program módosítások nélkül. A SUN mindig azt akarta, hogy a SPARC nyitott felépítésű legyen sok ellátóegységgel és rendszerrel, azzal a céllal,hogy építsen egy vállalatot, amely versenybe tud szállni személyi számítógépek terén a világon már uralkodóvá vált Intel alapú CPU-kal. Elnyerték a cég bizalmát, amely érdekelve volt a SPARC-ban, de nem akartak beruházni a gyártás ellenőrzésébe, mint vetélytárs. A SUN megalakított egy ipari konzorciumot SPARC International néven, a SPARC felépítésének jövőbeli változatának kifejlesztésére. Így fontos külünbséget tenni a SPARC felépítés, amely egy pontos felvilágosítást ad és más, programban látható jellemvonást tartalmaz, és ezek egy sajátos eszköze között.Ebben a könyvben meg fogjuk tanulni mindegyiket a generikus SPARC felépítéséről, és azután tárgyaljuk a CPU chipeket Chaps-ban. A 3 és a 4 egy speciális SPARC chipet használ a SUN munkaállomásokban. A kezdeti SPARC 32-bites gép volt, 36 Mhz-n futott. A CPU-t IU-nak (Integer Unit) hívták, egyszerű és átlagos volt a 3 legfontosabb utasítás formátummal és összesen 55 utasítással. Ráadásul a lebegőpontos egység hozzáadott másik 14 utasítást. Ez ellentétben állt az Intel vonalával, amely 8- és 16-bites chppekkel (8086, 8088, 80286) kezdte és végül a 80386-tal 32 bites lett. A SPARC első megtörése 1995-ben következett be a SPARC felépítésének 9.verziójának megjelenésével, egy 64-bites felépítés, 64-bites címzéssel és 64-bites regeszterekkel. Az első SUN munkaállomás a V9 (Version 9) felépítés volt az UltraSPARC I, amit 1995-ben vezettek be. (Trembley és O`Connor, 1996). A 64-bites gépek ellenére, ez is teljesen binárisan kompatibilis volt a már létező 32-bites SPARC-okkkal. Az UltraSPARC meg akarta törni a gyanut. Ezzel szemben az előző gépekben meg volt tervezve, hogy alfanumerikus adatot kezel és a futó programok, mint word processzorok, vírusirtás, az UltraSPARC-ban általában meg volt tervezve a kezdetektől a képek, audio, video és multimédia kezelése. Más újítások között a 64-bites felépítés mellett volt 23 új utasítás,magába foglalt néhány tömörített és nem tömörített képelemet 64-bites szavaktól, képek kicsinyítését és nagyítását, blokkok mozgatását, video ki-és betömörítését. Ezeknek az utasításoknak, röviden VIS (Visual Instruction Set) az a céljuk, hogy általános multimédia hozzáférhetőséget biztosítsanak az Intel MMX utasításokhoz hasonlóan. Az UltraSPARC olyan magasszintű alkalmazásokra van tervezve, mint a nagy multiprocesszoros Web szerverek tucatnyi CPU-val és 2TB (terabyte)-ig terjedőfizikai memóriával. Mindazonáltal kisebb verziók notebook számítógépeken is használhatók. Az UltraSPARC I örököse az UltraSPARC II és az UltraSPARC III volt. Ezek főleg az órasebességben különböznek, de néhány új jellemzőt is hozzáadtak minden új változathoz. ***[34-37] Rossz fordítás ***[38-41] 2. .Mi a különbség az értelmezés és fordítás között? 3. Elképzelhető-e egy fordító részéről, hogy a mikro architektura szintjén generáljon outputot az ISA szint helyett? Vitassák meg a feltevés mellett és ellen szóló érveket! 4. El tud képzelni egy többszintű számítógépet, amelyben az eszköz szint és a digitális logika szint nem a legalacsonyabb szintek? Magyarázza meg! 5. Vegyünk egy számítógépet, melynek az értelmezője megegyezik az 1., 2. és 3. szinten. Egy értelmezőnek n utasításra van szüksége ahhoz, hogy egy utasítást elszállítson, megvizsgáljon és végrehajtson. Az első szinten egy utasítás k nanosecundum alatt hajtódik végre. Ez mennyi időbe telik a 2., 3., 4. szinteken? 6. Vegyünk egy többszintű számítógépet, ahol mindegyik szint különbözik. Mindegyik szintnek vannak olyan utasításai, melyek m-szer erősebbek., mint az alatta lévő szinten levők, ami azt jelenti, hogy egy r szintű utasítás r-1 db m szintű utasítás feladatát látja el. Ha egy első szintű programnak k másodperc szükséges a futáshoz, mennyi időbe kerülne egy ugyanolyan programnak a 2., 3., 4. szinten, feltételezve, hogy n szintű r utasítás szükséges ahhoz, hogy értelmezzen egyetlen r+1 utasítást? 8. Milyen értelemben ekvivalens a software és hardver? Milyenben nem? 9. Neumann azon ötletének, hogy a programokat a memóriában tároljuk, egyik következménye, hogy a programok az adatokhoz hasonlóan megváltoztathatóak. Tudna egy olyan példát említeni, melyikben ez az adottság hasznos lehet. (tipp: Gondoljon az aritmetika használatára a tömbökön!) 10. A 360 modell 75 teljesítményarány 50- szerese a 360 modell 30, de a ciklusidő csak ötször olyan gyors. Hogyan indokolja ezt az ellentmondást? 11. Két alap rendszerterv látható az 1-5 és 1-6 ábrán. Írja le, hogyan történhet az input/output ezen rendszerekben. Melyiknek van lehetősége a jobb rendszerteljesítményre? 12. Egy bizonyos időpontban egy tranzisztor, egy mikroprocesszor 1 micron volt diaméternben. Moore törvénye szerint a következő évi modellben milyen nagy lenne egy tranzisztor? 2 Számítógéprendszerek felépítése Egy digitális számítógép processzorok, memóriák, ki- és bemeneti egységek (I/O) kölcsönösen összekapcsolt rendszeréből áll. Ez a fejezet bevezetés ehhez a három összetevőhöz, valamint háttér a következő öt fejezet specifikus szintjeinek részletes megvizsgálásához. A processzorok, memóriák, a ki- és bemeneti egységek kulcsfogalmak, és minden szinten jelen lesznek, így azzal kezdjük számítógép architektúra tanulmányainkat, hogy megnézzük ezt a három egységet. 2.1 Processzorok A 2-1. ábra mutatja egy egyszerű busz orientált számítógépes felépítését. A CPU (központi vezérlő egység) a számítógép "agya". Funkciója az, hogy a main memóriában tárolt programokat végrehajtsa; elérve azok utasításait, megvizsgálja, majd egymás után végrehajtja őket. Az összetevőket egy busz kapcsolja össze, ami cím, adat és ellenőrzőszignálok átvitelére való párhuzamos kábelek gyűjteménye. A buszok lehetnek CPU-n kívüliek, a memóriához és az I/O eszközökhöz kapcsolva, de lehetnek CPU-n belüliek is, mint ahogyan ezt hamarosan látni is fogjuk. A CPU számos elkülönülő részből áll össze. A vezérlőegység felelős az utasítások elszállításáért a main memóriából, valamint a típusaik meghatározásáért. Az aritmetikai logikai egység (ALU) olyan műveleteket végez, mint az összeadás, vagy a Boolean típusú AND művelet, amelyek szükségesek az utasítások végrehajtásához. A CPU ezen kívül még tartalmaz egy nagy sebességű memóriát, amelyet ideiglenes eredmények és bizonyos vezérlőinformációk tárolására használ. Ez a memória számos regiszterből áll, amelyeknek meghatározott méretük és funkciójuk van. Általában az összes regiszter ugyanolyan méretű. Mindegyik regiszter egy számot tud tárolni, maximálisan a regiszter mérete alapján meghatározottat. A regisztereket gyorsan lehet olvasni és írni, mivel ezek a CPU belsejében találhatóak. A legfontosabb regiszter a programszámláló (PC), amelyik a következő végrehajtandó elszállítandó utasításra mutat. A "programszámláló" név kissé félrevezető, mert a számoláshoz semmi köze, mégis ezt a kifejezést használják rá általánosan. Ugyancsak fontos az utasításregiszter, amely az éppen végrehajtás alatt lévő utasítást tartalmazza. A legtöbb számítógépnek számos más regisztere is van. Néhány ezek közül általános, néhány specifikus célokat szolgál. Ábra 2-1 .: Egyszerű számítógép felépítése egy CPU- val és két be/kimeneteli egységgel. 2.1.1 A CPU felépítése Egy tipikus Neumann-féle CPU belső szerkezetének részeit részletesebben a 2-2. ábra mutatja. Ezt a részt data pathnak hívják, és a regiszterekből (általában 1-től 32-ig),az ALU-ból és néhány buszból áll, amik összekapcsolják a darabokat. Ezek a regiszterek táplálják a két ALU input regisztert, amit az ábra A-val és B-vel jelöl. Ezek a regiszterek tárolják az ALU inputját, amíg az ALU számol. A data path minden gépben nagyon fontos, így a könyvben részletesen fogunk majd foglalkozni vele. Az ALU saját maga végzi az összeadást, a kivonást és más egyszerű műveleteket az inputjain, így adva át az eredményt az output regiszternek. Ezt az output regisztert egy regiszterbe tudjuk besorolni. Szükség esetén ezt a regisztert később a memóriába át lehet írni. Nem minden rendszer rendelkezik az A, B és output regiszterekkel. A példában az összeadást illusztráljuk. A legtöbb utasítást a következő két kategória egyikébe tudjuk besorolni: regiszter - memória, regiszter - regiszter utasítás. A regiszter - memória utasítás megengedi a memória szavainak, hogy a regiszterekbe szállítódjanak, ahol pl. az ALU inputjaiként lehet őket használni későbbi utasításokban. (a "szavak" a memória és a regiszter között mozgó adategységek. A szó jelölhet egy integer típusú számot is. A memória felépítését később tárgyaljuk meg ebben a fejezetben.) Más regiszter - memória utasítások megengedik a regisztereknek, hogy tárolódjanak a memóriában. Az utasítás másik fajtája a regiszter - regiszter típusú. Egy tipikus regiszter - regiszter utasítás két operandust szállít a regiszterekből, elviszi őket az ALU input regisztereihez, végrehajt rajtuk pár műveletet, pl. az összeadást vagy a Boolean And műveletet, és az eredményt a regiszterek egyikében tárolja. A két operandus ALU-n keresztüli futtatásának és az eredmény tárolásának folyamatát "data path cycle"- nek hívjuk. Ez a legtöbb CPU lelke. Ez nagyban meghatározza, hogy mit tud egy gép csinálni. Minél gyorsabb a data path cycle, annál gyorsabb a gép. ***[42-45] Nem készült el! Hodur Albert: h938358 ***[46-49] Hibás file!!! Bartalos Jenő kpmI. (h734573) 46 A SZÁMÍTÓGÉPES RENDSZEREK FELÉPÍTÉSE 2.fejezet 2.1.3. RISC kontra CISC A hetvenes évek vége felé rengeteget kísérleteztek nagyon összetett utasításokkal, amit az interpreter tett lehetővé. A tervezők próbálták csökkenteni a szakadékot a gépek tudása és a magas szintű programnyelvek által megkívánt fejlettségi szint között.Alig volt valaki, aki egyszerűbb gépek tervezéséről gondolkodott, épp úgy, mint ma, nem sokan terveznek egyszerűbb operációs rendszereket, hálózatokat, szövegszerkesztőket, stb... ( talán nem szerencsésen ). John Cocke, az IBM munkatársa vezette azt a csoportot, amely szakított az addigi irányzattal, és megpróbált megvalósítani néhányat Seymour Cray ötleteiből egy nagy teljesítményű mini computerben. Ez a munka egy kísérleti mini-számítógéphez vezetett, amelyet 801-esnek neveztek. Habár az IBM sohasem dobta piacra a gépet, és az eredményeket sem közölték évekig (Radin, 1982), a hír mégis kiszivárgott, és mások is elkezdtek foglalkozni hasonló architektúrák vizsgálatával. 1980-ban egy, a Berkley egyetemen David Patterson és Carlo Séquin által vezetett csoport olyan VLSI CPU chipeket kezdett tervezni, amelyek nem használtak interpretereket. ( Patterson, 1985; Patterson és Séquin, 1982 ). ?k alkották meg erre a koncepcióra építve a RISC elvet. CPU chipjüket RISC I - nek nevezték, amelyet hamarosan a RISC II. követett. Nem sokkal később, 1981-ben, a San Francisco-i öblön túl, Stanfordban, John Hennessy egy kicsit másmilyen gépet tervezett és készített el, amit MIPS- nek nevezett.( Hennessy, 1984). Ezek a chipek fontos kereskedelmi termékekké váltak, a SPARC és a MIPS különösen. Az az új processzorok jelentősen kőlönböztek az akkoriban kereskedelemben lévőktől. Mivel nem voltak velük visszafelé kompatibilisek, így a tervezők szabadon alkalmazhattak új utasítás-csomagokat, amelyekkel ki lehetett használni a rendszerek teljes kapacitását. Míg kezdetben a hangsúly a gyorsan végrehajtható, egyszerű parancsokon volt, hamar felismerték, hogy az utasítások fejlesztését gyorsan kell végezni, hisz ez a kulcs a sikerhez. Kevésbé számított, hogy milyen hosszú egy utasítás, mint hogy másodpercenként hányat lehet végrehajtatni belőle. Ezen egyszerű processzorok tervezése idején a figyelem a viszonylag kis számú (kb.50) végrehajtható utasítások felé fordult. Ez a szám sokkal kisebb volt, mint a bevált gépeken kiadható 200-300 parancs.( Ilyen volt pl.: a DEC VAX és az IBM nagy gépei). Igaz, a RISC betűszó Redukált Utasításkészletű Számítógépet jelent ( Reduced Instruction Set Computer ), ami a CISC ellentéte, mivel ez Összetett Utasításkészletű Számítógépet jelent. (Complex Instruction Set Computer ) /ez egy alig leplezett utalás a VAX-nak, amely ez idő tájt uralkodó a Számítástechnikai Tudományegyetemek között./ Manapság már csak néhány ember gondolja azt, hogy az utasításkészlet mérete egy hatalmas tömb, de a név mégis megmaradt. Hogy ne nyújtsuk hosszúra a történetet, végül is ádáz háború robbant ki : a RISC támogatói támadást indítottak a biztos alapokon nyugvó többiek ( VAX, Intel, IBM) gépei ellen. Azt akarták, hogy a számítógépek tervezése a legjobb úton haladhasson, ez pedig a kis számú, egyszerű utasítások egy ciklusban, a megadott sorrendben történő végrehajtását jelenti ( 2-2 ábra ). tion Set Computer ) /ez egy alig lep pei ellen. Azt akarták, hogy a számítógépek tervezése a legjobb úton haladhasson, ez pedig a kis számú, egyszerű utasíTimes New Roman CEadott sorrendben történő végrehajtását jelenti ( 2-2 ábra ). 47. Nevezetesen, vegyünk két regisztert, egyesítsük őket valahogy ( pl. adjuk vagy kapcsoljuk össze őket), és tároljuk a kapott eredményt egy regiszterben. Az eredmény a következő: Egy RISC elven működő gép 4-5 utasítással hajtja végre azt, amit egy CISC- gép egyetlen paranccsal elintéz, azonban tizszer gyorsabban dolgozik.( hiszen nincs interpretálva ) Így a RISC győz. Arra is érdemes rámutatni, hogy ez idő alatt a fő memória sebessége utoléri a csak olvasható, irányító tár sebességét. Az interpetáció hátránya így még inkább nő, ami igen kedvező a RISC gépek számára. Logikus, hogy az ilyen előnyöket élvező RISC technológia gépei ( pl. DEC Alpha ) ki kellene, hogy szorítsa a piacról a CISC gépeit ( pl. Intel Pentium ). Semmi ilyesmi nem történik. De miért? Először is itt van a visszafelé kompatibilitás ténye. A vállalatok dollármilliókat invesztáltak az Intel-irányvonal szoftvereibe. Másodszor pedig, meglepő, de az Intel képes volt alkalmazni ugyanazokat az ötleteket CISC környezetben is.A 486-osoktól kezdve az Intel CPU-k tartalmaznak egy ún. RISC-magot, a legegyszerűbb ( és általában leggyakoribb) parancsokat megadott sorrendben, egy cikluson belül hajtja végre. Ez alatt pedig a szokásos CISC módszerrel interpretálja az összetettebb utasításokat. Hálózaton használva az eredmény azt mutatja, hogy az egyszerű utasítások gyorsak, a bonyolultabbak lassúak. Ugyan ez a hibrid megoldás nem olyan gyors, mint a teljes RISC konstrukció, de versenyképes, amíg a régi szoftvereket módosítás nélkül engedik futni. 2.1.4. A modern számítógépek konsrukciós elve Több, mint egy évtized telt el azóta, hogy az első RISC gépek bemutatkoztak. Egyes konstrukciós elvek elfogadottá váltak, mint a számítógépek fejlesztésének helyes irányvonalai, s elterjedtek a hardver technológiában. Ha nagyobb változás köszöntene be (pl. egy új ipari eljárás következtében a memória elérési ideje hirtelen a CPU elérési idejének tizedére csökkenne ), minden felborulna. Így a tervezőknek mindig figyelemmel kell kisérniük a technikai változásokat, melyek befolyásolhatják az összetevők közötti egyensúlyt. Tehát, a konstrukciós elveknek rendszere van, ezt néha RISC konstrukciós elveknek is hívják, ezek az általános CPU-k azon felépítései, amelyek a tőlük telhető legjobbat adják, hogy versenyben maradhassanak. A külső kényszerek, mint pl. az az elvárás, hogy néhány meglévő architektúrával megmaradhasson a visszafelé kompatibilitás, sokszor, időről időre kompromisszumokhoz vezetnek. Ám ezek az elvek olyan "vereségek", amelyekkel a legtöbb tervezőnek meg kell küzdenie. Ezen nyomások alatt fogjuk megalkotni a legnagyobb dolgokat. A hardver közvetlenül hajtja végre az összes utasítást Minden egyszerű parancsot közvetlenül végrehajt a hardver. Nincsenek mikroutasítások által értelmezve. Az interpretáció szintjén történő kiküszöbölés a legtöbb utasítás számára nagy sebességről gondoskodik. at adják, hogy versenyben maradhassanak. A külső kényszerek, mint pl. az az elvárás, hogy néhány m€ incsenek mikroutasítások által interpretálva. Az interpretáció szintjén történő kiküszöbölés a legtöbb utasítás számárTimes New Roman CEodik. Bartalos Jenő kpmI. (h734573) 48 A SZÁMÍTÓGÉPES RENDSZEREK FELÉPÍTÉSE 2.fejezet A computerek számára ezt a CISC utasításkészletei biztosítják. A bonyolultabb műveletek különálló részekre bonthatók, amelyek mikroutasítások sorozataként hajtathatók végre. Ez az extra lépés ugyan lelassítja a gépet,de a ritkábban előforduló utasítások esetén elfogadható. A kiadott parancsok arányának maximalizálása A modern számítógépek rengeteg trükköt alkalmaznak, hogy maximalizálhassák teljesítményüket. Ezek közül a legfontosabb, hogy a gép megpróbál annyi utasítást kiadni másodpercenként, amennyit csak lehetséges. Tehát, ha ki tudsz adatni másodpercenknt 500 millió utasítást, akkor egy 500 MIPS-es processzort építettél, ahol nem számít hogy meddig tart míg az aktuális utasítás befejeződik. ( a MIPS betűszó millió utasításper másodpercet jelent. ) Ez az elv azt a párhuzamosságot sugallja amely nagy szerepet játszhat a teljesítmény fejlesztésében, mivel nagy számú lassú utasítások kiadása rövid idő alatt csak akkor volna lehetséges, ha a sokféle parancsot egyszerre lehetne végrehajtatni. Habár az utasítások a programrendszerben mindig összefutnak, mégsincsenek mindig kiadva ( hiszen néhány szükséges forrás foglalt lehet ), és nem szükséges az sem, hogy itt végződjenek. Természetesen, ha parancs1 -et egy regiszterbe helyezzük, és parancs2 is ugyanazt a regisztert használja, akkor nagy munka meggyőződni arról, hogy parancs2 mindaddig nem olvassa el a regisztert, míg az a helyes értéket tartalmazza. Ezek a nagy igények sok-sok könyveléssel járnak, de a lehetőség megvan a teljesítménybeli előny megszerzésére: a sokféle utasítást egyszerre kell végrehajtani. Egyszerű kell legyen az utasítások dekódolása Az utasítások végrehajtási arányában van egy kritikus határ. Ez megmutatja, hogy a parancsoknak milyen forrásokra van még szükségük ahhoz, hogy végrehajtathatók legyenek. Bármi, ami ezt az eljárást segíteni tudja hasznos. Ez magában foglalja, hogy szabályos, meghatározott hosszúságú és kis helyet foglaló utasításokat kell készíteni. A legjobb, ha ezek formátumukban teljesen eltérnek egymástól. A memóriát csak töltéskor és tároláskor kellene igénybe venni Az egyik legegyszerűbb mód, hogy egy műveletet különálló lépésekre bonthassunk az, ha megköveteljük, hogy a jel a legtöbb utasítás számára regiszterekből jöjjön és oda menjen vissza. Különálló utasításokkal meg lehet valósítani a műveleti jelek mozgatását a memória és a regiszterek között. Míg a belépés a memóriába hosszú időt igényelhet, és a késés kiszámíthatatlan, ezek az utasítások könnyen egymásba csúszhatnak, ekkor pedig semmi más nem történik csak ide-oda szaladgálnak a jelek a memória és a regiszterek között. Az eredmények azt mutatják, hogy csak a TÖLTÉS és TÁROLÁS parancsoknak kellene használni a memóriát. teni. A legjobb, ha ezek formátumukban teljes a belépés a memóriába hosszú időt igényelhet, és a késés kiszámíthatatlan, ezek az utasítások könnyen egymásba csúszh��Times New Roman CE�ás nem történik csak ide-oda szaladgálnak a jelek a memória és a regiszterek között. Az eredmények azt 1?�?�m Bartalos Jenő kpmI. (h734573) 2.fejezet, 1.rész PROCESSZOROK 49 Sok regiszterről gondoskodjunk Mivel a belépés a memóriába viszonylag lassú, sok regiszterről kell gondoskodnunk (min 30-ról), így tehát, ha elökerül egy szó, mindaddig tárolhatjuk egy regiszterben, amíg az nagyobb helyet nem igényel. Nem kívánatos dolog kifogyni a regiszterekből, és visszaömleszteni tartalmukat a memóriába, hogy majd késöbb újraindíthassuk őket. Ha csak lehet, kerüljük ezt el! A megvalósítás legjobb módja az, ha rendelkezünk elegendő regiszterrel. 2.1.5. Az utasítás-szintű párhuzamosság A számítógép fejlesztők mindig arra törekszenek, hogy növeljék az általuk tervezett gépek teljesítményét. Az egyik módszer a chipek gyorsítására, hogy megnövelik a belső óra sebességét. Ám minden új technikának meg van a maga határa, amit a kor pillanatnyi szintje határoz meg. Összefoglalva a legtöbb computer-fejlesztő a párhuzamosság felé törekszik ( két vagy több dolog egyidejű elvégzése ). Ez az a módszer, amely még inkább növeli a teljesítményt egy adott óra-sebesség mellett. A párhuzamosságnak két fontos fajtájáról beszélhetünk:az utasítás-szintű, és a processzorok szintjén levő párhuzamosságról. Az előbbiben a gép azt hasznosítja, hogy a párhuzamosság miatt másodpercenként több utasítás adható ki. Az utóbbiban pedig összekapcsolt CPU-k dolgoznak együtt ugyanazon a problémán. Mindkét megközelítésnek meg van a maga érdeme. Ebben a részben az utasítás-szintű paralellizmussal foglalkozunk, a következőben pedig a processzor-szintűt tárgyaljuk. Csővonal Évek óta ismert, hogy a memóriából aktuálisan előkerülő utasítások nagy torlódást idéznek elő, s ezzel lassítják a végrehajtási sebességet. Hogy kezelni tudják ezt a problémát, a computereknek vissza kell térnie legalább az IBM-Kibővitésig (1959), amikor még meg volt az a tulajdonság, hogy az utasítások előre fel voltak hozva a memóriából, így kéznél voltak amikor csak szükség volt rájuk. Ezek a parancsok egy regiszterblokkba - az előtárba -voltak behelyezve. Így, amikor szükség volt egy utasításra, rendszerint elő lehetett venni az előtárból - inkább, mint arra várni, hogy feljöjjön a memóriából. Ennek eredményeképp az utasítások "származása" alapján történő csoportosítás a végrehajtást két részre bontja: előhozási és aktuális végrehajtás. A csővonal koncepciója még tovább viszi ezt a stratégiát. A parancsok végrehajtásának két részre osztása helyett gyakran sok részre osztották, s mindegyiket a hardver meghatározott része irányította. Mindet ami képes párhuzamosan futni. A 2-4-es ábra az öt egységes csővonalat ábrázolja, amit állványoknak is neveznek. Az állvány1 az utasításokat a memóriából tölti le, és egy tárba helyezi be amíg szükséges. Az állvány2 dekódolja a parancsokat, meghatározza a tipusukat, és hogy milyen jelre van szükségük. Az állvány3 lokalizálja és előhozza a jelet akár a regiszterekből, akár a memóriából., és hogy milyen je€˘v��r��n��j�>�f��b�,�^��Z��V�m�R�hf?'?`??hH4 ??�??*�??,�??!�??#�??�??�??�??�??�??�<<ívánatos dolog kifogyni a regiszterekből, és visszaömleszteni tartalmukat a memóriába, hogy majd késöbb újraindíthassuTimes New Roman ***[50-53] Valójában a 4. szakasz hajtja végre az utasításokat, jellegzetesen futtatva az operandusokat az információ útvonalán a 2-2. ábrán. Végül az 5. szakasz visszaírja az eredményt a megfelelő regiszterbe. utasítást lekérdező egység -> utasítást dekódoló egység -> operandus lekérdező egység -> utasítást végrehajtó egység -> visszaíró egység 2-4. ábra. (a) 5 szakaszos pipeline. (b) Mindegyik szakasz állapota az idő függvényében. 9 ciklust ábrázoltunk. A 2-4. ábrán láthatjuk, hogy hogyan működik a pipeline az idő függvényében. Az első ciklus alatt S1 dolgozik az 1. utasításon, lekérdezi a memóriából. A 2. ciklus alatt S2 dekódolja az 1. utasítást, mialatt S1 lekérdezi a 2. utasítást. A 3. ciklus alatt S3 lekérdezi az operandusokat az 1. utasításhoz, S2 dekódolja a 2. utasítást és S1 lekérdezi a 3. utasítást. A 4. ciklus alatt S4 végrehajtja az 1. utasítást, S3 lekérdezi az operandusokat a 2. utasításhoz, S2 dekódolja a 3. utasítást és S4 lekérdezi a 4. utasítást. Végül az 5. ciklusban S5 visszaírja az 1. utasítás eredményét, míg a többi szakasz a további utasításokon dolgozik. Gondoljunk ki egy analógiát, hogy a pipelineok fogalmát tisztábbá tegyük. Képzeljünk el egy tortagyárat, ahol a sütés és a szállítás el van különítve. Tegyük fel, hogy a szállító részlegnek van egy hosszú futószalagja mellette sorban 5 munkással (feldolgozó egységek). Minden 10 másodpercben (a ciklus) az 1. munkás egy üres dobozt rak a szalagra. Ezután a doboz a 2. munkáshoz kerül, aki belerak egy tortát. Egy kicsivel később a doboz megérkezik a 3. munkáshoz, aki lezárja. Utána folytatja útját a 4. munkáshoz, aki rak egy címkét a dobozra. Végül az 5. munkás leveszi a dobozt a szalagról és egy nagyobb tárolóegységbe rakja az áruházba történő későbbi szállításához. Alapvetően így működik a számítógépnél a pipeline: mindegyik utasítás (torta) végig megy néhány feldolgozó lépésen, mielőtt végrehajtva kijut a végén. Visszatérve a pipelinera a 2-4. ábrához feltételezzük, hogy a ciklusidő 2 nsec volt. Így 10 nsec-be kerül egy utasításnak, hogy végighaladjon az 5 szakaszos pipelineon. Első pillantásra ha egy utasításnak 10 nsec-ig tart, akkor úgy tűnik, hogy a gép 100 MIPS-el fut, de valójában ennél sokkal jobb. Minden ciklusban (2 nsec) egy új utasítást hajt végre, így a feldolgozás mértéke 500 MIPS, nem pedig 100 MIPS. A pipeline megengedi, hogy a "lappangást" (mennyi ideig tart az utasítást végrehajtani) és a processzor sávszélességét (a CPU MIPS teljesítménye) felváltva használja. Egy T nsec-es ciklusidővel és n szakaszos pipeline-nal a lappangási idő nT nsec és a sávszélesség 1000/T MIPS. (logikus, mivel az időt nsec-ban mérjük, így a CPU sávszélességét BIPS-ben vagy GIPS-ben kellene mérni, de mivel ezt senki sem teszi, így mi sem fogjuk) Szuperskalár architektúrák Ha egy pipeline jó, akkor kettő biztos jobb. Egy, a 2-4-es ábra alapján lehetséges dual- pipeline CPU látható a 2-5. ábrán. Itt egy utasítást lekérdező egység párokban kérdezi le az utasításokat, mindegyiket külön pipelineon indítja el és az ALU-val párhuzamos műveletként hajtja végre. Hogy a párhuzamos futtatás létrejöhessen, a két utasítás nem ütközhet az erőforrások kihasználásában (pl. regiszterek) és egyik sem függhet a másik eredményétől. Egy pipeline-nal a fordítóprogramnak tartania kellett a helyzetét (a hardware nem ellenőrzi és helytelen eredményt ad, ha az utasítás nem kompatibilis) vagy pedig a hibát észreveszi és megoldást talál rá a végrehajtás alatt úgy, hogy extra hardwaret vesz igénybe. 2-5.ábra: dupla 5 szakaszos pipeline egy közös utasítást lekérdező egységgel Bár az egyszerű vagy dupla pipelineokat legtöbbször RISC-gépeken használják (a 386-osnak és az elődeinek még nem volt egy se), a 486-tól kezdve az Intel elkezdte bevezetni a pipelineokat a CPU-ba. A 486-osnak 1 pipelineja volt és a pentiumnak két 5 szakaszos, durván úgy, mint a 2-5. ábrán, bár a szakaszok beosztása a 2-es és a 3-as között (dekódoló 1-nek és dekódoló 2-nek hívták) nagy mértékben eltért, mint a példánkban. A fő pipeline, amit U- pipeline-nak hívtak végre tudott hajtani egy tetszőleges pentium-utasítást. A második pipeline (V pipeline) csak egy egyszerű, egész számos utasítást tudott végrehajtani (és egy egyszerű lebegőpontos utasítást -FXHC) A komplex előírások meghatározták, hogy egy utasításpár kompatibilis volt-e, így végre lehet-e hajtani párhuzamosan. Ha az utasítás nem volt elég egyszerű vagy nem volt kompatibilis, a párban csak az első hajtódott végre (az U pipeline-ban). A másodikat fenttartotta és párosította a következő utasítással. Az utasításokat mindig sorrendben hajtotta végre. Ekképpen pentiumra írt fordítóprogramok kompatibilis párok alkotásával gyorsabban futó programokat tudtak produkálni, mint a régebbi fordítóprogramok. A mérések azt mutatták, hogy egy pentiumra optimalizált kód futási sebessége egész számos programok esetében pontosan kétszerese volt, mint egy ugyanolyan órajelű 486-on. (Pountain, 1993). Ez a növekedés teljes egészében a két pipelinenak volt tulajdonítható. Még a 4 pipeline is elképzelhető, de a hardwaret ugyanígy megduplázza. Helyette más megközelítést alkalmaznak a csúcskategóriás CPUkban. Az alapötlet az, hogy ezek egy pipelinet használnak, de több funkciójú egységeket alkalmaznak, mint a 2-6-os ábrán látszik. Pl. a pentium II. szerkezete hasonlít az ábrához. Ezt majd a 4. fejezetben tárgyaljuk. A szuperskalár architektúrát ebben a megközelítésben 1987-ben alkották meg (Agerwala és Cocke, 1987), bár gyökereiben több, mint 30 évet vezet vissza a CDC6600-as számítógéphez. A 660-as 100 nsec-enként kérdezett le egy utasítást és a 10 funkciós egység egyikéhez továbbította párhuzamos feldolgozásra, mialatt a CPU a következő utasítást kérte. 2-6. ábra: egy szuperskalár processzor 5 funkciós egységgel Magától értetődően a szuperskalár processzorok ötlete az volt, hogy az S3-as szakasz észrevehetően gyorsabban kezeli az utasítást, mint ahogy az S4-es szakasz végrehajtja. Ha az S3-as szakasz minden 10 nsec-ben kiad egy utasítást és minden funkcionális egység 10 nsec alatt el tudja végezni a feladatát, akkor egyszerre csak egy lenne elfoglalt, érvénytelenítve az egész ötletet. Valójában a 4-es szakaszbeli funkcionális egységeknek észrevehetően több, mint egy ciklusideig tart a végrehajtás, pontosan azoknak, amelyek elérik a memóriát vagy lebegőpontos számolást csinálnak. Mint az ábrán láthatjuk, egyszerre több ALU is lehet az S1-es szakaszban. Processzor szintű párhuzamosság Az igény a még gyorsabb számítógépekre kielégíthetetlennek látszik. A csillagászok szimulálni akarják, hogy mi történt a "nagy bumm" első mikromásodpercében, a közgazdászok modellezni akarják a világgazdaságot és a tinédzserek 3D-s interaktív multimédiás játékokkal akarnak játszani az interneten virtuális barátaikkal. Mialatt a CPU-k gyorsulnak, lényegében problémákba ütköznek, mint pl. a fénysebesség, amely 20cm/nsec rézdrótban vagy optikai kábelben, bármilyen okosak is az Intel mérnökei. A gyorsabb chipek több hőt termelnek, aminek az eloszlatása is probléma. Az utasítás szintű párhuzamosság egy kicsit segít, de a pipeline és a szuperskalár műveletekkel ritkán nyernek többet, mint 5-10 faktort. Hogy 50-et, 100-at vagy még többet nyerjenek az egyetlen mód, hogy számítógépeket több CPU-val tervezzenek, így megnézzük, hogy ezek hogyan szerveződnek. Array számítógépek Sok probléma a fizikában és a mérnököknél tömböket tartalmaz vagy másképpen magas szintű szerkezeteket használnak. Gyakran ugyanazokat a műveleteket egy időben sok különböző adathalmazon hajtják végre. A szabályossága és szerkezete ezeket a programokat kifejezetten könnyű célponttá teszi a gyorsítás és párhuzamos végrehajtás értekében. 2 módszert használunk a nagyobb tudományos programok végrehajtására. Mialatt ez a két rendszer sok szempont szerint hasonló, az egyik egy egyszerű processzor kiterjesztése, a másik pedig egy párhuzamos felépítésű számítógép. Az array processzorok nagy számú azonos processzort tartalmaznak, melyek ugyanazt a sor utasítást hajtják végre különböző adathalmazokon. A világ első array processzora az illinoisi ILLIAC IV volt, amit a 2-7. ábrán ábrázoltunk. (Bouknight et al., 1972). Az eredeti terv az volt, hogy építeni kell egy gépet, amely 4 kvadránst tartalmaz és mindegyiknek legyen egy 8*8-as négyzethálója processzor/memória alkotóelemekből. Kvadránsonként egy egyszerű vezérlőegység átadja az utasításokat, amelyeket a többi processzor hajt végre mindegyik a saját adatait használva a saját memóriájából. (amit az inicializációs szakasz alatt töltött le) Egy négyes faktor túlterhelése következtében eddig csak egy kvadránst építettek, de ez 50 megaflopnyi haladást jelentett. (million floating-point operations per second) ***[54-57] Azt mondják, hogy ha az egész gép kész lesz és megvalósította az eredeti teljesítménybeli célját, (1 gigaflop) megduplázná a világ számítástechnikai kapacitását. A vektorprocesszor a programozóknak úgy tűnik, hogy nagyon hasonló az array processzorhoz. Mint egy array processzor, nagyon hatékonyan hajtja végre a műveletsorozatot az adatelemek párjain. De amíg az array processzor minden fejlettebb műveletet, egyszerű, erősen pipeline-ozott számlálóban hajtja végre. A Seymour Cray által alapított Cray Research sok vektorprocesszort gyártott, kezdve a Cray-1-től 1974-ben és folytatva a jelenlegi modellekkel. ( A Cray Research ma az SGI része). Mind az array , mind a vektorprocesszorok vektortömbökkel dolgoznak. Mindkettő egyszerű utasításokat hajt végre, például két vektorként az elemeket párosával egymáshoz adja. De míg az array processzor ezt úgy csinálja, hogy annyi számlálója van mint ahány eleme a vektornak, addig a vektorprocesszornál megjelenik a vektorregiszter fogalma, amely egy készlet hagyományos regisztert tartalmaz, amit egyszerű utasításként be tud tölteni a memóriába, amelyet ténylegesen sorba tölt be a memóriába. Azután egy fejlettebb vektorutasítás végrehajtja két ilyen vektor páros összeadását úgy, hogy azokat egy pipeline-olt számlálóba adagolja a két vektorregiszterből. Az eredmény a számlálóból egy másik vektor, amelyet vagy eltárol egy vektorregiszterbe, vagy egyenesen egy operandusként használ fel egy másik vektorművelethez. Az array processzorokat még mindig gyártják, de folyamatosan csökken irántuk a kereslet, mivel csak azokon a problémákon működnek jól, amelyek ugyanazt a számolást igénylik egyidejűleg sok adathalmazon. Az array processzorok végre tudnak hajtani néhány adatkezelést, amivel eredményesebbek, mint a vektorszámítógépek, de ezek sokkal több hardwaret igényelnek és közismerten nehéz őket programozni. Ugyanakkor a vektorprocesszorokat hozzá lehet kapcsolni a hagyományos processzorokhoz. Az eredmény az, hogy a program vektorizálható részeit gyorsan végre lehet hajtani, a vektoregység előnyeit kihasználva, amíg a program többi részét végrehajtja az egyszerű processzor. Multiprocesszorok A feldolgozó alapelemek egy array processzorban nem független CPU-k, mivel csak egy irányítóegység osztozik rajtuk. Az első párhuzamos rendszerünk egy sokrészes processzorral a multiprocesszor. A rendszer, amely több, mint egy CPU-val osztozik a közös memórián, ahogy egy csoport ember osztozik egy teremben egy táblán. Mivel mindegyik CPU írni és olvasni tudja a memória bármely részét, összhangba kell hozni őket (a szoftverben), hogy elkerüljék az egymás útjába való kerülést. Megszámlálhatatlan megvalósítási forma lehetséges. A legegyszerűbb egy egyszerű busz sokrészes CPU-val és egy memóriával csatlakoztatva. Egy ilyen busz alapú multiprocesszor látható a 2-8.(a) ábrán. Sok cég csinál ilyen rendszereket. 2-8. (a): egy egyszerű buszos multiprocesszor.(b):egy multikompjúter helyi memóriákkal Nem kell hozzá sok képzelőerő, hogy rájöjjünk, ha nagyszámú gyors processzor ugyanazon a buszon keresztül próbálja elérni a memóriát, az konfliktushoz vezet. A multiprocesszor tervezők sok ötlettel jöttek elő, hogy csökkentsék ezt a versengést és növeljék a teljesítményt. A 2-8. (b) ábrán látható egy terv, ahol mindegyik processzornak ad egy saját helyi memóriát, ami nem elérhető a többi számára. Ezt a memóriát a programkódnak azon adott egységei használják, amelyhez nincs szükség osztozkodásra. Ezen memóriák elérésére nem használják a fő buszt nagy mértékben csökkentve ezzel a busz forgalmát. Más minták (pl. cachelés) is lehetségesek. A multiprocesszoroknak meg van az az előnyük a többi fajta párhuzamos számítógépekkel szemben, hogy könnyű dolgozni az egyszerű megosztott memória programozási modelljében. Képzeljünk el például egy programot, ami cellákat keres egy mikroszkópon át lefényképezett zsebkendőn. A digitalizált fényképet a közös memóriába tárolhatjuk úgy, hogy minden processzornak kijelöljük a fotó egy részét, hogy abban keressen. Mivel mindegyik processzor elérheti az egész memóriát nem probléma olyan cella tanulmányozása, amelyik az egyik területen kezdődik, de átlóg a másikba. Multiszámítógépek Bár a mikroprocesszorokat kis számú processzorra (<= 64) viszonylag könnyű építeni, nagyokat meglepően nehéz megalkotni. A nehézség az, hogy az összes processzort hozzá kell csatlakoztatni a memóriához. Hogy elkerüljék ezt a problémát sok tervező egyszerűen elvetette a közös memória ötletét, és csak olyan rendszereket épített, nagy számú összekapcsolt számítógépekből, hogy mindegyiknek volt saját memóriája, de nem volt közös memória. Ezeket a rendszereket hívják multiszámítógépeknek. A CPU-k egy multiszámítógépekben úgy kommunikálnak egymással, hogy e-mail-szerű üzeneteket küldenek egymásnak csak sokkal gyorsabban. Az olyan rendszerek, amelyben minden számítógép össze van kapcsolva, nem praktikusak, így olyan topológiákat, mint pl. 2D-s és 3D-s hálót, fát, gyűrűt használják. Ennek eredményeként az üzenetnek az egyiktől a másikig át kell haladnia egy vagy több köztes számítógépen vagy kapcsolón, hogy eljusson a forrástól a célig. Mindazonáltal az üzenetátadási idő mikroszekundumos nagyságrendben nagyobb nehézségek nélkül megvalósítható. Multiszámítógépeket közel 10000 CPU-val építettek és helyeztek üzembe. Mivel a multiprocesszorokat könnyű programozni és a multiszámítógépet könnyebb építeni, ezért folynak a kutatások a hibridrendszerek tervezésére, amelyek ötvözik mindkét előnyös tulajdonságot. Ezek a számítógépek megpróbálják a közös memória illúzióját létrehozni anélkül, hogy a tényleges kiépítésnek költségei lennének. A multiprocesszorokat és multiszámítógépeket részletesebben a 8. fejezetben tárgyaljuk. Elsődleges memória A memória az a része a számítógépnek, ahol a programok és az adatok tárolódnak. Néhány számítógéptudós (főleg a britek) inkább a raktár szót használják a memória helyett. bár a raktár szót egyre többet használják a lemezkapacitásra. A processzorok által írható és olvasható memória nélkül nem lennének digitális számítógépek. A bit A memória alapegysége a bináris számjegy, amit bitnek hívunk. A bit értéke 0 vagy 1 lehet. Ez a lehető legegyszerűbb alapegység. (Egy csak nullákat tároló készülék nehezen lehetne egy memóriarendszer alapja, legalább két érték szükséges.) Az emberek gyakran mondják azt, hogy a számítógépek azért használnak kettes számrendszert, mert hatékony. Amit mondanak (bár csak ritkán jönnek rá) az, hogy a digitális információt megkülönböztetve tárolhatják egy folytonos fizikai mennyiség értékei között, mint pl. a feszültség vagy az áram. Minél több értéket kell megkülönböztetni, annál kisebb a különbség két szomszédos érték között és annál megbízhatatlanabb a memória. A kettes számrendszerben csak két értéket kell megkülönböztetni. Logikusan így ez a legmegbízhatóbb módszer a digitális információ kódolására. Ha nem vagy gyakorlott a kettes számrendszerben, akkor nézd meg az A függeléket. Néhány számítógépet, mint pl. a nagy IBM főrendszerét, tizes és kettes számrendszerrel is hirdették. Ezt a trükköt úgy vitték véghez, hogy 4 bitet használtak egy tizes számrendszerbeli szám tárolására, amit BCD-nek (Binary Coded Decimal) hívtak. Négy bittel 16 kombináció érhető el, használva a 10 számjegyet 0-tól 9-ig és hat kombinációt nem használva. Az 1944-es szám így néz ki tizes számrendszerben és simán kettes számrendszerben 16 bitet használva: decimális: 0001 1001 0100 0100 bináris: 0000011110011000 . Tizenhat bit decimális formában a számokat 0-tól 9999-ig tudja tárolni, csak 10000 kombinációt adva, amíg a 16 bites tisztán bináris szám 65536 különböző kombinációt tud tárolni. Ezért mondják azt, hogy a kettes számrendszer hatékonyabb. Bár gondoljuk át mi történne, ha néhány kiváló elektromérnök feltalálna egy megbízható elektronikus eszközt , ami a számjegyeket 0-tól 9-ig tudná tárolni úgy, hogy a 0 és 10 volt közötti intervallumot 10 részre osztja. Négy ilyen eszköz bármilyen számot tudna tárolni 0 és 9999 között, és így 10000 kombinációt állítana elő. Ugyanúgy használhatnánk őket bináris számok tárolására úgy, hogy csak 0-t és 1-et használna, bár így négy csak 16 kombinációt tudna tárolni. Ilyen eszközökkel a tizes számrendszer nyilvánvalóan hatékonyabb lenne. Memóriacímek A memóriák cellákat tartalmaznak, amelyek mindegyike tud egy kis információt tárolni. Minden cellának van egy száma, amelyet címnek hívnak, és amelyre mindegyik program tud hivatkozni. Ha egy memóriának n cellája van, akkor 0-tól n-1-ig lesz a címzése. A memóriába minden cella ugyanannyi bitet tartalmazhat. Ha egy cella k bitet tartalmaz, akkor 2k bitkombinációt tárolhat. A 2-9-es ábra a 96 bites memória három különböző szerveződését mutatja. Vegyük észre, hogy a szomszédos celláknak egymást követő címzésük van. A számítógépek, amelyek a kettes számrendszert használják (beleértve a nyolcas és tizenhatos számrendszer jelölését a kettes számrendszerben) bináris számként fejezi ki a memóriacímet. Ha egy címnek m bitje van akkor a megcímezhető cellák száma 2m. Például ha egy címet nem hivatkozásra használunk a 2.9 (a) ábrán, 4 bitre van szükségünk a sorban, hogy kifejezzük az összes számot 0-tól 11-ig. Egy 3 bites cím elegendő a 2.9 (b) és (c) ábrának. A címekben a bitek száma determinálja a memóriában a közvetlenül elérhető cellák maximális számát, és független a cellánkénti bitek számától. ***[58-61] Cím Cím 1 rekesz Cím 644474448 ?? 8 bit?? ??? 12 bit??? ???? 16 bit????? (a) (b) (c) 2-9. ábra egy 96 bites memória 3-féle szervezése Egy egyenként 8 bites 212 rekeszes memóriának és egy egyenként 64 bites 212 rekeszű memóriának egyenként 12 bites címekre van szüksége. A 2-10-es ábrán látható néhány, üzleti célból eladott számítógép bit/rekesz adatai. A rekesz jelentése: a legkisebb, még címezhető egység. Az utóbbi években majdnem minden számítógépet gyártó cég a 8 bites rekeszt szabványosította, amelyet 1 byte -nak nevezünk. A byte-okat szavak ba csoportosítjuk Egy olyan számítógép esetében, melyben egy szó 32 bites 4 byte-ot számolunk szavanként; míg egy olyan gép esetében, melyben egy szó 64 bites ez az érték 8 byte szavanként. A szó tulajdonsága, hogy legtöbb utasítás az egész szóra hat, például ha két szót összeadunk. Így egy 32 bites gépnek 32 bites regiszterei vannak és olyan utasításkészlete, mely a 32 bites szavakra hat; míg egy 64 bites gépnek 64 bites regiszterei lesznek és olyan utasításai átmozgatásra, hozzáadásra, kivonásra és egyéb műveletekre melyek 64 bites szavakkal operálnak. 2.2.3 Byte elrendezés A byte-ok a szavakban balról jobbra, vagy jobbról balra számozhatók. Először úgy tűnhet, hogy a választás a két elrendezés között teljesen felesleges, de nemsokára látjuk majd, hogy igenis nagy jelentősége van. A 2-11 (a) ábra egy 32 bites gép memória darabját ábrázolja, melynek byte-jai balról jobbra számozottak, úgy, mint a SPARC-nál, vagy nagy IBM mainframe gépeknél.
2-10. ábra . Bit/rekesz értékek történelmünk érdekes üzleti gépeinél. A 2-11 (b) ábra egy hasonló ábrázolását mutatja egy ugyancsak 32 bites gép memóriájának jobbról balra számozásos esetben. Ilyenek az Intel család tagjai. Az első esetben a gépet bigendian computernek, míg a másodikat little endiannak . Ezek az elnevezések Jonathan Swift Gulliver utazásai nyomán születtek, melyben az író a politikusokat karikírozza azzal, hogy kemény vitákat folytatnak arról, hogy a lágy tojást a vastag végénél (big end), vagy hegyes végénél (little end) kell feltörni. A gépeknél a big endian a magasabb helyi értéktől való számozást, a little endian az alacsonyabb helyi értéktől valót jelenti. Ezt az elnevezést a számítógép architektúrában először Cohen 1981-es cikkében alkalmazta. Cím Big endian Little endian Cím
???? ???? Byte Byte ????-? 32 bites szó?????????-? 32 bites szó?????
(a) A big endian memória, (b) a little endian memória Fontos megértenünk, hogy mindkét rendszerben egy 32 bites egész, melynek értéke, mondjuk 6 balról 29 db. 0-val jobbról 110 kettes számrendszerbeli számokkal van ábrázolva. A big endian esetében a 110 bit a 3 (vagy 7, vagy 11, stb.) byte-ban van, míg a little endian esetében ezek a 0 (vagy 4, vagy 8, stb.) byte-okban találhatók. Mindkét esetben az egészet tartalmazó szó címe 0. Ha a számítógépek csak egészeket tárolnának, nem lenne semmilyen probléma. Ám sok alkalmazáshoz szükség van az egészek keveredésére, karakterláncokra (string), és más adattípusokra. Gondoljunk például egy egyszerű személyi rekordra, mely egy stringet (név) és két egészet (életkor, osztály) tartalmaz. A string végén egy, vagy több 0 áll, hogy kitöltsön egy szót. Ez így nézne ki egy big endian gépen: 2-12 (a) ábra. És egy little endian gépen: 2-12 (b) ábra, ha az adatok: Jim Smith, 21 éves, 260-as (1x256+4=260) osztály.
(a) (b) (c) (d) 2-12. ábra (a) Személyi rekord egy big endian gépnél, (b) ugyanez a little endiannál (c) a big endianból a little endianba való adatátvitel eredménye (d) a byte cserélés eredménye (c)-ből. Mindkét ábrázolás jó és nincs bennük belső ellentmondás sem. A problémák akkor kezdődnek, amikor az egyik gép megpróbálja elküldeni a rekordot a másiknak egy hálózaton keresztül. Tegyük fel, hogy egy big endian rendszer küldi a rekordot egy little endian rendszernek, időegységenként 1 byte-ot, kezdve a 0. byte-tól a 19. byte-tal bezárólag. (Optimisták vagyunk, és feltesszük, hogy a byte bitjei átvitel közben nem fordulnak meg). Így a big endian gép 0. byte-ja a little endian gép 0. byte-jára kerül és így tovább. Ez látható 2-12 (c) ábrán is. Amikor a little endian megpróbálja kinyomtatni a nevet, sikerül neki, de az életkor 21x224 lesz, és az osztályszámot is megcsonkítja. Ez a jelenség azért áll elő, mert az átvitel során egy szóban a karakterek sorrendje megfordul, ahogy kell, de az egész számban is felcserélődnek a byte-ok, aminek nem szabadna megtörténnie. Egy nyilvánvaló megoldás az lenne, hogy a software-el megfordíttatjuk a byte-okat aztán, hogy a másolás megtörtént. Ekkor a 2-12 (d) ábrán látható elrendezést kapjuk, melyben a két egész helyes lesz, viszont a karakterlánc ?MIJTIMS? lesz egy ?H?-val a végén, mely sehová sem tartozik. Ez a felcserélődés azért jön létre, mert olvasás közben a gép először a 0. byte-ot olvassa, utána az 1.-t, és így tovább. Valójában nincsen egyszerű megoldás. Egy lehetőség, amely működik, de nem hatékony az, hogy egy fejet iktatunk be minden adat elejére, amely megmondja, hogy milyen adattípus követi (string, egész, vagy más) és milyen hosszú. Így a fogadó gép csak a szükséges konverziókat hajtja végre. Bárhogyan is, de tisztában kell lennünk azzal, hogy a byte elrendezésben a szabványok hiánya jelentős kellemetlenségeket okozhat adatátvitel közben különböző gépeknél. 2.2.4 Hibajavító kódok A számítógépek memóriái néha hibákat vétenek a tápkábel feszültségingadozása, vagy egyéb okok miatt. A hibák elleni védekezésül néhány memóriafajta hibakereső, vagy hibajavító kódokat használ. Amikor ezeket a kódokat alkalmazza a memória, újabb biteket rak minden memória-szóhoz egy speciális módon. Amikor olvasásra kerül sor, ezek a bitek ellenőrzésre kerülnek, s a memória így veszi észre egyes hibák előfordulását Hogy megértsük, hogyan is kezeli a memória a hibákat, fontos, hogy először azt értsük meg, hogy mik is valójában a hibák. Tegyük fel, hogy egy memória-szó áll m adatbitből, amihez hozzáadunk r redundáns, vagy ellenőrző bitet. Legyen az egész hossz n (n=m+r). Egy n bites egységet, melyet m adat és r ellenőrző bit alkot n bites kódszó nak nevezünk. Adjunk meg két kódszót, mondjuk: 10001001 és 10110001. Meghatározhatjuk, hogy a megfelelő bitek közül hány különbözik. Estünkben ez szám 3. Hogy meghatározzuk, hogy hány bit különbözik, alkalmazzuk a két kódszóra a bitenkénti kizáró vagy műveletet (XOR) és számoljuk meg az 1-esek számát az eredményünkben! Azt a számot, amellyel két kódszó eltér egymástól Hamming-távolságnak is nevezik (Hamming, 1950). Tulajdonsága az, hogy ha két kódszó Hamming-távolsága d, akkor éppen d egyes hibára van szükség ahhoz, hogy az egyiket a másikba vigye. Például, ha a két kódszó 11110001 és 00110000, akkor Hamming-távolságuk éppen 3, így 3 egyes hibának kell történnie, hogy a két kódszót egymásba vigye. Egy m bites memória-szóban az összes 2mbit-elrendezés lehetséges, de az ellenőrző bitek számítási módja miatt a 2n bit-elrendezésből csak 2m bit-elrendezés érvényes. Ha a memória olvasás közben érvénytelen kódszót talál, gép tudni fogja, hogy memóriahiba történt. Ismerve az ellenőrző bitek számítási algoritmusát, készíthetünk egy teljes listát az érvényes kódszavakról, és erről a listáról kikereshetjük azt a két kódszót, melyek Hamming-távolsága a legkisebb. Ez a távolság lesz az egész kód Hamming-távolsága. A hibakeresés és hibajavítás tulajdonságai függnek a kód Hamming-távolságától. Ahhoz, hogy a gép d darab egyes hibát megkeressen d+1 távolságú kódra van szüksége, mert egy ilyen kóddal d darab egyes hiba képtelen egy érvényes kódszót egy másik érvényes kódszóra változtatni. Hasonlóan, ahhoz, hogy a gép d darab egyes hibát kijavítson 2d+1 távolságú kódra van szükség, mert így a lehetséges kódszavak olyan távolságra vannak egymástól, hogy még d bitnyi változtatás esetében is, az eredeti kódszóhoz még mindig közelebb vannak, mint a többihez, így ez egyedülálló módon meghatározható. Egy egyszerű példaként a hibakereső kódokhoz vegyünk egy olyan kódot, amelyben egy egyszerű paritás-bitet csatolunk az adathoz. A paritás-bit megválasztott, így az 1-es bitek száma a kódszóban páros (vagy páratlan). Egy ilyen kódnak 2 a távolsága, mivel bármely egyes bit hiba olyan kódszót generál, melynek rossza paritása. Tehát, ez a módszer csak egyes bithibák észlelésére alkalmazható. ***[62-65] ez két egybites hibát rendel hozzá egy ismert kódszóhoz egy másik kódszót. Ezt használhatjuk arra hogy megtaláljunk egyszeru hibákat.Amikor a szó a rossz paritást tartalmazza, amit a memoriából olvas be, a hibafeltétel teljesül. A program nem tud folytatódni, de legalább nincs helytelen számitás. Egy egyszeru példa a hiba-javitás kódra,amely négy ismert kódszót tartalmaz: 0000000000, 0000011111, 1111100000, és a 1111111111 Ennek a kódnak 5 távalsága van, ami azt jelenti hogy dupla-hibákat is ki tud javitani. Ha 0000000111 kódszó érkezik, a kapó tudja, hogy az eredeti kód a 0000011111 volt(ha nem volt dupla-hibánál több hiba). Ha valahogy egy tripla-hiba a 0000000000 - t kicseréli 0000000111 - re, a hiba nem javitható ki. Képzeld el ,hogy el akarunk tervezni egy kódot m adat-bit-tel és r vizsgáló-bittel, ami lehetové teszi minden egybites hiba kijavitását.Mindegyik kódszó a 2m ismert kódszó közül van n illegális kódszó az elso szinten.Ezek át vannak formálva szisztematikus invertálással, vagyis minden n bithez tartozik egy n-bites kódszó. Igy minden 2m ismert kódszóhoz szükséges n+1 bites minta dedikálása(az n lehetséges hiba és a javitó minta). Mikor a bit-minták teljes száma 2n, akkor (n+1)2m<2n. Felhasználva n=m + r kapjuk ,hogy (m + r + 1)<2r. Adott m, ez egy kisebb határt szab a tesztelobitek számát illetoen , amik az egyszerü hibákat javitják. A 2-13 számok megmutatják hogy mennyi tesztelobit szükséges a változó szóméretekhez. szó méret tesztelo bitek totál méret A fentiek aránya 8 4 12 50 16 5 21 31 32 6 38 19 64 7 71 11 128 8 136 6 256 9 265 4 512 10 522 2 2-13. A tesztelobitek száma abban a kódban amely az egyszeru hibákat javitja. Ez az ideálisan kisebb határ megvalósitható felhasználva Richard Hamming módszerét(1950).Mielott megnéznénk Hamming algoritmusát, nézzünk meg egy egyszeru grafikus reprezentációt , ami jól illusztrálja a 4-bites szavak hibajavitó kódját.A 2-14(a). venn diagramja tartalmaz három halmazt, A,B és C, melyek együt 7 halmazrészt alkotnak. Példaként vegyük egy 4-bites memóriaszó a 1100 kódolását az AB,ABC,AC és BC részhalmazokban, 1 bit egy részhalmazonként(ABC sorrendben). Ezt a kódolást mutatja a 2-14(a). kép. Azután mind a 3 üres halmazhoz hozzáadunk egy páros bitet, azért hogy a párosságot biztositsuk, ahogy ez a 2-14(b) ábrán is látható. Definiálva, a három halmazban(A,B,C) a bitek összege mostmár páros szám. Az A halmazban 4 szám van:0,0,1 és 1, amelyeket ha összeadunk 2 lesz belole, ami páros szám. A B halmazban a számok:1,1,0 és 0, amelyeket összeadva szintén 2-ot kapunk, amely páros szám. Végül a C halmzban ugyanezt kapjuk. Ennél a példánál az összes halmaz ugyanaz, de a 0 és a 4 összege más példákban is lehetséges. Ez az ábra egy jeligével egyezik meg:4 databit és 3 páros bit. Most tegyük fel hogy a bit az AC halmazban tönkre megy, a 0 - át 1 - re változtatva, ahogy a 2-14(c) ábrán is látható. A számitógép láthatja hogyaz A és C halmazokban rossz(páratlan) számok vannak. Az egyetlen módja annak, hogy ezt kijavitsuk (single-bit csere) az hogy az AC halmazt visszahelyezzük 0 - ra, és igy javitjuk ezt a hibát. Ily módon a számitógép automatikusan a single-bit memóriát. Most nézzük meg hogyan használható a Hamming féle algoritmus arra hogy létrehozzunk hibajavitó kódokat bármilyen méretu memória szóra.A Hamming kódban, r páros bitek az m-bites szóhoz vannak hozzáadva, igy m+r bit hosszuságú új szót létrehozva ezzel. A bitek meg vannak számozva, 1 - gyel és nem 0-val kezdodve, a bit 1- gyel a legbaloldalibb bit. Minden bit melynek bitszáma 2 hatványa,ezeket data-ra használják fel. Például:egy 16-bites szóval, 5 páros bitet adnak hozzá. 1,2,4,8 és 16 az páros bit, és az összes maradék data bit. Egyben, a memória szónak 21 bitje van(16 data és 5 páros bit). Páros számot fogunk használni ebben a példában.Minden egyes páros bit bizonyos bit helyet foglal el: a páros bit adott úgy hogy az 1s teljes száma az elfoglalt helyen páros. A páros bitek által elfoglalt helyzetek. Bit 1 teszteli 1,3,5,7,9,11,13,15,17,19,21 biteket Bit 2 teszteli 2,3,6,7,10,11,14,15,18,19 biteket Bit 4 teszteli 4,5,6,7,12,13,14,15,20,21 biteket Bit 8 teszteli 8,9,10,11,12,13,14,15 biteket Bit 16 teszteli 16,17,18,19,20,21 biteket. Általában a b bit azok a bitek által van elfoglalva b1,b2,..,bj olyan mint b1+b2+...+bj=b. Például,5-ös bit 1 és 4 bittel helyettesitheto, mert 1+4=5. A 6-os bit 2 és 4-vel helyettesitheto mert 2+4=6 etc.. 2-15. ábra egy Hamming féle kód felépitését mutatja:16bit memória szó 1111000010101110. A 21bites kód a 001011100000101101110. Hogy megnézzük hogy muködik a hibajavitás, vegyük figyelembe mi történne ha az 5-ös bit reciprokát vennénk.a hatványkitevoben. Az új kódszó a 001001100000101101110 lenne a 001011100000101101110 helyett. Az 5 páros bit helyettesitve lesz a köv eredménnyel: Páros bit 1 téves (1,3,5,7,9,11,13,15,17,19,21 tartalmaz öt 1s-t) Páros bit 2 helyes (2,3,6,7,10,11,14,15,18,19 tartalmaz hat 1s-t) Páros bit 4 téves (4,5,6,7,12,13,14,15,20,21 tartalmaz öt 1s-t) Páros bit 8 helyes (8,9,10,11,12,13,14,15 tartalmaz két 1s-t) Páros bit 16 helyes (16,17,18,19,20,21 tartalmaz négy 1s-t) Az 1s teljes száma az 1,3,5,..21 bitekben páros számnak kell lennie mert páros számokat használunk.A helytelen bit párossággal helyettesitett bitek egyike kell hogy legyen bit1, nevezetesen bit 1,3,5,7,..,21. Páros 4bit az helytelen, azt jelenti hogy a bitek egyike 4,5,6,7,12,13,14,15,20 vagy 21 helytelen.A hiba a bitek egyike kell hogy legyen mindkét listában/számsorban ,nevezetesen 5,7,13,15 vagy 21.Azonban, 2bit helyes kihagyva 7 és 15- ötöt. Hasonlóan bit 8 helyes kihagyva 13 -at.Végül, bit 16 az helyes, kihagyva 21-et. Az egyetlen megmaradt bit az bit 5, amely az egyetlen hibás.Mivel 1-nek volt olvasva, 0 kell hogy legyen. Ilyen módon,a hibákat ki lehet javitani. A helytelen bit megtalálására egyszeru módszer létezik, mégpedig: ki kell számitani az összes páros bitet. Ha mindegyik helyes, akkor nem volt hiba( vagy több mint 1). Azután össze kell adni az összes helytelen páros bitet, 1-et számolva bitnek, 1,2 bit 2-nek, 2,4 bit4 -nek etc.. A végeredmény a helytelen bit helye. Például: ha a páros bitek: 1 és 4 helytelen, de 2,8 és 16 helyes, bit5(1+4) volt megforditva. 2.2.5 Cache Memória Történelmi szempontból, CPU-k mindig gyorsabbak voltak mint a memóriák. Ahogy a memóriák fejlodtek, úgy a CPU-k is, megorizve a kiegyensúlyozatlanságot. Valójában ahogy lehetové válik hogy egyre több és több áramkört tegyünk egy chipre,CPU tervezok csovezetékekhez és szuperskalár muveletekhez használják ezeket az új lehetoségeket, és igy még gyorsabbá teszik a CPU-t. A memóriatervezok általában új technológiát használnak hogy növeljék a chipek kapacitását,nem a sebességet, igy a probléma rosszabbnak látszik egy ido múlva. Amit a kiegyensúlyozatlanság jelent a gyakorlatban az az hogy miután a CPU kiad egy memória parancsot,nem fogja megkapni a szót amire szüksége van sok CPU szakaszra. Minél lassab a memória,annál több szakaszt kell a CPU-nak várni. Amint azt már kiemeltük az elobb,két módja van a probléma megoldásnak. A legegyszerubb mód az hogy elkezdjük a READ memóriát amikor találkoznak de folytatja a végrehajtást és lassitani a CPU-t, ha egy instrukció megpróbálja hsználnia memória szót mielott az megérkezik. Minél lassabb a memória annál többször fog ez a probléma elofordulni, és annál nagyobb a büntetés amikor ez elofordul. Például: ha a memória késleltetés az 10 kör, nagyon valószínu, hogy a következo 10 instrukció megpróbálja a READ szót használni. A másik megoldás az, olyan gépeket használni, amelyek nem lassitanak de helyette a forditoprogram úgy fejlessze a kódot hogy használja a szavakat mielott azok megérkeznek. A baj az hogy ezt a feladatot könnyebb elmondani mint megtenni. Gyakran a LOAD után nincs semmi más tennivaló, igy a programot kényszerítjük hogy helyezze be a NOP( no operation) instrukciót,amely semmi mást nem tesz mint idot pazarol.Tulajdonképpen, a probléma nem a technológia, hanem a gazdaság. A mérnökök tudják hogy kell megépíteni a memóriákat amelyek gyorsak mint a CPU-k,de hogy teljes sebességen futtassák, el kell helyezniük a CPU chipjén(mert a memóriába jutás nagyon lassú). Nagy memóriát rakva a CPU-ra azt nagyobbá teszi, ami miatt drágább lesz, és még ha az árak nem is számítanának, akkor is meg van szabva mekkora lehet egy CPU chip. És itt jön ben az hogy vagy egy kicsi gyors memóriájú, vagy egy nagy lassú memóriájú chipet vegyünk. Amit mi szeretnénk az egy nagy , gyors memóriájú és olcsó. Elég érdekes hogy a technikákat/módszereket úgy ismerik hogy kicsi, gyors memóriájút egy nagy lassú memóriájút kombinálnak hogy megkapják a gyors memóriájú sebességét és a nagy memóriájú kapacitását elfogadható áron. A lassú, gyors memóriát cache -nek hivják( azt jelenti hogy elrejteni) Lent röviden leirjuk hogy a Cacheket hogy használják, és hogy muködnek. Az alapötletaz egyszeru: a leggyakrabban használt memóriaszavak a cacheben vannak tárolva. Amikor a CPU-nak szüksége van egy szóra, eloször a cacheben nézi meg. Csak ha a szó nincsen ott akkor megy a fo memóriába. Ha a szavak egy alapveto részea cache-ben van, az átlagos hozzáférhetoségi idot le lehet csökkenteni. ***[66-69] Nem készült el: Szabó Zoltán: h938341 ***[70-73] 70-73. oldalak A szalagok és az optikai lemezek általában nincsenek szabályozva, tehát a kapacitásukat csak a tulajdonos pénztárcája határozza meg. Harmadszorra, az elköltött pénzért kapott bitek száma csökkenti a hierarchiát. Jóllehet az árak gyorsan változnak, a központi memória dollárokban (egy megabájtért) mérhető, a mágneslemezes tároló pennykben (egy megabájtért), és mágnesszalag pedig dollárokban egy (gigabájtért) vagy annyiban sem. Eddig már beszéltünk a regiszterről, cache-ről és a központi memóriáról. A következő részekben beszélni fogunk a mágneslemezekről, azután pedig az optikai lemezekről. A szalagokkal nem foglalkozunk, mert alig használjuk őket, és sokat nem is lehetne mondani róluk. 2.3.2 Mágneslemezek A mágneslemez tartalmaz egy vagy több mágnesbevonatú alumínium korongot. Eredetileg ezeknek az átmérője 50 cm körül volt, de mostanság már csak 3-tól 12 cm-ig terjednek, de a notebook számítógépek lemezei már 3 cm alatt vannak, és még nincs vége. Az indukciós tekercses lemezfej a felszín felett "lebeg", csak egy vékony réteg levegő választja el a felszíntől (kivéve a floppy lemezt, ahol a fej hozzáér a felülethez). Amikor pozitív vagy negatív áramlatok mennek át a fejen, azok magnetizálják azt éppen csak a felület alatt, ezzel felsorakoztatva a mágneses részecskéket balra vagy jobbra, attól függően, hogy merről vonzza. Amikor a fej áthalad egy mágnese tér felett, akkor a pozitív vagy negatív áram begerjed a fejben, lehetővé téve azt, hogy az előzőleg tárolt adatokat visszaolvassa. Tehát amint a tálca forog a fej alatt, adatok áradatát lehet írni, és később visszaolvasni. A 2.19-es ábrán a lemez sávjának felépítése látható. A teljes körforgás alatt megírt adatok (bitek) sorozata egy sáv. Minden sáv fel van osztva meghatározott hosszúságú szektorra, általában 512 bájtot tartalmaz, azonban ezt megelőzi a bevezető rész, amely lehetővé teszi, hogy a fej szinkronba álljon a leolvasás vagy az írás előtt. Az adatok után következik az úgynevezett Hibaelhárító kód (ECC = Error-Correcting Code) (mindkettő Hamming kód) vagy a Reed-Solomon kód, ami több hibát ki tud javítani egyszerre. Az egymás utáni szektorok után következik az átszelő rés. Néhány gyártó átalakítatlan formában hivatkozik termékük kapacitására, de a becsületesebbek az átalakított formában, amiben nincs beleszámolva a bevezető rész, az ECC és a rés mint adat. Az átalakított. Az átalakított kapacitása általában 15 százalékkal alacsonyabb, mint az átalakítatlané. Minden lemeznek van mozgatható karja, ami képes kifelé és befelé mozogni a tengelyből más-más sugárirányú távolságban, amit a korong mozgat. Minden forgás után egy újabb programot lehet írni. Tehát a sáv: a tengely körül elhelyezkedő koncentrikus kör. Egy sáv szélessége attól függ, hogy mekkora a fej, és hogy milyen pontosan lehet azt sugárirányba elhelyezni. A mai technológiával 800-2000 sáv lehetséges centiméterenként, és a sáv szélessége 5-10 mikron között. A sáv nem egy érinthető barázda, hanem csak egy sima magnetizált anyagú gyűrű, apró védő területekkel körülötte, ami elválasztja a többi sávtól. A hosszirányú adatsűrűség a sáv körül különbözik a sugárirányútól. Mindez sokban függ attól, hogy milyen minőségű a levegő és mennyire tiszta a felszín. Jelenleg előállított lemezek elérik az 50000-100000 bit/cm sűrűséget. Tehát egy bit kb. 50-szer nagyobb sugárirányban, mint a kerületben. Hogy a magas minőséget megtartsák, a lemezeket gyárilag szigetelik, hogy a por és a kosz ne kerülhessen a lemezbe. Ezek a meghajtók, amiről a közelmúltban beszéltük a winchester lemezek. Az első ilyen meghajtóknak (először az IBM-től) volt 30 MB zárt, rögzített tárolója, és 30 MB levehető (eltávolítható) tárolója. Valószínűleg ezek a 30-30-as lemezek emlékeztették az embereket a 30-30-as Winchester puskákra, amik olyan nagy szerepet játszottak az amerikai határvidék nyitásában, és a "winchester" név ráragadt a lemezekre. Sok lemez tartalmaz egymás fölé rakott korongokat, mint ahogy azt láthatjuk a 2-20-as számú ábrán. Mindegyik felületnek megvan a saját karja és feje. Az összes kar egybe van kombinálva, és egyszerre tudnak mozogni más sugárirányú pozíciókban. A cylinder (cilinder) egy megadott sugárirányban lévő sávok összessége. Sok minden befolyásolhatja a lemez teljesítményét. Ahhoz, hogy írjon vagy olvasson egy szektort először a kart a jó sugárirányba kell mozdítani. Ez a keresés. Az átlagos keresési idő 5-15 mikro-szekundum alatt van. Amikor a fej sugárirányban van beállítva, van egy kis szünet, amit rotációs lappangásnak hívunk, amíg a kívánt szektor beáll a fej alá. A legtöbb lemez 3600, 5400 vagy 7200 fordulatot tesz meg percenként, és így az átlag szünetidő 4-8 mikro-szekundum. 10800-on forgó lemezek is elérhetőek. Az átviteli idő függ a hosszirányú sűrűségtől és a forgási sebességtől. Az átlagos átviteli arány, ami 5-től 20 MB / másodperc és az 512 bájtos szektor 25 és 100 nano-szekundum között van. Ezt követően a keresési időtől és a rotációs lappangástól függ az átviteli idő. A szektorok összevissza keresése a lemezen meglehetősen gazdaságtalan kezelésre utal. Érdemes megemlíteni, hogy nagyon nagy különbség van egy meghajtó maximális gyorsasági aránya (burst rate) és a maximális fenntartó aránya (sustained rate) között. A maximális burst rate az az adatarány, amikor a fej túlhalad az első adatbiten. A számítógépnek az adatokat nagyon gyorsan kell kezelnie. Igaz, hogy a meghajtó azt az arányt csak egy szektorig tudja fenntartani. Néhány használatnál, pl.: multimédia, ami számít az az átlagos sustained rate több másodpercen keresztül, amit figyelembe kell venni a szükséges kereséseknél és a rotációs késleltetéseknél is. Ahogy a lemezek forognak, 60-tól 120 forgás / másodpercig, úgy felforrósodnak és kitágulnak, megváltoztatva a tényleges geometriájukat. Néhány meghajtónak újra kell kalibrálni a beállító mechanizmusát időnként, hogy kompenzálódjon a táguláshoz. Ezt úgy teszik, hogy teljesen ki, vagy teljesen beerőltetik a fejet. Ilyen újrakalibrálások pusztítást is okozhatnak a multimédiás applikációk, mert azok több-kevesebb bit egyenletes áramlatát várják a maximális sustained rate-ban. Hogy kezelni tudják a multimédiás applikációkat, néhány gyártó audio-vizuális lemezmeghajtókat készít, amikben nincs meg az az ún. termális újrakalibráció. Egy kis gondolkodás, meg némi középiskolai matek elárulja (K=2(r), hogy a külső barázdáknak több a hosszirányú távolsága, mint a belsőnek. Minthogy az összes mágneses lemez állandó szögben és állandó sebességgel forog, mindegy, hogy a fej hol van, az a megfigyelés mindenképpen problémát jelent. A régebbi meghajtókban a lehető legtöbb hosszirányú sűrűséget használták a gyártók a legbelsőbb barázdákon, és sikeresen a legkevesebb a legkívül levőkön. Pl.: ha egy lemeznek 18 szektora volt, akkor minden egyes szektorban 20 ívfok volt, mindegy, hogy melyik cilinderben volt. Mostanság már stratégiát használnak. A cilindereket felosztják zónákra (átlagosan 10-30 meghajtóként) és minden zónában növelik a szektorok számát bentről kifelé menve. Ez a csere nehezebbé teszi az információ követését, de növeli a meghajtó kapacitását, ami fontosabb. Az összes szektor egyforma méretű. Szerencsére néhány dolog az életben nem változik. A meghajtóval van összekötve a lemezvezérlő, egy chip, ami irányítja a meghajtót. Néhány vezérlő tartalmaz teljes CPU-t. A vezérlő parancsokat kap a szoftvertől (olvasás, írás és lemezformázás), hibákat fedez fel és javít ki, és átalakítja a 8 egységes bájtokat a memóriából egy sorozatos egység hullámba és ugyanezt visszafelé. Néhány vezérlőnek nem jelent gondot több szektor egymásba ütközése sem, elrejtett szektorok olvasása jövőbeni használatra, és újratérképezni a rossz szektorokat. Ez az utolsó funkció hibás szektoroktól keletkezik, amiben maradandó magnetizálódás jön létre. Amikor a vezérlő felfedez egy rossy szektort, az helyettesíti azt egy tartalék szektorral, ami erre van megspórolva ugyanazon zónán vagy cilinderen belül. 2.3.3 Floppy lemezek (Hajlékonylemezek) A személyi számítógépek megérkezésével szükség volt találni egy utat a szoftver szétterjesztésére. A megoldás a floppy lemez (diskette) volt, kicsi és törhetetlen, mert hajlékony. A floppy lemezt eredetileg az IBM találta fel a saját karbantartására az alkalmazottak részére, de a személyi számítógépgyártók elsajátították azt, mert így sokkal kényelmesebb volt a helyzet a szoftverek eladásával kapcsolatban. Az általános tulajdonságai ugyanazok, mint azoknak a lemezeknek, amit eddig leírtunk, kivéve azt, hogy a kemény lemezeknél a fej nem ér hozzá a felülethez, de a floppynál igen. Ezért a média és a fej is viszonylag gyorsan elkopik. Hogy ezt a folyamatot, mármint a fej kopását, késleltessük, amikor a meghajtó nem ír vagy nem olvas éppen, akkor a személyi számítógép felhúzza a fejet és megállítja a forgást. Ebből adódóan, amikor a következő olvasó vagy író parancsot kapja, akkor van egy körülbelül 1/2 másodperces várakozási idő, amíg a motor felpörög a kívánt sebességre. Két méret létezik: 5.25 és 3.5 colos. Mindkettőnél van kisebb sűrűségű (LD = Low-Density) és nagyobb sűrűségű (HD = High-Density) változata. A 3.5-ösöknél kemény borításuk van, hogy jobban védjék azt, úgyhogy ezek nem igazán floppyk. Mivel a 3.5-ös lemezek több adatot képesek tárolni és jobban védettek, ezért lecserélték az 5.25-ösöket rájuk. A négy típus legfontosabb paraméterei a 2-21-es rajzon láthatók. 2.3.4 Az IDE lemezek A modern személyi számítógép lemeze az IBM PC XT lemezéből emelkedett ki, ami egy 10 MB-os ún. Seagate lemez volt, egy bedugható kártyán lévő Xebec lemezvezérlő által irányított lemez. A Seagate lemeznek 4 feje volt, 306 cilindere, és 17 szektora/sávonként. A vezérlő képes volt két meghajtót is ellátni. Az operációs rendszer a megfelelő paramétereket a CPU regisztereibe teszi, amikor a BIOS-t meghívja, amely a PC-k beépített ROM-jában található, így képes írni a lemezre ill. olvasni a lemezről. A BIOS kérésére a gép utasításai betöltödnek a lemezvezérlő regisztereibe és beállítják az átvitelt. ***[74-77] Balázs Csaba h938290@stud.u-szeged.hu Eleinte a meghajtóvezérlőt egy különálló kártyán helyezték el, ám ez a technológia hamarosan átalakult, és vezérlőt a meghajtóval egybeintegrálták. Ez az 1980-as évek közepén az IDE ( Integrated Drive Electonics ) meghajtókkal indult. Azonban, a BIOS hívás megállapodást nem változtatták meg, a visszafelé kompatibilitás miatt. Ezek a hívás megállapodások címezték meg a szektorokat úgy, hogy megadták azok fej, cilinder és szektor számát. A fej és cilinder számozás 0-tól indult és az szektor számozás 1-től. Ez a megoldás valószínűleg egy hibának volt köszönhető, amit a BIOS programozók azon része követett el, akik 8088 assemblerben dolgoztak. Az IDE-ben 4 bit a fejet, 6 bit a szektort és 10 bit a cilindert címezte, így a legnagyobb meghajtó 16 fejet, 63 szektort és 1024 cilindert tartalmazhatott, összesen 1.032.192 szektort. Ez a legnagyobb meghajtó maximum 528 MByte tárkapacitással rendelkezett, ami valószínűleg végtelennek tűnhetett abban az időben, de természetesen ma már nem. ( Ma már kifogásolható, ha egy új számítógép nem tud kezelni meghajtókat egy Terabyte felett ). Hamarosan megjelentek meghajtók 528 Mbyte felett, de rossz geometriával ( pl. 4 fej, 32 szektor, 2000 cilinder ). Nem volt lehetősége az operációs rendszernek ezek címzésére. Következménye: a lemezvezérlők azt kezdték tettetni, hogy a geometria a BIOS korlátokon belől van, de valójában a látszólagos geometriát a valós geometriára képezték le. Végül, az IDE meghajtók átalakultak EIDE ( Extended IDE ) meghajtókká, amelyek egy másodlagos címzési táblázatot használtak, az LBA -t ( Logical Block Addressing ), ahol a szektorok számozása már 0-tól indult és maximum 224-1 -ig tartott. Ennek a táblázatnak szüksége volt egy vezérlőre, hogy az LBA címet átalakítsa fej, cilinder és szektor címmé, de a határ 528 Mbyte volt. Az EIDE meghajtó és vezérlő más fejlesztéssel is rendelkezett, például képes volt 4 meghajtót kezelni 2 helyett, gyorsabb lett az átviteli sebesség, és tudott már CD-ROM meghajtót is kezelni. IDE és EIDE lemezek eredetileg csak Intel rendszerrel működtek, mert a kapcsolódási felülete az IBM PC busz pontos másolata volt. Azonban, ma számos más számítógép is használja az alacsony áruk miatt. 2.3.5 SCSI lemezek Az SCSI lemezek nem különböznek az IDE lemezektől a cilinder, sáv és szektor rendezésétől, de más a kapcsolódási felülete és magasabb átviteli sebességet tesznek lehetővé. Az SCSI története visszavezet Howard Shugarthoz, a floppy meghajtók feltalálójához, akinek a vállalkozása 1979-ben bevezette a SASI ( Shugart Associates System Interface ) lemezeket. Kis átalakítás és hosszú vita után, az ANSI szabványosította 1986-ban és megváltoztatta a nevét SCSI -re ( Small Computer System Interface ). Az SCSI-t "scuzzy"-nak ejtik. 1994-ben, az ANSI kiadta a korszerűsített szabványt, az SCSI-2 -t, amely jórészt lecserélte az eredeti SCSI-1 -et. A munka napjainkban is folyik az SCSI-3 -on, habár a szabványosítás már befejeződött. Néhány gyártó már teljesítette a követelményeket, hogy kialakítsák az SCSI-3 -at. Az SCSI meghajtók magas átvitelt tesznek lehetővé, ezért ezt a szabványos lemez a UNIX munkaállomásoktól kezdve a SUN, HP, SGI keresztül más rendszerig. Ez a szabvány a Macintosh gépeken és az újabb Intel PC-ken, különösen a hálózati szervereken. Néhány jobban elterjedt paraméter a 2.22. ábrán látható. 2.22. ábra:
Az SCSI több, mint egy merevlemez, egyben kapcsolódási felület is. Ez egy busz az SCSI vezérlőhöz, amelyhez több mint 7 eszközt lehet csatlakoztatni. Ez egy vagy több SCSI merevlemezt, CD-ROM-ot, CD írót, szkennert, kazettás egységet vagy más SCSI perifériát jelent. Mindegyik eszköz rendelkezik egy azonosítóval ( ID-vel ) 0-tól 7-ig ( 15-ig wide SCSI esetén), és két kivezetéssel: egy kimenttel és egy bemenettel. Az eszköz kimenetét összekötik a következő bemenetével, így sorban, mint a karácsonyfa lámpák fűzérét. Az utolsó egységnél azonban meg kell akadályozni a visszaverődést az SCSI busz végétől. A vezérlő egység általában egy kártyán helyezkedik el a kábeleknél, habár ez nem szigorú követelmény a szabványban. A legelterjedtebb kábel 50 vezetékes a 8 bites SCSI-hez, amelyből 25 testvezeték, amelyek egytől egyig párosítva vannak a másik 25-tel, így kitűnő zajmentességet nyújt a nagysebességű működéshez. A 25 vezetékből 8 adat, 1 paritás, 9 vezérlő jelet továbbít, a maradék áramot illetve néhány vezeték fenntartott későbbi fejlesztésre. A 16 bites és 32 bites eszközöknek szükséges egy második kábel használata a további jelek továbbítására. A kábel akár néhány méter hosszú is lehet, a külső meghajtók, szkennerek, stb. csatlakoztatására. Az SCSI vezérlők és perifériák kezdeményezőként vagy céleszközként is tudnak működni. Általában, a vezérlő a kezdeményező, amely kiadja a parancsokat a meghajtónak és más perifériáknak, amelyek a céleszközök. Ezek a parancsok 16 bytos blokkok, amelyek megmondják az eszköznek, hogy mit kell elvégeznie. A parancsok és válaszok előfordulhatnak azonos fázisban, ezért különböző vezérlő jeleket használnak, hogy észleljék az azonos fázisokat, és eldöntsék a busz hozzáférhetőségét, amikor több eszköz akarja használni a buszt egy időben. Ezek a döntések fontosak, mert az SCSI engedélyezi az eszközök párhuzamos működését, amely nagymértékű fejlesztés: több folyamat aktív egy időben ( pl. UNIX, Windows NT ). Az IDE és EIDE egyszerre csak egy eszköz működését engedélyezi. 2.3.6 RAID A CPU teljesítménye az utolsó évtizedben exponenciálisan növekedett, körülbelül 18 hónap alatt megduplázódik. Nem úgy mint a lemez teljesítmény. Az 1970-es években, átlagosan egy pozícionálási idő 50-100 msec között volt. A mostani pozícionálási idő 10 msec. A legtöbb technikai iparban ( pl. autógyártás, repülés ) 5-10-szeres teljesítménynövekedés következett be, de itt a számítástechnika zavart helyzetben van. Így a CPU teljesítmények és a meghajtó teljesítmények közti különbség még nagyobb, mint valaha. A párhuzamos működést többet és többet használják a CPU gyorsítására. Ugyanez a gondolat előfordult különböző embereknél, akik úgy gondolták a párhuzamos I/O feldolgozás is jó ötlet. 1988-ban egy tanulmányban, Patterson et al. javasolta 6 lemez speciális elrendezését, amely növelheti a lemez teljesítményét, a megbízhatóságát vagy mindkettőt. Ezt az ötletet hamarosan befogadta az ipar, és elindítottak egy új osztályú I/O eszközt, a RAID -et. Patterson et al. meghatározta RAID-et, mint Redundant Array of Disks ( Olcsó lemezek redundáns tömbje ), de az ipar az "I" betű jelentését megváltoztatta "Olcsó" helyett "Függetlenre". Mivel egy ellenfélre volt szükség ( mint a RISC ellen a CISC ), megjelent a SLED ( Singe Large Expensive Disk ). Az alapötlet a RAID mögött az volt, hogy helyezzenek el a számítógép mellett egy másik gépet tele lemezekkel, általában egy szervert, cseréljék ki a lemezvezérlőt RAID vezérlőre, másolják az adatokat RAID-re, és folytassák a megszokott működést. Más szavakkal, a RAID-nek úgy kellett tűnni az operációs rendszernek, mintha az SLED volna, sőt nagyobb teljesítményűnek és megbízhatóbbnak. Mivel az SCSI lemezek nagy teljesítményűek voltak és olcsók, képesek voltak 7 meghajtót kezelni egy vezérlővel ( 15 meghajtót wide SCSI-vel ), ezért a legtöbb RAID természetesen SCSI-t használt. RAID SCSI vezérlőből és a másik gép tele SCSI lemezekkel úgy jelent meg az operációs rendszer felé, mintha SLED volna. Így nem is voltak szükségesek szoftver változtatások, hogy használják a RAID-et. Minden RAID rendszer megosztotta az adatokat a meghajtókon, hogy engedélyezze a párhuzamos működése. Néhány különböző táblázatot határozott meg Patterson et al. ennek végzésére, ők csak a RAID 0. szint - 5.szintet ismerték, de volt ott több kisebb szint is. A "szint" szó elnevezés helytelen, mivel nem tartalmazott hierarchiát, mindössze hat különböző egységet jelent. A RAID 0.szintet a 2.23.(a) ábra mutatja. Bemutatja a SLED látszólagos szerkezetét RAID-ből, ahol a sávokat k szektorra osztották, 0-tól k-1 szektorig a 0. sáv, k-tól 2k-1 szektorig az 1. sáv, és így tovább. A RAID 0.szint egymásra épülő sávokat jelent a meghajtókon, ahogyan azt a 2.24. ábra mutatja be 4 meghajtó esetén. Az adatok elosztását többszörös meghajtókon stripping-nek nevezzük. Például, ha a program parancsot ad, hogy olvasson be egy adatrészt a négy következő sávból kiindulva, akkor a RAID vezérlő a parancsot négy különálló parancsra bontja, a négy lemez részére egyet - egyet, és végrehajtja azokat párhuzamosan. Így párhuzamos I/O művelet zajlik, anélkül, hogy a program tudná. A RAID 0.szint dolgozik a legjobban a nagy kérésekkel. Ha kérés nagyobb, mint a meghajtó számszor a sávok száma, néhány meghajtó összetett kérést fog kapni, így amikor végeztek az első kéréssel, kezdik a következőt. A vezérlő megosztja a kérést, eljutatja a megfelelő parancsot a megfelelő lemeznek megfelelő sorrendben, és az összetett válasz a memóriában lesz megfelelő módon. A teljesítmény kiváló és a végrehajtás pontos. A RAID 0.szint dolgozik azonban a legrosszabbul, ha mindössze egy szektor adatát kéri a program. Az eredmény helyes lesz, de a párhuzamos működés nincs kihasználva. A másik hátránya ennek az szervezésnek, hogy a megbízhatósága rosszabb, mint a SLED-é. Ha a RAID négy lemezből áll, összesen 20000 óra, körülbelül darabonként 5000 óra, ezután elromlanak és az összes adat elveszhet. A SLED 20000 óra után romlik el, amely négyszer olyan megbízhatóságot jelent. A RAID 1.szintet a 2.23. (b) ábra mutatja, ami az igazi RAID. Itt minden lemez meg van duplázva, így ott 4 elsődleges és 4 másolat lemez van. Írás során minden sávot kétszer ír, először az elsődleges, majd a másolat lemezre. Olvasáskor pedig csak az egyik példányt használja, megosztva a betöltést a többi meghajtóval. Tehát az írási teljesítménye nem jobb mintha csak egy meghajtó volna, de az olvasási teljesítménye kétszer olyan jó. A hibatűrése kitűnő: ha valamelyik meghajtó elromlik, a másik példányt használja helyette. Helyreállítás során egyszerűen be kell helyezni az új meghajtót és át kell rá másolni a másik példányt. ***[78-81]
A 0 és az 1-es szintekkel ellentétben, melyek szektorszalagokkal dolgoznak, a 2. szintű RAID szó alapon dolgozik, vagy akár byte alapon is. Képzeljük el, hogy egyetlen virtuális disk minden egyes byte-ját 4 bites darabokra osztjuk, majd mindegyikhez Hamming kódot adunk, hogy olyan 7 bites szót alkossunk, melynek az 1,2 és 4-es bitjei hibafelderítésre szolgálnak (paritás bitek). Továbbá képzeljük el, hogy a 2-23 c ábrán látható 7 meghajtót "óramutató" és "rotációs" helyzetek szerint szinkronizáljuk, ekkor lehetővé válik, hogy leírhassuk a 7-bites hamming -kódolt szót, úgy hogy minden meghajtóra 1 bitet. A Thinking Machine CM2-es számítógép használta ezt a sémát, 32 bites adatszavakat véve alapul, és hozzáadván a 6 paritás bitet, hogy egy 38 bites hamming szót alkosson, plusz 1 extra bitet a szó paritásának és így minden szót szétosztott 39 lemezmeghajtóra. A teljes átvitel mérhetetlen volt, mert 1 szektor idő alatt 32 szektornyi adatot tudott felírni. Egy meghajtó elvesztése nem okozott problémát, mivel 1 meghajtó elvesztése csupán 1 bitet vont el minden 39 bites beolvasott szóból, amot a hamming kód könnyedén tudott kezelni. Másrészt ez a séma minden meghajtó rotális szinkronizálását igényli és csak akkor van értelmezve, ha elég nagy mennyiségű meghajtóval rendelkezik (még 32 bites adatmeghajtónál és 6 paritás meghajtónál a felesleg csupán 19%). Ráadásul igénybe veszi a vezérlőt mivel minden bitnyi idő után végre kell hajtani egy hamming ellenörzést. A 3. szintű RAID egyszerűsített változata a 2. szintűnek (lsd 2-23 d ábra). Itt egyetlen paritásbitet számol minden egyes adatszóra és ír rá egy paritásmeghajtóra. Ugyan úgy mint a 2. szintű RAID -nél a meghajtókat tökéletesen szinkronizálni kell, mivel minden egyes adatszót több meghajtóra kell szétosztani. Első látásra úgy tünhet, hogy egy paritás bit a hibát csak felfedezni tudja, de kijavítani nem. A véletlenszerű fel nem fedezett hibák esetében ez a megfigyelés igaz. Azonban a meghajtó összeomlása esetén gondoskodik egy teljes 1 bites hibajavítóról, mivel a rossz bit helyzete ismert. Ha egy meghajtó összeomlik, a vezérlő csak tetteti hogy az összes bit 0. Ha egy szó paritás hibás, a bit a halott meghajtóról csakis 1-es lehetett, úgyhogy 1-esre javítandó. Annak ellenére, hogy a 2. és a 3. szintű RAID magos adatszintet biztosít, a másodpercenként kezelhető elkülöníthető I/O kérelmek száma semmivel sem jobb, mint egy meghajtó esetében. A 4-es és az 5-ös szintű RAID is szalagokkal működik, nem pedig külön paritás szavakkal, és nincs szüksége szinkronizált meghajtókra. A 4. szintű RAID (lsd. 2-23 e ábra) olyan mint a 0-ás szintű RAID, egy szalagról-szalagra paritással, melyet egy extra meghajtóra ír. Pl. ha mindegyik szalag k byte hosszú, minden szalagot egybeűzi EXCLUSIVE OR-ral, mely egy k byte hosszú paritás szalagot eredményez. Ha egy meghajtó összeomlik, az elveszet byte-ok visszafejthetők a paritás meghajtóból. Ez a forma megakadályozza a meghajtó elvesztését, de gyengén teljesít kis módosításoknál. Ha egy szektor megváltozik, be kell olvasni az összes meghajtót, hogy újrakalkulálhassuk a paritást melyet aztán újra kell írni. Lehetőség szerint beolvashatja a régi felhasználói adatokat és a régi paritás adatokat és újraszámolhatja belőlük a paritást. Még ezzel az optimalizálással is egy kis módosítás két olvasást és két írást igényel. A nehéz töltés következményeként a paritás meghajtón torlódás alakulhat ki. Ez a torlódás felszámolható az 5-ös szintű RAID ?del , a paritás bitek megzavarásával egységesen az összes meghajtón, kerek robin divat szerint, ahogyan azt a 2-23 f ábra mutatja. Mindemellett egy meghajtó összeomlás esetében a hibás meghajtó tartalmának újraépítése komplex folyamat.
lenül gyors fejlődésen mentek keresztül. Az első generációs optikai lemezt a holland Philips elektronikai konfomerátum találta fel. 30 cm-es átmérőjűek voltak és Laser Vision név alatt forgalmazták, de csak Japánba futott be. 1980-ban a Philips a Sonyval kifejlesztette a CD-t, mely gyorsan felváltotta a 331/3 RPM vinyl lemezt, ami zene rögzítésére szolgált. A CD közismertebb nevén (borítója alapján) Red Book pontos technikai adatait az International Standard (IS 10149) publikálta. (A nemzetközi mércéket az International Organization for Standardization adja ki, mely tagja a nemzetközi mércecsoportnak, mint pl. ANSI, DIN stb. Mind rendelkezik IS számmal). A lemez és a meghajtó specifikációk, mint nemzetközi szabvány megjelentetésének az volt a lényege, hogy lehetővé tegye különböző zenei kiadók, zenészek és különböző gyártók részére az együttműködést . Minden CD 120 mm átmérőjű és 1.2 mm vastag , egy 15 mm-es lyukkal a közepén. Az audio CD volt az első világpiaci digitális tárolási médium. 100 évig kellene kitartaniuk. Ellenőrizd le 2080-ban, hogy sikerült az első CD-k nek. A CD-k nagyerejű vörös lézer segítségével készülnek, mely 0,8 mikron átmérőjű lyukakat éget a beborított eredeti (master) üveg lemezbe. Ebből egy öntőminta készül, kis dudorokkal a lézer égette lyukak helyében. Ebbe a mintába olvasztott polikarbonát gyantát injekcióznak, hogy kialakuljon a CD, mely az eredeti üveg lemez lyuk mintázatát tartalmazza. Ekkor egy nagyon vékony tükröződő alumínium réteg kerül a polikarbonátra, erre pedig egy védő lakkréteg, s végül pedig minta (cimke). A mélyedéseket a polikarbonát alapban Pit-eknek (gödröknek) hívjuk, az érintetlen területeket pedig mezőknek (Land). Visszajátszáskor egy sokkal gyengébb erejű 0,78 mikron hullámhosszú vörös lézerdióda pásztázza végig a gödröket és a mezőket. A lézer a polikarbonáttal bevont oldalon fut, így a gödrök dudorokként állnak ki a lézer felé, az amúgy sima felszínen. A gödrök magassága ź a sugár hullámhosszának, ezért a gödrökből visszaverődő fény fél hullámhosszal fázison kívül esik a környező felületről visszaverődő fényhez képest. Ennek eredményeként a két sugár rombolóan interferál (gyengítik egymást) és kevesebb fény jut vissza a lejátszó fénydetektorába, mint a mezőről visszaverődő fény. Így különbözteti meg a lejátszó a gödröt (pit) és a mezőt (land). Bár úgy tűnik a legegyszerűbbnek, hogy a pit?hez 0-t a land-hez 1-et rendeljünk, mégis sokkal megbízhatóbb pit/land, land/pit átmenethez 1?et, ennek hiánya esetén 0-át rndelni, így ez a séma van használatban. A gödrök és a mezők egyetlen folytonos spirálra vannak írva, mely középről halad kifelé és 32 mm-es utat tesz meg a CD széléig. A spirál 22,188 fordulatot tesz meg a lemez körül (kb. 600-at mm-enként). Széttekerve 5,6 km-t tenne ki. (A spirál a 2-24-es ábrán látható.) Hogy a zene egységes mértékkel szóljon, szükséges hogy a gödrök és a mezők állandó, lineáris sebességgel haladjanak. Következésképpen a CD forgásának sebességét állandóan a csökkenteni kell, ahogy az olvasófej a CD belsejétől a külseje felé mozog. Belülről a forgás mértéke 530 RPM (rotate per minute), hogy elérje a 120cm/másodperc áramlási sebességet. Kívülről le kell hogy csökkenjen 200 RPM-re, hogy ugyan azt a lineáris sebességet tartsa. Egy állandó lineáris sebességű meghajtó eltér a mágneses lemezmeghajtótól mely állandó sebességgel működik, függetlenül attól, hogy a fej pillanatnyilag milyen helyzetben van. Az 530 RPM messze esik attól a 3600 - 7200 RPM-től mellyel a legtöbb lemez forog. 1984-ben a Philips és a Sony rájött, hogy a CD potenciális számítógépes adattároló, és kiadták a Yellow book-ot mely megteremtette a mai CD-ROM-ok (Compact Disk ? Read Only Memory) szabványát. Hogy CD-Romok felvegyék a versenyt a már kialakult audió CD piaccal, a CD-Romokat ugyanakkora méretűre tervezték, mint az audió CD-ket, mechanikusan és optikusan is kompatibilisek, megegyezett a gyártási technológiájuk is. Eme döntés következményei azok a lassú és változtatható sebességűmotorok ?.. ***[82-85] Amit a Yellow Book definiált, az lett a számítógépes adatok formája. Ez is javította a rendszer hibajavítási képességét. Ez egy lényeges lépés volt, mert igaz, hogy a zenekedvelők nem vették észre egy-egy bit elvesztését itt és ott, de a számítógép használók említették, hogy ez nem az igazi. A CD-ROM minden byte-ot 14 bites symbol tárolja. Észrevehettük, hogy 14 bit elég ahhoz, Hamming féle kódolással lekódoljunk egy 8 bites byte-ot 2 bit elhagyása nélkül. Valójában, ez egy erősebb tároló rendszer. A 14-8-as elrendezés az olvasás miatt van kialakítva a hardweren a table lookup által. A következő szint, egy 42 symbolt összefogó csoport az 588 bites frame. Minden frame tartalmaz 192 adatbitet (24 byte). A maradék 996 bitet hibajavításra és ellenőrzésre használják. Mostanáig ez a tervezet egyenlő az audio CD-knél és a CD-ROM-oknál. A szabvány 98 frame-t egy csoportba, a CD-ROM szektorba sorolt, amint azt mutatja 2-25-ös ábra. Minden CD-ROM szektor egy 16 byte-os bevezetővel kezdődik, az első 12 00FFFFFFFFFFFFFFFFFFFF00 (hexadecimal), amely arra szolgál, hogy a lejátszó felismerje a CD-ROM szektor kezdetét. A köv. három byte a szektor számát tartalmazza. Ez szükséges, hiszen egy CD-ROM-on keresni (mely egy szimpla adatspirál) sokkal nehezebb, mint egy mágneses lemezen, ami egyforma konkrét sávokból áll. A keresésnél a szoftver a meghajtóban kiszámítja, hogy kb. hova kell mennie, odaviszi a fejet, és akkor elkezdi keresni a bevezetőt, hogy jó volt e a számítása. A bevezető utolsó byte-ja a mód. 14 bites symbol 42 symbolt tartalmaz egy frame 588 bites frame mindegyike 24 adatbytot tartalmaz Bevezető 98 frame épít fel egy szektort Ą | | adat | ECC | 2. 25. ábra Logikai adatelrendezés a CD-ROM-on A Yellow Book két fajta módot definiált. 1-es mód a 2-25-ös ábra szerinti elrendezést használja: 16 byte bevezető, 2048 adatbyte és egy 288 byte-os hibajavítási kód (nemzetközileg elfogadott Reed Solomon kód). 2-es mód kombinálja az adat és ECC (Error Correcting and Control) területet egy 2336 byte-os adatterületbe, azoknál a felhasználásoknál, ahol nem szükséges (vagy ahol az idő nem engedi, hogy elvégezze) a hibajavítás (t), mint az audio és video anyagoknál. A megbízhatóságról 3 különböző hiba-javító rendszer gondoskodik: a symbol-on belül, a frame-ban és a CD-ROM szektorban. Egyszeri bit hibákat a legalacsonyabb szinten javítanak, rövid sor, hasadék hiba javítása a frame szintjén történik, és akármilyen visszamaradó hibát a szektorszinten küszöböli ki. Az ár, amit fizetni kell ezért a megbízhatóságért, 98 db. 588 bites framet (7203 byte) tesz ki egy egyszerű 2048 byte-os adatnál így a hatásfok csak 28 %. Egyszeres sebességű CD-ROM meghajtó 75 sector/sec sebességű, amely adatban mérve 153600 byte/sec 1-es módban, és 175200 byte/sec 2-es módban. Kétszeres sebességű meghajtónál kétszeres a gyorsaság STB. a magasabb szintű sebességeknél is. Egy átlagos audio CD 74 perces zenét tud letárolni, amely ha 1-es módot használ, a kapacitása 681 984 000 byte. Ez az alak általában 650 Mb-ot jelent, mert 1 Mb=230 byte (1 048 576 byte), nem pedig 1 000 000 byte Megjegyezzük, hogy egy 32XCd-ROM meghajtó (4 915 200b/sec) nem ér fel egy gyors SCSI-2 mágneseslemez-meghajtóval (10 Mb/sec) habár sok CD-ROM meghajtó használ SCSI interface-t (IDE CD-ROM meghajtók már léteznek). Ha te valóban kíváncsi az időbeli eltérésre, a különbséget néhány száz millisec.-ban kell érteni, de azt tisztázni kell, hogy a CD-ROM nem sorolható egy kategóriába a mágneseslemez-meghajtóval a kapacitásuk miatt. 1986-ban a Philips újra meglepetést okozott a Green Bookkal, hozzáadta a grafikát és az INTERLEAVE audio képességét, video és adat együtt a szektorban: egy lényeges arcvonása a multimédia CD-ROM-oknak Az utolsó darabja a CD-ROM összetételének a file rendszer. Ahhoz, hogy ugyanazt a CD-ROM-ot lehessen használni a különböző számítógépeken, egy megegyezésre volt szükség a CD-ROM file rendszerekről. Hogy ez a megegyezés létrejöjjön sok számítógépes cég képviselője találkozott a Tahoe tónál High Sierras-ban California-Nevada határán és megterveztek egy file rendszert, melynek neve High Sierra. Ezt később kiterjesztették nemzetközi szabvánnyá (IS 9660). Ez három szintes: 1. szinten a file neve max. 8 karakteres, majd ezt követhette a max. 3 karakteres kiterjesztés (mint az MS-DOS file -nál). A file neve legfeljebb betűt, számot és aláhúzást tartalmazhat. A könyvtárak 8 karakter hosszúak lehetnek, de a könyvtárak neve nem tartalmazhat kiterjesztést. Az 1-es szint megköveteli, hogy minden file legyen e határon belüli, ami nem jelent problémát egyszeresen író módnál. Minden CD-ROM, mely egyeztetve van az IS 9660-as szabvány 1-es szintjével, olvasható MS-DOS-on, Apple számítógépeken, UNIX gépeken, vagy bármelyik másrendszeren. A CD-ROM készítők figyelembe vették ezt a sajátosságot, mint egy nagy plusz tényezőt. IS 9660 2. Szintje biztosítja a nevek 32 karakteres hosszúságát, és a 3. Szintnek nincsenek határai. A Rock Ridge kiterjesztés (szeszéjes nevét egy városról kapta a Gene Wilder főszereplésével készült Blazing Saddles c. filmből) engedélyezi a nagyon hosszú neveket (UNIX-nál), UID, GID használatát, és jelképes láncolatokat, de ezek a CD-ROM-ok nem 1-es szintűek, emiatt nem olvasható minden számítógépen. A CD-ROM ?ok különösen népszerűvé váltak az ezeken kiadott játékok, mozik, enciklopédiák, atlaszok, és mindenféle ajánlott munkák által. A legtöbb kereskedelmi software most CD-ROM-on jelenik meg. A nagy kapacitás és olcsó előállítás kombinációja tette kényelmessé végtelen sok helyen való alkalmazását. 2. 3. 8 CD-Recordables (CD-írók) Kezdetben a berendezéseknek elő kellet állítani egy master CD-ROM-ot (v. audio CD-t abból az anyagból), ez nagyon költséges volt. De mint az szokás a számítógép iparban, semmi sem marad tartósan drága. Az 1990-es években a CD-író már nem nagyobb, mint a CD lejátszó, ami mint átlagos periféria kapható bármely számítógép üzletben. Ezek az eszközök még különböztek a mágneses lemezektől, mert egyszer írhatóak, CD-ROM-ról nem lehet törölni. Gyorsan kitaláltak egy helyet, mint háttértár a nagy merevlemezek helyett, és biztosítottak egyéneknek és kezdő cégeknek saját, kisfutású CD-ROM-ot, v. készítettek master-t eladásra, nagytömegű kereskedelmi CD másolási tervekhez. Ezeket a meghajtókat úgy ismerik, mint CD-R (CD-Recordables) Fizikailag a CD-R egy 120mm-es polycarbonát üres lemezzel kezdődik, mint a (gyári) CD-ROM, kivéve azt, hogy tartalmaz egy 0. 6 mm széles sávot, amit a lézer használ írásnál. A sávnak van egy 0. 3 mm szinuszos kitérése, pontosan 22, 05 KHz-nél, hogy ellássa folyamatosan feedback-kel, így a forgás sebességét pontosan tudják ellenőrizni, beállítani, ha szükséges. CD-R úgy néz ki, mint egy normális CD-ROM, kivéve, hogy felül aranyszínű, ezüst helyett. Az arany szín a valódi arany rétegtől származik, ez tükröződik vissza az alumínium helyett. Az eltérés abból is adódik, hogy az ezüst CD-nek a fizikai préselése, míg a CD-R-nél a különböző pitek visszaverődése szimulálja a visszatükrözést. Ezzel készen is volnánk, feltéve, hogy ha hozzáadjuk a színréteget a polycarbonát és a visszatükröződő aranyréteg közé, amint azt a 2-26-os ábra is mutatja. Két fajta színréteg van használatban: a cianid, ami zöld színű és a pthalocianid, amely narancssárga színű. A vegyészek már végtelen sok állítást tettek, hogy melyik a jobb minőségű. Ezek színek hasonlóak a fényképezésnél használtakhoz, ez megmagyarázza, miért a Kodak és a Fuji a vezető gyártók a CD-R-eknél. A kezdeti állapotban a színréteg átlátszó, és átengedi a lézerfényt, és az visszatükröződik az aranyrétegről. Írásnál a CD-R lézer magasabb energiát (8-16 mW) vesz fel. Mikor a sugár áttör a színréteg egy pontján, akkor a vegyi összetevők megváltoznak. Ez a változás a molekuláris struktúrában készít egy sötét pontot. Amikor visszaolvassa (0, 5 mW-on) a photodetector (fénydetector), különbséget lát sötét folt (ahol a színmegtört) és átlátszó terület (ahol a szín sértetlen maradt) között. Ez a különbség van úgy értelmezve, mint a pit, és a felület közötti különbség, mindig, ha visszaolvassák egy átlagos CD-ROM olvasón, v. audio cd lejátszón. Egy nem újfajta Cd sértette volna a színes könyvek büszkeségét, így a CD-R megkapta az Orange Book-ot, melyet 1989-ben adtak ki. Ez a dokumentum definiálta a CD-R-t és egy új formát is: CD-ROM XA, amely biztosította a CD-R-ek újra és újra írását, egy kevés szektor ma, egy kevés holnap, egy kevés a következő hónapban. Az egymásra következő szektorcsoportokat (melyek meg vannak írva) CD-ROM track-eknek hívják. Az egyik az első alkalmazható CD-R-ek közül a Kodak PhotoCD volt. Ebben a rendszerben a vásárló hozott egy tekercs exponált filmet, és az ő régi PhotoCD-jét a fotó processorhoz, és elment a PhotoCd-jével, amin rajta voltak az új képek a régiekkel együtt. Az új adagot, amelyik a negatívok beszkennelése által készült, felírják a PhotoCD-re mint egy külön CD-ROM track. Az újra és újra írás szükséges volt, mert egy üres CD-R túl drága volt ahhoz, hogy minden tekercs filmnél egy újat kapjon. Nyomtatott címke Védő réteg Visszatükröző arany réteg Szín réteg Sötét pont a színrétegben a lézer által kiégetve az írásnál Polycarbonát alsóréteg ß Mozgásirányítás Lencse photodetector prizma Égető lézer dióda 2-26. ábra CD-R lemez és lézer keresztmetszete (nem méretarányos). Egy ezüst CD-ROM hasonló felépítésű, kivéve azt, hogy nincs színréteg, és aranyréteg helyett alumíniumréteg van Csakhogy az újra és újra írás egy új problémát hozott elő. A régebbi Orange Book minden CD-ROM-ot egyszeri VTOC (Volume Table Of Contents ~ állomány táblázat tartalma) ?kal látott el a lemez elején. Ez a séma nem működött az újra és újra írásnál (azaz a multitrack-nál). Az Orange Book írói ezt úgy oldották meg, hogy mindegyik track-nak adtak saját VTOC-ot. A file-okat besorolták a VTOC-ba, beleértve az előző track néhány, v. az összes file-ját. Miután a CD-R-t betették a meghajtóba, az operációs rendszer átnézi az összes CD-ROM track-et, hogy lokalizálja a legtöbb szabad VTOC-ot, ez adja a lemez forgását. Emelet keres néhány file-t, de nem mindet az előtte lévő track-ből az érvényes VTOC-ból, mert az lehetséges, hogy azt a látszatot kelti, hogy a file törölve van. A track-ek csoportosíthatók session-okba, ami multisession-os CD-ROM-hoz vezet. Az átlagos audio CD lejátszó nem tudja kezelni a multisession-os Cd-t, amióta elvárják a szimpla VTOC-ot a lemez kezdeténél. Minden track írható sima folyamatos rendszerben, megállás nélkül. Ennek a következménye, hogy a merevlemeznek, amelyikről az adat áramlik, elég gyorsnak kell lennie ahhoz, hogy azt időben átadja. Ha a file másolás kiterjed az egész merevlemezre, akkor a keresési idő a CD-R-re való adatfolyamot ?kiszáríthatja?, és ez Buffer kiürülést okozhat. A Buffer kiürülésének következménye, hogy te hozzájutottál egy szép, fényes (de egy kissé drága) alátéthez az italodnak, v. egy 120mm-es aranyszínű frisbee-hez. A CD-R software-k általában felkínálják azt az opciót, hogy összegyűjti az összes bemenő file-t egy szimpla, határos 650 Mb. CD-ROM-ot megszemélyesítő helyen, és csak azután írja rá a CD-R-re. De ez az eljárástípus megkettőzi az eredeti írási időt. Ehhez szükséges egy 650 Mb. szabad terület a merevlemezen, és? ***[86-89] A CD-R lehetővé teszi magánszemélyeknek és társaságoknak, hogy egyszerűen másoljanak CD-ROM-okat és audio CD-ket, általában megsértve ezzel a kiadó szerzői jogait. Számos módszert dolgoztak ki, hogy az efféle kalózkodást megnehezítsék és hogy bonyolultabbá tegyék egy CD-ROM más szoftverrel történő olvasását. Ezen módszerek egyike az, hogy a fájlok méretét a CD-ROM-on több gigabyte-nak tüntetik fel, kudarcra ítélve ezzel minden olyan kisérletet, hogy a fájlokat másoljanak a CD-ROM-ról a winchesterre hagyományos másolószoftverekkel. A fájlok valódi méretét vagy a kiadó szoftverébe építik be, vagy szokatlan helyre írják a CD-ROM-on. Egy másik módszer szándékosan hibás ECC-t helyezni bizonyos szektorokba, azt várva, hogy a hagyományos másolószoftverek "kijavítják" a hibákat. A CD-ROM szoftvere ellenőrzi az ECC-ket és ha azok helyesek, akkor nem hajlandó tovább futni. A sávok közötti távolság változtatása, valamint egyéb fizikai "hibák" alkalmazása ugyancsak számításba jöhet. 2.3.9 Újraírható CD-k (CD-RW) Bár az emberek már hozzászoktak az egyszer írható adatrögzítőkhöz, mint pl. a papír vagy a film, igény van újraírható CD-ROM-ra is. Már létező technológia a CD-RW (CD-ReWritable, újraírható CD) , amely ugyanakkora, mint a CD-R. A CD-RW-n azonban cianin vagy phtalocianin bevonat helyett ezüstből, indiumból, antimonból és tellúrból álló ötvözetet alkalmaznak rögzítőrétegként. Ennek az ötvözetnek két stabilis állapota van: egy kristályállapot és egy amorf állapot, amelyek különböző mértékben verik vissza a fényt. A CD-RW meghajtó lézerének három erősségi fokozata van. A legerősebb fokozaton a lézer megolvasztja az ötvözetet, átalakítva azt kristályállapotúból a fényt gyengén visszaverő amorf állapotúba, ezzel mélyedést jelölve. A középső fokozaton az ötvözet megolvad és visszanyeri természetes kristályszerkezetét, ezzel síma területet képezve. A legalacsonyabb erősségi fokozaton a lézer a felület állapotát vizsgálja (olvasáshoz), de nem változtat az anyag szerkezetén. A CD-RW azért nem váltotta még fel a CD-R-t, mert az üres CD-RW sokkal drágább az üres CD-R-nél. Ezenkívül a CD-R egyszeri írhatósága, letörölhetetlensége nagy előny a biztonsági mentéseknél. 2.3.10 DVD Az CD/CD-ROM szabvány alapjait 1980-ban fektették le. A technológia fejlődött azóta, így nagyobb kapacitású optikai lemezek is gazdaságosan megvalósíthatók már és az igény is nagy rájuk. Hollywood nagyon szeretné az analóg videoszalagokat digitális lemezekre cserélni, hiszen ezek jobb minőségűek, olcsóbban előállíthatóak, tovább tartanak, kevesebb helyet foglalnak az üzletek polcain és nem kell őket visszatekerni. A szórakoztató-elektronikai társaságok is keresnek egy új szenzációs terméket, a szoftvergyártók pedig szeretnének termékeikhez multimédia-lehetőségeket adni. A technológia és e három roppantul gazdag és rendkívül befolyásos iparág igényének ilyen kombinációja vezetett a DVD -hez, amely eredetileg a Digital Video Disk (digitális video-lemez), most már a Digital Versatile Disk (digitális sokoldalúan felhasználható lemez) rövidítése. A DVD alapjaiban ugyanaz a konstrukció, mint a CD, 120 mm-es fröccsöntött polikarbonát lemez, amely lézer diódával megvilágított és fényérzékelővel olvasott mélyedéseket és síma felületeket tartalmaz. Az újdonságok: 1. Apróbb mélyedések (0,4 mikron a CD-k 0,8 mikronjához képest) 2. Sűrűbb spirál (0,74 mikron a sávköz a CD-k 1,6 mikronjához képest) 3. Vörös lézer ( 0,65 mikronos hullámhossz a CD-k 0,78 mikronjához képest) Ezek a fejlesztések együttesen a tárolókapacitást hétszeresére növelik, 4,7 GB-ra. Az 1x DVD meghajtó 1,4 MB/s-on működik (szemben a CD 150 KB/s-ával). Sajnos a bevásárlóközpontokban is alkalmazott vörös lézerre történő átállás azt jelenti, hogy a DVD meghajtóknak szükségük van egy másik lézerre vagy különleges átalakító-optikára ,hogy a CD-ket is olvasni tudják, amelyre nem mindegyik képes. Ezenkívül a CD-R-ek és CD-RW-k DVD meghajtón történő olvasása nem biztos, hogy lehetséges. Elég-e 4,7 GB? Talán. Az MPEG-2 tömörítő-eljárás (IS 13346-os szabvány) használatával egy 4,7 GB-os DVD-lemezre ráfér 133 perc teljes képernyős film 720x480-as felbontásban a hozzá tartozó hanganyaggal nyolc nyelven, további 32 nyelven feliratozással. Mindazonáltal néhány alkalmazás, mint pl. multimédiás játékok,kézikönyvek még ennél is több helyet foglalhatnak, a filmipar szeretne több filmet egy lemezre feltenni, ezért négy formátumot határoztak meg: 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) Miért ennyi formátum? Egy szóval: politika. A Philips és a Sony egyoldalas, egyrétegű lemezeket akart, a Toshiba és a Time Warner ezzel szemben kétoldalas, egyrétegű DVD-t szeretett volna. A Philips és a Sony szerint az emberek nem akarják a lemezeket fordítgatni egyik oldalról a másikra, a Toshiba és a Time Warner pedig nem hitt a kétrétegű lemez megvalósíthatóságában. Kompromisszum született: mind a 4 kombinációt szabványosították, a piac fogja eldönteni, melyik lesz sikeres. A kétrétegű lemeznek van egy visszaverő réteg az alján, rajta egy félvisszaverő réteggel. Attól függően, hogy hova van a lézer fókuszálva, ugrál az egyikről a másikra. Az alsó rétegen kissé nagyobb mélyedéseket és síma felületeket kell képezni, ezért tárolókapacitása valamivel kisebb, mint a felső rétegé. A kétoldalas lemezek két 0,6 mm-es egyoldalas lemez összeragasztásával keletkeznek. Azért, hogy az összes változat ugyanolyan vastag legyen, az egyoldalas lemez is két 0,6 mm-es lemezből áll, amelyből az egyik alkalmatlan adatok tárolására (lehet, hogy a jövőben 133percnyi hirdetést tesznek rá, hátha az emberek kiváncsiak lesznek, mi van rajta). A kétoldalas, kétrétegű lemez szerkezetét a 2-27-es ábra mutatja. Polikarbonát anyag 1 0,6 mm-es Félvisszaverő egyoldalas réteg lemez Alumínium fényvisszaverő Ragasztóanyag Alumínium fényvisszaverő 0,6 mm-es Félvisszaverő egyoldalas réteg lemez Polikarbonát anyag 2 2-27. ábra. Kétoldalas, kétrétegű DVD lemez. A DVD-t egy 10 szórakoztató-elektronikai társaságot tömörítő konzorcium hozta létre. A társaságok közül hét japán, szoros együttműködésben a nagy hollywoodi stúdiókkal (amelyek közül néhányat a konzorcium japán tagjai birtokolnak). A számítógépes és telekommunikációs ipar képviselőit nem hívták meg a "piknikre", ami azt eredményezte, hogy kibérelt mozikban mutatták be a DVD képességeit. A DVD-lejátszó lehetőséget ad például a film káros jeleneteinek valós idejű kivágására (lehetőséget adva a szülőknek egy NC17-es osztályú film kisgyerekek számára is nézhetővé tételére) hatcsatornás hangminőségre ad lehetőséget, támogatja a Pan-and-Scan-t. A DVD-lejátszók újabban képesek eldönteni, hogyan vágják le a 3:2-es szélesség/magasság arányú filmek bal és jobb szélét, hogy azok kitöltsék a használatos TV-készülékek képernyőjét (amelyek szélesség/magasság aránya 4:3). Egy másik dolog, amire a számítógépipar nem gondolt, a nemzetközi inkompatibilitás az Amerikának és az Európának szánt lemezek között, a többi kontinens szabványairól nem is beszélve. A filmipar azért igényelte ezt a funkciót, mert az új filmeket mindig az USA-ban mutatják be először és akkor szállítják Európába, amikor az USA-ban a videóváltozatot kiadják. Az ötlet az volt, hogy biztossá tegyék, hogy az európaiak ne vehessék meg az USA-ban kiadott videókat, ami csökkentené az európai mozik bevételét. Ha Hollywood kezében lenne a számítógépipar, talán 3,5 inches floppy-lemezek lennének az USA-ban és 9 cm-esek Európában. Ha a DVD sikert arat, megindulhat a DVD-R (írható DVD) és a DVD-RW (újraírható DVD) tömeggyártása rövid időn belül. A DVD sikere azonban nem garantált, hiszen a kábeltársaságoknak teljesen más tervük van a filmek továbbítására. A csata már el is kezdődött. 2.4 INPUT/OUTPUT Ahogyan a fejezet elején is említettük, egy számítógépes rendszernek három fő komponense van: a CPU, a elsődleges és másodlagos tárolók (memória, háttértárolók) és az I/O ( Input/Output ) eszközök, mint pl. a nyomtatók, szkennerek és modemek. Eddig a CPU-t és a tárolókat vizsgáltuk. Most itt az ideje, hogy megvizsgáljuk az I/O eszközöket, és hogy ezek hogyan kapcsolódnak a rendszer többi részéhez. 2.4.1 Buszok (sínek) Fizikailag a legtöbb PC-nek és munkaállomásnak a 2-28-as ábrához hasonló a szerkezete. A szokásos elrendezés egy fémdoboz(ház) egy nagy méretű nyomtatott áramkörrel az alján, amelyet alaplapnak hívnak. Az alaplapon van a CPU-lapka, néhány vájat (slot), melyekbe DIMM modulok illeszthetők és különböző segédlapkák. Ezenkívül tartalmaz egy buszt hosszában végigkarcolva és foglalatok (socket) amelyekbe kártyák illeszthetők. Előfordul, hogy két busz is van az alaplapon egy gyors (az újabb kártyáknak) és egy lassabb (a régebbi kártyák számára). SCSI vezérlő Hangkártya Modem Ház Csatlakozó 2-28. ábra. A PC fizikai szerkezete Egy egyszerű PC logikai szerkezetét mutatja a 2-29. ábra. Ezen egyetlen busz köti össze a CPU-t, a memóriát és az I/O eszközöket; a legtöbb rendszer legalább két busszal rendelkezik. Mindegyik I/O eszköz két részből áll: az egyik, amelyik az elektronika nagy részét tartalmazza, a vezérlő(controller), a másik ami magát az eszközt tartalmazza, pl. egy lemezmeghajtót. A vezérlőt általában egy üres slotba dugott kártyán helyezik el, kivéve azokat, amelyek feltétlenül szükségesek (pl. billentyűzet-vezérlő), ezeket általábanaz alaplapon helyezik el. Bár a monitor is feltétlenül szükséges, mégis legtöbbször a videovezérlőt bedugható kártyán helyezik el, hogy a felhasználó választhasson a különböző videokártyák között (van-e grafikus gyorsító benne, mennyi a memóriája, stb.).Avezérlő a vezérelt eszközzel egy kábelen keresztül kapcsolódik, amelyet a ház hátulján lévő csatlakozóba dugnak. ***[90-93] Nem érkezett meg. Flesh Tamás: h938665 ***[94-97] Kiss István, 94.o.-97.o. Lapos monitorok A CRT monitorok túlsagosan terjedelmesek és nehezek a hordozható számítógépek használatához, így teljesen eltérő technológia szükséges a hordozható számítógépek képernyőihez. Az egyik legáltalánosabban használt technológia az LCD (Liquid Crystal Display : Kristályfolyadékos kijelző) . Ez nagyon összetett, sok fajtája van és gyorsan változik, így ez a leírás szükségszerűen rövid és leegyszerüsített lesz. Nyúlós, szerves molekulákból áll a kristályfolyadék, ami folyik, mint egy folyadék, de térbeli szerkezete is van, mint a kristálynak. Egy osztrák botanikus (Rheinitzer) fedezte ezt fel 1888-ban és először az 1960-as években alkalmazták kijelzőknél (pl.: zsebszámológépeknél, óráknál). Amikor az összes molekula egy vonalban azonos szögben áll, akkor a kristály optikai tulajdonságai a bejövő fény szögétől és sarkításától függnek. Egy elektromos mezőt alkalmazva megváltoztatható a molekulák csoportosulása és ezen keresztül az optikai tulajdonságaik. A gyakorlatban ez azt jelenti, hogy a kristályfolyadékon keresztülragyogó fény kimeneti erőssége elektronikusan szabályozható. Ezt a tulajdonságot használják ki a lapos monitorok felépítései. Egy LCD monitor képernyője két párhuzamos üveglapból áll, amik maguk között hangszigetelten tartalmazzák a kristályfolyadékot. Átlátszó elektródák vannak mindkét üveglaphoz hozzákapcsolva. A fény a hátsó üveglap mögül (természetesen vagy mesterségesen) hátulról világítja meg a képernyőt. Az átlátszó elektródák mindkét üveglaphoz hozzákapcsolva elektromos mezőt hoznak létre a kristályfolyadékban. A képernyő különböző részei eltérő feszültséget kapnak, hogy így szabályozzák a kép megjelenését. A képernyő elejéhez és hátuljához polaroidok vannak ragasztva, mert a megjelenítés technikájához sarkított fény szükséges használni. Az általános felépítést mutatja a 2-32(a) ábra. Habár számos fajtáját használják az LCD monitoroknak, mi most egy különleges monitorfajtát, a Tn (Twisted Nematic) monitort vesszük példának. Ennél a monitornál a hátsó üveglapon vízszintes, míg az elülső üveglapon függőleges apró barázdák találhatók, mint ahogy a 2-32(b) ábrán is látható. Az elektromos mező hiányában az LCD molekulák a rovátkák iránya szerint rendeződnek sorba. Mivel így az elülső és a hátsó rendeződés eltér 90 fokkal, ezért a molekulák (és ennek következtében a kristály szerkezete) megcsavarodik előről hátra felé. A monitor hátsó felén vízszintes polaroid van. Ez csak vízszintesen sarkított fény enged át. A monitor elején függőleges polaroid van. Ez csak függőlegesen sarkított fényt enged át. Ha nem lenne folyadék az üveglapok között, akkor a hátsó polaroid által beeresztett vízszintesen sarkított fényt elzárná az elülső polaroid és így a képernyő egységesen fekete lenne. Kristályfolyadék Hátsó üveglap Elülső üveglap Hátsó elektróda Elülső elektróda Hátsó polaroid Elülső polaroid sötétség Fényforrás fény (a) (b) 2-32. ábra (a) Egy LCD képernyő szerkezete. (b) A hátsó és az elülső üveglapon lévő, egymásra merőleges barázdák. Azonban az LCD molekulák csavart szerkezete vezeti a fényt és ahogyan az halad és forog rajtuk, vízszintesen jön ki. Ennek következtében és egy elktromos mező hiányában az LCD képernyő egységesen világít. Az üveglap kiválasztott részein lévő feszültség által a csavart szerkezet megsemmisülhet, így elzáródik a fény azokon a részeken. Két módszert használnak általában a feszültség létrehozására. A passzív mátrix display -nél ( ez az olcsóbb módszer) mindkét elektróda tartalmaz párhuzamos drótokat. Például a 640X480-as felbontásnál a hátsó elektróda 640 függőleges, míg az elülső 480 vízszintes drótot tartalmaz. Azáltal, hogy áram kerül a függőleges drótok egyikére és ezalatt egy lüktetésre az egyik vízszintesre is, a kiválasztott pixel (képpont) helyén megváltozik a feszültség, így elsötétül az egy pillanatra. Ismételgetve ezt a lüktetést a következő, majd az azt követő pixelle egy sötét scan line (átfutó sor) tehető ki, hasonlóan, ahogy egy CRT dolgozik. Rendes körülmények között a teljes képernyő másodpercenként 60-szor tehető ki, így becsapva a szem azt látja, hogy egy mozdulatlan kép van a képernyőn, szintén úgy, ahogy a CRT-knél. A másik, szintén széles körben használt módszer az aktív mátrix display . Ez meglehetősen költségessebb, de jobb képet nyújt, így ez a nyerő terület. Ennél a módszernél ahelyett, hogy csak két irányban lennének merőleges drótok, az egyik elektródán minden pixel helyén apró kapcsolók vannak. Ezek be- és kikapcsolásával tetszőleges feszültségminta jöhet létre az egész képernyőn, figyelembe véve egy tetszőleges bit mintát. Így végül van egy leírásunk, hogy hogyan működnek a fekete-fehér monitorok. A színes monitoroknál elég annyi, hogy általában hasonló alapelven működnek, de azok részleteikben jóval bonyolultabbak. Minden pixel helyén optikai szűrőket használnak szétválasztani a fehér fényt a vörös, a zöld és a kék összetevőjére, hogy azokat egymástól függetlenül lehessen megjeleníteni. Minden szín felépíthető ennek a három alapszínnek az egymásra vetítésével. Alfanumerikus terminálok (character-map terminálok) Általában a terminálok három fajtáját használjuk : alfanumerikus terminál, grafikus terminál és RS-232-C terminál. Ezek mindegyikét akármilyen billentyűzettípusról lehet használni, de a számítógép velük való kommunikációs módjában és az output kezelésében különböznek. Mi most leírjuk mindegyik fajtát. Egy személyi számítógépnél két lehetőség van, hogy meghatározzuk a képernyőre kerülő outputot : az alfanumerikus és a grafikus terminál segítségével. A 2-33. ábra azt mutatja, hogy az alfanumerikus terminál hogyan jeleníti meg az outputot a monitoron. (A billentyűzet teljesen eltérő módon van kezelve.) A video tábla két részből áll : egy nagy memóriából, amit videó memoriának (video memory) hívunk, és egy kevés elektronikából a bemenő busznak és a videójelek generálására. Karakter Attribútum Analóg videójel Main Videó CPU memory tábla Monitor Video RAM Busz (sin) 2-33.ábra A terminál outputja a személyi számítógépen. A CPU átmásolja a karaktereket a megjelenítésükhöz a videó memoriába. Minden karakterhez tartozik egy attribútum byte (jelző byte), hogy az tartalmazza, hogy a karakter hogyan jelenjen meg. Az attribútomok tartalmazhatják a karakterek színét, fényerősségét vagy akár, hogy villogjon a karakter és így tovább. Ezért egy 25X80 karakterből álló kép 4000 byte-on tárolható a videómemóriában, 2000 byte-on a karakterek és 2000 byte-on az attribútomok. A legtöbb videótáblának ennél több memóriája van, hogy több képernyőképet is tárolhasson. A videótábla feladata, hogy folyamatosan kiolvassa a karaktereket a videó RAM-ból és generálja a szükséges jeleket a monitorvezérlőnek. Egyszerre egy teljes sornyi karaktert olvas be, így kiszámítható az egyedi jelek sora. Ez a jel egy magas frekvenciájú analóg jel, ami szabályozza az átfutó fényelektront, hogy hogían jelenítse meg a karaktereket a képernyőn. Mivel a tábla kimenetelei videójelek, ezért a monitorban muszály lennie néhány mérőórának a számítógépből, hogy azok megakadályozzák az eltorzulást. Grafikus terminálok (bit-map terminálok) A grafikus terminél ötlete azért merült fel, hogy a képernyő ne olyan legyen, mint egy 25X80-as karakterekből álló tömb, hanem olyan legyen, mint egy kép alkotóelemeiből álló tömb, ezeket a képpontokat hívjuk pixelnek. Minden pixel be- vagy kikapcsolt állapotban van. Ez az információ egy biten tárolható. A személyi számítógépek képernyőjén lehet mindössze 640X480 pixel, de általánosabb a 800X600 vagy még több pixel. A mérnöki munkaállomások képernyői tipikusan 1280X960 pixelből vagy még többől állnak. A terminálokat gyakrabban használják grafikusan, mint alfanumerikusan, és ezt grafikus terminálnak (bit-map terminálnak) hívjuk. Minden modern videótábla teljesen úgy működik, mint az alfanumerikus vagy a grafikus terminál, egy szoftver irányítása alatt. Itt ugyanazt az általános ötletet használják, mintami a 2-33.ábrán van, kivéve, hogy a video RAM csak egy nagy bithalmaznak látszik. A kezelő szoftver bármilyen mintázatot be tud állítani, ami csak kellhet és az azonnal meg is jelenik a képernyőn. A karakterek megjelenítésénél a szoftver határozhatja meg, hogy pl. egy 9X14-es táglalapon ábrázol minden karaktert és kitölti a karakterhez szükséges biteket, hogy az megjelenjen. Ez a módszer megengedi a szoftvernek, hogy különböző betütípusokat készítsen és azokat betükészletté állítsa össze. Minden hardver meg tudja jeleníteni a bittömböt. Színes megjelenítés esetén minden pixel 8, 16 vagy 24 bitből áll. Általában arra használják a grafikus terminálokat, hogy azok segítsék tárolni a különálló ablakok (windows) megjelenítését. Az ablak a képernyőnek azon területe, amit egy program használ. Több ablak lehetővé teszi, hogy különböző programok fussanak azonos időben és minden egyes megjelenítés eredménye független a többitől. Habár a grafikus terminálok nagyon rugalmassak, mégis van két nagy hátrányuk. Először is tekintetes részre van szükségük a video RAM-ból. Napjainkban a legáltalánosabb méretek a 640X480 (VGA), 800X600 (SVGA), 1024X768 (XVGA) és az 1280X960. Észrevehetjük, hogy mindegyiknél megegyezik az oldalak aránya (szélesség : magasság) 4:3, hogy ez hasonló legyen az általánossan elterjedt tévé oldalainak arányaihoz. Ahhoz, hogy igazi színeket kapjunk, 8 bit szükséges mind a 3 alapvető színhez, azaz 3 byte kell pixelenként.Ennek következtében egy 1024X768-as monitorhoz 2,3 MB video RAM szükséges. A nagy igény miatt néhány számítógép megelégszik egy 8 bites szám használatával a színkövetelményhez. Ez a szám egy indexként van tárolva a hardvertáblában, amit színpalettának (color palette) hívnak, és ez 256 ilyen bejegyzést tartalmaz, amelyek mindegyike egy 24 bites RGB értéket tartalmaz. Ez a módszer, amit indexelt színnek (indexed color) hívunk, 2/3-ára csökkenti a video RAM beli igényt, de csak 256 színt engedélyez a képernyőn egyszerre. Általában a képernyőn minden ablaknak van saját színtérképe, de csak egy színpaletta van. Gyakran, amikor több ablak van egyszerre a képernyőn, csak az aktuálisban van lehetőség beállítani a színeket. A második hátránya a grafikus megjelenítésnek a megvalósítása. A programozók minden pixelt úgy változtathatnak egyszerre mindkét helyen és időben, ahogy akarják. Igaz, hogy a monitorra kimásolhatóak az adatok a video RAM-ból annélkül, hogy keresztülhaladnának a fő rendszerbuszon, de az adatok bekerüléséhez a video RAM-ba a fő rendszerbusz szükséges. Egy egész képernyős, teljesen színes multimédiás film megjelenítéséhez a képernyőn, egy 1024X768-as felbontásban a videó RAM-ba 2,3 MB adatot kell bemásolni filmkockánként. Egy mozgó videófilmnek legalább 25 filmkocka kell másodpercenként, így a teljes adatmozgás 57,6 MB/sec. Ez a teher jóval nagyobb, mint amennyit az (E)ISA busz tud kezelni, így az IBM PC-ken magas teljesítményű videókártyákra, PCI kártyákra van szükség, és még ekkor is nagy kiegyezés kell. A teljesítményprobléma összekapcsolható a képernyő gördülésével. Az egyik lehetőség, hogy minden bitet másolunk a szoftverben, de ez oriási terhet tesz a CPU-ra. ***[98-101] Nem meglepő módon sok videokártyát azért építettek speciális hardverrel, hogy másolás helyett a bázisregiszterek megváltoztatásával lehessen mozgatni a képernyő részeit. 2.2.4 RS-232-C terminálok Sok cég számítógépeket készít, és sokan terminálokat (különösen szerverekhez). Ahhoz, hogy (majdnem) minden terminált (majdnem) minden számítógéphez lehessen használni, az EIA (Elektronikai Ipar Szövetség) egy egységes számítógép terminál interfészt (amit RS 232-C-nek hívnak) fejlesztett ki. Bármely terminál amelyik támogatja az RS-232-C interfészt, össze lehet kapcsolni bármely számítógéppel, ami ugyancsak támogatja ezt az interfészt. Az RS-232-C termináloknak 25 tűs csatlakozójuk van. Az RS-232-C szabvány előírja a csatlakozók mechanikai méreteit és alakját, a feszültség szintet és a csatornákon lévő jelek jelentését. Ha a számítógép és a terminál távol vannak egymástól, akkor jut fontos szerephez, mert ez az egyetlen praktikus megoldás összekapcsolni őket, a telefonhálózaton kívül. Sajnos a telefonhálózat nem alkalmas azon jelek átvitelére, amelyeket az RS-232-C szabvány előír, modemnek (modulátor-demodulátor) nevezik azt az eszközt, amit a számítógép és a telefon, vagy a terminál és a telefon közé helyeznek, hogy az elvégezze a jelek átalakítását. Mi a modemről később fogunk tanulni. A 2-34 ábrán látható a számítógép, a modemek és a terminál elhelyezkedése, ha telefonhálózatot használnak. Ha a terminál annyira közel van a számítógéphez, hogy össze lehet kábellel kötni, akkor modemeket nem használnak, hanem inkább RS-232-C csatlakozókat és kábeleket, ilyenkor nincsen szükség a modem ellenőrző tűire. Ahhoz, hogy kommunikálni tudjon, a számítógép és a terminál is tartalmaz egy csipet, amit UART-nak neveznek (Univerzális Asszinkron Vevő és Továbbító), ez logikailag eléri a buszt. Ahhoz, hogy megjelenítsen egy karaktert, a számítógép beolvassa a karaktert a főmemóriából és az UART-nak küldi át, ami ezután továbbítja az RS-232-C kábelnek bitenként. Gyakorlatban az UART egy párhuzamos-soros átalakító, mivel egy egész karaktert (1 bájt) kap egyszerre és egyszerre egy bitet ad ki rendszeres ütemben. Ezen kívül hozzácsatol Egy start és egy stop bitet egy karakterhez azért, hogy a karakter kezdetét és végét behatárolja (110 bps-enként két stop bitet hozzácsatol). A terminálokon egy másik UART kapja a biteket, és felépíti az egész karaktert, amelyet aztán kivetít a képernyőre. A terminál billentyűzetéről bemenő adat párhuzamos-soros átalakításon megy keresztül a terminálban és aztán az UART újra összegyűjti ezeket a számítógépnek. Az RS-232-C szabvány meghatároz több mint 25 jelet, de a gyakorlatban csak egy párat használnak, és azoknak a legtöbb részét el lehet hagyni, amikor a terminált közvetlenül a számítógéphez kötik modemek nélkül. A második és harmadik tű azért van, hogy továbbítsa és fogadja az adatokat. Mindegyik tű egy irányú bitsorozatot kezel, amikor a terminál és a számítógép be van kapcsolva akkor a számítógép megerősítést ad (Data terminal ready). Amikor a terminál és számítógép adatokat akar küldeni, megerősíti az adatfogadásra kérés (Request to Send) jellel. Ha a modem megadja az engedélyt, megerősíti ezt a küldésre készen áll (Clear to Send) jellel. Más tűket különböző státusz, tesztelő és időzítő funkciókra használnak. 2.3.4 Egér Ahogy az idő telik az emberek egyre kevesebb szakértelemmel is használják a számítógépeket. Az ENIAC generáció számítógépeit csak azok használták, akik építették azokat. Az ötvenes években a számítógépeket csak magas képzettségű hivatásos programozók használták. Mostanában a számítógépeket széles körben használják azok az emberek is, akiknek el kell végezni valami munkát, és akik nem tudnak vagy nem is akarnak sokat tudni arról, hogy hogyan működik a számítógép és hogyan van programozva. Régen a legtöbb számítógépnek volt parancsvonal menürendszere, amelybe a felhasználók begépelték a parancsokat. Mivel azok az emberek, akik nem voltak számítógép specialisták gyakran a parancsvonal menürendszert úgy érezték, hogy nem volt felhasználóbarát, vagy még ennél is sokkal rosszabbra gondoltak, sok számítógép gyártó kifejlesztett egérrel kezelhető menürendszert (pl.: Macintosh és Windows). Ahhoz ezt a módszert használhassuk szükség, van olyan rendszerre ami ezt megjeleníti a képernyőn. Az egérrel történik a felhasználók számára a legegyszerűbb módon. Az egér egy kis műanyag doboz és a billentyűzet mellett helyezkedik el. Amikor az egérpadon mozgatják egy kis mutató a képernyőn mozog és lehetővé teszi a felhasználónak, hogy képernyőn megjelenített szövegekre klikeljen. Az egérnek egy, kettő vagy három gombja van és ezzekel a felhasználó a menüből tud választani. Sok vita folyt azon, hogy hány gomb legyen az egéren. Naiv felhasználók az egy gombost részesítik előnyben (mivel nehéz rossz gombot nyomni rajta), de a tapasztaltabbak szeretik a több gombos megoldást, hogy több műveletet lehessen az egérrel elvégezni. Három fajta egeret készítettek: mechanikus, optikai és opto-mechanikus egeret. Az első egereknek két görgője van amelyikek kilógtak az egér alján, és a tengelyei derékszöget zártak be. Amikor az egeret a főtengelyével párhuzamosan mozgatták akkor az első görgő mozgott, amikor a főtengelyre merőlegesen akkor a másik mozgott. Mindkét görgő mozgatott egy potmétert. Az ellenállás változás megmérésével lehetséges volt azt kiszámolni mennyit forogtak el a görgők, és így tudták mennyit mozdítottak el az egéren. Az utóbbi években ezt az egérfajtát átalakították olyanra, hogy egy golyó van a görgők helyett (Lásd 2-35). Az egerek második fajtája az optikai egér ilyen van nekem is. Ennek se golyója se görgője nincs. Ehelyett LED (fényt kibocsátó dióda) van benne és egy fényérzékelő. Az optikai egeret egy speciális műanyag padon használják, amely négyzetrácsot tartalmaz, amelyen sűrűn vannak vonalak. Ahogy az egér mozog a négyzetrács felett a fotóérzékelő érzékeli a vonalakat úgy hogy érzékeli a fénynyalábokat amik a padról visszaverődnek. Az egérben lévő elektronika kiszámítja az elmozdulásnak nagyságát a padon. A harmadik az optomechanikus. Hasonlóan az újabb mechanikus egerekhez ebben is egy golyó van amely két tengelyt forgat, amelyek merőlegesek egymásra. A tengelyekre két tárcsa van erősítve amiken olyan lyukak vannak, amiken a fény átjuthat. Amikor az egér mozog, akkor a tengelyek forognak, és a fény átjut az érzékelőbe, ha a tárcsán egy lyuk kerül a LED és az érzékelő közé. Az érzékelt impulzusok száma egyenesen arányos a mozgás mennyiségével. Habár az egeret sokféleképpen lehet üzemeltetni, egy közkedvelt módszer az, hogy az egérrel három bájtos adatsorozatokat küldetnek a számítógéphez minden alkalommal, amikor az egér egy bizonyos minimális távolságot mozdul (pl.: 0,01 ??), amit néha mickey-nek neveznek. Rendszerint ezek a bájtok soros vonalon bitenként érkeznek. Az első bájt tartalmaz egy egész számot, mely megmutatja mennyit mozdult az egér az x tengelyen 100 ms alatt. A második bájt ugyanezt az információt adja az y koordinátáról. A harmadik bájt tartalmazza az egér gombjainak aktuális állapotát. Néha két bájtot használnak minden koordináta meghatározására. A számítógép alacsony szintű szoftvere fogadja ezeket az adatokat, és átalakítja a relatív mozdulatokat, amelyeket az egér küld egy abszolút pozícióból. Ezután egy nyilat kijelez a képernyőn abban a pozícióban, amely megegyezik az egér helyzetével. Amikor a nyíl a megfelelő menüpontra mutat, a felhasználó klikkel egyet az egérrel és a számítógép ez után meg tudja állapítani, hogy melyik menüpont lett választva abból. 2.4.4 Nyomtatók Ha készítünk egy dokumentumot, vagy letöltünk a www-ről egy oldalt, azt gyakran ki akarjuk nyomtatni, így minden számítógépet fel lehet szerelni nyomtatóval. Ebben a részben le fogjuk írni a monokróm és színes nyomtatók néhány fajtáját. Monokróm nyomtatók A leggyakoribb a mátrixnyomtató , melyben egy nyomtatófej, amely 7 és 24 között elektromágnesen aktivizálható tűt tartalmaz, jár minden vízszintes nyomtatási vonalon. A legegyszerűbb nyomtatóknak hét tűjük van, és 80 5x7 méretű karaktert tud egy sorba kinyomtatni. A nyomtatási vonalban 7 sor és 5x80=400 pont van. Minden pontról el lehet dönteni, hogy kinyomtassa vagy ne. A 2-36(a) ábra egy ?A? betű nyomtatott képét illusztrálja 5x7 mátrixban. Két féleképpen lehet a nyomtatási minőséget javítani: több tű felhasználásával vagy kör átfedéssel. A 2-36(b) ábra mutatja a ?A? képét 24 tűs nyomtatóval, amely átfedési pontokat is tartalmaz. A megnövelt minőség lassabb nyomtatási sebességgel jár. A legtöbb mátrixnyomtató többféle módon működhet, különböző módokat kínálva, hogy a minőség vagy a sebesség a fontos. A mátrixnyomtatók olcsóak (főleg az átlagfelhasználónak), megbízhatóak, de lassúak, hangosak és kicsi a felbontásuk. Három fő felhasználói módszer van? Ábrák: 2-34. Szignálok: -GND -Átvitel -Vétel -Átvitelkérés -Adatküldésre kész -Adatelérés rendben -Közös visszatérés -Vivő felderítő -Adat terminál készen áll ***[102-105] Egyrészt gyakran használják nagy előnyomtatott űrlapok nyomtatásához. Másrészt jól lehet vele nymtatni kisebb papirokra, úgymin a pénztárgépszalagok, bankjegy automata, vagz hitelkartya tranzakciós cédulája, vagy repülőgépen az étkezési jegyek. Harmadrészt, nyomtatható többrészes folytonos űrlap indigóval együtt. Általában ez a legolcsóbb technológia. Otthoni alacsony költségű nzomtatásban a tintasugaras nymtató a kedvelt. A mozgatható nyomtatófej, amely egy tintapatront tart vízszintesen mozog a papír fölött, miközben a tintát kifújja a kis fúvókákón. Minden fúvókában egy kis csepp tintát elektromos áramall melegítenek a forráspontig, amíg a tintacsepp ki nem tör. A tintacsepp így a fúvókán át a papírra kerül. Ezután a fúvókát lehűtik és ay így keletkező vákum egy újab tintacseppet szippant be. A nyomtató sebességét az adja meg, hogy milyen gyorsen lehet egy melegítés - hűtés ciklust megismételni. A tintasugaras nyomtatók felbontása általában 300 és 720 dpi (dot per inch) között van, de vannak 1440 dpi-s nyomtatók is. Előnye, hogy olcsó, csendes és jó minőségben nyomtat, viszont lassú, drága tintapatront használ és tintával eláztatott papírt adnak ki. Talan a legizgalmasabb fejlesztes a nyomtatasban azota, hogy Guttenberg Janos feltalalta a konyvnyomtatast a XIX. szazadban, a lezernyomtato . Ez az eszkoz kombinalja a jo minosegu kepet, a rugalmassagot, jo sebesseget es egy elfogadhato arat. Mindez egy onallo periferia. A lezernyomtatok szinte ugyanolyan technikaval dolgoznak, mint a fenymasologepek. Valojaban sok ceg keszit olyan eszkozt ami masol is es nyomtat is (es neha meg faxol is). A mukodest nagyvonalakban a 2-37. abra mutatja. A nyomtato szive egy forgo precizios dob. Ez minden oldalkezdesi ciklusnal feltoltodik 1000 volttal es fenyerzekeny anyaggal vonodik be. Ezutan egy lezernyalab pasztazza vegig a dobot hosszaban (hasonloan az elektronsugarhoz a TV-keszulekekben). A vizszintes elmozdulast egy forgathato nyolcoldalu tukorrel oldottak meg. A fenysugar vilagos es sotet pontokbol allo mintat alkot. Az a pont amit a fenysogar er elveszti az elektromos tolteset. Egy sor pont festese utan a dob fordul egy kicsit, igy a kovetkezo sor lesz festheto. Egyszer csak az elso sor eleri a tonert, egy elektromossagra erzekeny fekete port tartalmazo tartalyt. Azok a pontok amelyek meg nem vesztettek el toltesuket, magukhoz vonzzak a tonert, igy egy lathato sor keletkezik. Kicsivel kesobb a toner boritotta dob ranyomodik a papirra, atnyomva a fekete port. Ezutan a papir futott gorgokon halad keresztul, hogy a toner folyamatosan raolvadjon a papirra. Ha a dob teljesen korbefordult, elvesziti elektromos tolteset, megtisztul a maradek tonertol, es keszen all a kovetkezo oldal nyomtatasara. Ezek a muveletek bonyolult kombinacioi a fizikanak, kemianak, mechanikai tervezesnek, optikai tervezesnek, es igy nehez is beszelni rola. Azonban szamos elado kinal elkeszult szerkezeteket, un. nyomtato-motorokat. A lezernyomtatokat gyarto cegek a nyomtatomotorokat a sajat elktronikajukkal, es szoftverrukkel kombinaljak, es igy kesitik el sajat nyomtatojukat. Az elktronika tartalmaz egy processzort, es tobb megabyte memoriat, hogy tarolni tudjon egy teljes oldalt bitterkepesen es a beepitett es a letoltheto fontkeszleteket. A legtobb nyomtato elfogadja a nyomtatasi parancsot, ami csak annyit mond, hogy nyomtasson egy oldalt (ellentetben azokkal a nyomtatokkal amik a fo CPU altal elkeszitett bitterkepet nyomtatjak). Ezek a parancsok kulonbozo nyelveken adhatok ki, mint peldaul a PCL (HP) vagy a PostScript (Adobe). A lezernyomtatok felbontasa 600 dpi vagy nagyobb, es jo minosegu fekete-feher kepet lehet vele nyomtatni, de ez bonyolultabb mint elso ranezesre tunik. Vegyunk peldaul egy fenykepet amit 600 dpi-vel scanneltunk be es 600 dpi-vel nyomtatunk ki. A beszkennelt kep 600x600 pixelt tartalmaz inchenkent es egy szurkesegi arnyalatot 0-tol (feher) 255-ig (fekete). A nyomtatonk is 600 dpi-s, de minden egyes pixel vagy feher, vagy fekete. Szurket nem tud nyomtatni. A szokasos megoldas a szurke arnyalatok hasznalatara a halftoning (felarnyalt) eljaras, olyan mint a reklamposzterek. A kepet 6x6 pixelbol allo cellakra bontjak. Minden cella 0 es 36 kozott tartalmaz fekete pixeleket. A szem sotetebbnek erzekel egy cellat, ha tobb benne a fekete pont. A szurke ertekek 0 es 255 kozott lehetnek melyek 37 zonat alkotnak. 0-tol 6-ig a 0. zona, 7-tol 13-ig az 1. zona es igy tovabb (lathato, hogy a 36. zona kisebb mint a tobbi, mert 256 nem osztheto 37-tel maradek nelkul). Ha a szurke erteke megegyezik a 0. zonaval, akkor a papiron a cella helye ures marad (2.-38.a,). Az 1. zona erteke 1 fekete pixel. A 2. zona erteke 2 fekete pixel, es igy tovabb (2.-38.c,-f,). Termeszetesen egy 600 dpi-vel szkennelt kep felarnyaltjanak effektiv felbontasa csokken 100 cella/inch-re (halftone screen frequency), hagyomaros mertekegysege az lpi (lines per inch). Szines nyomtatok Szines kep ketfelekeppen allithato elo: additiv fennyel, es szubtraktiv fennyel. Az additiv szinkeveressel keszult kepek (olyan mint a CRT monitorok kepe) a harom elsodleges additiv szin (voros, zold, kek) linearis szuperpoziciojabol epulnek fel. A szubtraktiv szinkeveressel keszult kepek (mint a szines fotok egy magazinban) bizonyos hullamhosszu fenyt elnyelnek a maradekot visszaverik. Ezek a harom elsodleges szubtraktiv szin, a cyan (turkiz) (minden voroset elnyel), a sarga (minden keket elnyel) es a magenta (lila) (minden zoldet elnyel) linearis szuperpoziciojabol epul fel. Elmeletileg minden szin eloallithato a turkiz, sarga, es lila szinekbol. Gyakorlatban viszont nehez ezeket a szineket egyenletesen elkeverni ugy, hogy minden fenyt elnyeljen, es tiszta fekete szint adjon. Emiatt majdnem minden nyomtato negyfele tintat hasznal: turkiz, sarga, lila, es fekete. Az ilyen rendszeru nyomtatokat CYMK nyomtatoknak hivjuk. (Cyan Yellow Magenta blacK.) Ezzel ellentetben a monitorok az additiv szinkeverest hasznaljak, es RGB rendszeruek. (Red Green Blue.) Azt a szinmennyiseget amit egy display vagy printer kepes eloallitani szinmelysegnek nevezzuk. Nincs olyan eszkoz aminek a szinmelysege megegyezne a valos vilageval. Eddig a legjobb, hogy minden szinnek 256 intenzitasa van, de ez meg csak 16,777,216 szin. A technologia hianyossaga, hogy lecsokken az osses szin szama, es a fennmardo szineket nem mindig lehet egyenletesen kitolteni. Raadasul nem csak fenytannal, hanem a retina mukodesevel is foglalkozni kell. A fenti obszervaciok konzekvenciaja, hogy kepernyon jol kinezo kep konvertalasa egy vele megegyezo nyomtatott formava, kozel sem egyszeru. A problemak tobbek kozott: 1. A szines monitorok additiv szinkeverest hasznalnak, mig a szines nyomtatok szubtraktiv szinkeverest 2. A CRT monitorok 256 intenzitast hasznalnak szinenkent, a szines nyomtatok felarnyaltak 3. A monitoroknak sotet hattere van, mig a papirnak vilagos 4. Az RGB es a CYMK szinmelysegek kulonbozoek Egy valosagos keppel megegyezo kep nyomtatasahoz szukseges: eszkoz kalibralas, kifinomult szoftver es jelentos szaktudas a felhasznalo reszerol. Otfele technologiat hasznalnak a szines nyomtatashoz a mindennapokban. Mindegyik a CMYK rendszeren alapszik. Ilyenek a szines tintasugaras nyomtatok. Ezek ugy mukodnek, mint a monokrom tintasugaras nyomtatok, de negy tintapatronnal egyszerre. (CMYK) Grafikailag jo eredmenyt adnak es a koltseguk is elfogadhato. (A nyomtato olcso, de a patron nem.) A legjobb minoseg erdekeben specialis tintara es papirra van szukseg. Ketfele tinta letezik. A festek alapu tinta szines elkevert festeket tartalmaz, ami egy folyadek-tartalyban van. Fenyes szine van es konnyen folyik. A fo problemaja, hogy fakulnak a szinek, ha ultraibulya sugar eri oket, mint amilyen a napfenyben van. A szinezoanyag alapu festek a szinezoanyag reszecskeit tartalmazza, amit egy folyadektartalyban tarolnak es onnan a papirra illan, hatrahagyva a szinezoanyagot. Eyek nem vesztik el a szinuket, de nem is olyan fenyesek, mint a festek alapu tintak es a szinezoanyag reszecskei hajlamosak eltomiteni a fuvokakat, amit igy rendszeresen takaritani kell. Fenykepek nyomtatasahoz festett, vagy fenyes papirra van szukseg. Ezek a papirok specialisan tervezettek, hogy a festekcseppeket megtartsak es ne follyon szet. Egy lepessel a tintasugaras nyomtatok felett van a homogen-tintas nyomtato . Ezek negy specialis viaszbol keszult teglabol allnak, amiket aztan egy tartalyba olvasztanak. Az ilyen nyomtatok inditasa akar tiz percbe is beletelhet, amig a teglakat megolvasztja. A forro tinta ezutan a papirra kerul, ahol megszilardul es raolvad a papirra mikozben ket kemeny gorgo kozott halad at. A harmadik fajtaja a szines nyomtatoknak a szines lezernyomtato. Ugy mukodik mint a monokrom testvere, kiveve azt, hogy szetvalasztja a CMYK kepeket, es negy kulonbozo tonert hasznal. ***[106-109] Oravecz Anikó T106-109 4 bittel a nyomtatónak 55 MB-ra van szüksége csak a bit-térképhez, nem számítva a memóriát a belső processzorokhoz, fontokhoz stb. Ez az igény teszi a színes lézernyomtatókat drágává, de a nyomtatás gyors, a minőség jó és a képek stabilok maradnak. A negyedik típusa a színes nyomtatóknak a wax (viasz) nyomtató. Széles szalagja van a négy színű waxnak, ami fel van osztva lap méretű kötegekre. Fűtő elemek ezrei olvasztják a viaszt, amint a papír alámozdul. A viasz ráolvad a papírra pixelek formájában használva a CMYK rendszert. A wax nyomtatók a legfőbb színes nyomtató technológiát jelentették, mígnem más fajták el nem mozdították erről a helyről, amelyeknek olcsóbb a fogyasztása. Az ötödik fajtája a színes nyomtatóknak a festék szublimációs nyomtató. Habár ennek vannak Freud-i vonásai, a szublimáció a tudományos neve egy szilárd anyag gázzá alakulásának a folyékony állapot kimaradásával. A száraz jég (fagyasztott carbon dioxid) egy jól ismert anyag, ami szublimál. Egy ilyen nyomtatóban egy "hordozó" tartalmazza a CMYK festékeket, ami kihagyja a meleg nyomtató fejet, ami a programozható fűtő elemeket tartalmazza. A festékek azonnal elpárolognak és a speciális papír felszívja azt. Minden fűtő elem 256 különböző hőfokot képes létrehozni. Minél magasabb a hőmérséklet annál több a festék ami felszívódik, és annál intenzívebb a szín. Eltérő minden más színes nyomtatótól, majdnem folyamatos szín létrehozása lehetséges minden pixellel, így nem szükséges a félárnyékolás. A kis snapshot (pillanatfelvétel) nyomtatók gyakran használják a festékszublimáló eljárást, hogy létrehozzanak egy valóságosabb fotó-képet speciális (és drága) papíron. 2.4.5. Modemek Az elmúlt évek számítógép-használatának növekedésével általános hogy egy számítógépnek szükséges kommunikálni egy másikkal. Pl. sok embernek van otthon személyi számítógépe, amit arra használ, hogy kommunikáljon a munkahelyi számítógéppel, egy Internet Szolgáltatón keresztül vagy egy házibank rendszerrel. Mindezek az alkalmazások a telefont használják a kommunikációs kapcsolat megvalósításához. Bár egy sima telefonvonal nem alkalmas számítógépes jelek továbbítására, ami 0 Volt esetén 0-t, 3-tól 5 Voltig 1-et jelent, mint az a Fig. 2-39 (a) ábrán látszik. A kétszintű jelek tekintélyes eltorzítást tesznek lehetővé mikor egy hang-továbbító telefonvonalon továbbítunk, ezért továbbítási hibákhoz vezet. Mindemellett egy tisztán szinusz görbe jel 1000 és 2000 Hz frekvencia között - amit carriernek (hordozónak) hívnak - relatíve kevesebb torzítással továbbítható, és ez a tény kihasznált, mint az alapja a legtöbb telekommunikációs rendszernek. Amiért a szinusz hullám lüktetése teljesen szabályos, egy tiszta szinusz hullám semmilyen információt sem továbbít. Azonban megváltoztatva az amplitúdót (kilengést), a rezgésszámot vagy a fázist egyesek és nullások sorának továbbítása lesz lehetséges, mint ez a Fig. 2-39. ábrán látható. Ezt a fejlesztést modulációnak hívják. Az amplitúdó modulációban (ld. Fig 2-39. ( b )) két különböző feszültségi szint használatos 0-ra és 1-re. Hallgatva a digitális adatátvitelt egy nagyon kis adat-sebességnél erős hang hallható 1-nél és nincs hang 0-nál. A frekvencia modulációban (ld. Fig 2-39 ( c )) a feszültségi szint állandó, azonban a frekvencia más 1-nél és 0-nál. Aki egy frekvencia modulált digitális adatátvitelt hallgat, két hangot hall 0-nak illetve 1-nek megfelelőt. A frekvencia modulációra gyakran mint frekvenciaváltóra utalnak. Egy egyszerű fázis modulációban (ld. Fig 2-39 ( d )) az amplitúdó és a frekvencia nem változik, azonban a fázishordozó 180?-kal elfordul amikor 0-ról 1-re vagy 1-ről 0-ra vált az adat. A kifinomultabb fázis modulált rendszerekben minden oszthatatlan időköz kezdetén a hordozó fázisa hirtelen vált 45, 135, 225 vagy 315?-ot időközönként 2 bitet megengedve. Ezt dibit fáziskódolásnak hívják. Pl. egy 45?-os fázisváltás 00-t jelenthet, egy 135?-os 01-et, és így tovább. Más tervek is léteznek időközönként 3 vagy több bit továbbítására időközönként. Az időközök száma (a lehetséges jelváltások száma másodpercenként) a "baud" mérték. 2 vagy több bittel időintervallumonként a bit arány meghaladja a "baud" mértékét. Sok ember összetéveszti ezt a két időtartamot. Ha a továbbított adat 8 bites karakterek sorozatát tartalmazza, kívánatos lenne egy 8 bit szimultán (azonos időbeli) továbbítására képes kapcsolat - ami 8 pár vezeték. Amiért a hang-továbbítású telefonvonalak csak egy csatornáról gondoskodnak a biteket sorban kell küldeni, egyiket a másik után (vagy kettes csoportokban ha dibit kódolót használunk). Az eszköz, amely egy számítógéptől karaktereket fogad kétszintű jelek formájában, egy bitet egyszerre, és továbbítja a biteket egyes vagy kettes csoportokban amplitúdó, frekvencia vagy fázis modulált formában, a modem. Minden karakter elejének és végének jelzésére egy 8 bites karakter egy megelőző kezdet bittel és egy azt követő stop bittel küldődik el, 10 bitet készítve mindből. A továbbító modem sajátos biteket küld egy karakteren belül szabályosan osztott időközönként. Pl. 9600 baud magába foglal egy jelváltozást minden 104 ?sec-ban. Egy másik modem a fogadás végén átalakította a megváltoztatott hordozót bináris számmá. Amiért a bitek a fogadóra szabályosan osztott időközönként érkeznek egyszer a fogadó modem megállapította a kezdetét a karakternek, és az órája mondta meg, mikor próbálja olvasni a vonalakon érkező biteket. A modern modemek 28800 bit/sec és 57600 bit/sec közötti adatgyorsasággal működnek. Ezek különböző technikákat használnak több bit küldésére baud-onként, modulálva az amplitúdót, a frekvenciát és a fázist. Majdnem mind ezek közül full duplex (teljes dupla), ami azt jelenti, hogy mindkét irányban tud továbbítani egy időben (különböző frekvenciákat használva). A modemeket vagy továbbító vonalakat, amik csak egy irányban tudnak egyszerre továbbítani (mint egy "egysávos" vasút, amely kezeli az észak felé tartó, illetve a dél felé tartó vonatokat, de nem ugyanabban az időben) half duplexnek (fél dupla) hívják. Azok a vonalak, melyek csak egy irányba továbbítanak simplexnek (egyszeres) hívják. Figure 2-39. A 01001011000100 bináris szám továbbítása telefonvonalon keresztül bitről bitre. ( a ) Kétszintű jel. ( b ) Amplitúdó moduláció. ( c ) Frekvencia moduláció. ( d ) Fázis moduláció. ISDN A korai 1980-as években az Európai PTTs (Posta, Telefon és Telegráf Adminisztrációk) feltaláltak egy szabványt a digitális telefonokhoz, amit ISDN-nek (Integrált Szolgáltatások Digitális Hálózata) neveznek. Ezt arra tervezték, hogy lehetővé tegye a nyugdíjasoknak, hogy olyan riasztójuk legyen a házukban, amely egy központi megfigyelő/vészjelző rendszerhez kapcsolódik és sok más érdekes, addig nem létező alkalmazást. És akkor hirtelen megjelent a World Wide Web és az emberek nagyobb sávszélességű digitális Internetelérést követeltek. Bingo. Az ISDN azonnal felfedezte "gyilkos" alkalmazását (bár tervezői hibáján kívül). Híressé vált ugyanúgy az Egyesült Államokban mint máshol. Mikor egy telco (ipari zsargon a telefonos társaságokra) ügyfél előfizet az ISDN-re, a telco lecseréli a régi analóg vonalat egy digitálisra. (Valójában a vonalat magát nem cserélik ki, csak a berendezést mindkét végén.) Az új vonal két független digitális csatornát tartalmaz mindkettőn 64000 bit/sec-mal, és még egy jeladó csatornával 16000 bit/sec-mal. A berendezés a 3 csatornát kombinálja egy egyszerű 144000 bit/sec-os digitális csatornává. Az üzletelésre egy 30 csatornás ISDN vonal érhető el. Nem csak az ISDN gyorsabb az analóg csatornánál, de ez lehetővé teszi, hogy általánosan nem több mint 1 sec alatt kapcsolat létesüljön, nem hosszabbat kívánva meg egy analóg modemtől, és az sokkal megbízhatóbb (kevesebb hibával) mint az analóg vonalak. Választéka van még az extra tulajdonságoknak és opcióknak is, amelyek nem mindig érhetők el analóg vonalakkal. Egy ISDN kapcsolat felépítése látható a Fig 2-40-es ábrán. Amit a hordozó biztosít egy digitális bit cső, ami csak mozgatja a biteket. Amit a bitek jelentenek, fenn van a küldőn és a fogadón. Az interface az ügyfél berendezése és a hordozó berendezése között az NT1 készülék T interface-szel az egyik oldalon és U-val a másikon. Az U.S.-ban az ügyfeleknek meg kell vásárolni a saját NT1 készüléküket. A legtöbb európai országban ezt kölcsönözni kell a hordozótól. 2.4.6. Karakter kódok Minden számítógépnek van egy karakter-beállítása, amit használ. Minimumként ez a beállítás a 26 nagybetűt, a 26 kisbetűt, a számokat 0-tól 9-ig és a speciális szimbólumok beállításait - mint szóköz, pont, mínuszjel, vessző - tartalmazza. Ezen karakterek számítógépbe helyezéséhez mind egy számmal van jelölve: pl. a=1, b=2,?,z=26, +=27, ? =28. A karakterek feltérképezését egész számokra karakter kódnak hívják. Alapvető, hogy a kommunikáló számítógépek ugyanazt a kódot használják, vagy máskülönben nem lennének képesek megérteni egymást. Ebből az okból standardokat fejlesztettek ki. Lejjebb tanulmányozni fogunk kettőt a legfontosabbak közül. ASCII Az egyik legszélesebb körben használt kód az ASCII (American Standard Code for Information Interchange). Minden ASCII karakter 7 bites, 128 karaktert engedve meg. Fig 2-41 mutatja az ASCII kódot. A kódok 0-tól 1F-ig (16-os számrendszer) karaktervezérlők és nem nyomtatottak. Sokat az ASCII vezérlő karakterek közül adat továbbításra terveztek. Pl.: egy üzenet állhat egy SOH (Start of Header) karakter, egy fejes, egy STX (Start of Text), a szöveg maga, ETX (End of Text) ***[110-113] 110-113old. A gyakorlatban azonban az üzenetek formátuma telefonon és a hálózatokon küldve teljesen más. Itt az ASCII átvitel karaktereket nem sokat használják. Az ASCII nyomtató karakterek egyértelműek. Magukban foglalják a nagy és kis betűket, a számjegyeket, az írásjeleket és néhány matematikai szimbólumot.
. Vannak nyelvek amelyeknek abc-je teljesen más (pl.: orosz, arab), és vannak nyelvek amelyeknek egyáltalán nincs abc-je (pl.: kínai). Ahogy a számítógép az egész földön kezdett elterjedni, a szoftver árusok termékeiket olyan országokban is el akarják adni, ahol a használók nem beszélnek angolul, ezért egy más karakter táblára volt szükség. Az első kísérlet az ASCII kibővítésére az IS 646 volt, amely újabb 128 karaktert adott az ASCII-hez, 8-bites kóddá alakítva Latin-1 néven. A hozzáadott karakterek főleg latin betűk voltak ékezetekkel és diakritikus jelekkel. A következő próbálkozás az IS 8859 volt, ami bevezette a kód lap fogalmát, ami nem más mint 256 karakteres készlet bizonyos nyelvek vagy nyelvcsoportok részére. Az IS 8859-1 a Latin-1. IS 8859-2 a latin alapú szláv nyelvekkel foglalkozik (pl.: cseh, lengyel, magyar). AZ IS 8859-3 már olyan karaktereket is tartalmaz, amelyeket többek között a török, a máltai, az eszperantó és a galíciai nyelv használ. A probléma a kódlap beállításával az, hogy a szoftvernek számon kell tartania, hogy melyik lapot használja, ezenkívül lehetetlen keverni a nyelveket a lapokon keresztül, valamint a táblázatok egyáltalán nem fedik a japán és kínai nyelvet. A számítógép gyártók egy csoportja elhatározta, hogy megoldják a problémát azzal, hogy konzorciumot hoznak létre egy új rendszer megformálásához UNICODE néven és ezt terjesztik nemzetközi szabványként (IS 10646). Az UNICODE-ot támogatja néhány programozási nyelv (pl.: Java), néhány operációs rendszer (pl.: Windows NT) és más alkalmazások. Úgy tűnik, hogy egyre elfogadottabb lesz, ahogy a számítógépipar globálissá válik. Az UNICODE alapötlete, hogy minden karakterhez és szimbólumhoz egyedi állandó 16-bites értéket rendel, melyet kódpontnak hívnak. Nincsenek több bájtos karakterek és nem használhatunk menekülési szekvenciákat. Mivel minden szimbólum 16.bites, így a szoftver írás sokkal egyszerűbb. A 16-bites szimbólumokkal az UNICODE-nak 65,536 kódpontja van. A világnyelvek együttesen körülbelül 200,000 szimbólumot használnak, és mivel a kódpont kevés, ezért a kiosztását nagyon körültekintően kell elvégezni. A kódpontok közel felét már kiosztották. Az konzorcium figyeli a javaslatokat, hogy feldolgozza a többit. Hogy felgyorsítsák az UNICODE elterjeszteset, a konzorcium okosan a Latin-1-et használta a 0-tól 255-ig terjedő kódpontokhoz, megkönnyítve ezzel az ASCII-ről az UNICODE-ra való átállást. Hogy ne veszítsenek kódpontot, minden diakritikus jelnek meg van a saját kódpontja, és a szoftver dolga, hogy azt a szomszédos jellel összekapcsolva egy új karaktert alkosson. A kódpont teret blokkokra osztják, melyek mindegyike 16 kódpontot tartalmaz. Az UNICODE fő abc-i egymást követő blokkokban helyezkednek el. Néhány példa ( és a kódpontok számának megállapítása) a latin (336), a görög (114), a cirill (256), az örmény (96), a héber (112), a devanagari (128), a gurmukhi (128), az oriya (128), a telugu (128) és a kannada (128). Jegyezzük meg, hogy mindegyik ezek közül a nyelvek közül több kódpontot határozott meg, mint ahány betűje van. Ez a választás részben azért történt, mert néhány nyelvben mindegyik betűnek több alakja van. Például az angolban minden betűnek két alakja létezik: kis betű és nagy betű. Néhány nyelvben három vagy több alak van, valószínűleg attól függően, hogy a szó elején, közepén vagy végén van. Ráadásul ezek az abc-k mellé még kódpontokat határoznak meg diakritikus jeleknek (112), írásjeleknek (112), alsó és felső indexnek (48), pénznem szimbólumoknak (48), matematikai szimbólumoknak (256), geometriai formáknak (96) és dingbatoknak (192). Ezek után jönnek a szükséges szimbólumok a kínaihoz, japánhoz és koreaihoz. Először 1024 fonetikus szimbólum (pl. katakana és bopomofo) és utána a kínaiban és japánban használt egybefoglalt Han ideogrammák (20992) és a koreai Hangul szótagok (11156). Hogy a használók különleges karaktereket használjanak különleges szándékokra, 6400 kódpontot határoztak meg helyi használatra. Amíg az UNICODE nemzetköziséggel kapcsolatos problémákat old meg, nem oldja meg (próbálja megoldani) a világ összes problémáját. Például míg a latin abc sorban van, a Han ideogrammák nincsenek abc sorrendben, ennek egy következménye, hogy egy angol program meg tudja vizsgálni a "macska" és "kutya" szót és sorrend szerint csoportosítani egyszerűen az első betűjük UNICODE értékének összehasonlításával, de egy japán programnak külső táblázatra van szüksége, hogy rájöjjön a két szimbólum közül melyik van előbb a szótárban. Egy másik vitapont, hogy minden pillanatban új szavak bukkannak fel. 50 évvel ezelőtt senki se beszélt appletekről, kibertérről, gigabájtról, lézerről, modemről vagy videokazettáról. Az angolban az új szavak hozzáadása nem követel új kódpontokat, de a japán igen. Ráadásul az új műszaki szavak legalább 20,000 új (főleg kínai) személy és hely nevet igényelnek. A vakok szerint Braille-írásnak (vakírásnak) is lennie kellene benne, és mindenféle speciális érdeklődésű csoportok azt akarják, amit megértenek, mint jogos kódpontjukat. Az UNICODE konzorcium átnézi és dönt minden új javaslatról. Az UNICODE ugyanazokat a kódpontokat használja azokhoz a karakterekhez amelyek majdnem ugyanúgy néznek ki, de más jelentésük van vagy japánul és kínaiul egy kicsit másképp írják (mint ahogy az angol szófeldolgozók a ?blue? szót ugyanúgy betűzik, mint a "blew"-t, mivel a kiejtésük azonos). Néhányan ezt a kevés kódpont miatti optimalizálásnak tartják, mások Angol-szász imperializmusnak (és még azt gondolják, hogy 16-bites értéket rendelni egy karakterhez nem politika volt?). Hogy súlyosbítsuk a bajokat a teljes japán szótárban 50000 kanji van (a nevek kivételével), és csak 20992 lehetséges kódpont a Han ideogrammákhoz. Választani kell, és nem minden japán véli úgy, hogy a komputer cégek konzorciuma, mégha közülük páran japánok, az ideális fórum ezekhez a döntésekhez. 2.5. Összefoglalás A komputerrendszerek 3 típusú komponensből állnak: processzorból, memóriából és I/O készülékekből. A processzor feladata, hogy egyszerre egy utasítást vegyen a memóriából, dekódolja és végrehajtsa azt. A szállító- dekódoló- végrehajtó kör algoritmusként is leírható, sőt néha egy alacsonyabb fokon irányító szoftver tolmács fejleszti ki. Hogy sebességet nyerjen, néhány komputernek egynél több vezetéke van, vagy szuperskalár tervezésű többfunkciós egységekkel, melyek párhuzamosan működnek. A többprocesszoros rendszerek egyre gyakoribbak. Párhuzamos komputerekben sorprocesszorok vannak beépítve, amelyben ugyanazt a működést ugyanabban az időben végrehajtják. Multiprocesszor, melynél több CPU osztozik egy közös memórián. Multikomputer, ahol több komputernek megvan a saját memóriája, de üzenetek küldésével kommunikálnak. A memóriát elsődlegesként vagy másodlagosként kategorizálhatjuk. Az elsődleges memóriát a pillanatnyi program működésére használjuk. Az elérési ideje rövid, maximum néhány 10 nanoszekundum és független a cím hozzáférhetőségétől. A cache ezt az időt még jobban lecsökkenti. Néhány memória hibajavító kódokkal van ellátva, hogy a megbízhatóságot növeljék. A másodlagos memóriáknak azonban sokkal hosszabb az elérési ideje (milliszekundum vagy több) és az olvasott vagy írt adatok helyétől függ. Mágnesszalag, mágneslemez és optikai lemez a leggyakoribb másodlagos memóriák. A mágneslemezek sok variációban léteznek, beleértve a floppy lemezt, a winchestert, az IDE és SCSI lemezt, valamint a RAID-t is. Optikai lemezek a CD-ROM a CD-R és DVD. I/O eszközöket az információ átvitelére használják. Egy vagy több buszon csatlakozik a processzor(ok)hoz és a memóriához. Például a terminálok, egerek, nyomtatók és modemek. A legtöbb I/O eszköz az ASCII kódkészletet használja, vár az UNICODE elfogadása, ahogy a komputeripar globálissá válik. Feladatok
***[114-117] 4. Tegyük fel, hogy egy egy-chipes számítógépet tervezel beágyazott rendszerekhez. A chip tartalmazza saját memóriáját, és a CPU-val egy sebességgel működik, elérési büntetés nélkül. Vizsgáld meg a 2.1.4-es alfejezetben megvitatott elveket, és magyarázd meg, vajon miért ilyen fontosak még mindig (feltételezve, hogy a magas teljesítmény még mindig követelmény). 5. Lehetséges lenne a 2-8(b) ábrán szereplő processzor gyorsítása? Ha igen, mi az első megoldandó probléma? 6. Néhány számítás magasan szekvenciált - ezeknél minden lépés függ az őt megelőzőtől. Ezekhez a számításokhoz egy array, vagy egy pipeline processzor lenne megfelelőbb? Miért? 7. Hogy versenyezni tudjanak az újonnan felfedezett nyomtatási eljárással, egy középkori kolostor eldöntötte, hogy kézzelírott, papírborítású könyvek tömegtermeléséhez kezd nagyszámú írnok egyidejű alkalmazásával. Mikor az apát felolvassa a készülő könyv első szavát, az összes írnok leírja ezt. Ez a folyamat addig folytatódik, míg a teljes könyvet fel nem olvasták és le nem másolták. A 2.1.6-os alfejezetben tárgyalt párhuzamos feldolgozó rendszerek közül melyik hasonlít leginkább erre a módszerre? 8. Ahogy lefelé haladunk a szövegben megtárgyalt ötszintű memória-hierarchiában, az elérési idő növekszik. Készíts ésszerű becslést az elérési idő arányáról optikai lemez és regiszter memória között. Tételezzük fel, hogy a lemez már csatlakoztatva van. 9. Számold ki az emberi szem által használt adatmennyiséget a következő információk alapján. A látómező körülbelül 1 millió (10^6) elemet (képkockát) tartalmaz. Mindegyik képkockát le lehet egyszerűsíteni a három elsődleges szín kombinációjára, mindegyik színt 64 árnyalattal számítva. Az időbeli felbontás 100 msec. 10. Az élő szervezetek genetikai információi a DNS molekulákban vannak kódolva. A DNS molekula a négy alapvető nukleotida lineáris szekvenciája: az A-é, a C-é, a G-é és a T-é. Az emberi génstruktúra körülbelül 3 milliárd (3*10^9) nukleotidát tartalmaz körülbelül 100,000 gén formájában. Mennyi információt tárol az emberi génstruktúra (bitekben)? Mekkora az információkapacitása egy átlagos génnek (bitekben)? 11. A következő memóriák közül melyek lehetségesek? Melyek észszerűek? Miért? a. 10 bites cím, 1024 cella, 8 bites cellaméret b. 10 bites cím, 1024 cella, 12 bites cellaméret c. 9 bites cím, 1024 cella, 10 bites cellaméret d. 11 bites cím, 1024 cella, 10 bites cellaméret e. 10 bites cím, 10 cella, 1024 bites cellaméret f. 1024 bites cím, 10 cella, 10 bites cellaméret 12. A szociológusok három lehetséges választ ismernek egy tipikus közvéleménykutatási kérdésre, mint az "Ön hisz a fogtündérekben?" -név szerint: igen, nem és tartózkodom. Ennek tudatában a Szociomagnetikai Számítástechnikai Társaság eldöntötte, hogy épít egy olyan számítógépet, ami képes feldolgozni ezeket az adatokat. A számítógépnek trináris memóriája volt - azaz, minden byte (tryte) 8 tritet tartalmazott, ahol minden trit a 0, 1, 2 értékeket veheti fel. Mennyi trit szükséges egy 6 bites szám tárolásához? Adj egy kifejezést arra, hogy n bit tárolására mennyi tritre van szükség! 13. Egy számítógép fel lehet szerelve 268,435,456 byte-nyi memóriával. A gyártók miért ilyen sajátos számokat választottak, a könnyen megjegyezhető számok helyett, mint pl: 250,000,000? 14. Találj ki egy páros paritású Hamming kódot a 0-tól 9-ig való számokra! 15. Találj ki egy olyan kódot a 0-tól 9-ig való számokhoz, aminek Hamming-távolsága 2! 16. Hamming kódban néhány bitet "elpazarlunk", abban az értelemben, hogy ellenőrzésre használjuk információtárolás helyett. Egy 2^n-1 hosszú (adat+ellenőrzés) üzenet hány százaléka ilyen "elpazarolt" bit? Becsüld meg ennek a kifejezésnek az értékét, az n 3-tól 10-ig tartó intervallumán! 17. A telefonvonalak átviteli hibái gyakrabban fordulnak elő halmozottan (egymást követő bitek eltorzulnak), mint egyesével. Mivel az alap Hamming kód karakterenként csak egy hibát képes kijavítani, használhatatlan, ha egy adott zavarás n db egymás utánni bitet torzít el. Találj ki ASCII karakterek vonalon való továbbításának egy olyan módszerét, ahol a zavarások eltorzíthatnak 100 egymást követő bitet. Feltételezve, hogy a minimális távolságkét zaj között 1000 karakter. Ötlet: Gondolkodj el figyelmesen a bitátvitel sorrendjéről. 18. Mennyi ideig tart elolvasni egy 800 cilinderes lemezt? Minden cilinder öt sávot tartalmaz, és minden sáv 32 szektort. Először is, az olvasás a 0. sáv 0. szektorából indul, ezután az 1. sáv 0. szektorából, és így tovább. A forgási idő 20 msec, és a pozícionálás szomszédos cilinderek között 10 msec-ig, legrosszabb esetben 50 msec-ig tart. Egy cilinder sávjai között a váltás azonnali. 19. A 2-19-es ábrán látható lemez 64 sávot/szektort tartalmaz, fordulatszáma 7200 fordulat/perc. Mennyi a lemez elviselhető átviteli aránya egy sávon keresztül? 20. Egy számítógépnek 25 nsec ciklusidejű busza van, ami alatt ír, vagy olvas egy 32 bites szót a memóriából. A számítógépnek van egy Ultra-SCSI lemeze, ami a buszt használja, és 40 MByte/sec sebességgel fut. A CPU normálisan 25 nsec idő alatt szállít és hajt végre egy utasítást. Mennyire lassítja le ez a lemez a CPU-t? 21. Képzeld el, hogy egy operációs rendszer lemezkezelő részét írod. A lemezt, logikusan, blokkok sorozataként ábrázolod, a belül lévő 0-tól, a kivül lévő maximumig. Ahogy egy file elkészül, meg kell határoznod az üres szektorokat. Ezt megteheted belülről kifelé, vagy kívülről befelé. Számít valamit, melyik stratégiát választod? Indokold válaszod! 22. Az LBA címzés 24 bitet használ egy szektor megcímzésére. Mekkora az a legnagyobb lemez, amit ezzel még kezelni lehet? 23. A 3-as szintű RAID az egybites hibákat képes egy paritás meghajtó használatával javítani. Mi az értelme a 2-es szintű RAID-nek? Mindezek után, ez csak egy hibát bír kijavítani és több meghajtót használ erre. 24. Mennyi a pontos adatkapacitása (byte-okban) egy szabványos, 74 percnyi adatot tartalmazó 2-es módú CD-ROM-nak? 25. Egy CD-R beégetéséhez a lézernek nagyon gyorsan kell ki-be pulzálnia. Amikor 4x-es sebességgel fut 1-es módban, mekkora az impulzusok hossza nanoszekundumokban? 26. Ahhoz, hogy elhelyezzünk egy 133 perces videót egy egyoldalas, egyrétegű DVD-n, egy tisztességes tömörítési mennyiség szükséges. Számold ki a szükséges tömörítési arányt! Feltételezve, hogy 3,5 GB hely szabad a videó sávnak, a képfelbontás 720x480 pixel 24 bit színnel, és a képlejátszás 30 képkocka/másodperc. 27. Az átviteli arány a CPU és társított memóriája között nagyságrendekkel nagyobb, mint a mechanikus I/O átviteli arány. Hogyan okozhat ez az egyensúlytalanság hatékonytalanságot? Hogyan lehet ezt enyhíteni? 28. Egy bit-térkép terminál felbontása 1024x768. Aképernyőt egy perc alatt 75-ször rajzolja újra. Mennyi az impulzus egy képpontra átszámítva? 29. Egy gyártó olyan színes, bit-térkép terminált hirdet, ami 2^24 különböző színt képes megjeleníteni. Ennek ellenére a hardware csak egy byte-ot használ minden pixelhez. Hogyan lehetséges ez? 30. Egy bizonyos karakterkészletben egy monokróm lézer nyomtató 50, 80 karakteres, sort tud nyomtatni oldalanként. Egy átlagos karakter egy 2mm x 2mm-es dobozt foglal el, aminek körülbelöl 25%-a festék. A többi üres. A festékréteg 25 micron vastag. A nyomtató festékpatronja 25cm x 8cm x 2cm. Hány oldal kinyomtatására elegendő egy festékpatron? 31. Ha egy páros paritású ASCII szöveg aszinkron átvitele 2880 karakter/sec egy 28,800 bps-es modemen keresztül. A kapott bitek hány százaléka tartalmaz adatot (a hallottakkal ellentétben)? 32. A Hi-Fi Modem Társaság elkészített egy új frekvencia-modulációs modemet, ami 16 frekvenciát használ 2 helyett. Minden perc n egyenlő időintervallumra van felosztva, mindegyik a 16 hang egyikét tartalmazza. Szinkron átvitelt használva hány bit/sec ennek a modemnek az átviteli sebessége? 33. Becsüld meg, hány karaktert, beleértve a szóközt is, tartalmaz egy tipikus számítástechnikai szakkönyv! Hány bit szükséges egy ilyen könyv lekódolásához ASCII-ben, ellenőrzéssel? Mennyi CD-ROM szükséges egy 10,000 könyvből álló számítástechnikai szakszótár tárolásához? Mennyi duplaoldalú, duplarétegű DVD szükséges ugyanezen könyvtár tárolásához? 34. Dekódold a következő bináris ASCII szövegeket: 1001001, 0100000, 1001100, 1001111, 1010110, 1000101, 0100000, 1011001, 1001111, 1010101, 0101110. 35. Írj eljárást hamming(ascii, kódolt) néven, ami az ascii alacsony helyiértékű 7 bitjét egy 11 bites egész kódolt -ban tárolt kódszóba kódolja. 36. Írj függvényt távolság(kód, n, k) néven, ami kap egy kód nevű tömböt, ami n db k bites karakterből áll, bemenetként, és a karakterhalmaz távolságával tér vissza kimenetként. 3 A digitális logika szintje Az 1-2-es ábra hierarchiájának legalján találhatjuk a digitális logika szintjét, a számítógép igazi hardverét. Ebben a fejezetben több szempontból is megvizsgáljuk a digitális logikát, mint az elkövetkezendő fejezetek megértésének alapkövét. Ez a tárgy a számítástudomány és az elektroműszerészet határán helyezkedik el, de önmagában is érthető, így nem szükséges megértéséhez semmiféle előzetes hardver, vagy mérnöki tapasztalat. Az alapelemek, melyekből a digitális számítógépek felépülnek meglehetősen egyszerűek. Tanulmányainkat ezek az alapelemek , és az analizálásukra használt speciális, kétváltozós algebra (Boolean algebra) megismerésével kezdjük. Ezután megvizsgálunk néhány alapvető áramkört, amit kapuk egyszerű kombinációiból kaphatunk, beleértve az aritmetikai áramköröket is. A következő téma az, hogyan használhatunk kapukat információ tárolására, azaz, a memóriák felépítése. Ezután a CPU-hoz érünk, különösen az egychipes CPU-k kapcsolódásaihoz a memóriával, és a perifériákkal. A fejezet végén számos példa található az iparból. 3.1 Kapuk és Boolean algebra Digitális áramköröket néhány primitiv elem számtalan kombinációjából készíthetünk. A következő alfejezetben leírjuk ezeket a primitív elemeket, megmutatjuk, hogyan lehet őket kombinálni, és bevezetünk egy hatásos matematikai teknikát, amivel a viselkedésüket lehet vizsgálni. ***[118-121] Hidasi László h938426@ stud.u-szeged.hu 3.1.1 Kapuk A digitális áramkörben csak két logikai érték létezik. Tipikusan a 0 és 1 volt közötti jel fejez ki egy értéket (pl. a kettes számrendszerbeli 0-t), és a 2 és 5 volt közötti jel egy másikat (pl. a kettes számrendszerbeli 1-et). Az e két intervallumon kívül eső feszültségek nem megengedettek. Kis elektronikus eszközök, kapuk számítják e kétértékű jelek különböző függvényeit. Ezek a kapuk alkotják azt a hardver bázist, amelyre az összes digitális számítógép épül. A kapuk belső működési részletei nem tartoznak a könyv anyagához, mert az eszközök szintjéhez tartoznak, amely a 0. szint alatt van. Mindazonáltal most eltérünk a tárgytól, hogy egy pillantást vessünk az alapötletre, ami nem bonyolult. Az összes modern digitális logika végül is azon a tényen alapszik, hogy egy tranzisztor úgy is működhet, mint egy nagyon gyors kettes számrendszerbeli kapcsoló. A 3-1(a) ábrán egy kétpólusú tranzisztor (a kör) egy egyszerű áramkörbe beágyazva látható. Ennek a tranzisztornak három kapcsolata van a külvilággal: a bemenet, az alap, és a feszültség-levezető. Amikor a bemeneti feszültség, Vbe egy bizonyos kritikus érték alá csökken, a tranzisztor kikapcsol, és végtelen ellenállásként kezd viselkedni. Ez azt okozza, hogy az áramkör kimeneti feszültsége, Vki egy Vcc -hez közeli értéket vesz fel, egy kívülről beállított feszültséget, ami tipikusan +5 volt ilyen típusú tranzisztornál. Amikor Vbe átlépi a kritikus értéket a tranzisztor bekapcsol és drótként kezd el működni, mire Vki földelt lesz (megállapodás szerint 0 volt). 3-1-es ábra. (a) Egy tranzisztorfordító (b) Egy NAND kapu (c) Egy NOR kapu A fontos dolog akkor történik, amikor Vbe alacsony, Vki magas, és fordítva. Ez az áramkör tehát egy fordító, a logikai 0-t logikai 1-é, a logikai 1-et logikai 0-vá alakítja. Az ellenállásra (a szaggatott vonal) azért van szükség, hogy korlátozza a tranzisztor áramfelvételét, így nem fog kiégni. A szükséges idő arra, hogy az egyik állásból a másikba kapcsoljon, általában néhány nanoszekundum. A 3-1 (b) ábrán két tranzisztor van sorba kapcsolva. Ha V1 és V2 is magas, mindkét tranzisztor vezetni fogja az elektromosságot, és Vki alacsony lesz. Ha valamelyik bemenet alacsony, a megfelelő tranzisztor kikapcsol, és a kimenet magas lesz. Más szóval Vki akkor és csak akkor lesz alacsony, ha V1 és V2 is magas. A 3-1 (c) ábrán a két tranzisztor nem sorba, hanem párhuzamosan van összekapcsolva. Ennél az állásnál ha valamelyik bemenet magas, a megfelelő tranzisztor bekapcsol és a kimenet földelt lesz. Ha mindkét bemenet alacsony, a kimenet magas marad. Ez a három áramkör, vagy a velük egyenértékűek a legegyszerűbb áramkörök. A nevük NOT, NAND és NOR kapuk, egyenként. A NOT kapukat fordítók nak is gyakran hívják, a két formát váltakozva fogjuk használni. Ha alkalmazzuk azt a megállapodást, miszerint "magas" (Vcc volt) a logikai 1, és "alacsony" (földelt) a logikai 0, akkor kifejezhetjük a kimeneti értéket a bemeneti értékek függvényeként. A jelek, amelyeket e három áramkör ábrázolására használnak az áramkörök működés közbeni magatartásával , a 3-2 (a)-(c) ábrákon láthatóak. Ezeken az ábrákon A és B a bemenet és X a kimenet. Minden sor a kimenetet határozza meg a bemenetek különböző kombinációi esetén. 3-2-es ábra Az öt alapkapu jele és működése Ha a 3-1 (b) kimeneti jelét egy fordítókörön vezetjük át, egy újabb áramkört kapunk, ami a NAND kapu pontos ellentéte - mégpedig egy áramkör, melynek kimenete akkor és csak akkor 1, ha mindkét bemenet 1. Ennek az áramkörnek neve AND (és) kapu, a jele és a működési leírása a 3-2 (d) ábrán látható. Hasonlóan a NOR kapu is csatlakoztatható egy fordítóhoz, ezzel egy olyan áramkört kapunk, amelynek kimenete 1, ha valamelyik vagy mindkét bemenet 1, de 0, ha mindkét bemenet 0. A jele és a működési leírása ennek az áramkörnek, amelynek neve OR (vagy) kapu a 3-2 (e) ábrán látható. A kis körök, amelyek a fordító, a NAND és a NOR kapu részeként láthatóak az ábrákon, a fordítóbuborékok. Más szövegekben is használják őket a fordított jel jelölésére. A 3-2 ábrán látható öt kapu a digitális logika szintjének legfontosabb építőeleme. A megelőzőkből világos, hogy a NAND és a NOR kapukhoz két-két tranzisztor szükséges, míg az AND és OR kapukhoz három-három. Emiatt sok számítógép NAND és NOR kapukon alapszik az ismertebb AND és OR kapuk helyett. (A gyakorlatban a kapuk egy kissé máshogy működnek, de a NAND és NOR kapuk még mindig egyszerűbbek, mint az AND és OR kapuk.) Futólagosan érdemes megemlíteni, hogy a kapuknak lehet kettőnél több bemenetük. Általában egy kapunak, például egy NAND kapunak korlátlan számú bemenete lehet, de a gyakorlatban a nyolcnál több bemenet szokatlan. Bár a kapuk felépítése az eszközök szintjéhez tartozik, meg szeretnénk említeni a gyártási technológiák nagy családjait, mert sokat utalnak rájuk. A két nagy technológia a kétpólusú és a MOS (Metal Oxide Semiconductor, vas-oxid félvezető). A két nagy kétpólusú típus a TTL (Transistor-Transistor Logic, tranzisztor-tranzisztor logika), amely évekig volt a digitális elektronika "igáslova" és ECL (Emitter-Coupled Logic), melyet akkor használnak, amikor nagy sebességű működésre van szükség. A MOS kapuk lassabbak, mint a TTL és az ELC, de sokkal kevesebb áramot igényelnek, és sokkal kisebb helyet foglalnak, tehát sokat egymás mellé lehet helyezni belőlük szorosan. A MOS több variációban létezik, ezek a PMOS, NMOS és CMOS. Bár a MOS tranzisztorok másképpen épülnek fel, mint a kétpólusú tranzisztorok, az a képességük, hogy elektronikus kapcsolóként működjenek, azonos. A legtöbb modern CPU és memória a CMOS technológiát alkalmazza, amely +3,3 voltonműködik. Ez minden, amit mondani fogunk az eszközök szintjéről. Azok az olvasók, akik tanulmányozni szeretnék ezt a szintet, nézzék meg a 9. fejezetben ajánlott olvasmányokat.
A kapuk kombinációjából felépített áramkörök leírására egy új típusú algebrára van szükség, egy olyanra, amelyben a változók és a függvények csak a 0 és 1 értékeket vehetik fel. Az ilyen algebra neve Boole algebra, amit a feltalálójáról, George Boole (1815-1864) angol matematikusról neveztek el. Az igazat megvallva, valójában a Boole algebra egy speciális típusára utalunk, a kapcsoló algebrára , de a "Boole algebra" kifejezés olyan széles körökben jelentett "kapcsoló algebrát", hogy nem teszünk a kettő között különbséget. Ahogy vannak függvények a "rendes" (azaz középiskolai) algebrában, úgy vannak függvények a Boole algebrában. A Boole függvénynek egy vagy több bemeneti változója van, és a kapott eredmény csak e változók értékeitől függ. Egy egyszerű függvény, f meghatározható úgy, hogy azt mondjuk, hogy ha f (A) akkor 1, ha A 0, és f (A) akkor 0, ha A 1. Ez a függvény a NOT (nem) függvény a 3-2 (a) ábrán. Mivel egy n változós Boole függvény bemeneti értékeinek csak 2n lehetséges kombinációja van, a függvény teljesen leírható egy 2n soros táblázattal, amelyben minden sorban a függvény értéke található a bemeneti értékek különböző kombinációja esetén. Az ilyen táblázat az igazságtáblázat. A 3-2-es ábra táblázatai mind példák igazságtáblázatokra. Hamegállapodunk abban, hogy az igazságtáblázat sorait mindig növekvő sorrendben írjuk ki (kettes számrendszerben), akkor két változóra a sorrend 00, 01, 10 és 11, a függvény teljesen leírható a 2n bites kettes számrendszerbeli számmal, amit úgy kapunk, hogy az igazságtáblázat eredményoszlopát függőlegesen olvassuk. Így NAND 1110, NOR 1000, AND 0001 és OR 0111 lesz. Nyilvánvalóan csak 16 Boole függvény létezik 2 változóval, megfelelően a 16 lehetséges 4-bites eredménysornak. Ezzel ellentétben a rendes algebrának végtelen számú függvénye van két változóval, amelyek közül egyiket sem lehet leírni egy táblázattal, ami tartalmazza a kimeneteket az összes lehetséges bemenetre, mert minden változó végtelen számú értékeket vehet fel. A 3-3 (a) ábra egy háromváltozós Boole függvény: M = f (A,B,C) igazságtáblázatát mutatja. Ez a függvény egy többségi logikai függvény, ami azt jelenti, hogy ha a bemenetek között a 0 van többségben, akkor az értéke 0, ha az 1, akkor a függvény értéke 1. Bár bármely Boole függvény teljesen meghatározható az igazságtáblázatával, de ahogy a változók száma emelkedik, a jelölési mód egyre jobban fárasztóbb lesz. Ehelyett egy másik jelölést szoktak használni. 3-3-as ábra (a) A többségi függvény igazságtáblázata három változóval (b) Egy áramkör (a)-ra Hogy lássuk, hogy ez a másik jelölés hogy történik, meg kell jegyezni, hogy egy Boole függvény megadható úgy, hogy megmondjuk, hogy a bemeneti változók mely értékeire lesz a kimenet 1. A 3-3 (a) ábra függvényében a bemeneti változók négyféle kombinációjára lesz M értéke 1. ***[122-125] 122. A DIGITÁLIS LOGIKA SZINTJE 3. FEJEZET A 3-3(a) ábrán látható függvény, M, értéke n esetben lesz 1. Az egyezmények szerint, egy vonalat húzunk a bemenő változó fölé, ha az negálva szerepel. E vonal hiánya azt jelenti, hogy a változó negálatlan. Továbbá a szorzást vagy a pontot fogjuk használni a Logikai AND függvény jelölésére, és a + fogja jelölni a Logikai OR függvényt. Így, például: AB-C értéke 1, ha A=1 és B=0 és C=1. AB-+BC-értéke szintén 1, mikor (A=1 és B=0) vagy (B=1 és C=0). A 3-3(a) ábra négy oszlopa 1 bites kimeneteket ad meg: A-BC, AB-C, ABC-és ABC. A függvény, M, igaz (azaz 1) ha valamelyik összetevője igaz; így leírhatjuk _ _ _ M=ABC+ABC+ABC+ABC ez egy rövidebb módja az igazságtábla megadásának. Egy n változós függvény leírható 2n n változós ?szorzat? összegeként. Ez a formula különösen fontos,mint ahogy azt majd hamarosan látni fogjuk, mert ez oda vezet, hogy a függvényt az alapvető kapuk segítségével valósítjuk meg. Egy fontos dolog különbséget tenni az absztrakt Logikai függvény és az elektronikus áramkör megvalósítása között. A Logikai függvények változókból állnak, mint például A,B és C, és Logikai operátorokból, mint például AND, OR és NOT. Egy Logikai függvény megadható az igazságtáblájával, vagy megadható így is _ _ F=ABC+ABC Egy Logikai függvény megvalósítható egy elektromos áramkör segítségével (gyakran többféleképpen) felhasználva a bemeneti, kimeneti változókra és a kapukra, mint például AND, OR és NOT, vonatkozó jelöléseket. Általában a Logikai operátorokra az AND, OR és NOT jelölési módszert fogjuk használni, és a kapuk megadására pedig ezt a jelölést: AND, OR és NOT, bár ez gyakran félreérthető. 3.1.3 A Logikai függvények megvalósítása Ahogy az előbb már említettük egy logikai függvény formalizálása 2n db szorzat összegeként is megvalósítható. Ha példaképpen megnézzük a 3-3 ábrát, akkor láthatjuk, hogy ez a megoldás tökéletes. A 3-3(a) ábrán a bemenetek A, B és C a bal oldal felől érkeznek, és a függvény kimenetei, pedig a jobb oldalra érkeznek. Mivel a bemeneti változók komplemenseire (negáltjaira) van szükségünk, ezért leágaztatjuk, és átvezetjük az 1-sel, 2-sel és 3-sal jelölt invertálókon. Megfigyelve az ábrát a bejövő ágakból hat darab függőleges vonalat húzunk, melyek közül három darab a bemenő változókhoz, és a három másik vonal a komplemensükhöz kapcsolódik. Ezek a vonalak gondoskodnak a megfelelő forrásról az őket követő kapuk számára. Például az 5-ös kapu, a 6-os és a 7-es kapuk mindegyike az A-t használja bemenetként. Egy aktuális áramkörben ezek a kapuk A-hoz vannak kapcsolva, anélkül hogy közbenső függőleges vezetéket használnánk. Az áramkör négy AND kaput tartalmaz, egyet az összes taghoz rendelünk, mely kiegyenlíti M-et (azaz az igazságtábla minden sorában van egy bit, és ezen bitek oszlopa adja az eredményt). Minden AND kapu egy sort számít ki az igazságtáblól. Végül, az összes tag össze van kötve egy OR kapuval, és így együtt fogják megadni a végső eredményt. A 3-3(b) ábrán látható áramkör egy olyan egyezmény alapján van szemléltetve, melyet az egész könyvben használni fogunk: mikor két vonal keresztezi egymást, akkor azok nincsenek összekapcsolva, ha csak nincs egy pont a találkozásuknál. Például, a kapu kimeneténél hat függőleges vonal, három helyen keresztezi egymást, de csak a C-hez kapcsolódnak. De óvatosnak kell lenni, hiszen néhány szerző másfajta szokást használ. Hogy letisztázzuk egy áramkör megvalósítását Logikai függvényekkel, vegyük a 3-3 ábrát példaképpen: 1. Leírjuk a függvény igazságtáblázatát 2. A összes bemenő változónak generáljuk a negáltját 3. Minden taghoz egy AND kaput kaput kapcsolunk, aminek az eredményoszlopában 1 van 4. Összekötjük az ANDkapukat a megfelelő inputokkal 5. Az összes AND kapu outputját összekötjük egy OR kapuban Bár megmutattuk, hogy bármely Logikai függvény megvalósítható NOT, AND és OR kapukkal, gyakran egyszerűbb az áramköröket csak egy típusú kapuval megvalósítani. Szerencsére egyszerű átalakítani az előző algoritmus alkotta áramköröket a tiszta NAND vagy NOR formára. Egy ilyen átalakításhoz csak arra van szükségünk, hogy egy egyszerű kaputípus használatával megvalósítsuk a NOT-ot, AND-et és OR-t. A 3-4 ábra felső sora mutatja, hogy lehet ezt a hármat csak NAND kapukkal megvalósítani, az alsó sor azt mutatja, hogy lehet megvalósítani csak NOR kapukkal. (Ez így megvalósítható, de vannak más utak is.) Az egyik út a Logikai függvény megvalósításához csak NAND vagy NOR kapukkal, azaz hogy először kövessük ezt a fenti eljárást, amit a NOT, AND és OR kapukkal építhetünk fel. Ezután cseréljük a többemenetű kapukat ekvivalens áramkörökre kétbementű kapukat használva. Pl.: A+B+C+D-t úgy is számíthatjuk, hogy (A+B)+(C+D) , kétbemenetű OR kapukat használva végül a NOT, AND és ORkapuk a 3-4-es ábra áramköreire cserélendők ki. Bár ez az eljárás nem vezet optimális áramkörökhöz a kapuk minimális száma tekintetében, de megmutatja, hogy a megoldás mindig lehetséges. A NAND és a NOR kapuk is teljesek. Bármely Logikai függvény kiszámítható bármelyik használatával. Egyik másik kapu sem képes erre, ami egy másik ok arra, hogy miért részesítik őket előnyben az áramkörök építésekor. 3.1.4 Áramköri ekvivalencia Az áramkörtervezők gyakran próbálják csökkenteni a kapuk számát a termékeikben, hogy csökkentsék az alkatrészek számát, nyomtatott áramkör területét, áramfogyasztást, stb. Hogy egy áramkör bopnyolultságát csökkentse a tervezőnek találnia kell egy másik áramkört, amely ugyanazt a 3-4-es ábra. A NOT (a), AND (b) és az OR (c) megvalósítása csak NAND és NOR kapukkal. függvényt számolja, mint az eredeti, de kevesebb kapuval (vagy esetleg egyszerűbb kapukkal pl.: kétbemenetű kapuk négybemenetű kapuk helyett). Az ekvivalens áramkörök keresése a Logikai algebra hasznos eszköze lehet.Egy példaként, hogy hogyan használhatjuk a logikai algebrát, tekintsük AB+AC áramkörét és igazságtáblázatát, amelyek 3-5(a)-s ábrán láthatók. Bár még nem beszéltünk róla, a rendes algebra sok szabálya áll a logikai algebrára is. Ebben az esetben AB+AC átalakítható A(B+C)-vé a disztributivitást felhasználva. A 3-5(b)-s ábra mutatja A(B+C) áramkörét és igazságtáblázatát. Mivel a két függvény akkor és csak akkor ekvivalens, ha ugyanaz a kimenetük az összes lehetséges bemenetre, így könnyű látni a 3-5-ös ábra igazságtáblázataiból, hogy A(B+C) ekvivalens AB+AC-vel. Az ekvivalencia miatt 3-5(b) ábra áramköre tisztán jobb, mint a 3-5(a) ábráé, mert kevesebb kaput tartalmaz. Általában az áramkörtervező egy logikai függvénnyel kezdi, s alkalmazza rá a logikai algebra törvényeit, hogy egyszerűbbet, vele ekvivalenset találjon. A végső függvényből felépíthető az áramkör. Ezen szemlélet használatához szükségünk van néhány azonosságra a Logikai algebrából. A 3-6-os ábra a legfontosabbat mutatja. Érdemes megemlíteni, hogy minden egyes szabálynak két formája van, 3-5 ábra. Két ekvivalens függvény. AB+AC (a), A(B+C) (b) amelyek ellentétesek egymással. Az AND és az OR, valamint a 0 és az 1 átváltásánál mindkét forma előállítható a másikból. Minden szabály könnyen kipróbálható azáltal, hogy felépítjük az igazságtáblázatát. A DeMorgan szabályt kivéve az abszorpciós szabályok és disztributív szabály és formájára az eredmények meglehetősen intuitívek. A DeMorgan szabály több, mint két változóval megnövelhető, ____ _ _ _ pl.: ABC = A + B + C A DeMorgan szabálya egy alternatív jelölést ajánl. A 3-7(a) ábrán az AND forma tagasással van ábrázolva, az input és az output számára egyaránt. Így egy OR kapu felcserélt inputokkal megegyezik a NAND-beliekkel. A 3-7(b) árbától kezdve (DeMorgan szabály kettős formája) világos, hogy a NOR kapu írható úgy, mint az ANDkapu, felcserélhető inputokkal. A DeMorgan szabály mindkét formájának tagadásával elérünk a 3-7(c) és (d) ábráig, melyek az AND és a NOR kapuk ekvivalens ábrázolási módját mutatják. Léteznek még analóg szimbólumok a DeMorgan szabály összetett variális formáira. Ha a 3-7 ábra azonosságait és az analógiákat többemenetű kapukra használjuk, könnyű konvertálni az igazságtáblázat szorzatok összegének ábrázolási módjait a tiszta NAND és NOR formához. Pl.: megfontolva a 3-8(a) ábra XOR funkcióját. Az állandó szorzatok összegének körforgását a 3-8(b) ábra mutatja. ***[126-129] Fordította: Bánki Judit V. mat.-I. progmat. Azért, hogy NAND formára jussunk, az ÉS kapu kimenetét a VAGY kapu bemenetével összekötő vonalat egy inverziót jelentő köröcskével kell megrajzolnunk, ahogy a 3-8(c) ábra mutatja. Végül, a 3-7(a) ábra felhasználásával a 3-8(d) ábrát kapjuk. Az A és B változók az A és B váltzókból kaphatók egy NAND vagy NOR kapu felhsználásával, ha a NAND vagy NOR kapu mindkét bemenetére az A-t vagy a B-t kötjük. Megjegyezzük, hogy az invertáló karikák mozgathatók a vonalak mentén, például az első kapu kimenetéről a második kapu bemenetére (3-8(d) ábra). Az áramkörök ekvivalenciájával kapcsolatban utolsó esetként egy érdekességet mutatunk meg, mégpedig azt, hogy ugyanaz a fizikai áramköri kapu más-más logikai függvényt valósít meg attól függően, hogy milyen konvenciót használunk. A 3-9(a)ábrán egy meghatározott kapu (F) kimeneteit láthatjuk különböző bemeneti kombinációkra. Mind a bemenet, mind a kimenet voltban van megadva. Ha elfogadjuk azt a konvenciót, hogy a 0 volt a logikai nullát jelenti és a 3.3 volt vagy az 5 volt a logikai egy, melyet pozitív logikának neveznek, akkor a 3-9(b) ábrán látható igazságtáblázatot kapjuk, ami az AND függvény igazságtáblázata. Ha azonban negatív logikát alkalmazunk, amiben a 0 volt a logikai egy és a 3.3 vagy az 5 volt a logikai nulla, akkor a 3-9(c) ábrán látható igazságtáblázatot kapjuk, ami az OR függvény. Látható, hogy a logikai értékek és a feszültség szintek közötti megfeleltetés választása nagyon fontos. A továbbiakban, ha másként nem definiáljuk, pozitív logikát használunk, tehát a "logikai egy", az "igaz" és a "magas" szinonímák, hasonlóan a "logikai nulla", a "hamis" és az "alacsony" szintén ugyanazt jelentik. 3.2 Egyszerű digitális logikai áramkörök Az előző fejezetben láttuk, hogyan valósíthatók meg az igazságtáblázatok és más egyszerű kapcsolások különálló kapuk felhasználásával. A gyakorlatban csak néhány kapcsolást építenek egyéni kapukból, habár korábban ez volt az elfogadott. Napjainkban, a legtöbb gyártott áramköri lapka egy modul, ami számos elemi kaput tartalmaz. A következő fejezetben közelebbről is megvizsgáljuk ezeket a modulokat és látni fogjuk, hogy hogyan építhetők fel egyéni kapukból és hogyan használhatók. 3.2.1 Integrált áramörök Kapukat egyenként nem gyártanak és a kereskedelemben sem kaphatók, hanem csak az ezekból felépített modulokat Integrált Áramköröket , gyakran IC -ket vagy chip eket lehet kapni. Az IC egy négyzet alakú pici szilícium lapocska, kb. 5 mm ´ 5 mm, amelyen számos kapu található. A kis IC-k általában 5-15 mm széles és 20-50 mm hosszú téglalap alakú műanyag vagy kerámia tokozással kaphatók. A hosszabb oldalakkal párhuzamosan kb. 5 mm hosszú lábak vannak, amelyek segítségével az IC-k foglalatba dughatók vagy NYÁK-ra forraszthatók. Minden láb valamelyik kapu kimenetére vagy bemenetére csatlakozik vagy a tápfeszültséghez vagy a földhöz. Azokat a tokokat, amelyeken a lábak két sorban helyezkednek el és belül található az IC, a technikában " Dual Inline Packages "-eknek vagy DIP -eknek nevezik, de mindenki csak chipeknek hívja őket, elmosva a különbséget a szilícium lapka és a tokozás között. A leggyakrabban használt tokok 14, 16, 18, 20, 22, 24, 28, 40, 64, 68 lábbal rendelkeznek. Nagy chipek esetén a négyzet alapú tokozás a szokásos, a lábak a négyzet mind a négy oldalán, sőt gyakran még a tok alsó részén is megtalálhatók. A chipek osztályokba sorolhatók a bennük lévő kapuk száma alapján, amint ez lejjebb megtalálható. Ez az osztályozási forma nyilvánvalóan nagyon éles, de néha hasznos. SSI (alacsony mértékű integráció) : 1-10 kapu MSI (közepes mértékű integráció) : 10 -100 kapu LSI (nagy mértékű integráció) : 100 - 100000 kapu VLSI (nagyon nagy mértékű integráció) : 100000 kapunál több Ezeknek az osztályoknak különböző jellemzőik vannak és a felhasználásaik is különbözők: Egy SSI chip tipikusan kettő vagy hat független kaput tartalmaz, amelyek mindegyike egyenként használható, az előző fejezetben leírt módon. A 3-10-es ábrán egy közönséges SSI chip sematikus rajza látható, amely négy NAND kaput tartalmaz. Ezen kapuk mindegyike két bemenettel és egy kimenettel rendelekezik, tehát összesen 12 láb szükséges a 4 kapunak. Ezen felül a chip-et el kell látni tápfeszültséggel (Vcc) valamint a föld (GND) is szükséges, amelyek el vannak osztva a kapuk számára. A tokozáson a legtöbb esetben egy bemarás található az 1-es láb közelében a lábkiosztás azonosításának megkönnyítése érdekében. A felesleges bonyolultság elkerülése érdekében az áramköri rajzokon a tápfeszültség, a föld és a felesleges kapuk nincsenek feltüntetve. A legtöbb ehhez hasonló chip néhány cent/db áron kapható. Minden SSI chip számos kaput tartalmaz és a lábak száma akár 20 is lehet. A 70-es években a számítógépeket számtalan SSI chip-ből építették, de napjainkban a teljes CPU és a memória bizonyos részeit (cache) egyetlen szilícium lapkára marják rá. A mivizsgálatainknak megfelelő, ha minden kaput ideálisnak tekintunk, tehát feltesszük, hogy a kimenet azonnal megjelenik, amint a bemenet rendelkezésre áll. A valóságban a chip-eknek véges kapu késleltetésük van, amelybe a jelterjedés sebességét és a kapcsolás idejét is beleértjük. A tipikus kapcsolási idő : 1-10 ns. A technika jelenlegi szintjén kb. 10 millió tranzisztor helyezhető el egy chipen. Mivel minden áramkör felépíthető NAND kapukból, azt gondolhatnánk, hogy a gyártó teljesen általános célú chipet is gyárthat, ami mondjuk 5 millió NAND kaput tartalmaz. Sajnos egy ilyen chip 15000002 lábat igényelne. Mivel a standard lábtávolság 0.1 inch, ezért egy ilyen chip kb. 18 km hosszú lenne, ami negatívan befolyásolja a piacképességet. Világos, hogy a fejlődés egyetlen lehetséges útja olyan áramkörök készítése, melyeknél a kapu/láb arány magasabb. A következő fejezetben MSI chipeket fogunk tanulmányozni, amelyek több kaput tartalmaznak és segítségükkel a gyakorlatban szükséges bonyolultabb logikai függvények is megvalósíthatók kevesebb külső csatlakozó segítségével. 3.2.2 Kombinációs Hálózatok Számos digitális elektronikai alkalmazás esetén olyan áramkörre van szükség, amely számos bemenetet és kimenetet tartalmaz, valamint a pillanatnyi bemenetek egyértelműen meghatározzák az aktuális kimenetet. Ezeket az áramköröket kombinációs hálozatoknak nevezik. Nem minden áramkör rendelekezik ezzel a tulajdonsággal. Például olyan áramkörök, amelyek memória elemeket is tartalmaznak olyan kimenetet is adhatnak, ami a bemeneti változókon kívül a memória tartalmátol is függ. ***[130-133] 130-133 Eg igazságtáblát implementáló áramkör, mint az a 3-3(a) ábrán is látható, egy tipikus példája a kombinációs áramköröknek. Ebben a részben megvizsgálunk néhány gyakran használt kombinációs áramkört. Multiplexerek A digitális logika szintjén a multiplexer egy áramkör 2n adatinputtal, egy adatoutputtal és n kontrollinputtal, mely kiválasztja az egyik adatinputot. A kiválasztott adatinputot "elkapuzza" (odairányítja) az outputhoz. A 3-11-es ábra egy sematikus diagramja egy 8-inputú multiplexernek. A három kontrollsor, A, B és C, kódol egy 3 bites számot, mely meghatározza, hogy a 8 inputsor melyikét kapuzza el a VAGY kapuba és így az outputhoz. Nem számít, hogy milyen érték van a kontrollsoron, az ÉS kapuk közül 7 mindig 0-t fog kiadni; a másik vagy 0-t vagy 1-et ad a kiválasztott inputsor értékétől függően. Minden ÉS kaput a kontrollinputok egy különböző kombinációja tesz lehetővé. A multiplexer áramkört a 3-11-es ábra mutatja. Amikor áramot és földet adnak hozzá, egy 14 lábú tokba tokozható. A multiplexert használva a 3-3(a) ábra funkcióinak többségét implementálhatjuk, amint azt a 3-12(b) ábra mutatja. A, B és C minden kombinációjára az adatinputsorok egyikét kiválasztjuk. Mindegyik inputot odavezetik vagy aVcc-be (logikai 1) vagy a földbe (logikai 0). Az inputok odairányításának algoritmusa egyszerű: Di input ugyanaz, mint az igazságtáblázatban az i -edik sorban található érték. A 3-3(a) ábrán a 0., 1., 2. és 4. sorok 0-k, így hozzájuk tartozó inputokat leföldeli; a maradék sorok értéke 1, így ezeket a logikai 1-be vezeti el. Ilyen módon bármilyen 3-változós igazságtáblázat implementálható a 3-12(a) ábra chipjét használva. Már láttuk, hogyan használhatunk egy multiplexer chipet arra, hogy kiválasszunk számos input közül egyet és hogyan implementál egy igazságtáblát. Ezen kívül alkalmazható még arra is, hogy párhuzamos adatokat konvertáljon sorossá. 8 bit adatot téve az inputsorokra és aztán a kontrollsorokat sorozatosan 000-ról 111-re (bináris) léptetve a 8 bit az outputsorra helyeződik sorozatokban. A párhuzamosból sorossá konvertálás egy tipikus használata pl. egy billentyűzetben van, ahol minden billentyű impliciten definiál egy 7 vagy 8 bites számot, melyet sorosan ki kell vezetni egy telefonvonalon át. A multiplexer inverze egy demultiplexer , mely egyetlen inputjelét a 2n output egyikéhez vezeti, az n kontrollsor értékeitől függően. Ha a kontrollsorokon a bináris érték k , a k output kerül kiválasztásra. Dekóderek Második példaként most egy olyan áramkört nézünk meg, amely egy n -bites számot vesz inputként és ezt arra használja, hogy kiválassza (azaz 1-re állítsa) a 2n outputsorok pontosan egyikét. Egy ilyen áramkört dekódernek nevezünk; n=3 esetre a 3-13-as ábrán látható. Hogy lássuk, hogy egy dekóder mikor lehet hasznos, képzeljünk el egy 8 chipből álló memóriát, melynek mindegyike 1 MB-ot tartalmaz. Az 1-es chip a 0-t az 1 MB-hoz irányítja, a 2-es chip az 1 MB-ot 2 MB-ra, és így tovább. Amikor egy irányítás megjelenik a memóriában, akkor a magas 3 biteket használja fel a 8 chip egyikének kiválasztására. A 3-13-as ábra áramkörét használva ez a 3 bit a 3 input, A, B és C. Az inputoktól függően a D0, D1, D2, D3, D4, D5, D6, D7 outputsorok pontosan egyike 1, a többi 0. Minden egyes outputsor a 8 memóriachip egyikét hozza működésbe. Mivel csak egy outputsor van 1-re állítva, csak egy chip kerül működésbe. A 3-13-as ábrán látható áramkör operációja egyszerű. Minden ÉS kapunak 3 inputja van, melyból az első vagy A vagy "A felülvonás", a második vagy B vagy B , és a harmadik vagy C vagy C . Minden kaput inputok más kombinációja léptet életbe: D0-t A , B , C , D1-et A , B , C, és így tovább. Komparátorok Egy másik hasznos áramkör a komparátor , mely két inputszót hasonlít össze. A 3-14-es ábra egyszerű komparátora két inputot használ, A-t és B-t, mindkettő 4 bit hosszúságú, és 1-et ad, ha ezek egyenlőek és 0-t, ha nem egyenlőek. Az áramkör a KIZÁRÓ VAGY (XOR) kapura épül, mely egy 0-t ad ki, ha az inputok egyenlőek és 1-et, ha nem egyenlőek. Ha a két inputszó egyenlő, mind a négy KIZÁRÓ VAGY kapunak 0-t kell kiadnia. Ez a négy jel aztán összeVAGYolható; ha az eredmény 0, akkor az inputszavak egyenlőek, különben nem. Példánkban egy NEM (NOR) kaput használtuk utolsó lépésként, hogy megfordítsuk a tesztet: az 1 jelenti az egyenlőséget, a 0 a nem egyenlőséget. Programmed Logic Array Korábban már láttuk, hogy véletlenszerű funkciók (igazságtáblák) megkonstruálhatók ÉS kapuk számításaival és aztán ezen eredmények összeVAGYolásával. Egy nagyon általános chip az eredmények összesítésének képzésére a Programmable Logic Array vagy PLA , melynek egy kis példája látható a 3-15-ös ábrán. Ennek a chipnek 12 változós inputsorai vannak. Minden input komplementere belsőleg generálódik, összesen 24 inputot idézve elő. Az áramkör szíve egy 50 ÉS kapuból álló tömb, mely mindegyikének a 24 inputjel bármely részhalmaza lehet potenciálisan inputja. Hogy melyik inputjel melyik ÉS kapuhoz jut el, azt egy, a használó által megadott, 24x50 bites mátrix határozza meg. Az 50 ÉS kapuhoz tartó minden inputsor tartalmaz egy biztosítékot. Amikor a gyárból szállítják, akkor mind az 1200 biztosíték érintetlen. A mátrix beprogramozásához a használó kiégeti a kiválasztott biztosítékokat úgy, hogy a chipekbe magasfeszültséget vezet. Az áramkör output része hat VAGY kaput tartalmaz, melyek mindegyikének van legfeljebb 50 inputja az ÉS kapuk 50 outputjára válaszképpen. Itt ismét a felhasználó által megadott (50x6-os) mátrix határozza meg, hogy a potenciális kapcsolatok melyike létezzen. A chipnek van 12 inputlába, 6 outputlába, áram és földje, azaz összesen 20 db. Példaképpen, hogy a PLA-t hogyan lehet használni, vizsgáljuk meg újra a 3-3(b) ábrájának áramkörét. ennek van 3 inputja, négy ÉS kapuja, egy VAGY kapuja és három invertálója. Ha már megvannak a megfelelő belső kapcsolatok, PLA ugyanezt a funkciót látja el 12 inputjából hármat, 50 ÉS kapujából négyet, 6 VAGY kapujából egyet használva. (A négy kapunak A BC-t, A B C-t, AB C-t és ABC-t kell kiszámítania; a VAGY kapu ezt a négy eredmény fogja fel inputként.) Valójában ugyanezt a PLA-t átalakíthatnánk, hogy egy hasonló összetettségű négy funkció összegét szimultán mődon számitsa ki. Ezeknél az egyszerű funkcióknál az inputváltozók száma a korlátozó tényező; bonyolultabbaknál az ÉS vagy VAGY kapuk. Bár a fent leírt mezőprogramozható PLA-kat még mindig használják, sok alkalmazásnál inkább a vásárló által készített PLA-kat részesítik előnyben. Ezeket a (nagybani) vásárló tervezi és a gyár állítja elő a vásárló kérésére. Ezek a PLA-k olcsóbbak, mint a mezőprogramozhatók. Most összehasonlíthatjuk a három különböző módot, melyekrő eddig tárgyaltunk a 3-3(a) igazságtáblázat implementálásáról. SSI összetevőket használva négy chipre van szükségünk. Alternatív módon elég egy MSI multiplexer chip, amint az a 3-12(b) ábrán látható. Végül egy PLA chip negyedét is használhatunk. ***[134-137] 134-Kertész Attila A DIGITÁLIS LOGIKA SZINTJE KIZÁRÓ VAGY kapu 3-14. ábra Egy egyszerű 4-bites összehasonlító (comparator). Az egyszerű áramköröknél az olcsóbb SSI és MSI lapkák előnyösebbek lehetnek. 3.2.3 Aritmetikai áramkörök Ideje, hogy a fentebb tárgyalt általános-célú MSI áramkörökről tovább menjünk a kombinált MSI áramkörökre, melyeket aritmetikai műveleteknél használunk. Az egyszerű 8-bites léptetővel (shifter) kezdünk, majd megnézzük, hogy milyen az összeadók (adder) felépítése, és végül az aritmetikai logikai egységeket vizsgáljuk, amik központi szerepet játszanak minden számítógépben.
A számítógépek nélkülözhetetlen része a memória. Eddigi ismereteink szerint nem létezhet számítógép memória nélkül. A számítógép a memóriában tárolja az adatokat és a végrahajtásra kerülő utasításokat. A következő részben a memóriarendszer alapvető részeit fogjuk vizsgálni a kapuktól elindulva, hogy lássuk miként működnek és hogy lehet őket kombinálni, hogy terjedelmesebb memóriákat állítsunk elő. Egybites memória létrehozásához egy áramkörre ami ?emlékszik? az előző input értékre. Az ilyen áramköröket két NOR kapuból állítjuk elő. (3-22/a) Analóg áramköröket NAND kapukból is felépíthetünk. Ezekről nem beszélünk többet mivel teljesen megegyeznek a NOR kapuval. A 3-22/a ábrán látható áramkört ?SR tároló?-nak (latch) hívjuk. Két bemenete van: S: értéket ad a tárolónak (setting) R: törli a tárolót (resetting vagy cleaning). Két kimenete van Q és negáció Q amelyek ? később látni fogjuk ? kiegészítők. Eltérően a konbinált áramköröktől a tároló kimenetei nem függnek a bemenetektől. ***[142-145] Nem érkezett meg. Vántus András:h938820 ***[146-149] A flip-flopok maguk 3-27(d)-tipusúak, de a flip-flopban levő inverziós buborékokat a 11-es tűhöz kötött inverter eltörli, igy a flip-flopok emelkedő átmenetbe töltődnek. Mind a 8 törlő szignál sorosan kapcsolt, igy amikor az egyes tű 0 értéket kap, az összes flip-flop 0-ás állapotba kerül. Ha csodálkoznál mért van a 11-es tű invertálva a bemenetnél és minden egyes CK szignálnál újra, lehet hogy egy bemeneti jel nem kap elég áramot, hogy mind a 8 flip-flopot vezérelje;a bemeneti invereter valójában erősítőként funkcionál. Míg a 3-28(b) ábrán az óra és a tisztító vonalak sorba kötésének az egyik oka a tűk számának csökkentése, ebben a konfigurációban a chip másképp van használva 8 össze nem függő flip-flop-ról (v.-ból). Egy egyszerű 8 bites regiszterként funkcionál. Így 2 ilyen chip párhuzamosan használva egy 16 bites regisztert alkotnak úgy, hogy az 1-es és a 11-es tűket össze kell kapcsolni. A 4-es fejezetben részletesen foglalkozunk a regiszterekkel és használatukkal. 3.3.4 Memóriaszervezés Bár mostanra a 3-24-es ábra szimpla 1 bites memóriájától eljutottunk a 3-28(b) ábra 8 bites memóriájáig, nagy memóriák készítéséhez egy másfajta szerkezet szükségeltetik, egy olyan amelyben különálló szavakat meg lehet cimezni. A 3-29-es ábra egy olyan széles körben használt szerkezetet mutat be, ami megfelel ennek a kritériumnak. Ez a példa egy olyan példát illusztrál, aminek 4db 3 bites szava van. Minden művelet egy teljes 3 bites szót ír vagy olvas. Mig a teljes 12 bites kapacitás alig több, mint a 8-as flip -flopunknál, kevesebb tűt igényel és még fontosabb, hogy könnyű kibőviteni ezt a dizájnt nagy memóriákká. Bár első látásra a 3-29-es ábra memóriája komplikáltnak tűnhet, valójában egész egyszerű a hagyományos struktúrájának köszönhetően. 8 bemeneti és 3 kimeneti sora van.3 bemenő adat:I0,I1 és I2;2 a címzéshez: A0 és A1;és 3 az ellenőrzéshez: CS?Chip Select, RD tesz különbséget írás és olvasás között és OE? Output Enable.A 3 kimenet az adatoknak van: D0, D1 és D2. Elméletileg ez a memória 14 tűvel megvalósítható, beleértve az áramellátást és a földelést , szemben a 8-as flip-flop 20-as tűigényével. Ennek a memória chipnek a kiválogatásához ,a külső logikának a CS-t magasra, az RD-t olvasáshoz magasra (logikai 1) és íráshoz alacsonyra (logikai 0) kell állítani. A 2 címsort úgy kell beállitani, hogy megmutassák a 4db 3-bites szó közül melyiket kell olvasni vagy irni. Olvasási műveletnél az adatbemeneti sorok nincsenek használva, de a kiválasztott szó az adatkimeneti sorokra van helyezve. Írás műveletnél az adatbemeneti sorokon levő bitek betöltődnek a kiválasztott memória szóba; az adatkimeneti sorok nincsenek használva. Most nézzük meg közelebbről, hogy működik a 3-29-es ábra. A memória baloldalán levő 4 szókiválasztó ÉS kapu egy dekódert alkot. Az input inverterek úgy vannak elhelyezve, hogy mindegyik kapu különböző címen érhető el( output magas állásban).---------------------------------- Mindegyik kapu vezérel egy szókiválasztó sort, tetejétől az aljáig, a 0, 1, 2 és 3-as szavakhoz. Amikor a chip ki lett választva iásra, a CS*`RD jelölésű függőleges vonal magas lesz, elérve a 4 írókapu közül egyet, attól függően hogy melyik szókiválasztó sor magas. Az írókapu kimenete vezérli az összes CK jelet a kiválasztott szóhoz, betöltve a bemenő adatokat a flip-flopokba a szóhoz .Az írás csak akkor valósul meg, ha a CS magas az RD alacsony és még akkor is csak az A0 és A1 által kiválasztott szó lesz írva, a többi szó nem változik. Az olvasás hasonlit az íráshoz. A cim megfejtés pontosan ugyanaz mint az írásnál. De most a CS*` RD sor alacsony, igy az összes írókapu munkaképtelen és egyik flip-flop sem módosult. Ehelyett, a kiválasztott szókiválasztó sor eléri a kiválasztott szó Q-bitjeihez csatolt ÉS kapukat. Így a kiválasztott szó outputolja az adatait a kép alján lévő 4 bemenetes OR kapukba, mig a másik 3 szó outputol 0-kat. Következésképpen, az OR kapuk kimenete azonos a kiválasztott szóban tárolt értékkel. A 3 nem kiválasztott szó nem működik közre a kimenetnél. Bár tudtunk konstruálni egy áramkört, amelyben a 3 OR kapu éppen betáplálódott a 3 kimenőadat sorba, ez a folyamat néha okozott problémát. Különösen, megmutattuk adatbevivő sorok és az adatkivivő sorok különbségét, de az aktuális memóriákban ugyanazok a sorok használódnak. Ha az OR kapukat hozzákötöttük volna az adatkivivő sorokhoz, a chip megpróbálná kivinni az adatot, azaz mindegyik sorhoz egy adott értéket kényszerítene így interferálva a bemenő adattal. Ez okból kívánatos, hogy legyen módunk az OR kapukat az adat kivivő sorokhoz csatlakoztatni olvasáskor, de teljesen szétkapcsolni őket íráskor. Amire szükségünk van, egy elektronikus kapcsoló, ami létre tudja hozni vagy megszakítani a kapcsolatot néhány nanoszekundum alatt. Szerencsére ilyen kapcsolók léteznek. A 3-30(a) ábra mutatja a jelképet, amit úgy hívnak neminvertáló puffer. Ennek van adatbemenete, adatkimenete és ellenőrző bemenete. Amikor a control bemenet magas, a buffer működése olyan, mint egy vezeték, ahogyan azt mutatja a 3-30(b) ábra is. Amikor a control bemenet alacsony, a buffer működése olyan mint egy nyitott áramkör, ahogy azt a 3-30(c) ábra mutatja; olyan mintha vki elválasztotta volna az adatkimenetet egy drótvágóval az áramkör többi részétől. De ellentétben a drótvágós hasonlattal , a kapcsolatot utólag helyre lehet állítani néhány nanoszekundum alatt a controljel ismételt magasra állításával. 3-30(d) ábra bemutat egy invertáló buffert, amelyik úgy viselkedik mint egy normál inverter, amikor a control magas, és kikapcsolja a kimenetet az áramkörből, amikor a control alacsony. Mindkét fajtája a buffereknek 3 állású szerkezet, mert tud outputolni 0-át,1-et vagy egyiket sem a fentiek közül ( nyitott áramkör). A bufferek erősítik is a jeleket, így sok bemenő adatot tudnak egyszerre vezérelni. Néha használják őket áramkörökben emiatt, még ha a kapcsoló tulajdonságaikra nincs is szükség. Visszatérve a memória áramkörökhöz, mostanra tisztának kéne lennie, hogy mire való az adatkimeneti soron levő három nem-invertáló buffer. Amikor CS, RD és OE mind magas, a kimeneti feljogosító jel szintén magas, felhatalmazva a buffert és kirakva egy szót a kimeneti vonalakra. ----------------------------------------------------------------------------------- 3-27-es ábra.----D zárak és flip-flopok. 3-28-as ábra.(a)----Páros D flip-flop. (b)----Nyolcas flip-flop. 3-29-es ábra.----Logikai diagram a 4*3-as memóriához. Mindegyik sor egy a 4db 3 bites szavak közül. Az olvasás vagy írás művelet mindig egy teljes szót olvas vagy ír. ***[150-153] Ciceri Klári 150-153 H938360 ,a kimeneti feljogosító jel szintén magas, felhatalmazva a buffert és kirakni egy szót a kimeneti vonalra. Amikor egy a CS, RD vagy OE közül alacsony, akkor az adatkimenetek kikapcsolódnak az áramkör maradék részéből. 3.3.5.Memória chipek Jó dolog a 3-29. ábrán látható memóriával kapcsolatban, hogy könnyen lehet bővíteni nagyobb méretekre. Ahogyan lerajzoltuk, a memória 4 X 3-as, azaz 4 szóból áll , szavanként mindegyik 3 bit. Ahhoz,hogy kibővitsük 4 X 8-ra, 5 oszlopnyi, oszloponként 4 billenőkört és 5 bemeneti és kimeneti vonalat kell hozzáadni.Ahhoz hogy a 4 X 3-tól eljussunk a 8 X 3-ig, 4 sort kell hozzáadnunk, soronként 3 billenőkörrel, és természetesen egy A2 címvonalat. Ezzel a fajta felépítéssel a szavak száma a memóriában kettő kell hogy legyen a maximális kihasználtság érdekében, de a bitek száma bármennyi lehet. A memóriachipek ideális alkalmazási területe az integrált áramkör technológiának, mert ez jól illeszkedik azokhoz a chipekhez, melyeknek a belső felépitése egy ismétlődő 2 dimenziós modell. Amint a technológia fejlődik,a bitek száma amit egy memóriachipre lehet tenni folyamatosan növekszik, tipikusan 18 hónaponta a duplájára (Moore törvénye). A nagyobb chipek nem mindig szorítják háttérbe az elavult kisebbeket, köszönhetően a különböző kapacitás-, sebesség-, erő-,ár- és csatlakozási kényelembeli értékcsökkenésnek. Általában a legnagyobb chipek amellyek most kaphatóak névértékükön felül kaphatóak, és bitenkénti áruk sokkal nagyobb mint a kisebbeké. Bármilyen adott memóriamérethez többféleképpen szervezhetjük meg a chipet. A 3-31-es ábra egy 4Mbit-es chip két lehetséges elrendezését mutatja be: 512K X 8 és 4096K X 1. (Előrebocsátva, hogy a chipméreteket általában inkább bitben számolják, mint byte-ban,így mi itt felrúgjuk a konvenciókat ) A 3-31(a) ábrán 19 címvonal szükséges, hogy meg lehessen címezni egyikét a 2 ^19 byte-nak, és 8 adatvonal, hogy betöltsük, vagy eltároljuk a kiválasztott byte-ot. A hangsúly itt a terminológián van. Néhány érintkezőn a magasfeszültség idéz elő egy akciót (cselekvést). Néhányon pedig az alacsony idézi elő. Hogy elkerüljük a zürzavart, mi következetesen inkább az fogjuk mondani hogy, egy jel állitás ( mint azt mondjuk hogy magas vagy alacsony), ami azt jelenti, hogy előidéz egy akciót (cselekvést). Így egyes érintkezőknél az állítás azt fogja jelenteni, hogy magasfeszültségen van, néhányon pedig azt, hogy alacsonyon. Azok az érintkezők, amik alacsonyra vannak állítva jelneveket kapnak ,amelyek magukban foglalnak egy felső vonalat. Így egy jel, aminek a neve CS, magasra van állítva, de aminek CS?, az alacsonyra van állítva. Az állítás ellentéte a tagadás (negálás) . Amikor semmi különös nem történik az érintkezők negálva vannak. Most térjünk vissza a memóriachipünkhöz. Amióta a számítógép alaphelyzetben több memóriachipet használ, kell egy jel ami kiválasztja az éppen szükséges chipet, és csak az válaszol, a többi nem. A CS? (Chip Selecr=chip választó) jel ezt a célt szolgálja. Arra használjuk, hogy aktiválja a chipet. Ugyanakkor szükség van egy módra, hogy megkülönböztessük az írásokat az olvasásoktól. A WE? jel (Write Enable=írás engedélyezés) arra szolgál, hogy megjelölje, hogy az adatot írni kell és nem olvasni. Végül az OE? (Outpu Enable=kimenet engedélyezve) jel azért van, hogy vezesse a kimeneti jeleket. Amikor negálva van, a chip kimenete le van kötve a körről. A 3-31(b) ábrán egy másik címzési sémát használtak. Belsőleg, ez a chip úgy van megszervezve, mint egy 2048 X 2048-as mátrix 1 bites cellákkal, ami 4 Mbit-et ad. Ahhoz, hogy megcímezzük a chipet először egy sort kell kiválasztani, tehát betesszük a 11-bites számát a címérintkezőkre. Ezután a RAS? (Row Andress Strobe=sor cím??.) jel jön. Ezután az oszlopszámot raljuk a címérintkezőkbe és jön a CAS? (oszlop cím?..). A chip úgy válaszol, hogy vagy elfogad egy adatbitet, vagy kiad egyet. A ngy memóriachipek gyakran n X n -es mátrixból vannak felépitve, amiknek a címzése sorokkal és oszlopokkal történik. Ez az elrendezés lecsökkenti az érintkezők számát, de lassabbá teszi a chip címzését, mert két címzési ciklus kell: egy a soroknak, egy pedig az oszlopoknak. Hogy visszanyerjük az így elvesztett sebesség egy részét, néhány memóriachipnek egy sorcím után több oszlopcímet is lehet adni, hogy az egy sorban lévő egymás utáni bitekhez hamarabb hozzáférjen. Évekkel ezelőtt a legnagyobb memóriachipek általában a 3-31(b)-ábrán látható módon voltak megszervezve. Ahogy a memória szavak 8 bitről 32-re és még nagyobbra nőttek, az 1 bit széles memóriachipek kényelmetlenné kezdtek válni. Ahhoz hogy egy 32 bites memóriát építsünk, 32 db 4096K X 1-es chip szükséges párhuzamosan. Ez a 32 chip minimum 16Mb kapacitással rendelkezik, holott 512 X 8-as chipeket használva csak 4 chip kell párhuzamosan, ezzel 2Mb memóriákat is lehet építeni. Hogy elkerüljék a 32 chipet memóriánként, a legtöbb chipgyártónak vannak 1,4,8 és 16 bit széles chipcsaládjai. 3.3.6 RAM-ok és ROM-ok Az eddig tanulmányozott memóriák mind írhatók és olvashatók voltak. Az ilyen memóriákat RAM-oknak (Random Acces Memory=Véletlen Hozzáférésű Memória) hívjuk, ami egy rossz elnevezés, mert minden memória véletlen hozzáférésű, de már annyira megszokottá vált ez a kifejezés,hogy most már nem változtatnak rajta. A RAM-nak két fajtája van:a statikus és a dinamikus. A statikus RAM-ok (SRAM) belsőleg hasonló áramköröket használnak, mint a mi alap D-billenőkörünk. Ezeknek a memóriáknak az a tulajdonságuk, hogy a tartalmuk addig tárolódik, ameddig be vannak kapcsolva. A statikus RAM-ok nagyon gyorsak. A tipikus elérési idejük néhány ns (nanosecundum). Emiatt a statikus RAM-ok népszerúek 2. szintű cache memóriaként. A dinamikus RAM-ok (DRAM), ezzel ellentétben nem használnak billenőköröket. Ehelyett a dinamikus RAM egy cellasor, minden cellában egy tranzisztorral és egy kicsi tárolóval. A tárolókat fel lehet tölteni, vagy ki lehet "sütni", ezzel megengedve a 0 és 1 tárolását. Az elektromos töltés azon tulajdonsága miatt, hogy ?elszáll?, a dinamikus RAM-okat néhány miliszekundumonként frissiteni (ujratölteni) kekk, hogy megvédjük a benne tárolt adatokat. Amiért a külsú áramköröknek vigyázniuk kell az az, hogy a frissítésre a dinamikus RAM-ok sokkal komplexebb csatlakozási felülettel rendelkeznek, mint a satikus RAM-ok, de ezt a hátrányát a nagyobb kapacitásával ellensúlyozza. Amióta a dinamikus RAM-oknak csak egy tranzisztor és egy tároló kell bitenként (ellenben a legjobb statikus RAM-ok 6 tranzisztorával), a dinamikus RAM-ok súrúsége nagyon nagy. Emiatt a központi memóriák majdnem mindig dinamikus RAM-okból vannak megépítve..Habár ennek a nagy kapacitásnak megvan az ára: a dinamikus RAM-ok lassúak (több 10 ns). Így a statikus RAM-ú cache, és a dinamikus RAM-ú központi memória próbálja ötvözni a két memóriafajta jó tulajdonságait. Sokféle dinamikus RAM chip létezik..A legrégibb fajta amit még ma is használnak az FPM (Fast Page Mode=Gyors Lapozási Mód) DRAM. Belsőleg bitek mátrixaként van megszervezve, és úgy működik, hogy a hardwaretől kér egy sorcímet, majd végigmegy az oszlopcímeken, ahogyan azt leírtuk a RAS? és CAS? jeleknél a 3.31(b) ábránál. Az FPM DRAM-ot fokozatosan fölváltotta az EDO (Extended Data Output=Kiterjesztett Adatkimenet)DRAM, ami megengedi a második memóriahivatkozás elkezdését mielőtt még az előző befejeződött volna. Ez az egyszerű adatcsatornázás nem tesz gyorsabbá egy egyedüli memóriahivatkozást, de növeli a memória sávszélességét, ami több szót jelent másodpercenként. Mind az FPM mind az EDO chipek aszinkronúak, ami azt jelenti, hogy a cím és az adatvonal nem egy órajel alatt megy. Ezzel szemben az SDRAM (Synchronous DRAM) hibridje a statikus és a dinamikus RAM-nak,és egy órajel alatt végzi mindkét múveletet. Gyakran használják nagy cachekben, és a jövőben a központi memória kiemelt technológiája lesz. A RAM nem az egyetlen memóriachip fajta. Sok alkalmazásban , például játékokban, gépekben, és autókban a program és az adatok egy része meg kell hogy maradjon kikapcsolás után is. Ráadásul ha egyszer beépítik, sem az adatot sem a programot nem lehet megváltoztatni soha többet. Ezek a követelmények vezettek a ROM(Read Only Memory=Csak Olvasható Memória) kifejlesztéséhez, ami nem változtatható, vagy törölhető szándékosan vagy máshogy. Az adat a ROM-ba a gyártás során kerül, lényegében megvilágitva egy fotóérzékeny anyagot egy mintán keresztül, ami tartalmazza a kívánt bitmintát, és aztán ezt bevési a felületbe. Az egyedüli mód,hogy megváltoztassunk egy programot a ROM-ban az, hogy ha kicseréljük az egész chipet. A ROM-ok sokkal olcsóbbak mint a RAM-ok amikor nagy mennyiségben rendeli őket, hogy fedezzék a maszk előállítási költségeit. Ezzel szemben nem rugalmasak, mert a gyártás után nem lehet őket megváltoztatni, és hetekbe telhet amíg egy megrendelt új chip megérkezik.Hogy a cégeknek könnyebbé tegyék a ROM-alapú termékek fejlesztését, kitalálták a PROM-ot.(Programmable ROM=Programozható ROM) A PROM ugyanolyan mint a ROM, azzal a különbséggel, hogy egyszer írható, megspórólva ezzal a rendelés és a szállítás közötti időt. Sok PROM-nak van egy tömbnyi kicsi biztosíték a belsejében. Egy meghatározott biztosítékot ki lehet égetni úgy, hogy megadjuk a sorát és az oszlopát, aztán magasfeszültséget adunk egyik speciális érintkezőjére. E vonalban a következő találmány az EPROM (Erasable PROM=Törölhető PROM) volt, amit nem csak írni, de törölni is lehetett. Amikor egy kvartz ablak egy EPROM-ban 15 percig erős ultraviola sugárzásnak van kitéve, minden bit értéke 1 lesz. Hogyha sok változtatás várható tervezett időszak alatt, az EPROM-ok messzemenően gazdaságosabbak mint a PROM-ok, mert újra fel lehet használni őket. Az EPROM-ok általában ugyanolyan szervezettségűek mint a statikus RAM-ok. Például a 4Mbit-es 27C040 EPROM a 3.31(a) ábrán látható elrendezést alkalmazza, ami tipikus statikus RAM elrendezés. Az EPROM-nál még fejlettebb az EEPROM , amit impulzusokkal lehet törölni ahelyett, hogy be kelljen tenni egy speciális kamrába, és ultraviola sugárzásnak kelljen kitenni. Ráadásul az EEPROM-ot helyben lehet programozni, míg az EPROM-ot csak egy külön erre kifejlesztett EPROM-programozó készülékben lehet.A dolog másik oldalán az áll, hogy nagyobb EEPROM-ok tipikusan csak 1/64 nagyságúak, mint a hagyományos EPROM-ok, és fele olyan gyorsak.Az EEPROM-ok nem vehetik fel a versenyt a DRAM-okkal, vagy az SRAM-okkal, mert azoknál 10-szer lassabbak, és 100-szor kisebbek, és sokkal többe kerülnek. Csak azokban a szituációkban használják őket amikor a feszültség nélküli tároló tulajdonságuk elengedhetetlen. A legújabb fajtája az EEPROM-nak az úgynevezett fénzmemória. Nem hasonló az EPROM-hoz, amely ultraviola sugárral megvilágítva törölhető, és az EEprom-hoz, amely 3.30 ábra (a) Egy nem invertáló buffer. (b) Az (a) következménye, ha a kontrol magas. (c) Az (a) következménye, ha a kontrol mély. (d) Egy invertáló buffer. rajzon: adat be adat ki kontrol (ellenőrzés, irányítás) 3.31 ábra Két megvalósításí útja a 4Mbit-es memória chipnek. rajzon: 512K X 8 memória chip (4 Mbit) 4096K X 1 memóri chip (4 Mbit) ***[154-157] Kádas Antal I.KPM fordítás 154-157. oldal Az EEPROM-hoz hasonlóan, a flash memória törölhető anélkül, hogy eltávolítanánk az áramkörből. Különböző gyártók állítanak elő kis nyomtatott áramkör-kártyákat 10 MB flash memóriával, hogy ?filmként? használják képek tárolására digitális kamerákban és még sok egyéb célra. Manapság a flash memóriát a lemezek kiváltására is használhatjuk, amely nagy előrelépés lenne, alapul véve a 100- nanosecundumos elérési időt. A fő tervezési probléma jelenleg, hogy kb. 10,000 törlés után elhasználódnak, míg a lemezek évekig tartanak, az újraírások számától függetlenül. A különböző fajta memóriák áttekintése a 3-32. ábrán található.
3.32 ábra 3.4 CPU LAPKÁK ÉS BUSZOK Felvértezve információkkal az SSI, MSI és memória chippekről, elkezdhetjük az egészet összerakni, hogy áttekintsük a komplett rendszert. Ebben a fejezetben, először megnézzük a CPU-k néhány általános tulajdonságát a digitális logika szintjéről nézve, beleértve a lábak kimeneteit (azt, hogy melyik jel a különböző lábakon mit jelent) is. Amióta a CPU-k annyira összeforrtak a busz felépítésével amit használnak, mi is közlünk bemutatót a buszok felépítéséről ebben a szekcióban. A következő fejezetekben részletes példákkal szolgálunk a CPU-kra és az általuk használt buszokra. 3.4.1 CPU LAPKÁK Minden modern CPU-t egyetlen chip tartalmaz. Ez teszi az egymásra hatását a legtöbb rendszerrel jól definiálttá. Minden egyes CPU rendelkezik lábakkal, amelyeken keresztül végzi a teljes kommunikációját a külvilággal. Néhány láb kivezeti a jeleket a CPU-ból; mások jeleket fogadnak a külvilágból; néhány mindkettőre képes. Az összes láb funkciójának megértése közben, megtanulhatjuk, hogyan működik együtt a CPU a memóriával és az I/O eszközökkel a digitális logika szintjén. --------------------új oldal A CPU-n található lábakat három típusra oszthatjuk: cím, adat és vezérlés. Ezek a lábak hasonló lábakhoz vannak kötve a memórián és az I/O eszközökön párhuzamos kábelek segítségével, melyet busznak hívunk. Egy utasítás végrehajtásához a CPU először a az utasítás memóriacímét elküldi a címlábra. Ekkor igénybe vesz egy vagy több vezérlő lábat, hogy informálja a memóriát, hogy az olvasni akar (pld.) egy szót. A memória válaszol a kért szónak a CPU adat lábaira való küldésével és küld egy jelet, hogy végzett a feladattal. Amikor a CPU látja ezt a jelet, akkor fogadja a szót és végrehajtja az utasítást. Az utasítás igényelheti adatok írását, olvasását, ebben az esetben a teljes feladatot megismételjük minden további szóra. Lejjebb rátérünk az írás-olvasás részletes ismertetésére. A legfontosabb megérteni, hogy a CPU jeleket állít elő a lábaira és fogad a lábain, így kommunikál a memóriával és az I/O eszközökkel. Semmilyen más kommunikáció nem lehetséges. A két fő paraméter, amely meghatározza a CPU teljesítményét, az a címlábak száma és az adatlábak száma. Egy chip m címlábbal 2^m memória helyet tud megcímezni. Az m általános értéke 16, 20, 32 és 64. Hasonlóan, egy chip n adatlábbal n bites szavakat tud írni, olvasni egy egyszeri műveletben. Az n általános értéke lehet 8, 16 , 32, 36 vagy 64. Egy CPU-nak 8 adatlábbal négy művelet idejét veszi igénybe egy 32 bites szó olvasása, míg egy másik 32 adatlábbal ezt a műveletet egy művelet ideje alatt végzi el. Tehát a 32 adatlábbal rendelkező chip sokkal gyorsabb, de természetesen még mindig sokkal drágább. Az adat és cím lábakon kívül, minden egyes CPU-nak van néhány vezérlőlába is. A vezérlő lábak szabályozzák az adatok folyását és időzítését a CPU felé és a CPU-ból és van néhány más felhasználásuk is. Minden CPU-nak van lába a tápellátáshoz (általában +3,3V vagy +5V), földelés, és egy az órajelnek (egy négyzetes hullám), de a többi láb chipről-chipre igen különböző lehet. Mindamellett a vezérlőlábak nagyjából a következő fő kategóriákba sorolhatóak:
A busz vezérlő lábak többnyire kimenetek a CPU-tól a busz felé (ezért bemenetek a memóriának és az I/O chippeknek), melyek közlik, hogy a CPU írni vagy olvasni akarja a memóriát vagy bármi mást akar csinálni. -------------új oldal {3-33 ábra Egy általános CPU lábkimeneteinek logikai vázlata. A nyilak jelzik a bemenő jeleket és a kimenő jeleket. A rövid átlós vonalak jelzik, hogy többszörös lábakat használnak. Egy meghatározott CPU-n egy szám adja meg, hogy hányat.} { Az ábra szövegei: Középen: Tipikus Mikroprocesszor; A nyilak magyarázatai az óra járásával ellentétes irányban: Címzés, Adat, Busz vezérlés, Megszakítások, Az órajel szimbóluma, A feszültség 5V, Az elektromos föld jele, Egyéb vezérlés, Státusz, Társprocesszor, Busz döntés} A megszakítás-lábak bemenetek I/O eszközöktől a CPU-ba. A legtöbb rendszerben a CPU utasíthatja az I/O eszközt, hogy elkezdjenek egy műveletet, majd kikapcsoljon és csináljon valami hasznosat, mialatt a lassú I/O eszköz a munkáját végzi. Ha az I/O eszköz elkészült, az I/O vezérlő chip előállít egy jelet valamelyik lábon, hogy eljuttasson egy megszakítási kérelmet a CPU-hoz és leellenőrzi az I/O eszközt, pld. megnézi, hogy történt-e I/O hiba. Néhány CPU-n van egy kimeneti láb, melyre küld egy jelet, hogy tudomásul vette a megszakítást. A busz döntés vezérlési lábakra a buszon zajló forgalom szabályzásához van szükség, hogy meggátoljuk, hogy két eszköz egyszerre használja a buszt. Döntési célokból, a CPU eszköznek számít. Néhány CPU-t úgy terveztek, hogy együtt tudjanak működni társprocesszorokkal, úgy mint lebegőpontos egységekkel, de néha grafikus vagy egyéb chippekkel is. Hogy megkönnyítsék a kommunikációt a CPU és a társprocesszor között, speciális lábakkal látták el, hogy különböző kéréseket tudjon előállítani és átadni. Ezeken a jeleken kívül, van még számos egyéb láb, mellyel néhány CPU rendelkezik. Néhány ezk közül státusz információkat szolgáltat vagy fogad, mások hasznosak a számítógép újraindításához, és ismét mások azért vannak, hogy biztosítsák a kompatibilitást a régebbi I/O chippekkel. 3.4.2 Számítógép buszok A busz egy közönséges elektronikus út összetett eszközök között. A buszokat a funkcióik alapján lehet kategorizálni. Ezeket lehet használni a CPU-n belül, hogy adatokat szállítson az ALU-tól és az ALU-hoz, vagy a CPU-n kívül, hogy a memóriához vagy különböző I/O eszközökhöz kössük őket. Mindkét típusú busznak megvannak a saját követelményei és tulajdonságai. -------------------új oldal Ebben a fejezetben és a következőkben a CPU-t a memóriával és az I/O eszközökkel összekötő buszra koncentrálunk. A következő fejezetben a CPU-ban lévő buszokat fogjuk közelebbről megvizsgálni. A korai személyi számítógépekben volt egy egyedüli külső busz, vagy rendszerbusz . Ez 50-100 párhuzamos az alaplapra mart rézkábelből állt, szabályos távolságokban elhelyezett csatlakozókkal, a memória és az I/O kártyák elhelyezéséhez. A modern személyi számítógépek általában rendelkeznek speciális-célú busszal a CPU és a memória és (legalább) egy másik busszal az I/O eszközökhöz. Egy minimális rendszer, egy memória busszal és egy I/O busszal a 3-34. ábrán látható. {3-34. Ábra Egy számítógép többcélú buszokkal.} { Az ábra feliratai: CPU chip a CPU chipen belüli feliratok : Regiszterek, Buszok, ALU, Chippen lévő busz további feliratok, szintén balról jobbra: felső sor: Busz vezérlő, Memória busz, Memória alsó sor: I/O busz legalsó sor: Lemez, Modem, Printer} A szakirodalomban a buszokat néha "kövér" nyilakkal jelölik, mint ezen az ábrán. A kövér nyíl és a sima vonal egy átlós vonallal megkülönböztetése és a mellette lévő bitek megszámlálása igen aprólékos munka. Ha az összes bit azonos típusú, mondjuk mind cím bit vagy mind adatbit, akkor a rövid átlós vonal az általánosan használt. Ha a cím, adat és vezérlési vonalak összegabalyodtak, akkor a kövér nyilak az általánosak. Míg a CPU tervezői szabadok, hogy bármilyen típusú buszt használjanak a chippen belül, addig, hogy lehetővé tegyék egy harmadik társaság által gyártott kártya csatlakoztatását a rendszerbuszhoz, jól definiált szabályok vonatkoznak arra, hogy hogyan működnek a buszok, és hogy hogyan kell minden hozzákapcsolt eszköznek engedelmeskednie. Ezeket a szabályokat hívják busz protokolloknak . Emellett, létezni kell me chanikai és elektromos specifikációknak, hogy más társaságok kártyái illeszkedjenek a kártya tartójába és rendelkeznie kell csatlakozókkal, melyek illeszkednek az alaplapon lévőhöz mind mechanikailag, mind feszültségben, időzítésben stb. A számítástechnikai világban igen sok busz elterjedt. Egy kevés a jobban ismertek közül, jelenlegiek és "történelmiek", (példákkal) az Omnibus (PDP-8), Unibus (PDP-11), Multibus (8086), IBM PC busz (PC/XT), ISA busz (PC/AT), EISA busz (80386), Microchanel (PS/2). PCI busz (sok PC), SCSI busz (sok PC, és munkaállomás), Nubus (Macintosh), Universal Serial Bus (modern PC-k), FireWire (fogyasztói elektronika), VME busz (fizikai laborfelszerelések), és ***[158-161] Nem érkezett meg. Szilágyi Tamás:h938285 ***[162-165] 3.-37. ábra (a) Olvasás időzítés egy szinkronizált állomáson. (b) Néhány kritikus idő A Tad és Tds konstrukciók kombinációja azt jelenti, hogy a legrosszabb esetben a memóriának csak 62.5-11-5= 46.5 nmp-e lesz attól kezdve, hogy a cím megjelenik addig, amíg elő nem kell állítani az adatot. Mivel 40 nmp elég még a legrosszabb esetben is, egy 40 nmp-es memória mindig tud válaszolni T3 alatt. Egy 50 nmp-es memóriának viszont, be kellene illesztenie egy mp helyzetvárakozást, és T4 alatt válaszolnia. Az időzítési változatok messze biztosítják azt, hogy a cím legalább 6 nmp-cel azelőtt össze legyen állítva, hogy az MREQ érvényesülne. Ez az idő akkor válhat fontossá, ha az MREQvezeti a chip-szelekciót a memória chipen, mivel néhány memóriaegységhez szükséges lehet egy chip-szelekciót megelőző cím összeállítási idő. Nyilvánvalóan a rendszertervezőnek így nem kellene kiválasztania egy memória-chipet, ami 10 nmp-es összeállítási időt igényel. A Tm és Trl konstrukció azt jelenti, hogy az MREQ és RD érvényesülni fog a T1 idő csökkenésétől számított 8 nmp-en belül. Legrosszabb esetben a memória-chipnek csak 25+25-8-5=37 nmp-e lesz az MREQ és RD érvényesülése után, hogy eljuttassa adatait az állomásra. Ez a konstrukció ráadásul 40 nmp intervallum igényű, miután a cím tartós. A Tmh és Trh megmondják, meddig tart MREQ és RD tagadása azután, hogy a cím belép. Végül Tdh megmondja, meddig kell a memóriának az adatot az állomáson tartania azután, hogy RD el lett utasítva. Ami a mi példánkat, a CPU-t illeti, a memória el tudja mozdítani az állomásról az adatot, mihelyst az RD tagadva van; néhány jelenlegi CPU-n azonban, az adatot kicsit tovább kellene tartósan őrizni. Rá szeretnénk mutatni arra, hogy a 3-37. ábra egy nagymértékben leegyszerűsített változata a valódi időbeli konstrukciónak. A valóságban sokkal több kritikus idő van, amelyek mindig részletezettek. Mindazonáltal ez egy jó ízelítőt ad arról, hogyan működik egy szinkronizált állomás. Egy utolsó kérdés, ami fölvetődik, hogy a jelzőberendezés magasabb vagy alacsonyabb rendű legyen. Az állomástervezőkön múlik, hogy eldöntsék, melyik a megfelelőbb, de a választás lényegében tetszés szerinti. Úgy tekinthető ez, mint egy programozói döntés hardware megfelelője, megmutatja a szabad lemezblokkokat egy bit-térképen. SZINKRONIZÁLT ÁLLOMÁSOK Bár a szinkronizált állomások könnyen működnek a diszkrét időintervallumaiknak köszönhetően, mégis van néhány problémájuk, például, hogy minden az állomás-idő többszöröseiben működik. Ha egy CPU és memória képes befejezni egy átvitelt 3.1. ciklusokban, ki kell terjeszteniük azt 4.0.-ra, mert a szakaszos ciklusok tiltottak. Még rosszabb, ha egyszer egy álomásszakaszt kiválasztunk, és a memóriát és I/O kartotékokat erre építünk, mert nehéz a technológiában a jövőbeli fejlesztések előnyeit kihasználni. Például tegyük fel, hogy néhány évvel azután, hogy a 3-37. ábra rendszere épült, új memóriák állnak rendelkezésre, 40 nmp helyett 20 nmp-es belépési idővel. Ezek megszabadultak a várakozóhelyzettől, felgyorsítva így a gépezetet. Aztán tegyük fel, hogy 10 nmp-es memóriák válnak beszerezhetővé. Nem lenne újabb teljesítmény-növekedés, mert az olvasásra fordított minimális idő 2 kör ebben a tervezetben. Kicsit más feltételek közé helyezve ezt a tényt, ha egy szinkronizált állomás megoldások heterogén gyűjteményével rendelkezik (néhány gyors és néhány lassú), az állomásnak a leglassabhoz kell igazodnia, és a gyorsak nem tudják kihasználni teljes potenciáljukat. A kevert technológiát úgy kezeljük, mint szinkronizálatlan állomást, mivel nem ?mestere? az időnek, mint a 3-38. ábra is mutatja. Ahelyett, hogy megpróbálna mindent időzíteni, amikor az állomás-irányító elfogadja a címet, MREQ, RD stb-re van szükség, aztán érvényesít egy speciális jelet, hogy hívni fogja MSYN-t (Szinkronizáció Irányító). Amikor a gép meglátja ezt, végrehajtja a munkát, amilyen gyorsan csak tudja. Amikor elkészül, érvényesíti SSYN-t (Gép Szinkronizáció). Amint az irányító meglátja SSYN elfogadását, érti, hogy az adat hozzáférhető, így bezárja azokat, aztán elutasítja a címsort az MREQ, RD, MSYN-nel együtt. Amikor a gép látja MSYN elutasítását, érti, hogy a ciklus befejeződött, így elutasítja SSYN-t, újra a kiindulási helyzetben vagyunk, az összes jelzés elutasítva, várjuk a következő utasítást. A szinkronizálatlan állomások időzítési diagramjai (és néhány szinkronizált állomásé is) nyilakat használnak, amik megmutatják az okokat és hatásokat, mint a 3-38. ábrán. MSYN követelése viszont, a címsorok, MREQ, RD, MSYN elutasítását okozza. Végül MSYN elutasítása, SSYN elutasítását idézi elő, és ez az olvasás vége. A jelzőrendszert, ami összeilleszti ezt az utat, teljes kézfogásnak nevezzük. Az alapvető rész 4 eseményből áll: 1. MSYN érvényesülése (elfogadása) 2. SSYN elfogadása válaszolva MSYN-re 3. MSYN elutasítása válaszolva SSYN-re 4. SSYN elutasítása válaszolva MSYN elutasítására Tisztázni kell, hogy a teljes kézfogás időbelisége független. Minden eseményt egy korábbi esemény idéz elő, nem pedig egy időpulzus. Ha egy közelebbi irányító lassú, az semmiképp sincs hatással egy későbbi irányítóra, ami sokkal gyorsabb. Egy szinkronizálatlan állomás előnyét kellene most tisztázni, de a valóság az, hogy a legtöbb állomás szinkronizált. Ennek az az oka, hogy könnyebb építeni egy szinkronizált rendszert. A CPU csak a saját jelrendszerét fogadja el, a memória csak erre reagál. Nincs visszacsatolás (ok és hatás), de ha jól választjuk ki a komponenseket, minden jól fog működni. Ezenfelül sok pénzt kell befektetni a szinkronizált állomásos technológiába. 3.4.5 ÁLLOMÁSVÁLASZTÁS Eddig hallgatólagosan elfogadtuk, hogy csak egy állomásirányító van, a CPU. A valóságban az I/O chipnek állomás irányítóvá kell válniuk, olvasni és írni a memóriát, és megszakításokat előidézni. A társprocesszorok szintén állomás irányítóvá válhatnak. A kérdés aztán felvetődik: ?Mi történik, ha egyidőben két vagy több megoldás is állomás irányítóvá szeretne válni?? A válasz az, hogy szükség van néhány döntő mechanizmusra, hogy megelőzzék a káoszt. A döntő mechanizmusok lehetnek centralizáltak vagy decentralizáltak. Először vizsgáljuk meg a centralizáltat. Ennek egy egyszerű formáját mutatja 3-39(a) ábra. Ezen a vázlaton egy állomás irányító eldönti , mi következzen. Sok CPU-ba ez be van építve, de néha külön chipre van szükség. Az állomás tartalmaz egy elkülönített QR kérelmi vonalat, ami egy vagy több megoldás által kerül elfogadásra. A bírálórendszernek semmiképp nem mondja meg, mennyi megoldást kért az állomás, csak kategóriákat tud megkülönböztetni, amelyek néhánya kérelem és van néhány nem kérelem. Amikor a mechanizmus látja az állomás kérelmét, kiad egy engedélyt, amivel érvényesíti az állomás engedélyező vonalát. Ez a vonal keresztül húzódik az I/O megoldások sorozatán, úgy, mint a karácsonyfaégők fűzére. Amikor a megoldás fizikailag bezáródott, a mechanizmus az engedélyt ellenőrzi, elkészült-e a kérelem. Ha így van, átviszi azt az állomáson, de közben terjeszti lefelé a vonalon. Ha nincs kérelem, az engedélyt a vonalon a következő állomáshoz terjeszti, amely ugyanezt az utat teszi meg, és így tovább, amíg néhány megoldás elfogadja az engedélyt és átveszi az állomást. Ezen a vázlaton ezt ?jó láncolatnak? nevezik. Van egy olyan tulajdonsága, hogy a megoldások elsőbbsége attól függ, hogyan záródnak a mechanizmushoz. A legzártabb megoldás nyer. Az előbbségek megkerülése a mechanizmustól való távolságon alapul, sok állomásnak többszörös elsőbbségi szintjei vannak. Minden elsőbbségi szintre van egy állomás kérelem és egy engedélyvonal. A 3-39(b) ábra egyikének 2 szintje van 1 és 2 (de valamelyiknek van 4,8 vagy 16 szintje is). Az összes megoldás csatlakozik az állomás kérelmi szintjének egyikéhez, az időkritikus megoldások csatlakoznak az elsőbbrendűekhez. A 3-39(b) megoldás; 1, 2 és 4 használ 1 prioritást, míg a 3 és 5,2 prioritást használnak. Ha többszörös prioritású szinteket igényeltek ugyanabban az időben, a mechanizmus engedélyt csak a legmagasabb prioritásúnak ad ki. Az ugyanolyan prioritású megoldások között a láncolatot használja. A 3-39(b) ábrán, ellentmondás esetében, a 2. megoldás kiüti a 4-et, ami kiüti a 3-at. ***[166-173] Az 5-ös egységnek van a legkisebb prioritása mert a legkisebb prioritású láncolat végén helyezkedik el. Mellékesen, technikai szempontból nem szükséges a 2. szintű engedélyező buszvonal 1-es és 2-es egységeken keresztüli sorbakötése, mert ezek rajta keresztül nem küldhetnek kérő utasítást. Azonban a gyakorlati kivitelezésben egyszerűbb az összes engedélyező vonalat az összes egységbe bekötni, semminthogy az egységek prioritásától függő speciális bekötést alkalmazni. Néhány csatornakiválasztó rendelkezik egy harmadik vonallal is, amelyre egy egység akkor küld megkérő jelet, mikor elfogadott egy engedélyezést és rákapcsolódott a buszra. Ahogy hatályosította ezen nyugtázó vonalat, a kérő és engedélyező vonalak negálhatóak. Ennek eredményképp, míg az első egység a buszt használja, a többi egység is kérő utasítást küldhet. Mire a folyamatban lévő átvitel befejeződik, már a következő bus-master ki is választódik. Ez rögtön indulhat amint a nyugtázó vonal hatálytalanítódik, amikor is elkezdődhet a következő kiválasztási ciklus. Ez a séma egy extra busz-vonalat és egységenként több logikát követel, de jobban használja a busz-ciklusokat. Az olyan rendszerekben, ahol a memória a főbuszon van a CPU-nak szinte minden ciklusban versenyeznie kell a buszért az összes I/O egységgel. Ezen helyzet általános megoldása, hogy a CPU kapja a legalacsonyabb prioritást, így csak akkor fér hozzá a buszhoz, mikor azt senki más nem használja. Az alapötlet itt az, hogy a CPU mindig várhat, míg az I/O egységeknek gyakran gyorsan hozzá kell jutniuk a buszhoz különben a beérkező adatok elvésznek. A nagy sebességgel forgó lemezek nem várhatnak. Ezt a problémát számos modern számítógép-rendszerben úgy kerülik el, hogy a memóriát az I/O egységektől különálló buszra kapcsolják, hogy ne kelljen a busz eléréséért versenyezniük. A decentzralizált buszkiválasztás is megvalósítható. Például, egy számítógépnek lehet 16 prioritás-sorrendbe állított busz-kérő vonala. Mikor egy egység a buszt kívánja használni , akkor hataályba helyezi a kérővonalát. Az összes egység szemmel tartja az összes kérővonalat, így minden busz-ciklus végén minden egység tudja, hogy a legmagasabb prioritással rendelkező kérő volt-e, és hogy a következő ciklus alatt használhatja-e a buszt. A centralizált kiválasztáshoz hasonlítva, ez a kiválasztási módszer több busz-vonalat követel, de kivédi a kiválasztó lehetséges túlterhelését.Ugyanakkor, az egységek számát a kérővonalak számára korlátozza. A decentralizált busz-kiválasztás egy másik fajtája, amelyet a 3-40.-es ábrán mutatunk, csak 3 vonalat használ, függetlenül a jelenlévő egységek számától. Az első busz-vonal, egy a busz kérését szolgáló becstlakoztatott-VAGY vonal. A második busz-vonalat FOGLALT-nak nevezik, és az éppen alkalmazott bus-master hozza működésbe. A harmadik vonalat a busz kiválasztására használják. Ezt az összes egységen keresztülvezető megszakításprioritás-láncba kötik. A lánc fejét egy 5V-os feszültségforrás segítségével tartják engedélyezett állapotban. 3-40.-es ábra Mikor egyik egységnek sincs szüksége a buszra, az engedélyezett kiválasztó-vonal az összes egységnek továbbítódik. A busz eléréséhez egy egység először ellenőrzi, hogy a busz szabad-e, és hogy az általa fogadott kiválasztó jel engedélyezett-e. Ha a BEMENET-ét hatálytalanították, akkor nem válhat bus-master-ré, éas így hatálytalanítja a KIMENET-ét. Ha azonbana BEMENET engedélyezett, akkor az egység negálja a KIMENET-ét, amely arra készteti folyásirányú szomszédját, hogy saját BEMENET-ét nem engedélyezetttnek lássa és saját KIMENET-ét is hatálytalanítsa. Ezáltal minden a folyásirányban lévő minden egység lezárt BEMENET-et lát, és ennek megfelelően lezárja kimenetét is. Mikor elül a vihar, csak egy egységenek lesz nyitott BEMENET-e és zárt KIMENETE. Ez az egység lesz a bus-master, engedélyezi a FOGLALT-at és a KIMENET-et, és elkezdi az átvitelt. Némi gondolkodás után rájöhetünk, hogy a buszt elérni kívánó gységek közül a legbaloldalibb kapja azt meg. Így tehát ez az elképzelés hasonlatos azeredeti megszakításprioritás-láncolatos kiválsztáshoz, eltekintve attól, hogy nem kell hozzá kiválasztó, azaz gyorsabb, olcsóbb, és a kiválaszó hibáitól sem függő. 3.4.6 BUSZ MŰVELETEK Egészen mostanáig, csak általános busz-ciklusokról beszéltünk. Ciklusokról, amelyek egy olyan mesterrel (általában a CPU) rendelkeztek, amely egy szolgából (általában a memória) olvas, vagy éppenséggel abba ír. Vlójában sok másféle busz-ciklus létezik. Most megtekintünk néhányat ezek közül. Normális esetben csak egy szó kerül átvitelre. Azonban, mikor cache-elést használunk kívánatos rögtön egy teljes cache-vonalra szert tenni (pl. 16 egymást követő 32-bites szavak). A blokkátvitelek gyakran hatásosabbé tehetők, mint az egymás után következő különálló átvitelek. Mikor elkezdődik egy blokkolvasás, a bus-master közli a szolgával, hogy hány szó átvitelére fog sor kerülni, például úgy, hogy a szavak számát az ADAT vonalakra teszi T1 során. Egyetlen szó visszaküldése helyett a szolga minden egyes ciklus során kihelyez egy szót, addig amíg a szám el nem fogy. A 3-41.-es ábra a 3-37 (a) ábra módosított változatát mutatja, de most egy extra jellel, a BLOCK FELÜLVONÁS-sal, amelyre a blokkátvitel megkérésének jelölése végett van szükség. Ebben a példában 4 szó blokkolvasása 12 ciklus helyett csak 6 ciklus hosszúságú. 3-41. ábra Másfajta busz-ciklusok is léteznek. Például, egy multiprocesszoros rendszerben, ahol ugyanazon buszra 2 vagy több Cpu is rácsatlakozik, gyakran szükséges anak biztosítása, hogy egyszerre csak egy CPU használjon a memóriában lévő kritikus adatstrukturákat. Ennek tipikus megoldása egy a memóriában lévő változó, amely 0 mikor semelyik CPU sem használja az adat strukturákat, s 1 mikor használatban van. Ha egy CPU hozzá szeretne férni az adatstruktúrához, el kell olvasnia a változót, és ha az 0, 1-re állítania. A baj az, hogy egy kis balszerencsével, két CPU is olvashatja azt konszekutiv buszciklusokban. Ha mindkettő 0-nak látja a változót, akkor mindkettő átáálítja 1-esre és azt gondolja, hogy ő az eyetlen Cpu, amely az adatstruktúrát használja. Ez az eseménysor káoszhoz vezet. Ezen helyzetet kivédendő, a multiprocesszoros rendszereknek gyakran van egy speciális olvas-módosít-ír busz-cilkusa, amely akármelyik CPU-nak engedélyezi egy szó olvasását a memóriából, ezen szó felülvizsgálatát és módosítását, majd memóriába való visszaírását, s mindezt a busz átengedése nélkül. Az ilyen típusú ciklus megakadályozza a versengő CPU-kat a busz használatában, és hogy eképp beleavatkozzanak az első CPU műkődésébe. A busz-ciklus egy másik fontos fajtája a megszakítások kezelésére jött létre. Mikor a CPU egy I/O egységnek valaminek a végrehajtására ad ki parancsot, általában egy megszakításra számít a munka elvégzése után. A megszakítás jelzéséhez szükség van a buszra. Mivel összetett egységek egyidejüleg akarhatnak megszakítást előidézni, ugyanazon kiválasztási problémákkal találjuk magunkat itt is szembe, mint az általános busz-ciklusoknál. A szokásos megoldás az, hogy prioritásokat jelölünk ki az egységeknek, és hogy egy centralizált kiválasztót használnak, amely a legidőkritikusabb egységeknek ad prioritást. Standard megszakytásszabályozó chipek léteznek és széles körben használják őket. Az IBM PC és minden utóda az Intel 8259A chipet használja. Ezt a 3-42.-es ábrán láthatjuk. Akár 8 I/O szabályzó chip csatlakoztatható közvetlenüla 8259A 8 IRX (megszakítás kérés) bemenetére. Mikor akármelyik ezen egységek közül megszakíytást akar előidézni, akkot kinyitja bemeneti vonalát. Ha egy vagy több bemenet kinyilik, a 8259A kinyitja az INT (megszakítás)-et, amely közvetlenül a CPU megszakítás lábát hajtja meg. Ha a CPU képes a megszakítás kezelésére, akkor egy pulzust küld vissza a 8259a-nak az INTA (megszakításnyugtázás)-n. Enél a pontnál a 8259A-nak meg kell határoznia, hogy melyik bemenet okozta a megszakítást aképpen, hogy kihelyezi annak a bemenetnek a számát az adatbuszra. Ehhez a művelethez egy speciális busz-ciklusra van szükség. A CPU hardver ezt a számot hazsnálja a pointer-, vagy megszakításvektor-táblába való beiktatáshoz, és ezáltal a megszakyítás kiszolgálásához szükséges futtatandó eljárás címénak a megtalálásához. A 8259A-nak számos olyan belső regisztere van, amelyeket a CPU közönséges busz-ciklusok és az RD FELÜLVONÁS (olvasás), W FELÜLVONÁS (ÍRÁS), CS FELÜLVONÁS (chipkiválasztás) és A0 FELÜLVONÁS lábak használatával írni és olvasni tud. Mikor a szoftver már kezelte a megszakítást és kész következő fogadására, egy speciális kódot ír a regiszterek egyxikébe, amely azt idézi elő, hogy a 8259A lezárja az INT-et, hacsak nincs még egy folyamatban lévő megszakítása. Ezen regiszterek úgy is írhatók, hogy a 8259A-t a számos mód egyikébe tegyék, megszakításkészleteket kimaszkoljanak, és más különlegességeket lehetővé tegyenek. Ha több mint 8 I/O egység van jelen, akor a 8259A-kat kaszkádba kapcsolhatjuk. A legszélsőségesebb esetben mind a 8 bemenet 8 másik 8259A kimenetére csatlakoztatható, lehetővé téve 64 I/O egység használatát egy kétfokozatú megszakításhálózatban. A 8259A-nak van néhány lába ezen kaszkádolás kezelésére szánva, amelyekről az egyszerűség kedvéért nem szólunk. Jóllehet a busz-tervezés témáját mégcsak megközelítőleg senm merítettükk ki, az előzőekben közreadott anyag elég alapot ad a busz müködési lényegének és a CPU-k és buszok közremükődésének megértéséhez. Most pedig lépjünk tovább az általánostól a specifikus felé és tekintsünk meg tényleges CPU-k és buszaik néhány példáját 3.5 PÉLDA CPU CHIPEK ebben a részben kis részletességgel, a hardverszinten fogjuk vizsgálni a Pentium II-t, az UltraSPARC II-t, és a picoJava CPU chipeket. 3.5.1 A PENTIUM II. A PII az eredeti IBM PC-ben használt 8088 CPU közvetlen leszármazottja. Habár a PII 7.5 millió (ha a cikk amerikai, lehet 7.5 milliárd is) tranzisztorjával messze álla 29.000 tranzisztoros 8088-tól, mégis teljesen kompatibilis a 8088-al és módosítás nélkül képes futtatnia 8088 bináris programjait (a közbeeső processzorokra írt programokat nem is említve). Szoftver szempontból a PII teljességgel egy 32 bites gép. Ugyanazzal a használóiszintű ISA-val rendelkezik, mint a 80386, 80486, Pentium, és Pentium Pro, beleértve ugyanazokat a regisztereket, ugyanazokat a parancsokat, és az IEEE 754 lebegőpontos standard teljes on-chip megvalósítását. Hardveri megközelítésből a PII valamivel több, hiszen 64GB létező memóriát tud megcímezni, és 64 bites egységekben képes adatokat a memóriájából és memóriájaba átvinni. Habár a programozó nem tudja a 64 bites átviteleket szemmel kísérni, mégis ezek gyorsabbá teszik a gépet, mint egy tisztán 32 bites gép. Belsőleg, mikrotechnológiai szinten, a PII alapjában véve egy Ppro az MMX utasításokkal kibővítve. Az ISA szintű paprancsokat jó előre behívja a memóriából és RISC-szerű mikroműveletekre töri fel. Ezeket a mikroműveleteket egy pufferban tárolja, és amint valamelyikük elegendő erőforrással rendelkezik a kivitelezéshez, az elindulhat. Összetett mikroműveletek ugyanazon cikluson belül indíthatók, így a PII-t egy skálafeletti, szuperskaláris géppé téve. A PI-nek kétszintű cache-je van. Rendelkezik egy pár, 16KB az utasításoknak és 16KB az adatoknak, on-chip cache-sel, és egy 512 KB-os egyesített másodikszintű cache-sel. A cache-vonal 32 Byte méretű. A másodikszintű cache a CPU órafrekvenciájának a felével működik. A CPU órák 233 MHz-en vagy afelett hozzáférhetőek. A PII rendszerekben két elsődleges külső, externális buszt használnak. Mindkettő szinkronikus. A memória-buszt a fő DRAM eléréséhez, a PCI buszt az I/O egységekkel való kommunikációra használják. Néha egy örökség((????) legacy) (azaz ősi) buszt is hozzácsatolnak a PCI buszhoz, ezzel a régi preifériaegységek csatlakoztatását is lehetővé téve. A PII rendszernek lehet 1 vagy 2 CPU-ja, amelyek közös memórián osztozkodnak. A két CPU-s rendszernél fennáll annak a veszélye, hogy ha egy szót beolvas egy cache-be és ott módosul, anélkül, hogy visszíródna a memóriába, és ha a másik CPU megpróbálkozik a szó olvasásával, akkor helytelen értéket fog kapni. Speciális védelemről (snooping) ezen probléma kivédése érdekében. Egy alapvető különbség a PII és minden elődje között a kiszerelése. Egészen a 8088-tól kezdődően, a PPro-n keresztül és azt is beleértve, minden Intel CPU normál chip volt, lábakkal az oldalán vagy az alján, amelyeket egy foglalatba lehetett csatlakoztatni. Ettől eltérően, a PII az Intel által SEC (Egyélű Cartridge, Single Edge Cartridge)-nek nevezett burkolatban jelenik meg. Ahogy azt a 3-43.-as ábrán láthatjuk, egy SEC az egy igen nagyméretű műanyag doboz, amely tartalmazza a CPU-t, a második szintű cache-t, egy élcsatlakozót a jelek továbbításához. A PII SEC-nek 242 csatlakozója van. 3-43. ábra Bár az Intelnek kétségtelenül jó oka van arra, hogy ezt a kiszerelési modellt válassza, mégis ez olyan vomatkozásban okozott problémát, amit az Intel nem látott előre. Vitathatatlan, hogy sok vásárló bír azzal a szokással, hogy kicsavarozza gépét csak azért, hogy megkeresse a CPU chipet. Az első leszállított PII-ben a vásárlók nem találták a CPU-t és hangosan reklamáltak (Az én számítógépemnek nincs CPU-ja!). Az Intel úgy oldotta meg ezt a problémát, hogy a CPU chip képét (valójában egy hologramot) ragasztották minden következőleg leszállított SEC-re. Az energiaellátás fontos kérdés a PII-nél. A leadott hő mennyisége az órafrekvenciától függ, de kb. a 30-50 W-os sávba esik. Ez óriási menyiség egy számítógép chipnek. Hogy valami elképzelése legyen arról, milyen is az az 50 W, tegye a kezét egy már jó ideje működő izzólámpa közelébe (de ne ré). Következésképpen, a SEC-et úgy szerelték ki, hogy befogadjon egy hőelnyelőt, amelynek a létrehozott hő eloszlatása a feladata. Ez a sajátságosság azt jelenti, hogy mikor egy PII leélte CPU-ként való használhatóságának idejét, akkor még mindig hasznosíthatjuk, mint tábori tűzhely. A fizika törvényeinek megfelelően, akármi ami sok hőt ad le, sok energiát kell hogy felvegyen. Egy hordozható számítógépnél, korlátozott akkumullátor töltettel, a nagy energiafelhasználás nem kívánatos. Ezen kérdést megcélozva, az Intel lehetővé tette a CPU álomba merülését, mikor az nincs használat alatt, és mély álomva merülését, mikor valószínűsíthető, hogy így is marad egy ideig. A mélyálom állapotában a cache és regiszterértékek megőrződnek, de az óra és minden belső egység kikapcsolódik. Arról azonban nem szólnak a beszámolók, hogy a PI mélyálom állapotában álmodik-e. A PII LOGIKAI LÁBKIOSZTÁSA A SEC 242 érintős élcsatlakozójának a kiosztása tartalmaz 170 jel és 27 energiacsatlakozást (különböző feszültségszintekkel), 35 föld, és 10 tartalékcsatlakozást, jövőbeli használatra. A logikai jelek némelyike két, vagy több lábat is használ (mint például a megkért memóriacím), így csak 53 különböző van belőlük. Egy valamelyest egyszerűsített logikai lábkiosztást láthatunk a 3-44.-s ábrán. Az ábra baloldalán helyezkedik el a memóriabusz-jelek 6 fő csoportja, a jobb oldalon többféle jel találhatóvegyesen. A baloldali esetben megadott nevek a tényleges Intel jelnevek. A jobboldaliak pedig összetett, kapcsolódó jelek gyűjtőnevei. Az Intel olyan elnevezési szokást alkalmaz, amit fontos megérteni. Mivel manapság a chiptervezés számítógépek használatával folyik, szükség van a jelnevek ASCII szövegben való megjelenítésének lehetőségére. A felülvonások használata, az alacsonyszintre kapcsolt jelek indikálására, túl bonyolúlt, ezért az Intel ehelyett # karaktert helyezi a név után. Így tehát a BPRI-t BPRI# formában fejezik ki. Ahogy azt az ábrából láthatjuk a legtöbb PII jel alacsony szintű. Most pedig vizsgáljuk meg magukat a jeleket, a busz-jelekkel kezdve. A jelek első csoportját a busz megkérésére (azaz a busz kiválasztás elvégzésére) használják. A BPRI# lehetővé teszi, hogy egy egység magas prioritású megkérést tegyen, melynek elsőbbsége van egy általánossal szemben. A LOCK# megengedi egy CPU-nak a busz lezárását, hogy ezáltal megakadályozza a másikat a rácsatlakozásban, addig amíg készen nincs. Amint megszerezte a busz feletti tulajdonjogot, a CPU, vagy más bus-master buszmegkéréseket tehet a jelek következő csoportjának a használatával. A címek 36 bitesek, de az alacsonyrendű (jobbszélső) 3 bitnek mindig nullának kell lennie, ezért nincsenek kijelölt lábaik, tehát az A# csak 33 lába van. Minden átvitel 8 bájtos és 8 bájtos határon rendeződik el. 36 cím bittel a maximálisan megcímezhető memória az 2 $36$-on, ami 64 gigabájt. Mikor egy cím a buszra kerül, az ADS# jelet használják, hogy a célponttal (például a memória) közöljék, hogy a címvonalak érvényesek. A busz-ciklus típusa (például egy szó olvasása, vagy egy blokk írása) az REQ# vonalakon továbbítódik. Két paritásjel védi az A#-t és egy védi az ADS#-t és az REQ#-t. Az öt hibavonalat a szolga a paritáshibák, míg a többi egység a más jellegű hibák jelentésére használja. 3-44-es ábra A Snoop csoportot a multiprocesszoros rendszerekben annak engedélyezésére használják, hogy egy CPU megtudhassa, hogy egy számára szükséges szó a másik CPU cache-jében van-e. Azt, hogy a PII hogyan snoop-ol a nyolcadik fejezetben fogjuk leírni. A Válasz csoport olyan jeleket foglal magában, amelyeket a szolga használ a mesternek való visszajelentéshez. Az RS# tartalmazza az állapotkódot. Az ATRDY# azt jelöli, hogy a szolga (a célpont) kész a mestertől jövő adat befogadására. Ezek a jelek egyben paritás-ellenőrzöttek is. Az utolsó busz-csoport a tényleges adatátvitelre való. A D#-et használják a 8 adatbájt buszrahelyezésére. Mikor odakerültek, a DRDY# aktivizálódik, hogy bejelentse jelenlétüket. A DBSY#-et arra használják, hogy közölje a nagyvilággal, hogy a busz jelenleg foglalt. A RESET#-et a CPU vész esetén való resetelésére használják. A PII úgy is konfigurálható, hogy a megszakításokat a 8088-sal megegyező módon használja (a visszafelé kompatibilitás végett), vagy használhat egy új megszakítási rendszert egy APIC (Advanced Programmable Interrupt Controller, Fejlett Programozható Megszakítás Vezérlő) nevezetű eszköz alkalmazása mellett. ***[174-177] Nem érkezett meg. Márki-Zay Dániel: h938312 ***[178-181] 178 3-47.ábra. Egy UltraSPARC II rendszer magjának főbb jellemzői A 256 a leggyakrabban használt utaítássor, és a 256 a leggyakrabban használt adatsor, ezek az elsőszintű cache-ben vannak. A cache line-okat gyakran használják, de amik nem férnek be az elsőszintű cache-be, azok a második szintű cache-ban vannak tárolva. Ez a cache tartalmazza véletlenszerűen összekeverve mind az adat- sorokat, mind az utaítássorokat. Mindezek a "Level 2 cache data" címkézésű téglalapban vannak tárolva. A rendszernek kell nyomon követnie, hogy melyik sor tartozik a második szintű cache-be. Ez az információ a második SRAM-ban van őrizve, "Level 2 cache tags" címen. Ha nincs az adat az elsőszintű cach-ben, akkor a CPU elküldi az azonósítóját (vagyis a Tag address-t) a második szintű cache-be. Az ismétlés (azaz a Tag data) információt szolgáltat a CPU számára, a CPU pedig közli, hogy a sor vajon a második szintű cache-ben van-e, és ha igen, akkor milyen állapotban. Ha a sor ott van, akkor a CPU megy és megszerzi. Az adatszállító 16 byte széles, így négy ciklus szükséges ahhoz, hogy egy teljes sort az elsőszintű cache-be szállítson a másodikból Ha a cache line nincs a második szintű cache-ben, akkor muszáj a főmemóriából az UPA interface-be hozni. Az UltraSPARC II UPA egy központosított vezérlővel van kivitelezve. A cím és a vezérlő jelek a CPU-ból mennek a kontrollerbe (ha több CPU van, akkor mindegyikből). Miután a CPU megkapja az engedélyt, kiküldi a címet a memory address lábakon, megadja a kérés típusát és érvényesíti a címet az address valid lábakon. (Ezek a lábak kétirányúak, mivel az UltraSPARC multi- processzorának többi CPU-inak is szükséges hozzáférniük a távoli cache-ekhez, hogy azok mind konzisztensek maradjanak.) A címet és a sínciklus jellegét "kidobja" két ciklusban az Address lábakon, a sor az első ciklusban megy ki, az oszlop pedig a második ciklusban, ahogy azt a 3-31.ábrán láthatjuk. 179 Az eredményre várva a CPU képes lehet folytatni a többi munkáját.Például, ha az utasítás előkészítése közben valamit nem talál a cache-ben, attól még végrehajthatja a már előkészített utaítást, amelyek hivatkoznak olyan adatra is, ami nincs benne egyik cache-ben sem. Így egyszerre több tranzakció is lehetséges az UPA-n keresztül. Az UPA képes egyszerre kezelni két egymástól független tranzakció sorozatot (ezek általában írások és olvasások), akár több megszakítással is. A központi vezérlő feladata mindezek nyomon követése és, hogy a leghatékonyabban sorrendben teljesítse a memória kéréseket.Amikor végül megérkezik az adat a memóriából, ez 8 byteban képes egyszerre lejönni, egy hibajavító kóddal a legnagyobb megbízhatóság érdekében. A tranzakció kérhet egy teljes cache blokkot, egy quadword-ot (8 byte), vagy akár még kevesebb byte-ot is. Minden beérkező adat az UDB-be kerül, amely pufferálja őket. Az UDB célja, hogy méginkább elhatárolja a CPU-t a memóriarendszertől, így azok aszinkronizáltan tudnak dolgozni. Például, ha a CPU-nak írnia kell egy szót vagy egy cache sort a memóriába, ahelyet, hogy várakozna az UPA elérésére már azonnal írhatja is az adatokat az UDB-be és hagyhatja, hogy az UDB később küldje az adatokat a memóriába. AZ UDB generálja és kontrollálja is a hibajavító kódot. Csak a teljesség kedvéért említjük, hogy az UltraSPARC II fenti leírása, mint ahogy a Pentium II leírása, rendkívül leegyszerűsített, de a művelet lényegét tartalmazza. 3.5.3 A picoJava II Mind a Pentium II, mind az UltraSPARC II példa azon nagyteljesítményű CPU-kra, melyeket rendkívűli gyors PCK és munkaállomások építésére terveztek. Az emberek, amikor a számítógépre gondolnak, ilyen rendszerre össz- pontosítanak. Mindemellett létezik a számítógépek egy másik világa, amely tulajdonképp sokkal nagyobb: ez a beágyazott rendszereké. Ebben a fejezetben ebbe a világba látogatunk. Talán enyhe túlzás lenne azt mondani, hogy minden 100&-nál drágább elektromos készülék számítógépet tartalmaz. Természetesen a TV, rádiótelefon, manager calculator, mikrohullámú sütő, kézikamera, videófelveő, lézernyomtató, riasztó, hallókészülék, elektronikus játékok és számos más készülék manapság számítógépes vezérléssel működik. A számítógépek ezekben az eszkö- zökben inkább az alacsony árhoz, mintsem a magas teljesítményhez lettek igazítva, ami más fejlesztéseket eredményezett , mint a magas szintű CPU-k, amikről szó lesz. Hagyományosana beágyazott processzorokat assembly nyelven programozták, de mivel a gépek egyre bonyo- lutabbaká váltak és a szoftveres hibáknak egyre komo- lyabb következményei lettek, így más megközelítések kerültek előtérbe. Különösen a Javának, mint progra- mozási nyelvenek a használata beágyazott rendszereken lett vonzó, köszönhetően a viszonylag egyszerű prog- ramozhatóságok, kicsi kódméretek és a platform- függetlenségnek. 180 A Java használat beágyazott alkalmazásának fő hát- ránya, hogy szükség van egy nagy szoftveres inter- preterre, amely a Java fordító által adott JVM kódot hajtja végre, és hogy a Java fordítások és a fordí- tási eljárás igen lassú. A Sun és más cégek úgy oldották meg a problémát, hogy terveztek és építettek egy olyan CPU chipet, amely alap utasításkészletként tartalmazta a JVM-et. Ez a megközelítés kombinálja a Java programnyelv használatának előnyeit, a hordozhatóságot, a Java fordító által készített JVM bináris kód kis méretét és a gyors végrehajtást speciális hardverrel. Ebben a részben egy modern Java alapú CPU architecktúrát nézünk meg, amit speciálisan beágyazott rendszerekre terveztek. A CPU a Sun picoJava II, ami a Sun picoJava 701 chip alapja, bár Sun más cégektől is vásárolt terve- ket. A CPU egy egyszerű chip két busz interface-szel, az egyik a 64 bit széles memória busz, a másik a 32 bit széles PCI busz. Lásd 3.48 ábra. Ahogy a Pentium II és az UltraSPARC II-nél, a chipen osztott első szintű cache van, legfeljebb 16 KB az utasításoknak és leg- feljebb 16 KB az adatoknak. Azonban a másik két CPU-nak nincsen második szintű cache-e, mivel az alacsony költ- ség a kulcsfontosságú a beágyazott rendszerek tervezé- sénél. Lejjeb tárgyaljuk a Sun megvalósítását a picoJava II-re a microJava 701-et. A chip a jelenlegi mértékkel kicsinek mondható, csak 2 millió tranzisztorja van a magnak, illetve további 1,5 millió a két 16 KB-os cache- eknek. A 3.48 ábráról három tulajdonság tűnik ki azonnal. Az első, a microJava 701 PCI buszt használ (33 MHz-t és 66 MHz-t is). Ezt a buszt az Intel fejlesztette ki magas szintű Pentium rendszerekhez, de ez a processzor függet- len. A PCI busz használatának előnye az, hogy használa- tával elkerülhető, hogy új buszt kelljen tervezni. Továbbá, hogy számos play in kártya kapcsolható hozzá. Bár a PCI kártyák létezése igen kis előny mobiltelefonok Építéséhez, Web Tv-k és egyéb fizikailag nagyobb eszközök- höz. Másodszor ez a picoJava 701 rendszer alapállapotban tartalmaz flash PROM-ot. A lényeg, hogy egy eszközben nagyon sok,ha nem az összes program kell,hogy beépítve legyen. A flash PROM remek hely a program tárolására, tehát az interface léte a gépeken nagyon hasznos. Egy másik chip, amely adható a rendszerhez tartalmazza a soros és párhuzamos I/O interface-eket, amik a PC-n találhatók. 181 Harmadszor, a microJava 701-nek van 16 programozható I/O sora, amik kapcsolhatók gombokhoz, kapcsolókhoz és lámpák hoz a gépeken. Például a mikrohullámú sütőn gyakran vannak, számokat tartalmazó gombok illetve néhány egyéb gomb, amelyek közvetlenül a CPU chiphez kapcsolhatók. A közvetlenül a CPU-hoz kötött programozható I/O sorok szükségtelenné teszik a programozható I/O chipeket, ami az egész tervezést egyszerűbbé és olcsóbbá teszi. A chipen további három programozhat időzítő is van , ami szintén hasznos dolog, mivel az eszközök gyakran valós időben működnek. A microJava 701 a 316 tűlábas ipari szabványú BGA csomagban jön ki. Ezek közül 59 láb a PCI buszon van csatlakoztatva. A PCI buszt később részletesebben megvitatjuk a fejezetben. Másik 123 láb a memória buszé, amiből 64 kétirányú adatláb, valamint a különálló cím lábak. További lábakat használnak a vezérlésre (7), időzítőkhöz (3), megszakításhoz (11), tesztelésre (10), és a programozható I/O-ra (16). A többi láb közül néhányat használ a táp és a földelés, de a többit nem használja. A többi picoJava gyártó szabadon választhat különböző buszt, csomagot, stb. A chip rendelkezik számos egyéb hardver tulajdonsággal, mint például sleep mód az elem takarékosság miatt, chip meg- szakítás ellenőrző, és teljes támogatása az IEEE 1149.1JTGA teszt szabványoknak. 3.6 PÉLDÁK BUSZOKRA A buszok azok a kapcsok, amelyek összetartják a számítógépes rendszert. Ebben a fejezetben megnézünk néhány ismertebb buszt: az ISA buszt, a PCI buszt és az Universal Serial Bus-t. Az ISA busz az IBM-PC egy csekély kibővítése. A visszamaradt összeférhtőség okánál fogva még mindig jelen van minden Intel based (alapú) PC-ben. Mindemellett minden gép rendelkezik egy második, gyorsabb busszal, méghozzá a PCI busszal. A PCI busz nagyobb kiterjedésű, mint az ISA és gyorsabb időt fut. Az Universal Serial busz egy mindinkább elterjedt I/O busz, kis sebességű perifériákkal, mint például az egér és a billenytyűzet. A következő részben sorjában véve megtekintjük az összes buszt. 3.6.1 Az ISA busz Az IBM PC busz volt valójában a szabvány típus, amely a 8088 rendszeren alapult. Ugyanis majdnem minden PC klónt az árusok erről másoltak azzal a céllal, hogy megengedjék több már létező , harmadik partnerként I/O beszállását a rendszerük használatával. Az IBM PC busznak 62 jelsora van,beleszámítva 20-at a memória címek, 8-at az adatok miatt, és további egyet minden állításért: memória olvasás, memória írás, I/O olvasás és I/O írás. Ezek szintén kérelmi jelek és engedély a megszakításra, valamint a DMA használatára. Ez egy nagyon egyszerű busz. Fizikailag a busz a PC alapjába van karcolva, körülbelül féltucat csatlakozóval, amelyek 2 cm távolságra vannak elosztva egymástól, s ezekbe lehet a kártyákat behelyezni. ***[182-185] T 182-185 A kártyán volt egy lap ami illeszkedett a csatlakozóba.A lapocska mindkét oldalán 31 arannyal fedett szalag/csík volt, melyek a csatlakozóval való elektronikai kontaktust biztosítják. Amikor az IBM bevezette a 80286 alapú PC/AT-t, nagy problémával állt szemben. Ha egy teljesen újfajta 16 bit-es adatcsatornát tervezett volna, sok potenciális ügyfél vonakodott volna attól, hogy megvegye, mivel az a sokfajta PC ,,bedugós rendszerű? kártya, melyeket harmadrangú eladók terjesztettek, nem lettek volna üzemképesek az új adatcsatornával. Másrészt a PC adatcsatornához és annak 20 cím- és 8 adatvonalához nem használták volna ki a 80286 azon képességét, hogy 16 Mb-s memóriát címezzen és 16 bites szavakat adjon át. Azt a megoldást választották, hogy kibővítik a PC adatcsatornát. A PC ,,bedugós rendszerű? kártyáknak 62 tűs NYÁK-csatlakozójuk van, mely nincs olyan hosszú, mint az áramköri lap. A PC/AT megoldás azt jelentette, hogy egy második NYÁK csatlakozót helyeznek az áramköri lap aljára, mely közvetlenül a fő csatlakozó mellett van és olyan AT áramkört terveznek, mely mindkét fajta áramköri lappal dolgozik. Az alapötletet a 3-49-es ábra illusztrálja.A PC/AT adatcsatornán elhelyezkedő második csatlakozó 36 vonalat tartalmaz. Ezek közül 31 vonal több cím-, adat- és programmegszakítási-vonalat, valamint több DMA csatornát lát el. A többi a 8 és 16-bites átvitel különbségeivel foglalkozik. Amikor az IBM piacra bocsátotta a PC és PC/AT utódát, a PS/2 szériát, egy teljesen új tervezetet hozott létre. Ez a döntés részben technikai alapokon nyugodott ( a PC adatcsatorna ekkorra már teljesen elavult), de részben annak a törekvésnek volt köszönhető, hogy gátolni akarták azokat a cégeket, melyek PC utánzatok készítésével foglalkoztak, és a piac igen nagy részét uralták. Ezért látta el az IBM a közép- és felsőkategóriájú PS/2 gépeket egy adatcsatornával,a Microchannellel, mely úttörő jellegű volt, és melyet egy ügyvédekből álló ,,szabadalonfal" védett. A számítógépipar többi társasága úgy reagált erre a lépésre, hogy felállította saját szabványát, az ISA adatcsatornát, mely alapjában véve 8.33 MHz-en futó PC/AT. Ennek az intézkedésnek az az előnye, hogy megtartja a meglévő gépekkel és kártyákkal való kompatibilitást. Ez szintén egy olyan adatcsatornán alapul, mely gyártását az IBM számtalan cégnek szabadon engedélyezett annak érdekében, hogy biztosítsa, hogy a lehető legtöbb harmadrangú cég gyártsjon kártyát az eredeti PC-hez. Ez adöntés balul ütött ki az IBM számára. Minden Intel alapú PC még mindig rendelkezik ezzel az adatcsatornával, bár emellett még általában megtalálható bennük legalább egy más jellegű adatcsatorna is. A részletes leírás Shanley és Andersen 1995-ben kiadott munkájában található. A későbbiekben az ISA-t néhány új elem ( pl. szimultán programfutás) beiktatásával 32 bite-ra bővítették Az új adatcsatorna neve EISA ( bővített ISA) lett. Ehhez viszont igen kevés áramköri lapot gyártottak. 3.6.2 A PCI adatcsatorna Az eredeti IBM PC-n a legtöbb alkalmazás szöveges módban működött. A Windows bevezetésével fokozatosan grafikus használói csatolóegységeket kezdtek használni.Ezek az alkalmazások közül egyik sem terhelte meg túlságosan az ISA adatcsatornát. A helyzet azonban idővel gyökeresen megváltozott annak köszönhetően, hogy sok olyan alkalmazás (különösképpen a multimédia játékok) jelentek meg, melyek a számítógépet teljes képernyős , teljes videók bemutatására használták. Végezzünk egy kis számítást. Van egy 1024x768-as képernyőnk, melyet élethű szinekben megjelenő (3 byte/képelem) mozgó képek bemutatására használunk. Egy képernyő 2.25 Mb-nyi adatot tartalmaz. A mozdulatok kifinomítására másodpercenként legalább 30 kép szükséges, másodpercenként 67.5 MB-nyi adat szolgáltatására. A helyzet tulajdonképpen még rosszabb, mivel egy videó hard disk-ről, CD-ROM-ról vagy DVD-ről való bemutatása esetén az információnak a meghajtóról az adatcsatornán keresztül kell eljutnia a memóriába. Ezután a bemutatáshoz az információ újra keresztül kell hogy menjen az adatcsatornán és csak ezután jut el a grafikus adapterhez. Már magához a videóhoz egy másodpercenkénti 135 MB-os sávszélességű adatcsatornára van szükség, nem számolva a sávszélességet ami a CPU és más egységek üzemeltetésének feltétele. Az ISA adatcsatorna maximálisan 8.33 MHz-es sebességgel működik és ciklusonként 2 byte-ot tud átadni 16.7 MB/sec.-mal. Az EISA adatcsatorna ciklusonként 4 byte-ot tud mozgatni, 33.3 MB/sec-es sebességgel. Tehát ezek közül egyik sem alkalmas a teljes képernyős videó bemutatására. 1990-ben Intel előrelátta ezt és egy új adatcsatornát tervezett, mely átviteli sebessége sokkal nagyobb, még az EISA adatcsatornáénál is. Az új adatcsatornát PCI-nak nevezték. Az új adatcsatorna népszerűsítésének érdekében az Intel szabadalmaztaa PCI-t, majd az összes szabadalmat közös tulajdonba adta, így bármelyik társaság készíthetett hozzá perifériákat, anélkül, hogy szabadalmi díjat kellene fizetnie. Az Intel emellett létrehozott egy ipari társulatot,a PCI Special Interest Group-ot, mely a PCI adatcsatorna jövőjét irányította. Ezeknek az intézkedéseknek a következményeként a PCI adatcsatorna igen népszerű lett. Elméletileg a Pentium megjelenése óta minden Itel-alapú számítógépnek PCI adatcsatornája van, és sok más számítógépnek is. A Sunnak még egy olyan UltraSPARC verziója is van, ami PCI adatcsatornát használ, ez az UltraSPARC IIi. A PCI adatcsatornáról részletes leírást Shanley és Anderson, 1995b; valamint Solari és Willse 1998, munkájában találhatunk. Az eredeti PCI adatcsatorna ciklusonként 32 bitet tud átvinni és 33Mhz-en fut, maximálisan 133 MB/sec sávszélességgel. 1993-ban jelent meg a PCI 2.0, 1995-ben pedig a PCI 2.1. A PCI 2.2 alkalmas mobil számítógépekhez (főleg energiamegtakarításra használják). A PCI adatcsatorna 66 MHz-en fut és 64-bit átvitelét teszi lehetővé, 528 MB/sec.-os sávszélességen. Ez a kapacitás lehetőséget nyújt a teljes képernyős, teljes mozgású videoképek feldolgozására ( feltételezve azt, hogy a disk és a rendszer többi része készen áll (szabad) a feladatra). Mindenesetre a PCI nem okozza a rendszer fennakadádát. Habár az 528MB/sec igen gyorsnak tűnik, mégis felmerül vele kapcsolatban két probléma. Először is nem megfelelő tároló-adatcsatornának, másodszor pedig nem összeegyeztethető a régi ISA kártyákkal. Intel szerint az a megoldás, hogy olyan számítógépeket tervezzenek, melyek 3 vagy több adatcsatornával rendelkeznek (3-50 ábra). It látható, hogy a CPU kommunikálhat a fő memóriával egy különleges tároló adatcsatorna segítségével, valamint, hogy egy ISA adatcsatorna összeköthető a PCI adatcsatornával. Ez a megoldás minden igénynek megfele, ezért tulajdonképpen minden Pentium II számítógép ilyen felépítésű. A két fő összetevője ennek a felépítésnek a két híd-chip (amit az INTEL gyárt, ezért érdekelt ebben a tervben). A PCI híd összekapcsolja a CPU-t, a memóriát és a PCI adatcsatornát. Az ISA híd a PCI adatcsatornát és az ISA adatcsatornát köti össze, valamit egy vagy két IDE lemezmeghajtót támogat. Majdnem minden Pentium II rendszer egy vagy több szabad PCI csatlakozóval rendelkezik, ami új nagy gyorsaságú perifériák, valamint a lassú perifériákkal való összekötés érdekében egy vagy több ISA csatlakozó hozzákapcsolását teszi lehetővé. A 3-50 ábra előnye, hogy a CPU-nak különösen magas a sávszélessége a memória irányába, a saját memóriájának használata a PCI adatcsatornának igen nagy sávszélességet biztosít a gyors perifériák, mint pl. SCSI lemezmeghajtók, grafikus stb. irányába, valamint a régi ISA kártyák használata is lehetséges. Az ábrán az USB doboz az Universal Serial Bus (univerzális soros adatcsatorna) rövidítése, erről az adatcsatornáról a fejezet további részében esik szó. Bár az ábrán egy PCI és egy ISA adatcsatornával rendelkező rendszert illusztráltunk, többszörös adatcsatorna működtetése is lehetséges. Használhatóak pl. a PCI-to-PCI híd-chipek, melyek két PCI adatcsatorna összekötésére szolgálnak, így a nagyobb rendszerek két vagy több, egymástól független PCI adatcsatornával rendelkezhetnek. A rendszerbe két vagy több PCI-to-ISA híd-chip beépítése is lehetséges, mely többszörös ISA adatcsatornát tesz lehetővé. Jó lenne, ha csak egy fajta PCI kártya létezne, de sajnos nem ez a helyzet. A PCI kártyák feszültség , szélesség és időzítés függvényében változnak. A régebbi típusú számítógépek gyakran 5 volttal, az újabbak pedig a 3.3 volttal működnek, ezért a PCI adatcsatorna mindkettőt támogatja. A csatlakozók között az egyetlen kis eltérés, hogy van rajtuk két kis műanyag, melynek az a funkciója, hogy megakadályozza, hogy az 5 voltos kártyát a 3.3 voltos PCI adatcsatornába illesszék be, vagy fordítva. Szerencsére léteznek univerzális kártyák is, melyek mindkét feszültséget támogatják, és mindkét fajta csatlakozóba beilleszthetőek. A feszütségváltozatok mellett a kártyáknak több fajtája létezik a bitek száma szerint is, 32-bites és 64-bites verziót különböztethetünk meg. A 32-bites kártyák 120 tűs csatlakozóval rendelkeznek, a 64-bitesek pedig a 120 tűs csatlakozó mellett további 64 tűs csatlakozóval van ellátva, hasonlóan ahhoz, ahogy az IBM PC adatcsatornát 16 bitre bővítették (lásd 3-49 ábra). Az a PCI adatcsatorna, mely a 64-bites kártyákat támogatja 32-bites kártyákkal is üzemel, fordítva viszont nem. Végezetül a PCI adatcsatornák és kártyák mind 33, mind 66 MHz-en futnak. Két lehetőség van, vagy a tápfeszültségre, vagy a földeléshez kötünk egy vezetéket. A csatlakozók mindkét esetben egyformák. A PCI adatcsatorna szinkron adatátvitellel működik, mint minden PC adatcsatorna, kezdve az eredeti IBM PC-vel. A PCI adatcsatornán minden tranzakció egy mester ( hívatalos nevén initiator , kezdeményező )és egy szolga (hívatalos nevén target, tárgy/cél) között jön létre. Azért, hogy a PCI tűs csatlakozóba kevesebb tű legyen , a cím- és adatvonalak multiplexek. Így a PC kártyákon csak 64 pinre van szükség a cím- és adatjelhez, annak ellenére, hogy a PCI a 64-bites címeket és adatokat támogatja. A multiplex cím- és adatvonalak a következőképpen működnek. Az olvasás során az első ciklusban a mester a címet az adatcsatornára teszi. A második ciklusban a mester leveszi a címet és az adatcsatorna megfordul, így a szolga számára elérhetővé válik. A harmadik ciklusban a szolga kiadja a kért adatot. Az írás során az adatcsatornát nem kell megfordítani, mivel mind a címet, mind az adatot a mester biztosítja. ***[186-189] Nem érkezett meg. Gönczy Zsigmond: h938974 ***[190-193] T190-193 h938455 Sajnos, ez az elrendezés a kezdetektől fogva tele van problémákkal. Például gyakran minden új I/O egység a saját ISA vagy PCI kártyájával kerül forgalomba. Gyakran a felhasználó felelőssége, hogy a kapcsolókat és jumpereket (hardverkapcsolókat) beállítsa a kártyán és biztosítsa a kártyák összeférhetőségét. Azután a felhasználónak ki kell nyitnia a gépdobozt, óvatosan behelyezni a kártyát,becsuknia a dobozt és újraindítania a számítógépet. Sok felhasználó számára ez a folyamat nehéz és hibalehetőséget biztosít. Továbbá az ISA és PCI slot-ok (nyílások) száma nagyon korlátolt (egy vagy kettő típusonként). A Plug `n Play (bedugós rendszerű) kártyák kiküszöbölik a hardverkapcsolók beállítását, de a felhasználónak még mindig ki kell nyitnia a számítógépet, hogy belehelyezze a kártyát és a busz nyílások száma még mindig korlátolt. Foglalkozva ezzel a problémával, a 1990-es évek közepén hét vállalat (Compaq, DEC, IBM, INTEL, Microsoft, NEC, Northern Telecom) képviselői összefogtak, hogy egy jobb módszert tervezzenek kis sebességű I/O egységek számítógéphez csatlakoztatására. Azóta más vállalatok százai csatlakoztak hozzájuk. Az így kialakult szabványt USB -nek (Universal Serial Bus; Univerzális Soros Busz) nevezik és ez már széles körben elterjedt a személyi számítógépek között. Alapos leírás (Anderson, 1997; Tan, 1997). A vállalatok, amelyek eredetileg kigondolták az USB-t és elkezdték a projektet, céljaiból néhány a következő: 1. A felhasználóknak ne kelljen beállítaniuk a kapcsolókat vagy a hardverkapcsolókat az áramköri lapokon vagy az egységeken. 2. A felhasználóknak ne kelljen kinyitniuk a gépdobozt, hogy installálják az új I/O egységeket. 3. Csak egyetlen egy féle kábelre van szükség, ami jó minden egység csatlakoztatására. 4. Az I/O egységeknek a kábelekről kellene az áramot kapniuk. 5. 127 egységig lehessen csatlakoztatni egyetlen egy számítógéphez. 6. A rendszernek támogatnia kellene a valós idejű egységeket (pl.: hang, telefon). 7. Az egységeknek installálhatóaknak kellene lenniük amíg a számítógép fut. 8. Ne legyen szükség az újraindításra egy új eszköz felinstallálása után. 9. Az új busz és I/O egységeknek olcsó legyen az előállításuk. Az USB megfelel mindegyik célnak. Ezt kis sebességű egységekhez tervezték, mint a billentyűzetek, egerek, kamerák, scannerek (képletapogató), digitális telefonok és így tovább. A teljes USB sávszélessége 1.5MB/sec, ami elég tekintélyes számú egységhez. Ezt az alacsony korlátot a költségek lenntartása miatt választották. Az USB rendszer egy root hub- ból (gyökérközpont) áll , ami a központi buszba csatlakozik (ld.: 3-53. ábra). Ennek a hub-nak csatlakozói (sockets) vannak a kábelekhez, amik kapcsolódhatnak I/O egységekhez vagy növekvő hub-okhoz, hogy több csatlakozót biztosítsanak, és így az USB rendszer topológiája egy fa a gyökerével, ami a gyökér hub-nál van, a számítógép belsejében. A kábeleknek különböző csatlakozóik vannak a hub végen és az egységek végein, hogy megakadályozzák az embereket, hogy véletlenül két hub-ot összekapcsoljanak. A kábel négy fajta huzalból áll: kettő az adatoké, egy az áramé (+5volt) és egy a földelésé. A jelzőrendszer 0-át közvetít feszültségátmenetként és 1-et feszültségátmenet hiányában, így a 0-ák hosszú futásai generálnak egy szabványos impulzusáradatot. Amikor egy új I/O egységet bedugnak, a gyökér hub észleli ezt az eseményt és megszakítja az operációs rendszer futását. Ezután lekérdezi az eszközt, hogy kitalálja vajon milyen és mennyi sávszélességre van szüksége. Ha az operációs rendszer szerint van elég sávszélesség az egység számára, akkor kijelöl az új egységnek egy egyedüli címet (1-127) és letölti ezt a címet más információkat, a regiszterek konfigurálására az egységeken belül. Ezen a módon, az új egység szabadon (on-the-fly) hozzáadható, anélkül, hogy bármilyen felhasználói konfigurálásra szükség lenne és anélkül, hogy új ISA vagy PCI kártyát kellene installálni. A nem beállított kártyák a 0 címmel indulnak, így ezek címezhetőek. A kábelrendszer egyszerűsítésére sok USB egység beépített hub-okat tartalmaz, hogy elfogadja a pótlólagos USB egységeket. Például a monitor két hub csatlakozójához a bal- és jobboldali hangszórót lehet hozzáilleszteni. Logikailag az USB rendszert egy bit csatornarendszernek lehet tekinteni, ami a root hub-tól az I/O egységekhez. Minden egyes egység feloszthatja a saját bit csatornáját általában 16 alcsatornára a különböző típusú adatok részére (pl.: audio, video). Mindegyik csatornán és alcsatornán adatok áramolnak a root hub-tól az eszközhöz vagy a másik irányba. Két I/O egység között nincs forgalom. Pontosan minden 1.00?5.00 msec-ban a root hub egy új frame -et közvetít, hogy minden egységet időben összhangban tartson. A frame össze van kapcsolva egy bit csatornával és csomagokat (kb.: 1000bit) tartalmaz, amelyek közül az első a gyökér hub-tól az egységhez vezet. A frame további csomagjai is ebben az irányban futnak vagy az egységtől visszakerülhetnek a root hub-ba. Négy frame szerkezetét mutatja a 3-54. ábra. A 3-54. ábrán a 0-ás és a 2-es frame-ben nincs munka, így egy SOF (Start of Frame; frame kezdete) csomagra van csak szükség. Ezt a csomagot minden egység megkapja. Az 1-es frame egy lekérdező, vagyis például a scannertől kéri , hogy adja vissza azokat bit-eket (bitképet), amit a képen talált a scannelés alatt. A 3-as frame adatszállítást tartalmaz valamilyen egységekhez, pl. nyomtatóhoz. Az USB 4 féle frame-et támogat: irányító (control),egyidejű (isochronous), tároló (bulk), megszakító (interrupt). Az irányító frameket az egységek konfigurálására alkalmazzák, hogy parancsokat adjanak nekik és lekérdezzék az állapotukat. Az egyidejű frameket a valós idejű egységekhez alkalmazzák, mint a mikrofonok, hangszórók és telefonok, amiknél nagyon szükséges az adatok pontosidőtartománybeli küldése és fogadása. Nagyon előre látható késleltetést tartalmaz, de biztosítja, hogy ne legyen adatismétlés a hibás eseménysorokban. A tároló frame-ek az eszközökre vagy az eszközökből történő nagy mennyiségű adatátvitelhez kellenek, amelyeknél nem szükséges a valós idejűség, mint pl. a nyomtatóknál. Végül, a megszakító frame-ekre, azért van szükség, mert az USB nem támogatja a megszakításokat. Például ahelyett, hogy a billentyűzet egy megszakítást okozna, amikor egy billentyűt lenyomunk, inkább az operációs rendszer lekérdezi a billentyűzetet minden 50Msec-ban, hogy összegyűjtse az összes függésben lévő kezelőbillentyűt. Egy frame egy vagy több csomagból áll, lehetőleg néhány egy irányban áll. Négy fajta csomag létezik: token (vezérjel), data(adat), handshake (kézrázás) és special (speciális). A token csomagok a gyökértől az egységhez futnak és a rendszervezérlés a feladatuk. A SOF, IN és OUT csomagok a 3-54.ábrán token csomagok. A SOF (Start of Frame; frame kezdete) csomag az első mindenframe-ben és a frame kezdetét jelzi. Ha itt nincs munka, akkor a SOF csomag az egyetelen a frame-ben. Az IN token csomag egy lekérdező (poll), amely az egységet kérdezi le, hogy visszakapja a pontos adatait. Az IN csomag mezői elárulják, hogy melyik bit csatornát kérdezi le éppen, így az egység tudja, hogy milyen adattal térjen vissza (ha vannak többszörös streamjei (adattár?)). Az OUT token csomag közli, hogy adat fog érkezni az egységtől. A token csomag egy negyedik típusa , a SETUP (nincs jelölve az ábrán), konfigurálásra használható. A token csomagon kivűl 3 más fajta létezik még. Ezek a DATA (adatok; a 64byte feletti információk más módú adatátvitelére használják), handshake és a special csomagok. Az data csomag szerkezetét a 3-54. ábra mutatja. Ez egy 8-bites egyidejűsítő mezőből, egy 8-bites csomag típusból (PID), a payload-ból (hasznos teher) és egy 16-bites CRC (cycle redundancy check)-ből áll, mely észleli a hibákat. Három fajta handshake csomag van meghatározva : ACK ((acknowledgement; nyugtázás) az előző adatcsomag megfelelően megérkezett), NAK ((negative acknowledge) a CRC hibát észlelt) és SFALL (kérem várjon- éppen el vagyok foglalva). Most nézzük meg újra a 3-54. ábrát. Minden 1.00Msec-ban egy frame-et el kell küldeni a gyökér hub-tól, meg ha esetleg nincs is munka. A 0-ás és a 2-es frame csak egy SOF csomagot tartalmaz, jelezve, hogy ott nincs munka. Az 1-es frame egy lekérdező, így ez egy SOF és egy IN csomaggal indul ki a számítógéptől az I/O egységhez, melyet egy DATA csomag követ az I/O egységtől a számítógéphez. Az ACK csomag jelzi az egységnek, hogy az adat megfelelően megérkezett. Hiba esetén, egy NAK csomagot küldenének vissza az egységhez és a csomagot a bulk (tároló) adathoz küldenék vissza (de nem a isochronous adathoz). A 3-as frame hasonló szerkezetű az 1-essel, kivéve hogy most az adatáramlás a számítógéptől az egységhez tart. 3.7. Csatlakoztatás Egy jellegzetes kis- és középméret közötti számítógép rendszer tartalmaz egy CPU chip-et (áramköri lapka), egy memória chip-et és néhány I/O vezérlőt, amelyek mind egy busszal vannak összekapcsolva. Már részben tanultunk a memóriákról, a CPU-król, és a buszokról. Most itt az ideje, hogy megnézzük a ?rejtvény? utolsó darabját, az I/O chip-eket. Ezek azok a chip-ek, amelyeken keresztül kommunikál a számítógép a külvilággal. 3.7.1 I/O chipek Számos I/O chip már rendelkezésre áll és vannak újak, amelyeket bármikor bevezethetnek. Az egyszerű chipek tartalmaznak UART-kat, USART-kat, CRT vezérlőket, lemez vezérlőket és PIO-kat. Az UART (Universal Asynchronous Receiver Transmitter; univerzális aszinkron adó-vevő) egy olyan chip, amely be tud olvasni egy byte-nyi adatot az adatbuszból és kiírni egyszerre egy bitet a terminálhoz vezető soros vonalra, vagy adatot tud beolvasni a terminálról. Az UART-k általában engedélyezik a változó sebességet; a 5-től 8 bitig terjedő karaktert; 1, 1.5 vagy 2 megállító biteket; és biztosítja a páros, páratlan, vagy paritás nélküli tulajdonságot minden programirányítás alatt. USART-k (Universal Synchronous Aszinchronous Receiver Transmitters; univerzális szinkron/aszinkron adó-vevő) tudják kezelni a szinkronátvitelt különféle protokollok felhasználásával, valamint végrehatják az összes UART funkciót is. 3-53. ábra Példa egy 32 bites PCI busz tranzakcióira. Az első három ciklus egy olvasási művelet, aztán egy inaktív ciklus következik, és aztán három ciklus egy írási művelet. 3-54. ábra Az USB root hub (gyökérközpont) minden 1.00 msec-ban egy frame-et küld el. frame : adatátvitelnél a folytonos bitsorozatokkezdő és záró flagsorozatok közé vannak zárva idle : inaktív ***[194-197] ***[198-201] Fordította: Punyi Róbert h938409 198-201 3.8 ÖSSZEFOGLALÁS A számítógépeket integrált áramkörös chipekkel készítik. Ezekben a chipekben apró kapcsolók vannak, amiket kapuknak hívunk. A legismertebb kapuk az AND (és), OR (vagy), NAND (nem, és), NOR (nem, vagy) és a NOT (nem). Az egyszerű áramköröket közvetlenül működő, individuális kapukkal lehet szerelni. A bonyolultabb áramkörök a multiplexerek, demultiplexerek, kódolók, dekódolók, kapcsolók és ALU-k. Tetszőleges Boolean funkciókat PLA-val lehet programozni. Ha sok Boolean funkcióra van szükség, a PLA-k még hatékonyabbak. A Boolean algebra szabályait felhasználva egy áramkört egy másik áramkörré lehet átalakítani. Egyes esetekben így gazdaságosabb áramkörök készíthetők. A számítógépes aritmetikát az összeadók végzik. Egy 1 bites teljes összeadó két fél összeadóból áll össze. Egy multibites szó összeadása úgy jön létre, hogy összetett teljes összeadókat kapcsolunk össze úgy, hogy mindegyik kimenete a bal szomszédja felé legyen. A statikus memóriák összetevői a tárolók és a flip-flopok, amelyek mindegyike 1 bit információ tárolására képes. Ez kombinálható lineárisan az oktális tárolókba és a flip-flopokba vagy logaritmikusan a teljes méretű szó orientált memóriába. A memóriák típusai a RAM, ROM, PROM, EPROM, EEPROM, és flash. A statikus RAM-okat nem kell frissíteni. Az adatokat addig tárolják, amíg áram alatt vannak. A dinamikus RAM-okat ugyanakkor állandóan frissíteni kell, hogy kompenzáljuk a chip kis befogadóképességét. A számítógépes rendszerek összetevői buszokkal kapcsolódnak egymáshoz. Egy átlagos CPU legtöbb lába egy-egy buszvonalat vezérel. A buszvonalakat cím, adat és kontrollvonalakra oszthatjuk. A szinkron buszokat egy órajel generátor vezérli. Az aszinkron buszok összehangolják a szolgát és a mestert. A Pentium II a modern CPU egyik példája. A rendszerek, amelyek ezt használják rendelkeznek egy memória busszal, egy PCI busszal, egy ISA busszal és egy USB busszal. A PCI busz egyszerre 64 bit információt tud szállítani 66 Mhz-el, ami elég gyors a perifériáknak, de nem elég gyors a memóriáknak. A kapcsolók, lámpák, a nyomtatók és más I/O eszközök párhuzamos I/O chipeket használnak, mint a 8255A. Ezeket a chipeket konfigurálhatjuk, hogy az I/O hely és a memóriahely részei legyenek. Teljesen vagy részben dekódolhatók az alkalmazástól függően. FELADATOK 1. Egy logikatanár betér egy autós étterembe és azt mondja: Egy hamburgert vagy egy hot dogot és sült burgonyát kérek. Sajnos a szakács éppenhogy átcsúszott matematikából az iskolában és nem tudja, hogy az "és" fölényben van-e a "vaggyal" szemben. Ami őt illeti, az egyik olyan, mint a másik. A következő esetek közül melyik a helyes? (Az angol "vagy" kizárólagos "vagyot" jelent.) a. Csak egy hamburgert b. Csak egy hot-dogot c. Csak sült burgonyát d. Hot dogot és sült burgonyát e. Hamburgert és sült burgonyát f. Hot dogot és hamburgert g. Mind a hármat h. Semmit 2. Egy misszionárius eltéved Dél-Kaliforniában, és egy Y útkereszteződésnél áll. Tudja, hogy két motoros banda uralja a területet. Az egyik mindig igazat mond, a másik mindig hazudik. Azt akarja tudni, hogy melyik út vezet Disneylandbe. Mit kérdezzen? 3. Egy változónak négy Boolean funkciója van és két változónak 16 funkciója. Három változónak hány funkciója van? És n változónak? 4. Használjon igazságtáblázatot és mutassa meg, hogy P = ( P és Q ) vagy ( P és nem Q )! 5. Mutassa meg, hogy hogyan lehet elkészíteni az AND ( és ) funkciót két NAND ( nem, és) kapuból! 6. Találja meg AB komplementerét! Használja DeMorgan törvényét! 7. A 3-12 ábra háromváltozós multiplexer chipjét használva írjon le egy működést, amelynek kimenete egyenlő a bemenetével, azaz a kimenet akkor és csakis akkor 1, ha a bemenet egyik páratlan száma 1! 8. Tegye fel a gondolkodó sapkáját! A 3-12 ábra háromváltozós multiplexer chipje képes programozni a négy Boolean változó egyik tetszőleges funkcióját. Írja le hogyan, és rajzoljon egy logikai diagramot a 0 függvényhez, ha az angol szóban páros számú betű van. (pl.: 0000 = nulla = 4 betű ->0; 0111 = hét = 5 betű -> 1;1101 = tizenhárom = 8 betű-> 0 ). Tanács: Ha a negyedik bemeneti változót D-vel jelöljük, a nyolc bemeneti vonalat VCC-hez kapcsolhatjuk. Jelölés: D, vagy D. 9. Rajzolja meg egy 2 bites demultiplexer logikai diagramját, egy áramkört, amelyiknek az egyes bemeneti vonala a négy kimeneti vonal egyikéhez van irányítva, a két ellenőrző vonal állapotától függően! 10. Rajzolja meg egy 2 bites kódoló logikai diagramját: 4 bemeneti vonallal, amelyek egyikén mindig folyik az áram, és a két 2 bites bináris kimeneti vonal értéke megmondja, hogy melyik input van áram alatt! 11. Rajzolja újra a 3-15 ábra PLA-ját elég részletesen ahhoz, hogy a 3-3 ábra logikai funkcióit meg lehessen mutatni! Mindenképp mutassa meg, hogy mik a kapcsolatok a két mátrix között! 12. Mit csinál ez az áramkör? 13. Egy MSI chip egy 4 bites adó. Négy ilyen chipet úgy is össze lehet kötni, hogy egy 16 bites adó legyen. Mennyi lábának kell lenni egy 4 bites összeadó chipnek? Miért? 14. Egy n bites összeadó megkonstruálható n teljes összeadók sorba kapcsolásával, az átvitel állapotban, Ci , az i-1 állapot kimenetéből származik. Az átvitel 0 állapotban, C0, 0. Ha minden állapot T nsec-ot igényel az összeg és átvitel előállításához, az átvitel i állapotban nem lesz valós, amíg iT nsec el nem telik az összeadás kezdetétől. Nagy n-re az idő ahhoz, hogy az átvitel beálljon a magasabb rendű állapotba nem kívánatosan hosszú lehet. Tervezzen egy összeadót, ami gyorsabban dolgozik! Tanács: minden Cikifejezhető Ai-1 és Bi-1operandus bitek szempontjából úgy, mint Ci-1. Ennek a relációnak a használatával lehetséges kifejezni Ci-t , egy input függvényeként a 0 állapotokról i-1-re, így az összes átvitel előállítható egyidejűleg. 15. Ha a 3-19 ábra összes kapuja késleltetve van 10 nsec-cel, és az összes többi késleltetést mellőztük, akkor mikor lesz az áramkörnek érvényes áramköri bitje?
16. A 3-20 ábra ALU-ja alkalmas 8 bites teljes összeadás elvégzésére. Alkalmas-e teljes kivonás elvégzésére? Ha igen, magyarázza meg, hogyan! Ha nem, alakítsa át, hogy alkalmas legyen! 17. Néha hasznos egy 8 bites ALU-nak, (mint a 3-20 ábrán) hogy tudjon készíteni konstans 1-et, mint kimenetet. Adjon két módszert, hogy ez lehetséges legyen. Mindegyik módnál adja meg a 6 ellenőrző jelzés értékeit. 18. Egy 16 bites ALU 16 darab 1 bites ALU-ból áll, amelyek mindegyikének 10 nsec ideje van. Ha van egy 1 nsec-es késleltetés egyik ALU-tól a következőhöz, mennyi ideig tart, amíg megjelenik a 16 bites összeadás eredménye? 19. Mi az S és R bemenetek nyugalmi állapota egy SR tárolóhoz, amely két NAND ( nem, és ) kapuból tevődik össze? 20. A 3-26 ábra áramköre egy flip-flop, amely az óra felfelé tartó ágán van. Módosítsa ezt az áramkört, hogy egy olyan flip-flophoz jusson, amely az óra leszálló ágán van! 21. Segítsen egyeztetni a részleteket az új személyi számítógépében, vegye fel a kapcsolatot a kezdő SSI chip gyártókkal. A kliensei közül egy arra gondol, hogy kikapcsol egy négy D flip-flop-ot tartalmazó chipet, mind a Q-t, mind a Q-t, egy potencionálisan fontos vásárló kérésére. A javasolt tervezésnek mind a négy óra jele sorba van kapcsolva, szintén kívánságra. Nincs beprogramozva se üresre állítva. Az ön feladata megadni a tervezésnek egy professzinális kiszámítását. 22. A 3-29 ábra 4*3-as memóriájának 22 ÉS kapuja és 3 OR kapuja van. Ha az áramkőr 256*8-ra lenne kibővítve hány ÉS és VAGY kapu lenne? 23. Mivel több és több memóriát integrálnak egy chipre, a címlábak száma is növekszik. Azonban gyakran kellemetlen a nagy számú címlábak a chipen. Hogy lehet 2nmemóriát megcímezni kevesebb, mint n láb használatával? 24. Egy számítógép 32 bites adatbusszal 1M*1 dinamikus RAM memória chipet használ. Mennyi a legkevesebb memória (byte-okban), amit a gép használhat? 25. Az időzítés diagramra hivatkozva ( 3-37 ábra ) tegyük fel , hogy az órát 25 nsec helyett 40 nsec időtartamra lassítjuk le, de az időzítésnek változatlannak kell maradnia. Legrosszabb esetben mennyi időbe telne a memóriának, hogy T3 idő alatt a buszra tegye az adatot, miután MREQ érvénybe lép? 26. Megint a 3-37 ábrára hivatkozva tegyük fel, hogy az óra 40 Mhz-en van, de a TAD16 nsec-re van kibővítve. Használhatunk-e 40 nsec-es memória chipet? 27. A 3-37 ( b ) ábrán a TMLlegalább 6 nsec. Van-e olyan chip, amelyben ez negatív? Más szavakkal: Tudja-e a CPU-t érvényesíteni MREQ-t mielőtt a cím biztos? Miért, vagy miért nem? 28. Tegyük fel, hogy a 3-41-es ábra átalakítása a 3-37-es ábra buszán történik. Mennyivel nagyobb sávszélesség szükséges az egyedüli átvitelek esetében? Most tegyük fel, hogy a busz 32 bites. Válaszoljon ismét a kérdésre! 29. Mutassa meg a 3-38 -as ábra címeinek átviteli idejét, mint TA1 és TA2, és MREQ átviteli idejét, mint TMREQ1és TMREQ2és így tovább! Írjon le minden egyenlőtlenséget! 30. A legtöbb 32 bites busz engedélyezi a 16 bites írás-olvasást. Van valami kétsége, hogy hová tegye az adatot? Beszélje meg! 31. Több CPU-nak speciális busz ciklus típusa van a megszakítás fogadáshoz. Miért? 32. Egy 10MHz-es PC / AT-nek négy áramkörre van szüksége, hogy elolvasson egy szót. Mekkora busz sávszélességet használ fel a CPU? 33. Egy 32 bites CPU A2-A31címekkel, minden memóriacímet elfoglal. A szavak 4 byte-tal vannak címezve, és a fél szavakat páros byte-okhoz kell címezni. A byte-ok bárhol lehetnek. Hány szabályos kombináció van a memóriaolvasáshoz, és hány láb kell hozzájuk? Adjon két választ és mindegyikhez egy esetet. 34. Miért nem lehet a Pentium II 32 bites PCI busszal dolgozni anélkül, hogy vesztene a funkcionalitásából? Más számítógépek 64 bites adatbusszal tudnak dolgozni 32 bites, 16 bites és 8 bites adatátvitellel. 35. A CPU-nak 1 és 2 szintű cache-ja (gyorsítótára) van, 5 és 10 nsec-es elérési idővel. A fő memória elérési ideje 50 nsec. Mi az átlagos elérési idő, ha 20% 1 szintű és 60% 2. szintű. 36. Valószínűnek tartja-e, hogy egy kis picoJava II beágyazott rendszer egy 8255A chipet használ? ***[202-205] 202. oldal A digitális logika szintje 3. fejezet 37. Számolja ki egy VGA (648 x 480) true-color, 30 frames/sec (képkocka/másodperc) sebességű filmhez szükséges bus sávszélességét. Feltételezd, hogy az adatnak kétszer kell áthaladnia a bus-on; egyszer a CD-ROM-tól a memóriába és egyszer a memóriától a képernyőre. 38. Mit gondolsz, melyik Pentium II. jel vezérli a PCI bus FRAME# sorát? 39. A 3-53-as ábra jelei közül melyik nem feltétlenül fontos a bus protokoll működéséhez? 40. Egy számítógépnek olyan utasításai vannak, amelyek mindegyike 2 bus ciklust igényel, egyet az utasítás és egyet az adat megszerzéséhez. Mindegyik bus ciklus 250 nsec.-ig tart, és mindegyik utasítás 500 nsec.-ig. (azaz, a belső feldolgozási idő elhanyagolható). A számítógépnek van egy lemeze is 16512 byte szektorral track-enként. A lemez forgási ideje 8,092 msec. A normális sebesség hány %-ra van a számítógép lelassulva a DMA átvitel alatt, ha minden egyes átvitel egy bus ciklusig tart? Vegyél figyelembe két esetet: 8 bites bus átvitelt, és 16 bites bus átvitelt. 41. A maximális hasznos terhelése egy nem egyidejű (isochronous) adatcsomagnak az USB buson 1023 byte. Feltételezve, hogy az eszköz esetleg csak egy adatcsomagot küld frame-enként, mi a maximális sávszélesség egy egyszerű nem egyidejű eszközhöz? 42. Mi lenne az eredménye egy harmadik bemeneti vonal hozzáadásának a 3-57(b) ábra PIO-ját kiválasztó NAND kapuhoz, ha ez az új vonal az A13-hoz van csatlakoztatva? 43. Írj egy programot, ami szimulálja két bemeneti NAND kapu m x n sorának viselkedését. Ennek az áramkörnek, ami egy chipen van, j bemeneti pin-jei és k kimeneti pin-jei vannak. A j, k, m és n értékei a szimuláció fordítás-idő paraméterei. A programnak úgy kell indulnia, hogy egy ?elektromos vezeték-listát? olvas, minden vezetékből, amelyik megad egy bemenetet és egy kimenetet. Egy bemenet vagy egy a j bemeneti pin-ek közül, vagy egy kimenet valamely NAND kapuhoz. A kimenet vagy egy a k kimeneti pin-ekből, vagy egy bemenet valamely NAND kapuhoz. A nem használt bemenetetek logikailag 1-esek. A vezetéklistában való olvasás után a programnak ki kellene nyomtatnia a kimenetet mindegyik 2jlehetséges bemenethez. A gate array chipek, mint ez, széleskörűen használtak egyéni áramkörök elhelyezéséhez egy chipen, mert a munka legtöbbje (rétegződik a gate array a chipen) független az áramkör végrehajtódásától. Csak az elektromos vezeték jellegzetes minden konstrukcióra. 44. Írj egy programot, ami két tetszőleges Boolean kifejezésből olvas és lássa, ha ugyanazt a funkciót jelöli. A bemeneti nyelvnek tartalmaznia kell egyszerű betűket, Boolean variánsokat, az AND, OR és NOR operandusokat és zárójeleket. Mindegyik kifejezésnek egy bemeneti vonalra kell illeszkednie. A programnak ki kell számolnia az igaz táblákat minden funkcióhoz, és össze kell hasonlítania őket. 45. Írj egy programot, ami egy Boolean kifejezés-gyűjteményben olvas és kiszámolja azokat a 24 x 50 ?es és 50 x 60 ?as cimkéket, amelyek ahhoz szükségesek, hogy végrehajthassa őket a 3-15 ?ös ábra PLA ?jával. A bemeneti nyelv ugyanaz legyen, mint az előző problémánál. Nyomtassa ki a cimkékat soros nyomtatón. 4
A digitális logika szintje felett a mikroarhitektura szintje van. Ennek a feladata végrehajtania a felette lévő ISA (Insturction Set Architecture / Utasításkészlet Arhitektura) szintet, ahogy ezt az 1-2-es ábra illusztrálja. A mikroarhitektura szintjének konstrukciója éppen annyira függ az ISA végrehajtásától, mint a számítógép árától és teljesítményének céljaitól. Számos modern ISA-nak, részleges RISC konstrukciók, vannak egyszerű utasításai, amik általában futtathatók egy egyszerű körciklusban. Az összetettebb ISA-k, mint a Pentium II, esetleg számos ciklust igényelnek egy egyszerű utasításvégrehajtásához. Egy utasítás végrehajtása esetleg az operandusok memóriabeli elhelyezkedését, azok olvasását és az eredmények visszamentését igényeli a memóriába. Az operációk folytatása egy egyszerű utasításon belül gyakran vezet másféle úton a vezérléshez, mint az egyszerű ISA-k esetében. 4.1 Egy példa mikroarhitektura Ideálisan, a mikroarhitektura vázlatainak általános alapjainak megmagyarázásával szeretnénk bemutatni ezt a témát. Sajnos nincsenek általános alapok, mindegyik speciális eset. Következésképpen, ehelyett meg fogunk vitatni egy részletes példát. A példa ISA-nkhoz a Java virtuális gép egy részhalmazát választottuk, ahogy az 1-es fejezetben ígértük. Ez a téma csak teljes utasításokat tartalmaz, így IJVM -nek neveztük el. Tárgyalni fogjuk az egész JVM-et az 5. fejezetben. A mikroarhitektura tetejének leírásából indulunk ki, amiből végrehajtjuk az IJVM-et. Az IJVM-nek néhány viszonylag összetett utasítása van. Sok hasonló arhitektura sokszor a mikroprogramozáson keresztül lett végrehajtva, ahogy ezt az 1. fejezetben tárgyaltuk. Habár az IJVM kicsi, jó kiindulási pont az utasítások vezérléséhez és szekvenciálásához. A mikroarhitekturánk tartalmazni fog egy mikroprogramot (a ROM-ban), aminek feladata IJVM utasításokat szerezni, dekódolni és futtatni. Nem tudjuk használni a Sun JVM fordítót a mikroprogramhoz, mert szükségünk van egy apró mikroprogramra, ami hatásosan vezérli az egyéni kapukat az aktuális hardverben. Ellentétben, a Sun JVM fordító C-ben volt írva a mozgathatóság miatt, és nem tudja olyan részletességgel kezelni a hardvert, mint amire nekünk szükségünk van. Mióta az aktuális hardver csak a 3. témában leírt alapkomponensekből használt elemeket, elméletben, e téma teljes megértése után az olvasónak képesnek kellene lennie elmenni, venni egy nagy táskányi tranzisztort és megépíteni a JVM gép ezen részét. Azok a tanulók, akik sikeresen teljesítik ezt a feladatot, extra kreditet kapnak (és egy teljes pszichiátriai vizsgálatot). A mikroarhitektura vázlatához megfelelő model az, hogy úgy gondoljunk a konstrukcióra, mint egy programozási problémára, ahol minden utasítás az ISA szintjén egy funkció, amit egy főprogram meghív. Ebben a modelben a főprogram egy egyszerű, vég nélküli kör, ami meghatározza a segítségül hívandó funkciót, meghívja a funkciót, majd az egészet újrakezdi, nagyon hasonlóan a 2-3-as ábrához. A mikroprogramnak van egy változó csoportja, amit a gép state -jének neveznek, ami minden funkció számára hozzáférhető. A state képzése közben minden funkció legalább néhányat megváltoztat a változókból. Például a Program Counter (PC) a state része. Ez jelöli a következő végrehajtandó funkciót (úgymint az ISA utasítás) tartalmazó memóriahelyet. Minden egyes utasítás végrehajtása alatt a PC előrehaladott, hogy a következő végrehajtandó utasításra mutasson. Az IJVM utasítások rövidek és frissek. Mindegyik utasításnak van néhány mezője, általában egy vagy kettő, amelyek mindegyikének van valami speciális jelentősége. Minden utasítás első mezője az opcode (rövidítése az operációs kód nak(operation code)), ami azonosítja az utasítást, megmondja, hogy ez egy ADD, vagy egy BRANCH, vagy valami más. Számos utasításnak van egy további mezője, ami az operandumot határozza meg. Például az utasítások, amik hozzáférnek egy helyi változóhoz, igényelnek egy mezőt, ami megmondja melyik változó. A végrehajtás ezen modelje, néha fetch-execute ciklus nak nevezik, hasznos az összefoglalásban és esetleg a végrehajtás alapja is lehet az ISA-k számára, mint az IJVM, aminek összetett utasításai vannak. Az alábbiakban le fogjuk írni, hogy működik ez, hogy néz ki a mikroarhitektura, és hogy vezérlik ezt a mikroutasítások, amelyek mindegyike vezérli az adatösvényt 1 ciklusig. Együtt a mikroutasítások listája alkotja a mikroprogramot, amit részletesen fogunk bemutatni és tárgyalni. 4.1.1 The Data Path (Az adat ösvény)
A data path a CPU azon része, amely az ALU-t tartalmazza, annak bemeneteit és kimeneteit. A példa mikroarhitekturánk adat ösvényét a 4-1-es ábra mutatja. Amíg ez gondosan optimizálva lett IJVM programok fordítására, közel hasonló a legtöbb gépben használt adat ösvényhez. Ez 32 bit-es regiszterek egy egész sorát tartalmazza, amikhez mi szimbolikus neveket rendeltünk, mint a PC, SP, és az MDR. Habár ezen nevek közül néhány gyakori, fontos megérteni, hogy ezek a regiszterek csak a mikroarhitektura szintjén elérhetőek (a mikroprogram számára). Azért kapják ezeket a neveket, mert általában felvesznek egy értéket az ISA szint arhitekturában lévő ugyanazon név változatának megfelelően. A legtöbb regiszter tud?.
A B 6 N / ALU Z / 2
4.1 Ebben a témában használt példa arhitektura adat ösvénye ***[206-209] Nem érkezett meg. Ginter Gábor: h938689 ***[210-213] Nem érkezett meg. Kozák Rolland: h735077 ***[214-217] 214.o. ...cím sorrend (kivéve BRANCH-ok);a mikroinstrukciok nem.A 2-3.ábrán jelölt program számláló növelése kifejezi a bevégzési instrukció hiányát,a jelenlegi instrukció után,ami a memóriában jelenlévőt követi.A mikroprgramok ennél nagyobb rugalmasságot követelnek(mivel a mikroprogram sorozatoknak rövidnek kell lenniük),ezért általában nem birtokolják ezt a sajátságot. Ehelyett mindegyik mikroinstrukció félreérthetetlenül részletezi az utódját. 215.o. Mivel a control store mvködési szempontból egy (csak olvasható) memória ezért szüksége van saját címjegyzékre és saját memória-adatok jegyzékre.Viszont nem szükségesek neki író és olvasó jelek,mert folyamatosan olvassák.Innentől fogva a control store névjegyzékét MPC-nek(Microprogram Counter=Mikroprgram Számláló) fogjuk hívni.Ez a név elég ironikus ,mivel a benne levő elhelyezések kétséget nem ismerően rendszertelenek,tehát a megállapodás a számlálás elnevezésre nem kézenfekvő(de kik vagyunk mi ,hogy a tradíciókkal vitázzunk?).A memória-adat jegyzéket MIR-nek(Microinstuction Register=Mikroinstrukciós Jegyzék) hivjuk.A funkciója,hogy megtartja a folyamatban levő mikroinstrukciókat,melyek bit-jei vezérlik az irányító jeleket ,amik az adat útvonalat mvködtetik.A MIR regiszter a 4-6.ábrán feltartja ugyanazt a hat csoportot,mint a 4-5. ábrán.Az ADDR és J (JAM) csoportok irányítják a soron következő mikroinstrukciók kiválasztását és rövidesen szó lesz róluk.Az ALU csoport tartalmazza a 8 bitet,ami kiválasztja az ALU funkciókat és vezérli a shiftert.A C bitek egyéni regisztereket hoznak létre,hogy feltöltsék az ALU kivezetést a C bus-ról.Az M bit-ek pedig a memória operációkat irányítják.Végül az utolsó 4 bit a dekódert vezérli,ami eldönti, hogy mi megy a B bus-ra.Ebben az esetben egy 4-16-ig terjedő szabványos dekódert választottunk,noha a megkövetelt lehetőségek száma csak 9.Egy finomabban összehangolt tervezésben egy 4-9-ig dekóder lenne használható. A kérdés itt az,hogy melyik éri meg jobban?Egy szabványos áramkör használata az általanos áramkörökből vagy egy dirrekt ehhez rendelt?A szabványosé egyszervbb és valószínvtlenebb,hogy baj lenne vele.Az ehhez tervezett saját kevesebb chip területet követel,de több idő megtervezni és lehet,hogy rosszul mvködne.A most következőkben pedig a 4-6. ábra leírása következik.Minden időtartamciklus kezdeténél(az eső szélénél az időtartamnak a 4-3.ábrán) a MIR feltöltődik a word-ből,amire az MPC mutat rá a control store-ban.A MIR töltési idejét (delta)w-vel jelöljük.Ha valaki szubciklusokban gondolkozik,akkor mondhatjuk ,hogy a MIR-t az első alatt töltik fel.Ha egyszer egy mikroinstrukciót felállítanak a MIR-ben ,a változatos jelek kiterjednek az adat útvonalra.Egy regiszter van kiadva a B bus-ra ,az ALU tudja melyik operációt kell elvégezni,ezért rengeteg aktivitás észlelhető kint.Ez a második szubciklus.Még egy (delta)w+(delta)x intervallum a ciklus kezdetétől és az ALU bemenetek stabilisak.Még egy (delta)y-nal később minden lerendeződik az ALU,N,Z és a shifter kimenetek stabilak.Az N és Z értékek ekkor elmentődnek egy 1-bites flip-flop párban.Ezek a bitek,mint az összes regiszter,mely a C bus-ról és a memóriából töltődik le,elmentődik a növekvő sarkánál az időtartamnak,közel az adat útvonal ciklus végéhez.Az ALU kimenet nincs csatlakoztatva cak betáplálva a shifter-ekbe.Az ALU és a shifter aktivitás a 3. szubciklusban történik.Egy pótlólagos (delta)z intervallum után a shifter eléri a regisztereket a C bus-on keresztül.Ekkor a regiszterek feltölthetők a ciklus végének a közelében (a növekvő szélénél az időtartampulzusnak a 4-3. ábrán).A 4. szubciklus a regiszterek és az N és Z flip-flop-ok töltéséből áll.Ez terminál egy kicsivel az időtartam növekvő széle után,amikor az összes eredményt elmentették,az előző memória operációk elérhetők és az MPC -t feltöltötték.Ez a folyamat folytatódik és folytatódik míg valaki meg nem unja és kikapcsolja a gépet. 216.o. Párhuzamosan kapcsolva az adat útvonal vezetésével ,a mikroprogramnak el kell döntenie,hogy melyik mikroutasítást hajtsa végre következőnek,mivel nem olyan sorrendben futnak,ahogy feltüntették őket a control store-on.A következő mikroinstrukció címeinek kalkulációja kezdődik,miután a MIR feltöltődik és stabilis.Először a 3 bit-es NEXT_ADDRESS(következő cím) mezőt lemásolják az MPC -be.Amíg ez a másolat a helyére kerül,addig a JAM mezőt megszemlélik.Ha az értéke 000,akkor semmi más sem történik;amikor a NEXT_ADDRESS másolása bevégződik ,az MPC rámutat a következő mikroinstrukcióra.Ha egy vagy több a JAM bitek közül 1,akkor több munka szükséges.Ha a JAMN elhelyeződik,az 1 bites N flip-flop 0RED az MPC high-order(magasrendv) bitjében.Hasonlóan ha JAMZ elhelyeződik,akkor az 1 bites Z flip-flop 0RED azon a helyen.Ha mindkettő elhelyeződik,mindkettő 0RED azon a helyen.Az N és Z flip-flopok szükségességének oka a következő:az időtartamnak a növekvő széle után(amíg az óra magasan van) a B bus többé nem vezérelt,egyszóval az ALU kivezetések többé nem biztos,hogy helyesek.Elmentve az ALU státuszt N-be és Z-be,lehetővé teszi a helyes adatokhoz jutást és az MPC számítási eredményei stabilak,mindegy mi történik az ALU körül.A 4-6. ábrán a logika az ,ami 'high bit' névre keresztelheti ezt a kakulációt.A Boolean funkció,amit kiszámít a következő: F=(JAMZ és Z) vagy (JAMN és N) vagy NEXT_ADDRESS[8] Vegyük észre,hogy minden esetben MPC-nek csak 1 vagy 2 értéke lehetséges: 1.NEXT_ADDRESS értéke. 2.NEXT_ADDRESS értéke a high-order 0RED bittel,ami 1. Nem létezik más lehetőség.Ha a NEXT_ADDRESS high-order bit-je már volt 1,akkor a JAMN vagy JAMZ használata fölösleges.Vegyük észre,hogy amikor a JAM bitek zéró értékvek ,a következő végrehajtandó mikroinstrukció címe a 9 bit szám a NEXT_ADDRESS mezejében.Amikor JAMN vagy JAMZ 1,akkor két potenciális utód létezik:NEXT_ADDRESS és NEXT_ADDRESS 0RED 0x100-zal(feltéve,hogy NEXT_ADDRESS < vagy =,mint 0xFF).(0x mutatja,hogy a következő szám hexadecimális.)Ez a pont illusztrálva a 4-7.ábrán látható.A folyamatban lévő mikroinstrukciók a 0x75 helyen a NEXT_ADDRESS=0x92 -t birtokolják és JAMZ 1-re van állítva.Tehát a következő mikroinstrukció címe az előző ALU operáción raktározott Z bittől függ. Ha a Z bit 0,akkor a következő mikroinstrukció a 0x92 -ből jön.Ha 1,akkor 0x192- ből jön.A harmadik bit a JAM mezőn a JMPC.{Ha el van helyezve,a 8 MBR bit 0RED a NEXT_ADDRESS mező 8 low-order(alacsonyrendv) bitjével,melyek a folyamatban levő mikroinstrukcióból jönnek.Az eredményt elküldik az MPC-nek.A 4-6.ábrán levő 'O'-val címzett doboz feladata,hogy készít egy OR-t(vagy-ot) MBR-nek a NEXT_ ADDRESS-szel ha JMPC 1,de csak átugrik NEXT_ADDRESS-en,át az MPC-n ha JMPC 0. Ha JMPC 1,akkor a NEXT_ADDRESS low-order 8bit-je egyértelmven zéró.A high-order bit lehet 0 vagy 1,tehát a NEXT_ADDRESS értéke a JMPC-vel használva magától értetődően 0x000 vagy 0x100.A 0x000 és a 0x100 használatát később tárgyaljuk. 217.o. A képesség,hogy OR-t használhatunk MBR-nél a NEXT_ADDRESS-nél és raktározhatjuk az eredményt az MPC-ben lehetővé teszi a megfelelő kivitelezését egy sokirányú ágazatnak(jump=ugrás).Vegyük észre,hogy mind a 256 cím egyedül az MBR-ben levő bitek által van meghatározva.A tipikus használatban MBR tartalmaz egy opcode-ot egyszóval a JMPC használata egy egyedi szelekciót fog eredményezni a következő mikroinstrukciónak,amit végrehajtanak minden lehetséges opcode-ért.A módszer hasznos ha gyorsan,közvetlenül akarjuk ágaztatni a funkcióba azt,ami megfelel az éppen felvettopcode-hoz.A gép időszámlálását kritikus megérteni abból a szempontból,hogy mi fog következni,ezért talán érdemes megismételni mégegyszer. Ezt szubciklusos időintervallumokban csináljuk meg,ezt könnyv láttatni,de az egyetlen érdekesség a csökkenő szél ,amely a ciklust indítja,és az emelkedő szél,mely betölti a regisztereket és az N és Z flip-flop-okat.Kérlek nézz mégegyszer az 4-3.ábrára.Az 1.szubciklus alatt az időtartam leeső szélének kezdeményezésére MIR feltöltődik a címről,ami MPC-ben tárolódik.A 2.szubciklus alatt a MIR jelek kiáramlanak a B bus pedig feltöltődik a választott regiszter- ről.A 3.szubciklus alatt az ALU és a shifter dolgozik és produkál egystabilis eredményt.A 4.szubciklus alatt a C bus , a memória bus-ok és az ALU értékek stabilizálódnak.Az időtartam növekvő szélénél a regiszterek feltöltődnek a C bus-ról,feltöltődnek N és Z flip-flop-ok,és az MBR és az MDR megkapja a végeredményeit a memória operációból,ami az előző adat ciklus útvonal végén indult(ha van ilyen).Amint az MBR elérhető,MPC feltöltődik felkészülve a következő mikroinstrukcióra.+gy MPC megkapja az értékét valamikor az intervallum közepén,amikor az időtartam magasan van,de csak miután MBR és MDR készen állnak. Ez lehet szint által előidézett(inkább,mint szél által előidézett),vagy szél által előidézett lefixált késleltetés az időtartam növekvő széle után.Az egyetlen hiba,hogy MPC nincs feltöltve míg a regiszterek készen állnak(MBR,N és Z függvénye).Amint az időtartam lezuhan,MPC tudja címezni a control store-t és egy új ciklus kezdődhet.vegyük észre ,hogy mindegyik ciklus önmagát tartalmazza. Meghatározza,hogy mi megy a B bus-ra,mit csinálnak az ALU és a shifterek, hol van raktározva a C bus,és végül,hogy mi legyen a következő MPC értéke. Érdemes a 4-6. ábráról egy utolsó észrevételt tenni.Eddig úgy vettük MPC-t , mint egy megfelelő regisztert,9 bit raktér kapacitással,ami feltöltődik mialatt az időtartam... ***[218-221] Nem érkezett meg. Földesi Attila: h938352 ***[] ***[238-241] Dani Andrea KPM I. Következőnek tekintsük az ILOAD utasítást. Ennél az utasításnál is egy byte követi az utasítás azonosítóját (opcode),mint azt a 4-19 (a) ábra mutatja, de ez a byte egy ( előjel nélküli) index, amely azt a szót azonosítja a lokális változók memoriaterületén, amelyet a verem tetejére kell tenni (push onto the stack). Mivel csak 1 byte áll rendelkezésre, csak 28=256 szót lehet megkülönböztetni (elérni), mégpedig az első 256 szót a lokális változók memeóriaterületén. Az ILOAD utasítás megkövetel mind egy olvasást (read) ( hogy megkapják a szót) és egy írást ( Write) ( hogy a verem tetejére tudjuk tenni azt) Mindazonáltal, hogy az olvasandó címet meghatározzuk, az eltolást (offset), amely az MBR-ben található, hozzá kell adnunk az LV tartalmához. Mivel mind az MBR mind az LV csak a B buszon keresztül érhető el, ezért LV-t először H- ba másoljuk (iload 1-ben ), majd hozzáadjuk MBR-et. Ezen összeadás eredménye ezután MAR-ba másolódik és megkezdődhet a read (iload 2-ben ). 4-19. (a) 1 byte-os indexű ILOAD. (b) 2 byte-os indexű WIDE ILOAD Megjegyzendő azonban, hogy az MBR-nek indexként való használata kissé különbözik attól, amit a BIPUSH-nál láthattunk, ahol az előjelesen volt értelmezve. Index esetén az offset mindig pozitív, tehát az 1 byte-os offset-et egy előjel nélküli egészként kell kezelni, ellentétben a BIPUSH-al, ahol az egy előjeles 8 bites egészként volt interpretálva: Az interface az MBR-től a B busz felé nagyon gondosan lett megtervezve, hogy mindkét művelet lehetséges legyen . A BIPUSH esetén ( előjeles 8 bites egész ) a megfelelő művelet az elöjel?kiterjesztés, azaz a ?legbaloldalibb? bitje az 1 byte-os MBR-nek bemásolódik a B busz felső 24 bitjébe. Az ILOAD esetén ( előjel nélküli 8 bites egész), a megfelelő művelet a zéró-kitöltés ( zero ? fill ) Itt a B busz felső 24 bitje egyszerűen nullákkal van feltöltve. Ezek a műveletek különböző jelekkel vannak megkülönböztetve, amelyek jelzik, hogy melyiket kell végrehajtani ( ld. a 4-6 ábrát ). A microcode- ban ezt úgy jelöljük, hogy MBR-t írunk ( előjeles esetben, mint pl a BIPUSH 3 ) vagy MBRU-t (előjeltelen esetben, mint az iload 2 ). Míg memóriára várunk, amely tárolja az operandust ( iload 3-ban), SP értéke megnő eggyel hogy helyesen tartalmazza az eredményt, az új veremtetőt (Top of Stack, TOS). Ez az érték is MAR-ba másolódik előkészületként ahhoz, hogy az operandust kiírhassuk az új veremtetőbe. A PC-t újra meg kell növelni hogy behozhassuk a következő utasítás kódját (iload 4- ben ). Végül MDR értéke TOS-be másolódik hogy mutassa az új veremtető értékét (iload 5-ben ). ISTORE az inverz művelete ILOAD-nak, azaz egy szót eltávolítunk a verem tetejéről és eltároljuk azon területen, amit az LV és az utasítás indexének az összege határoz meg. Ugyanazt a formátumot használja, mint az ILOAD, amelyet a 4-19 (a) ábrán láthatunk, azzal a különbséggel, hogy az opcode 0 x36-os méretű a 0x15 helyett. Ez az operáció kissé különbözik attól, mint amit várnánk, mert a verem tetején levő szó már ismert (TOS-ben található) így egyből el lehet tárolni. Mindazonáltal az új veremtető-szót el kell hozni. Így mind egy read mind egy write szükséges, de ezek akármilyen sorrendben végrehajthatók ( vagy akár még párhuzamosan is, ha ez lehetséges ). Mind az ILOAD, mind az ISTORE korlátozva vannak azáltal, hogy csak az első 256 lokális változót tudják elérni.. Míg a legtöbb program esetén mindössze ennyi memóriaterületre van szükség a lokális változók részére, természetesen szükséges lehet elérni egy változót a lokális változók (tetszőlegesen nagy ) területén, akárhol is helyezkedik el. Ennek megvalósításához az IJVM ugyanazt a mechanizmust használja, mint a JVM: egy speciális WIDE nevű opcode-t, amelyett egy prefix byte- ként foghatunk fel és amely közvetlenül az ILOAD vagy ISTORE utasítások kódja előtt áll. Ha ez az eset következik be, akkor az ILOAD és az ISTORE utasítások definiciója módosul ; 16 bites index követi az utasításkódot a 8 bites helyett, mint a 4-19 (b) ábra mutatja. A WIDE a szokásos módon dekódolódik, amely a wide 1-hez vezet, amely kezeli a WIDE opcode-t. Bár a ?kiszélesítendő? opcode (opcode to Widen) már közvetlenül elérhető az MBR-ben, wide 1 elhozza az opcode utáni első byte-ot, mert a mikroprogram logikája mindig elvárja azt, hogy ott legyen. Ezután egy második többutas elágazás történik, ezúttal a WIDE-ot követő byte-ot használva elküldésre. Mindazonáltal, mivel a WIDE ILOAD különböző mikrokódot követel mint az ILOAD és a WIDE ISTORE különböző mikrokódot követel mint az ISTORE stb. ez a második többutas ág nem használhatja az opcode-t mint célterület címet, mint ahogy azt a Main 1 teszi. 4-20. ábra Ez az ILOAD és a WIDE ILOAD kezdeti mikroutasítás-sorozata. A címek példaként állnak. Ehelyett a wide 1 OR művelettel összekapcsolja 0 x 100- t az opcode-al mialatt az MPC ?be teszi. Eredmény képpen a WIDE ILOAD megvalósítása 0 x 115 ?ön kezdődik ( 0 x 15 helyett ), a WIDE ISTORE megvalósítása pedig a 0 x 136 ?on kezdődik ( 0 x 36 helyett ) stb. Ez alapján minden WIDE utasításkód 256-tal (azaz 0 x 100-zal ) magasabb címen kezdődik a control store-ban, magasabban mint a megfelelőp reguláris opcode. A mikroutasítások kezdeti sorozata, mind az ILOAD-ra, mind a WIDE ILOAD-ra a 4-20-as ábrán láthatók. Amint a kód elér a WIDE ILOAD megvalósításához ( 0 x 115 ) a kód a normális ILOAD ?tól mindössze annyiban különbözik, hogy az indexen két egymás utáni index byte összefűzésével kell megkonstruálni, ahelyett, hogy csak egy byte-on végeznénk ?előjel ? kiterjesztést?. Az összefűzés és a rákövetkező összeadás műveleteket részletekben kell kell végrehajtani, először az INDEX BYTE 1-et H-ba másolva és 8 bittel balra tolva (shift ? elve ). Mivel az index előjel nélküli egészet reprezentál, az MBR-en nulla ? feltöltést hajtunk végre, MBRU-t használva. Ezután az index második byte-ját hozzáadjuk ( az összeadás itt megfelel a konkatenáció (összefűzés) műveletének , mivel a H alsó byte-ja nulla, így garantálva van, hogy nincs átvitel (carry) a byte-ok között) és az eredmény H-ban marad. Innentől kezdve a művelet pontosan ugyanúgy folytatódhat, mint ha egy standard ILOAD-ról lenne szó.. Ahelyett, hogy duplán végrehajtanánk az ILOAD záró utasításait (iload 3-tól iload 5-ig) egyszerűen leágazunk wide ?iload 4 ?től az iload 3-hoz. Figyeljük meg azonban, hogy PC-t kétszer kell megnövelnünk az utasítás végrehajtása során, hogy az a következő utasítás kódjára mutathasson. Az ILOAD megnöveli azt egyszer ; a WIDE ?ILOAD is megnöveli egyszer. Ugyanez a szituáció a WIDE ? ISTORE-al, miután az első 4 mikroutasítás végrehajtódik ( wide_istore 1-től 4-ig ) a folytatás ugyanaz a sorozat, mint az ISTORE első két utasítása után, így a wide-istore 4 leágazik az istore 3-hoz. A következő példa, amit tekinteni fogunk az LDC_W utasítás. Ennek a kódja (opcode) két dologban is különbözik az ILOAD-étól. Először is egy 16 bites előjel nélküli offset-je van ( mint az ILOAD wide változatának): Másodszor: a CPP-vel van leindexelve LV helyett, mivel a rendeltetése az, hogy a konstans ? készletből olvasson a lokális változó keret helyett. (Igazából az LDC_W-nek van egy rövid változata (LDC), de ezt nem vettük bele IJVM-be, mivel a hosszú forma magába foglalja a rövid forma összes lehetséges variációját és csak 3 byte-ot foglal a 2 helyett.) Az IINC utasítás az egyetlen IJVM utasítás az ISTORE-on kívül, amely egy lokális változót modósítani tud. Ezt úgy teszi meg, hogy két operandusa van, mindegyik 1 byte hosszú: ld. a 4-21 ábrát. 4-21. ábra Az IINC utasításnak két különböző operandusa van. Az IINC utasítás az INDEX-ben határozza meg az offset-et a lokális változók memóriaterületének kezdetéhez képest. Kiolvassa azt a változót, megnöveli az értékét CONST-al, amelynek értékét az utasítás tartalmazza, és eltárolja az eredményt ugyanarra a helyre. Megjegyezzük, hogy ez az utasítás negatív értékkel is ?megnövelhető?, azaz a CONST egy 8 bites előjeles egészt reprezentál a ?128 - +127 intervallumból. A teljes változatú JVM-ben található egy WIDE verziója is az IINC-nek, ahol minden operandus 2 byte hosszú. Most érkeztünk el IJVM első elágazási utasításához, a GOTO ?hoz. Az egyedüli célja ennek az utasításnak, hogy megváltoztassa a PC értékét, hogy a következő végrehajtandó IJVM utasítás az legyen, amelynek értékét a 16 bites ( előjeles ) offset és az elágazási utasítás címének összeadásával számítunk ki. A komplikáció itt az, hogy az offset ahhoz képest relativ eltolást ad meg, amennyi a PC értéke volt, az utasítás dekodolásának kezdetén, és nem ahhoz képest, amennyi a PC értéke a 2 byte-os offset elhozása után lett. Hogy ezt világossá tegyük, 4-22 (a) ábrán azt a helyzetet láthatjuk, amely a Main 1 kezdetén áll fenn. Az utasítás kódja már MBR-ben van, de PC még nem lett megnövelve.. A 4-22 (b) ábrán láthatjuk a helyzetet a goto 1 kezdetén. Eddigre a PC már meg lett növelve és az első offset byte már el lett hozva MBR-be. Egy mikroutasítással később a 4-22 (c) ábrán látható helyzethez jutunk, amelyben a régi PC érték, amely az opcode-ra mutat, el lett mentve OPC-be. Erre az értékre azért van szükség, mert az IJVM GOTO utasításának offset-je ehhez képest relativ és nem az akkori PC értékhez . Valójában ez okból volt szükségünk az OPC regiszterre elsősorban. 4-22. ábra A különféle mikroutasítások kezdeti állapota. (a) Main1. (b) goto1. (c) goto2. (d) goto3. (e) goto4. A mikroutasítás goto 2-nél kezdi meg a második offset byte elhozását a 4-22 (d) ábrán látható helyzetet eredményezve a goto 3 kezdetén. Miután az első offset byte 8 bittel balra lett shift-elve és H-ban másolódott elérkezünk goto 4 hez és a 4-22 (e) ábrán levő helyzethez. Ekkor a következő a helyzet: az első offset byte balra lett tolva H-ba, a második offset byte MBR-ben az alap pedig OPC-ben . Megkonstruálva a 16 bit-es offset-et H-ban és hozzáadva azt az alaphoz megkapjuk a goto 5-ben PC-be teendő új címet. Vigyázzunk: goto 4 ?ben MBRU-t használtunk MBR helyett mivel nem akartunk előjel kiterjesztést a második byt-on . A 16 bites offset valójában a két fél OR művelettel való összekapcsolásával jön létre. Végezetül el kell hoznunk a következő opcode.t mielőtt visszatérnénk Main 1-hez, mivel a kód ott feltételezi, hogy a következő opcode MBR-ben van. Az utolsó kör, goto 6 szükséges tehát , mert az adatot a memóriából el kell hozni, hogy időben mejelenjen MBR-ben a Main 1 alatt . Az IJVM GOTO utasításának offset-jei előjeles 16 bites egészek, amelynek minimális értéke -32768 és maximális értéke + 32767. Ez azt jelenti, hogy két ennél egymástól távolabbi cím közötti ugrás nem lehetséges . |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Webmester:webmaster@inf.u-szeged.hu |