8. Számítógépek (IBM - PC).
- Részlet egyetemi jegyzetből -

8.1. Bevezetés

Ebben a fejezetben számítógépekről lesz szó, vagyis a legáltalánosabb digitális gépekről, amelyek rendkívül széles körben használhatók. Célszerűségi okokból azonban nem általánosságban beszélünk róluk, hanem nagyon tudatosan kiválasztottunk egy ún. professzionális személyi számítógépet, az IBM PC-t. (International Business Machines, - Personal Computer)

Választásunkat elsősorban az igazolhatja, hogy napjainkban ez a gép a legelterjedtebb, - igaz nem csupán önálló alkalmazásokban, hanem hálózatok termináljaként is. Hazai viszonyaink között ez a gép amolyan "mădchen für alles", vagyis mindenre felhasználható kis cseléd. Ugyanakkor azt is el kell mondanunk, hogy vannak sokkal ügyesebben tervezett gépek, amelyek pedagógiai értéke is jelentősebb.

Célunk ezen gép (egyedin túlmutató, minden gépre jellemző közös) funkcióinak számbavétele, megértése. Mindezt azonban nem abból a kiinduló pontból, hogy a számítógép univerzális "digit-rágcsáló", melynek egyik legfőbb feladata - kissé karikírozva - a legnagyobb prímszám keresése. A háttérben egy egészen más motívum munkálkodik: a számítógép arra a célra (is) szolgál, hogy vele méréseket vezéreljünk, a mérési eredményeket kiértékeljük. A modell-vasút vezérléstől a neurofiziológiai méréseken át az on-line Fourier-transzformációig terjedő sávot tekintjük meghatározónak. Másképp fogalmazva, a természettudományos-műszaki munkában szokásos méréstechnikai komputer alkalmazások támogatása a célunk.

Az eredeti PC-t, minden PC-k ősét 1980-ban tervezték. Ha a komputerek történetét elemezzük, akkor azt mondhatjuk, hogy egy komputer-év hozzávetőleg 10 emberévnek felel meg. Az IBM PC tehát manapság túlkoros Matuzsálemhez hasonlítható, amelyet csak a rendszeres fiatalítás, "szervátültetés" tart karban. Ennek a folyamatnak a legfontosabb mozgatói, nem feltétlenül fontossági sorrendben:

- a RAM és ROM memóriák kapacitásának növekedése, folyamatos árcsökkenésük mellett;

- a tömegtárolásra alkalmas ún. hard-diszkek tárolási kapacitásának és adatelérési sebességének növekedése, miközben 1 bitre jutó áruk folyamatosan csökkent;

- az egy chip-be integrálható áramköri elemek számának és működési sebességének drasztikus növekedése, a megbízhatóság fokozódása a gyártási költségek csökkenésével párhuzamosan;

- elképzelhetetlenül nagy mennyiségű, jól használható program létrejötte, amelyek törvényes, vagy illegális úton közkinccsé váltak.

A manapság elérhető IBM-PC-ék alig hasonlítanak őseikre, annyival "többet tudnak" az újak; - viszont elvben a legújabb gépen is futnak a legelső programok is. (Ezt szakmai zsargonban úgy mondják, hogy "felülről kompatibilis".) Fordítva persze már nem ez a helyzet, - de ez a konzervatív szemlélet és gyakorlat jelentősen megnöveli a géptípus élethosszát. Ugyanakkor magával hoz egy csomó felesleges koloncot, amelyet az újabb lehetőségek mellett is folyton figyelembe kell venni. (A mai PC természetesen arcán viseli ''ifjúkori bűneit".)

Az IBM - PC arculata sokat változott. A legelső gépek 180 kByte floppy diszk kapacitása helyett ma már gigabyte-okról beszélünk. A legelső konstrukció több tucat integrált áramkört tartalmazott, ma egy alaplapon 2 - 4 soklábú IC-t találunk és beszélnek már arról is, hogy az egy-chipes PC is itt dörömböl az ajtón. - Jócskán változott a gép alapsoftware-e is: a DOS 2.0 változata helyett ma már a DOS 7.0 használatos, persze mások mellett. - A monitor kezdetben csak karakterek megjelenítését szolgálta, mostanra kiszínesedett, felbontása is sokat javult és kifejezetten szép képeket is tud mutatni.

8.1.1. ábra

A PC felépítésének áttekintő vázlatát a 8.1.1. ábrán látjuk. A gép dobozában az ún. alaplapon kap helyet többek között a processzor és a RAM memória. Ehhez a laphoz csatlakoztathatók a diszk-kontrollerek, az adapterek, - illetve az interface-eken keresztül a külső perifériális eszközök. Általában a PC dobozában foglal helyet a HDD, FDD, CD-ROM olvasó is. (Az ábrák részben angol nyelvű könyvekből származnak. Sok kifejezést meghagytunk, mivel ezek a szakmai nyelvben így is elfogadottak, használatosak.)

A PC processzora természetesen sokat fejlődött. Erről a 8.1.1. Táblázatban látunk adatokat. (Az adatokat a későbbiekben értelmezzük.)

Hangsúlyozzuk, hogy a PC fejlődése ma is tart és nem látszanak még azok a fizikai-technikai-pénzügyi tényezők, melyek igazában korlátot jelentenének. A legfontosabb jellemzőkre külön is felhívjuk a figyelmet:

- óriásit növekedett az ún. órafrekvencia, mely a műveletvégzés sebességére utal;

- egyre "szélesebb" lett az adatbusz és a címbusz, így nagyobb memória címezhető és egyidejűleg sokkal több adat érhető el.

(Ugyanakkor furcsa paradoxon: most már nemcsak a tápegység zümmög, de külön hűtőventillátor kell a processzorra is, persze aminek surrogását a tápegység zaja elnyomja...)

Nagyon fontos tudatosítani, hogy a processzorok egymást követő típusai nem csak az elemi áramkörök működési sebességében és a párhuzamos cím-adat vezetékek számában különböznek. Ez csak a "nyers erő" alkalmazása lenne. - Legalább ennyire meghatározó, hogy összetett, "kifinomult", a működést gyorsító elvek is megjelentek a processzor hardware felépítésében (cache tároló, pipe-line, mikroprogramozott utasítások, stb).

 

Regiszter Címbusz Adatbusz
szélesség (bit)

Címezhető tartomány

Órafrekven cia (MHz)

Kivezetések száma

8088

16

20

8

1 MB

6-10

 

80188

16

20

8

1 MB

6-10

 

80186

16

20

16

1 MB

6-10

 

80286

16

24

16

16 MB

12-20

68

i386SX

32

24

16

16 MB

16-25

132

i386DX

32

32

32

4 GB

16-40

 

i486

32

32

32

4 GB

25-50

168

i486DX2

32

32

32

4 GB

50-100

 

Pentium

32

32

64

4 GB

60-266

273

8.1.1 Táblázat. A processzorok adatainak változásai az elmúlt 16 év során

A mai processzorok működésének két, nagyon különböző módja lehetséges: a reális és a védett (protected). Reális módban a memória helyeinek az ún. fizikai címzését egy viszonylag egyszerű módon számítjuk ki. A védett mód arra szolgál, hogy a processzor több feladattal tudjon foglalkozni, időosztásos rendszerben (OS/2, UNIX, NT, WINDOWS,...). Ilyenkor minden feladat egy időszeletet kap a vezérlő rendszertől.

Ennek az igen összetett feladatnak a megbízható működését egy bonyolult memória számítási és engedélyezési metódus biztosítja. A részletekkel e tantárgy keretében nem tudunk foglalkozni. - A továbbiak lényegében a reális működési módot tételezzük fel, minden elsősorban erre vonatkozik.

A 8.1.2. ábra kissé részletesebben mutatja az alaplemezt. A processzor - hagyományosan - két részből áll: a 80x86-os általános célú processzorból és a 80x87 jelzésű ún. aritmetika processzorból. (Természetesen a 80x86 is képes számolási műveletekre, azonban csak egészszámokon tud osztást vagy szorzást végezni. A lebegőpontos számok kezelése az aritmetika processzor joga és kötelessége. ) - A Pentiumon belül jelentős méretű "cache" található. Ez átmeneti tároló, amelyhez a hozzáférés sokkal gyorsabb, mint a RAM memóriához (10-20 ns, szemben a memória chipek 60-100 ns értékével). A cache olyan adatokat tárol, amelyekre a processzornak többször van szüksége. Ezt a cache vezérlő egység dönti el, illetve vezérli. - Az ábrán jelölt más egységekről később lesz szó.

 

A 8.1.3. ábrán a manapság szokásos ún. Neumann elvű digitális számítógép egy végtelenül leegyszerűsített vázlatát látjuk. (A Neumann elv egyszerű megfogalmazása: csak egyetlen - vagyis nem több/sok - processzor van benne, továbbá az adatok és utasítások keverve tárolódnak egyetlen memória-tömbben.) - A központi processzor elsőszámú feladata az, hogy végrehajtsa azokat az utasításokat, amelyeket a memóriából elővesz, és az eredményeket, - ha az utasítás ezt rendeli, - ismét a memóriába helyezze el. A processzor az "okos"; - az ész teljes egésze, vagy legalább a zöme az ő birtoka. Ebben található a centrális szerepkörű ALU (aritmetikai - logikai egység).

A processzor tartja a kapcsolatot az I/O egységekkel is. (Input/Output - bemenet/kimenet). Ezek közül a triviálisak: a billentyűzet, valamint a képernyő, másként a monitor. Közéjük sorolhatjuk azokat az egységeket is, mint a HDD vagy FDD. De ide tartozónak tekinthetünk például egy AD konvertert, digitális léptető motort, amelyik a mérőfejet viszi tovább egy újabb mérési pontba, stb. - A processzor szorgalmasan rágcsálja a programot ("digit crunching machine") és ebből csak a külvilág, a rendszerhez tartozó perifériális berendezések zökkentik ki azzal, hogy kiszolgálásukhoz megszakítást (interrupt) - vagyis processzor időt/törődést - kérnek. Az interrupt hatására a processzor abbahagyja a futó program végrehajtását, és arra részprogramra ugrik, amelyik kiszolgálást kért. Természetesen előzőleg elrakja mindazt az információt, amely ahhoz szükséges, hogy a megszakított programhoz vissza tudjon térni.

A továbbiakban az IBM-PC funkcionális blokkvázlatát rakjuk össze, mely a működés alapvonásait hivatott összefoglalni, interpretálni. Az eredményül kapott, a felrajzolt vázlat szerinti gép bizonyos értelemben fiktív, egyetlen konkrét gépre sem igaz, - de mégis mindegyikre jellemző. Ismerete nagyon fontos, mert csak a működés részleteinek tudásával lehet a gépet önállóan, a mérési feladathoz simulóan felhasználni.

8.2. A memória

A számítógép működése szempontjából legbutább részegységnek a memóriát kell tartanunk. Feladata rendkívül egyszerűen összfoglalható: minél gyorsabban el kell tennie adatokat (bit-kombinációkat), illetve azokat minél gyorsabban elő kell varázsolnia.

A memória vitálisan fontos kapcsolatban áll a processzorral.

A memóriák legnagyobb része DRAM-okból épül (D - dynamic). Itt az információ aprócska kondenzátorokon tárolódik. Értelemszerűen ezek rendszeresen felfrissítésre szorulnak, - a DRAM-on alapuló memória nem lehet túlságosan gyors, viszont relatíve olcsón gyártható.

A SRAM (S - static) memória lényegében bistabil multivibrátorokból áll. Ezek kiolvasása és írása sokkal gyorsabban megtörténhet. Míg egy DRAM címem végrehajtott művelet 60 - 100 ns időbe telik, a SRAM ugyanezt 10-20 ns alatt végrehajtja.

(A nagyságrendek illusztrálására egy furcsa példa: ha egy utasszállító repülőgép átlagos sebessége 900 km/óra, akkor 10 ns alatt mindössze ezredmilliméternyi - vagyis a hajszál vastagságánál jóval kisebb - utat tesz meg ! )

A SRAM memóriákat ún. cache tárolóként alkalmazzák ( magyarul átmeneti tárolónak nevezik őket.) Ezek úgy működnek, hogy a DRAM memóriából beolvasnak egy kisebb/nagyobb blokkot, ami esetleg több utasítást is tartalmaz. Erre pl. az adatbusz megnövekedett szélessége is lehetőséget teremt.

Nagy az esélye annak, hogy a beolvasott program egymást követő utasításokból áll (vagyis nincsenek benne ugró utasítások). Ilyen esetekben a cache jelentős időmegtakarítást eredményez. Persze a memóriába néha írni is kell. Ilyenkor általában nem a cache-be írnak, hanem közvetlenül a DRAM memóriába. - Aligha meglepő, hogy a cache vezérlése csak valamilyen definiált, esetleg az említettől eltérő algoritmussal történhet, tehát a cache vezérlő igen lényeges szerepet tölt be.

A cache elvét természetesen másutt is alkalmazzák: a HD - DRAM - processzor között software (pl. SMARTDRIVE) teremti meg ezt a lehetőséget.

Az újabb processzorok igen jelentős méretű cache tárolókat is tartalmaznak, a hozzájuk tartozó vezérlő egységekkel együtt.

Az egyik legdöntőbb kérdés: a processzor hány memóriahely individuális megcímzésére alkalmas, mekkora memóriát képes közvetlenül kezelni.

 

Az ős IBM PC processzora 20 közvetlenül címző vezetékkel rendelkezett, a megcímezhető memória nagysága tehát 220, vagyis kb, egy millió cella. Egy cellában egy byte, vagyis egy nyolc bites információ-mennyiség található. Ez nem jelentéktelen érték, mivel így a PC ún. operatív RAM (pontosabban DRAM) memóriájában mintegy 500 könyvoldalnyi információ fér el. A processzor és a memória közötti adatforgalom vázlata a 8.2.1..ábrán látható. A címvezetékeket a processzor vezérli, - azzal, hogy kijelöli a kívánt memória-rekeszt. A MEMR és MEMW (memória olvasás és írás) vezetékek pedig megmutatják, hogy az adatvezetéken a forgalom iránya a processzorból kifele, vagy befele mutat. E vezetékeken megjelenő jel hatására zajlik le a tulajdonképpeni memória-művelet, - ha itt nincsen jel, akkor az adatvezetékek következmények nélkül változhatnak.

(Egy szóhasználattal is meg kell ismerkednünk. Azonos funkciójú, párhuzamos vezetékeket előszeretettel nevezik angol eredetű szóhasználattal "busz"-nak, vagy magyarosabban "sín"-nek - ne keressük az elnevezések értelmét. Beszélni lehet tehát cím-, és adatbuszról. Továbbmenve: az adatbusz, a címbusz, valamint az ezek működtetéséhez szükséges vezérlő jelek összességét I/O busznak, belső busznak is titulálják.)

A memória - mint minden elektronikus alkatelem -működési sebessége természetesen véges. A processzornak valahogy értesülnie kell arról, hogy egy memóriaciklus befejeződött. Ezt a célt szolgálja a READY vezeték, amelyet a memória kezel. Ennek állapota jelzi, hogy az adatvezetékek kiolvasáskor már a helyes értéket tartalmazzák, illetve beíráskor az adatvezetékek jelét a memória már átvette.

Meg kell ismerkednünk az IBM - PC -nél szokásos memóriacímzési konvencióval is. A processzor 220 = 1 MB memóriaterület megcímzésére alkalmas. A processzor címzésre használható regiszterei azonban csak 16 bitesek (voltak), vagyis csak 64 KB címezhető velük. A különbségek áthidalására kitalálták, hogy a valódi címet egy ún. szegmens és egy offset (eltolás) értékből állítják elő. A szegmenscímet is 16 bites regiszterek kezelik, ezért a tényleges fizikai címet az alábbiak szerint lehet kiszámolni:

fizikai cím = 16 * szegmens érték + offset érték.

Ez annyit jelent, hogy például ha a szegmens érték 1401, az offset érték pedig BABA (természetesen hexadecimálisan számolunk), akkor a (1401:BABA) fizikai címe:

      14010
   +   BABA
   --------
      1FACA

vagyis - decimálisan - a memória 129.738-ik helyére mutat.

Vegyük észre, hogy

- a szegmenscím mindig a memória 16 byte-os egységeire utal. (Ezeket paragrafusoknak hívja e speciális nyelvhasználat.)

- egy adott fizikai címet sokféleképpen - általában négyezer féle módon tudunk kifejezni, megadni.

Az 1 MB-nyi memórián belül bizonyos funkciók biztosításához memóriaterületeket foglaltak le (valamikor), ezekre a konvenciókra a legújabb gépek is változatlanul ügyelnek. A 8.2.2. ábra ezt mutatja.

A memória legalján az interrupt vektorok találhatók. Ezek négybyte-os címek, (szegmens és offset) amelyek az interruptok bekövetkezésekor, megszakítva a normális program végrehajtás menetét, ide ugratják az utasítás számlálót. A közvetlenül efeletti memóriaterületen a BIOS (Basic Input Output System) rendszerváltozói helyezkednek el. E zóna fölé kerülnek a DOS (Disk Operating System) bizonyos rutinjai és eszközkezelő programjai.

A felhasználói programoké a következő szakasz, az A000 szegmensig. Ez annyit jelent, hogy kb. 500 kB (max. 600 kB) használható RAM memória áll a programok rendelkezésére. Az A000 - C000 tartományban helyezkednek el a különböző képernyő memóriák, később kicsit részletesebben is szólunk majd róluk. D000 - F000 között speciális funkciók találnak helyet maguknak. Ezek közül igen fontos, hogy az ún. expanded memória - mely szintén DRAM-okból áll - az itt elhelyezhető "ablakokon" keresztül tükrözhető a hagyományos memóriamezőbe.

 

Az F000-tól felfele található a BIOS, természetesen ROM formájában. A BIOS teszi lehetővé a gép megindítását, a képernyő működtetését, a diszkekhez való hozzáférést. Ez tölti fel a gépet a konfigurációnak megfelelő alapadatokkal.

Itt, a memóriáknál említjük meg először az ún. "port"-okat. Ezeken keresztül történik az I/O berendezéseknek a processzorhoz kötése. - A portokat olyan speciális memóriacímeknek tekinthetjük, amelyekhez valamilyen funkcionális egység (HDD, hangkártya, időzítő stb.) tartozik.

Kiválasztásukra 16 bit áll rendelkezésre, - tehát 64 K lehetséges portcím létezhet. A 16 bit egyébként a PC címbuszának alsó része, így valahogy gondoskodni kell arról, hogy megkülönböztethessük: memóriát, vagy portot címezünk. E célra szolgál az IOR és IOW vezetékpár, melyek funkciója megegyezik a MEMR/MEMW vezetékekével. Ha tehát ezeken jelenik meg írásra, vagy olvasásra felszólító jel, akkor az adatforgalom a porttal bonyolódik. - Természetesen itt is szükség van a READY jelre is. (L. 8.2.3 ábra. ) A portcímek kiosztása a PC felépítésének szerves része: meghatározott helye van a diszkeknek, az aszinkron vonalnak, stb. Néhány erre vonatkozó adatot a PC blokkvázlatán láthatunk.

 

 

8.3. A processzor

A processzort természetesen tárgyalhatnánk nagyon összetett hardware elemként, de beszélhetünk róla mint a software anyjáról is, mivel ez determinálja a leszármazottak alapvető vonásait. Mindkét tárgyalási mód jogos, azonban itt e két vonatkozást nem választjuk szét.

A processzor működésének megértéséhez a rendszerórától kell elindulnunk. A rendszeróra - egy kvarckristály vezérelt oszcillátor - folyamatosan periodikus jeleket szolgáltat. (L. 8.3.1 ábra.) Általában két ilyen jel ad ki egy ún. processzorciklust. E ciklusok szabják meg, hogy a processzor hogyan lépked, - erre a taktusra hajtja végre az utasításokat. Az egyszerű utasításokat kevés, a bonyolultabbakat nagyon sok ciklus alatt tudja csak végrehajtani (később adatokat találunk arra, hogy hány ciklus kell egy utasítás végrehajtásához). - Két, vagy több processzorciklus alkot egy buszciklust, melyek során a processzor a memóriához fordul. Ennek első fele a státusinformációt juttatja a buszra, - vagyis lényegében ekkor történik a címzés, a második fele az utasítást közli, - például azt, hogy a kérdéses címen írást kell végrehajtani.

A processzor egy utasítás végrehajtása alatt több működési fázison megy át:

- be kell hoznia a memóriából az utasítást (fetch);

- az utasítást dekódolnia kell;

- végre kell hajtania az utasításban megszabott logikai és adatmozgatási műveleteket;

- az eredményt (esetleg) újra a memóriában kell elhelyeznie, vagyis ismételten a memóriához kell fordulnia.

- meg kell határoznia a következő utasítás címét.

Fontos megértenünk, hogy a rendszeróra frekvenciájának növelésével a processzor egyre gyorsabb lesz, mivel az utasítások végrehajtásához szükséges idő csökken. Persze ehhez az kell, hogy a processzor egyre gyorsabb működésű elemekből épüljön fel. - Más a helyzet a buszciklusidővel. Ennek csökkentése nem célszerű, mert a memóriaelemek csak késéssel válaszolnak, az egyéb perifériális eszközök pedig a nagyon gyors jelek fogadására nincsenek felkészülve. - Mindezek együttes hatásaként most már megérthetjük, hogy a rendszeróra frekvenciájának kétszeresére növelése a processzor/gép sebességét csak kettőnél kisebb arányban növelheti. (Ezért mutatnak a különböző gépsebesség-tesztek különböző működési sebességet. Ugyanis mindegyikük egy jól-rosszul megválasztott programszakasz futási idejét méri. Nem közömbös azonban az, hogy az utasítások végrehajtása során hányszor kell a memóriához nyúlni. )

Az IBM - PC processzorai információs alapegységként byte-okat kezelnek. A címzési rendszer azonban szükségessé tette nagyobb, pl. a "két byte = egy szó", vagyis a 16 bites információ mennyiség bevezetését is.

Ezt fontos értenünk akkor, amikor a processzor regisztereiről beszélünk. (A regiszter szó nem jelent túlságosan sokat: arra utal, hogy bizonyos mennyiségű bit van egy "csokorban", tehát bistabil multivibrátorok együttesének lehetne gondolni őket. - Ezek a regiszterek azonban rajta vannak a processzor lapkán, ezekhez fér hozzá leggyorsabban a rendszer. A regiszterek egy csoportja alkalmas aritmetikai, logikai funkciók végrehajtására, másik csoportjuknak inkább csak a memóriahelyek megcímzésében van szerepük.) A regiszterek elnevezése és szerepe az alábbi :

AX - akkumulátor, kiemelt jelentőségű, központi szerepe van. Bizonyos utasítások csak erre vonatkoznak.

BX - bázisregiszter, egy alapcímhez képesti relatív eltérések kijelölése a fő funkciója.

CX - számlálóregiszter, elsődlegesen az ismételni kívánt utasítások esetén van szerepe (ciklus érték)

DX - adatregiszter, főként adatok byte-jainak kijelölésére szolgál. Fontos szerepe van az I/O utasításokban.

E regiszterek 16 bitesek (voltak), LO és HI byte-jaik (AL, AH, stb) külön is címezhetők, tehát pl. CL a számlálóregiszter alacsonyabb helyiértékű byte-jára utal. A 8.1.1. Táblázatból már tudjuk, hogy már az i386 esetében is ezek a regiszterek igazából 32 bitesek.

SI - forrás (source) indexregiszter, elsősorban adatok címzésére gyakran szerepel DS -sel együtt

DI - cél (destination) regiszter, szintén adatok címzésére, gyakran társul az ES regiszterrel

BP - bázis pointer (mutató), a bázisregiszterhez hasonló szerepkörrel SP - verem (stack) pointer, a verem aktuális tartalmára mutat.

IP - utasítás (instruction) pointer, a feldolgozandó utasításra mutat

F - feltételbitek (flag) regisztere; átvitel, paritás, előjel, megszakítás engedélyezése stb.

Nagyon fontosak az ún. szegmens regiszterek. Ezekkel 64 kB nagyságú területeket jelölhetünk ki. Több, egymástól függetlenül megválasztható terület kijelölésére van módunk a szegmens-regiszterrekkel:

CS - kód szegmensregiszter, IP-vel együtt adja meg az utasítás pontos helyét

DS - adat szegmensregiszter

SS - stack (verem) szegmensregiszter (ez a LIFO tároló - last in first out - a szunrutinra ugrások, illetve az interruptok esetén nagy jelentőségű, mivel lehetővé teszi az egymásba ágyazott visszatérési címek egyszerű kezelését. Megjelenése, alkalmazása óta alapvetőern változott meg a programok struktúrája.)

ES, FS, GS - extra szegmensregiszterek, lehetőséget teremtenek újabb újabb adatszegmensek definiálására és címzésére.

Az újabb ( > 386) processzorok esetén ez a sor még kiegészül:

- 4 memória kezelő regiszterrel,

- 4 vezérlő regiszterrel,

- 2 test regiszterrel,

- 8 "debug" (hibakereső) regiszterrel.

A control (vezérlő) regiszterek a protected (védett) üzemmódban a címek kiszámításában, a különböző feladatok prioritási viszonyainak eldöntésében érdekeltek. - A debug regiszterek a hibák keresésében, javításában vesznek részt.

A fentiekből látszik, hogy a programozó egyidejűleg több szegmensben manipulálhat (CS,DS,SS,ES). Az offset - vagyis a szegmens kezdetétől mért eltolás megadására számos regiszter szolgálhat (IP, DX, BX, BP, stb).

Emlékeztetnünk kell itt arra, hogy a számítógépek a memóriában elhelyezett programot dolgozzák fel, utasításonként. Az utasításoknak ún. gépi kódjuk van, amelyet a processzor felismer, és annak megfelelően cselekszik. A gépi kódok nulláknak és egyeseknek a keverékei, emberi értelmezésre, memorizálásra általában nem alkalmasak. E nehézségnek az áthidalására készítenek minden processzorhoz ún. assembly (szerelő) nyelvű fordító programot. Ennek használatakor a programozó a magasszintű programnyelvekben megszokott kényelmes lehetőségekhez jut, eredményként pedig egy direkt gépi kódú program keletkezik. Ezek a programok általában a legtömörebbek, éppen ezért a futási idejük a lehető legkisebb. Ez mérési feladatok esetén nagyon fontossá válhat.

Most illusztrációként bemutatunk néhány példát az assembly nyelv jelöléseire. Az utasítások általában néhány betűből - rendszerint háromból - állnak, amely betűk angol szavakra, szótöredékekre emlékeztetnek. Ezeket már könnyen lehet memorizálni - az ilyen szavakat hívják "mnemonics"-nak. (MOV - move, LEA - load effective address, IMUL - integer multiplication, stb)

Az IBM - PC utasításainak leírására egyetlen byte szolgál. Sok esetben azonban ez nem elég, mert pl. abban az esetben, ha a memóriából kívánunk behozni egy értéket, meg a kell adni a címet, mely önmagában is két byte.Az utasítások tehát különböző hosszúságúak lesznek, vagyis különböző számú byte szükséges leírásukhoz. Ez attól függ, hogy az utasítás operandusait honnan kell venni, illetve az eredményt hová kell elhelyezni. E szempontból más-más szerepük van a regisztereknek, a memóriahelyeknek/portoknak, illetve az utasításhoz közvetlenül kapcsolódó adatoknak. Ezek tehát befolyásolják azt, hogy az utasítás milyen hosszú lesz. (Hosszabb utasítás hosszabb végrehajtási időt is fog jelenteni, mert többször kell a memóriához fordulni.)- Az IBM - PC legrövidebb utasításai egyetlen byte hosszúságúak, a leghosszabb pedig hét byte-ot igényel.

A következő oldalon bemutatjuk az utasításkészlet legfontosabb csoportjait. Ha az utasítások megjelölésére egy byte áll rendelkezésre, akkor - elvben - összesen 256 utasítás lehetséges. Az egyes utasítás csoportokban számos utasítás található, ezek teljes felsorolása helyett csak példát adunk mindegyik alcsoportból. - Mindenütt feltüntetjük az assembly nyelvű megnevezést, a hozzá tartozó gépi kódot (ezt természetesen hexadecimálisan adjuk meg), valamint azt, hogy hozzávetőleg hány processzor ciklus szükséges az utasítás végrehajtásához. Természetesen a szükséges ciklusok száma függ a processzor típusától is. A Pentiumnak számos olyan utasítása van, amelyik csak egyetlen ciklust igényel, míg a fejletlenebb processzorok csak három, vagy több ciklus alatt végeznek velük.

Hexa kód

Ciklusok

száma

Assembly kód

Értelmezés

Adatmozgatás

8B C3

2

mov ax,bx

BX tartalmát AX-be tölti

89 87 123B

10

mov [123Bh+bx],ax

AX tartalmát beírja 123Bh és BX összegével megcímzett helyre

Aritmetika

03 C3

3

add ax,bx

AX-hez hozzáadja BX tartal-mát

F7 F9

190

idiv cx

AX taltalmát elosztja CX-el. Hányados: AX, maradék: DX

Korrekció

98

2

cbw

byte-ból szót készít

Logika

23 C2

3

and ax,dx

logikai ÉS bitenként AX és DX között; eredmény: AX

F7 C1 008

4

test cx, 08h

logikai ÉS bitenként 08h és CX között, CX tartalma nem változik

Léptetés

D3 E0

15

shl ax,cl

AX-et CL tartalmának meg-felelően bitenként balra shifteli

Feltételbit

FA

2

cli

letiltja az interruptokat

Ugrások

EB 16 90

30

jmp ittavege

feltétel nélkül az "ittavege" cimkére ugrik

Ciklus szervezés

E2 F2

5-17

loop haho

ismetles a "haho" nevű cimkétől

Verem

50

11

push ax

AX-et a verem tetejére teszi

58

8

pop ax

a verem tetjét AX-be tölti

Szubrutin

E8 00D

19

call girls

ugrás a ''girls" nevű szub-

rutinra

C3

12

ret

visszatérés a szubrutinból

Interrupt

CD 21

51

int 21h

ugrás a 21h interrupt rutinra

CF

32

iret

visszatérés az interrupt

rutinból

String

AD

12

lodsw

string-elem (szó) mozgatása

I/O műveletek

EC

8

in al,dx

a DX számú port tartalmát beolvasssuk AL-be

EE

8

out dx,al

a DX számú portra írjuk AL értékét

Egyéb

90

3

nop

üres utasítás

 

8.4. Diszkek

Az átlagos IBM PC-hez mind floppy diszk (FD - hajlékony lemezes tároló), mind pedig hard-disc (HD - merev lemezes tároló) is csatlakozik. Ez utóbbit előszeretettel említik Winchesterként is, - a szóhasználat eredete a homályba vész.

Mindkét tároló azonos alapelven működik: forgó mágneses lemezre írunk illetve innen olvasunk a mágneses indukció törvény felhasználásával. - A floppy lemez lassabban forog, a fejek a lemezhez közvetlenül hozzáérnek. A hard diszknél a lemezek forgási sebessége szignifikánsabb nagyobb, a fejek "légpárnán lebegnek" a mágneses hozdozóközeg felett (360 illetve 3000-10000 ford/perc). A 8.4.1 ábrán látjuk a diszk mechanikai felépítésének vázlatát

A 8.4.2. ábra a hard disc méretviszonyairól tájékoztat. Talán ebből megérthető, miért nem előnyös, ha ennek közelében dohányoznak. A légpárna kialakulásához ugyanis levegő szükséges, - ez csak úgy biztosítható, ha a disc a külvilággal ténylegesen érintkezni tud.

Hogyan helyezkedik el az információ a lemezen, illetve hogyan lehet egy adott szakaszt elérni? - A lemez legkisebb kiválasztható infor-mációs egysége a szektor. Ez általában 512 byte információt tartalmaz. - Az azonos rádiuszon található szektorok a "track"-en vagy cilinderen helyezkednek el. Ezek felett/alatt mozog a fej, ezért több lemez esetén több fejre van szükség.

 

 

Egy elemi információs egység kijelöléséhez tehát egy számhármas tartozik: meg kell mondanunk, hogy melyik fej olvasson, hányadik track-ről és hányadik szektort. Természetesen ehhez a fejet a megfelelő pozícióba kell mozgatnunk és megvárnunk, míg a kívánt információ pont "alája fordul". (8.4.3. ábra). Mindez időt igényel: 10 - 100 msec.-re van szükség, attól függően, hogy milyen távoli track-en kellett az új helyzetet elfoglalni. A diszkek nagyon sokkal lassabbak, mint a RAM memóriák. - Érdemes felfigyelni a szektorok számozására. Az egymás melletti szektorok sorszámai nem folytatólagosak. Ennek oka az, hogy egy szektor beolvasása után egy kis időt kell hagyni az információ elren-dezésére, mozgatására.

Egy file általában hosszabb, mint 512 byte. Azt, hogy egy file tárolása a szektorok milyen sorrendjében helyezkedik el, a DOS dönti el. A DOS természetesen mindezt szigorúan naplózza, hogy a lemezen elhelyezkedő összetördelt információ valaha még egyszer visszanyerhető legyen. Ezt a naplót FAT (file allocation table ) névvel illetik, és természetesen ez is lemezen helyezkedik el. Kulcs-szerepe nyilvánvaló, - ha ez megsérül, akkor a tárolt információ nem állítható vissza. Nem csoda az sem, hogy a különösen rosszindulatú komputer-vírusok kedvelt támadási pontja a FAT.

Láttuk, hogy a diszkek meglehetősen bonyolult feladatkört látnak el. A mechanikai részeket tartalmazó blokkot meghajtónak (drive) nevezik, a vezérlést ellátó kártyát pedig lemez vezérlőnek, disc-controller-nek hívják. A kontrollerek általában több meghajtó vezérlését is el tudják látni. - A 8.4.4. ábrán a disc controller felépítésének vázlatát mutatjuk. Látható, hogy ez ROM-ot is tartalmaz, amelybe a disc bonyolult kiszolgáló BIOS rutinjai tárolódnak, sőt a vezérlési feladatok koordinálását egy külön "értelmes" eszköz, mikroprocesszor látja el.

 

8.5. Monitor, video vezérlő

A monitoron (képernyőn) jelenik meg a kép, vagy szöveg. A képernyőt - a televízióhoz hasonlóan - elektronsugár futja végig: a sorok és a képek váltásának időpillanatait a vízszintes és függőleges sorszinkron jelek jelölik ki. Ennek vázlatát láthatjuk a 8.5.1. ábrán. A videojel az ernyőt érő elektronsugár intenzitását, tehát a pixelek fényességét szabja meg. A kép előállításához a videojelen kívül a szinkronjelek is múlhatatlanul szükséges.- A színes képek három elektronsugár (RGB - red, green, blue) intenzitás kombinációiból állnak elő.

A video vezérlő (adapter) tartalmazza mindazon áramköröket, amelyek képernyőn való ábramegjelenítéshez szükségesek. Elsősorban megtalálható rajta az ún. video processzor, amelyik a "kuli-munkát" végzi, továbbá az a képernyő memória, amelyik a megjelenő kép elemi

képpontjainak - az ún. pixel-eknek - a szinéről, intenzitásáról tartalmaz információt. Mivel a képgenerálásnak állandónak és folyamatosnak kell lennie, nem csodálkozhatunk azon, hogy ezt a munkát egy önálló intelligenciával rendelkező egységre, egy processzorra bízzák. A video processzor vezérlése, a működési mód paramétereinek beállítása port-címeken keresztül történik, természetesen a központi processzor vezérlete alatt. A monitoron megjelenő képet a video processzor készíti el, - a központi processzortól lényegében függetlenül. L.: 8.5.2. ábra.

A video processzor nagyon összetett, gyors működésre kifejlesztett chip. Bonyolultsága a központi processzoréval vetekszik.

Többfajta monitor/adapter típus volt, illetve van használatban. Fontos tudni, hogy mindegyik adapter lényegében csak a saját magához illeszkedő monitorral képes együttműködni. A monitorok többsége ugyanis csak meghatározott értékű sor illetve képszinkronjel frekvencián tud működni. A legfontosabb adapter/monitor típusokat a 8.5.2. Táblázatban foglaltuk össze.

(MDA : Mono Display Adapter ; CGA : Color Graphic Adapter ; EGA : Enhanced Graphic Adapter; VGA - Video Graphic Adapter; SVGA - Super Video Graphic Adapter, XGA - Extended Graphic Adapter. Láthatjuk, hogy ezek a rövidítések butácskák, nem informatívek.)

8.5.1. Táblázat. Ma használatos képernyők jellemzői

 

EGA

VGA

SVGA

 

karakter

grafika

karakter

grafika

karakter

grafika

felbontás (pixel)

640*350

640*350

640*480

640*480

1288*960

1280*1024

video szegmens

B800

A000

B800

A000

B800

A000

video RAM (kbyte)

64 - 256

64 - 256

256

256

>= 1000

>= 1000

karakter mátrix

8*14,8*8

8*14,8*8

9*16

9*16

9*16

9*16

színek száma

16 64-ből

16 64-ből

256

256

256

256, > 1m

monitor vezérlés

digitális

digitális

analóg

analóg

analóg

analóg

vízsz. frekvencia (kHz)

15.7-21.8

15.7-21.8

31.5

31.5

< 90

<90

függ. frekvencia (Hz)

60

60

50-70

50-70

50-90

50-90

video sávszél. (MHz)

14.3-16.3

14.3-16.3

28

28

< 100

< 100

 

A 8.5.1. Táblázatban a ma használatos képernyő üzemmódok vannak felsorolva. Innen kitűnik, hogy a kép és sorfrekvencia adatok ugyancsak eltérnek a televíziózásban megszokott szabványok értékeitől. Ezért nem lehet az IBM PC képét hagyományos televízió képernyőn láthatóvá tenni. - A nagyfelbontású színes képek előállításához sok esetben nem csak az adaptert és a monitort kell egybecsengően megválasztani, hanem az ún. device driver (eszköz kezelő program) sem lehet akármilyen.

Példaképpen számoljuk ki, hogy mekkora memória szükséges egy manapság már nem nagyon elfogadható EGA kép tárolásához. A képernyő-pontok száma 640*350, egy képpont 16 különböző színű lehet, tehát a tároláshoz 640*350*4 bit, vagyis 112 KB kell. Ennyi azonban a 8.2.1. ábrán látható memória térkép szerint nem áll rendelkezésre.

A megoldás elve a 8.5.3. ábrán látható. A memória (pontosabban a video memória) egy byte-jának címzése során egyidejűleg több "síkon/lapon" elhelyezkedő, összetartozó byte érhető el, amelyek megfelelő bitjei adják a keresett pixel színének leírását. Természetesen ehhez a videoprocesszor segítségére is szükség van, - a központi processzor az ilyen üzemhez "nincsen hozzászokva".

Figyelnünk kell arra a furcsa helyzetre, hogy a video memóriához a video processzornak folyamatosan hozzáférést kell biztosítani, hiszen enélkül a monitoron megjelenő ábra nem lenne élvezhető. Ugyanakkor a video memóriát a központi processzor is használja, módosítja, - így lehet a képek folyamatos váltását biztosítani. - Ha a két feljogosított egyidejűleg akarja a video memóriát kezelni, ez bizony konfliktust jelent. (Azt mondják, ilyenkor a kép "havazik".)

A videoprocesszor tevékenységébe nyilván nem lehet beavatkozni, neki kell az elsőbbséget biztosítani. De mikor juthat szóhoz a központi processzor?

Több megoldás létezik. Az egyik szerint a sor-kép visszafutások alatt lehet a tartalmat manipulálni. A másik szerint ún. video RAM-ot kell alkalmazni. Ennek két adat csatlakozási helye van: az egyiken a kiolvasás adatai, a másikon a beírandó adatok vannak jelen. Ha a kérdéses címet hívjuk, a video processzor részére kiolvasunk, de a tartalmat felülírjuk a központi processzor óhaja szerint.

8.6. Az IBM PC blokkvázlata

Az alábbiakban áttekintjük azokat az egységeket, amelyek működését, funkcióit érdemes megismerni a gép hatékony felhasználásához. Leírásunk csak a legszükségesebb ismeretekre korlátozódik, olyanokra, amelyek az alkalmzott processzortól függetlenül meglévőnek tekinthető. Ezeket az egységeket külön-külön chip formájában már aligha találjuk meg, de software hozzáférésük minden gépben biztosított. - Az összefoglaló blokkvázlatot a 8.6.1 ábrán láthatjuk.

 

8.6.1. A memória

A processzor az utasításokat a memóriából veszi elő. A memória általában DRAM elemekből áll, amelyeket rendszeresen frissíteni kell. A felfrissítés folyamatában kulcsszerepe van a DMA vezérlőnek (l. később). - Érdekes tulajdonsága a memóriának, hogy egy byte tárolásához 9 bitet használnak, a kilencedik paritásbit (ma már gyakran elhagyják). Minden írás és olvasás folyamatban paritás ellenőrzés is lezajlik. Ha paritáshiba van, akkor a processzor NMI (Non Maskable Interrupt - nem maszkolható megszakítás) bemenetén keresztül olyan interruptra ugrik, mely a képernyőn közli e sajnálatos esemény bekövetkeztét, majd a gép vezérelhetetlen állapotba kerül. (Érdekességként megjegyezzük, hogy - nevével ellentétben - az NMI software módszerekkel letiltható.)

A memóriaművelet befejezését jelző READY jel a WAIT logika egységen keresztül jut el a processzorhoz. Ezt az egységet meg lehet tanítani arra, hogy hány többlet-buszciklusnyi ideig várakozzon a READY jel érkeztére. Nyilván a leggyorsabb rendszer nulla WAIT state-et engedélyez, - ez hardware szempontból a lehető leggyorsabb memória-chipeket igényli.

(A READY jel azért jut az óragenerátoron keresztül a processzorba, hogy az esemény az órajelsorozattal szinkronizálódjon, - így ugyanis biztonságosabb a feldolgozása.

A RESET jel is hasonló sorsra lel. A RESET gomb működtetésére a processzor abbahagyja addigi tevékenységét, és elugrik a ROM memória FFFF:0000 helyén található címre, elindítva a gép újtöltését (boot-olását).)

A tágabban értelmezett memória fontos része az ún. CMOS RAM. Ez 64-256 byte tárolására alkalmas, méghozzá úgy, hogy a beléírt adatok kikapcsolt készülék mellett is megmaradnak. A megoldás rendkívül egyszerű: egy kis telep vagy akkumulátor fenntartja a tápfeszültséget a hálózati ellátás megszűntekor is. - E memória mellett helyezkedik el egy kvarcoszcillátor, mely az idő és dátum értékét tartja fenn, szintén a gép kikapcsolt állapotában is. A CMOS memóriában tehát tárolódnak az idő/dátum adatok, valamint a rendszer bekapcsolásánál nélkülözhetetlen, a konfigurációra vonatkozó információk. Ezek közül talán a legfontosabb az, ami a hard-diszk-ről közöl fontos ismereteket. A gép ébresztését végző POST (Power On Self Test) program is a CMOS RAM-ból veszi a saját magára vonatkozó információt.

8.6.2 Az interrupt vezérlő

Az I/O eszközökkel való együttműködés koordinálására az IBM PC-ben egy ún. interrupt vezérlő chipet használnak. Ennek feladata, hogy a hardware interrupt kéréseket kezelje. A hardware szó itt arra utal, hogy valóságos fizikai jelek (az áramkör bizonyos pontjain félreérthetetlenül megjelenő HI/LO jelek) kezdeményezhetik a futó program megszakítását és a megfelelő interrupt rutinra történő ugrást.

Ha az áramkör az interruptot fogadja, akkor erről a processzort az IRQ (Interrupt Request) vezetéken értesíti. A processzor ekkor még befejezi az éppen futó utasítást, majd az INTA (Interrupt Acknowledge) vezetéken keresztül kéri, hogy az interrupt vezérlő közölje, hányas számú interruptot fogadta el, hogy a processzor ennek címére ugorhasson.

Az interrupt vezérlő 8 hardware jelet kezel, ezeknek prioritás sorrendjük van. Ha például a 4-es szintű interrupt végrehajtása során közben bejelentkezik a 0 szintű (ennek a legmagasabb a prioritása) , akkor a vezérlés átadódik ennek. Ha azonban a 7-es szint kér egy kis figyelmet a processzortól, azt csak a négyes interrupt befejezése után kaphatja meg, - feltéve hogy nincsen nála magasabb prioritású várakozó interrupt kérés.

A legmagasabb szintű interrupt, a nullás, egy időmérő rendszert működtet. Ezt az interruptot a "nullás időzítő" (l. később) kb. 50 millisec.-ként periodikusan kéri. Hatására egy számláló tartalma eggyel növekszik. A gép működés közben innen veszi/veheti az idő-adatokat. - A következő legfontosabb interrupt szint a billentyűzeté. Ha a billentyűzet bármelyik gombját lenyomjuk, vagy felengedjük, a rendszer azonnal észleli és - általában - ezt a BIOS munkamező egy címén elhelyezi, hogy a későbbiekben rendelkezésre álljon.

A következő interrupt bemenethez egy újabb interrupt vezérlő kimenete csatlakozik. Ezzel a fogással két interrupt vezérlővel 15 interruptot lehet kezelni. Ez a 15 interrupt szint egy manapság jól megtöltött PC esetén éppen csak elég: gyakoriak az ún. interrupt összeütközések, amikor több perifériális berendezés ugyanazt az interrupt szintet akarja használni. - A PC blokkvázlat ábráján (8.6.1) láthatjuk, melyek azok a legfontosabb perifériális berendezések, amelyek az interrupt vezérlőt elérhetik.

Az IBM PC méréstechnikai felhasználása szinte elképzelhetetlen az interrupt lehetőségek felhasználása nélkül. Az interrupt vezérlő pontosan leírt, viszonylag egyszerű software eszközökkel könnyen kezelhető (pl. nem kívánt interruptok letiltása, az interrupt prioritások módosítása stb.).

Itt kell hangsúlyoznunk azt, hogy az előzőekben leírtak csak az ún. hardware interruptokra vonatkoznak. Az IBM PC használói sokszor kiaknázzák az ún. software interruptokat is. Ezek lényegében a rendszer működése szempontjából fontos szubrutinok, amelyek csak megfelelő programokból érhetők el. A legfontosabb BIOS és DOS műveletek ilyen software "generált" interruptok formájában jelennek meg.

9.6.3. DMA (Direct Memory Access)

Ha nagyobb adatmennyiségeket kívánunk a memória egyes részei között mozgatni, vagy egy perifériális eszközről a memóriába beolvasni, akkor ehhez igénybe vehetjük a processzor utasításait. A folyamat óhatatlanul lassú lesz, mert mind az olvasási, mind az írási művelet legalább egy-egy buszciklust igényel; - nem is említve még címek számolgatásához szükséges időket.

Ezért már régen feltalálták, hogy e műveletek céljaira egy önálló, "cél-processzort" kell használni, amelyik az írási és olvasási címeket automatikusan és igen gyorsan egyesével növeli, és a beolvasott adatot késlekedés nélkül írja a cél-helyre. Természetesen ezen folyamat alatt az "igazi" processzornak hallgatnia kell, nehogy a cím,- vagy adatbuszon helyrehozhatatlan keveredés álljon elő.

Az IBM PC -ben is van ilyen ún. DMA vezérlő, mely különösen a képek és a mérési eredményekként létrejövő adattömbök mozgatásában jeleskedik. Ezen túlmenően van még egy igen fontos feladata: a DMA vezérlő végzi a dinamikus RAM memória felfrissítését. Az időzítő 1. csatornája kb. 15 microsec.-ként jelzést küld a DMA vezérlőnek. Ez ezt továbbítja a DMA RQ (DMA REQUEST) vezetéken a processzornak. A processzor ekkor befejezi az elkezdett processzorciklust, majd visszaüzen a DMA vezérlőnek, hogy az átveheti a buszok vezérlését. A DMA 5 processzor-ciklus idejéig kezeli a vonalakat. (Érdemes felfigyelni rá: ezen szakasz alatt a processzor számára "nem telik az idő"...). - A DMA egység által végrehajtott látszólagos adatblokk-mozgások a memória egy-egy részének felfrissítésével járnak. 512 ilyen felfrissítő ciklus az egész memóriát "felújítja", a teljes memória tehát mintegy millisecundumonként felfrissítésre kerül. Ez bőven elegendő a megbízható, hibamentes működéshez.

8.6.4. Időzítők

Az IBM PC fontos tartozékai az időzítők. Az időzítőkben kétbyte-os számlálók vannak elhelyezve, amelyek azonos jelforrásból táplálkoznak. Amikor a számláló "lejár", a megfelelő kimeneti vezetéken jel jelenik meg, ami további funkciókat indít. A számlálás újrakezdésekor egy beállított számértékre "felhúzzuk" a számlálót, amikor a számláló eléri a zérus tartalmat, létrejön a kimenő jel. Az időzítők astabil és monostabil üzemmódban egyaránt képesek működni.

Az időzítők a rendszeróra leszármaztatott jeléből kapnak periodikus impulzus-sorozatot. Ennek ismétlődési ideje 839 ns., függetlenül attól, hogy a rendszeróra ténylegesen milyen frekvenciával rezeg. Az időzítő tehát alkalmas valódi idő megállapítására, például a különböző gépsebességet mérő programok az időzítők felhasználásával mérik meg egy adott program futási idejét, amit aztán a gépek gyorsasági viszonyainak összehasonlítási adataként kezelhetünk.

A három időzítő szerepköre előre meg van szabva. A 0. időzítő a gép idő/dátum tartalmának meghatározásában segédkezik, az 1. időzítő a DMA kérést indítja és így a DRAM felfrissítését kezdeményezi, 2. időzítő pedig a hangszórót működteti. Ezt az időzítőt általában különösebb következmény nélkül elvehetjük a rendszertől és például periodikus mérési időpontok kijelölésre használhatjuk. Némi meggondolások után a 0. időzítőt is "elkérhetjük" és saját céljainkra használhatjuk. Az 1. időzítőt manipulálni azonban veszélyes: ez a memória összeomlásához vezethet.

8.6.5. Billentyűzet

Erről legalább annyit kell tudnunk, hogy ujjaink mozgását a billentyűzeten egy külön mikroprocesszor figyeli. Ez a processzor állapítja meg a lenyomott billentyű ún. scan kódját, valamint rögzíti azt a tényt, hogy a billentyűt lenyomtuk/felengedtük, vagy egyszerre több billentyűt nyomtunk-e meg. - Ezek az események viszonylag magas prioritás szinttel a PC központi processzorában interruptot kezdeményeznek.

(8.6.5.1. ábra)

 

A billentyűzet mikroprocesszor a PC-vel kétirányú soros vonalon kommunikál.

A POST által végzett vizsgálat kiterjed a billentyűzet ellenőrzésére is. (Ha a billentyűzet hiányzik, vagy rosszul működik, a gép - noha elvileg megtehetné - nem indul.)

Az IBM PC által favorizált billentyűzet-kiosztás amolyan ipari szabvánnyá vált, amelyet alapvetően más felépítésű gépek is használnak.

8.6.6. Aszinkron I/O port

Az IBM PC - hez való hozzáférésnek a legegyszerűbb eszköze az aszinkron port. Soros információ fogadására és küldésére alkalmas. Mivel ez a kommunikációs lehetőség majdnem minden gépen megtalálható, a gépek egymáshoz kötésének kézenfekvő megoldása. A soros adatátvitel tényéből fakadóan az átvitel sebessége mérsékelt, illetve lassú (400 - 50 kBaud).

A kommunikáció az RS-232 szabvány szerint bonyolódik. L. 7.4.1. fejezet.

Fontos tudnunk, hogy az IBM PC soros portján megjelenő feszültségértékek plusz és mínusz 12 V értékűek, - berendezések egymáshoz kötése előtt jó ezt emlékezetünkbe idézni. Az aszinkron porthoz csatlakoztatható egy nagyon népszerű eszköz, az egér. Az egér alján lévő gumigömb elmozdulásai két egymásra merőlegesen elhelyezett tárcsát fordítanak el. A tárcsa fogazott, a fogak között átvilágító fényforrás fényét a túloldalon fényérzékelő detektálja. Az egész elrendezés megfelel a 7.3.2. ábrán látható vázlatnak, vagyis egy egyszerű, mechanikus működésű analóg-digitál átalakítónak. - Az egérben található elektronikus alkatrészek feszültség/áram ellátását az aszinkron port jelvezetékei biztosítják, mivel a port kimeneti pontjain tápfeszültségek nem jelennek meg.

8.6.7. Printer port

A printer port feladata az, hogy a felhasználó a lehető legegyszerűbben a géphez tudja kapcsolni nyomtatóját. A port vezetékei, azok funkciói szabványosak, lehetővé teszik, hogy a gép hand-shake üzemmmódban nyolc bites kódokat küldhessen a nyomtató felé, illetve bemeneti vezetékei segítségével a nyomtató bizonyos állapotait érzékelhesse (kifogyott a papír, a nyomtató foglalt, stb.)

A printer portot - elnevezésétől eltérően - nagyon sok célra fel lehet használni: bármilyen eszköz vezérlésen kezdve az ún. hardware kulcsos program védelemig.

Ez utóbbi azon alapul, hogy lehet készíteni olyan relatíve egyszerű logikai áramköröket, amelyek bemenetét a port kimenő jelei vezérlik, a logikai áramkör kimenetét pedig a port bemenő vezetékeire vezetik vissza. A logikai áramkör jelenléte így software módon ellenőrizhető. - Ha ez a rendszer ügyesen van tervezve, a printer port alapfunkciói változatlanul megmaradnak. A programját védeni kívánó software gyártó tehát a programmal együtt odaadja a felhasználónak a hardware kulcsot. Ha ez nem másolható, - vagy legalább is egyszerűen nem "koppintható", - akkor a software-t hiába másolják le, hardware kulcs nélküli gépen nem fog futni.

(Megjegyezzük, hogy a printer portot sokszor paralel portnak titulálják. Ez pontatlan elnevezés, kerüljük. Valóságos paralel portokat is árulnak, amelyek ki- és bemenő adatforgalmat is bonyolítanak. Szerepük főleg a gyors adatküldésben, fogadásában van, pl. a scanner-ekben.)

8.6.8. Felhasználói portok

Az ún. user portok lehetővé teszik, hogy az IBM PC -hez nagyon változatos "egyéni" funkciójú berendezéseket illesszünk.

A user kártyáknak természetszerűleg illeszkedniök kell az IBM PC belső buszához. A kártyán detektálni kell a vonatkozó port címeket, tehát legalább a címbusznak, az adatbusznak, valamint az IOW, IOR, READY jeleknek a csatlakozását is biztosítani kell.

Ami pedig a port címtartományát illeti: a 300 - 30F címekre általában minden további nélkül telepíthetünk berendezést. Nagyon összetett gépek esetén azonban e tartomány már más célokra el van használva, - ilyenkor a port címkiosztási táblázat alapos vizsgálatával találhatunk olyan újabb tartományt, mely semmi előző funkcióval nem ütközik.