Informatika | Számítógép-architektúrák » Dr. Broczkó Péter - Architektúrák

Alapadatok

Év, oldalszám:2004, 160 oldal

Nyelv:magyar

Letöltések száma:1636

Feltöltve:2004. június 08.

Méret:1 MB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

11110 Anonymus 2022. január 03.
  Az alap információk kibontása közepes szintre, siker, mivel e doksinak ez volt a célja. Király, bár van egy két elavult információ benne, érdemes lenne frissíteni.

Tartalmi kivonat

FA1 A mikroarchitektúra komponensei 0. A vezérlő egység + műveletvégző egység = CPU A legegyszerűbb esetben a számítógépnek van egy egysége, amely a programutasításokat végrehajtja. Ez az egység kommunikál más egységekkel és gyakran vezérli a számítógépen belül más egységek műveleteit. Ez vezérlőegység Control Unit) néven a Neumann gép négy alap-komponensének egyike volt. Később ennek az egységnek a központi szerepe miatt ezt központi processzornak azaz Central Processzor Unit-nak (CPU) hívják. Mikroszámítógépek esetében alkalmazott egytokos processzorokat mikroprocesszoroknak nevezzük. Meg kell jegyezni, hogy a korszerű számítógépekben, az olyan alrendszerek, mint az input/output, vagy a tömegtárolók kezelése saját processzorral rendelkezhet. Az ilyen processzor, mely központi ugyan a saját alrendszerén belül, világos, hogy nem központi a teljes rendszer vonatkozásában. Egyébként azok az elvek, amelyeket egy

processzor tervezése és működése során kell megvalósítani, teljesen függetlenek a processzornak a rendszeren belül elfoglalt helyzetétől. A célunk tehát, hogy azt a hardverszervezést tárgyaljuk meg, amely lehetővé teszi a CPU számára a fő funkciójának teljesítését: az utasítás lehívást (intstruction fetch) és az utasítás végrehajtást (intstruction execution). 0.1 A vezérlő egység és a műveleti egység kapcsolata Egy komplex objektum, mint egy digitális számítógép egy példa egy rendszerre. Mi az információfeldolgozó rendszerben vagyunk érdekeltek, melynek funkciója, hogy az input információk A halmazát transzformálja az output információk B halmazába. A transzformációt formálisan a következőképpen fejezhetjük ki: B= f(A) Minden rendszernek két általános sajátossága van: a struktúrája és a viselkedése. Ezeknek különféle leírási módja van. A struktúrát leggyakrabban blokk-diagrammal azaz folyamatábrával

írjuk le, a viselkedést pedig például táblázatos úton. Minderre jó példa lehet egy logikai függvény megvalósítása blokk-diagrammal és táblázattal. A CPU-t feloszthatjuk egy ALU-ra vagy műveleti egységre (az adatfeldolgozó részre) és egy vezérlőegységre (a programvezérlő részre). Az adat által lefedett komponensek és kapcsolatok (adat-kapcsolatok) képezik az adatfeldolgozó részt, a többi pedig a a vezérlő rész. Az adat által lefedett adatátviteli vonalakat és az adatfeldolgozó egység által minden egyes időpillanatban meghívott műveleteket a vezérlőegység specifikálja, határozza meg. A vezérlőegység és a műveleti egység közötti megkülönböztetésre használjuk fel a bevezetett képletünket azzal, hogy mindhárom összetevőjét lássuk el sorrendben c és d indexxel. Abban az esetben, ha a vezérlési és műveleti funkciókat egymástól függetlenül valósítjuk meg, akkor az alábbi kétblokkos folyamatábra reprezentálja

a rendszer struktúráját. Ez végső soron a rendszer idealizált felosztását jelenti vezérlőegységre és műveleti egységre. FA1 A c A d vezérlõegység mûveleti egység B c B d Bc=fc(Ac) Bd=fd(Ad,Ac) Bár egységes jelölés nincs, alapvetően kétféle jelölési módot használnak az adatáramlási és a vezérlőjel-áramlási utak megkülönböztetésére. adat szimpla vonal. vezérlőjel pedig szaggatott; az adat dupla vonal, a vezérlőjel pedig szimpla. A diagramm világosan rámutat a műveleti és a vezérlőegység közötti okozati viszony implicit megkülönböztetésére: az Ac vezérlési input hat a műveleti egység viselkedésére, de az adat input semmiféle hatást nem gyakorol a vezérlőegységre. A gyakorlatban azonban az adatfeldolgozó és a programvezérlő rész közötti elhatárolás nem ennyire egyértelmű, mint azt az eddigiekben mutattuk. Gyakran a folyamatábra adatfeldolgozási részének is megengedett, hogy a vezérlőegységre

hatást gyakoroljon. Például a CPU-n belül végzett aritmetikai művelet túlcsordulást, előjelváltást, nulla kialakulását eredményezheti, s ezt a tényt fel lehet használni a vezérlőegység alternatív módon történő viselkedésére. Ezért fc mind az Ac mind pedig az Ad-től függővé válik: A c Ad vezérlőegység mûveleti egység B c Bd Bc=fc(Ad,Ac) Bd=fd(Ad,Ac) Ez az ábra már végső soron a rendszer szokásos felosztását jelenti vezérlőegységre és műveleti egységre. A két komponens közötti okozati viszony bonyolulttá, nem egyértelművé, sőt szubjektívvé teszi a rendszerek elhatárolását. Ugyanazok a jelek bizonyos esetekben vezérlőjeleknek tekinthetők a tervezés folyamán, máskor pedig adatjeleknek. Feltételezzük, hogy a rendszert blokk-diagramm formájában specifikáltuk. Ha minden blokkot felosztunk vezérlési és adatfeldolgozási részre, akkor az eredő diagrammot tekinthetjük két diagrammot tartalmazónak: az egyik

csak a vezérlőegységet, a másik pedig az adatfeldolgozó részt tartalmazza. Ekkor nem nehéz számunkra vízuálisan megkülönböztetnünk a két különálló, de összekapcsolódó alrendszert: az egyik az adatfeldolgozó, a másik pedig a vezérlőegység. Ez a felosztás azért is fontos, 2 FA1 mivel a vezérlőegységet és az adatfeldolgozó egységet általában különállóan, függetlenül tervezik. Ezen túlmenően a rendszereket megkülönböztetik aszerint is, hogy hogyan valósítják meg a legfontosabb vezérlési funkcióikat. Ha a vezérlőegység logikai áramkörökből áll és így az fc alapvetően állandó, akkor a rendszert huzalozottnak hívják. Ha pedig az fc megvalósítása memóriában tárolt vezérlési információkkal történik, és a vezérlési funkciók inkább szoftver, mint hardver úton valósulnak meg, akkor mikroprogramozott vezérlésről beszélünk. 0.2 Belső sínrendszer A központi egységen belüli belső sínek, melyek

hasonlók a külső sínrendszerhez, itt is információk száguldanak. A sín egy vezeték-köteg, melyen párhuzamosan áramlanak a bitek, továbbá a vezérlő információk. A busz rossz kifejezés, rossz asszociációt ad: a buszon egyszerre sokan utaznak, a sínen egyszerre csak egy bit lehet, tehát inkább egy fekete Mercedes a jó kifejezés. A számítógépekben, hogy megfelelő sebeséggel működjenek, párhuzamos adatáramlást kell biztosítani. Ez azt jelenti, hogy annak érdekében, hogy egy komponens egyidejűleg egy egész adatszót tudjon kezelni, a komponensek közötti adatátvitelnek párhuzamosan kell történnie, azaz egy szó valamennyi bitjét szimultán módon kell átvinni. Ennek érdekében ennek megfelelő számú vezeték (vonal) szükséges a kapcsolatok kialakításához. Ezt a bizonyos közös tulajdonságokkal rendelkező vezetéknyalábot hívják sínnek vagy busznak. A belső sínrendszer esetében a vezérlésre szolgáló vezetékek nem

szerepelnek a sínrendszer részeként, mivel a vezérlés módjából adódóan az nem különül el önálló rendszerként. A számítógépen belül a sínrendszer nem csak a processzor és más, a processzoron kívüli eszközök összekötésére szolgál, hanem magán a processzoron belül is kialakítottak egy belső sínrendszert. Ennek megfelelően megkülönböztetünk: belső sínrendszert és külső sínrendszert. Az utóbbival majd a félév végén fogunk foglalkozni, önálló előadás keretében. A belső sínrendszer kialakítását az elérni kívánt teljesítmény szabja meg. A CPU-n belüli komponensek ugyanis sokféleképpen kapcsolhatók össze. Az egyes komponensek összekapcsolási módja jelentős hatásal van a CPU műveleti sebességére, következésképpen ez az egyik olyan sajátosság, ami megkülönbözteti az egyik CPU-t a másiktól. A CPU-n belüli átviteli sínrendszerek a következőképpen alakíthatók ki: 0.21 Pont-pont vagy dedikált

sínrendszer Egy egyszerű CPU esetében, mely csupán egyetlen felhasználói regisztert ismer, az akkumulátort, összesen tíz sínnel, nevezetesen négy címsínnel és hat - utasítást és operandust továbbító - adatsínnel kell rendelkeznie. Nyilvánvaló, hogy amennyiben több regiszter érhető el számunkra és több utasítást biztosítunk, akkor több sínre van szükségünk. Minden szükséges információ átvitel számára ebben az esetben dedikált sínt biztosítunk. Az ilyen adatátviteli mód előnye, hogy sok adatátvitel történhet párhuzamosan, így ez a tendencia vezet a gyors CPU felé. A hátránya viszont, hogy igen drága lenne valamennyi sín biztosítása Ha tanulmányozzuk egy gépi utasítás műveletéhez szükséges átviteleket, kiderül, hogy az átvitelek többsége logikailag nem történhet párhuzamosan még akkor sem, ha ezt a lehetőséget fizikailag biztosítjuk. Következésképpen a CPU belső sín szervezésénél egy teljesen

dedikált vonalú szervezés gyakorlatilag sohasem használatos. 3 FA1 Ugrás Akkumulátor IR Store Eredmény Load ALU Utasítások Számítás MDR Operanduslehívás Alprogram hívás PC Utasítás lehívás MAR 0.22 Közös sín vagy egysínes rendszer A másik extrém esetként szemlélhetjük a közös sínrendszert. Valamennyi adatátvitel a közös sínen történik. Annak érdekében, hogy lehetővé tegyük az információnak az egyik regisztertől a másikhoz való áramlását, néhány logikai kapura (ki/be kapcsolóra) van szükség, amely lehetővé teszi, hogy egyidőben csak a szükséges regiszterek egyike kapcsolódjon a sínre. A közös sínrendszer előnye, hogy igen olcsó, a hátránya viszont, hgy egyidőben kizárólag egyetlen átvitel lehetséges. Így nincs lehetőségünk arra, hogy párhuzamos műveleteket végezzünk, következésképpen az ilyen típusú számítógép lassú. A közös adat és címsín használata csak a nagyon

egyszerű, célfeladatokra használt processzoroknál alkalmazott. Gyakorlati jelentősége már nincs is Akkumulátor ALU PC IR MDR MAR BelsõCPU-sín 0.23 A többsínes rendszer 4 FA1 A CPU belső sínrendszerének a legáltalánosabb formája a többsínes rendszer, mely egy kompromisszum a fent leírt két extrém eset között. Itt egynél több sín van, melyhez egynél több komponenst illesztünk, néha bizonyos regisztereket - amennyiben szükséges - pont-pont kapcsolattal kötjük össze. A kétsínes belső sínfendszer Egyszerűbb megoldást ad a 2 sínes (adat és címsín) rendszer, amely általánosan elterjedt megoldás a processzorok körében. 2-sínes rendszert alkalmaz: LSI-11, MC68020, I386/486/Pentium; Akkumulátor ALU PC IR MDR MAR Címsín Adatsín A háromsínes belső sínfendszer Nagyobb teljesítményű processzorok esetében az átvitelek gyorsítása érdekében 3-sínes rendszer kialakítása a célszerű, amelynél a címsín mellett

külön adatsín van az írásra és az olvasásra. Ezzel a közel egyidejű írás és olvasás megoldható. 3-sínes rendszert alkalmaz: AM 2900, AM29300, RISC-processzorok. 0.3 Szinkron és aszinkron processzorok 0.31 A szinkron processzorok A szinkron processzornak van egy belső órája. Ez egy elektronikus áramkör, amely rendszeres és pontos időintervallumonként elektronikus impulzusokat generál. Minden lépésnek a műveletet óraimpulzusra kell kezdenie. Bizonyos lépések végrehajtása több, mint egy óraütemet igényel, míg más lépések végrehajtása kevesebb, mint egy óraütemet igényel. Ez viszonylag egyszerű processzor felépítést jelent, de a hátránya, hogy nem minden művelet igényel ugyanolyan hosszú időt, hiába fejeződött már be az előző művelet, a következő addig nem kezdődhet meg, amíg a következő óraimpulzus nem érkezik meg. 5 FA1 óraütem lépésbefejezve A hátránya ellenére a mai processzorok többsége ilyen, pl.

az Intel család A 486 megjelenéséig a PCprocesszorokat úgy tervezték, hogy kétszeres sebességű órajelet kapjanak s minden második órajelet pedig kihagyjanak. Így például egy 386, 25 MHz-es gép tényleges órajele 50 MHz volt A 486-tól kezdve ez megváltozott, most már megegyezik az órajel a processzor frekvenciájával. Például egy 486, 25 MHz-es gépet 25 MHz frekvenciával hajtják meg. 0.31 Az aszinkron processzorok Az aszinkron processzoroknál a következő lépés akkor kezdeményeződik, mihelyt az előző lépés befejeződött. Ezáltal ez kiküszöböli a processzornak a következő órajelre való várakozását, következésképpen a processzor sebességének növekedését kell, hogy maga után vonja. Egyébként ezt az eredményezi, hogy egy extra logikai áramkör van beépítve, amely érzékeli minden esemény végét. Hátránya: az extra áramkör az aszinkron processzort drágábbá teszi (ez a lépés végét érzékelő logikai áramkör ára

magasabb, mint az egyszerű órajel áramkör); az esemény végének az érzékelése bizonyos időt igényel, és ez csökkenti a szinkron processzorhoz viszonyított időmegtakarítést. lépésbefejezve lépésvégeérzékelve, új lépéskezdete Az aszinkron üzemmódú CPU egyébként általában gyorsabb, de bonyolultabb és drágább, mint a szinkron üzemmódú. 1. Műveletvégző egység Részei: 1. 2. 3. 4. regiszterek adatutak (a címsín itt már nincs értelmezve!) kapcsolópontok a szűkített értelemben vett ALU 1.1 Regiszterek Gyors hozzáférésű átmeneti tárolók, mely a műveletvégző egységen belül helyezkedik el. Ebben adatokat tárolhatunk, elérésük gyors. Lehet engedélyezni vagy tiltani az írást: van vezérlője A regisztereket két csoportba sorolhatjuk: - az egyik csoport már a logikai architektúrában szerepelt: programozható regiszterek (szabadon felhasználhatók). A CPU főbb építőelemei - köztük a programozható regiszterek - a

következők: - "rejtett" (belső) regiszterek (a felhasználó nem látja őket. Pl mindenféle puffer-regiszter) Ezt nézzük meg a következő példákon keresztül: 1.2 Adatutak 6 FA1 Vizsgáljuk meg a műveletvégző egységen belüli adatutakat. Ezek az építőelemek a legkülönfélébb módon kapcsolhatók össze és szervezhetők. 1.11 Adatút csatolási módok 1.111Egy adatutas: Ebben az esetben az ALU és a CPU valamennyi regiszterét egyetlen közös adatút köti össze. Ezt nem szabad összekeverni az adatsínekkel, amelyek a CPU-t a memóriával és az I/O egységekkel kötik össze. A három külső sínt (adat - MDR, cím - MAR, vezérlő - control) az ábra a memóriával kapcsolatosan tartalmazza. Az R0-Rn regiszterek száma és funkciója gépenként változó. Ezek lehetnek általános célú regiszterek a programozó számára, de egy részük lehet dedikált, speciális célú regiszter is, mint az index vagy a stack regiszter. A két SRC0 és

SRC1 regisztert korábban nem említettük. Ezek a programozó számára transzparensek Viszont a programozónak számításba kell venni a létezésüket, bár sohasem hivatkozhatunk rájuk közvetlenül egyetlen utasításban sem. Ezeket csak a CPU használja ideiglenes (temporary) tárolásra bizonyos utasítások végrehajtása során. Egyébként sohasem használatosak az egyik utasítás által generált adat más utasítás által történő későbbi hasznosításra. Vizsgáljuk meg az előző példát: ADD R0,R1 (R0:=R0+R1) R0 R1 Rn SRC1 SRC0 ALU RSLT A végrehajtás hipotézisa: 1. 2. 3. 4. SRC0 ←R0 SRC1 ← R1 RSLT ←R0+R1 R0 ← RSLT Előnye. olcsó Hátránya: nincs párhuzamos műveletvégzés 1.112 Két adatutas: 7 FA1 Az egy adatutas megoldás csupán a CPU építőelemeinek egy lehetséges összekapcsolási formáját adja. Egy alternatív megoldás a két adatutas. Valamennyi regiszter outputot az A adatúthoz, s az összes regiszter inputot pedig a

B adatúthoz csatlakoztatják. R0 R1 . Rn SRC1 SRC0 ALU RSLT regiszter output regiszter input A végrehajtás hipotézisa: 1. 2. 3. 4. SRC0 R0 SRC1 R1 RSLT R0+R1 R0 RSLT Az előző utasítás 4. lépése és az aktuális utasítás 1 lépése párhuzamosan folyhat Előnye: gyorsabb Hátránya: drágább 1.113 Három adatutas: Ekkor szakosodott adatutak: 2 db regiszter output adatút 1 db regiszter input adatút 8 FA1 R0 R1 Rn SRC0 SRC1 (pl. PDP11/45) ALU RSLT A végrehajtás hipotézisa: 1. 2. 3. 4. SRC0 ← R0 SRC1 ← R1 RSLT ← R0+R1 R0 ← RSLT Az előző utasítás 4. lépése és az aktuális utasítás 1 és 2 lépése párhuzamosan folyhat Előnye: gyorsabb Hátránya: drágább A fizikai folyamatra nem tudunk hivatkozni a programból. Megvalósításuk multivibrátorral (flipfloppal); Típus: RS, VK, D, T; élvezéreltek vagy szintvezéreltek 1.3 Kapcsolópontok A sín nem megosztható eszköz. Egy sínen egy időben

csak egy adó lehet Ha kettő, a bitek ütköznek Egy sínre több egység kapcsolódik. A rávezető és az onnan elvezető vonalban van egy-egy kapcsoló, melyek feladata: egy időben az adatúton csak egyetlen egy lehet nyitva. 9 FA1 A kapcsoló természtesen nem fizikai, hanem tranzisztor. Három állapotú 0 1 Z, amikor adat nem folyhat át rajta. A regiszter output kapuja képes arra, hogy a regisztert elektronikusan lekapcsolja az adatútról, vagy pedig 0-át vagy 1-et helyezzen az adatútra. Mivel ez három lehetőséget támogat, az ilyen kaput háromállapotú kapunak nevezzük Önálló input-vezérlés is van, ami lhetővé teszi, hogy a regiszter elektronikusan le legyen kapcsolva az adatútról illetve az adatútról 0-át vagy 1-et fogadjon. A kapcsolópontok általában a regiszter részét képezik. 1.4 ALU Akármilyen parancssort nézünk meg, valami mindig közös: az összeadás végrehajtása. Ez annyira elemi operáció, hogy nélküle nem lehet meglenni.

(Tulajdonképpen kizáró vagy-okkal meg lehet csinálni az összeadást, csak nagyon macerás. Két bitet még csak-csak össze tudnánk adni, megcsinálhatnánk a carry-átvitelt, majd a három érték összeadását. Ha mindezt feltupírozzuk előjelek kezelésével, már túl bonyolult. Tehát mindez helyett inkább az összeadás az elemi művelet Az összeadás jelentőségét növeli, hogy több, más műveletnél, így a szorzásnál is szerepel, mert összeadásra vezetjük vissza. 1.41 Fixpontos műveletek 1.411 Normál bináris kódú pozitív számok összeadása Egybites félösszeadó Maga a bináris összeadás: A 1 B 1 C 10 átvitel összeg Két egybites normál bináris kódú szám összeadását egy kétbemenetű és kétkimenetű kombinációs hálózattal végezhetjük. Σ 2 A B S C A két összeadandó bit az A és a B bemeneten érkezik. Az S (summa) kimeneten jelenik meg az összeg, a C (carry) kimeneten pedig az esetleges átvitel. A hálózat

működését a bináris összeadás szabályainak figyelembevételével a következő igazság táblázat írja le: A 0 0 1 1 B 0 1 0 1 S 0 1 1 0 10 C 0 0 0 1 FA1 Ez alapján felírhatjuk a kimenetekre vonatkozó logikai függvényeket, s realizáljuk ezt kapukkal: S=AB+AB= A ⊕B C=AB =1 A S B & C Ezt azért nevezzük félösszeadónak, mert két bináris számot összead ugyan, de mi van a bejövő carryvel? A félösszeadó jelölése: ∑/2 Az egész összeadó: határozzuk meg az összeget, majd adjuk hozzá a carry-t. Teljes összeadó 2 db ∑/2-ből Cin X Y S Σ 2 S C Σ 2 C 1 Cout S - csak részösszeg C és C - csak részt-carry Teljes összeadó Általában egy kombinációs logikai áramkörrel valósítják meg. Az operandusokat az ALU számára két regiszter outputjaként biztosítják a belső sínen keresztül. Az eredményt általában egy másik regiszterhez csatlakoztatják, mihelyt a konbinációs áramkörök azt végrehajtották.

Általában az ALU művelet gyorsabb, mint a memória-elérési művelet. Ez azt jelenti, hogy egy olyan utasítás, amely ALU műveletet jelent olyan operandusokon, amelyeket a memóriából kell kiolvasni, nem igényel számottevően több végrehajtási időt, mint az utasítás, amely csak a memória egyik helyéről átmozgatja az információt a memória másik helyére. 11 Σ A S FA1 Cout B Cin Igazságtábla A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Cin 0 1 0 1 0 1 0 1 S 0 1 1 0 1 0 0 1 Cout 0 0 0 1 0 1 1 1 A logikai függvények felírása A Cin helyett egyelőre csak sima C-t írva írjuk fel a logikai függvényeket: S=ABC + ABC + ABC + ABC Cout=ABC + ABC + ABC + ABC Azonos átalakítások Hajtsunk végre azonos átalakításokat a következő célfüggvénnyel: minimalizáljuk a szintek számát (azaz a végrehajtási időt); csökkentsük az elemszámot (strukturális egyszerűsítés és költségmérséklés); Ennek során használjuk fel a Boole-algebra

néhány alaptételét: A+A=A AB+AB=AB A+A=1 [1] [2] S=(AB+AB)C + (AB+AB)C A⊕B A⊕B Levezetés (miért tudjuk az első zárójelet átalakítani?): ( )( ) A ⊕ B = AB + AB = AB∗ AB = A + B A + B = AA + AB + AB + BB = AB + AB X=A⊕B S=XC+XC=X⊕C=A⊕B⊕C (3) Ha kapukkal realizáljuk, fontos: a kizáró vagy csak két operandus között van értelmezve, ezért három kaput ne rajzoljunk fel. A megoldás: kettőt felrajzolunk s az outputja meg a harmadik A [2] alapján: abc=abc+abc+abc Ezt behelyettesítve a következőt kapjuk: Cout=ABC+ABC+ABC+ABC+ABC+ABC A következő Boole-algebra tétel alapján egyszerűsíthetünk: A+A=1 Cout=BC(A+A)+AC(B+B)+AB(C+C) Cout=BC+AC+AB=AB+(A+B)Cin A carry-nek tehát két része van. az AB, melyben a befolyó carry nem szerepel, tehát független tőle; s a másik pedig függ tőle. Megvalósítás Realizáljuk kapukkal a kapott logikai eredményeket: 12 (4) FA1 S=a ⊕ b ⊕ c: =1 A =1 S B C (3) Cout=AB+(A+B) Cin & A B A

1 C out 1 B & C (4) Az összeadás időszükségletének kiszámításhoz figyelembe kell venni az egyes logikai kapuáramkörök jel-késleltető hatását és a "leghosszabb út" áramköreinek a számát. Ez egy háromszintű hálózat Amennyiben a C-re kapott másik alakot valósítjuk meg, akkor kétszintű hálózatot kapunk. Ezt szeretjük inkább: Cout=AB+AC+BC 13 FA1 A & 1 B A & Cout C B & C (3) A megvalósított egység tesztelése Amennyiben a megvalósított egység nem az elvárt módon működik, akkor ismét el kell végeznünk az azonos átalakításokat és a költséges megvalósítást. Ha viszont bármilyen apró módosítást, továbbfejlesztést szeretnénk rajta végrehajtani, akkor vissza kell mennünk egészen az igazságtábláig. Tehát a módszer hátránya a nagyfokú erevsége és a hardver-megvalósítás okozta költségessége. Így elkészült az egybites teljes összeadónk, a gyakorlatban azonban

ritkánvan szükségünk két bit öszeadására, mivel a bináris számokat általában n-bite regiszterekben tároljuk. Hogyan csinálunk tehát a regisztereket is kezelni tudó n-bites összeadót? n-bites soros összeadó Az összeadandó két szám, A és B megfelelő bitjeit a legkisebb helyiértékűtől kezdve ráadjuk az összeadó bemeneteire. A minden egyes egybites összeadás eredményeképpen keletkező carry-t egy flipflop tárolja és a következő egybites összeadás során inputként fog szerepelni A soros összeadó tehát az operandusokat a legalacsonyabb helyiértéktől kezdve bitenként egymás után összeadja. Más szavakkal: az első lépésben összeadja a két operandus 0 bitpárját, utána az 1 bitpárját, vagyis az összeadás "jobbról balra" - a növekvő bináris helyiérték irányába - halad. Világos, hogy egy összeadási műveletet annyi lépésben végez el, ahány bitesek az operandusok. Ha a két összeadandó szám hossza nem

egyezik meg, akkor a lépésszámot a hosszabb parancs határozza meg, ugyanis a gép ilyenkor automatikusan kiegészíti a rövidebb operandust értéktelen, ún. vezető nullákkal Az elrendezés legfontosabb része az egybites teljes összeadó. Ennek a felépítését már ismerjük Működését a következő példával szemléltethetjük. Figyelmet érdemel az a körülmény, hogy a soros összeadóban csupán egyetlen összeadó van. Az A és B operandust egy-egy önálló regiszterben tároljuk a munkavégzés kezdetéig. Ez más szavakkal azt jelenti, hogy az összeadás megkezdése előtt ezt a két regisztert fel kell tölteni a megfelelő operandusokkal. A regisztereket úgy alakítják ki, hogy alkalmas vezérlőjelek segítségével tartalmukat egy bittel jobbra lehet léptetni. Az összeadás az alábbi módon megy végbe: 14 FA1 carry A B Σ léptető-regiszter léptető-regiszter S Cout 1 Cin tároló vagy 1-bites késlel-tető az első léptetőjel

hatására az A és a B legalacsonyabb helyiértékű (jobbszélső) bitje belép az egybites teljes összeadóba, amely az S kimenetén a helyes részösszeget, a Cout kimenetén pedig az esetleges átvitelt szolgáltatja; az S részösszeget közvetlenül visszavezetjük az A helyére. Az első lépés befejeződése után tehát a felső regiszter legfelső bitje már nem az A operandushoz, hanem a végeredményhez tartozik; az egy bites teljes összeadóhoz csatolt tároló addig tárolja a Cout átvitelt, amíg esedékessé nem válik a következő bitpár összeadása. Ekkor a teljes összeadó a már megismert módon hozzáadja az átvitelt az aktuális "félig kész" részösszeghez. Az összeadó működését tanulmányozva fontos következtetést vonhatunk le, hogy milyen információ vész el illetve őrződik meg az összeadás során. Mivel az A operandusunkat az eredmény felülírja, az összeadás elvégzése után az A itt többé nem áll

rendelkezésünkre. A B operandust azonban lépésenként visszavezetjük saját korábbi helyére, ez tehát ismét felhasználható. Tulajdonképpen A sem veszett el véglegesen, hiszen megtalálható az operatív tárban vagy másik regiszterben, vagy pedig valamilyen háttértárolón. Ahhoz azonban, hogy az A-t valamilyen aritmetikai műveletben szerepeltessük, újból be kell töltenünk az ALU által látott valamelyik regiszterbe. - Abban az esetben, ha a teljes összeadó és a flip-flop műveletvégzési időigényét sorrendben d és a D-vel jelöljük, akkor az n-bites összeadás időigénye n(d+D) lesz. Meg kell jegyezni egyébként, hogy a szükséges áramkör mennyisége az n-től független. T∑=n(d+D) vagy T∑=nt Ez a min. összidő, ennél csak hosszabb lehet a rezsi-időket is figyelembe véve Hogyan tudunk gyorsítani? a d értékét csökkentjük: igen gyors kapukat alkalmazva. Egy lassú kapu 20 nsec-os, ennél inkább gyorsabbak; bit-helyiértékenként

párhuzamosan hajtjuk végre az összeadást. 15 FA1 n-bites párhuzamos összeadó (ripple adder - terjedő vagy végighullámzó összeadó) An-1 Bn-1 Σ Cout Sn-1 B2 A2 Σ Cn-2 B1 A1 Σ C2 S2 0101 1010 1111 <---- 0 C1 B0 A0 Σ S1 C0 Cin S0 Példa 1 Példa 2 Végrehajtási idő τ 2τ 3τ 4τ Művelet 0101 1010 1110 1100 1000 10000 Átvitel (carry) Művelet leírás <---- 1 elkészült a párhuzamos összeg elkészült a c1 carry elkészült a c2 carry elkészült a c3 carry A valamennyi n bit-párt szimultán módon összeadó áramkört párhuzamos összeadónak nevezzük. Egy egyszerű párhuzamos összeadót kialakíthatunk n db teljes összeadóból. Minden egyes teljes összeadó fokozat balról egy carry bemenetet tartalmaz. Könnyen belátható, hogy a vázolt módon a párhuzamos összegzéshez annyi idő szükséges, amennyi idő alatt a legkisebb helyiértéken keletkező átvitel (carry) hatása el tud jutni a legnagyobb

helyiértékig. Az összeadandó számok változása után ugyanis az Si kimeneten mindig tranziens változás játszódik le, amíg minden egyes Ci-1 bemenet értéke nem állandósul. Ez a legnagyobb helyértéken következhet be legkésőbb. A legkedvezőtlenebb esetben ugyanis minden helyiértéken történhet változás a keletkező átvitel értékében. A maximális összeadási időigény tehát nd, ahol d egy teljes összeadó fokozat időigénye. Láthatjuk, hogy nagy mennyiségű többlet-áramkörrel ugyanazt az időeredményt értük el, mint a soros összeadónál, azaz az időszükséglet a bitek számával (n) lineárisan nő. Tehát a ripple-carry adder (terjedő vagy végighullámzó átvitel) esetén hiába végeztük el ugyanis magát a bit-összeadást párhuzamosan, időt mégsem nyertünk. A gyors összeadó tervezésének általános stratégiája, hogy csökkentsük azt az időt, ami a carry terjedéséhez szükséges. "Szimultán" átvitelképzés

vagy carry look-ahead vagy rekurzív módszer Mit lehet tenni? Használjuk azt az összefüggést, amelyből a (4) ábrát kaptuk: Cout=AB+(A+B)Cin 16 FA1 A carry tehát független az előző helyiértéken képződő carry-től, kizárólag a befolyó operandusoktól és a kívülről beérkező átviteltől függ. Mindent tehát előre ismerünk, hisz a mindhárom forrásadat előre ismert és az összeadás végrehajtása megkezdésekor már a rendelkezésünkre áll. AB bitcsoport = G (Generate: a carry-t generáló bitcsoport A+B bitcsoport = P (Propagate: a carry-t terjesztő bitcsoport) Tehát az összefüggésünk új alakja: Ci= Gi + Pi Ci-1 C0=G0+P0*Cin C1=G1+P1*C0=G1+P1(G0+P0Cin) C2=G2+P2*C1=G2+P2(G1+P1(G0+P0Cin)) C3=G3+P3(G2+P2*(G1+P1(G0+P0Cin))) Cn-1=Gn-1+Pn-1(Gn-2+Pn-2*(Gn-3+Pn-3(.))) Ez akkor lesz jó, ha elvégezzük a kijelölt műveleteket: C2=G2+P2G1+P2P1+P1G0+P2P1P0*Cin C3=G3+P3G2+P2G2+P3P2G1+P3P2P1G0+P3P2P1P0*Cin Akármennyire fejtem is ki, mindig lesznek

benne szorzatok s azokat kell összeadni s ez együtt kettő kapumélység. Ehhez jön a P és G meghatározásához szükséges további kapumélység, tehát összesen 3 kapumélység, azaz a carry-lookahead összeadó teljes ideje 3d: Tn=3d A 1 P B A B & 3 G 2 & & 1 C & 17 3 FA1 Több emitter: kollektor emitter Max. 16 bemenetet gyártanak, nem fér el több emitter Ezért 4 vagy max 8 emitter Ez a CLA - carry look ahead (gyors átvitel előrejelzés) összeadó. A következőképpen valósítható meg: Mivel a carry-generáló egyenletek összetettsége a fokozatok számával nő, ezért gyakorlati megfontolásokból a carry-lookahead fokozatok száma kisebb nyolcnál. A CLA áramkörök architekturális elhelyezkedése Összeadó+carry look ahead (gyors átvitel előrejelzés) Az átvitelgyorsító (CLA) az átvitel értékét az összeadandó számok bitjeiből és a Cin-ből még az összeadás elvégzése előtt, minden helyértéken

egyszerre állítja elő. CLA Cn-2 A n-1 B n-1 C1 C2 A out A 2 Sn-1 Cn-2 C 2 B1 1 A S 2 C 1 B 0 0 C S S S S C B 2 C0 S 1 C 0 S 0 A carry-k továbbra is képződnek, csak nem használjuk őket semmire, mert igen lassan jönnek létre. P és G előállítás az összeadókban A gyakorlatban alkalmazott másik módszer szerint minden egyes teljes összeadónak a ci carry output vonalát helyettesítik a két carry generate gi és propagate pi jelt előállító áramkörrel. 18 in FA1 CLA Cout P P G P G P C in G S S S S G Két kapuval többet tesznek be a tokba, ennek nincs semmi akadálya. Itt a művelet három lépésben zajlik: 1. az összeadókban bit-helyiértékenként párhuzamos összeadás valamint P és G képzés; 2. a CLA-ban előállítjuk egyszerre az összes carry-t: 3. az összeadókban bit-helyiértékenként párhuzamosan hozzáadjuk a kapott összegekhez a carryket. (saját elképzelés) Hosszú operandusok esetén

csoportképzés Egy darab CLA 8-bites, hogy 32-bites szót tudjunk feldolgozni, négyet veszünk belőle. Cout Cout Cout C in Minden jó. de a carry sorosan terjed a 8-bites egységek között Ezért eggyel magasabb szintre hozzárendelünk egy ugyanolyan carry előrejelzőt. Cout CLA Áramkörileg a két fölső szint teljesen megegyezik. Gyakorlati IC-példák a Fodor Tamás: Digitális szgépek 183. oldalán! Három szám összeadása (carry-save adder - carry-megtakarító összeadó Néha szükség van rá, hogy kettőnél több operandus összeadását egyetlen lépésben végezzük el. Ennek szokásos eszköze az átvitel-megtakarító (carry-save) összeadó, amelynek elve, átvitel-végigfutást csak akkor hozunk létre, amikor már kettőre redukáltuk az operandusok számát. Általánosságban n operandus esetén az áramköröknek n-1 emelete van. Minden emelet áramköri készlete azonos, és egyébként alkalmas lenne két operandus összeadására, de a megszokott,

végighullámzó átvitelképzést csak a legalsó emeleten találjuk meg. ábra: Sára: 76. oldal 19 FA1 Z=W+X+Y w x 3 w 3 2 x S Z5 c S C S 3 Z Z4 2 C 2 S S S 1 C Z 1 Z 1 1.412 Fixpontos kivonás A kivonás művelete az összeadáshoz hasonlóan végezhető el, ha biztosítjuk, hogy a kisebbítendő helyére a nagyobb, a kivonandó helyére pedig a kisebb szám kerüljön. Ellenkező esetben ugyanis az eredmény nem lesz helyes, ha bitenként formailag helyesen is végezzük el a műveletet. A kivonás megkezdése előtt tehát a két számot össze kell hasonlítani és ennek eredményétől függően kell azokat beírni a megfelelő regiszterekbe. A párhuzamos és soros kivonás ezek után ugyanúgy valósítható meg, mint az összeadás. A kivonó hálózatok természetesen módosulnak az elvégzendő műveletnek megfelelően. Itt is felépíthetjük az igazságtáblát, megállapíthatjuk az eredmény megkapása érdekében végrehajtandó logikai

függvényt, az azonos átalakítások eredményeit pedig kapukkal realizálhatjuk. Az aritmetikai műveleteket a számítógépben előjeles számok között kell végezni. Ezért az ismertetett eljárásokkal nagyon gyakran kellene komparációt végezni és ettől függően összeadást vagy kivonást végezni. Ennek elkerülésére célszerű az előjeles számokat olyan kódban ábrázolni, amely lehetővé teszi, hogy az aritmetikai alapműveleteket - így a szorzást és osztást is - az előjeltől függetlenül összeadási lépésekre vezessük vissza. Így a számítógépben csak az összeadás műveletét kell megvalósítani és az összeadó hálózatot megfelelőképpen vezérelni. Az ALU-ban tehát valójában csak az összegző hálózat végez igazi aritmetikai feladatot, a többi művelet az összeadási lépések megfelelő összeállítása révén valósul meg. Sokfajta kódolási módszer létezik, ezek közül csak kettőt veszünk, az egyes és a kettes

komplemens szerinti ábrázolást. Inverz kód vagy egyes komplemens A hagyományos módszer a fixpontos kivonásra, hogy a kisebbítendőből kivonjuk a kivonandót. Pl +13 -(+7) 1101 0111 20 (+7) 0 S Az első lépcsőben keletkező carry-ket nem vezetem végig, hanem a második lépcsőbe vezetem be összeadandóként. A B x 0 y1 S Z 2 3 w S S S3 4 x 1 1 y2 y3 0 w 2 0 0 FA1 +6 Ezt a módszert már elvetettük. Helyette képezzük a kivonandó egyes komplemensét, s adjuk hozzá a kisebbítendőhöz. Ha a szám pozitív, akkor a komplemense önmagával azonos. A szám előjelét jelezzük az elé írt 0-val vagy 1-sel, attól függően, hogy a szám pozitív-e vagy negatív. Így előjelbites egyes komplemes számot kapunk. Az előjelbitet a többi bittel azonos módon kell kezelni, így az eredményben keletkezett előjelbit szintén helyesen jelzi az eredmény előjelét. Ha az eredmény negatív, akkor az előjelbitje 1 és az abszolút értéke az

egyes komplemens képzés útján állapítható meg. A 7 egyes komplemense, az előjelbittel együtt: 11000 (-7) A B 13 +(-7) 01101 11000 100101 (+5) Az eredmény nem helyes. Különböző megfontolásokból a legnagyobb helyiértéken keletkező átvitelt adjuk hozzá a legkisebb helyiértékhez: 100101 1 (5) (1) (6) 00110 Megállapíthatjuk tehát, hogy kivonás helyett összeadással is eljuthatunk a végeredményhez, ha a negatív számokat (kivonandókat) egyes komplemens kódban ábrázoljuk és az eredményt az említett átvitel-visszacsatolással módosítjuk. B Trans A Cout S Eredmény =1 OVF EzaC C carrymegragadása i-1 i OVF=túlcsordulás Ez képes az A-B-re. Két multiplexer kell a B-A-hoz: 21 Cin FA1 Ha A+B-t is tud, az lesz a tökéletes. Vezérelhetnénk, hogy most invertálja-e a B értékét vagy sem Erre a legjobb a kizáró vagy. input a vezérlőláb 0 0 1 1 output c 0 1 1 0 b vezérlőláb 0 1 0 1 Ha a vezérlőláb 0, akkor átengedi

egy az egyben, ha pedig 1, akkor invertál. Milyen műveletet kell elvégeznünk ahhoz, hogy e funkciót tejesítse? Ez pont a kizáró vagy. A TRANS egység: Bbitjei =1 x3 =1 x2 =1 =1 x1 x0 Vezérlés (+/-) 0/1 Túlcsordulás Bármilyen is a számábrázolás, előfordulhat, hogy egy aritmetikai művelet eredményeként olyan számot kapunk, amely nem ábrázolható annyi helyiértéken, amennyi az adatszóban rendelkezésre áll. Ebben az esetben a kapott eredmény természetesen nem helyes, ezért ezt az ALU-nak jeleznie kell. Ezt a jelenséget túlcsordulásnak nevezzük. OVF = Ci ⊕Ci-1 A legnagyobb helyiértékből kifolyó és a legnagyobb helyiértékbe befolyó carry kizáró vagy kapcsolata. Összeadok két pozitív számot és negatívot kapok vagy összeadok két negatív számot és pozitívat kapok, akkor van túlcsordulás. Tehát összeadás esetén csak azonos előjelű operandusok esetén értelmezett a túlcsordulás. Pl. (az első bit az előjel) 22

FA1 0100 0110 1010 0 ⊕ 1 = 1: van túlcsordulás pozitív pozitív negatív 100 101 001 negatív negatív pozitív 1 ⊕ 0 = van túlcsordulás 110 111 101 1 ⊕ 1 = nincs túlcsordulás A túlcsordulás megjelenését fontos, hogy felfedezzük a számítógépen. Szokásos, hogy ennek jelzésére egy flag-et szentelnek indikátorként. Amikor egy összeadási vagy kivonási művelet túlcsordulást eredményezett megszakítás következhet be. A programozó feladata, hogy eldöntse a foganatosítandó cselekedeteket. Kettes komplemens kód (KKK) A legkisebb helyiértéken az egyes hozzáadását a kettes komplemens képzésekor a művelet előtt hajtjuk végre. Így a legnagyobb helyiértéken keletkező átvitelt nem kell visszacsatolni, hanem figyelmen kívül hagyható. Végezzük el a korábbi feladatot kettes komplemens vonatkozásában is. A 7 kettes komplemense, az előjelbittel együtt: 11001 (-7) A B 13 +(-7) 01101 11001 100110 (+6) Az egyes komplemes-képzéshez

képest két különbség: az egyes komplemens képzés helyett mindenütt kettes komplemens képzést kell alkalmazni; nem kell az eredményt átvitel-módosítással korrigálni. A 13 01101 B+(-7) 11000 100101 vezérlés 1 eredmény (5) (1) (6) 00110 B Vezérlés input: összeadáskor 0, kivonáskor 1 A Cout Trans Σ Eredmény 23 Cin FA1 A vezérlőkód 1-ét bevezetjük Cin-ként s így az eredő: kettes komplemens kód képzés. Többletes kód Kevés van róla Fodor: 181. oldal feladataiban 1.413 Fixpontos szorzás A szorzás és az osztás jóval komplexebb művelet, mint az összeadás és a kivonás. A végrehajtási idejük jóval lassúbb, mint az egyszerű összeadás, MOVE, stb. Ennek oka, hogy a megvalósításuk során az ALU-ban egy összeadási - kivonási - léptetési sorozat zajlik, amit a mai gépeken mikroprogram vezérel. A nagyteljesítményű gépeken hardver úton megvalósított szorzókat és osztókat használnak, hogy növeljék az aritmetikai

műveleti sebességet. Mivel az ADD, SUBTRACT és SHIFT elérhető gépi utasítás formájában, ezért mind a szorzást, mind pedig az osztást meg lehet valósítani szoftver úton, program-eljárás segítségével. Tehát öszefoglalva: olcsó gép közepes gép gyors, drága gép gépi kódú eljárás mikroprogram áramköri szorzó és osztó Szorzási algoritmusok, nemnegatív számok szorzása a) a szorzó legkisebb helyiértékű jegyével szorzok, majd a szorzatot balra eltolva összeadom. C=A*B 13x123 39 26 13 1599 b) algoritmikusabb: ciklikusan ismételve a szorzást és a részletszorzatnak egy gyűjtővel való összeadását 13x123 0000 39 0039 260 299 1300 1599 ez egy gyűjtő (használat előtt kinullázandó) c) nem szorzással, hanem eltolással valósítjuk meg az előzőt: 13x123 0000 az algoritmus: 39 szorzás 0039 összeadás 26 léptetés 299 s ezt annyiszor végezzük, ahány jegye van a szorzónak 13 1599 Bináris műveletvégzés 24 FA1 Az

algoritmust tehát annyiszor hajtjuk végre, ahány jegye van a szorzónak. Mivel bináris számokkal számolok, a szorzó eleve hosszú, jóval hosszabb, mint a decimális esetén. Ennek következményei: A szorzás időigényessége, a bináris szám hossza: Láthattuk, hogy a szorzás ciklusmagját annyiszor ismételjük, ahány jegye van a szorzónak. Hasonlítsuk össze a decimális és a bináris szám hosszát: A decimális helyiértékek száma 1 2 3 Példa A bináris helyiértékek száma 4 7 10 9 99 999 Példa 1001 1100011 11011001001 Tehát a „Szorzási algoritmusok”-nál alkalmazott háromjegyű, 123-as szorzó binárisan tíz számjeggyel írható fel, így a ciklus három helyett tízszer fut azaz több időt vesz igénybe. Ez rögtön rámutat a szorzás jelentős időigényére is, hisz végső soron elméletben annyi szorzást összeadást hajtok végre, ahány egyes van a szorzóban, s annyi léptetést, ahány jegyű a szorzó. A szorzat hossza A szorzás

elvégzésekor az eredmény max. kétszerese az operandusok hosszának Vizsgáljuk meg a példánkat: Operandusok A B C Példa A decimális helyiértékek száma 1 1 2 1 2 2 2 3 4 9x9 9x99 99x99 Általános forma (helyiérték) m n max. m+n A bináris helyiértékek száma 4 7 max. 11 A szorzat keletkezése két regiszterben Maguk az operandusok szóhosszúságúak. Architekturálisan a regiszterek az adatszó hosszával egyeznek meg, a fenti szabálynak megfelelően az eredményt befogadó akkumulátornak (vagy más e célra használt) regiszternek kétszeres hosszúságúnak kellene lennie. Az algoritmust tehát annyiszor hajtjuk végre, ahány jegye van a szorzónak s miután valamelyikkel szoroztam, utána már nincs rá szükségem. A feleslegessé váló szorzó-jegyek helyén tároljuk el az eredménynek már lépésenként elkészülő eredmény-helyiértékeit (ezek már ki vannak shiftelve, nem vesznek részt az összeadási műveletben). Példaképpen nézzük meg a

fenti esetben a szorzó és az eredmény kisebb helyiértékeinek változását, feltételezve, hogy három jegyű a szóhosszam. 1 2 3 9 1 2 9 9 1 5 9 9 A szorzat nagyobb helyiértékei (adott példában az 1) a szorzat nagyobb helyiértékei számára kijelölt regiszterben képződnek. Előjeles számok szorzása (soros szorzók) 25 FA1 Ábra és leírás: Gál II. kötet 26-27 oldal) A számok abszolút értékes kódban vannak az abszolút érték előállítása az előjel eltávolításával, eredmény előjel (signum) meghatározása: S=S1 ⊕ S2 elvégezzük az előjel nélküli szorzást; visszaállítjuk a helyes előjelet. A módszer egyértelmű, a macerás csak: az előjel levágása és az új előjel visszaállítása A számok kettes komplemens kódban vannak Az algoritmus a nem inverz (egyenes) kódhoz hasonló, a különbség csupán annyi, hogy amikor a szorzó legmagasabb helyiértékű bitjével szorzunk, akkor a részletszorzatot nem hozzáadjuk,

hanem levonjuk a részletösszegből. A kettes komplemens kódú ábrázolás úgy is tekinthető, mintha a legmagasabb helyértékű bit súlyozása negatív, a többié pedig pozitív lenne. Mivel azonban a szorzandó maga is lehet, hogy negatív szám, a részletösszeg jobbra léptetésekor az előjelbitre különös tekintettel kell lennünk, azaz a korábbi előjelbitet jobbra léptetjük, ugyanakkor a legmagasabb pozícióban változatlanul megismételjük ("csíkot húz maga után"). A szorzás gyorsítása Bit-csoporttal történő szorzás A szorzónak egyidejűleg nem egy, hanem több, például két egymás melletti jegyét vesszük figyelembe és egy-helyiértékes léptetés helyett több helyiértékes léptetést végzünk. A szorzó egymás melletti két bináris jegye 00, 01, 10 vagy 11 lehet: • 00 esetén nem kell a szorzandót a részösszeghez hozzáadni, csak kettőt léptetünk balra; • 01 esetén a szorzandó egyszeresét adjuk hozzá, majd kettőt

léptetünk balra, • 10 esetén a szorzandó kétszeresét (egy helyiértékkel balra tolt értékét) adjuk hozzá, majd kettőt léptetünk balra • 11 esetén a szorzandó háromszorosát kell a részösszeghez hozzáadni, majd kettőt léptetünk balra Az utóbbi esetben már másképpen csinálják: néggyel szoroznak, majd kivonják belőle a szorzandó egyszeresét, így gyorsabb. A magyarázatot lásd a Booth-féle algoritmusnál Példa A feladat kijelölése (7x9)D =63 (0111x1001)B A részlet-számítás (a szorzandó kétszeresének meghatározása) eltolással összeadással 0111 = 7D kettővel való 0111 szorzása megfelel az +0111 1110 eggyel balra léptetésének: 1110 = 14D azaz 7+7=14 (igen gyors) (viszonylag lassú) Maga az összeadás 0111x1001 0000 0111 0111 1110 111111 7x9=63 Az összeadás lépései tehát: 1. 2. hozzáadom a kinullázott gyűjtőhöz a szorzandó egyszeresét, majd kettőt léptetek balra meghatározom a szorzandó kétszeresét, majd

hozzáadom 26 szorzás 01-gyel szorzás 10-val FA1 A hárommal való szorzás helyett már másképpen csinálják: néggyel szoroznak, majd kivonják belőle a szorzandót, így gyorsabb. Ezzel már előre is siettünk a következő gyorsítási lehetőségre Booth-féle algoritmus Azért lassú egy szorzás, mert sok 1-es van a szorzó bitjeiben s ez sok összeadást jelent. Az algoritmus próbálja dekomponálni (trükkösen átalakítani) úgy, hogy kevesebb egyes legyen benne. Nem működik minden számra. Azoknál jó, ahol hosszú, csupa egyes vagy csupa nullás csoportok vannak A konkrét algoritmus helyett az elv: Például 62-vel kell szoroznunk. 0011|1110 = 62 Mivel 5 db egyest tartalmaz, ez 5 db egységnyi műveletet eredményez (az összeadást tekintve egységnek) Gyorsítás: 62 közel van a 64-hez 64-2= 26-21 Így a szorzandót megszorzom 64-gyel, majd kettővel és veszem a két eredmény különbségét: 0100|0000 -0000|0010 64 -2 A binárisan végzendő

műveletek: • hatszoros léptetés balra; • a egyszeresének hozzáadás a gyűjtőhöz; • egyszeres léptetés balra; • a szorzandó egyszeresének hozzáadás a gyűjtőhöz; • a két eredmény kivonása egymásból. Mivel a léptetés rendkívül gyors, tehát összesen 2 db összeadást, majd 1 db kivonást végzek, ami 3 db egységnyi műveletet jelent. Az eredeti megoldással szemben 40%-os gyorsítást sikerült elérnünk! Az egzakt algoritmus helyett az elv: 0011|1110 = 62 ez közel van a 64-hez 64-2= 26-21 Tehát hatszoros léptetés balra, egyszeres léptetés balra: 0100|0000 -0000|0010 64 -2 Tehát ez azt jelenti, hogy összesen két szorzást végzek, majd egy kivonást csak. C=AxB C=A(X-Y) C=AxX-AxY B=X-Y 011000000 000000110 0|01100|0000 1|11111|1010 1|01011|1010 27 FA1 62x3= 186 128+58= 186 0 1 -1x súly 1 0 +1x súly 13 01101 -6 11010 átkódolás: 0 -1 11 - 0 Mindkét szorzóban 3 db egyes: nem nyertünk semmit. 01111000110 1000-100010-10

100 110 -11 Van egy bonyolultabb Booth-algoritmus, amely egyidejűleg két bitet figyel, ennek sokkal hatékonyabb a kódolása. Átvitel megtakarítás - carry-save Párhuzamos: Gál, 2. kötet, 28 oldal Hogyan lehet még szorozni? (az eredeti előadás-jegyzetben a lebegőpontos osztás után van!) Van két rajzom, de csak az egyiket fogom lerajzolni, mert nagyon bonyolult az ábra és egyszerű a működés. Valamifajta párhuzamos működés van beleépítve. Hamacher: 283. oldal 1.414 Osztás A hagyományos osztás kivonásra visszavezetve C := A/B=150/48 Számoljuk közben mindig, hogy hányszor vontuk ki! 150 : 48 Eredmény: 3,1. -48 I. 102 -48 II. 54 -48 III. 60 -48 I. 28 FA1 120 -48 72 -48 24 - I. II. megvizsgálom, hogy az osztandó nagyobb-e mint az osztó, s ha igen, akkor az osztót kivonom az osztandóból. Külön gyűjtöm, hogy hányszor sikerült kivonni amennyiben már nem teljesül a feltétel, akkor a gyűjtőből kiírom a felgyűjtött eredményt; és az

osztót tizedére csökkentem (úgy, hogy az osztandót 10-zel szorzom). - Geometriai értelmezés: legfontosabb alapelv, hogy az osztandóra elkezdem elölről rámérni az osztót, s számolom, hogy hányszor fér rá, majd pedig amikor már nem fér rá, az eredményt kiírom, az osztót tizedére csökkentem, s ismét elölről rámérem, hgy hányszor fér rá. stb. Eredmény Geometriai értelmezés 0 50 Algebrai értelmezés 100 150 3, 6 0 1 48 48 48 2 3 4 5 (azosztót tizedére csökkentem) 6 6 48 4,8 6 3,1 1,2 4,8 6/48: az osztót tizedére kellett csökkentenem, hogy a 6-ra legalább egyszer ráférjen. Ugyanakkor az eredményben is megkezdem a következő helyiérték kialakítását. 6 4,8 = 60 48 Hátrány, hogy minden lépést egy komparálás előz meg, ami rendkívül időigényes. Hogyan tudnánk gyorsabban kezelni az előjel-váltást, hisz ekkor véglegesedik az eredményünk. Visszatérés a nullán át (restoring) Ezt kivonás és

előjelvizsgálattal is kiválthatjuk, s amikor az előjel negatívvá válik, akkor meghívom a következő alprogramot: kiírom a gyűjtött eredményt, a levont osztót hozzáadom, szorzom a kapott maradékot tízzel, majd visszaadom a vezérlést a főprogramnak s folytatom tovább az eljárást. 29 1,2 4,8 1,2 0,48 FA1 150 -48 102 -48 54 -48 6 -48 -42 +48 60 -48 120 -48 72 -48 24 : 48 I. Eredmény: 3,1. II. III. I. I. II. Szépen hagyjuk kivonni tovább, és ha a maradék negatívvá válik, akkor visszaállítjuk az előző (azaz az utolsó pozitív) maradékot: visszatérés a nullán át. Az algoritmus hiányossága, hogy ciklikusan fölösleges műveleteket végzünk. Visszatérés nélküli osztás (nonrestoring) Amikor elérem a negatív maradékot, nem képezek pozitív maradékot, hanem hozzáadom az osztandót (visszafele számolok): +11 -6 +5 -6 -10 +6 -4 +6 +20 -6 +14 -6 +8 -6 +20 +6 -14 +6 Eredmény: 1,83 I. 0. lépés 9. lépés 8. lépés I. II. III. 0.

lépés 9. lépés Ezt kivonás és előjelvizsgálattal is kiválthatjuk, s kétféle eljárást alkalmazok: amikor az előjel negatívvá válik (negatív maradék), akkor a következőt kiírom a gyűjtött eredményt, s ezt a lépést 0.-nak tekintem a maradékot szorzom tízzel, hozzáadom az osztót, ezt a lépést 9.-nek tekintem; majd ciklikusan hozzáadom az osztót, (visszafele számolva az eredményt), amíg csak előjelváltás nem történik. amikor az előjel pozitívvá válik (pozitív maradék), akkor a következő: kiírom a gyűjtött eredményt, a maradékot szorzom tízzel; kivonom az osztót, s ezt a lépést az 1.-nek tekintem 30 FA1 majd ciklikusan kivonom az osztót, (előre számolok), amíg csak előjelváltás nem történik. visszaadom a vezérlést a főprogramnak s folytatom tovább az eljárást. stb. Geometriai értelmezés: - legfontosabb alapelv, hogy az osztandóra elkezdem hátulról rámérni az osztót, tehát a negatív maradékot mérem,

hányszor fér rá. Mivel a negatív maradékra mérem az osztó tizedét, ezért a végéről, ha egyszeri ráméréskor következik be az előjelváltás, akkor 9-tized valamennyi az eredmény, ha a második ráméréskor következik be az előjelváltás, akkor 8-tized valamennyi az eredmény stb. Geometriai értelmezés -1 0 0,6 0,6 9. 8 5 0,6 1. 10 6 Algebrai értelmezés (azosztót tizedére csökkentem) 1 10 0,6 6 Ha egyszer sem fér rá, akkor rögtön osztjuk tízzel s próbáljuk rámérni. Ha ismét nem fér fel, osszuk ismét tízzel. Egy áramkörön megvalósítható lehet a szorzás és az osztás együtt, de az bonyolult Mi van akkor, ha az A negatív szám (ha a B negatív, az mindegy). Pl pozitívvá alakítjuk s az eredmény előjelét beállítjuk. 1.415 A fixpontos multimédia feldolgozás Hang A hanghullám eredetileg analóg jellegű, ezt először digitálissá kell konvertálni annak érdekében, hogy a számítógépen használhassuk. Ezt a technikát

alkalmazzák a zenei CD-készítése során is Az analóg hullámból meghatározott időnként mintát vesznek. A minta amplitúdóját egy elektronikus áramkör méri, amit A-D konverternek, azaz analóg-digitális konverternek nevezzük. Így alakul át az analóg jel digitálissá. A felbontás és a mintavételi gyakoriság Ez egy tipikus hanghullám 31 FA1 amplitúdó +64 +32 +16 0 -16 -32 idő - az amplitúdó (x tengely) és a felbontás, azaz hány pontra bontjuk (y tengely): az analóg hullám pozitív szélső értékéhez rendelhetjük a legnagyobb ábrázolható pozitív számot, a negatív szélső értékéhez pedig a legnagyobb ábrázolható negatív számot. Digitális kód esetén az alkalmazott bitek száma határozza meg, hogy hányféle diszkrét értéket tudunk rögzíteni, azaz a felbontást. Amennyiben 8-bites kódot használunk, akkor 256-féle értéket, azaz hangszintet rögzíthetünk. Napjainkban a jó minőségű, CD-minőséget nyújtó

rendszerek sokkal finomabb felbontást biztosítanak, mivel 16-bites ábrázolást használnak. Már napirenden van a 24-bit alkalmazása az amplitúdó-ábrázolásra; a mintavétel gyakoriságát pedig úgy kell megválasztani, hogy az analóg jel minél kisebb változásait is le tudjuk képezni. Az audio jelek esetén, ha ez a leképezési gyakoriság 50 Kilohertz, ez azt jelenti, hogy másodpercenként 50 ezer mintát vesznek. Alkalmazás Mintavételi gyakoriság (KHz) 8 44,1 48 Digitális telefon Audio CD DVD Audio Codec ‘97 Professional audio recording DVD minőségi 96 A feldolgozandó adatok jellege és mennyisége - - Az amplitúdó azaz a felbontás mérésére, kvantifikálására a fixpontos (integer) adat-ábrázolást említettük. A lebegőpontos ábrázolás viszont jóval nagyobb értelmezési tartományt biztosítana. A hang- és beszédfeldolgozás során azonban igen fontos a feldolgozási sebesség Míg az gyors integer feldolgozás viszonylag olcsón

megvalósítható, a gyors lebegőpontos feldolgozásnak csupán napjainkban teremtődnek meg a hardver-feltételei (Intel Katmai processzor KNI vagy MMX2 utasítás-feldolgozása). Ez új távlatokat nyithat a hang- és beszédfeldolgozásban; A felbontás és a mintavételi sebesség határozza meg azt az adatmennyiséget, amit a digitalizálási folyamat során előállítunk és rögzítünk. Sztereo esetén ez a mennyiség megduplázódik, mivel két független információs csatornát kell majd táplálnunk. A 44,1 KHz mintavételi sebességgel dolgozó 16-bites CD audio ilyen módon minden másodpercben 150.000 bitet dolgoz fel és rögzít, ami percenként mintegy 9 megabájtot jelent (44100 x 2 bájt = 88200 bájt/sec = 88 Kbájt/sec mono esetén, sztereo esetén: 88x2 = 176 Kbájt/sec x 60 = 10 Mbájt/perc). 32 FA1 A hangok digitális feldolgozása tehát két vonatkozásban jelent mennyiségi erőpróbát, ugyanis hatalmas mennyiségű fixpontos adatot kell tárolni,

esetleg Interneten átvinni és feldolgozni. Képfeldolgozás: bittérképes vagy raszter megjelenítés Fényképeket, festményeket jellemezhetjük a színek, árnyékok, formák és a szerkezet folyamatos variációjával. Ezeket a gyakorlatban úgy digitalizálhatjuk, hogy a kép minden egyes pontjához hozzárendeljük a jellemezőit (színét, fényességét). Ezt a kép-kategóriát digitalizálhatjuk, azaz számítógéppel feldolgozható formátumra alakíthatjuk scanner-rel, digitális fényképezőgéppel vagy video-felvevővel. A felbontás és a színskála A valóságban, a valóságos képekben folyamatos a színek, a fények és árnyékok változása. A digitalizált kép pontokra bontva az eredetit, nyilvánvalóan csak közelítése lehet ennek a valóságnak. Nyilvánvaló azonban, hogy minél kisebbre vesszük ezt a pixelnek nevezett pontot, annál jobban megközelíthetjük az eredeti képet. Tehát a kép valósághűségét a felbontás alapvetően befolyásolja

A képet tehát ábrázolhatjuk a memóriában is és a képernyőn, papíron is, mint egy mátrixot azaz egy kétdimenziós tömböt, melynek minden egyes eleme egy pixel jellemzőit tartalmazza. Például az elterjedt képernyők 800x600 pixelt tartalmaznak, a mai jó felbontásúak 1280 x1024 pixelt. A színes képeket háromféle elemi színből állítjuk elő: a sárga, a kék és a bíbor, tehát minden egyes pixelhez három számértéket kellene tárolni. Ennek kiküszöbölésére a színskálát a gyakorlatban kódoljuk, s a színkódnak megfelelő színt a színfordítási táblázat segítségével értelmezhető a szín megjelenítéséről gondoskodó periféria (nyomtató, képernyő) által. 1 biten csak azt tudjuk megmondani, hogy az adott pixel világos legyen vagy sötét. 8-biten már 256 féle színkódot tudunk ábrázolni, ami még nyers színábrázolást biztosít. Ma a tipikus alkalmazások (high color) 16-bites színskálát használnak, az úgynevezett

igazi színes (true color) pedig 24 bitest. Létezik már 32-bites rendszer is, azonban ennél az alfa-csatornának nevezett 8 többletbiten már nem színeket, hanem effektust, a pixel átlátszósági mutatóját tárolják. A színek ábrázolására igényelt memória: Felbontás (pixel) 800x600 1280x1024 Memória-igény (byte) 8-bites színskála 16-bites színskála 480.000 960.000 1.310720 2.621440 Műveletek a pixeles képeken (képfeldolgozó utasítások) Tipikus műveletek a bit-blokk átvitel, a rajzolás-festés és napjainkban az ablakkezelés. Az utóbbi esetén minden megnyitott ablakot egy bit-blokként kezel a gép. Így az ablak-műveletek nem bájtonként, hanem blokkonként értelmezettek, tehát sokkal gyorsabbak. A feldolgozandó adatok jellege és mennyisége - A színskála mérésére, kvantifikálására az elmondottakból láthatóan a legalkalmasabb a fixpontos (integer) adat-ábrázolás; A felbontás és a színskála határozza meg azt az

adatmennyiséget, amit a digitalizálási folyamat során előállítunk és rögzítünk. A példában láthattuk, hogy egy 1280x1024 pixeles képernyő pillanatnyi tartalma 16-bites színskála esetén 2,5 Mbájt memória felhasználásával definiálható. Amikor műveleteket végzünk, akkor ilyen tömegű fixpontos adattal kell dolgoznunk. A raszteres képek digitális feldolgozása tehát két vonatkozásban jelent mennyiségi erőpróbát, ugyanis hatalmas mennyiségű fixpontos adatot kell tárolni, esetleg Interneten átvinni és feldolgozni. 33 FA1 A fixpontos multimédia feldolgozási irányai Adattárolás és -átvitel A digitális multimédia adatok természetesen tömöríthetők, mint bármely más adat. A tömörítést igen sokféle algoritmussal elvégezhetjük. Audio adatok estén például a Win95 Control Panel Multimédia ikon Audio részén kinyitva az Advanced menüt: széles választékot találunk. A gyakorlatban elterjedt az MPEG (Moving Picture Expert

Group) szabvány, mely a hang és a kép tömörítését egyaránt szabályozza. Hangtömörítés Bár az MPEG szabvány alapvetően videóra vonatkozik, de leírja a filmeket kísérő audio-szabványt is. Ennek 3 szintje van, minél nagyobb a szám annál komplexebb és eredményesebb a tömörítés. A szám közömbös a minőség szempontjából, hiszen mindhárom a 32, a 44 és a 49 KHz-es mintavételi sebességet engedi meg. Az MPEG szabvány nem definiálja a tömörítési algoritmust Minden MPEG állomány egy fejjel indul, mely tartalmazza a tömörítési szintet és a tömörítési módszert. Vegyük észre: a tömörítés nem igényli a real-time feldolgozást, sőt a gyakorlatban sohasem fut valós üzemmódban, míg a kicsomagolásnak a lejátszás alatt mindig valós üzemmódban kell futni. Tehát ez van inkább a sebességre kihegyezve. Képtömörítés JPEG Igen jó minőségű képtömörítést biztosít. Jól tömörít, nem romlik a képminőség, rétegelt

továbbítást biztosít: a kontúrokat gyorsan átküldhetjük vele, amit majd folyamatosan finomít. Egy sor tömörítési technika használatát engedélyezi, minden tömörítési részlet a képfile fejében található, ami elsőként kerül átküldésre. MPEG Az MPEG csak a video-képek különbségét tárolja, így ér el igen nagyfokú tömörítést. Hang vonatkozásában a sztereo-t teszi lehetővé. Az MPEG-1 1992. októberében vált nemzetközi szabvánnyá A Pentium MMX processzorok képesek real-time dekódolásukra. Az MPEG-2 jobb képfelbontást (720x480) és surround hangot biztosít. Az MPEG-3 tovább javítja a képfelbontást: 1920x1080, 30 Hz sebesség mellett. Az MPEG-4 pont ellenkező irányú, az igen alacsony átviteli sebességű alkalmazásokat célozza. Így mozgó képet lehet továbbítani 4800-64000 bit/sec mellett, azaz a hagyományos modemeken. A képfelbontás kb. 176-144 pixel, 10 Hz sebesség mellett Például videofonok vagy videokonferenciák

alkalmazhatják. Adatfeldolgozás PC-környezetben A multimédia feldolgozás infrastrukturális bevezetőjét összegezve: a multimédia feldolgozás számítástechnikai szempontból hatalmas mennyiségű fixpontos és lebegőpontos adat általában valós idejű feldolgozását jelenti. Architekturálisan ezt a feladatot kétféleképpen valósíthatjuk meg: 34 FA1 - multimédia segédprocesszorral, illetve az általános célú processzorunk multimédia célú bővítésével, az MMX kiterjesztéssel. Mindkét vonal él, mindkét vonalat intenzíven fejlesztik az egész világon. Mindkettő rendelkezik a maga előnyeivel és hátrányaival. Ma még nem dőlt el, melyik a jövő útja Mi most csak az utóbbival fogunk foglalkozni. Multimédia segédprocesszorral A grafikus segédprocesszor eredeti feladata a megjelenítő rendszer gyorsítása úgy, hogy az alapfeldolgozást végző mikroprocesszor kiegészítették egy olyan mikroprocesszorral, amit a videoorientált

parancsok végrehajtására optimalizáltak. A Windows elterjedésével minden PC intenzív grafikus feldolgozást végez, ezért jelentősége megnőtt. Az általános célú processzorunk multimédia célú bővítésével, az MMX kiterjesztéssel - az MMX rövidítés a Matrix Math eXtension, vagy MultiMédia eXtensions-ként dekódolható; 1997. januárjában jelent meg a Pentium MMX processzorban A fixpontos MMX feldolgozás A pakolt adattípusok Az Intel a Pentium MMX bevezetésével sajátos 64 bit hosszúságú MMX-csoportot hozott létre, annak érdekében, hogy ezzel is segítse a 64-bites belső adatsín hatékonyabb kihasználását. Ezek fôbb jellemzôit az alábbi táblázat foglalja össze. Mértékegység Alapegység Pakolt bájt Pakolt félszó Pakolt szó bájt (8 bit) félszó (16 bit) szó (32 bit) Az alapegységek száma 8 4 2 Az Intel cég 64 bit hosszúságú MMX adattípusai Az MMX segédprocesszor a multimédia műveletek gyors végrehajtására

szolgál. Mai szemmel nézve: a grafikus gyorsítót (graphic accelerator) leemeli a video-kártyáról és beviszi a processzorba. Az MMX egy viszonylag olcsó multimédia gyorsítást eredményez. A közeljövőben úgy tűnik, hogy az MMX, az AGP és a 3D gyorsító együttese fogja biztosítani a nagyteljesítményű architektúrát. Összeadás pakolt adattípussal Feladat: adjunk össze a memóriában két raszteres képet, hogy megjelenítsük az eredőjét. Mindkét kép minden pixeljét egy bájt írja le a memóriában. Megoldás hagyományos architektúrával 1. 2. 3. 4. beolvassuk az első kép első bájtját a memóriából az akkumulátorba; összeadjuk az akkumulátorban lévő első kép első bájtját a memóriában lévő második kép első bájtjával; az eredményt kiírjuk az akkumulátorból az eredmény tárolására szolgáló memória-terület első bájtjaként; Megismételjük az 1-3 lépést annyiszor, ahány pixelből áll a kép. Láttuk, hogy egy

800x600-as kép 960.000 pixelből áll Ez nyilvánvalóan tetemes idő Megoldás MMX architektúrával Az MMX kiterjesztés a 8 db 80 bit hosszúságú lebegőpontos regisztert használja 8 db 64 bit hosszúságú MMX regiszterként. Ezek felhasználásával a feladat megoldása a következő: 35 FA1 beolvassuk az első kép első nyolc bájtját a memóriából az MMX regiszterek egyikébe, az adatformátum pakolt bájt; beolvassuk a második kép első nyolc bájtját a memóriából egy másik MMX regiszterbe, az adatformátum pakolt bájt; elvégzünk egy pakolt bájt formátumú összeadást, ami fizikailag 8 db összeadó párhuzamos működését jelenti, melyek az eredményt az erre kijelölt MMX regiszterben képezik; az eredményt kiírjuk ebből az MMX regiszterből az eredmény tárolására szolgáló memóriaterület első nyolc bájtjaként; Megismételjük az 1-3 lépést annyiszor, ahány pixelből áll a kép osztva nyolccal. 1. 2. 3. 4. 5. A feladatot tehát

nyolcszor gyorsabban oldottuk meg. MM1 MM2 MM3 7 + 7 = 7 6 + 6 = 6 5 + 5 = 5 4 + 4 = 4 3 + 3 = 3 2 + 2 = 2 1 + 1 = 1 0 + 0 = 0 Vegyük észre, hogy ez egyetlen utasítással több adatat feldolgozását végezhetjük el, tehát ez a Single Instruction Multi Data (SIMD) feldolgozási kategóriához tartozik. Az MMX SIMD FX utasításkészlet tartalmazza a négy alapművelet és a logikai műveletek végrehajtására szolgáló utasításokat, a pakolt bájt, a pakolt félszó és a pakolt szó vonatkozásban. Az MMX kiterjesztés annyira sikeresnek bizonyult, hogy a Pentium II sorozatban már két futószalagon hajtják végre ezeket az utasításokat. 1.42 Lebegőpontos számok 1.421 A lebegőpontos ábrázolás-kialakulásának oka és formája A fixpontos számábrázolásnak két hátrányos tulajdonsága van: az ábrázolható számok értéktartománya viszonylag kicsi (két bájton például csak -32768 . +32767), másrészt az ábrázolt számok pontossága is erősen

korlátozott, hiszen ha a törtpontot a szám végére képzeljük, az egész számok közötti számtartományok a gép számára nem léteznek. Ez azzal az eredménnyel jár, hogy egyes műveletek pontaqtlanul végezhetők. (pl 7/4=1) Ezeket a hátrányokat küszöböli ki a bonyolultabb, de bizonyos tekintetben pontosabb, úgynevezett lebegőpontos számábrázolás. A lebegőpontos ábrázolás a számok hatványkitevős felírásán alapszik A szám hatványkitevős alakjának azt a felírási formát nevezzük, amelyben a számot egy egész és egy törtrészből álló szám, valamint a számrendszer alapja hatványának szorzataként írhatjuk fel, ez a matematikában tanult normál-alakhoz hasonló, bár nem abba a tartományba esik: Általánosan felírva a számot M*rk alakkal szemléltethetjük, ahol az "r" a számrendszer alapja (radix), M a szám mantisszája, k pedig a szám karakterisztikája. A radix általában egy architektúrán belül valamennyi valós

értékű szám ábrázolásánál azonos, ezért azt nem szükséges expliciten deklarálni. Így egy számhoz az ábrázolásához négy adatot kell ismernünk: a mantissza előjele (a szám előjele) a mantissza abszolút értéke a kitevő előjele a kitevő abszolút értéke. 1.422 A lebegőpontos ábrázolás története Neumann János még ellenezte a lebegőpontos számok használatát, mivel az szerinte 36 FA1 - egyrészt igen memória-pazarló, másrészt pedig növeli az aritmetikai és a vezérlőáramkörök komplexitását. A 70-es években három irány terjedt s ezek a gépek napjainkig is ezt használják: IBM 370/390: 16-bites radixt használt, így nem alkalmazhatta a rejtett bitet. A karakterisztikája 7, a mantisszája 24 bites (6 db hexadecimális szám) volt; VAX: ez hasonlított leginkább a későbbi szabványra: a 32-bites változata például rendelkezett rejtett bittel, 8-bites volt az karakterisztika és 23-bites a mantissza. Cray-2: 15-bites

karakterisztikával és 48-bites mantiszával rendelkezett. Az évek során felhalmozódó tapasztalatok alapján kezdődött meg a szabványosítási munka az IEEE keretén belül 1977-ben W. Kahan vezetésével Egyetlen korábban létező szabvánnyal sem egyezett meg, hanem inkább összeszedte nagyon sokféle architektúrából az ügyes megoldásokat. Bár a szabványt csak 1985-ben hagyták jóvá, az első implementációja már 1981-ben megjelent. Ez volt az Intel 8087-es matematikai segédprocesszor. 1.423 A lebegőpontos ábrázolás jellemzői Radix Annak érdekében, hogy a művelet kiszámítható legyen, kívánatos, hogy a hatványra emelendő radix egyezzen meg a mantisszánál használt számrendszer alapjával. A legtöbb számítógép architektúránál ez 2. Az IBM 370 radixa 16, hatékonyság-növelési célokból Ennek eredményeképpen normalizáláskor 4bitenként kell elshiftelni, s a normalizálás is csak akkor szükséges, amennyiben a legmagasabb

helyiértékű négy vagy több bit nulla. Az értelmezési tartomány A karakterisztika helyiértékeinek száma 1 A tízes számrendszerben ábrázolható számtartomány 2 3 4 Kettes számrendszer maximális érték ±9 1=1 ±9 ±99 11 = 3 ±9 ±9 ±999 ±9 ±999 az ábrázolható számtartomány ±2 ±1=±2 ±2 ±3=±8 111 = 7 ±2 ±7=±128 1111 = 15 ±2 ±15=±32.768 a két nyíl a növekedési irányt jelzi Tehát az ábrázolt értelmezési tartomány függ: a karakterisztika számára rendelkezésre álló bitek számától valamint a radixtól. Pontosság Létezik még egy számhalmaz, ami nem ábrázolható, mivel az ábrázolható számok között helyezkednek el. Például, amennyiben a mantissza mindössze három jegyű, akkor a 0,3114x10+6 már nem ábrázolható és kénytelenek vagyunk közelíteni a 0,311x10+6 értékkel, tehát 400-at elveszítettünk. S ha ez a mi saját angol fontunk, az már egy komoly summa.A pontosság tehát a mantissza bitjeinek

számától függ. A normalizált jellemző A lebegőpontos ábrázolásmódnak a hátránya, hogy ugyanannak a számnak nincs egy unikális ábrázolási módja. például a 37,135 felírható mint 0,037135 x 103 vagy 3713,5 x 10-2 . Ezeket hívjuk nem normalizált számoknak. A normalizált számok viszont azt igénylik, hogy a lebegőpontos szám tizedes vesszője legyen egy meghatározott pozíción, például a legnagyobb helyiértékű számtól álljon balra. Ebben az esetben teljesül a következő egyenlőtlenség: 37 FA1 1/r ≤ M 1 Fontos észrevenni, hogy a mantissza értéke nem érheti el az egyet, tehát feltétlenül kisebb egynél. Például ez a két általunk használt számrendszer esetén: 1/10 ≤ M 1 1/2 ≤ M 1 Az ilyen normálalakban történő számábrázolásnak két csoportja van: binárisra normált és hexadecimálisra normált alak. Meg kell jegyezni, hogy a normalizált ábrázolási mód nem teszi lehetővé néhány, a

nullához közeli szám ábrázolását. -0,1x10-n -0,999999x10+n-1 túlcsordulási régió az érvényes számok tartománya 0 +0,1x10-n alulcsordulási régió +0,999999x10+n-1 az érvényes számok tartománya túlcsordulási régió Miért n-1 a pozitív kitevő? A karakterisztika maximális értéke fenn vann tartva a végtelen jelzésére. Ez a mantissza előjelével kiegészülve jelenti a pozitív illetve a negatív végtelent. Alulcsordulás, túlcsordulás A fenti ábrán látható, hogy létezik a legnagyobb ábrázolható érték és természetesen a legkisebb is. Ezt hívjuk túlcsordulásnak és a kis számok esetén pedig alulcsordulásnak. Az architektúrának biztosítania kell ezek bekövetkezésének felfedezését, kezelését és jelzését. Túlcsordulás esetén az IEEE lebegőpontos szabvány esetén a gép kijelzi és egyidejűleg vagy beállítja a legmagasabb létező értéket, azaz előjeles végtelent ábrázol. Az IEEE lebegőpontos szabvány

esetén például az alulcsordulást kell tudni kijelezni és az értékét nullára konvertálja vagy a denormalizált számot ábrázolja. Denormalizált számok Tehát mit is jelent a denormalizált szám? 0 0,1 0,2 alegkisebbábrázolhatónormalizált száma0,1x10 -n -nenormalizált szám a0,04x10 d A lebegőpontos számok írásakor általában az E betűvel szokták elválasztani a mantisszát a karakterisztikától. A 02E-n és a 01E-n normalizált számok, melyek kielégítik a fenti egyenlőtlenséget A 0.04E-n már kisebb, mint a legkisebb normalizált szám, ezt denormalizáltnak hívjuk Abban az esetben, ha a denormalizált számok esetében megengedjük, hogy ne kelljen kielégíteniük a fenti 38 FA1 egyenlőtlenséget, azok rögtön ábrázolhatóakká válnak. Erre képes például az IEEE lebegőpontos szabvány. A nulla ábrázolása A nulla környékét vizsgáljuk. A pontosan nulla szám ábrázolása a lebegőpontos formátumnál problémákat okozhat. Azt

mondhatjuk, hogy minden olyan ábrázolás, melynél a mantissza csak nullából áll, interpretálható nullaként, úgy, hogy bármi is legyen a karakterisztika értéke. Ugyanakkor kívánatos, hogy az exponens mező legyen egyenlő szintén nullával. A rejtett bit Ennek az ötlete öregebb, mint az elektronikus számítógép. Konrad Zuse az 1936-ban épített relés gépében már alkalmazta. Bináris normálás esetén - a nulla értéket kivéve - a mantisszára korábban felírt egyenlőtlenség csak akkor teljesülhet, ha a kettedes pont utáni első helyértéken 1 áll (a szám csak így lehet nagyobb vagy egyenlő 0,5-nél). Mivel ez mindig egyes, így nem hordoz semmiféle információt, ezért nincs szükség arra, hogy tároljuk. Ez lehetővé teszi, hogy a mantissza hossza egy bittel növekedjen Csupán amikor a lebegőpontos számot használják (a számításokban), akkor kell az 1-nek jelen lenni, amikor pedig tárolják, ismét eltűnik. Ezt a bitet hívják

rejtett bitnek A rejtett bit technikát sok architektúra használja, a lebegőpontos processzorok belső adatábrázolásában pedig magukban kell foglalni a rejtett bit kezelését. Az őrző bitek (guard bits) Kívánatos, hogy a művelet eredménye a lehető legpontosabb legyen. Ezért fontos, hogy a relatív hiba kisebb legyen, mint a normalizált eredmény legkisebb számjegye. Ebből a célból őrző biteket vezettek be, melyek a mantissza legkisebb helyiértéke után találhatók. A céljuk, hogy megőrizzék azokat a számjegyeket, amelyeket később, a normalizálás során balra shiftelünk illetve kerekítésnél tudjuk őket használni. Az őrző bitek gyakorlati megvalósítása: a lebegőpontos műveletek végrehajtása céljából az operandusokat az ALU regisztereibe töltjük. Ezek a mantissza vonatkozásában mindig hosszabbak, mint a tárolt mantissza+amennyiben van, a rejtett bit. Értelemszerűen az eredmény is mindig egy hosszabb regiszterben keletkezik. Ezt

pedig tárolás előtt mindig kerekíteni kell, egyrészt hogy beférjen a kisebb tárolóhelyre, másrészt pedig a számolási pontosság növelése céljából. A karakterisztika (exponens) ábrázolása A karakterisztikát következő megfontolásokból feszített előjeles vagy többletes kódban ábrázolják: egyszerűbb, mint a komplemens kód; a többletes kód megfelelő a karakterisztika műveletekhez, mivel azokat csak összeadni-kivonni kell tudni. Például a szám kitevőjét hozzáadjuk az 10000000 bináris konstanshoz, és az összeget tároljuk 8 biten. A kitevőnek ilyenformán történő tárolását feszített előjeles vagy 128-többletes tárolásnak nevezzük, mivel 128-at adunk hozzá a kitevőhöz (additív kód). A pozitív kitevő tehát hozzáadódik a 128-hoz, a negatív kitevő pedig levonódik belőle. Így a kitevő ábrázolási tartománya -128 és +127 közé esik Ez megegyezik tehát egy 8-bites kettes komplemens ábrázolási formával, úgy, hogy

128-at hozzáadtunk, vagy egy 8-bites kettes komplemens ábrázolási formával, úgy, hogy az előjelbitet invertáltuk. Régi nagy gépeknél a karakterisztika 7 bit hosszúságú volt, itt értelemszerűen 64-többletes ábrázolást használtak; az Intel 80387 esetén dupla pontosságú számok esetén 1023, bővített pontosságú számoknál pedig 16.383-többletes kódot használnak Az exponens kódképe: 39 FA1 0- mínusz 1- plusz -128 0 +127 1.424 Az IEEE 754 lebegőpontos szabvány A szabvány kidolgozásának célja, hogy megkönnyítse a különféle processzorú számítógépek közötti program-portabilitást s egyben bátorítsa a magas-színvonalú numerikus szoftverek kidolgozását. A szabvány rendszer-szintű megvalósításban gondolkodik. Tehát a hardver és a szoftver együttesen biztosítja a szabványnak megfelelő működést. Azaz semmi problémát nem jelent, ha a hardver nem felel meg tökéletesen a szabványnak, s teljességgel korrekt az a

megoldás, amikor az igen ritkán előforduló eseteket a szoftver kezeli le. A jelenleg elterjedt Intel és Motorola processzor-család ezen szabványt alkalmazza. Ettől eltérő formátumot használ például az IBM 390 és a VAX család De már megjelentek olyan IBM és VAX processzorok, melyek az IEEE 754-es lebegőpontos szabványt használják. A szabvány lebegőpontos ábrázolás négy aspektusát tárgyalja: az adattípus formátumát; a műveleteket a kerekítést és a kivételek kezelését. A lebegőpontos formátumok A számítógépes rendszerek gyakran kezelnek több valós formátumot, mivel egyrészt a memóriával való takarékosság tömör formátumot igényel; másrészt pedig egyetlen tömör formátum túlságosan korlátozott az igényelt pontossághoz és értéktartományhoz. Ezen megfontolások alapján az IEEE lebegőpontos szabvány is több formátumot deklarál. Ezeket két csoportba soroljuk: szabványos (egyszeres és kétszeres pontosságú

ábrázolás) és kiterjesztett. A megvalósításnak minimum az egyszeres pontosságú formátumot kell biztosítania, hogy kielégítse a szabványt. A kétszeres pontosságú formátum megvalósítása már opcionális Szabványos formátum Egyszeres pontosságú (Short real vagy single precision) Hossza: 4 bájt (32 bit), ebből a mantissza 23, a karakterisztika pedig 8. 128-többletes az exponens értéke. A mantisszához tartozik a nem ábrázolt, de benne foglalt egyes, azaz a rejtett bit Értelmezési ± tartománya: kb. 10 38 (8,43*10-37 ≤ x ≤ 3,371038), pontossága: 6-7 decimális szjegy. 31 32 23 22 EXP mantisszaelõjele 0 8bit MANT 23bit kettedespont 40 FA1 Kétszeres pontosságú (Long real - double precision) Hossza: 8 bájt (64 bit), ebből a mantissza 52, a karakterisztika pedig 11. 1023-többletes az exponens értéke. A mantisszához tartozik a nem ábrázolt, de benne foglalt egyes Értelmezési tartománya: kb  10 308 (4,19*10-307 ≤ x ≤

1,6710308), pontossága: 15-16 decimális szjegy. 1 11 52 EXP 63 MANT 5251 0 Kiterjesztett (extended) formátum A szabvány mindkét formátumra tartalmaz egy kiterjesztett (extended) formátumot. Ezek célja, hogy biztosítson egy fokozott pontosságot és egy nagyobb karakterisztika tartományt a számítási sorozat során a közbenső eredmények számára. Például két számvektor pontos szorzatát úgy kaphatjuk meg, hogy a szorzatok összegét kiterjesztett pontossággal számítjuk ki. Maguk a számok szabványos pontosságúak (egyszeres vagy kétszeres) és az eredményt is az inputnak megfelelő pontosságúra kerekítjük vagy vágjuk. A kiterjesztett formátumok használata mérsékli a kerekítések által okozott hiba halmozódását. Az elemi függvények (sin, cos, stb) számítása során is kiterjesztett pontosság alkalmazásával mérséklik a kerekítés okozta hibát. Mivel a kiterjesztett formátum csak a processzoron belüli számításra szolgál és

nem kerül tárolásra, ezért a szabvány jóval nagyobb szabadságfokot biztosít a processzor-gyártók számára, mint a szabványos formátum estében. (Stallings 293) Bővített (extended) egyszeres pontosságú Hossza: minimum 43 bit, ebből a mantissza minimum 31, a karakterisztika pedig minimum 11. A karakterisztika értéke nem lehet nagyobb, mint a szabványos, kétszeres pontosságú ábrázolás esetén (azaz maximum 1023). Csak belső ábrázolásra használjuk Bővített (extended) kétszeres pontosságú Hossza: minimum 79 bit, ebből a mantissza minimum 63, a karakterisztika pedig minimum 15. Az karakterisztika értéke nem lehet nagyobb, mint 16.383 Csak belső ábrázolásra használjuk A bővített pontosságú egy konkrét megvalósítása (a másik az Intelen belül van leírva): A quadnak is nevezett bővített formátum hossza: 16 bájt (128 bit), ebből a mantissza 112, a karakterisztika pedig 15 bit. 16383-többletes az exponens értéke A mantisszához

tartozik a nem ábrázolt, de benne foglalt egyes. Értéktartománya: 3,4*10-4932 ≤ x ≤ 1,2104932. Csak belső ábrázolásra használjuk. Műveletek A szabvány szerint a négy alapműveleten kívül meg kell valósítani a maradék-képzőt, a négyzetgyökvonást valamint a bináris-decimális konvertálót. A pontosságnak az LSB pozíción lévő bit értékének a felénél kisebbnek kell lenni. Ez azt jelenti, hogy legalább három őrző bitet kell alkalmazni Minden formátum esetén a maximum exponens (255, 2047 és a 32767) jelenti az előjeles végtelent. Az előjeles végtelennel végzett műveleteknek is nyilvánvaló eredményei vannak. Például: 3+(+∞) = +∞ 3+(−∞) = −∞ stb. (Stallings 302) A kerekítés 41 FA1 Bármely lebegőpontos művelet eredményének mantiszája egy hosszabb ALU-regiszterben keletkezik. Ezt amikor a memóriába töltjük (store) akkor kerekítenünk kell. Az IEEE szabvány szerint a kerekítéseknek négy alternatív

megközelítése van: - - a legközelebbire való kerekítés: az eredményt a legközelebbi ábrázolható számra kerekíti. Például, amennyiben az őrző bitek értéke 101, akkor az nagyobb, mint az LSB bit értékének a fele. Ekkor tehát az LSB-hez hozzá kell adni 1-et; kerekítés a pozitív végtelen felé; kerekítés a negatív végtelen felé; az utóbbi kettő alapgondolata, az úgynevezett intervallum aritmetikában gyökerezik. A probléma az, hogy a lebegőpontos műveletsorozat végén a hardver-korlátok okozta kerekítések miatt nem ismerhetjük a pontos eredményt. Amennyiben viszont minden műveletet kétszer hajtunk végre, egyszer fölfele, egyszer pedig lefele kerekítve, akkor két eredményt kapunk, s biztos, hogy a kettő között helyezkedik el a helyes eredmény. Ha a két eredmény közötti különbség csekély, akkor elég pontos az eredményünk Amennyiben viszont nagy, ez egy információ számunkra és szükség esetén elvégezhetünk egy

kiegészítő elemzést. kerekítés a pozitív végtelen felé: kerekítés a negatív végtelen felé: -∞ - +∞ 0 a nullára kerekítés, ami gyakorlatilag az őrző bitek egyszerű levágását (trunc) jelenti, azaz ignorálását jelenti. Ez azt eredményezi, hogy a mantissza a pontos értéknél mindig kisebb vagy azzal egyenlő lesz. -∞ +∞ 0 A kerekítési technikák közül az első az alapértelmezés. Példa a kerekítési technikákra: -∞ -8,47 Az eredeti szám +8,42 -8,47 +∞ 0 a legközelebbire való kerekítés +8,4 -8,5 +8,42 kerekítés a pozitív végtelen felé +8,5 -8,5 kerekítés a negatív végtelen felé +8,4 -8,4 nullára kerekítés +8,4 -8,4 A kivételek kezelése: A kivételek felbukkanása szoftver-megszakítást eredményez, melynek kezelését a felhasználó végzi: - nem egyértelmű művelet: például egy negatív szám negyzetgyökvonása; nullával való osztás: amikor az osztandó egy véges nemm null szám, az osztó

pedig nulla, akkor az eredmény pozitív végtelen; alulcsordulás: lásd korábban; túlcsordulás: lásd korábban; nem exakt kivétel: amikor egy művelet kerekített eredménye nem exakt, ez a kerekítési szabályokból eredő üzenet. 42 FA1 1.425 Műveletek lebegőpontos számokkal A numerikus adatok tárolásának tárgyalásakor világossá vált a lebegőpontos adatábrázolási forma előnye a számításigényes feladatok megoldásánál. Ezért az alapműveletek legegyszerűbb megvalósítási formáit ebben az esetben is megnézzük. A=±mA rkA B=±mB rkB A és B a két lebegőpontos számunk, ahol mA és mB a normalizált mantisszát és kA és kB a karakterisztikát jelöli. Az r pedig a radix, a számrendszer alapja Összeadás-kivonás A lebegőpontos számok összeadása és kivonása a fixpontos számokéhoz hasonló, csak összetettebb, mivel a hatványkitevős forma miatt a karakterisztikákat először azonos értékre kell hozni. Például össze kell

adnunk a két következő számot: Operandusok Az operandusok értéke 0,3 * 103 900 * 100 A B Az őrző helyiérték Először is azonos kitevőjű alakra hozzuk őket, azaz a kisebb karakterisztikájú számot léptetjük jobbra: 900 x 100 90 x 101 9 x 102 0,9 x 103 Amikor a karakterisztikák már azonosak, elvégezzük az összeadást. 0,3x103 0,9 x 103 1,2 x 103 Végül, ha szükséges, mint az adott esetben is, az eredményt normalizáljuk. 0,12 x 104 Az algoritmus a következő: - a karakterisztikák összehasonlítása; a kisebb karakterisztikájú szám shiftelése jobbra s növeljük a karakterisztikát; ezt ciklikusan ismételjük addig, amíg a két karakterisztika meg nem egyezik; amikor azonosak a karakterisztikák, elvégezhetjük az összeadást (kivonást); végül, ha szükséges, a mantisszát normalizáljuk jobbra-balra shiftelve. Szorzás C= AxB C=±mA mB rkA+kB A mantisszát előjelhelyesen összeszorzom, a karakterisztikákat összeadjuk, majd, ha

szükséges, végrehajtjuk a normalizálást. Osztás C= A/B C=±mA / mB rkA-kB 43 FA1 Észre kell venni, hogy párhuzamosan végezhetjük a mantissza és a karakterisztika műveleteket, sőt, míg a karakterisztikák összeadása/kivonása gyors, a mantisszák szorzása/osztása lassú. Lehet csinálni külön áramköri szorzót. 1.426 A lebegőpontos aritmetikai egység megvalósítása Egy tipikus lebegőpontos szám-kezelőnek - legyen az szoftver vagy hardver - a következő feladatokat kell megvalósítania: alulcsordulás-kezelés; túlcsordulás-kezelés és a négy alapművelet. Az aritmetikai művelet megvalósítása érdekében a hardver vagy a szoftver: a rejtett bitet valóságossá alakítja; az exponenst pedig valós értékűvé (azaz a feszített kód helyett kettes komplemens kód) alakítja, bár ez nem feltétlen. A többletes kód megfelelő a karakterisztika műveletekhez, mivel azokat csak összeadni-kivonni kell tudni. Összefoglalva megállapíthatjuk,

hogy a lebegőpontos aritmetikai műveletek végső soron a mantisszán és a karakterisztikán végzett többszörös fixpontos műveletekre vezethetők vissza. Kombinált (univerzális) aritmetikai egység Nem nehéz egyetlen aritmetikai egységben megvalósítani mind fixpontos, mind pedig a lebegőpontos aritmetikát. Egyedül a vezérlőegység lesz bonyolultabb Lényegében ez egy egyszavas fixpontos aritmetikai egység, amelyben mind a regiszterek, mind pedig az összeadó parcionálható karakterisztikára és mantisszára, amikor lebegőpontos műveletet kell végrehajtani Exponens összeadó Mantissza összeadó Fixpontosösszeadó A tipikus megoldás azonban, amikor a karakterisztika is és a mantissza is külön-külön regiszterben van tárolva, egymás után végrehajtjuk velük az utasítás által előírt műveleteket és azok befejeződése után a letöltésük során újraegyesítjük a kettőt. (Stallings 297) Dedikált lebegőpontos egység A lebegőpontos

aritmetikai egység megvalósítható két, fixpontos aritmetikai áramkör: egy karakterisztika egység és egy mantissza egység laza kapcsolata révén. Adatsín Karakterisztika egység Mantissza egység Vezérlõ egység Vezérlõsín Jellemzők: 44 FA1 - a mantissza egységnek egy általános célú fixpontos aritmetikai egység valamennyi műveletét tudnia kell, tehát a szorzás és osztást is. egy egyszerű, csupán összeadni és kivonni tudó áramkör elegendő viszont a karakterisztika egységhez; vegyük észre, hogy e két egység működhet párhuzamosan. Viszont ebben az esetben a bonyolultabb, s egyben az időigényesebb feldolgozást végző mantissza egységet igen gyors elemekből kell építenünk. 1.427 Esettanulmányok Az Intel család Az 1981-ben megjelent Intel 8087 lebegőpontos segédprocesszor volt az IEEE szabvány egyik első megvalósítása, még a szabvány 1985-ös megjelenése előtt. A jellemzők közül a radix a 2; az IEEE szabványnak

megfelelően kezeli az alulcsordulást és a túlcsordulást; létezik a rejtett bit és használja az őrző biteket. A formátumok közül mindkét szabványos formátum (az egyszeres és a kétszeres pontosság) megvalósításra került. Ez a két formátum csupán a memóriában és a háttértárolón létezik Mihelyt egy ALU regiszterbe kerül a szám, azonnal átalakításra kerül bővített pontosságú számmá. Bővített pontosságú (Temporaly real) Hossza: 10 bájt (80 bit), ebből a mantissza 64, a karakterisztika pedig 15. 16383-többletes az exponens értéke. A mantisszához tartozik a nem ábrázolt, de benne foglalt egyes Értéktartománya: 3,4*10-4932 ≤ x ≤ 1,2104932 , pontossága 19 számjegy. Csak a processzoron belüli belső ábrázolásra használjuk. Mihelyt kiírjuk a memóriába, a programozó előírásának megfelelően egyszeres vagy kétszeres pontosságúra kell kerekíteni. 1 15 64 EXP 79 MANT 6463 0 Eleinte gazdasági (egy 8087

segédprocesszor ára 180 ezer Ft volt) és technológiai (nem fért rá a lapkára) okok miatt önálló lapkán valósították meg. Az Intel 80486DX volt az első, melynél már fizikailag egyetlen lapkán volt az általános és a lebegőpontos segédprocesszor. A hardver-megvalósítás 1000-szeres sebesség-növekedést eredményezett. A Checkit teljesítmény-mérő tesztben a Math benchmark relatív MIPS-ben kifejezett értéke 386, 25 MHz esetében 18, 486DX, 66 MHz esetében 1.730 a mért érték Ez azt jelenti, hogy az első 18x, a második pedig 1730-zor gyorsabb mint az erdeti, Intel 8088 típusú mikroprocesszort tartalmazó érték. A Pentium esetén ugyanezt a módszert alkalmazták, de azt teljesen újratervezték és a 486-hoz képest háromszoros sebességnövekedést: a Math benchmark értéke egy P133 processzornál csaknem 6.000-re (5974) növekedett. Ez a gyorsulás alapvetően a futószalagos feldolgozásnak köszönhető A Pentium processzor ötfokozatú U és

a V futószalagja közül a lebegőpontos utasítások feldolgozására kizárólag az U futószalag alkalmas. Ez végzi az utasítás előfeldolgozását, majd a félkész eredményt átadja a háromfokozatú lebegőpontos futószalagnak, mely a végeredményt bocsátja ki. Meg kell jegyezni, hogy a lebegőpontos feldolgozás során két fokozat is alkalmas a ciklikus utasításvégrehajtásra. Általánosan megfogalmazva itt a lebegőpontos utasítások 45 FA1 - egy univerzális, többféle utasítás feldolgozására szolgáló úgynevezett mester-futószalagról jutnak egy kiegészítő futószalagra, azaz a lebegőpontos futószalagra. PowerPC 604 Ennél a processzornál az utasítás-lehívást végző futószalagról a lehívott lebegőpontos utasítások kifejezetten a lebegőpontos utasítások feldolgozására szolgáló (dedikált futószalag) futószalagra kerülnek. 1.428 Lebegőpontos multimédia feldolgozás Vektoros megjelenítés A vonalakkal, görbékkel

grafikailag körvonalazható képek geometriailag definiálhatók. Ezen esetekben elegendő az egyes objektumok geometriai jellemzőinek tárolása. 2D Például egyenes esetén két pontja, kör esetén a középpontjának x és y koordinátája valamint a sugara tárolásával már egyértelműen definiálhatjuk az objektumot. Magát a képet aztán a számítógép készíti el, kiszámítva a kijelölt műveleteket. Egy komplex objektumot sok, kicsi, matematikailag könnyen leírható elemekre, sokszögekre, leggyakrabban háromszögekre bontják és a számítógép ezen háromszögeket dolgozza fel. Műveletek vektoros képeken (képfeldolgozó utasítások) Mivel az objektumok matematikailag definiáltak, ezért könnyedén mozgathatók, kicsinyíthetők, nagyíthatók, forgathatók úgy, hogy nem változik a formájuk. Például egy ellipszist készíthetünk egy körből úgy, hogy a függőleges és a vízszintes méreteit különféleképpen írjuk le. A zárt objektumokat

kitölthetjük színekkel. Az objektum elemeket összekapcsolhatjuk, egyesíthetjük egy komplexebb objektummá, ezután ezt tudjuk egy újabb egységként alakítani, tovább egyesíteni. A feldolgozandó adatok jellege és mennyisége Kevés adatot tárolunk, de azokon sok számítást hajtunk végre: a jellemzőket tehát lebegőpontos formátumban kell ábrázolnunk. Meghatározóvá válik tehát a vektoros ábrák feldolgozása vonatkozásában a lebegőpontos feldolgozási sebesség. 3D Az utóbbi időben került előtérbe a háromdimenziós ábrázolás, a 3D. A 3D ábrázolás nem csak azt jelenti, hogy úgy tűnik számunkra, mintha hozzá lenne adva egy újabb dimenzió, hanem ez a technológia képes arra is, hogy életre keltse. Tehát a 3D gyorsítónak nem csupán 3D képeket kell készítenie, hanem azokat elég gyorsan is kell megvalósítania (minimum 15 db képet másodpercenként) ahhoz, hogy mozgóképnek és ne pedig villogó képnek lássuk. A 3D képek olyan

vektoros 2D képek, melyhez a térhatás érdekében egy harmadik dimenziót adunk hozzá. Egy komplex kép akár 20000 sokszögből is állhat, amit a mozgási effektus érdekében másodpercenként minimum 15-ször kell átszámolni, azaz újra előállítani. A grafikus gyorsítónak tehát ebben az esetben 300.000 sokszöget kell interpretálnia másodpercenként Ezen a feldolgozási szinten minden egyes sokszög különbözik egymástól, olyan bombázás utáni megjelenítést ad. A valós objektumok árnyaltabbak, fény-árnyék hatás élénkíti és tompítja a színeket Ezt a számítógép úgynevezett textúra készítésével éri el. Ezen kívül biztosított a perspektivikus ábrázolás, a távolabbi objektumok kisebbek, a párhuzamosok pedig a végtelenben összetartanak. A valósághűbb ábrázolás érdekében az atmoszferikus perspektívát is alkalmazzák: a közeli objektumok tisztábban látszanak, a távolabbiak pedig fakóbbak és kékesebbek. A feldolgozandó

adatok jellege és mennyisége 46 FA1 Kevés adatot tárolunk, de azokon sok számítást hajtunk végre: a jellemzőket tehát lebegőpontos formátumban kell ábrázolnunk. A 3D adatok feldolgozása vonatkozásában a lebegőpontos feldolgozási sebesség kritikus, lassú feldolgozás esetén a mozgó képek akadozottan fognak futni. A lebegőpontos multimédia feldolgozás megvalósítása: KNI vagy MMX2 Az MMX kiterjesztés tehát kiválóan gyorsítja a fixpontos műveleteket, nevezetesen napjaink hangfeldolgozását és a raszteres képfeldolgozást. A piac azonban igen komoly igényt támasztott a 3D feldolgozások terjedése révén a lebegőpontos feldolgozások gyorsítása iránt is. Ennek az igénynek tesz eleget az 1998-ban megjelent Intel Katmai kiterjesztés, az új lebegőpontos kiterjesztésével, amit Katmai New Instructions - KNI vagy MMX2-nek neveznek. Az Intel 1985 óta először adott új regisztereket az x86 processzorához (akkor a 386-os megjelenésével

16-ról 32-bitesre alakította az architektúráját). A nyolc új regiszter 128 bit hosszúságú, XMM regiszternek hívják. Egy regiszterbe 4 db egyszeres pontosságú lebegőpontos szám írható, így a vektorműveletek során egyszerre 4 db lebegőpontos számon hajtódik végre a művelet A bevezetett SIMD FP utasítások száma 70, melyek kielégítik az IEEE lebegőpontos szabványt. A kerekítések és a pontosság szintén az IEEE szabványban előírtaknak megfelelően kerültek megvalósításra. Az új regiszterek bevezetése operációs rendszer módosítást követel meg: a megszakítás-kezelés során a kontextus-kezelésnél ezen regiszterek mentéséről és visszatöltéséről is gondoskodni kell., amit a Win98 már meg is valósít. A Katmai sebessége 500 MHz mellett 2 GFLOPS, ami 2 milliárd lebegőpontos művelet végrehajtását jelenti másodpercenként. Ez a sebesség új távlatokat nyit meg a 3D feldolgozás terén, és ezen az architektúrán várhatóan

a hang- és beszédfeldolgozás is áttérhet a lebegőpontos formátumra. 1.429 A lebegőpontos műveletvégzés jelentősége A lebegőpontos műveletvégzés rendkívül fontos feladata a mai számítógépes feldolgozásnak, különösen a tudományos-műszaki számításokban és a vektor-grafikai feldolgozásokban gyakori. Az árak csökkenésének továbbá a technológiai fejlődés eredményezte miniatürizálásnak köszönhetően a lebegőpontos processzor ma már része a tipikus kereskedelmi processzoroknak. Az IEEE 754-es szabvány sikeres, népszerűsége növekszik, hiszen az Intel és a Motorola mikroprocesszor családon kívül a két nagy vetélytárs, az IBM és a DEC is már kezdi alkalmazni. 1.43 BCD-összeadás A BCD ábrázolásmód elsősorban az adminisztratív jellegű alkalmazásoknál használatos, mivel megfelel a felhasználó adatábrázolásának. Előnyei: Lehetséges, hogy amennyiben egy decimális számot átszámítunk kettes számrendszerbe és

onnan vissza, akkor a kapott eredmény a kényszerű kerekítések miatt nem fog megegyezni az eredeti számunkkal. Gondoljuk el, ha ez a szám a saját, a bankba tett pénzünket jelenti! Ezt a különbséget használták fel az első számítógépes bűncselekmények során. Abban az esetben viszont, ha az eredeti számunkat átkódoljuk BCD-be, és vissza, pontosan ugyanazt fogjuk kapni. Ez különösen pénz esetében fontos A számítás tehát lehet pontos vagy pontatlan, de a kódolás az mindig egyértelmű megfeleltetés. konvertálása a belső ábrázolási formából a külsőbe és vissza könnyű, ami ezeknél az alkalmazásoknál elnyomja a komplexebb és ezért lassúbb belső műveleteket (+-*/). Általában csupán néhány és egyszerűbb műveletet rendelnek a BCD számokhoz. A gazdasági orientáltságú magas szintű programozási nyelvek (pl. a Cobol ) lehetővé teszi ezen formátum deklarálását. 47 FA1 BCD számok: négy biten (tetrádokon)

ábrázoljuk a számokat 0-9-ig. érvénytelenek (pszeudotetrádok): 0000 0001 0 1 1001 1010 1011 1100 1101 1110 1111 9 10 11 12 13 14 15 1.431 A decimális számok ábrázolása (BCD) A BCD ábrázolás két formája létezik a különféle architektúrákon: Zónázott Ebben az esetben minden bájtban csak egyetlen számot ábrázolunk. A bájtok jobboldali fele a numerikus rész, itt helyezkednek el a számjegyek (BCD), a baloldali rész pedig a zónarész (Z). A legalacsonyabb helyiértékű bájt zónarészében helyezkedik el az előjel, a többi zónarészben pedig az ún. zónabitek. A zóna mezőt úgy választják meg, hogy a Z-BCD mező nyomtatható karakter-kombinációt adjon. Egyébként a zóna mező számára ASCII kódban a "3" EBCD kódban az "F" gyakran használatos. zóna BCD . zóna BCD elõjel BCD A zónázott formátumhoz nem mindig biztosítanak művelet-végzési lehetőséget. Ez a formátum sok esetben csak a szöveg és a BCD

közötti konverzió céljára szolgál. A VAX, az IBM nagyszámítógépek és az Intel processzorcsalád egyaránt rendelkezik ilyen formátummal. Míg az első kettőnél nem, az Intel processzorcsaládnál biztosított a műveletvégzési lehetőség (+,-,*,/) is. Pakolt Mivel 4 bit felhasználása bájtonként pazarlás, a pakolt vagy tömörített decimális formában minden bájtot felbontanak két db négybites mezőre s így két jegyet tárolnak bájtonként. Pakolt decimális: n db tetrád - azaz decimális helyiérték tárolását biztosítja, ami architektúránként eltérő. Az n értéke például a nagy IBM és a VAX gépek esetén 31 (azaz a teljes hossza 16 bájt), az Intel mikroprocesszoroknál pedig 18, amit 10 bájton tárol. Az egyik szélső bájt tartalmazza az előjelet A többi bájt egyenként két BCD számjegyet tárol. A különféle aritmetikai műveletekhez (+,-,*,/) ez az formátum használatos leginkább. nx sign BCD BCD BCD BCD sign .

azelõjel - architektúránként eltérõen vagyaszámelején vagyaszámvégénhelyezkedikel. 48 FA1 1.432 A BCD ábrázolás jellemzői A decimális számok száma Lehet fix hosszúságú, ami az implicit érték, hiszen nem szükséges a hosszúságot specifikálni. A változó hosszúságúaknál a hosszat specifikálni kell (például az operandusban) és általában a maximális hosszat az architektúra korlátozza. Az előjel kezelése Az előjel hossza Lehet négy bit (például a nagy IBM és a VAX gépek) és lehet nyolc bit, azaz egy egész bájt (például az Intel processzorcsalád). Az előjel helye Több lehetőség létezik a pakolt BCD formátumban: az előjel állhat a legmagasabb helyiértéken, ami egyszerűsíti az outputot, pl a nyomtatóra; az előjel állhat a legalacsonyabb helyiértéken, ami egyszerűsíti az aritmetikai műveleteket, mivel az mindig a legalacsonyabb helyiértéken kezdődik és fontos ismerni már a művelet elején mindkét operandus

előjelét: mivel ha az egyik negatív, akkor összeadás helyett kivonást kell végrehajtani (ami egy egész más művelet!). Az előjel kódolása A pozitív és negatív előjelet lehet kódolva megadni, felhasználva a számok által nem használt négy bit hat érvénytelen kombinációját (például az A, C, E, F = +, a B és D = -) (például a nagy IBM és a VAX sorrendben a C-t és a D-t használja) vagy például a + és - ASCII kódját felhasználva. például a nagy IBM és a VAX F értékkel expliciten azt jelzi, hogy a szám előjel nélküli. Mindkét módszert gyakran használják. A tízes számrendszer szerinti műveletvégzés egy kissé bonyolultabb, mint a sima kettes számrendszerbeli műveletvégrehajtás és az aritmetikai egység felépítése is eltér a kettesben dolgozóétól. Ezt vizsgáljuk meg a következőkben 1.433 A BCD számok összeadása A BCD kódban megadott számok bináris számrendszer szabályai szerint összeadhatók, de ha az összeadás

eredménye 9-nél nagyobb, akkor a tízes számrendszer szabályai szerint kell képezni az átvitelt. Ezt korrekciónak nevezzük: az összegből 10D-t kell kivonni 10D=1010B Ennek kettes komplemensét: 0110B hozzáadjuk, azaz végső soron 6-ot hozzáadunk. Az eredmény előjelének megállapítása külön történik. 8 +7 15 átvitel -10 6 1000 0111 1111 0110 10101 átvitel Egy decimális helyiértékes, azaz 4-bites összeadót tervezek, elvégzi az összeadást és ha érvénytelen szám jön: elvégzi a korrekciókat, ez pedig: 10 kivonását jelenti vagy az Assemblerben a decimális kerekítés utasítása, az ADJUST A karakter érvénytelen jellegét a 2. - 3 számjegy dönti el: ha az 1 számjegy 1 s a 2 vagy a 3 is az, akkor az egy érvénytelen karakter. 49 FA1 B3 A3 Σ 1 Cout B2 A2 Σ C2 S2 S3 & A0 B1 A1 B0 Σ Σ C1 Cin C0 X0 S1 1 Σ − 2 Σ X2 X3 Σ − 2 X1 Fél-összeadó, mert nincs carry bemenete. Az S részösszeget, az X a

végösszeget jelöli A felső sor binárisan összeadja a bejövő két db 4 bites számot, az alsó sor pedig generálja az átvitelt (az átvitel generáló fokozat); korrigálja a számot (korrekciós fokozat). Többhelyiértékű BCD összeadók a bináris összeadóknál megismert módon alakítható ki, azaz n helyiértékű párhuzamos összeadóhoz n darab BCD összeadót alkalmazunk. Annak érdekében, hogy gyorsabban terjedjen az átvitel, itt is alkalmazzák a CLA áramköröket. A BCD összeadó jelölése a következő: DS 1.434 Esettanulmány 50 FA1 Intel processzorok Zónázott ábrázolási módnál az alsó négy biten ábrázolja a BCD számokat, a felső négy bitre pedig 3 kerül. Műveleteket (+,-,*,/) is hajthatunk végre zónázott számokon. Pakolt decimális: 80 bit hosszú (10 egymást követő bájt). A legfelső helyiértékű bájt legfelső bitje az előjel. Ha értéke 1, negatív a szám, ha 0, pozitív A legfelső bájt többi bitje

kihasználatlan A többi bájt egyenként két BCD számjegyet tárol. Értéktartománya: 18 db 18 db -9.9 ≤ x ≤ 99 sign 9x BCD BCD . BCD BCD 1.435 Jelentősége Előnye: pontosság; Hátránya: komplexebb a műveletvégzés, így drágább a műveletvégző és lassabb a műveletvégzés - a mai áraknál és teljesítményeknél ez a hátrány már elhanyagolható; rosszabb a memória-kihasználtsága, mint a bináris számoké: a BCD szám a 16 lehetséges kombinációnak csak kb. 60%-át, azaz 10-et használ ki A mai memória-árak és méretek mellett ez a hátrány szintén elhanyagolható. Mivel napjainkban egyre meghatározóbbak az alkalmazói szempontok, így a BCD ábrázolásnak jelenleg az előnyei dominálnak és így perspektív az alkalmazása. Érdekességek: A BCD gyakran található a különféle alkalmazásoknál, például: a mikroprocesszorok többsége biztosítja a használatát; a Basic fordítók jelentős része valamennyi numerikus műveletet BCD

kódot használva végeznek; például a zsebszámológépek és a digitális órák általában ezt a formátumot használják. 1.44 Fixpontos - lebegőpontos - BCD: melyiket használjam? Fixpontos A fixpontos azaz az integer számításokat a processzor könnyebben hajtja végre, s ezért nyilvánvalóan gyorsabbak. Az operandusok az operatív memóriában általában kevesebb helyet igényelnek (a byte formátum csak 8-bites, míg a legrövidebb lebegőpontos formátum is 32 bites); és így a lehívásuk is gyorsabb lehet (a 32-bites longint gyorsabban olvasható be egy 32-bites sínen, mint egy 64-bites duplapontosságú lebegőpontos szám). önmagában, a számok ábrázolása is pontosabb, mint a lebegőpontos számoké (egy IF a=1 utasításban például veszélyes lenne lebegőpontos formátumú a változót használni); Műveletvégzés során már az ábrázolt számok pontossága már erősen korlátozott, hiszen ha a törtpontot a szám végére képzeljük, az egész

számok közötti számtartományok a gép számára nem léteznek. Ez azzal az eredménnyel jár, hogy egyes műveletek pontatlanul végezhetők. (pl 7/4=1) 51 FA1 A mai magas szintű programozási nyelvek általában biztosítják a 8, a 16 és a 32 bit hosszúságú integer formátumot. Ezek közül a változónk várható értelmezési tartományának megfelelően válasszunk Nyilvánvaló, hogy a hosszabb formátumok feldolgozása időigényesebb, mint a rövidebbeké. Tehát igyekezzünk a lehető legrövidebb formátumot választani. Lebegőpontos A lebegőpontos számokat akkor használjuk, amikor: a változónk vagy konstansunk nem csak egész, hanem törtrészt is tartalmaz; a számunk kívül eshet az integer értelmezési tartományon, azaz nagyon nagy vagy nagyon kicsi lehet; ha az igényelt pontosság túllépi azt a pontosságot, amit a leghosszabb rendelkezésünkre álló integer formátumunk biztosít. Végső soron a lebegőpontos ábrázolás során igen nagy

pontosságot is képesek biztosítani a hosszabb formátumok. Ugyanúgy, mint az integer esetében, a lebegőpontos számoknál is a rövidebb formátummal gyorsabb a műveletvégzés. Éppen ezért csak akkor használjuk a pontosabb formátumot, amikor arra valóban igény van. BCD Azon programozási nyelvek esetében, melyek lehetővé teszik a BCD formátum alkalmazását, ott a gazdasági alkalmazások által igényelt pontosság elérése céljából a lebegőpontos ábrázolásnak egy attraktív alternatívája a BCD ábrázolás. 1.45 Az ALU egyéb funkciói Mindeddig csak az ALU aritmetikai funkcióival foglalkoztunk. Mint a neve is mutatja, a logikai műveletek végrehajtására is képes. A kétváltozós logikai függvények mind a 16 fajtájának végrehajtására szolgáló áramkörök rendkívül egyszerűek az aritmetikai műveleteket megvalósító áramkörökhöz képest. Az egy lapkán megvalósított ALU-k általában az összeadás, kivonás (nagyobb

teljesítményű gépeknél a szorzás és az osztás is) és a 16 Boole-funkció végrehajtására képesek, 4, 8, 16 vagy 32 biten párhuzamosan. A szabványos utasításkészletben általában gazdag lehetőségek vannak a LOAD, STORE utasításokra. Az ALU-nak címeket kell tudni generálnia az MAR-hez, ezért rendelkeznie kell egy indexelési célt szolgáló összeadóval. Erre lehet alkalmazni az ALU integer összeadóját vagy pedig egy kevésbé komplex, ezért gyorsabb speciálisan erre a célra szolgáló összeadót. Az összehasonlítások és a feltételes ugrások szintén összeadót igényelnek. Általában két egyed összehasonlítását az egymásból való kivonásukkal és az előjel tesztelésével oldják meg. Ezt bizonyos, a programozó számára elérhető flip-flop-ok beállításával jelzik vissza. A decimális aritmetikát néha hardver úton, különállóan valósítják meg, például egy soros összeadóval, máskor pedig az általános célú ALU

összeadóját mikroprogrammal vezérelve használják. A karakter orientált utasítások végrehajtására is szolgálhat egy speciális egység vagy lehet használni erre is a közös erőforrásokat. Ez általában nem növeli a hardver tervezési komplexitást, mivel a feladatok többségét mikroprogram vagy szoftver vezérli. Valamennyi utasításkészlet tartalmaz különféle léptetési utasítást. Az elemi aritmetikai műveletek is igénylik a léptetési képességet. 1.451 Az ALU tervezése A processzor által végrehajtott utasításokban használt különféle áramköröket gyakran egyetlen, ALUnak nevezett egységben kombinálják. Az ALU komplexitását általában az határozza meg, hogy milyen módszerrel történik az aritmetikai utasítások végrehajtása. Akkor lehetséges az áramkörök extenzív megosztása, ha a különféle utasításokhoz, főképpen a szorzáshoz és az osztáshoz hasonló algoritmusokat használunk. 52 FA1 Jó folytatás: Hayes.

199-201 old 3. Eltolások végrehajtása a) b) - logikai eltolások aritmetikai eltolások abszolút értékes kód inverz kód és kettes komplemens kód hasonlóan, mint a logikai léptetés, kivéve a negatív szám léptetésekor a felszabaduló helyre a táblázat szerinti érték kerül: Shift balra jobbra balra jobbra inverz kód kettes komplemens bit 1 1 0 1 A műveletek eredményeként előfordulhat, hogy az eredmény nagyobb pontosságú számként adódik, mint amilyen az adatszó helyén ábrázolható (pl. szorzás, osztás) Ilyenkor az ALU-nak a kisebb helyiértékeken keletkező, már nem ábrázolható biteket figyelmen kívül kell hagynia. Természetesen előnyös ilyenkor, ha az elhagyott bitek értékétől függően az ábrázolható helyértékeken módosításokat, tehát kerekítést lehet végezni. A kerekítés végrehajtására az ALU-ban sokfajta módszer létezik, ezek ismertetésére nem térünk ki. Tartalom 0. A VEZÉRLŐ EGYSÉG +

MŰVELETVÉGZŐ EGYSÉG = CPU 1 0.1 A vezérlő egység és a műveleti egység kapcsolata 1 0.2 Belső sínrendszer 0.21 Pont-pont vagy dedikált sínrendszer 0.22 Közös sín vagy egysínes rendszer 0.23 A többsínes rendszer A kétsínes belső sínfendszer A háromsínes belső sínfendszer 3 3 4 4 5 5 0.3 Szinkron és aszinkron processzorok 0.31 A szinkron processzorok 0.31 Az aszinkron processzorok 5 5 6 1. MŰVELETVÉGZŐ EGYSÉG 6 1.1 Regiszterek 6 1.2 Adatutak 1.11 Adatút csatolási módok 1.111Egy adatutas: 1.112 Két adatutas: 1.113 Három adatutas: 6 7 7 7 8 53 FA1 1.3 Kapcsolópontok 9 1.4 ALU 10 1.41 Fixpontos műveletek 10 1.411 Normál bináris kódú pozitív számok összeadása 10 Egybites félösszeadó 10 Teljes összeadó 2 db ∑/2-ből 11 Teljes összeadó 11 Igazságtábla 12 A logikai függvények felírása 12 Azonos átalakítások 12 Megvalósítás 12 A megvalósított egység tesztelése 14 n-bites soros összeadó 14 n-bites

párhuzamos összeadó 16 "Szimultán" átvitelképzés vagy carry look-ahead vagy rekurzív módszer 16 A CLA áramkörök architekturális elhelyezkedése 18 Összeadó+carry look ahead (gyors átvitel előrejelzés) 18 P és G előállítás az összeadókban 18 Hosszú operandusok esetén csoportképzés 19 Három szám összeadása (carry-save adder - carry-megtakarító összeadó 19 1.412 Fixpontos kivonás 20 Inverz kód vagy egyes komplemens 20 Túlcsordulás 22 Kettes komplemens kód (KKK) 23 Többletes kód 24 1.413 Fixpontos szorzás 24 Szorzási algoritmusok, nemnegatív számok szorzása 24 Bináris műveletvégzés 24 A szorzás időigényessége, a bináris szám hossza: 25 A szorzat hossza 25 A szorzat keletkezése két regiszterben 25 Előjeles számok szorzása (soros szorzók) 25 A számok abszolút értékes kódban vannak 26 A számok kettes komplemens kódban vannak 26 A szorzás gyorsítása 26 Bit-csoporttal történő szorzás 26 Booth-féle

algoritmus 27 Átvitel megtakarítás - carry-save 28 1.414 Osztás 28 A hagyományos osztás kivonásra visszavezetve 28 Visszatérés a nullán át (restoring) 29 Visszatérés nélküli osztás (nonrestoring) 30 1.415 A fixpontos multimédia feldolgozás 31 Hang 31 A felbontás és a mintavételi gyakoriság 31 A feldolgozandó adatok jellege és mennyisége 32 Képfeldolgozás: bittérképes vagy raszter megjelenítés 33 A felbontás és a színskála 33 Műveletek a pixeles képeken (képfeldolgozó utasítások) 33 A feldolgozandó adatok jellege és mennyisége 33 A fixpontos multimédia feldolgozási irányai 34 Adattárolás és -átvitel 34 Hangtömörítés 34 Képtömörítés 34 JPEG 34 MPEG 34 Adatfeldolgozás PC-környezetben 34 Multimédia segédprocesszorral 35 Az általános célú processzorunk multimédia célú bővítésével, az MMX kiterjesztéssel 35 54 FA1 A fixpontos MMX feldolgozás A pakolt adattípusok Összeadás pakolt adattípussal 1.42

Lebegőpontos számok 1.421 A lebegőpontos ábrázolás-kialakulásának oka és formája 1.422 A lebegőpontos ábrázolás története 1.423 A lebegőpontos ábrázolás jellemzői Radix Az értelmezési tartomány Pontosság A normalizált jellemző Alulcsordulás, túlcsordulás Denormalizált számok A nulla ábrázolása A rejtett bit Az őrző bitek (guard bits) A karakterisztika (exponens) ábrázolása 1.424 Az IEEE 754 lebegőpontos szabvány A lebegőpontos formátumok Szabványos formátum Egyszeres pontosságú (Short real vagy single precision) Kétszeres pontosságú (Long real - double precision) Kiterjesztett (extended) formátum Bővített (extended) egyszeres pontosságú Bővített (extended) kétszeres pontosságú Műveletek A kerekítés A kivételek kezelése: 1.425 Műveletek lebegőpontos számokkal Összeadás-kivonás Szorzás Osztás 1.426 A lebegőpontos aritmetikai egység megvalósítása Kombinált (univerzális) aritmetikai egység Dedikált

lebegőpontos egység 1.427 Esettanulmányok Az Intel család PowerPC 604 1.428 Lebegőpontos multimédia feldolgozás Vektoros megjelenítés 2D Műveletek vektoros képeken (képfeldolgozó utasítások) A feldolgozandó adatok jellege és mennyisége 3D A feldolgozandó adatok jellege és mennyisége A lebegőpontos multimédia feldolgozás megvalósítása: KNI vagy MMX2 1.429 A lebegőpontos műveletvégzés jelentősége 1.43 BCD-összeadás 1.431 A decimális számok ábrázolása (BCD) Zónázott Pakolt 1.432 A BCD ábrázolás jellemzői A decimális számok száma Az előjel kezelése Az előjel hossza Az előjel helye Az előjel kódolása 1.433 A BCD számok összeadása 1.434 Esettanulmány Intel processzorok 55 35 35 35 36 36 36 37 37 37 37 37 38 38 39 39 39 39 40 40 40 40 41 41 41 41 41 41 42 43 43 43 43 44 44 44 45 45 46 46 46 46 46 46 46 46 47 47 47 48 48 48 49 49 49 49 49 49 49 50 51 FA1 1.435 Jelentősége 1.44 Fixpontos - lebegőpontos - BCD: melyiket

használjam? Fixpontos Lebegőpontos BCD 1.45 Az ALU egyéb funkciói 1.451 Az ALU tervezése 56 51 51 51 52 52 52 52 FA2 2. A vezérlőegység Párhuzamos (decentralizált) futószalag szuperskalár mikroprogramozott Szekvenciális (centralizált) huzalozott 1947: az első 1954: elektronikus Wilkes számítógép 1964: 1967: CDC 6600 IBM 360/91 t A párhuzamos (decentralizált vezérlés napjainkban is a szekvenciális (centralizált) vezérlés többszörözésével áll elő, azaz annak az elve vagy huzalozott, vagy pedig mikroprogramozott. Az utóbbi kettő tehát a napjaink vezérlésének az építőelemei. Más szavakkal a huzalozott és a mikroprogramozott vezérlés nem egy elavult elv, hanem ellenkezőleg: a napjaink vezérlésének az infrastruktúrája. Bár a szuperskalár hamarabb jelent meg, mint a futószalag technika, de az utóbbi hamarabb vált elterjedtté, ezért az utóbbit tárgyaljuk előbb s részletesen. A szuperskalár processzorokról viszont

csak a következő félévben tárgyalnak majd igen részletesen. 2.1 A szekvenciális (centralizált) vezérlés Történetileg két vezérlőegység tervezési általános megközelítési mód alakult ki. Az első úgy tekinti a vezérlőegységet, mint egy szekvenciális logikai áramkör, amely arra szolgál, hogy a vezérlőjelek egy specifikus fix szekvenciáját generálja. Ezt a szekvenciális áramkörök vonatkozásában szokásos célfüggvény szerint tervezik, azaz a komponensek számának minimalizálása és a műveleti sebesség maximalizálása. Mihelyt megkonstruálták, a viselkedésének megváltoztatását csak újratervezése és az áramkörökkel való fizikai újra megvalósítása útján érhetjük csak el. Ezt nevezik huzalozott vagy áramköri vezérlőegységnek. A vezérlőegység a számítógép legkomplexebb logikai áramköreinek egyike. A vezérlőjel szekvencia aktiválása által végrehajtott különféle utasítások bizonyos hasonlóságot

mutathatnak egymáshoz. Ennek eredményeképpen a huzalozott vezérlőegység struktúrája mindig kevéssé áttekinthető és gyakran emlegetik, hogy random logikát tartalmaz. Ez a huzalozott vezérlőegységet drágán megtervezhetővé teszi, melyben a hibakeresés is költséges. 1950 körül több számítógép-tervező, így Maurice V. Wilkes (Cambridge University) is észrevette a rugalmas és szisztematikus vezérlési áramkör-tervezési mód kialakításának szükségességét. A Wilkes által javasolt, általa mikroprogamozásnak nevezett módszer bevezeti a következő formát: Activat control lines {ci,j} mint egy (mikro) utasítást, amelyet egy speciális, Control Memory-nak nevezett címezhető memóriában tárol. Egy mikroutasítás sorozatot kell végrehajtani ahhoz, hogy egy gépi kódú utasítást végrehajtsunk, ez a sorozat az erre a gépi kódú utasításra vonatkozó mikroprogram. A művelet végrehajtása során először a Control Memory-ból

lehívásra kerül egy mikroutasítás, melyet aztán közvetlenül a vezérlővonalak aktiválására használunk. A Control Memory melletti vezérlőegységet mikroprogram vezérlőegységnek nevezzük. FA2 A mikroprogramozás a vezérlőegység tervezést egyértelműen rendszerezettebbé tette, mivel a vezérlőjeleket jól meghatározott formátummal rendelkező szavakba (mikroutasításokba) szervezte. Mióta ezeket a jeleket szoftverben valósítottuk meg, a tervezési változtatások könnyedén megvalósíthatók a Control Memory tartalmának cseréjével. Egyébként a mikroprogramozott CPU képes arra, ha a szükséges mikroprogram elérhető, hogy több, különféle számítógép gépi nyelvén írt programokat hajtson végre, ezt a folyamatot hívják emulációnak. A különféle hátrányai miatt a mikroprogramozás az IBM 360-as gépcsalád kisebb modelljeinek megjelenésével kezdett csak elterjedni a hatvanas évek közepén. Érdekesség, hogy a 360-as

gépcsalád nagyobb, gyorsabb modelljeiben nem alkalmazták a mikroprogramozást, mivel csökkentette volna a műveleti sebességet. Viszont amióta a memóriagyártás költségei radikálisan mérséklődtek, a mikroprogramozás lett a vezérlőegység tervezésnek a szabványos módja. A következőkben részletesebben megvizsgáljuk a huzalozott (ebben nincs mikroprogram) és a mikroprogramozott (ebben is van huzal) központi vezérlő egység működését. 2.11 A huzalozott logikájú vagy áramköri vezérloegység Az elso és a második generációs számítógépeknek - néhány kísérleti modelltől eltekintve - huzalozott logikájú vezérlőegységük volt. Ábra-javítás: 2.111 Felépítése és működése Az áramköri vezérlőegység megvalósítása: PC Memória MDR MAR MK utasításregiszter IR PC dekóder - DEC vezérelt objektum ütemezõ Feltételek CLK Reset Az egyes blokkok feladata, felépítése és működése: PC Lényegében egy bináris

számláló regiszter; feladata a soron következő utasítás címének kialakítása, tárolása. E célból a szószervezésű gépeknél 1-gyel, a bájt-szervezésűeknél pedig 2vel, 4-gyel vagy 6-tal inkrementálódhat Ugró utasítások esetén azok címrészét is át tudja venni a címképző egységen keresztül. IR A hossza a leghosszabb utasítástípushoz igazodik. A végrehajtandó utasítást az operatív memóriából kapja, és a végrehajtás idejére tárolja. Az utasítás mezőit (műveleti kód, címmódosításra utaló rész, címrész) folyamatosan felajánlja értelmezésre és feldolgozásra az utasítás-dekódolónak és a címképző egységnek. 2 FA2 DEC Az utasítás-dekódoló egy kombinációs áramkör, amely az utasítás egyes mezőit értelmezi. Kimenetei az ütemező működését vezérlik. Ütemező Bemenetei a dekódoló, az előző utasítás feltétel-bitjei, a reset valamint - aszinkron működés esetén - a visszajelentő

impulzusok. Szinkron működés esetén pedig az órajel (clock). A feladata: egyfelől a vezérlőegység többi blokkjának; másfelől a vezérelt objektumok, azaz az operatív memória, az ALU, a sínrendszer és az I/O funkcionális egységeinek szekvenciális vezérlése. Az utasítások elemi lépései általánosságban a következő műveletet jelentik: egy regiszter tartalmát bizonyos módosító (komplementáló, összeadó, léptető, inkrementáló, stb.) áramkörökön keresztül át kell küldeni egy másik regiszterbe. A regiszterek lehetnek az ALU; a központi vezérlőegység; az operatív memória vezérlő egysége vagy az I/O rendszer regiszterei, köztük olyanok is, amelyek csak a mikroutasítás számára elérhetők (címezhetők), azaz ún. rejtett regiszterek. Az ütemező a szükséges vezérlőjelek kibocsátásával megnyitja azokat a kapuáramköröket, amelyeken keresztül a kijelölt regiszterek tartalma a módosító áramkörökre kerül;

megfelelő vezérlőjelekkel "közli" a módosító áramkörökkel a szükséges feladatukat; megnyitja azokat a kapuáramköröket is, amelyeken keresztül az eredmény a kijelölt regiszterbe kerül. Egy közepes teljesítményű huzalozott számítógépben általában több száz olyan vezérlési pont van, amelyek mind vezérlést igényelnek. 2.113 Előnyei, hátrányai Előnye: ezek gyorsabbak a mikroprogramozottnál, mivel további időt igényel a mikroutasításnak a Control Memory-ból való fetch-elése. mivel azonban az egyetlen mikroutasításban kijelölt elemi műveletek általában egy CPUciklusidő alatt elvégezhetők, a mikroprogramtároló ciklusidejének célszerű megegyezni a CPU-ciklusidővel, elérési idejének pedig nyilván ennél is rövidebbnek kell lennie. Elsősorban ez a sebességi követelmény magyarázza azt a tényt, hogy bár Wilkes már 1951-ben kifejtette a mikroprogramozás elvét, az a gyakorlatban csak az 1960-as évek közepén

kezdett elterjedni: a harmadik generációs számítógépek jelentős része már mikroprogramozott vezérlésű; kezdetben olcsóbb volt a mikroprogramozott vezérlőegységnél, mivel a Control Memory és az azt elérő áramkörök növelték a költségeket. Hátrányai: - csak körülményesen, drágán módosítható; a tervezése, debug-olása drága. azaz merev és nehezen áttekinthető. 2.12 A mikroprogramozott vezérlőegység Minden CPU-utasítás egy vagy több mikroutasítássorozattal valósul meg. Minden mikroműveletet egy specifikus vezérlővonal-készlet kísér, amelyet ha aktiválunk, a mikroművelet teljesülését eredményezi. Mikroprogramozott vezérlésről akkor beszélünk, amikor egy-egy gépi kódú utasítás végrehajtásának vezérlésére programozott vezérlőegységet használunk fel. A vezérléshez felhasznált programot 3 FA2 nevezzük mikroprogramnak, amelynek egy-egy utasítása a mikroutasítás. A vezérlőegység azon részét,

amely a műveleti vezérlést oldja meg, ezekben az esetekben mikrovezérlő egységnek nevezik. A mikrovezérlő a mikroprogram végrehajtásakor, a program utasításai alapján vezérlőjeleket ad ki, amelyek a számítógép vezérlési pontjaihoz kapcsolódó elemi műveletek, tevékenységek engedélyezésére szolgálnak. Tulajdonképpen a mikroutasítások feladata: az adatutak engedélyezése/tiltása. Bonyolult utasítások végrehajtásának vezérlésére szolgáló mikroprogramok feltételes vezérlésátadó és eljáráshívó mikroutasításokat is tartalmaznak. A feltételes vezérlésátadó (ugró) utasításokhoz külső feltételek teljesülését is vizsgálhatja a mikrovezérlő egység. 2.121 A Wilkes féle modell Wilkes 1954-ben publikálta. Egy mikroutasítás a legegyszerűbb formájában két fő részből áll: a vezérlőmező, mely az aktiválandó vezérlési vonalakat tartalmazza és a címrész, amely az ezt követően végrehajtandó

mikroutasításnak a CM-beli címét mutatja. A Wilkes által javasolt eredeti sémában a vezérlőmezők minden ki bitje megfelel a megfelelő ci vezérlővonalnak. Amikor az aktuális mikroutasításban ki=1, akkor a ci aktiválva van, ellenkező esetben pedig ci inaktív. A Control Memory, amelyet ROM-ként valósított meg bal oldali része tartalmazza a vezérlőmezőket, míg a jobboldali a címeket. A CM sorai jelentik a mikroutasításokat A CM oszlopai jelentik mind a vezérlővonalakat, mind pedig a címeket. A CMAR (Control Memory Address Register) tárolja az aktuális utasítás címét. Ezt a címet dekódolják, amely azt eredményezi, hogy a mátrixunk egyik vízszintes sora aktívvá válik. Valamennyi, az adott vízszintes vonal fekete ponttal összekapcsolt függőleges vonala aktívvá válik. Például ha a CM legfelső vízszintes vonalát választjuk ki, amely a 00000 című mikroutasítást reprezentálja, akkor a c1 és c2 vezérlővonal lesz aktiválva.

Ugyanakkor a címmező tartalmát (0001) elküldi a CMAR-ba, amely a következő végrehajtandó mikroutasítás címeként jelenik meg. Mint az ábra mutatja, a CMAR betölthető mind külső forrásból, mind pedig egy mikroutasítás címmezejéből. Tipikusan ez a külső forrás szolgáltatja a CM-ben tárolt mikroprogram kezdő címét Például egy mikroprogramozott CPU esetén minden utasítást speciális mikroprogram hajt végre. Az utasítás műveleti kódja megfelelő kódolással biztosíthatja a mikroprogramjának kezdő címét. Minden vezérlőegység iránt támasztott követelmény, hogy külső jelekre és feltételekre is reagáljon. Ezt a követelményt elégíti ki a Wilkes-i séma a külső feltétel által vezérelt S kapcsoló, amely lehetővé teszi, hogy egy vagy két címmezőt kiválasszunk. Az ábra szerinti negyedik mikroutasítást követheti a 011 és a 100 címen elhelyezkedő mikroutasítás, annak megfelelően, ahogy ezt a külső feltétel

specifikálja. Ez a módszer biztosítja a mikroprogramon belül a feltételes ugrás lehetőségét. IR MK Címrész külsõcím Control Memory CMAR S clock DEC c0 c1c 2c 3c4 Cmátrix Control a a a a a 4 3 2 1 0 külsõfeltétel Vezérelt objektum Tehát nem forrasztás van a találkozási pontokon, hanem dióda: 4 Amátrix Address FA2 Az évek során igen sok módosító javaslat érkezett a Wilkes-i javaslathoz, mely a lényegét tekintve változatlan maradt. A legtöbb a mikroutasítás szóhosszát érintette, ami alapvetően meghatározza a CM méretét és árát. 2.122 Felépítése és működése Most vizsgáljuk meg egy korszerű mikroprogramozott vezérlőegységet. A mikroutasítás általános formátuma a következő: Feltétel kiválasztás Vezérlőrész Ugrási cím Minden mikroutasításnak három fő része van: 1. 2. 3. A feltétel-kiválasztó mezőt a feltételes ugrást eredményező mikroutasítások esetén tesztelési célokra

szolgáló külső feltétel specifikálására használják. A tesztelendő feltétel ugyanis általában egy (külső) feltétel-változó, amit az adatfeldolgozó egység generált. Abban az esetben, ha több ilyen feltétel létezik, egy feltétel választó almezőt képeznek a mikroutasításban, amely azt mutatja meg, hogy a lehetséges feltételváltozók közül melyiket kell tesztelni. A címmező tartalmazza a következő utasítás címét, amit akkor használnak, amikor az ugrási feltétel igaz. Ennek során azt feltételezzük, hogy az MPC mikroprogramszámláló használatos a következő végrehajtandó mikroutasítás címének biztosítására akkor, ha nincs ugrási igény. A mikroutasítás további része, a vezérlési mező, specifikálja kódolt vagy kódolatlan formában azokat a vezérlőjeleket, amelyeket aktiválni kell a kívánt mikroművelet teljesítése céljából. A vezérlési mező közvetlenül vagy közvetve meghatározza az engedélyezett

vezérlési pontokat. A vezérlési mező az alkalmazott vezérlési formától függően esetleg további részekre bontható. Az MPC mikroprogram számláló a CM control memory címregisztere. A CM-ben megcímzett szó tartalma átkerül a CMDR control memory data regiszterbe. A vezérlőmező - amennyiben ez szükséges dekódolásra kerül, majd azt az adatfeldolgozó egység számára szolgáló vezérlőjelek generálására használjuk. Ezután a MPC tartalmát inkrementáljuk Amennyiben ugrást specifikáltunk, akkor a mikroutasítás címmezőjének tartalmát töltjük be az MPC mikroprogram számlálóba. Az ábrán a mikroutasítás feltétel kiválasztó mezőt arra használjuk, hogy vezéreljük a multiplexert, amely a külső feltétel-változók betöltése alapján az MPC vezérlési input betöltését aktiválja. Tételezzük fel például, hogy két feltételváltozót, a v1, v2-t kell tesztelnünk. A feltétel kiválasztó mezőre kettő bit, az s0 és s1

elegendő a következő interpretációval: s0 0 0 1 1 s1 0 1 0 1 Jelentés nincs ugrás ugrás, ha v1=1 ugrás, ha v2=1 feltétel nélküli ugrás 5 FA2 A multiplexernek négy bemenete van: x0, x1, x2, x3, ahol az xi akkor kapcsolódik (kerül) a multiplexer outputjára, amikor az s0s1=i-vel. Ez után ahhoz, hogy vezéreljük a mikroutasítás ugrási címének az MPC-be való betöltését, a következőt igényeljük: x0=0, x1=v1, x2=v2 és x3=1. Végül lehetőség van arra is, hogy az MPC-be külső forrásból töltsünk be egy címet. Ezt akkor használjuk, amikor a kívánt mikroprogram kezdő címét töltjük be azokban az esetekben, amikor a CMben több mint egy mikroprogram van. External addres MUX COND feltételek vagy állapotok load MPC CM inc mikroprogramtár branch Melyikkülsõfeltételt fogomvizsgálni? CMDR mikroprogramdataregiszter DEC azadatfeldolgozóegységfelémenõ vezérlõjelek Mikrostack is lehet benne. Az AM 2900-nál van egy négyes

mélységű stack, ez azt jelenti, hogy négy egymásba ágyazott eljárást lehet meghívni. 2.123 A mikroutasítás hosszát meghatározó tényezők A mikroutasítás általános formátumának vizsgálatakor megállapítottuk, hogy három funkcionális részből áll: feltétel-kiválasztó mező - rövid, hosszát nem tudjuk jelentősen befolyásolni; címmező; vezérlőmező. Az utóbbi kettőt vizsgáljuk meg részletesen. A címrész hosszát meghatározó tényezők Hol kezdődik az utasítástárban az adott mikroprogram? 6 FA2 external address IR MK mikroprogramtár (MPT) A következő végrehajtandó mikroutasítás címe A Wilkes-i modellben minden mikroutasítás tartalmazza a következő végrehajtandó utasítás CM-címét. Ugrási mikroutasítás esetén két lehetséges következő cím van megadva. Az explicit cím specifikációnak előnye, hogy nem fordítunk időt a mikroutasítás címgenerálására, viszont a CM-tér pazarlóan üres. A következő

végrehajtandó mikroutasítás címmezőjét - az ugrási utasításokat kivéve - az összes mikroutasításból kiküszöbölhetjük a mikroprogramszámláló MPC alkalmazásával, mivel ily módon ez szolgál a mikroutasítások címének elsődleges forrásául. (Ezzel tulajdonképpen kiváltjuk az A mátrixot a Wilkes-i modellből.) A szerepe analóg az utasítás-szint PC-jéhez Mivel kizárólag csak utasításokat kell a CM-ből lehívni, az MPC alkalmazható, mint a CM címregisztere. (A főmemória címregiszterének mind utasítás-, mind pedig adatcímet kell tárolnia, ezért annak a PC-től különbözőnek kell lennie.) MPC alkalmazása esetén az ugrási címek MPC alkalmazása esetén az ugrási címeket a mikroprogramokban különféleképpen valósítják meg: CM-tér takarítható meg az által, ha a mikroutasításban nem a teljes címet rögzítjük, hanem annak csak néhány ún. alacsony helyiértékű bitjét Ez az ugró utasítás mozgásterét egy szűk

régióra korlátozza, ami bizonyos mikroprogramok írását megnehezítheti. egy alternatív megközelítés szerint a feltételváltozók számára megengedett a CM címregiszter közvetlen módosítása, ezzel részben vagy teljes egészében kiküszöbölve a mikroutasításokban az ugrási cím szükségességét. (Példa: Hayes: 277 oldal) az ugrási cím lehet magában a mikroutasításban, ekkor az betöltődik a CM címregiszterbe, amennyiben a feltétel igaz. ahol nincs ugrás, az a bit mező rész kihasználatlan. Kevés az olyan utasítás, ahol ugrás van, tehát az esetek többségében a címrész más, például vezérlési célokra kihasználható: az utána következő bit azt jelzi, hogy ebben a részben most = cím vagy = vezérlőrész található. Kinagyítva a CMDR-ben a jelzőbit: CMDR ennekatartalmát jelzi ajelzõbit ugrás - tovább kétféle mikroutasítás-formátumot deklarálunk: = általános mikroutasítás, mely tartalmazza a vezérlőmezőket

(hosszú); = ugrási mikroutasítás, mely csak az opcode-to és az ugrási címet tartalmazza (rövid); Ez a kétszintű tárolási forma, amit a Motorola 68000 használ. Az utasításszerkezetet befolyásolja az alkalmazott tárolási forma is. A mikroprogramok tárolására szolgáló memóriaterület csökkentése érdekében gyakran alkalmazzák a kétszintű tárolási módot. 7 FA2 17bit 68bit nanotároló max. 1024 max. 1024 Ebben az esetben a mikroutasításban a vezérlési mező helyén egy cím található, a vezérlési mezőnek az úgynevezett nanotárolóbeli címét. Tehát a vezérlési biteket tartalmazó mezőt külön (ROM) tárolóban, a nanotárolóban helyezik el. A kétszintű tárolási forma előnye az, hogyha több mikroutasítás is ugyanazt a vezérlési mezőt használja, akkor az elegendő csak egyetlen példányban tárolni a nanotárolóban és mindegyik utasítás ugyanerre a helyre hivatkozhat. Ez bizonyos feltételek teljesülése mellett

összességében tárolóhely megtakarításhoz vezet. Hátránya a megoldásnak a hosszabb utasítás-kiértékelési időtartam A vezérlőrész hosszát meghatározó tényezők A mikroprogramozott processzorokat gyakran jellemzik az egy mikroutasításban specifikálható elemi muveletek számával. Ez a szám egytől néhány százig mozoghat A mikroutasítások vízszintesek és függőlegesek lehetnek. Sajnos nincsen precíz meghatározása ezen fogalmaknak. Két szélső eset: az utasítás feldolgozás lehetséges, maximális párhuzamosítását, azaz elvben akár száz mikroművelet is elvégezhető párhuzamosan (horizontális mikroprogramozás); és a lehetséges, maximális soros elvégzését, azaz elvben minden mikroutasítás csupán egyetlen mikromuvelet elvégzését teszi lehetővé (vertikális mikroprogramozás). Az alapvető különbség tehát, hogy míg a vízszintes sok, a függőleges mikroutasítás csak egyetlen (nincs párhuzamosság) elemi muveletet tud

specifikálni. A vízszintes mikroutasítás Egy közepes teljesítményű mikroprogramozott számítógépben általában több száz olyan vezérlési pont van, amelyek mind mikroparancsokat igényelnek. Megtehetjük, hogy minden egyes vezérlési ponthoz a mikroutasítás egy-egy bitjét rendeljük hozzá. Ezeket horizontális mikroutasításnak nevezzük A vezérlési mező minden egyes bitje egy-egy vezérlési pontot engedélyezhet vagy tilthat. Ha a gépi utasítás feldolgozása több lépésben oldható meg csak, akkor a mikroutasítás tartalmazhatja a következő mikroutasítás címét is. hosszú formátum; magas fokú párhuzamosságot képes kifejezni; a vezérlőinformáció kódolatlan vagy kódolt; például a 360 Model 50, PDP 8, MC68000 család. A mikroutasításokat gyakran úgy tervezik, hogy kihasználják a mikroprogramozási szintnek azt a kedvező tényét, mely szerint sok műveletet párhuzamosan lehet végezni. Abban az esetben, ha valamennyi hasznos

párhuzamosan végezhető mikroműveletet önálló opcoddal jelölnénk, az opkódok száma igen nagy lenne. Ezen túlmenően igen összetett mikroutasítás dekóderre lenne szükség Annak érdekében, hogy ezeket a problémákat kiküszöböljük, szokásos dolog a mikroutasításnak a mikroműveletet specifikáló részét k különböző, vezérlőmezőnek nevezett részre osztani. Valamennyi vezérlőmezőhöz egy mikroművelet halmaz tartozik, melyek mindegyike egyidejűleg hajtható végre azokkal a mikroműveletekkel, amelyeket a további vezérlőmezőkben specifikálunk. A vezérlőmező általában egy meghatározott egység vezérlővonal értékeit specifikálja, például az összeadóét, a 8 FA2 regiszterét vagy a buszét. Tulajdonképpen ez a Wilkes féle extrém modell lényegének funkcionális kiterjesztése, hiszen ott minden vezérlővonalhoz egy egybites vezérlőmező tartozott. Esettanulmányok: Tipikus példa a 360 Model 50 mikroutasítása, mely 90

bit hosszú, melyet 21 különböző célú önálló vezérlőmezőre osztottak. A maradék területet a következő mikroutasítás címének generálására és a hibajelzésre szolgáló paritásbitként használják. Például a 65-67 bit hárombites vezérlőmezője vezérli a központi CPU összeadójának a jobboldali bemenetét. Ezek a mezők mutatják meg, hogy a sok lehetséges regiszter közül melyiket kell összekötni az összeadó jobboldali bemenetével. A 68-71 biten elhelyezkedő vezérlőmező határozza meg az összeadó által végrehajtandó egyes műveletet. A lehetséges funkciók lehetnek a bináris összeadás és a decimális összeadás az input és az output carry bitek különféle módon való kezelésével. Az összes vezérlőjel azonosítható. Ilyenkor hosszú a vezérlőszó Pl a PDP-8-nál 128 hosszú Ugyanakkor ezek közül egyszerre csak kevés aktív: kevés zajlik párhuzamosan. - A Motorola MC68000 processzorcsalád kétszintű, horizontális

mikroprogramozási módot alkalmaz, összesen két utasításformátumot használva: = egy általános célú és = egy ugróutasítás céljára szolgáló formát. Ezt a címrész hosszánál ábrával vizsgáltuk meg. A vezérlőinformáció kódolása A horizontális mikroutasítás lehet: kódolatlan; kódolt. A kódolt legszélső esete a vertikális mikroutasítás, amikor minden mikroművelethez egy opcode tartozik. Például: a vezérlőrész hossza (bit) Típus IBM 360/Model 50 PDP 8 M68000 90 128 68 A PDP 8 példájánál maradva a 128 bit hosszan 128-féle elemi műveletet jelölhetünk ki, melyek mindegyike elvben párhuzamosan is végbemehet. A másik véglet, amikor a 128 féle lehetőséget 7 bit hosszan ábrázoljuk (27 = 128), minden kódértékhez hozzárendelve egy elemi műveletet. Az eredeti Wilkes modellben, ahol minden vezérlővonalhoz tartozik végső soron egy vezérlőmező, a CM tér elég pazarlóan üres, mivel a mikroutasításban specifikálható

vezérlőjel kombinációk közül sok sohasem használatos. Például az R regisztert load-olhatjuk hat független forrásból a c0,c1,c2,c3, c4, c5 vezérlővonalak használatával. Feltételezzük, hogy a mikroutasítás vezérlőmezőjében ezen vonalak mindegyikére vonatkozik 1 bit. 9 FA2 c4 c3 c2 c1 c0 X5 X4 X3 X2 X1 X0 c5 Rregiszter Vezérlőmátrix (kódolatlan): c0 c1 c2 c3 c4 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 . . Mikroutasítás No operation R ← X0 R ← X1 R ← X2 R ← X3 R ← X4 R ← X5 Csak a hétféle változat az érvényes, mivel bármely más esetben az R regiszterbe két független forrásból egyidejuleg történik a betöltés. A kódolatlan formának az előnye, hogy a vezérlőjelek közvetlenül a mikroutasításból származtathatók. Feltételezzük, hogy a mikroutasítást betöltöttük egy regiszterbe, pl a CM data regiszterbe. Ezen a regiszter vezérlőrészének a kimenetei a

vezérlővonalak: A vezérlőmátrix (kódolatlan) megvalósítása: 0 Vezérlõmezõk 1 2 4 5 6 7 8 9 10 Vezérlõvonalak Vezérlőmátrix (kódolt): Ez a 6+1 változat (végső soron egészen 8-ig) egy 3 bit széles mezőbe kódolható (23=8), a következőképpen (közönséges bináris számokként írva fel a kódokat): k0 k1 k2 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 . . 10 Mikroutasítás No operation R ← X0 R ← X1 R ← X2 R ← X3 R ← X4 R ← X5 FA2 Tehát a mi példánknál maradva 6 bit hosszúságú vezérlőmező helyett 3 bit hosszúságú vezérlőrészt értünk el, ami 50% megtakarítást eredményezett. A vezérlőmátrix (kódolt) megvalósítása: Általában bármely n független vezérlőjel vagy mikroművelet a vezérlőmezőben [log2 (n+1)] bit szélességen kódolható, figyelembe véve, hogy specifikálhassuk a no operation lehetőséget is, amikor vezérlőjel nem aktiválódik. A példánk esetében a megvalósítás a

következő: egyetlenvezérlõmezõ (kódolva3bit hosszú) Dekóder vezérlõvonalak (dekódolva6bit hosszú) Vegyük észre, hogy a dekóderből több vezérlővonal jön ki, mint az input kódolt vonal, hisz a kódolás célja pont a tömörítés. Adott esetben a dekódernek 3 vonal bemenete van és 6 vonal kimenete Megjegyzés: míg a kódolás a tervezési fázisban történik, a dekódolás viszont a végrehajtás során: lassítva azt. Átmenet a vízszintesből a függőleges mikroutasításba Amikor kódolt vezérlőmezőket használunk, minden kódolt mezőt össze kell kapcsolnunk egy dekóderrel, amely a vezérlőjeleket visszaalakítja. Ez utóbbinál is még párhuzamosítási lehetőségünk van. Az egyetlen hátrány ennek során, hogy a dekódolás időt vesz igénybe A két szélsőséges mikroprogramozási struktúra között számtalan átmenet létezik, a maximális párhuzamos feldolgozástól a teljesen soros feldolgozásig. A legszélsőségesebb eset, amikor

minden egyes mikroművelethez önálló opcode tartozik. Mind a kevéssé, mind pedig az erős kódolás képviselve van. A kevéssé vagy részben kódolt közbülső eset: vezérlõrész vezérlõjel Az erősen, vagy teljesen kódolt eset: Vezérlõmezõk 0 Dekóder 0 1 2 3 Dekóder 1 Dekóder 2 Vezérlõvonalak 11 FA2 A függőleges mikroutasítás Az a fajta vezérlési struktúra, amelyhez tartozó mikroutasítások csak egy-egy elemi művelet végrehajtását engedélyezik. Így a gépi kódú utasítás feldolgozása több mikroutasítás egymás utáni végrehajtását igényli. A mikroprogram tartalmazhat mikroeljárást, mikroszubrutint hívó utasítást is, azaz felépítése teljesen hasonlóvá válik a makroszintű gépi kódú programokéhoz. Ebben az esetben, a mikroprogram automatikus végrehajtása miatt, a mikrovezérlőben mikroutasítás számláló regiszterre (MPC) is szükség van. rövid formátum; a vezérlőinformáció szélsőséges

kódolása: minden mikroművelethez egy opkód tartozik; Esettanulmány: az IBM 370 Model 145. Az egyetlen mikroműveletet specifikáló mikroutasítás igen hasonlít a közönséges gépi kódú utasításhoz. Az IBM 370/145 mikroutasításának formátuma négy bájtos, a következő megoszlással: Vezérlőmező - 1. operandus 2. operandus CM címzés A baloldali egy vezérlőmező (control field) vagy opcode, mely meghatározza a végrehajtandó mikroműveletet. A következő két bájt határozza meg az operandust A leggyakrabban ezek a bájtok CPU regisztert címeznek. A jobboldali legszélső bájt a következő mikroutasítás címképzéséhez használt információt tartalmazza. Az Intel 8086/88 mikroprocesszor a vertikális mikroprogramozási módot alkalmazzák, alapvetően hasonló felépítésű, többféle célú mikroutasítással dolgozva. 12 FA2 Vízszintes-függőleges mikroutasítás dekóder Vezérelt objektum Vezérelt objektum Vízszintes

Függőleges Az összes vezérlőjel azonosítható. Ilyenkor hosszú Ha meg akarom változtatni, akkor a dekódert is a vezérlőrész. Ugyanakkor ezek közül egyszerre újra kell tervezni Ezért először horizontálisan csak kevés aktív: kevés zajlik párhuzamosan. tervezik meg, kipróbálják, majd megvalósítják vertikálisan. 2.124 Mikroművelet időzítés Összegeznünk kell, hogy minden mikroutasítás generál egy vezérlőjel-készletet, amely a mikroutasítás végrehajtási ciklusa alatt aktív. Egy órajel egyébként szinkronizálja az összes vezérlőjelet; az óraütem lehet ugyanaz, mint a mikroutasítási ciklus periódus. Ezt a vezérlési módot hívják monofázisúnak Egy adott művelet specifikálásához szükséges mikroutasítások száma gyakran csökkenthető, ha a mikroutasítási ciklust több fázisra bontjuk, ahol minden fázis megfelel egy óraütemnek. Minden vezérlőjel tipikusan csak egyetlen fázis alatt aktív. Ezt a műveleti módot

hívják polifázisúnak, amely lehetővé teszi egyetlen mikroutasítás számára, hogy egy egész mikroművelet szekvenciát specifikáljon. Ezzel együtt jár a mikroutasítás formátum komplexitásának növekedése, mivel specifikálni kell a fázisokat, amelyek alatt a vezérlojelek aktiválva vannak. Nézzük meg a regiszter transzfert megvalósító mikroutasítást: R ←f(R1) Ahol az R felveszi az R1-nek az f módosító áramkörrel átalakított értékét. Az implementációtól függően ezt a műveletet több fázisban lehet végrehajtani. A következő négyfázisú interpretálás közös: 1. fázis a következő mikroutasítás lehívása a CM-ből 2. fázis az R1 tartalmának átvitele az f módosító egység bemenetére (az ott található rejtett regiszterbe); 3. fázis tároljuk le az f módosító egység által generált eredményt egy rejtett regiszterben; 4. fázis a rejtett regiszter tartalmának átvitele az R rendeltetési regiszterbe; 13 FA2

óraciklus(ezekegyenlõek) 1 2 3 4 mikroutasításciklus idõ A mikroprogramozott vezérlés legnagyobb hátránya a számítógép kétségtelenül alacsonyabb sebessége. A mikroutasításnak a CM-ből való lehívása jóval tovább tart,. mint a huzalozott vezérlővel történő ugyanolyan vezérlőjelek generálása. Nyilvánvaló, hogy a mikroprogramozott gépek sohasem érhetik utol sebességüket tekintve a huzalozott vezérlésű gépeket. 2.125 A mikroutasítások végrehajtásának gyorsítása Miután a tervezo meghozta azt az alapvető döntését, hogy mikroprogramozott vezérlést alkalmaz, mindent el fog követni, hogy a lehető leggyorsabb gépet alakítsa ki: várhatóan az elérhető lehető leggyorsabb CM-et fogja használni; horizontális mikroutasításokat fog alkalmazni, hogy párhuzamosan a lehető legtöbb vezérlőjelet állíthassa elő. A mikroutasításnak a CM-ből való lehívása sokszor a teljes mikroutasítási ciklusidő jelentős része. A

mikroutasítás lehívási és végrehajtási lépés hasonló módon átfedhetővé tehető, mint a gépi nyelv szinten az utasítás lehívás és végrehajtás. Ennek legegyszerűbb módja, hogy a control memory data regiszter CMDR-t helyettesítjük egy olyan regiszter-párral, mely egy kétlépcsős futószalagot (pipeline) képez: amíg a CMDR1-ben lévő mikroutasítás végrehajtása folyik, a következő mikroutasítást le lehet hívni a CMDR0-ba. A mikroutasítások előlehívása okoz bizonyos szervezési nehézséget. Néha szükséges, hogy az éppen végrehajtás alatt álló mikroutasítás status flag-ét és eredményét használjuk a következő mikroutasítás címének meghatározásához. Így a szekvenciális prefetch eredményeképpen esetlegesen rossz utasítást fogunk prefetch-elni. Ilyen esetekben meg kell ismételni a mikroutasítás lehívást a helyes címről, ami komplexebb hardvert igényel. Egyébként a prefetch technika hátrányai csekélyek és a

gyakorlatban igen surun találkozhatunk vele. a vezérlőmemóriától (CM) CMDR1 CMDR0 dekóderek a vezérlőjelek a vezérelt objektum 14 FA2 Összegzésképpen megállapíthatjuk, hogy egy mikroutasítás vezérlőmező hatása arra a periódusra korlátozódik, amíg a mikroutasítás végrehajtása folyik. Ezt a korlátot feloldhatjuk a vezérlőmezőnek egy regiszterben való tárolásával, amely folytatja a vezérlő egység hatását addig amíg azt nem módosítja a következő mikroutasítás. Ezt a technikát hívják maradék vezérlésnek (residual control) és különösen hasznos, amikor a mikroutasítást a rendszer-erőforrások allokálására használjuk. Például két egység közötti kapcsolat létrehozható egy mikroutasítással és egy hosszabb időszakra fenntartható a maradék vezérlési elv alkalmazásával. 2.126 Írható vezérlomemória A korai években a CM vezérlőmemória csak olvasható eszköz volt, azaz a tartalmát nem lehetett

megváltoztatni. Valójában a ROM és a CM fogalma ezekben az időkben szinonim volt Az okok között említendo, hogy a ROM technológiák, mint a dióda mátrixok egy gyorsabb elérésű kapcsolás biztosítottak, mint az írható-olvasható tárak, például az akkor használatos ferrittárak. Ezen túlmenően a mikroprogramozott processzor utasításkészlete permanensen be volt huzalozva, ami azt jelentette, hogy a CM változtatására csak akkor van igény, ha a tervezési hibákat kell kijavítani illetve a rendszert csekély mértékben ki kell terjeszteni. Már a kezdet kezdetén felismerték, hogy a CM lehetne írható-olvasható memória is. Már Wilkes is megfigyelte, hogy "az ilyen egység, amelyet általában WCM writable control memory-nak neveznek, egy sor különleges lehetőséggel rendelkezik, de kétséges, hogy a költségek megtérüljenek". A WCM lehetővé teszi a gép utasításkészletének a megváltoztatását, egyszerűen lecserélve azt a

mikroprogramot, amely az utasítás opcode-jait interpretálva. Így ugyanazt a gépet különféle utasításkészlettel lehet ellátni: - így a specifikus alkalmazásokhoz testre lehet szabni; - az utasításkészlet kibővítése nem kíván komoly hardware átalakítást, hanem egyszerűen csak a mikroprogram tárolót kell kibővíteni az új mikroszubrutinok tárolására. Így lehetőség van bonyolultabb, akár makroutasításszerű gépi utasítások bevezetésére és hatékony, gyors végrehajtására. Például csupán fixpontos aritmetikával rendelkező gépeknél az aritmetikai egység kibővítése nélkül is lehetőség van a lebegőpontos utasítások kialakítására. A hozzájuk tartozó mikroszubrutinok végrehajtása sokkal gyorsabb, mint a gépi kódú lebegőpontos szubrutinoké, hiszen a mikroprogram nem tartalmaz a közvetlen cél szempontjából felesleges elemi lépéseket, ugyanakkor a gépi utasításoknak már az előkészítő fázisa is hosszabb,

mint egy-egy mikroutasítás végrehajtási ideje; - lehetőség van olyan magas szintű gépi utasításrendszer megteremtésére, amely igen közel állhat egy vagy több eljárásorientált nyelvhez. Ezáltal a fordítóprogramok egyszerűbbekké válnak, a fordítások időigénye is jelentősen csökken. Az ilyen típusú, úgynevezett formulavezérlésű gépekben a magas szintű nyelven írt programok szoftver kompilálása és a lefordított tárgyprogramok lefuttatása helyett lényegében egy hardver kompilálás-interpretálás folyik. Ezt a hardver számára bonyolult feladatot a mikroprogramozás alkalmazásakor firmver transzlátor és interpreter rutinok végezhetik, azonban lényegesen gyorsabban, mintha gépi kódú szintű szoftver interpretert alkalmaznánk. Gyakorlati példák: = 1967-ben egy IBM 360/30 gép esetén lehetővé tették az EULER nyelven írt programok hardver interpretálását. (Az EULER az ALGOL-hoz közelálló nyelv); = 1971-ben egy IBM

360/25-öt tettek alkalmassá az APL nyelv mikroprogramozott interpretálására, időosztásos üzemmódban. A tapasztalatok szerint az "APL-gép" a skalár operációkat lassabban, a vektor és a tömb-operációkat viszont sokkal gyorsabban hajtotta végre, mint az eredeti IBM-gépen futó APL szoftver interpreter; = a kijevi Kibernetikai Intézetben V. M Gluskov akadémikus vezetésével tervezett MIR-2 is formulavezérlésűnek mondható mikroprogramozott gép; magas szintű nyelve elsősorban mérnöki számítások végzésére alkalmas. - lehetőség van különböző géptípusok közötti szoftver-kompatibilitás megteremtésére azáltal, hogy a befogadó gép mikroprogram-tárolójában különleges, ún. emulátor m ikroprogramokkal interpretáljuk egy másik gép utasításait Továbbá alkalmasan megválasztott mikroutasítás-készlettel tetszőleges gép utasításrendszerét mikroprogramozhatjuk. Az ilyen ún 15 FA2 általános célú emulátor

gépeknél tulajdonképpen nincs is szükség saját gépi utasításrendszer definiálására, csak a mikroutasításrendszert kell megadni. Megfelelő emulátor mikroprogramok megírása és betöltése után már futtathatók rajta az emulált gépre írt programok. Ilyen általános rendszer példái: = a Standard Computer Corp. által tervezett ún soknyelvű (multilingual) processzor, az MLP-900; = hasonló rendeltetésű az ICL univerzális emulátorgépe, az E-1 is. Az emuláció alkalmazása szükséges lehet, amikor = egy régebbi gépre írt programot egy újabb gépen akarunk futtatni. Ahelyett, hogy a programokat a régi gép kódjáról átfordítanánk az új gép gépi kódjára, egy olyan programot írhatunk az új gépre, mely szimulálja a régi gép utasításkészletét. Ezt a programot a jó hatékonyság érdekében célszerű mikroprogramként megírni, amennyiben az új gép vezérlőegysége mikroprogramozott. Ezt a módszert általában a gyártók

alkalmazzák egy régi család jellemzőinek emulációjával az új családban mikroprogramozás segítségével; = egy új gépet fejlesztünk. Az emuláció hátrányai: - = Meg kell azonban említenünk egy lényeges problémát. Az emulálni kívánt gép regiszterkészlete, beviteli/kiviteli rendszere, sínrendszere általában eltér az új gépétől. Ezeket az eltéréseket az emuláció során ugyan elvileg mindig fel lehet oldani. Ez a gyakorlatban azonban komoly nehézségeket okozhat, és bizonyos esetekben célszerűtlenné teheti az emulációt; = a mikroprogramok írása során elkövethető hibák lehetősége (a mikroprogramozás általában bonyolultabb, mint a szokásos programozás); = az esetleg specializált vagy kibővített utasításkészlet kompatibilitási problémákat okozhat; ha az átírható mikroprogram tároló tartalmát a felhasználói programok pillanatnyi értékének megfelelően az operációs rendszer dinamikusan módosíthatja, akkor a gép

utasításrendszere flexibilissé válik. Dinamikus m ikroprogramozással ugyanis a pillanatnyi feladatnak legjobban megfelelő, ún. probléma-orientált gépi utasításkészletet generálhatunk szoftver eszközökkel. Így az adott feladat programozása egyszerűbbé válhat, a program futása pedig felgyorsulhat. Például a compiler számára fordítóprogram-orientált "makroutasításokat", tudományos számításokhoz, pl. lebegőpontos vagy komplex mennyiségeket feldolgozó utasításokat, adatfeldolgozáshoz decimális (BCD) utasításokat definiálhatunk, st. Ilyen lehetőségekkel rendelkezik pl. a Burroughs B-1700 vagy a Nanodata Corp QM-1 gépe; - számítógépek tervezésénél könnyen kipróbálható, tesztelhető és javítható a tervezett firmver, mielőtt letöltenénk egy ROM-ba; - az oktatásban pedig akár a hallgatók is, mint felhasználó realizálhat egy olyan utasításkészletet, amelyet gyakorlóprogramjában éppen felhasznált, és így

ténylegesen is kipróbálhatja programjait; - a WCM-mel rendelkező számítógépeket gyakran úgy tartják, hogy a közönséges értelemben véve nincs is utasításkészletük. Voltak olyan gépek régebben, melyeknek a mikroprogramja a RAM-ban volt eltárolva s reggel floppyról töltötték be. 2.127 Mikroprogramozás A mikroprogramozás az a folyamat, amikor a mikroprogramozható processzor számára írunk mikroprogramokat. Mint tevékenység, összehasonlítható az assembly szintű programozással Egyébként a mikroprogramozónak a processzorról még részletesebb hardver-ismeretre van szüksége, mint az assembly nyelven programozónak. Ezt a szintet a gyártók igen ritkán publikálják Assembly nyelvhez hasonló szimbolikus nyelveket használnak általában a mikroprogramok írásához, ezeket mikroassembly nyelveknek nevezik. Ehhez microassembler-re (tehát fordítóprogramra) van szükség, hogy az ilyen 16 FA2 programokat lefordítsuk végrehajtható

programokká, amit aztán a CM control memory-ban eltárolhatunk. Az elmondottakból következik, hogy a mikroprogramozott műveletvezérlés esetében a felhasználónak elvileg lehetősége van a beavatkozásra a gép működését tekintve. Azonban a mikroprogramszintű beavatkozásnak igen nagyok a veszélyei is, mivel: a hardverkarbantartás (hibafeltárás) igen nehézzé, bizonytalanná válik; a gép operációs rendszere működésképtelenné válhat; a magas szintű programnyelvek fordítóprogramjai használhatatlanokká válhatnak. Ezért az ilyen szintű változtatások csak a fejlesztések alkalmával célszerűek azok számára, akik a hardvert tökéletesen ismerik. 2.127 Előnyei, hátrányai Előnyei: - a központi egység egyszerűbb felépítésű és megbízhatóbb működésű; rugalmasan javítható rugalmasan változtatható: emuláció az ember számára áttekinthető egyszerűbbé és gyorsabbá válik a gép tesztelése hiba esetén. Alkalmas

mikroutasításokkal akár egyenként is megvizsgálható a mikroparancsok hatása és a hibás áramkör lokalizálása jóval pontosabb lehet, mint a hagyományos (gépi kódos) tesztekkel; Hátrányai: kezdetben drága volt és jelentősen visszafogta a gép teljesítményét. Ma már a hardver árcsökkenés eredményeképpen olcsó, és a huzalozotthoz képesti sebességkülönbsége is mérséklődik, bár objektív okokból annak a sebességét sohasem érheti el. A mikroprogramozás növekvő jelentőségét mutatja, hogy már nem csak a központi, általános célú processzorokban, hanem a gép többi funkcionális egységében is felhasználják; így például az I/O processzorokban, a videoprocesszorokban, stb. 2.2 Az elosztott (decentralizált - decoupled) vezérlés 2.21 A futószalag (pipeline) 2.211 Megjelenése Ez a technika a 60-as évek végén jelent meg, mint egy hatékony FP-feldolgozó technika az akkor megjelent elso szuper-számítógépekben, mint az IBM

360/91 (1967), CDC 7600 (1970). Ez a technika közös technikájává vált a 70-es évek vektor-processzorainak. A futószalag-technika - a teljesítménynövelés érdekében - kiterjedt az utasítás-feldolgozásra Ez először a mainframe gépeknél következett be a 70-es években, később pedig a 80-as évek mikroprocesszorainál is. A futószalag-technika napjainkban az utasítás-feldolgozás szabványos módja. A jelenlegi processzorok gyakorlatilag mind alkalmazzák A futószalag technika a legáltalánosabb módja a az utasítás-feldolgozó egység gyorsításának. A nem RISC, nagy teljesítményű gépekben is alkalmazzák ezt a technikát, de a RISC gépek legtöbbjére ez jellemző. Az utasítások egyszerűségének illetve a közvetlen memória-operandusok kiiktatása azaz az rrr operandusok következtében viszont a RISC futószalagok kevesebb fokozatot tartalmaznak, mint a CICS processzoroké. 2.212 A futószalag-technika lényege Pl. egy futószalagon

tévé-szerelés: minden munkahelyen valaki valamit tesz vele s minden munkahelyen egyenlő ideig vár. 17 FA2 Nmunkahely Az ábrán javítandó a nagy N kis n-re. T-idő alatt készül el egy tévé, egy munkahelyen pedig t= T n ideig vár a tévé. De egyszerre n darab tévé készül! Ugyanez az elv a pipeline-nál: ha minden műveletet több részműveletre osztunk: FETCH EXECUTION WRITE (csakRISCII) A fetch a tárból lehívja az utasítást és továbbadja végrehajtásra. A CPU a programot az utasítások egymás után történő lehívása és végrehajtása révén hajtja végre. Ezt általánosítva az Fi és az EXi megfelelel az i-edik utasítás fetch és execute fázisának. Ezt a sorozatot rajzon is ábrázoljuk. t 1 t 2 t 3 t 4 F1 EX1 F2 EX2 F3 EX3 F4 EX4 Fetchunit dolgozik vár dolgozik vár dolgozik vár dolgozik idvõár Exeunit vár dolgozik vár dolgozik vár dolgozik vár dolgozik t idõelteltével lehet kezdeni egyújabbutasításfeldolgozását

Feltételezzük a következőket: a számítógép két hardver-egységgel rendelkezik: az egyik végzi a fetch-elést, a másik pedig a végrehajtást; a fetch és az execute szakasz pontosan egyforma időt igényel; minden pipeline--fokozat úgy működik, mint egy futószalag-munkahely: az inputot tipikusan az előző munkahelytől kapja, és az outputot a következő munkahelynek adja át; végül, az alap-pipeline-ok szinkronizáltak, órajelre működnek. Ez azt jelenti, hogy minden fokozat órajelre fogadja az új inputot, minden fokozat számára egyetlen ciklusidő áll rendelkezésre, hogy elvégezze a kívánt műveletet és minden fokozat a következő óraciklus kezdetével szállítja az eredményt a következő fokozat számára. Ebben az esetben már a következő ábrán látható módon szervezhetjük az utasítás végrehajtást, ahol az óraütemet úgy választottuk meg, hogy mind a fetch, mind pedig az execution egyetlen óraciklus alatt befejeződhet. Az 1

utasítás végrehajtásának félidejében, a fetch-elésének befejeződése után a lehívó 18 FA2 egységben megkezdődhet a második utasítás fetchelése, s ezalatt, párhuzamosan a végrehajtó egység pedig végrehajtja az első utasítást. Ily módon, mind a lehívó, mind pedig a végrehajtó egység állandóan foglalt. Nyilvánvaló, amennyiben ez a folyamat sokáig tart, az utasítás-végrehajtási sebesség a soros végrehajtáshoz képest megkétszereződik. t I1 I2 I3 I4 F1 EX1 F2 EX2 F3 EX3 F4 EX4 t idõelteltével lehet kezdeni egyújabbutasításfeldolgozását Egy utasításhoz szükséges folyamatot azonban nem csupán két szakaszra oszthatunk. Például a futószalagos CPU minden utasítást négy lépésben is végrehajthat a következőképpen: F Fetch D/S utasítás dekódolás és a forrás (source) operandusok lehívása O művelet (operation) végrehajtás W/B az eredmények tárolása a rendeltetési (destination) helyen Mivel minden adott

időben négy művelet zajlik, ezért a soros művelet végrehajtáshoz képest elvben megnégyszereződik a sebesség. 2.213 A futószalag teljesítményét rontó tényezok A futószalag fokozatai számának növelésével azonban a teljesítmény nem sokszorozható meg a végtelenségig, két ok miatt: a fokozatok a gyakorlatban különböző időt igényelnek, így komoly időveszteségek léphetnek fel; a függőségek miatt. A függőségek feloldásának módszerei Statikus (compiler által) Például: vezérlés-függőség Dinamikus (extra hardverrel, az execution időben) Például: adat-függőség 19 FA2 Method of dependence resolution Static resolution Combined resolution Dynamic resolution It is performed by the compiler It is performed partly by the compiler and partly by hardware It is performed by extra hardware E.g MIPS, MIPS-X, i860 MIPS R-line Most pipelines Trend A gyakorlatban a teljesítmény tehát csak egy bizonyos határig növekszik, a

fokozatok számának növelése késobb teljesítménycsökkenést eredményez. Egy fokozat időigénye = a leglassúbb fokozat időigényével Elméletben kikötöttük ugyan, hogy a fokozatoknak pontosan azonos időt kell igényelni, azonban a gyakorlatban ezek végrehajtása természetesen különböző ideig tart. Annak érdekében, hogy a futószalagos műveletvégzés mégis megvalósítható legyen, a leghosszabb ideig tartó fokozat végrehajtási idejét választják a futószalag végrehajtási idejének. Formalizáltan felírva: leglassúbb fokozat többi fokozat a fokozat számára biztosított idő = a végrehajtási idővel a fokozat számára biztosított idő = a végrehajtási idő + várakozási idő Tehát egy kivétellel minden fokozatnál fellép várakozási idő, amit időveszteségnek tekinthetünk. Amennyiben a fokozatok száma nő, ez az időveszteség is nő. A függőségek és azok-kezelésének módszerei A függőségek fajtái Függőségek adat ha az

egymást követő utasítások ugyanazt az adatot használják vezérlés feltétlen és feltételes vezérlőutasítások esetén Adatfüggőségek 20 erőforrás ha az utasítások végrehajtásukhoz ugyanazt az erőforrást igénylik FA2 Adatfüggőség az operandus típusa jellege lineáris utasítás-sorozatban ciklusban memória regiszter Függőségek lineáris utasítás-sorozatban lineáris utasítás-sorozatban álfüggőség valódi RAW WAR műveleti WAW behívási Valódi függőség, a RAW függőség Műveleti adatfüggőség Egy futószalagnál, melyben az utasítás-lehívás és a végrehajtás átfedi egymást, az ugró utasítások vonatkozásában speciális kezelést igényel, mivel a következő utasítás címe függ az aktuális utasítás végrehajtási eredményétől. Amennyiben a futószalagunk kettő vagy több adatlehívást vagy végrehajtást végez el párhuzamosan, akkor hasonló függőség jelenik meg. Ezekben az esetekben adott

művelet addig nem folyhat, amíg egy másik művelet nem fejeződött be. Ilyen függőségek miatt a futószalag műveletek elakadnak, várakozásra kényszerülnek. Ez korlátozza a futószalag struktúra teljesítmény előnyének a hatékonyságát. Ugyanúgy mint az ugrási utasítások, az adatfüggőség is speciális kezelést igényel, hogy mérsékeljük a teljesítmény-csökkentését. Feltételezzünk egy négyfokozatos futószalagot. Az elso fokozatban egy utasítást lehívunk a programmemóriából A második fokozatban az utasítást dekódoljuk és a forrás-operandusokat kiolvassuk a regiszter-file-ból. A harmadik fokozatban pedig egy ALU művelet hajtódik végre, a negyedik fokozatban pedig tároljuk az eredmény-regiszterben az eredményt. Feltételezzük eközben, hogy a CPU három-operandusos utasítást használ, s három adatsínes a belső sínrendszere és így lehetséges egyszerre két forrás és egy rendeltetési operandus használata. Ennek a

hardver-megvalósítása az ábrán látható A regiszter file lehetővé teszi, hogy egyszerre három különböző helyet tudjon kezelni. Két hely szállítja a két forrás-operandust, melyek párhuzamosan továbbíthatók az ALU input-regisztereibe. Az ALU adat-outputja a harmadik hely, amit a regiszter-file fogadni tud, azaz kezel. Probléma: Vizsgáljuk meg a következo utasítást: I1: I2 ADD SHIFT LEFT R1,R2,R3 R3 21 FA2 Az Add utasítás a következő művelet végrehajtását eredményezi: R3 ←[R1] + [R2] I1 F: ADD I2 R1,R2 F:SHIFT ALU NOP R3 NOP R3 SHIFT R3 Megoldás: SRC0 SRC1 RSLT A két forrás regiszter, R1 és R2 tartalma kerül beolvasására a második futószalag fokozatban az SRC0 és a SRC1 regiszterbe a t2 ido alatt. Az ALU előállítja az összegüket és betölti az ALU output regiszterbe, a RSLT-be a harmadik fokozatban (t3), majd letölti a regiszter file-ban lévő R3 regiszterbe az eredményt a negyedik fokozatban, a t4 alatt. A

kérdés, hogy mi történik az I2 utasítás forrásoperandusával? A CPU hardvernek érzékelnie kell azt a tényt, hogy ez az operandus ugyanaz, mint az eloző operandus eredménye és biztosítania kell, hogy annak a regiszternek a karbantartott értéke kerüljön felhasználásra. Minden speciális kiegészítés nélkül az I2 végrehajtását el kell halasztani a t4 ido utánra, ami a futószalagban két ciklus késést jelent. Helyette a következő történik: I1 F: ADD I2 R1,R2 F:SHIFT ALU FWD R3 SHIFT R3 Annak érdekében, hogy kiküszöböljük a NOP ciklust, a hardvert úgy kell szervezni, hogy az ALU outputja további ALU művelet számára elérhető legyen rögtön a következő ciklusban. Ezt a technikát hívjuk operandus-előrehozásnak. Az ábrán a szaggatott vonal mutatja azt a vonalat, amit erre a célra a hardverhez hozzá kell adnunk. Miután felfedeztük, hogy az I2 forrás-operandusa megegyezik az I1 eredmény-operandusával, a vezérlő hardver az

RSLT regisztert választja az SRC0 vagy SRC1 helyett, mint az ALU egyik inputját. Az I2 végrehajtása most megszakítás nélkül folyhat, mint azt az ábra mutatja. Az utasítás második ciklusában az ALU meghatározza, hogy operandus-előrehozást kell végrehajtani és biztosítja a megfelelő adatutat a RSLT regisztertől az ALU két bemenete közül az egyikre. Általános megfogalmazásban a műveleti operandus-előrehozás: 22 FA2 Reg. file EU Mûveleti operandus elõrehozás Betöltési adatfüggőség Hasonló adatfüggőség merül fel az operandusnak az operatív memóriából való olvasása esetén: Data cache Betöltési (load) operandus elõrehozás Reg. file EU Ál függőségek WAR WAW Függőségek ciklusban Vezérlésfüggőségek skaláris környezetben A probléma felvetése Feltétlen vezérlés-átadás csak az alapeljárás: 350-352. oldal Négylépcsős futószalagot feltételezünk: F D I1 I2 I3 I4 I5 E W/B ADD SUB JMP cimke MUL DIV

törlendő 2 db utasítás ADD SUB JMP D MUL E DIV ekkorra kapjuk meg az ugrási címet I100 cimke SHR Feleslegesen hívtunk le 2 db utasítást Feltételes vezérlés-átadás itt képezzük az ugrási címet is, ami itt áll elő csak az alapeljárás: 350-352. oldal 23 FA2 Ha a feltételszámításhoz az adat a rendelkezésre áll I1 I2 I3 I4 I5 I6 I7 ADD SUB IF MUL DIV SHL ADD törlendő 3 db utasítás SUB IF D MUL E W/B DIV SHL adat szükséges I100 cimke SHR Feleslegesen hívtunk le 3 db utasítást Ha a feltételszámításhoz az adat még nem áll a rendelkezésre Például a feltételes utasítás egy megelőző, hosszú végrehajtási idejű utasítás, például egy lebegőpontos osztás eredményét vizsgálja, amit egy másik végrehajtó egység állít elő. Ez esetben az eredmény kiszámításhoz akár 10-50 ciklus szükséges. Ekkor a futószalag ismétli az üres ciklusokat egészen addig, amíg a feltétel kiértékelhetővé nem válik.

Amennyiben ez az üres ciklus k-szor futott, akkor k+3 üres ciklus okozott. De továbbra is csak 3 utasítást kell törölnünk A probléma kezelése A késleltetési rés hasznosítása: késleltetett elágazás Erőforrásfüggőségek A feloldása az egyes eroforrások részekre bontásával illetve többszörözésével történik. Statikus (a compiler által) - vezérlés-függőség - feltétlen ugrás - késleltetett ugrás Vezérlés-függőség Feltétlen ugrás: Delayed branch - késleltetett ugrás CIMKE MUL JMP SUB ADD . DIV CIMKE idevalamit beszúrok, pl. NOP Ügyes programozással ezek 70%-át ki lehet szűrni. F:JMP F:SUB Az ugrási utasítás lehívása után a futószalag elv szerint elkezdődik a következő utasítás, a kivonás lehívása - az ugrás végrehajtásával párhuzamosan. Ennek semmi értelme nincs, csak fölösleges munka, hiszen az ugrás feldolgozásával kiderül, hogy a következő utasítás egyáltalán nem a kivonás lesz, hanem az

ugrási címen lévő utasítás. 24 FA2 Ennek a fölösleges munkának a kiküszöbölése, hogy minden ugrási utasítás után be kell szúrnunk egy késleltetést, pl. egy NOP utasítást Ezt hívják késleltetett ugrási technikának A NOP beszúrása azt is eredményezi, hogy bizonyos veszélyeket kiküszöböltünk. Hiszen a példánál maradva: lehívásra került egy kivonási utasítás, azaz elindult a végrehajtása: nekünk gondoskodni kell arról, hogy ez nehogy végrehajtásra kerüljön, hisz ez valahol egy regiszter értékét hibásra állítaná. A késleltetett ugrást használó gépeknél a fordítóprogram feladata (statikus megoldás) az ugrási késleltetési rés kezelése. Ezt kétféleképpen oldja meg: a nem optimalizáló compiler NOP utasítást tesz be a az ugró utasítások mögé; az optimalizáló compiler megpróbálja megváltoztatni az utasítás-sorrendet, s az ugró-utasítás előttről áttesz egy adatmanipuláló utasítást az ugró

utasítás mögé. Ez azt eredményezi, hogy bár az fizikailag az ugró utasítás mögött kerül végrehajtásra a futószalag-technika hatékonyságának növelése céljából, logikailag az ugró utasítás előttinek számít. A gyakorlatban ez a megoldás kétfokozatos futószalag esetén az esetek 85%-ban sikeres. Logikus, hogy amennyiben a futószalagunk nem kettő, hanem például négyfokozatos, akkor az ugrási késleltetési rés mérete egyről háromra növekszik. Természetesen kisebb az esélye, hogy a fordítóprogramnak sikerül három utasítást átcsoportosítania az ugró utasítás előtti utasításokból. Így a futószalag fokozatok számának növeléséből eredő sebesség-növekedés egy része elvész az ugrásoknak a késleltetése miatt. A feltételes ugrások vezérlés-függőségének kezelése már csak dinamikusan, a végrehajtás során történhet. Dinamikus (extra hardverrel) - adatfüggőség - operandus előrehozás - eredmény-függőség

2.214 A futószalag jellemzoi A futószalag fokozatainak száma A futószalag fokozatainak száma az egyik legalapvetőbb döntés. Nyilvánvaló, hogy minél több fokozatot használunk, annál több a párhuzamos végrehajtás és annál magasabb teljesítményre számíthatunk. Teljesítmény A futószalag fokozatainak száma Egyébként egy sor probléma növekszik meg, mihelyt a futószalagunk mélyebbé válik. Mindenekelőtt a vezérlés- és adatfüggőségek gyakrabban jelennek meg melyek közvetlenül csökkentik a teljesítményt. Így a maximum elérése után a teljesítmény mérséklődni fog. 25 FA2 A korai utasítás-feldogozás során az FX és logikai utasítások feldolgozása 2 vagy 3 fokozatú volt. ( RISC I (2 stages, 1982) or RISC II (3 stages, 1983)). A jelenlegi utasítás futószalagok 5-15 fokozattal rendelkeznek. Tipikusan az integer futószalagoknál a lebegopontos futószalagok 2-3 fokozattal hosszabbak. Az egyes fokozatok által végrehajtandó

feladatok meghatározása Ezt a specifikációs szinttől függően növekvő részletességgel végezhetjük el. Például lehet 1. szint 2. szint Fetch MAR <- PC MDR <- (MAR) IR <- MDR Execution Az egyes fokozatok sorrendjének meghatározása (újrafeldolgozás) Egy utasítás-végrehajtás során a fokozatok általában egymás után lépnek működésbe. Bizonyos esetekben azonban bizonyos fokozatok újrafeldolgozással működnek, ismételten használva őket az eredmény előállítása érdekében. Ezt a megoldást szorzás-osztás esetén alkalmazzák gyakran Ezeket a műveleteket eltolások és összeadások sorozatára vezetik vissza, így ugyanazon számokkal újra és újra kell műveletet végezni. Értelmetlen lenne a rész-eredményeket a regiszter-file-ba kiírni, hiszen ez jelentősen csökkentené a feldolgozási sebességet. Az újrafeldolgozás a hardver-erőforrások hatékony használatát eredményezi, azonban mérsékli a futószalag sebességét.

A fokozatok sorrendje Szekvenciális mûvelet Ciklikus mûvelet Operandus elorehozás Korábban tárgyaltuk. Ezt mind az FX, mind pedig az FP futószalagok használják Időzítés Idõzítés Szinkron Aszinkron A jelenleg elérhető processzorok még mind szinkron időzítésűek, de a jövő fejlesztései vonatkozásában az aszinkron időzítésnek ígéretes perspektívája van. 2.215 A futószalagok alkalmazási területei 26 FA2 A futószalagok alkalmazási területei az utasítás-feldolgozás végrehajtási fázisa a teljes utasítás-feldolgozás: lehívási + végrehajtási fázis az előző kettő kombinálása: a teljes utasítás-feldolgozás + többféle végrehajtási futószalag 70-es és 80-as évek pl. RISC I, RISC II 90-es évek pl. PowerPC 604, Pentium II 60-70-es évek pl. vektorprocesszorok 2.216 A futószalag logikai felépítése Ez a következőket foglalja magában: A megvalósítandó futószalagok deklarálása A jelenlegi

processzoroknál a legfontosabb utasítás-osztályokra különféle futószalagokat deklarálnak. Általában különálló futószalagot határoznak meg az FX és a logikai műveletekre (FX-futószalag); a lebegőpontos műveletekre (FP-futószalag); a load/store műveletekre (L/S futószalag); az ugrásokra (B-futószalag). Nyilvánvaló, hogy a további adattípusokra, mint például az MMX, további futószalagokat kell specifikálni. Meg kell jegyezni, hogy a napjaink processzorai gyakran két, sőt több különálló futószalagot biztosítanak az FX és az FP műveletek számára. Például a DEC Alpha 21164 kétféle FX futószalaggal rendelkezik, egy egyszerűt az egész és a logikai műveletekre (amely nem tartalmazza a szorzást és az osztást), továbbá egy teljeset, amely képes valamennyi felsorolt művelet végrehajtására. Az egyes futószalagok részletes specifikálása Ez egyes futószalag-lépcsofokok által végrehajtandó feladatok specifikálását jelenti.

Például: Branch- Fetch Kibocsátás (Issue) FX-pipeline Fetch Issue Execute Write back L/S-pipeline Fetch Issue Addr gen Cache Write back FP-pipeline Fetch Issue Decode Execute 1 Execute 2 Másképpen (hagyományosan): Branch- Fetch Execution 27 Write back FA2 FX-pipeline Fetch Source Execute Write back 2.217 A futószalag fizikai megvalósítása, az implementáció A futószalag általános fizikai felépítése A 60-as - 80-as években Elválasztó regiszter I. fokozat Az első részfeldat megvalósítása Elválasztó regiszter II. fokozat A második részfeldat megvalósítása Elválasztó regiszter A 90-es években Bemeneti multiplexer és elválasztó regiszter I. fokozat Végrehajtó egység 1 . Végrehajtó egység n Bemeneti multiplexer és elválasztó regiszter II. fokozat Végrehajtó egység 1 . Végrehajtó egység n Bemeneti multiplexer és elválasztó regiszter A logikai futószalagok fizikai megvalósítása A

súlyponti kérdés, hogy a logikai futószalagokat a hardver minimalizálásával, multifunkcionális futószalagokként vagy teljesítmény-orientáltan, több dedikált futószalag formájában valósítsák-e meg fizikailag. 28 FA2 A multifunkcionális, univerzális futószalagok estében valamennyi utasítást (FX, FP, L/S és B) fizikailag is ugyanazon futószalag dolgozza fel. Létezik egyetlen, multifunkcionális futószalag Pl. RISC A másik megközelítés, amikor két futószalag közül csak az egyik az univerzális, a mester, a másik pedig csak bizonyos utasítások feldolgozására alkalmas. Ennek példája a Pentium is A dedikált f utószalag a jelenlegi legdominánsabb trend, mivel ez több, specializált, egymással párhuzamosan működő futószalag létrehozását célozza. Ennek példája a PowerPC 603, 604, a DEC Alpha, a Pentium Pro. 1. 2. 3. A gyakori utasításokat feldolgozó dedikált futószalagok közül több példányt is készíthetnek.

Például az egyszerű integer és Boolean kifejezések a végrehajtott utasítás-statisztikája szerint 30-40%-ot képviselnek. Így ezek feldolgozása szűk keresztmetszetet eredményezne egyetlen futószalagon, így többet csinálnak belőle. Több, azonos funkciójú futószalag esetén éles kérdésként merül fel az utasításfeldolgozás szekvenciális konzisztenciája megvalósításának kérdése A PowerPC 604 hat futószalaggal rendelkezik: 2 db az egyszerű FX és logikai műveletekhez; 1 db az FX szorzás-osztásra; 1 db az FP műveletekhez; 2 db közös az L/S és a B műveletekhez, így ciklusonként maximum négy utasítást képes kibocsátani. Implementation of pipelined instruction processing Single Double instruction pipelines instruction pipeline (Master intruction pipeline) for all except FP instructionswith either explicit software control of writing back the results, or enforced in-order completion by delaying of the shorter pipeline Multiple instruction

pipelines with reordering of writing back of the results e.g FX, L/S, B F D E WB FX, L/S, B F D FP Early RISC processors without an FP-unit, such as RISC I, (1982) RISC II, (1983) MIPS, (1981p) MIPS-X, (1986) IBM 801, (1978) E WB F E E E WB Scalar processors with FP-coprocessors or with integrated FP-units, such as R2000 R3000 early SPARC implementations AMD29000, Z 80000 i486 Pentium Performance, trend 2.218 A soros konzisztencia megőrzésének módja 29 FX E FP E D L/S E B E E E CO WB Superscalar processors, such as PA 7100 MC 88110 PowerPC 601 PowerPC 603 PowerPC 604 Power2 FA2 Több végrehajtó egység esetén már megjelenik az utasítás-kibocsátás fogalma. Ilyen esetben például hiába töltjük be a helyes végrehajtási sorrendben különböző futószalagokba az egyes utasításokat, mivel az utasítások végrehajtási ideje igen különböző lehet, egy gyorsan feldolgozható ugrási utasítás például könnyedén "lekörözhet"

egy bonyolult, s ezért igen lassan feldolgozható lebegőpontos utasítást. Így a kibocsátás kezelésének külön jelentősége jelenik meg. Ezért a PowerPC 604-nél a 6 db végrehajtó futószalagnak közös outputja van, CO néven, mely a szekvenciális konzisztencia megőrzéséről gondoskodik: F FX E FP E E E CO WB D L/S E B E Az elmondottakat a következokben foglalhatjuk össze: 2.219 A RISC-CISC összehasonlítás A hagyományos RISC futószalag regiszter-regiszter utasításokra épül. A CISC futószalagnak viszont kezelnie kell tudni mind a regiszter, mind pedig a memória operandusokat. Az utóbbi kezeléséhez általában két további lépcsőt iktatnak be: a címszámítást és a cache elérést. 2.2110 Esettanulmány: a Pentium A Pentium fizikailag két master-futószalaggal rendelkezik (amit U és V futószalagnak nevezünk) továbbá egy FP futószalaggal, mely az U-val együttműködésben dolgozik. Mindkét futószalag képes az FX, az L/S és a

B utasítások végrehajtására. Ezen túlmenően az U futószalag szolgál az FP futószalag első öt lépcsőjének végrehajtására, míg a maradék három lépcsőt az FP futószalag hajtja végre. 64 Branch prediction Code cache 128 Prefetch buffers Decode, dispatch 64-bit bus interface Integer U-pipe Pipelined FP-unit Integer V-pipe 32 32 FP-register file 64 Multiplier FX-register file Adder 32 64 Data cache Az újdonságai a következők: - 64-bites adatsín; két futószalaggal rendelkezik: 30 Divider FA2 - - = az U futószalag bármely, 86-os utasítás végrehajtására (integer és lebegopontos egyaránt) alkalmas; = a V futószalag csak az "egyszeru" utasítások végrehajtására, azaz az olyan utasítások számára, melyeket másokkal párhuzamosan végrehajthatóként soroltak be: ♦ huzalozott vezérlést igényelnek, tehát nem mikroprogrammal vezérelt a feldolgozásuk; ♦ általában egyciklusúak (Pl. az integer műveletek)

Annak érdekében, hogy két utasítást párhuzamosan lehessen végrehajtani, mindkettőnek az egyszerű kategóriába kell tartoznia. Mindkét futószalag ötlépcsős: fetch, utasítás dekódolás, címgenerálás, végrehajtás, az eredmény visszaírása). Fontos előretekintő tulajdonsága a Pentium processzornak az ugrás-előrejelzése. Ehhez felhasznál kettő db prefetch buffert, melyben előrejelzi, hogy mely utasítás fog ugrani. Például egy move, compare, add és jump utasításból álló programhurok a 486 esetében 6 ciklust vesz igénybe. A Pentium esetében a move és add összepárosítható, s az ugrás-előretekintés eredményeképpen pedig az add és a jump is, így a hurok mindössze kettő ciklus alatt valósul meg. Ez egyetlen esetben nem tűnik nagy nyereségnek, de egy program futása során ilyen hurkokból lehetnek százak és ezrek, s a teljes program futása alatt ez jelentős időnyereséget eredményez. a 486-hoz hasonlóan tartalmazza a

matematikai segédprocesszort is, ezt teljesen újratervezték s a 486-éhoz képest tízszeres sebesség-növekedést értek el; két db, egyenként 8 Kbájt méretű belső cache tárolóval rendelkezik, az egyik a program-kód, a másik pedig az adat számára (Harvard memória-szervezés!). Az Intel szerint ez az esetek 95%ában biztosítja, hogy a következő adat- illetve programkód a cache-ben van; a hagyományos üzemmódok mellett (valós, védett, virtuális 8086-os mód mellett itt létezik a System Management Mode is. Ez lehetővé tesz igen magas szintű rendszerfunkciók végrehajtását, például az operációs rendszer számára transzparens tápenergia-vezérlés vagy biztonsági funkciók. Ezt az üzemmódot nem tervezték az alkalmazói szintről való elérésre, ezt az üzemmódot hardver úton kezelik. 2.22 A szuperskalár architektúra A skalár fejlesztés alatt azt értjük, hogy a vonalvastagságot, a méreteket próbáljuk meg fokozatosan csökkenteni,

újraskálázni. A szuperskalár kifejezés arra mutat rá, hogy ezen kvázi lieáris technikán túlmutató módon, az utasítás-feldolgozás újraszervezése révén érünk el igen jelentos teljesítménynövekedést. Az első szuperskalár számítógép az 1964-ben megjelent CDC 6600 volt, mely 8 db funkcionális egyéggel rendelkezett s korának leggyorsabb gépe lett. Ma is ennek megfelelően értelmezzük a szuperskalár fogalmát, azaz ezek egynél több végrehajtó egységgel rendelkeznek. Az Intel családon belül például az első szuperskalár processzor a sima Pentium volt: 2 db végrehajtóegységgel rendelkezett (az U és a V pipe). Az utasítás-végrehajtás menete a 90-es években A hagyományos és a mai utasítás-végrehajtás szembeállítása Tartalom 2. A VEZÉRLŐEGYSÉG 1 2.1 A szekvenciális (centralizált) vezérlés 2.11 A huzalozott logikájú vagy áramköri vezérlőegység 2.111 Felépítése és működése 2.113 Előnyei, hátrányai 2.12 A

mikroprogramozott vezérlőegység 2.121 A Wilkes féle modell 31 1 2 2 3 3 4 FA2 2.122 Felépítése és működése 2.123 A mikroutasítás hosszát meghatározó tényezők A címrész hosszát meghatározó tényezők A következő végrehajtandó mikroutasítás címe MPC alkalmazása esetén az ugrási címek A vezérlőrész hosszát meghatározó tényezők A vízszintes mikroutasítás A vezérlőinformáció kódolása Vezérlőmátrix (kódolatlan): A vezérlőmátrix (kódolatlan) megvalósítása: Vezérlőmátrix (kódolt): A vezérlőmátrix (kódolt) megvalósítása: Átmenet a vízszintesből a függőleges mikroutasításba A függőleges mikroutasítás Vízszintes-függőleges mikroutasítás 2.124 Mikroművelet időzítés 2.125 A mikroutasítások végrehajtásának gyorsítása 2.126 Írható vezérlőmemória 2.127 Mikroprogramozás 2.127 Előnyei, hátrányai 5 6 6 7 7 8 8 9 10 10 10 11 11 12 13 13 14 15 16 17 2.2 Az elosztott (decentralizált -

decoupled) vezérlés 17 2.21 A futószalag (pipeline) 17 2.211 Megjelenése 17 2.212 A futószalag-technika lényege 17 2.213 A futószalag teljesítményét rontó tényezők 19 Egy fokozat időigénye = a leglassúbb fokozat időigényével 20 A függőségek és azok-kezelésének módszerei 20 Statikus (a compiler által) - vezérlés-függőség - feltétlen ugrás - késleltetett ugrás 24 Dinamikus (extra hardverrel) - adatfüggőség - operandus előrehozás - eredmény-függőség25 2.214 A futószalag jellemzői 25 A futószalag fokozatainak száma 25 Az egyes fokozatok által végrehajtandó feladatok meghatározása 26 Az egyes fokozatok sorrendjének meghatározása (újrafeldolgozás) 26 Operandus előrehozás 26 Időzítés 26 2.215 A futószalagok alkalmazási területei 26 2.216 A futószalag logikai felépítése 27 A megvalósítandó futószalagok deklarálása 27 Az egyes futószalagok részletes specifikálása 27 2.217 A futószalag fizikai megvalósítása, az

implementáció 28 A futószalag általános fizikai felépítése 28 A 60-as - 80-as években 28 A 90-es években 28 A logikai futószalagok fizikai megvalósítása 28 2.218 A soros konzisztencia megőrzésének módja 29 2.219 A RISC-CISC összehasonlítás 30 2.2110 Esettanulmány: a Pentium 30 2.22 A szuperskalár architektúra 31 Az utasítás-végrehajtás menete a 90-es években 31 32 FA3 3. A sínrendszer és a bővítősín A számítógép egy sor különféle komponensből áll, melyeket a működésük során össze kell kapcsolnunk. A legjellemzőbb összekapcsolt területek a következők: - processzor - memória; processzor - periféria; memória - periféria. A számítástechnika fejlődése során sokféle összekapcsolási módot alakítottak ki, melyek közül a legsikeresebb a sínrendszer volt. A sínrendszer címszó alatt magával az infrastruktúrával foglalkozunk Az I/O rendszernél pedig külön, részletesebben megvizsgáljuk a perifériák

csatlakoztatási lehetőségét és annak problematikáját. A sínrendszer olyan mint az országút, összeköti a gép különböző részeit, mégpedig szabályozott, egységes módon. A gép különböző egységei egymás számára csak ezen keresztül továbbíthatnak adatokat, vezérlő jeleket. Mivel minden eszköz ugyanarra a sínrendszerre kapcsolódik, az átvitel létrehozásakor meg kell oldani az adatátvitelben résztvevő eszközök kijelölését; ez a kijelölés történhet egy cím megadásával, hasonlóan a memória egyes rekeszeinek kijelöléséhez, vagy az utasítás alapján létrehozott hardver-kapcsolattal meg kell határozni az átvitel irányát; meg kell oldani a kapcsolatban résztvevő eszközök működésének összehangolását, szinkronizálását. A sínrendszer használatának előnye, hogy szabványosított jelhasználat és vezeték-kiosztás miatt a csatlakoztatott eszközök könnyen cserélhetők, illetve azok vezérlő kártyái és így

gyártótól, géptől függetlenné válik azok használata. Az így felépített gépek karbantartása is könnyebbé válik, mivel a hibás részegységek egyszerűbben behatárolhatók. A sínrendszer előírásait teljesítő kártyák pedig bármelyik gépben használhatók. Jelentősége óriási: léteznek óriási sebességű alkotóelemek (processzor, gyorsítótár, stb.), ha a közöttük megvalósuló kommunikáció lassú 3.1 A kommunikáció fajtái, a lokális kommunikáció Annak a nehézségi foka, hogy egy számítógépes rendszer két komponensét összekapcsoljuk, részben attól függ, mekkora a fizikai távolság a két komponens között. Három esetet tudunk megkülönböztetni: 1. Egyetlen egységen belüli kommunikáció, ahol a távolság max. 1 méter Pl a CPU-n belül Ez okoz a legkevesebb tervezési nehézséget. Általában mindkét alkotóelemet egy közös vezérlő egység felügyeli. Továbbá közös clock jelet lehet használni, hogy a

processzoron belül az összes tevékenységet szinkronizáljuk. A kommunikációs áramköröket a kapu szintű vagy regiszter szintű logikai tervezésnél jeleníthetjük meg. Erre példaként részletesen megtárgyaltuk a processzoron belüli kommunikációt. 2. Egy szobán vagy egy épületen belüli kommunikáció, ahol a távolság kevesebb, mint 1 km. Pl a CPU és a perifériái között. Ezt egységek közötti vagy lokális kommunikációnak hívjuk A jelen részben ezzel fogunk részletesen megismerkedni. A legtöbb számítógépes rendszerben az I/O eszközökkel való kommunikálás - az ezen eszközök által képviselt műveleti jellemzők széles változatossága miatt több nehézségi forrást jelent. Ennek ellentételeként a processzor és az operatív tár közötti kommunikáció viszonylag egyszerű. A processzorszintű architektúra különféle elemei közti kommunikáció sokféle problémát vet fel: = az itt megjelenő távolságok nem teszik praktikussá

a közös szinkronjel alkalmazását. Például, ha egy 100 ns periódusú órajelet 100 m távolságra lévő egységhez visszük, akkor az kb. 330 ns múlva ér oda (3,3 jelperiódus), úgy hogy a fény sebességével (300000 km/s) utazik. Továbbá az a tény, hogy a legkülönfélébb processzorszintű komponensek adatfeldolgozási sebességei a legszélesebb skálán különböznek, ez is sugallja, hogy az időzítő áramkörük legyen független; FA3 = a második probléma annak meghatározása, hogy milyen számú és típusú jelet használjunk a rendszeren belüli kommunikációhoz. Egyébként igen nehéz lenne a számítógép fosínje számára egy univerzális szabványt kidolgozni. A sín struktúrája szorosan kapcsolódik a számítógép architektúrájához, így általában ez számítógépről számítógépre különböző. A számítógép sínrendszerének a jellemzőit a számítógép struktúrája, sot inkább a processzor jelvonalai határozzák meg.

Tény, hogy ugyanazon számítógépgyártó különböző modelljeinek sínrendszere is k különbözhet. Például a DEC-nél a PDP-11 a UNIBUS rendszert használja, míg a VAX az SBI-t; A rendszerkomponens megjelenít a külső világ számára egy sor adat és vezérlő vonalat, amelyek arra szolgálnak, hogy összekapcsolják ot egy másik rendszerkomponenssel. Annak a specifikálása, hogy ezek a vonalak vagy sínek illetve az általuk hordozott jelek milyenek alkotják az eszköz illesztőjét (interface). Az egység illesztője függ a funkciójától is és a gyártójától is. Annak érdekében, hogy egyszerűsítsék a számítógépen belüli kommunikációt, általában szabványos illesztőt definiálnak az adott számítógéphez (vagy számítógép családhoz). A következő ábra mutatja, hogy az ilyen illesztőt tipikusan hogyan használják: DATA szabványos illesztõ ADDRESS CONTROL CPU interface adapter interface adapter I/Oegység I/Oegység Memória A

mikroszámítógépek szokásos felépítése speciális illesztő áramkörök lehetnek szükségesek, hogy egy konkrét egység "természetes" illesztőjét adaptálják a szabványos illesztőhöz, ami szabványos természetesen csak az adott számítógép család vonatkozásában. Néhány iparszerte elterjedt szabvány létezik, és ezek gyakran bizonyos alkalmazásokra vannak korlátozva, pl. a CAMAC (Computer Automated Measurement and Control) illesztő rendszer a digitális műszerekhez. Ennek vizsgálata már inkább a következő, az I/O rendszerről szóló témánkhoz tartozik. 3. Nagy távolságú kommunikáció, pl. különböző városokban elhelyezkedő számítógépek között Ez a távolsági kommunikáció fogalmának felel meg. Ennek tárgyalása témakörünkön kívül esik. 3.2 A sínek, vonalak fogalma, jellemzoi Mi a jelen fejezetben fenti csoportosításnak megfelelő egységek közötti vagy lokális kommunikációval fogunk foglalkozni. Ezen

kommunikációban résztvevő tipikus egységek: CPU, memória, I/O, kapcsolóegységek. Annak érdekében, hogy ezeket egy működő egésszé kapcsoljuk össze, valamilyen szervezett módon kell az összekapcsolást végrehajtani. Az összeköttetés módja jelentős hatással van a számítógép teljesítményére. Fontos látnunk, hogy hiába rendelkezünk hatalmas teljesítményű építőelemekkel, ha a közöttük lévő kommunikáció szűk keresztmetszetet tartalmaz. Ez kulminált a 90es évek elején, amikor a külön-külön hatalmas processzor-, winchester- és képernyő-teljesítményeket nem tudták összekapcsoltan, együttesen hasznosítani, pedig a multimédia ezt az igényt hétköznapivá tette. Az összekapcsolási struktúrát felfoghatjuk egy gráfként is, melynek egyes csomópontjai reprezentálják a rendszerkomponenseket, mint a CPU, memória, stb. s az élek pedig a fizikai összeköttetéseket 2 FA3 3.21 A sín fogalma A sín fogalmára különféle

meghatározások léteznek: Muszaki Busz vagy sín alatt olyan, azonos feladatot ellátó vezeték-csoportot értünk, mely egyes vezetékein csak két feszültségszint jelenhet meg (a logikai 0 és 1-nek megfelelő érték, ez általában 0 valamint kronológiában 12V, 5V vagy 3,3V. Funkcionális A busz vagy sín alatt olyan vezetékcsoportot értünk, amit arra terveztek, hogy egy n-bites szó valamennyi bitjét átvigye egy specifikált forrásból egy specifikált rendeltetési helyre. A sín ebben a kontextusban nem csupán a két egység közötti adatátviteli útvonalat jelenti, hanem azt a mechanizmust is, amely ellenőrzi az ezen útvonalakhoz való hozzáférést és felügyeli a jelátvitelt, ezáltal biztosítja a kommunikációt. Más megfogalmazás: Annak érdekében, hogy a számítógép megfelelő működési sebességet érjen el, úgy kell szervezni, hogy minden egység egy adott időben egy egész adatszót képes legyen kezelni. Amikor egy adatszót

továbbítunk az egyik egységtől a másikhoz, valamennyi bitjét párhuzamosan adjuk tovább. Ez azt igényli, hogy megfelelő számú vonallal rendelkezzen A több egységet összekötő vonalhalmazt sínnek nevezik A sín kifejezés ebben az értelemben nem csupán rendszer-komponensek közötti kommunikációs vonalat jelenti, hanem az ezen vonalak elérését vezérlő mechanizmust és a kommunikációt biztosító jelátvitel felügyeletet is. Az adatsíneken kívül léteznek cím- és vezérlősínek is 3.22 A sínek, vonalak jellemzői - a sín méretét a vezetékeinek (vonalainak) száma határozza meg; vezetékek kötege, mindkét irányban van kimenete; a sín egy erén egy adott időpillanatban egy bitnyi információ továbbítható; megosztható eszköz; a rendszerben egyszerre csak egy adó lehet, de vételi oldalon többen is fogadhatnak. a sín gyakran ugyanazon jellemzőkkel rendelkezik, mint a regiszter. Ideiglenesen (temporally) képes az adatot tárolni. Nevet

rendelhetünk hozzá, és az utasításokban hasonlóképpen címezhetjük, mint a regisztert vagy a memóriahelyet. Az információnak a két regiszter közötti, síneken át történő átvitele gyakran ketté van törve két "regiszter" átvitelre, a következőképpen: databus ← regiszter A regiszter B ← databus 3.22 A sínek, vonalak megvalósítása PC-környezetben Egy nyitott architektúra rendkívül fontos mind a felhasználóknak, mind pedig a gyártóknak, akiknek olyan adaptert kell előállítani, amely bármely IBM-kompatibilis számítógépez csatlakoztatható. Azt a mérnöki koncepciót, ami ezt lehetővé teszi, sínrendszernek hívják. A legkülönfélébb elektronikus chip-eket és a számítógép egyéb alkatrészeit úgy kell egymáshoz csatlakoztatnunk, hogy azok kommunikálni tudjanak egymással. Ha ezt a kapcsolatot egyedi, individuális vezetékekkel alakítanánk ki, melyeket a szükséges részeket között húznánk ki, akkor csupán

azon részek tudnának egymással kapcsolatot teremteni, melyeket vezetékekkel összekötöttünk. A sín-koncepció ezzel ellentétben egy közös vezeték-rendszert alakít ki, mely rendelkezik egy sor csatlakozási ponttal vagy csatlakozóval (konnektorral, slot-tal). Az egyszerűsített rajza a következő: Az alaplapon található csatlakozókba helyezhetők el a különféle kártyák, melyek általában valamely periféria és a központi egység közötti adatforgalom lebonyolítását teszik lehetővé. Ezekből maximum nyolc volt található egy alaplapon és az évek során a csatlakozók szabályos buszrendszerré alakultak, a teljes adat- és címbusz, valamint a vezérlő jelek is kivezetésre kerültek. (Köpeczi-Bócz-ból) 3 FA3 síncsatlakozók (konnektorok, slot) sínvonalak, melyek mindenslot-hoz eljutnak processzor, memóriaés máskomponensek A közös csatlakozók rendszere lehetővé teszi a csatlakoztatás olyan módját, mely szerint bármely - akár

új rész - kommunikálhat bármely résszel. Ezeket az új részeket a sínhez csatlakozó aljzaton (slot) keresztül csatlakoztatjuk. Így akármit dugunk be az aljzatba, az a PC minden olyan részével képes kommunikálni, mely a sínrendszeréhez csatlakozik, beleértve a memóriát és a processzort is. Ezek az adapter aljzatok - amelyeket sín-konnektor formájában képzelhetünk el - egy egyszerű utat biztosítanak bármely kártyacsatlakoztatásához. Egy tipikus sín-adapter kártya alsó részén lévő fém-borítású érintkezők szolgálnak a sín közös vezetékeihez való csatlakozásra. Mihelyt egy kártyát behelyezünk a aljzatba, majd áram alá helyezzük a gépet, az új kártya megkapja a gépen belüli közös jeleket és információkat és a számítógép is el tudja érni az új kártyát. Elméletben minden kártyát bármely aljzatba behelyezhetünk. A gyakorlatban azonban bizonyos műszaki okokból egyes kártyákat adott aljzatba kell behelyeznünk.

Az eredeti IBM PC tervezőinek gondoskodnia kellett egy sor opcionális eszköz csatlakoztatásáról, nyomtatótól kezdve a telefon modemig. Csinálhattak volna egy speciális célú csatlakozást minden egyes opcióhoz, ami jelentősen redukálta volna az opciók variációs lehetőségeit és egy zárt, előre definiált lehetőségekkel rendelkező rendszert eredményezett volna. Ehelyett a tervezők általános célú expanziós aljzatokat alakítottak ki, melyek funkciója nincs elore definiálva. Amit viszont definiáltak, az a aljzaton belül az egyes érintkezők feladata Egyes érintkezők szolgálnak az áramellátására, mások az adatok, megint mások a cím továbbítására, stb. Egy sor ilyen aljzat, valamennyi saját elektromos szigeteléssel van összekapcsolva, képezik a sínt, amely lehetővé teszi az alaplap komponensei, és valamennyi csatlakoztatott periféria számára a közös csatlakozások és információ megosztását. A nyitott architektúrának ez a

típusa rendkívüli módon hozzájárult az eredeti IBM PC család piaci sikeréhez. A legtöbb sín esetében kétoldali konnektorokat használnak, sorba szervezett csatlakozó-tűkkel. 3.3 A sínek csoportosítása A síneket igen sokféleképpen csoportosíthatjuk: 4 FA3 1. 2. 3. 4. 5. Milyen irányban szállít? Mit szállít? Milyen egységek között szállít? Milyen jellegu a kapcsolat? Hány szintu a kapcsolat? Az átvitel iránya szerint Az átvitt tartalom, azaz funkciójuk szerint Az összekapcsolt területek alapján A kapcsolat jellege szerint A kapcsolat szintjei szerint 3.31 Az adatátvitel iránya szerint A sínen az átvitel lehet simplex vagy egyirányú, azaz csak egyetlen irányban képes adatátvitelre half-duplex, mely mindkét irányban lehetővé teszi ugyan az adatátvitelt, azonban egyidejűleg csupán egyetlen irányban és duplex vagy kétirányú. Alkalmazási példák ISA bővítősín 62+ 36 = 98 kivezetésének 8 db bemeneti és 8 db kimeneti,

tehát kizárólag egyirányú átvitelre képes vezetéket tartalmaz. Egyirányúak: az IOCHK, mellyel egy memóriabővítő vagy periféria-kártya jelezheti a paritáshibáját; az IOCS16, mellyel egy periféria jelezheti, hogy 16-bites átvitelre képes; CLK az órajel; RESETDRV reset. Tipikusan kétirányúak viszont az adat- és a címvonalak. PCI bővítősín Egyirányúak: CLK RST az órajel; reset. Tipikusan kétirányúak viszont az adatvonalak. 3.32 Az átvitt tartalom, azaz funkciójuk szerint Azokat a vonalakat, amelyekből egy kommunikációs sín felépül, általában három funkcionális csoportba soroljuk: 1. 2. 3. Adatvonalak Címvonalak Vezérlővonalak 3.321 Adatsín Az adatvonalak egy n-bites szó valamennyi bitjének a párhuzamos átvitelére szolgál; így vagy két készlet, egyenként n darab egyirányú vonalból, vagy egyetlen készlet, egyenként n darab kétirányú vonalból áll. Ma a szélessége leggyakrabban 32 bit illetve ugyanennyi vezeték

(vonal) Az Intel 8088 még 8-bites külső sínkapcsolattal rendelkezik. A 80286-os révén vált elterjedtté a 16bites külső sín A 80386-tól kezdve az Intel processzorok által kezelt külső sínszélesség - még a Pentium esetén is - 32 bit. 3.322 Címsín 5 FA3 A címvonalakat az adatátvitelben használt azon egység vagy egységrész identifikálására használják, amelyet a sínhez kell csatlakoztatni. Tehát az eszközök címzésére szolgál Szélessége 32 (esetleg 1620-24) bitnek megfelelően ugyanennyi vezeték Az Intel 8086 címsín szélessége 20 bit volt, amit a 286nál 24-re, a 386-nál 32-re növelték, s máig is, a Pentiumnál is ilyen széles Ez 232, azaz 4GB nagyságú valós címtér címzését teszi lehetővé. Lehetőség van arra is, hogy perifériák esetén az adatvonalakat használjuk a címeknek adatokként való átvitelére is. Ezt annak érdekében használják, hogy vagy a sín költségeket mérsékeljék vagy pedig a sín által

kiszolgált egységen a külső kapcsolatok (lábak) számát csökkentsék. Ez időbeli multiplexelést jelent. Először a címet küldjük át és beállítjuk az Address Valid vezérlővonalat. Ezután ugyanezen vonalakon kerülnek továbbításra az adatok 3.323 Vezérlősín Végül a vezérlő vonalak a rendszerben az időzítő jelek és az egység állapotáról szóló információ átvitelére szolgálnak. Ezek jelezhetik az adatvonalakon küldött információ típusát is A vezérlőjelek száma változó, általában minimálisan 10-15 körül van. A vezérlőjelek fajtái: Az adatátvitelt vezérlő jelek A következők találhatók meg általában (a jelölések változhatnak az egyes processzoroknál): - M/IO (memory/input-output) az adatátvitel helyét jelöli ki, mely választhatóan lehet a memória vagy a perifériák; R/W (read/write) az adatátvitel irányát adja meg a processzor oldaláról nézve; WD/B (word/byte) az átvitt adat méretét jelöli meg,

amelyet egy tárhoz fordulás alkalmával egységként kezel; AS (address strobe) a cím sínre helyezését jelzi az eszköz (memória) számára; DS (data strobe) az adat sínre helyezését jelzi az eszköz (memória) számára; RDY (ready) az átvitel befejeztét, vagy az eszköz rendelkezésre állását jelzi. A megszakítást vezérlő jelek Lehetnek megszakítást kérő és megszakítást visszaigazoló jelek. A sínvezérlo jelek A sín kérését, foglalását és a foglalás visszaigazolását szolgáló jelek. Egyéb jelek Órajelek, melyek a gép ütemezését, szinkronizálását szolgálják, valamint a tápfeszültség és a test (föld) vezeték is. 3.324 Példa ISA bővítősín Az ISA bővítő-sínnek például 62+ 36 = 98 kivezetése van: 16 db adatvezeték, 24 db címvezeték, 68 db vezérlővezeték. Az adatátvitelt vezérlő jelek 20 db címvonal a memória és a periféria címzéséhez; további 4 db címvonal kizárólag a memória címzéséhez 16 db

adatvonal; 6 FA3 -MEMW, -MEMR alacsony szinttel azt jelzi, hogy a címvonalon memória-cím van, mégpedig olvasás vagy írás; -IOW, I-OR alacsony szinttel azt jelzi, hogy a címvonalon periféria-cím van, mégpedig olvasás vagy írás; -MEMCS16, -IOCS16 a memória és az I/O egység ezzel jelzi, hogy képes 16-bites átvitelre; -IOCHCK egy memória-bővítő vagy periféria kártya alacsony szinttel jelzi az alaplap számára, hogy paritáshiba fordult elő. Ez nem maszkolható (NMI) megszakítás-kérést jelent; A sínvezérlő jelek MASTER IOCHRDY alacsony szinttel a sínvezérlés jogának kérésére szolgál a sínre csatlakozó passzív eszköz a jel alacsony szinten tartásával nyújthatja a sínciklust; DMA jelek 7 db DRQ nevű DMA megszakítás-kérő vezeték, melyek közül az első 4 db bájtos, az utolsó 3 db pedig szavas (16 bites) szervezésű; 7 db DACK nevű vezeték a DMA megszakítás-kérés elfogadásának jelzésére; TC magas szinttel jelzi, hogy

a DMA éppen aktív csatornája a beprogramozott adatmennyiséget átvitte; AEN a DMA által kezdeményezett sínciklusokat az AEN magas szintje jelzi; A megszakítást vezérlő jelek 16 db megszakítási vonal a többszintű, felfutó él vezérelte megszakításhoz; Egyéb jelek RESETDRV CLK -REFRESH GND magas szintje az alaphelyzetbe állítja a sínre kapcsolódó eszközöket; a sín órajele, mely 6 és 8,33 MHz között változhat; alacsony szinttel a dinamikus memóriák frissítésére szolgáló sínciklust jelzi; földelés PCI bővítősín A mai korszerű sínek esetén tipikus főbb alrendszereket tartalmazza: • adat- és címsín (közös kivezetés, multiplexálva); • vezérlősín; • megszakítás vonalak; • sínfoglalási vonalak; • tápellátás. A PCI bővítőkártyán a lábak száma target esetén 47, master estén pedig 49. A multiplexálások miatt a 32-bites kártya max. 124, a 64-bites kártya pedig max 184 érintkezővel rendelkezik Az

adatátvitelt vezérlo jelek 32 db (vagy 64 db) multiplexelt adat- és címvonal; A sínvezérlo jelek REQ GNT a sínvezérlés jogának kérésére szolgál. Eszköz-specifikus, dedikált vonal a sínvezérlés jogának engedélyezésére szolgál. Eszköz-specifikus, dedikált vonal DMA jelek Közönséges sínhasználatként kezeli. A megszakítást vezérlő jelek 7 FA3 4 db megszakítási vonal; Egyéb jelek RST CLK a PCI-környzetet alaphelyzetbe állítja; a sín órajele, mely maximum 33 Mhz lehet; UNIBUS (PDP 11) Egy átvitel sokkal bonyolultabb, mint gondoljuk és többféle jel kell a megvalósításához, mint amennyi látszik. Erre is és a funkcionális csoportosításra is példa: 16 bites adatsín 18 bites címsín 2 bites vezérlés (control) 1 bites Master sync (aki ad) (ez változó) 1 bites Slave sync (aki fogad)(ez változó) 2 bites parity 5 bites busz request 5 bites bus grant 1 bites Selection Ack 1 bites Interrupt (megszakítás kérés) 1 bites

Initialization 1 bites AC line low 1 bites DC line low az adatátvitel vezérlése eszköz kiválasztás energiaellátás hibafigyelés A PDP 11 számítógép egyetlen, megosztható sínt tartalmaz, amit UNIBUS-nak hívnak. Ez kapcsolja össze és valamennyi I/O egység erre van csatlakoztatva: ez egy egyszintű sín, az ábrája, mint az egyszintűé. Az UNIBUS 56, főként kétirányú vonalat tartalmaz: 16 adatvonalat; 18 címvonalat; 22 vezérlővonalat. Egy időpillanatban csak két egység kommunikálhat egymással az UNIBUS-on keresztül. Ezek egyikét master-nek hívjuk, s ez sínvezérlőként is működik, a másik egységet pedig slave-nek nevezzük. A master-slave viszony dinamikus. Például a CPU masterként tevékenykedik a memória pedig a slave egy közönséges utasítás fetch és végrehajtás alatt. Egy I/O művelet során pedig mondjuk a lemez és a memória között, a CPU átadhatja a sínvezérlést a lemezegységnek, ezután pedig az lesz a master. A

sínhez való hozzáférés vezérlését a CPU végzi, mely az igénylő egységekhez a vezérlést a prioritásuk alapján rendeli hozzá. A fenti ábrán látható, hogy a vezérlővonalakat két nagy csoportba sorolhatjuk: az eszköz-kiválasztást és az adatátvitelt vezérlő vonalak. Az UNIBUS-on keresztül végrehajtott valamennyi kommunikáció aszinkron és a vezérlőjelek handshake-jével van teljesen lefedve. 8 FA3 413. old 611 ábra Busrequest Busgrant i i Selectionack kommunikáció Busbusy ezt kibontjuk A PDP-11 sínvezérléses adatátvitelének ido diagramja 3.33 Az összekapcsolt területek alapján 3.331 Rendszersín (system bus) vagy memóriasín vagy CPU sín M . M CPU rendszersín bõvítõsín I/O . I/O A rendszersín a processzort köti össze a gép egyéb részeivel, elsősorban a memóriával és - egy sínmeghajtó közbeiktatásával - az I/O eszközökkel. Igen nehéz lenne a számítógép rendszersínje számára egy univerzális

szabványt kidolgozni. A sín struktúrája szorosan kapcsolódik a számítógép architektúrájához, így általában ez számítógépről számítógépre különböző. Hasonlóképpen nehéz lenne egy olyan szabványt kidolgozni, amely valamennyi számítógép perifériát lefedi, mivel rendkívül széles skálája van az átviteli sebességnek és más követelményeknek. Gyakorlatiasabb alternatívát jelent bizonyos kapcsolat-osztályok számára kidolgozni olyan szabványokat, amelyek megfelelnek mind a számítógépeknek, mind pedig a perifériáknak. Így alakult ki a rendszersínt nyitottá alakító, széleskörű periféria-csatlakoztatási lehetőséget biztosító bővítősín. Nevezik memóriasínnek is, arra utalva, hogy ez köti össze a CPU-t a memóriával. Napjainkban például a PCI alaplapok esetében inkább CPU-sínnek nevezik, mivel ez a CPU-t a második szintű gyorsítótárral köti össze, lehetővé téve, hogy a CPU ebből dolgozzon, amíg a PCI

sínre csatlakozó merevlemezegység a DMA-vezérlő segítségével közvetlenül kommunikál az operatív tárral. 3.332 A számítógép bovítősínje (expansion bus) vagy I/O sín vagy helyi sín A bővítő sínrendszer általános kapcsolatteremtő funkciója következtében meg kell felelnie valamilyen elfogadott előírás-rendszernek, amely megszabja a fizikai, mechanikai és elektromos jellemzőit, a rákapcsolódó eszközökre előírt követelményeket. Az általános használat érdekében szabványos megoldások alakultak ki. 9 FA3 A sínrendszer működésére vonatkozó, az előbbiekben körülírt tartalmú szabályrendszert sín protokollnak (bus protocol) nevezik. Tehát ez megszabja a működési szabályokat, a mechanikus és elektromos jellemzőket és azt, hogy milyen eszközök és hogyan kapcsolódhatnak a sínre. Az idok során igen sokféle bővítő sínrendszert alakítottak ki, amelyek közül természetesen csak néhány használata terjedt el

széles körben. Mivel a bővítősín kifejezett feladata az I/O egységek csatlakoztatása, ezért az I/O sín elnevezés is indokolt. A mai architektúrákban az I/O egységeket teljesítményük alapján csoportosító helyi sínekhez csatlakoztatják. Például • az ISA-EISA bővítő sínhez a lassúbb egységeket, mint a modemet; • a PCI bővítő sínhez a gyorsabbakat, mint a winchester, a hálókártya, az audio kártya; • az AGP bővítő sínhez pedig a képernyő. A bovítosínek fajtái tervezési megközelítés szerint: - platform-függő megoldások csak meghatározott processzortípus számára biztosítanak kapcsolatot a külvilággal. Például az IBM PC-vel kompatibilis gépek esetén: = ISA-sín; = EISA sín. - a platform-független megoldások arra szolgálnak, hogy processzortól független szabványos illesztést biztosítsanak a külvilág számára. Például: = RS 232C = PCI = SCSI = Nubus processzor-független, szinkron sínszabvány, amely a

32-bites mikroprocesszoros rendszerekben való alkalmazást célozza meg. MIT javaslat, majd IEEE 1196-os szabvány. Pl az Apple Macintosh II:-ben alkalmazzák Hamacher: 245. oldal = Multibus az Intel fejlesztette ki, s ma már IEEE 796 és 1296-os szabvány; Hamacher 250. oldal 3.34 A kapcsolat jellege szerint 3.341 Dedikált kapcsolat A dedikált sín, melynek egyedi a forrása is és a célja is. Abban az esetben, ha n egységet kell összekötnünk dedikált sínnel, akkor a szükséges dedikált sínek száma nx(n-1) egyirányú és nx(n-1)/2 kétirányú kapcsolat esetén. Amennyiben az él kizárólag két egység összekapcsolására szolgál, ezt dedikáltnak hívjuk; a dedikált kapcsolat rendszerszinten igen gyors információ-áramlást tesz lehetővé. Valamennyi egység szimultán módon küldhet és kaphat információt, nem létezik a foglalt kapcsolat miatti késés. Ezen túlmenően a dedikált kapcsolatokkal kiépített rendszer önmagából következően

megbízható, mivel bármely kapcsolat meghibásodása csupán két, ezzel a kapcsolattal összekötött egység kommunikációjára hat. Ezen egységek közötti kommunikáció lehetséges lehet, ha ezek egymásnak a rendszer más egységein keresztül küldjenek információt. Például amennyiben az U1 és U4 sín meghibásodik, akkor ezeket össze lehet kapcsolni az U2 vagy U3-on keresztül; a dedikált vonalak legnagyobb hátránya a magas költségszintjük. A szükséges összeköttetések száma kb. az egységek számának négyzetével arányosan növekszik Az új egységek csatlakoztatása a rendszerhez nehéz, mivel az új egységet fizikailag össze kell kapcsolni valamennyi már létező egységgel. 10 FA3 U1 U2 U3 U4 Mivel a sín általában nem csupán vezetékekből áll, hanem vezérlési célú kapcsolóelemekből és jelerosíto áramkörökből (busz meghajtók és jelfogók), ezért az áruk tetemes. Amennyiben a sín hosszú, a vezeték és kábel

költségeket is számításba kell venni. Az integrált áramkörök lábainak száma és kapusűrűsége is gyorsan növekszik, az integrált áramkörhöz csatlakoztatott külső sínek számával együtt. Ezen okok miatt elterjedt a megosztott sínek (shared bus) használata, mely több forrást és több rendeltetési helyet is képes összekötni. Ennek eredménye a kevesebb sín, de komplexebb sínvezérlési mechanizmus. Az I. és a II generációs számítógépek tipikusan dedikált sínt használtak Dedikált REQ és GNT vonalat találhatunk a PCI sín esetében az egyes kártyahelyek és a központi sín-arbitráló között. 3.342 Megosztott (shared) kapcsolat Másrészről egyetlen adatutat használhatunk n egység közötti valamennyi kommunikáció számára. Minden esetben egyidejűleg csupán két egység kommunikálhat egymással a megosztott kapcsolat során, a többi egység ez ido alatt ténylegesen szét van kapcsolva. Egy vezérlő mechanizmus szükséges, hogy

felügyelje az n egység közötti vonalmegosztást. Ez a vezérlés lehet központosított vezérlés: egyetlen speciális vezérlő egységben (amely lehet az Un egység valamelyike, pl. a CPU), vagy megosztott vezérlés: több egység lehet képes a kapcsolat vezérlésére. U1 U2 Un . sín Általában, a kapcsolat csatlakoztatása két úton történhet: 1. 2. Az U1 egység képes a kapcsolatvezérlő egység tevékenységére, kezdeményezi két egység kapcsolatba lépését, esetleg egy olyan program utasítás hatására, amely az U1 egységen hajtódik végre. Egy olyan egység, amely önmagában nem képes kapcsolatvezérlésre, egy, a közös vonal elérésére vonatkozó igényt küld a kapcsolatvezérlő számára. A kapcsolatvezérlő aztán csatlakoztatja az igényelt vezérlőt, amennyiben a sín nincs használatban. Amennyiben a sín foglalt, az igénylő egységnek addig kell várni, amíg az elérhetővé nem válik. Ha több sínelérési igény érkezik

szimultán módon, akkor a kapcsolatvezérlő bizonyos elore meghatározott prioritási séma szerint dönti el, hogy melyik igény kerül hamarabb kiszolgálásra. Tehát különböző egységek, különböző időben történő összekapcsolására szolgál a megosztott vagy időosztásos kapcsolat. 11 FA3 A megosztott sínhasználat előnyei: a legfőbb attrakciója az olcsósága; rugalmas az új perifériák csatlakoztatása vonatkozásában: sem a rendszer struktúráját, sem pedig a régi egységek csatlakoztatását nem kell megváltoztatni. Hátrányai: viszonylag lassú, mivel az egységeknek várakozniuk kell amennyiben a sín foglalt; elég bonyolult folyamat szükséges a sínhasználat biztosítására; az egész rendszer érzékeny a megosztott vonal hibájára, emiatt pedig az egész rendszer kommunikációja megbénulhat. Tulajdonságai miatt elsősorban a mini- és a mikroszámítógépeknél használják. A harmadik generációs számítógépek egyik legfőbb

újdonsága volt a megosztott sínhasználat bevezetése. A megosztott sínhasználat jelenleg a legelterjedtebb kapcsolati mód a számítógépes rendszerekben. Megosztott sínhasználatot biztosít például az ISA, az EISA, az MCA, a PCI bővítősín 3.343 Crossbar A crossbar struktúra egyrészt magában foglalja az adatvonal megosztását, másrészt pedig egyidejűleg több mint egy adatátvitelt tesz elérhetővé. Multiprocesszoros rendszerekben alkalmazzák G2 1 U1 1 U2 1 Un . U1 U2 G1 U3 Um Ezt két olyan egység-csoport G1 = {U1, U2, . Um} és G2 = {U′1, U′2, U′m}összekapcsolására használják, úgy, hogy a G1 bármely egysége összekapcsolható a G2 bármely egységével, de ugyanazon csoport két egysége egyáltalán nem összekapcsolható. Ez a típusú kapcsolat a számítógépes rendszeren belül sok helyen alkalmazható. Például: G1 - egy főtár-modul halmaz, a G2 pedig egy processzor-halmaz; G1 - egy I/O egység halmaz, a G2 pedig egy I/O

processzor-halmaz; A G1 és G2 csoport minden egysége vízszintes illetve függőleges vonalakhoz vannak kapcsolva. A függőleges és a vízszintes vonalakat crossbar-kapcsolóknak nevezett kapcsolókkal vannak összekötve. Ez egy kapcsolópontnak nevezett nxm áramkörből áll és bármely vízszintes vonalat bármely függőleges vonallal össze tud logikailag kapcsolni. Bármely időpontban minden sorban és oszlopban csak egyetlen kapcsolópont lehet aktív. Ha k= min {m,n}, akkor a G1 csoportban k különböző egység kapcsolódhat egyidejűleg a G2 csoport bármely k különböző egységéhez. Tehát a crossbar csatlakozás k számú egyidejű adatátvitelt tesz lehetővé. Akkor jelentkezik konfliktus és késés, amikor a G1 csoport két egysége akar kommunikálni a G2 csoportnak ugyanazzal a két egységével, és viszont. Kétdimenziós rács, csomópontokban kapcsolók: bonyolult és drága. 12 FA3 Közbülső kompromisszumos megoldások: duál-port memória;

hierarchikus sínrendszer. 3.35 A struktúra szintjei szerint - esettanulmányok Sok számítógép, főleg a kisteljesítményűek egyetlen megosztott sínt tartalmaznak, ezt hívjuk egyszintű sínrendszernek. 3.351 Egyszintű sínrendszer Elve Valamennyi egységet ehhez a sínhez csatlakoztatunk, így ez az egyetlen kapcsolódási lehetőségük. Mivel egyetlen sínt egy időben csak egyetlen átvitelhez használhatunk, csupán két egység tudja aktívan használni egy adott időben. IBM PC példa Az eredeti IBM PC, a PC XT és az első PC AT még csupán egyetlen sínnel rendelkezett. Ezt a 6-8,33 MHz frekvenciával meghajtott egyetlen sínt csupán funkcionális szempontok alapján két részre bonthatjuk: • rendszersín • bővítősín, Az egyetlen sín rendszersínnek nevezett részéhez csatlakozik a CPU, a matematikai társprocesszor, a memória (RAM és ROM egyaránt), a DMA vezérlő, a megszakítás-vezérlő és az időzítő, a bővítő sínnek nevezett részéhez

pedig a különféle perifériák: Itt fizikailag kétféle csatlakozási lehetőséget biztosítottak: • a gép házán kívülről egyedi, speciális csatolókon keresztül csatlakoztathattuk a billentyűzetet, a monitor, a soros és a párhuzamos portot; • míg a gép házát felnyitva, az alaplapon találhattuk a nevének megfelelő „bővítősínt”, amelyen lévő kártyahelyekbe, az úgynevezett aljzatokba dughattuk a különféle I/O egységek vezérlőkártyáit, például ilyen volt a merevlemez-vezérlő, a hajlékonylemez-vezérlő, a kiegészítő soros- és párhuzamos port, a játék-port, a hangkártya, stb. Megvalósításukat tekintve ezek egyre inkább integrálódtak, például egyetlen kártya bedugásával bővíthettük a gépünket 2 db soros, 1 db párhuzamos és 1 db játék porttal. A kezdet kezdetén csupán egyetlen szabvány létezett, az IBM-é. Az XT gépek esetén 2x31 pólusú csatlakozók kerültek az alaplapra. Ezen jól elfért a 8-bites

adat- és a 20 bites címvezeték Az utóbbi max. 1 Mbájtos címteret eredményezett Később más gyártók és az IBM különféle sín-konfigurációjú szabványokat vezettek be. 3.352 Többszintű sínrendszer: helyi sín architektúra A dedikált vonalak és az egyszintű osztott sín a két szélső esetet jelképezi. Közöttük egy sor olyan struktúra létezik, amely magában foglalja az adatsín megosztását. Például az olyan rendszerek, amelyek kis számú, viszonylag független megosztott sínt tartalmaznak. Ezek közül a legegyszerűbb, a kétszintű sín. Kétszintű sínrendszer Elve 13 FA3 Input Memóriasín Memória Processzor Output I/Osín Ez a legegyszerűbb formája a kétsínes számítógép-architektúrának. A processzor a memóriával a memóriasínen keresztül áll kapcsolatban és az input és az output műveleteket az I/O sínen keresztül kezeli. Az adatok a processzoron keresztül mennek át a memóriához vezető útjukon Az ilyen

konfigurációban az I/O átvitel általában a processzor közvetlen felügyelete alá tartozik, amely kezdeményezi az átvitelt és felügyeli a végrehajtásukat egészen a teljesülésükig. ISA (AT-bus) A félvezetőgyártás és az architektúra fejlődése eredményeképpen egyre gyorsabb, egyre nagyobb szószélességű processzorok és egyre gyorsabb félvezető memóriák születtek. Ezért egyre keményebb teljesítmény-korlátot jelentett a szinkron vezérlésű sín 6-8,33 MHz meghajtása, mivel a processzormeghajtás 25, 33, 40 MHz re nőtt. Ugyanakkor a sín-meghajtást nem lehetett önkényesen növelni, mivel arra nagyon sok vezérlőkártyát fejlesztettek, s a felhasználók nem kívánták azokat mindet lecserélni. A kompromisszumos megoldás eredménye: két részre választották a sínt: • az I/O sín meghajtása változatlanul 6-8,33 MHz, szószélessége pedig 16 bit maradt, teljesítve ez által a kompatibilitási igényeket, s ezt a sínt ISA (Industry

Standard Architecture) néven szabványosították. Ez a sín 5 Mbájt/másodperc átviteli sebességre képes; • a CPU-memória sín viszont már a ballasztjától megszabadítva sokkal gyorsabban, a CPU órajelével működhet, mégpedig 32 bites szószélességgel. Az igen egyszerű ISA-sínvezérlő az I/O műveletek során „wait” ciklusok beiktatásával a CPU-memória sín sebességét az ISA sín sebességére csökkenti, ezáltal teljesíti mindkét oldal időzítési előírásait. 33MHz, 32bitesCPU-memóriasín Memória Processzor ISAvezérlõ 8MHz, 16bitesbõvítõsín Lemezvezérlõ Grafikuskártya Faxmodem Nyomtató Az AT-gépeknél azonban kevésnek bizonyult az XT-nél elterjedt kivezetések száma, hiszen itt 16-ra nőtt az adat és 24-re a címsín (16 Mbájtos címtér), valamint új vezérlőjelekre is szükség volt. A kompatibilitás miatt az AT alaplapokon megmaradt a 2x31 pólusú csatlakozó, így az XT gépekben használt kártyák nagy részét

felhasználhatjuk. A kivezetések számának növelését úgy oldották meg, hogy mintegy az eddigi csatlakozók meghosszabbításaként egy 2x18 pólusú csatlakozót illesztettek az 14 FA3 alaplapba. Később, amikor az AT alaplapok elterjedtek, ezt a csatlakozó formát szabványosították mind méretei, mind pedig elektromos jellemzői szempontjából. Ennek a szabványnak az ISA (Industry Standard Architecture), azaz ipari szabványos felépítés nevet adták. Az AT gépekbe tehát az ilyen szabvány szerint készült kártyák helyezhetők be. Az ISA kártyákat két alapcsoportba sorolhatjuk (lásd az ábrát, mely egy tipikus ISA alaplapot ábrázol): - A legtöbb 8-bites kártya viszonylag rövid és csak az első sor csatlakozó tűvel rendelkezik; ezzel szemben a 16-bites kártyák csatlakozással rendelkeznek mindkét sorhoz. J1 J2 J3 J4 J5 J6 J10 J11 J12 J13 J14 J7 J8 J16 Az ISA sín szinkron meghajtású, amit 6-8,33 MHz frekvenciájú órajellel

hajtanak meg. Ez teszi lehetővé a régebbi fejlesztésű, olcsó I/O kártyák használatát. A 24-bites címvezetékkel max. 16 Mbájt címtér címezhető Az ISA-sínes gépeket mégis 64 Mbájtosként hirdették. Ezt lap (page)-kezeléssel oldották meg Ezt a rendszer-szoftver valósítja meg, 16 Mbájtos blokkokban kezelve a memóriát. MCA Az IBM cég által gyártott PS/2-es számítógép e tekintetben kivétel. Ebben, az 1987 április 7-én meghirdetett gépben, ennek egyik újdonságaként az úgynevezett MCA (MicroChannel Architecture), mikrocsatornás felépítésű sínrendszert vezették be. Az IBM stratégia szerint ezt széles skálán kívánták bevezetni, tudományos célú workstation-ökön át nagy teljesítményű mainframe-ekig. Azonban 1988. szeptember 13-án, egy vállalati csoport, amely IBM PC-vel kompatibilis gépeket gyártott, egy alternatívát jelentett be, az EISA-t. A kilenc vállalatból álló csoport vezetoje a Compaq volt. EISA A

mikroprocesszorok adat- és címvezetékeinek további növekedése arra kényszerítette a fejlesztőket, hogy még több csatlakozási ponttal rendelkező szabványt fejlesszenek ki. A megoldás, hogy tovább hosszabbítsák a csatlakozót, nem kínálkozott jónak, így is az alaplapok alapterületének felét a kártya, illetve a memória csatlakozók foglalták el. A megoldás a később szabványosított EISA (Extended Industry Standard Architecture) sínrendszer lett, melyben az eddigi érintkező helynek megfelelő ponton két érintkező helyezkedik el egymás fölött. Az EISA rendszerben tehát (31+18)*4 csatlakozási hely van. Az EISA fejlesztést a marketingre s nem pedig a mérnöki tudományra, a szükségletekre alapozták. A meghirdetésétől 2,5 év telt el, mire az elso EISA adapterek elérték a piacot. Az EISA legnagyobb érdeme az volt, hogy késleltette az MCA elfogadását. Az EISA elvi előnye abban jelentkezett, hogy a felhasználók az összes régi PC/XT/AT

kártyájukat átdughatták az új gépükbe, amit az MCA-gépekkel nem lehetett megtenni. 15 FA3 Háromszintű sínrendszer VESA Local Bus Ugrásszerűen megnőtt a processzor-teljesítmény a 90-es évek elejére ezzel a fejlodési ütemmel nem tudott lépést tartani sem az 1982-es eredetű ISA, sem annak két továbbfejlesztése, az MCA és az EISA. Felemás helyzet alakult ki: míg a nagy teljesítményű központi egységek (CPU) "kerekei" egyre sebesebben forognak, a merevlemezek, videokártyák és egyéb perifériák továbbra is a lassú, keskeny csatornán keresztül küldik-fogadják az adatokat. Több szabvány terjed, ezek közül sokáig a legnépszerubb volt a Video Electronics Standard Association által kialakított VESA helyi sín. 1991. decemberében szervezték meg a Video Electronics Standard Association (VESA) helyi sín bizottságát. A VL sín 10 szabvány ratifikálása 1991 augusztusában történt meg Az ipari elfogadtatása is igen gyors

volt, több mint 100 gyártó kezdett el gyártani VL-kompatibilis terméket. A szabvány 20ás változata is gyorsan elkészült s kb egy évvel az 10-ás elfogadása után ezt is elfogadták A helyi sínes rendszerek ezt a szűk keresztmetszetet szüntetik meg azzal, hogy a gyors perifériákat leveszik a lomha bővítősínről vagy rendszersínről és közvetlenül a CPU-memória-sínre kapcsolják őket, szélesebb, gyorsabb "futószalagot" alakítva így ki a központi egység és a perifériák között. Míg az ISA sín 20 Mbit/másodperces maximális átviteli képességgel rendelkezik, a helyi sín hatszoros 130 Mbit/mp-ével szemben. Fontos piaci előnye, hogy alig kerül többe (1-3 ezer Ft) a hagyományos ISA bővítősínnél. A 64 bites helyi sín átviteli sebessége 260 Mbit/másodperc. Érdekessége a VL-sínnek, hogy egy 64bites egység egy 32-bites aljzatban 32-bites egységként működhet és egy 32-bites egység is működhet egy 64-bites aljzatban, de

természetesen csak 32-bites adatátvitellel. A VL-sín egységnek két típusa ismeretes: Local Bus Master (LBM): adatátvitelt kezdeményezhet, és saját processzorral rendelkezhet: Egy LBM lehet más LBM-ek LBT-je is. Local Bus Targets (LBT): csak válaszol az adatátviteli igényekre. 33 MHz, 32-bites memória-sín Processzor ISA bővítősín vezérlő Memória 8 MHz, 16-bites ISA sín Lemezvezérlő Nyomtató . Szkenner A VL-sín egységet teljes egészében hardver vezérli, ami azt jelenti, hogy a rendszer-szoftvernek és az alkalmazásoknak nem kell érteniük a VL-sínt ahhoz, hogy használják. A VESA VL sín mutatja a vele egyvonalban lévő ISA aljzatokat. A 20-ás változat 64 bites, s egy MCA-stílusú, 112 tűs csatlakozót jelent. A VLB esetén problémák jelentkeztek a meghajtó-képességgel és a sebessége sem volt elegendő. 16 FA3 Szabványos(E)ISA slot-ok MCA helyi sínslot-ok CPU PCI Ezt a szabványt az Intel cég kezdeményezésére a

Peripheral Component Interconnect Special Interest Group tervezte. 32 és 64-bites nagysebességű adatátvitelt eredményez Szinkron meghajtású sín, amit 33 MHz es frekvenciával hajtanak meg. Fontos jellemezője a PCI platform-függetlensége. Tehát míg az ISA, EISA kifejezetten csak a PCkörnyezetben létezett, a PCI már többféle processzorú gépen is megvalósítható: a csatlakozások függetlenek a fősíntől, ezeket bármely fősín szabvánnyal rendelkező számítógép mellett lehet használni; nem függ az Intel processzor-családtól, így a jövő processzoraival is működőképes lesz. Egy tipikus jelenlegi PCI alaplap rendelkezik 4-6 ISA, EISA, MCA aljzattal, ezen kívül pedig 1-3 PCI aljzattal. A 32-bites PCI 132, a 64-bites pedig 264 Mbájt/másodperc átviteli sebességgel rendelkezik. Összehasonlításul a SCSI- 5 Mbájt/másodperc, SCSI-2 pedig 40 Mbájt/másodperc. A PCI egységnek két típusa ismeretes: Master vagy sín master: egy intelligensebb

egység, mely a síntől vagy más egységtől független feldolgozást végez. A sínmaster megosztja a sínt a főprocesszor és a target között Egy master egység szolgálhat más master targetjeként. Target: passzív egység. A PCI meghatározás minimum 47 lábat igényel a target, 49 lábat pedig a master számára. Ez alig elképzelhető, ha arra gondolunk, hogy ezek magában foglalják az adatok kezelését, a címzést, a sínarbitrálást és a rendszerfunkciókat. Egyébként a 32-bites kártya maximum 120+4=124, a 64-bites pedig maximum 184 érintkezővel rendelkezhet. Ez egy multiplexelt megvalósítás, amelynél egyetlen érintkező több jeltípust gondoz. Például a címek és az adatok ugyanazon érintkezőkre multiplexeltek Így egyetlen PCI sín-átvitel két fázisra bontható: egy címfázisa, amit egy vagy több adatfázis követ. 17 FA3 Az átvitel menete a következő. Legelőször a master sín egy jelet küld a sínhez csatolt valamelyik egységnek,

mely azt készenléti állapotba hozza. Ezután burst üzemmódban ugyanazon érintkezőkön keresztül mennek az adatok. Miután a címet egyszer elküldte, utána már csak adatot kell küldenie, hiszen a cél-egység már készenléti állapotban van. Miután a címet tisztázták, mind az írás, mind pedig az olvasás lehetséges. Ily módon szinte robbanásszerű gyorsasággal továbbíthatók nagy adatcsomagok a sínen. Ez a szolgáltatás különösen jól használható a több millió színből álló, nagy felbontású képek gyors megjelenítésére. Három fizikai címteret definiál a PCI: memória; I/O; konfigurációs. A specifikáció lehetővé teszi a PCI kártya automatikus hardver-konfigurálását, vagyis azt, hogy az üzembe helyezés során a periféria illesztőkártyája együttműködjön a rendszerrel, és meghatározza a megszakítás-beállításokat és a szoftveres alapértelmezéseket. Ez teszi lehetővé, hogy minden csatlakoztatott egység önmagát

konfigurálja vagy a rendszer konfigurálja a bővítőkártyán tárolt információ segítségével. Így nincs szükség sem konfigurációs program futtatására, sem pedig kapcsolók állítgatására. 32-bites memória-sín Processzor Helyi sín vezérlő Memória 32-bites helyi sín ISA bővítősín vezérlő Lemezvezérlő Hálózati kártya Grafikus kártya 16-bites ISA sín Modem Nyomtató . Szkenner Négyszintű sínrendszer AGP (Advanced Graphic Port) Az Intel tervezte, 1.0 verziója 1996 július 31-én került bejelentésre Lényegét tekintve az AGP egy modern PC negyedik sínje, ami hozzáadódik a kompatibilitási sínhez (pl. ISA, MCA, EISA), a PCI sínhez és a memória-sínhez. Az AGP mindössze két egység között működik, kétféleképpen: Az AGP átvitel: a grafikai processzor (graphic board or chip), a master vezérli és az memória-vezérlő (memory controller) a passzív target. A PCI átvitel: a memória-vezérlő mint egy PCI sequencer, mind

master mind target-ként képes működni; a grafikai processzor alapvetően target, de rendelkezhet master-funkciókkal is. Az Intel az AGP kétféle alkalmazását biztosítja: execute model: az AGP csatlakoztatja a grafikus gyorsítót az operatív tárhoz. A videokártyán lévő gyorsító processzor használhatja az operatív tárat magas szintű funkciók végrehajtására, mint a 3D gyorsítás. A grafikai processzor arra használja az AGP-t, hogy kiemelje a 18 FA3 - forrásadatokat az operatív tárból, tárolja a köztes eredményeket majd a kép végso adatait áttöltse a kártyán lévő helyi videomemóriába (a helyi frame buffer-be). DMA model: mint egy közvetlen gyors csatorna az operatív memória és a frame buffer között. Az AGP-sínen keresztül bittérképes ábrázolás megy az operatív tárból a videokártyán lévő frame memóriába. A grafikai processzor hagyományosan fog működni, a videokártyán lévő memóriában dolgozva. Mindkét

esetben az átvitel azonosan történik. Legelőször bármely vége az AGP sínnek megbeszéli a sín használatot. PCI sín (132 v. 264 Mbit/sec háló PCI aljzat aljzat PCI PCI bridge ISA sín (5 Mbit/sec) Mikroprocesszor ISA aljzat Memóriasín Memória manager í winchester modem Operatív memória AGP sín (500 Mbit/sec) Grafikai proceszor Frame buffer Rugalmas szintezésű, hierarchikus sínrendszer: nagysebességű kapcsolóhálózat A PCI hátránya, hogy egyetlen, nagy teljesítményű, de közös sínen biztosítja a kommunikációt. Az új technológia a PCI kiváltását célozza nagy sebességű kapcsolók hálózatával, melyek egy átmenetileg élo, de dedikált kommunikációs csatornát nyitnak a CPU és többek között olyan eszközök között, mint a hálózati kártyák (egyelőre csak a szerverekről van szó), winchester. A gyakorlatban két, egymással konkurens változata készül: - Next Generation I/O (NGIO) - Intel, Data General, Unisys, stb.

= 2000-re tervezi a bevezetését; - Future I/O - INM, Compaq, HP 3.4 A sín használói (master - slave) A sínt egyidőben csak egy eszközpár használhatja. A sín használatát valamelyik eszköz kezdeményezi, amelyet aktív eszköznek (master) neveznek, szemben a kapcsolatban résztvevő másik, passzív eszközzel (slave), amely csak fogja és végrehajtja az aktív eszköztől származó vezérléseket. A mikroszámítógépeknél a sín irányítását megszerző eszköz a processzor; a DMA vagy I/O processzor. A sín használatát eredményező folyamatot mindig a passzív eszköz indítja el azzal, hogy jelzést (megszakítási kérelmet) ad a processzornak valamilyen feladat elvégzésére. A beérkező igény kétféle módon értékelhető ki: 3.41 Nem vektoros sínfoglalás 19 FA3 Az egyik esetben minden passzív eszköz önálló megszakítási lehetőséggel rendelkezik, amely alapján a processzor azonnal el tudja dönteni, hogy melyik eszköz küldte a

jelzést és el tudja indítani a sín lefoglalása iránti kérelmét. Ha egy eszköz több megszakítási lehetőséggel is rendelkezik, akkor a processzornak előbb szoftver úton, program segítségével ellenőrizni kell a lehetséges okokat, majd ezt követően kezdeményezheti az átviteli kapcsolat létrejöttét, a sín foglalását. Ezt a módszert nem vektoros sínfoglalásnak nevezik. 3.42 Vektoros sínfoglalás A másik esetben a passzív eszköz saját, megszakítást értékelő logikával rendelkezik, amelynek eredményeként, jelzésére a processzor egy elfogadási jelzést küld ki, valamint a "slave" azonosítóját. A processzor második elfogadási jelének megjelenése után, a passzív eszköz a megszakítás okának megfelelő vektort, címet helyez az adatvonalra, amelyet felhasználva a processzor elindítja az átviteli kapcsolat kialakítását, a sín foglalását. Ezt az eljárást vektoros helyfoglalásnak nevezik Sok esetben az adott eszköz

az egyik esetben aktív szerepet, és más helyzetben passzív szerepet is betölthet. A memória mindig csak passzív szereplő lehet az átvitel lebonyolításában A lehetséges szerepeket, párosításokat az alábbi kis táblázat mutatja be: Aktív szereplo (master) processzor processzor processzor Passzív szereplo (slave) memória I/O eszköz co-processzor I/O eszköz memória co-processzor memória Kapcsolat utasítás- és adatlehívás adatbevitel/kivitel lebegőpontos utasítás végrehajtása közvetlen tároló-hozzáférés (DMA) adatelőkészítés 3.5 A sínrendszer vezérlése Vegyük át azokat a módszereket, amelyek a síneken történő kommunikáció létrehozására és felügyeletére szolgálnak. Ennek a kommunikációnak két alapvető nehézsége van: 1. 2. Az a kiválasztási folyamat, melynek során az egység kiválasztja a sínt. A sínen történő információ átvitel időzítése Az egyszerűség kedvéért a figyelmünket egyetlen,

megosztott sínre fordítjuk. Azt is feltételezzük, hogy egyetlen egység üzemel sínvezérlőként és felügyeli a sínhez csatlakozó egységek sín-kiválasztását. Sok, különösen a régebbi számítógép-rendszerben a CPU egyúttal a sínvezérlő egység is. A decentralizált sínvezérlésű rendszerek, ahol több egység működhet sínvezérlőként, hasonlóak. Rögtön előre kell bocsátani, hogy a sínrendszer vezérlése a mai, korszerű rendszerek esetében már teljesen transzparens a felhasználók számára. A sínrendszerek tervezői választanak - az adott szabvány keretei között - a következőkben felvázolt lehetőségek között. S mihelyt egy konkrét gépet megvásároltunk, minden az ott éppen alkalmazott módon történik, általunk többé nem befolyásolható módon. Számunkra csupán az eszközök illesztése, konfigurálása marad, ami a mai PCI világban szabványossá vált Plug and Play elv miatt egyre egyszerűbb (vagy egyre

bonyolultabb?). 3.51 A sínfoglalás (bus arbitration) szerint Vegyük észre, hogy míg sok egység van rákapcsolva a közös sínre, annak értéke így megnő: a közös sín használatáért általában sok egység verseng. A sínfoglalásnak általában két, egymásnak ellentmondó célja van: - a korrektség, azaz egyetlen egység se sajátíthassa ki a sínt és a prioritásos, mely bizonyos egységeket másokkal szemben előnyben részesít. 3.512 Prioritásos sínfoglalás 20 FA3 Egy egységet a fő sínhez való csatlakozásra két módon választhatunk ki: a sínvezérlő egység kezdeményezheti az U egység kiválasztását egy programutasításra adott válaszképpen vagy egy feltétel jelenik meg a rendszerben, mely igényli az U egység kiszolgálását; alternatívan az U egység maga is igényelheti a megosztott sín elérését, úgy, hogy a sínvezérlő számára meghatározott jelet küld. Mindkét esetben specifikus tevékenységeket kell a sínvezérlő

egységnek végrehajtani annak érdekében, hogy stabilizálja a logikai kapcsolatot az U egység és a sín között. Abban az esetben, ha több egység szimultán módon generálhat sín-elérési igényt, akkor a sínvezérlőnek rendelkeznie kell valamilyen eljárással, melynek alapján kiválasztja a legmagasabb prioritású egységet. Másképp: Központilag vezérelt fokozatos busz-kiszolgálás. Van egy busz-vezérlő, mely a buszhasználatot engedélyezi Ha több igénylő van, akkor valamilyen prioritást kell alkalmazni, s ez mindhárom esetben más és más mintát követ. Van, amikor a CPU végzi a busz-vezérlést, van, amikor egy bus-management unit végzi. Bármely sínvezérlő egységnek fontos feladata, hogy kiválassza a legmagasabb prioritású egységet akkor, ha egyidejűleg több egység igényli a sínhez való hozzáférést. A prioritás szerinti kiválasztásnak a következő módszerei vannak: Soros kiszolgálás Hardver lekérdezéses (hardware polling

vagy daisy-chain) Elve data bus bus grant U1 U2 Un . bus control unit control bus bus request bus busy Ha a busy vonalon senki sem jelzi a foglaltságot, akkor a bus control unit kiadja a szabad jelet. A FREE megy az első egységbe, ha neki nem kell, továbbengedi (ezért jelöltük hajszálvonallal). A másodiknak kell, o akkor a busy-jellel elfoglalja az eszközt és ekkor a FREE jel adását a bus control unit leállítja. 21 FA3 t BUSY FREE t REQ Daisy-chain - gyermekláncfű. Három vezérlőjelet vonunk be a kiválasztási folyamatba, melyeknek az általános neve: BUS REQUEST BUS GRANT BUS BUSY (Lényegében ugyanúgy neveztük el, mint ahogy azt a PDP 11 UNIBUS-nál elnevezték.) Valamennyi egységet rácsatlakoztatnak a szimpla BUS REQUEST vonalra. Amikor aktiváljuk, ez csupán arra szolgál, hogy jelezze: egy vagy több egység igényli a sínhez történő csatlakozást. Mihelyt egy egységet hozzákapcsolunk a sínhez, az azonnal aktiválja a BUS BUSY-t a

sín-tranzakciója időtartamára. A sínvezérlő egység csak akkor válaszol a BUS REQUEST jelre, ha a BUS BUSY jel nem aktív. A válasz formája a BUS GRANT vonalra helyezett jel. A daisy-chaining technika legfőbb megkülönböztető jellemvonása az, ahogyan a BUS GRANT jel terjed. A BUS GRANT vonal ugyanis nincs közvetlenül rákapcsolva minden egységre, hanem sorosan, egységről-egységre halad. Amikor az első egység, amely a sínhez való hozzáférést igényelte, megkapja a BUS GRANT jelet, az blokkolja a továbbhaladását, aktiválja a BUS BUSY jelet és megkezdi a sín használatát. Amennyiben nem igénylő egység kapja meg a BUS GRANT jelet, akkor az továbbítja a következő egységhez. Így, ha két egység igényli a sínhozzáférést, akkor az, amelyik elsőként kapja meg a BUS GRANT jelet, az szerzi meg a sín vezérlését. A választási prioritást így teljes mértékben az határozza meg, hogy az egységek milyen sorrendben vannak felfűzve

(láncolva) a BUS GRANT vonalra. A sínkérelmek kezelésének gyorsítására be lehet vezetni egy harmadik vezérlő jelet is, a visszaigazoló (BUS ACKNOWLEDGE) jelet, amelyen a sínfoglalás megtörténtét jelzi a vezérlő és ezzel lehetővé teszi az újabb sínkérelmek fogadását. A soros rendszerben a processzor szokásosan a legalacsonyabb prioritású azért, hogy minden eszköz megkapja a vezérlést, ha kéri. A prioritás szabályozására használt módszerek: Soros sínhasználat engedélyezés (daisy chained bus grant) A sínkérelem beérkezése után az engedélyező jel halad végig a láncon és a sorrendben legelöl álló kérelmező letiltja a jel továbbhaladását és igénybe veszi a sínt; ez a módszer a legáltalánosabban használt. Soros sínkérelem engedélyezés (daisy chained bus request) BUS REQUEST vonal halad végig az eszközökön; a sínt kérő eszközök kiadják a sínkérelmező jelet az alacsonyabb prioritás irányába, amelyek elérik

a jelenlegi sínhasználó eszközt, akkor, ha az alacsonyabb prioritású. Ez az eszköz ekkor kiadja a sínengedélyező (BUS GRANT jelet, amelyet 22 FA3 minden eszköz érzékel, de csak az eszköz veszi igénybe a sínt, amelynél magasabb prioritású egység (tehát melynek BUS REQUEST bemenetén nincs jel) nem kérte a sínt. Soros engedélyezés (daisy chained enable) Közös BUS REQUEST és BUS GRANT vezeték van és egy engedélyező vonal halad végig az eszközökön; az eszköz, amelyik igénybe akarja venni a sínt, letiltja a kimenetén a további, alacsonyabb prioritású eszközök számára a sín kérésének lehetőségét. Értékelése Elonye: A daisy chain igen kevés vezérlővonalat igényel és igen egyszerű a kiválasztási algoritmusa. Ezt lényegében végtelen számú egység mellett lehet használni Hátránya: Mivel a prioritási sorrend be van huzalozva, ezért az egyes egységek prioritását nem lehet szoftver úton megváltoztatni. Abban az

esetben, ha egy magas prioritású egység, mint például az U1 elég gyakran generál sín-hozzáférési igényt, akkor zárolhatja az olyan alacsony prioritású egységet, mint az Un. A BUS GRANT vonal és az azt kísérő áramkörök vonatkozásában hiba-érzékeny. Pl ha a középső egység nem tudja továbbadni a BUS GRANT jelet, az összes utána következő meghal, mivel nem tud hozzáférni a sínhez. Alkalmazási példa Multibus I Szoftver lekérdezéses (software polling) Elve A daisy chain módszer BUS GRANT vonalát egy olyan számláló vonal-köteggel helyettesítjük, amelyeket csatlakoztathatjuk valamennyi sínen lévő egységhez. Mint korábban, az egységek a sínhozzáférési igényüket a közös BUS REQUEST vonalon keresztül jelzik. A BUS REQUEST jelre való válaszként a sínvezérlő generál a számlálóvonalon egy számsorozatot. Ezek a számok, amelyeket tekinthetünk egység (unit)-címnek is, összehasonlításra kerülnek minden egység által az

adott egységhez tartósan hozzárendelt unikális címmel. Amennyiben az igénylő egység az U1 volt, akkor az megállapítja, hogy a címe megegyezik a számlálóvonalon lévő számmal, aktiválja a BUS BUSY jelet. A sínvezérlő erre a polling folyamat leállításával válaszol és az U1 megkapja a sínvezérlést. data bus U1 U2 Un . control bus számláló bus control unit bus request 23 FA3 bus busy A prioritás szabályozására használt módszerek: Központilag vezérelt busz hívószámmal. A) vagy a számláló (CT) lenullázódik: prioritás (kisebb a szám, hamarabb kerül kinullázásra); B) úgy marad, ahogy volt: minden eszköznek azonos a prioritása: ezt nevezzük forgó prioritásnak (rotated priority); C) pl. a számláló léptetését szabályozhatjuk Értékelése Előnyei: Világos, hogy az egység prioritását a polling sorozatbeli címe határozza meg. A polling sorozta általában programmal megváltoztatható (a számlálót egy

programozható regiszterhez csatlakoztatják); ezáltal a kiválasztási prioritás szoftver úton megváltoztatható. További előnye a daisy-chaining-gel szemben, hogy egy-egy egység meghibásodása nem hat egyetlen más egységre sem. Hátrányai: A rugalmasságáért több vezérlővonallal kell fizetni (k vezérlővonallal az egyetlen BUS GRANT vonal helyett. A sínt megosztó egységek számát a számlálóvonalak címképzési kapacitása behatárolja. Alkalmazási példa ISA sín (azonos elvu az EISA és az MCA is) 65536-féle egység címezhető, tehát az I/O-címzésre használt cím-vezetékek száma 16. Az ISA sínen az alaplap processzora, a DMA vezérlője, a memória és esetleg a bővítő sínre csatlakozó bus master egység (melyből egyébként több is lehet) kezdeményezhet sínciklusokat. Mindig a pillanatnyilag aktív egység hajtja meg az adat- és a cím-vonalakat valamint kezeli a kiválasztott passzív egység válaszait. A sínen lehetnek mind 8, mind

pedig 16 bites egységek is, tehát az aktív egységnek biztosítani kell az átvitelt a különböző felépítésű egységek között. Az alaplapon megvalósítottak egy bájt-cserélő egységet, ami a bájtos egységek szavas elérését támogatja. Mivel az átvitelt kezdeményező aktív egységek mindegyike képes a 16-betes átvitelre, ezért mindig a passzív egység jelzi - az IOCS16 vezérlővonal aktiválásával -, hogy képes a 16-bites átvitel megvalósítására. Ha nem képes a szavas átvitelre, s a processzor mégis 16-bitesen kezeli, akkor az alaplapon lévő bájt-cserélő egység két 8-bites periféria sínciklusra bontja fel az átvitelt, mégpedig a kiadott és az azt követő címre vonatkozóan. A passzív egységnek lehetősége van arra, hogy az adatátvitel időzítését módosítsa, mégpedig úgy, hogy az átvitelt az IOCHRDY jel aktiválásával megnyújtja. A címvonalak mind memória, mind pedig I/O egység címzésére szolgálnak. Az első

esetben a MEMW illetve a MEMR vezérlővonalak kerülnek beállításra, a második esetben pedig az IOW és az IOR. Látható, hogy a vezérlővonalak egyben az átvitel irányát is meghatározzák. Amennyiben a periféria a 16-bites átvitelre is képes, akkor az átvitel előtt az IOCS16 vezérlővonalat is aktiválnia kell. Párhuzamos kiszolgálás (Independent requesting) Elve A harmadik prioritás-kezelési módszer minden egyes, a megosztott sínt használó egység vonatkozásában különálló BUS REQUEST és BUS GRANT vonalat használ. Ez a megközelítés 24 FA3 lehetővé teszi, hogy a sínvezérlő egység azonnal azonosítsa az összes igénylő egységet és igen gyors választ biztosít a sín-elérési igény számára. A prioritást a sín-vezérlő egység határozza meg és az szoftver úton változtatható. Az independent requesting legnagyobb hátránya az a tény, hogy a sínvezérlő egységhez 2n db BUS REQUEST és BUS GRANT vonalat kell csatlakoztatni

annak érdekében, hogy n egységet vezéreljünk. Ezzel szemben a daisy chain esetében mindössze kettő a polling esetében pedig log 2 n vonalra volt szükség. U1 U2 Un . req 1 bus control unit grant 1 bus request 2 bus grant 2 bus request n bus grant n bus busy Független busz-kérelem: az egységek egymástól teljesen függetlenül kérhetik a sínt. A vezérlő egység rögtön látja, ki kérte. (PC-ben kb ez valósul meg) A prioritás szabályozására használt módszerek: Egyszerű körbejáró (simple rotating) Minden sínengedélyezés után a prioritás sorrendje változik, minden eszköz eggyel alacsonyabb prioritást kap, és az eddig legalacsonyabb prioritású eszköz a legmagasabb szintre kerül. Elfogadástól függő körbejáró (acceptance dependent rotating) A sínkérelem kiszolgálása után a prioritás sorrendje változik, minden eszköz eggyel magasabb prioritást kap, és az eddigi legmagasabb prioritású eszköz a legalacsonyabb szintre

kerül. Ezt a módszert használják a legáltalánosabban. Véletlenszerű (random) A prioritási sorrend minden kiszolgálás után újra kiosztásra kerül, mégpedig véletlenszerűen. Egyenlő (equal) Több igény esetén a vezérlő egyenlő valószínűséggel szolgálja ki bármelyik igényt. A legkevésbé használt eszköz (LRU - least recently used) A sínt legrégebben használó eszköz kapja meg a sínt először. 25 FA3 Értékelése Hátrányai: minden egységhez külön vonalat kell húzni; ez bonyolítja a hardvert és növeli a költséget. Elonyei: igen gyors: a bus controller mindig tudja, ki kérte a sínhasználatot és azonnal neki címzetten engedélyezheti is; a prioritás szabályozására sokféle módszer áll rendelkezésre; szinte processzor szintű intelligenciára ad lehetőséget. Alkalmazási példa PCI A mai PC-kben is alkalmazott, architektúra-független PCI esetében az arbitrálás központosított. Minden egyes kártyahely (slot), azaz

minden egyes PCI egység rendelkezik egy saját busmasterrel, továbbá saját, külön BUS REQUEST és saját, külön BUS GRANT vezérlővonallal. Amikor valamelyik PCI egységnek a sínre van szüksége, akkor az adott kártyahely busmastere egy BUS REQUEST jelzést küld a sín központi arbitrálójának, mely - amennyiben a sín szabad - az adott kártyahely BUS GRANT jelének a beállításával engedélyezi a sínhasználatot. Az arbitrálási folyamat infrastruktúrája független az adatátviteli folyamat infrastruktúrájától. Ebből következik, hogy egy PCI egység adatátvitele alatt megtörténhet egy másik egység bejelentkezése. Mivel így az arbitrálás nem igényel különálló ciklusidőt, ezért ezt rejtett arbitrálásnak nevezzük. Több egység sorbanállása esetén a kiválasztás során a PCI szabvány széles szabadságot ad a megvalósító gyártóknak: így lehetséges gyártói döntés a FIFO, az egyszeru körbejáró vagy bármely prioritásos

módszer. A PCI busmasternek minden egyes tranzakcióhoz kérnie kell a sínhasználatot, ahol egy tranzakció állhat • egy címből és egy adatból illetve • egy címből és több adatból. 3.513 Az Unibus A PDP-11 UNIBUS rendszere kombinálja a daisy-chain és az independent requesting rendszert. Van öt BUS REQUEST vonal az UNIBUS rendszerben, ezek mindegyikét meghatározott prioritási szinthez rendelték. Minden egyes BUS REQUEST vonalat különálló BUS GRANT vonal kísér Amennyiben öt vagy kevesebb egységet csatlakoztatnak az UNIBUS-hoz (leszámítva a CPU-t, amely a sínvezérlo szerepét végzi), akkor mindegyik használhatja az independent requesting módszert. Ha több egységet csatlakoztatunk ugyanahhoz a BUS REQUEST vonalhoz, akkor a megfelelő BUS GRANT vonal a daisy-chain módszerrel csatlakozik ehhez az egységhez. Ez a daisy-chain meghatározza az ugyanazon BUS REQUEST vonalhoz csatlakoztatott eszközök prioritását. A PDP-11 CPU-jának is rendelkezik

az UNIBUS eléréséhez prioritási szintekkel. Ezt a prioritást a CPU állapotszavában tárolják és szoftver úton módosítható. Az előző előnyei-hátrányai miatt azt a rendszert kombinálják a daisy-chain rendszerrel. Ezt a PDP-11nél valósították meg Kétszintu a dolog: 26 FA3 BUSGRANT1 (FREE) BUSREQUEST1 BUSBUSY BUSREQUEST2 BUSREQUEST2 BUSBUSY 3.52 Az átvitel időzítése (bus timing) szerint A sínrendszeren keresztül történő információ-átvitel időzítése igen fontos. Két esetet különböztetünk meg, a szinkront és az aszinkront. 3.521 Szinkron Elve A szinkron kommunikáció feltételezi, hogy minden, a sínen továbbított információ egység egy olyan időperiódus alatt kerül továbbításra, melyet előre ismer mind a forrás, mind pedig a rendeltetési egység. Ez feltételezi, hogy mindkét egység időzítő mechanizmusa szinkronizált. Fajtái A szinkronizálást elérhetjük minden egység közös forrású órajellel való

ellátásával, ez a módszer csak kis távolság esetén megvalósítható; alternatív megoldásként pedig minden egységet önálló, lokális óra hajt meg, körülbelül ugyanazon frekvenciával. A két óra előbb-utóbb „elcsúszik”, ezért periodikusan egy szinkronjelet kell átküldeni a kommunikáló egységek között annak érdekében, hogy az órajelüket egymással összehangolják. Értékelése A szinkron üzemmód előnye, hogy a szinkron sínhez az illesztés egyszerűbb, mivel például nincs szükség az egység saját működési sebességéhez illeszkedő nyugtázó jelek előállítására. A szinkron üzemmód hátránya, hogy az információ-átvitelre szolgáló időintervallumot alapvetően a rendszer leglassúbb egysége határozza meg. Így a gyors egységek nem tudnak a maximális sebességükkel kommunikálni. A teljesítmény-növekedés két tényezője: • • a sínszélesség 16-ról (ISA), nőtt 32-re (PCI), majd 64-re (PCI); a meghajtás 6

MHz-ről nőtt 33 MHz -re (PCI), majd 66 MHz -re (AGP) és 27 FA3 e két tényező eredőjeként az átviteli sebesség nőtt 5 Mbit/sec-ról (ISA) 132 Mbit/sec-ra (32-bites, 33 MHz meghajtású PCI), majd 264 Mbit/sec-ra (64-bites, 33 MHz meghajtású PCI), később pedig 500 Mbit/sec-ra (AGP). Vegyük észre az analógiát a processzor teljesítmény-növekedésével, melyek tényezői között szintén szerepel a sínszélesség és az órafrekvencia növekedése. • Példa Az ISA bővítősín szinkron meghajtású, amit 6-8,33 MHz frekvenciájú órajellel hajtanak meg. Ez teszi lehetővé a régebbi fejlesztésű, olcsó I/O kártyák használatát. A PCI bővítősín szintén szinkronvezérlésű bővítősín, 33 MHz frekvenciájú órajellel hajtják meg. Az AGP bővítősín ugyancsak szinkronvezérlésű, mégpedig 66 MHz meghajtással. 3.522 Aszinkron Elve Alternatív megoldásként a lokális sínrendszeren gyakran használják az aszinkron kommunikációt, melynek

általános elve, hogy minden elemi művelet befejeződése egyben egy jelzés a következő elemi művelet megkezdésére. Az aszinkron adatátvitel során az adó annyi ideig tartja fenn az adat- és a vezérlőjeleket, amíg a vevő nem jelzi vissza az adatátvitel megtörténtét. Tehát minden továbbított információs egyedet egy önálló vezérlőjel kísér, mely jelzi a rendeltetési egység számára az értelmét. A rendeltetési egység másik vezérlőjellel válaszolhat, mellyel nyugtázza az információ fogadását. Mivel minden egység a saját sebességével generálhatja ezeket a jeleket, az adatátviteli sebesség a kommunikáló egységek saját sebességei szerint variálódhat. Az adatátviteli sebesség ezen rugalmasságát a komplexebb sínvezérlő áramkör árán érjük el. Egy tipikus sín több, különböző adatátviteli sebességű eszköz között van megosztva, ezért általában az aszinkron kommunikációt alkalmazzák. Ez azt igényli, hogy

vezérlő jeleket kell átküldeni a kommunikáló egységek között, hogy megmutassák, az időket és hogy mely adat átvitele történik. Fajtái Két esetet különböztetünk meg: 1. 2. Egyvezetékes vezérlés, melynek során az időzítő jeleket a két kommunikáló egység közül az egyik támogatja. Kétvezetékes vagy interlock vezérlés, melynél mindkét egység generál időzítő jelet. Amikor egyvezetékes vezérlést alkalmazunk, egyetlen vezérlővonalat használunk minden egyes adatátvitel idozítésére. Ezt a vezérlovonalat mind az adó, mind pedig a vevő aktiválhatja Egyvezetékes vezérlés Adó oldali vezérlés Az adó ráhelyezi az adatszót az adatvonalakra. Egy rövid késleltetés után ez aktiválja a vezérlővonalat, amelyhez a DATA READY általános név van hozzárendelve. A késleltetés azért szükséges, hogy megelőzzük, nehogy a DATA READY jel érje el a vevőt hamarabb, mint maga az adatszó. Mind az adatvonalakat, mind pedig a DATA

READY vezérlővonalat aktív állapotban kell tartani elég hosszú ideig, hogy lehetővé tegyük a vevő számára az adatoknak az adatsínről való másolását. 28 FA3 Vevő Adó data ready data data ready Vevő oldali vezérlés Ebben az esetben a vevő kezdeményezi az adatátvitelt a DATA REQUEST-nek nevezett vezérlővonal aktiválásával. Az adó egység úgy válaszol, hogy felteszi az igényelt adatszót az adatvonalakra Ennek elég hosszú ideig kell tartania, hogy a vevőegységnek elegendő ideje legyen elolvasni azt. Vevő Adó data request data data request Az egyirányú vezérlés hátránya, hogy nincs visszajelzés arról, hogy az adatátvitel sikeresen befejeződött. Például egy adó-oldali vezérlés esetén az adó nem kap jelzést arról, hogy a vevő megkapta a továbbított adatokat. Így ha a vevő ki van kapcsolva, akkor is lezajlik a procedúra s ez baj Abban az esetben, ha a vevő rendkívül lassan reagál a DATA READY jelre, az adat

elveszhet. S a vevő sem tud visszajelezni arról, hogy kész fogadni. Kétvezetékes - kölcsönös vezérlés vagy handshake (kézfogás) Ezt a problémát küszöbölhetjük ki egy második vezérlővonal bevezetésével, amely lehetőséget biztosít a vevő számára, hogy nyugtázó jelet küldjön az adónak akkor, amikor megkapja a DATA READY jelet. Ennek a vezérlővonalnak az általános neve a DATA ACKNOWLEDGE Két rendszer együttműködésének egyébként igen elterjedt módszere az ennek megfelelő handshaking (kézfogásos) együttműködés. Az adó kezdeményez A forrás egység addig tartja az adatot a sínen, amíg meg nem kapja a DATA ACKNOWLEDGE jelet. A DATA ACKNOWLEDGE jel pedig csak azután kerül aktiválásra a rendeltetési egység által, miután az lemásolta az adatot az adatsínről. Ez a séma megengedi azokat a késéseket, amelyek az adatátvitel során fellépnek. aa) Hayes 29 FA3 Vevő Adó data ready data acknowledge data data ready data

acknowledge Az adó addi g tartja az adatot az adatsínen, amíg nem kapja meg a D ATA ACKNOWLEDGE jelet. A DATA ACKNOWLEDGE jelet a vevő addig nem aktiválja, amíg az adatokat az adatsínről le nem másolta. A vevő kezdeményez Vevő Adó data request data acknowledge data data request data acknowledge Az adó aktiválja a DATA ACKNOWLEDGE jelet annak jelzésére, hogy az igényelt adat elérhető a sínen. Ez addig tartja az adatot az adatsínen, amíg a vevőegység nem szünteti meg a DATA REQUEST jelet. Ez az a tevékenység, mely az adatoknak a vevő általi fogadásának visszajelzésére szolgál A vevőoldali vezérlés példája a PDP-11 UNIBUS esetében. A MASTER SYNC és a SLAVE SYNC jel sorrendben megfelel a DATA REQUEST és a DATA ACKNOWLEDGE jeleknek. 30 FA3 Databus DataWord Addresbus Addres Control bus Read 150 nsec Master Sync 75 nsec SlaveSync Másképpen, Gál II. 104 oldal: az első ábra, mint a Hayes könyvben Az adatátvitel vezérlését

két jel végzi: a DATA READY (DATA VALID - DV) jel: = az adó DV=1 jellel jelzi a vevőnek, hogy az érvényes adatokat kitette az adatvonalakra; = a DV=0 azt jelenti, hogy az adó nyugtázta az adat vételét a vevő részéről és megszüntette az adatot: a DATA ACKNOWLEDGE (DATA ACCEPTED) jel: = a DA=1 jellel jelzi a vevő, hogy a legutolsó vett adat feldolgozásával kész, így újabb adat vételére készen áll; = a DA = 0 jellel viszont azt jelzi, hogy vette az adatot, de feldolgozását még nem fejezte be, tehát újabb adat vételére még nem kész. A nyilak az ábrán az okozati összefüggést jelentik. Tekintsük át a működést: t0 t1 t2 t3 t4 t5 az adóban rendelkezésre áll az elküldendő adat, így kiteszi azt az adatvonalakra; ezután, mivel a DA=1, tehát a vevő vételre kész, a DV=1 jellel jelzi, hogy érvényes adatok vannak az adatvonalakon; a vevő észlelve a DV=1-et, beolvassa az információt az adatvonalakról, s DA=o-val jelzi, hogy vette az

adatot; az adó DA=0-ból felismeri, hogy a vevő vette az adatot, s így megszüntetheti DV jelét (DV=0), s a kiadott adatot. Ha van újabb adata az átvitelhez, akkor már kiteheti az adatvonalakra; a vevő befejezte a vett adat feldolgozását, s DA=1-gyel jelzi, hogy újabb adat vételére kész; mivel az adó már korábban megszüntette a régebbi adatot és kitette az újat, a DV=1-gyel ezt jelezheti a vevő felé, stb. DATA DA DV t0 t1 t2 t3 Értékelése 31 t4 t5 FA3 Aszinkron sínnel általában nagyobb átviteli sebesség érhető el, mint szinkronnal, mert egy átviteli ciklus csak az éppen szükséges ideig tart. Példa A soros porton keresztül szinkron mellett aszinkron adatátvitel is lehetséges. A modemen keresztül történő átvitel aszinkron üzemmódban folyik. 3.53 Az átvitt bájtok mennyisége szerint Az adatátvitel a következőképpen történhet: bájtonként vagy blokkonként. Az assembly-ben az operatív tár: move a periféria kezelése: in -

out Tehát már utasítás szinten is megkülönbözteti a perifériát. - MR MW memória read memória write Olvasás: a tartalmat ki kell keresni az operatív tárból és be kell tenni az adatregiszterbe és fordítva. 3.531 Bájtonként A sínt egyetlen bájt átvitelére adományozzák az egységnek. 3.532 Blokkonként Fix- és változó hosszúságú blokkok. A PCI bővítősín az adatátvitel gyorsítására blokkos átvitelre is képes, melynek alkalmazásával minden sín-órajelnél megvalósul egy adatszó transzfere. Így a 33 MHz meghajtású szinkron átvitelt biztosító sín 32 bit szószélességű kiépítésben 132 Mbájt/sec, 64 bit szószélességű kiépítésben pedig 264 Mbájt/sec sebességű adatátvitelt biztosít. A blokkos üzemmódot achitekturálisan a CPU - Memória - PCI bridge azzal támogatja, hogy lehetővé teszi: miközben a CPU a gyorsító memóriából dolgozik, a perifériák és az operatív memória között DMA vezérlésű adattranszfer

történjen a PCI sínen és a bridgen keresztül. Az átvitel megbízhatóságát paritásjel és minden adatátviteli ciklushoz tartozó ACKNOWLEDGE jelek fokozzák. 3.54 A tárkezelés gyorsítása Cserny: 182-184 3.541 Átlapolódó sínciklus A sínciklusok átlapolásának lehetőségét az adja, hogy a tárolóciklus időtartama nagyobb, mint a sínciklusé. A sínciklus hossza legalább 2 órajelütem, míg a memóriaciklusé ennél hosszabb Ha a memória elérési ideje nagyobb, mint a buszciklus időtartama, akkor az átlapolással gyorsítható az átvitel. Azonban ennek az a feltétele, hogy a memória, a címzés szempontjából "bank"-okra bontható legyen. 32 FA3 ábra: Cserny: 183. oldal Ha 1 tárciklus = 2 sínciklus, akkor ennek alapján teljes átfedés hozható létre két tárbank alkalmazásával. Minden két ütemnyi időtartam egy-egy adat kiolvasását és átvitelét jelenti Ha a tárolóciklus és a sínciklus aránya más, akkor az

átlapolódás mértéke, a sín kihasználtsága és a szükséges tárolóbankok száma változik. Átlapolt sínciklust alkalmaznak az Intel processzorok. A 286, 386/486 processzoroknál 2 sínciklust, az i860-as processzornál 3 sínciklust lapolnak át. 3.542 Blokk-sínciklus (burst cycle) A blokk sínciklus arra ad lehetőséget, hogy több adat blokkos átvitelénél (pl. cache tárak feltöltésénél, visszaírásánál), ha azok a tároló egymást követő helyein találhatók, az egyszerű tárhoz fordulás helyett egy gyorsabb megoldást használjunk. A blokk-sínciklus esetében nem egyenként történik az adatok címzése, hanem automatikusan a tároló következő helyét veszi a vezérlő. Így ez a megoldás lerövidíti a teljes átviteli időt. Példa Cserny: 184. oldal Ilyen burst üzemmódra lehetőség van az i486-os, az MC68030-as, MC68040-es mikroprocesszoroknál. 3.6 A számítógép bővítő sínje a gyakorlatban 3.61 Fogalmuk A feladatuk, hogy

összekapcsolják a számítógépet a külvilággal. Ez egy többlépcsős kapcsolósor, hol a határ? Addig tekintjük a sínrendszer részének, amíg az egy szabványos csatlakozási felületet ad, azaz a rendszersín és a bővítősín együttesét tekintjük annak, más szóval a klasszikus alaplapot. PCvonatkozásokra vetítve: a klasszikus alaplap bővítősínébe bedugták a soros-párhuzamos portot vezérlő kártyát, a winchester-vezérlő kártyát, a monitor-vezérlő kártyát, a hangkártyát, stb. A kártyát már külön dobozban vettük, sokszor a földgolyó egy egészen más csücskében gyártották, mint az alaplapot. Napjainkban már egy megvalósítási részletkérdésnek tekintjük, hogy az adott I/O kártyát külön vásárolhatjuk meg avagy ráintegrálták az alaplapra, mint ma általában a soros/párhuzamos portot vagy a floppy/winchester vezérlővel történik. Egy sor alternatív megoldás létezik a számítógép sínrendszerének

kialakítására. Ez a változatosság azt jelenti, hogy egy bizonyos számítógéphez illesztett interface áramkörrel csatolt periféria lehet, hogy nem használható egy másik számítógéppel. Egymástól különböző interface-t kell tervezni minden I/O egység és számítógép kombinációhoz, ami nagy számú. különféle illesztőt eredményez Jobb alternatívát jelent az illesztő jelek és protokollok szabványosítása. Az illesztő (interface) szó két áramkör vagy egység közötti kapcsolatot jelenti. Az interface vonatkozó szabvány rögzíti a kapcsolatra vonatkozó valamennyi funkcionális, elektromos és mechanikus jellemző összes specifikációjának valamint az elektromos tápforrásának jellemzőjét. Ez azt jelenti, hogy meghatározza a konnektort és az abban használt vonalakat. 3.62 Ipari szabvány: alkalmazás-orientáltság Néhány iparszerte elterjedt szabvány létezik, és ezek gyakran bizonyos alkalmazásokra vannak korlátozva, pl. CAMAC

(Computer Automated Measurement and Control) illesztő rendszer a digitális műszerekhez. IEEE 488 33 FA3 Ez a sínrendszer eredetileg a laboratóriumi műszerek csatlakoztatását célozza, de csatlakoztatható segítségével plotter, floppy-egység és más lassú vagy közepes sebességű periféria. Hamacher: 254. old Tartalom 3. A SÍNRENDSZER ÉS A BŐVÍTŐSIN 1 3.1 A kommunikáció fajtái, a lokális kommunikáció 1 3.2 A sínek, vonalak fogalma, jellemzői 3.21 A sín fogalma Műszaki Funkcionális 3.22 A sínek, vonalak jellemzői 3.22 A sínek, vonalak megvalósítása PC-környezetben 2 3 3 3 3 3 3.3 A sínek csoportosítása 3.31 Az adatátvitel iránya szerint 3.32 Az átvitt tartalom, azaz funkciójuk szerint 3.321 Adatsín 3.322 Címsín 3.323 Vezérlősín Az adatárvitelt vezérlő jelek A megszakítást vezérlő jelek A sínvezérlő jelek Egyéb jelek 3.324 Példa ISA bővítősín PCI bővítősín UNIBUS (PDP 11) 3.33 Az összekapcsolt területek

alapján 3.331 Rendszersín (system bus) vagy memóriasín vagy CPU sín 3.332 A számítógép bővítősínje (expansion bus)6 vagy I/O sín vagy helyi sín 3.34 A kapcsolat jellege szerint 3.341 Dedikált kapcsolat 3.342 Megosztott (shared) kapcsolat 3.343 Crossbar 3.35 A struktúra szintjei szerint - esettanulmányok 3.351 Egyszintű sínrendszer 3.352 Többszintű sínrendszer: helyi sín architektúra Kétszintű sínrendszer Elve ISA (AT-bus) MCA EISA Háromszintű sínrendszer VESA Local Bus PCI Négyszintű sínrendszer AGP (Advanced Graphic Port) Rugalmas szintezésű, hierarchikus sírnrendszer: nagysebességű kapcsolóhálózat 4 5 5 5 5 6 6 6 6 6 6 6 7 8 9 9 9 10 10 11 12 13 13 13 13 13 14 15 15 16 16 17 18 18 19 3.4 A sín használói (master - slave) 3.41 Nem vektoros sínfoglalás 3.42 Vektoros sínfoglalás 19 19 20 34 FA3 3.5 A sínrendszer vezérlése 3.51 A sínfoglalás (bus arbitration) szerint 3.512 Prioritásos sínfoglalás Soros kiszolgálás

Felfűzéses (daisy-chain) Lekérdezéses (polling) A prioritás szabályozására használt módszerek: Soros sínhasználat engedélyezés (daisy chained bus grant) Soros sínkérelem engedélyezés (daisy chained bus request) Soros engedélyezés (daisy chained enable) Párhuzamos kiszolgálás (Independent requesting) A prioritás szabályozására használt módszerek: Egyszerű körbejáró (simple rotating) Elfogadástól függő körbejáró (acceptance dependent rotating) Véletlenszerű (random) Egyenlő (equal) A legkevésbé használt eszköz (LRU - least recently used) 3.513 Az Unibus 3.52 Az átvitel időzítése (bus timing) szerint 3.521 Szinkron Elve Fajtái Értékelése Példa 3.522 Aszinkron Elve Fajtái Egyvezetékes vezérlés Adó oldali vezérlés Vevő oldali vezérlés Kétvezetékes - kölcsönös vezérlérlés vagy handshake (kézfogás) Az adó kezdeményez A vevő kezdeményez Értékelése Példa 3.53 Az átvitt bájtok mennyisége szerint 3.531

Bájtonként 3.532 Blokkonként 3.54 A tárkezelés gyorsítása 3.541 Átlapolódó sínciklus 3.542 Blokk-sínciklus (burst cycle) 20 20 20 21 21 23 24 22 22 23 24 25 25 25 25 25 25 26 27 27 27 27 27 28 28 28 28 28 28 29 29 29 30 31 32 32 32 32 32 32 33 3.6 A számítógép bővítősínje a gyakorlatban 3.61 Fogalmuk 3.62 Ipari szabvány: alkalmazás-orientáltság 33 33 33 35 FA4 4. Az I/O rendszer és a külső illesztők Lesz majd a perifériákról egy külön tantárgy, tehát ezekkel az Architektúra c. tárgyon belül nem foglalkozunk. A számítógépnek az egyik alapvető képessége, hogy más egységekkel adatcserére képes. Ez a kommunikációs képessége magában foglalja az emberi operátort, például a programot és a hozzá tartozó adatokat bevisszük a billentyűzet és a képernyő segítségével, az eredményt pedig megkapjuk a nyomtatóval. A számítógép igényelheti a kapcsolatot olyan eszközökkel, mint a video-terminálok, nyomtatók,

plotter, mágneslemez, mágnesszalag, CD-ROM, hangkártya, hangszórók, speciálisak, mint a feszültségmérő, hőmérsékletmérő, motor sebességének a változtatása, csap kinyitása, robot meghatározott mozgásra késztetése. Röviden az általános célú számítógépnek olyan képességekkel kell rendelkezni, hogy a legkülönfélébb környezetben a legkülönbözőbb jellemzőjű eszközökkel tudjon kommunikálni. A számítógép fő számítási funkciójában két egysége vesz részt: a CPU és a memória. A processzornak leggyakrabban a memóriával kell kapcsolatot teremtenie. A processzor lehívja az utasítást és az adatokat a memóriából, feldolgozza azokat és az eredményt a memóriában tárolja. A számítógép processzora és memóriája valamint a külvilág közötti adatátvitelre szolgáló részt I/O rendszernek hívjuk. A gép számára fontos a perifériákkal lebonyolított adatforgalom is. A legnagyobb gondot ezekben az esetekben az

eszközök (processzor, periféria) igen eltérő sebessége okozza, de problémát jelent az eszközök változatossága is és az ebből eredő egyedi kezelési és megoldási módok. Az eszközök közötti eltéréseket csökkenti a közös sín használata, illetve az eszközt a sínhez illesztő vezérlő egység. Kronológia: A perifériák hogyan csatlakozhatnak a géphez. Az operatív tárhoz mi férhet hozzá? CPU (az I/O a CPU-n keresztül valósul meg (az I. generációs gépek I/O központúak); egy új eszköz, ami az operatív tárhoz férhet hozzá, munkáját a CPU vezérli (de elég autonóm módon végzi a periféria-operatív tár kapcsolatot Ez a csatorna. (II generációs gépek); DMA (Direct Memory Access); IOP - napjainkban. Tehát van CPU-vezérelt, csatorna-vezérelt, DMA-vezérelt, IOP-vezérelt operatív tár: a cím- és adatinformáció ezeken jelenik meg. A DMA végső soron a csatorna továbbfejlesztése, de nem abból származik. 4.0 Az I/O fajtái

4.01 A CPU részvételével: programozott I/O Amennyiben az I/O műveletet (az I/O egység és a CPU illetve az I/O egység és az operatív memória között) teljes egészében a CPU által irányítottan történik, azaz a CPU hajtja végre azt a programot, amely kezdeményezi, irányítja és lezárja az I/O műveletet. Ez szinte valamennyi számítógépben létezik A megvalósítása egyszerű, de ugyanakkor jelentős CPU-időt vehetnek el triviális I/O vezérlési funkciók is, mint például az I/O port READY állapotának ellenőrzése. 4.02 A CPU kiiktatásával: DMA A hardver komplexitás viszonylag szerény növelésével az I/O egységet elláthatjuk egy olyan képességgel, hogy adatblokkokat tudjon átvinni az operatív memóriába vagy memóriából, mégpedig a CPU beavatkozása nélkül. Ez azt igényli, hogy az I/O egység (vagy a vezérlője) képes legyen memóriacímek generálására és a rendszersínen keresztüli adatátvitelre, azaz legyen egy sín master A

CPU továbbra is felelős lesz azért, hogy kezdeményezze az egyes blokkok átvitelét. Az I/O egység pedig azután lebonyolítja magát az átvitelt a CPU további program-végrehajtása nélkül. A CPU és az I/O vezérlő, pontosabban a DMA vezérlő csupán olyan kapcsolatban van egymással amikor, átadják egymásnak a rendszersín vezérlését. FA4 4.02 Speciális I/O processzorral A DMA vezérlő csupán parciálisan vezérli az I/O műveletet. Az I/O processzor (IOP) bevezetésével lehet megvalósítani az I/O műveleteknek a CPU-tól független teljes vezérlését. A DMA vezérlőhöz hasonlóan az IOP is képes az operatív memória közvetlen elérésére és a CPU munkájának megszakítására, de ezen kívül képes közvetlen programfeldolgozásra is. Ezen programok, melyeket I/O programoknak hívunk, a CPU utasításkészletétől eltérő utasításkészlettel rendelkezik, azaz egy olyannal, mely kifejezetten a az I/O műveletekre irányul. Napjaink

architektúrájára általánosan jellemző, hogy a számítógépes rendszer CPU-ja mellett kisebb számítógépeket alkalmaznak IOP-ként. Az IOP több, független adatátvitelt képes megvalósítani az operatív tár és a egy vagy több I/O egység között, úgy, hogy közben nem fordul a CPU-hoz. Az IOP általában az eszközökhöz csatlakozik és saját sínt vezérel (I/O sín, PCI sín, AGP sín). Másképpen: Az I/O processzor az I/O vezérlési módszerek régóta alkalmazott kiterjesztése. A programozott I/O során az I/O egységeket a processzor közvetlenül irányítja. A DMA koncepció kiterjeszti az I/O egységekre egy korlátozott vezérlést a memóriából és a memória felé irányuló adatátvitelre. Az I/O processzornak további lehetősége van bizonyos - I/O utasításoknak nevezett utasítások végrehajtására, ami az I/O műveletek felett egy elég komplex vezérlési lehetőséget biztosít számukra. Az I/O processzor is, akár a CPU, egy

utasítás-készlettel rendelkező processzor, de általában az utasításkészlete a CPU-hoz képest jóval szűkebb. 4.1 Programozott I/O Először tanulmányozzuk a programozott I/O-t, amit a legtöbb számítógép tartalmaz. Ez azt igényli, hogy az összes I/O utasítást a CPU közvetlen vezérlése alatt hajtsuk végre, azaz minden, az I/O egységet bevonó adat-átviteli művelet igényli, hogy a CPU egy utasítást hajtson végre. A kis szóhosszúságú mikroprocesszorok periféria-kezelése során a periféria-kezelést eszközszintűnek mondjuk, hiszen a periferiális eszköz fizikai sajátosságainak megfelelő illesztési felületet és utasításkészletet biztosítunk. Ennek ellentéte a logikai szintű eszközkezelés, ahol általánosított illesztési felületeket biztosítunk a periféria-kezelés számára. A mai Pentium-os környezetben az utóbbi használata kizárólagos. 4.11 Az I/O címzés 4.111 A különálló I/O címtér A periferiális eszközök

kapcsolatát a processzorral, az eszközvezérlőkben (I/O interface) található regiszterek segítségével oldják meg. Minden adatforgalom, parancsküldés, illetve állapotlekérdezés ezeken keresztül valósul meg. A különálló I/O címtér elve CPU ACPUkét címteret lát: operatívtár I/O Az I/O port megcímzése A programozott I/O-val rendelkező rendszerekben a CPU, a memória és az I/O egységek egy közös használatú sínen (a rendszersínen) keresztül kommunikálnak. Az a címsín, melyet a memória rekeszek 2 FA4 kiválasztására használunk, szolgálhat az I/O egység kiválasztására is. A két cím megkülönböztetése céljából létezik egy memória - I/O nevű vezérlővonal, mely jelzi, hogy a címsínen az adott időpillanatban memória, vagy pedig I/O port cím található-e. Mivel két, teljesen különálló címtérről van szó, természetesen megengedett, hogy egy I/O portnak és egy memória-rekesznek ugyanazon címe legyen. A

rendszersín és az I/O egység közötti csatlakozási pontot I/O portnak nevezünk és ez egy egyedi azonosítóval, azaz címmel van ellátva. Például az Intel processzorok esetén ezen azonosítók maximális száma 65.536 lehet Minden I/O port tartalmaz egy adatregisztert, ez jelent egy kis különbséget a processzor felől nézve a memória-rekeszhez képest. Az I/O port felépítése Azokat a regisztereket, amelyeken keresztül a periféria és a processzor között kapcsolat létrehozható, I/O portoknak nevezzük. Az I/O portokat képező regiszterek az eszközvezérlőkben (I/O interface) találhatók. Az I/O portokat többnyire a következő regiszterek alkotják: parancs (command) regiszter, amely írható regiszter és egyes bitjei az eszközvezérlőnek szóló előírásokat jelentenek. Tehát a processzor a periféria felé irányuló kívánságait a periféria parancsregiszterébe írt parancsok formájában érvényesíti; adatregiszterek: az adatsín

végállomásának tekinthetők, ettől kezdve a perifériáig egyirányú a forgalom a data input és a data output regiszterhez kapcsolódóan. = adatkimenet (data output) regiszter, amely a kiírandó adatot fogadja átmenetileg; = adatbemenet (data input) regiszter, amely a beolvasott adatot tárolja ideiglenesen. állapot (status) regiszter, amely olvasható regiszter és az eszközvezérlő segítségével a periféria állapotáról ad információt a processzor számára. Az állapotregiszter minden bitje más és más állapotinformációt szolgáltat. Ha a periféria megszakítás-kéréssel jelentkezik, akkor a processzor beolvassa a periféria állapotregiszterének tartalmát, és az állapotszót kielemezve meg tudja állapítani, hogy milyen jellegű kiszolgálást kér a periféria, és a megszakítás kiszolgáló rutinnak arra a részére tér át, amely megfelel a periféria által kért szolgáltatásnak. - - - Általában szokásos ugyanazon regisztereket

közös parancs- és állapotregiszterként, illetve adatbemenetés kimenet regiszterként használni. Erre lehetőséget ad az, hogy a parancsot írni, az állapotot olvasni kell csak; ugyancsak az adatírás és az adatolvasás megoldható ugyanazon regiszteren keresztül. Az újabb fejlesztésű perifériák esetén az I/O port kibővül • jelenlét-ellenőrzési regiszterrel; • működőképesség-ellenőrzési regiszterrel; • a periféria típusának azonosítását segítő regiszterrel; • bonyolultabb perifériák esetén az egyes funkciókhoz (parancs, adat, állapot) több regiszter is tartozhat. A különálló I/O címtér megvalósítása DATA Addres READM READIO WRITEM operatívtár WRITEIO CPU I/Oport 1 3 I/Oport 2 FA4 Ekkor a READ M vagy a WRITE M memória elérési utasítás hatástalan az I/O egységekre. Különálló I/O utasításokra van szükség a READ I/O és a WRITE I/O vonalak aktiválására, ami aztán azt eredményezi, hogy az adatszó

átvitelre kerüljön a megcímzett I/O egység és a CPU között. Alapvető CPU-szintű I/O utasítások A programozott I/O-t megvalósíthatjuk néhány, akár két I/O utasítással is. Például az Intel mikroprocesszornál mindössze két explicit I/O utasítás van. Az IN X utasítás eredményezi az adatszó átvitelét az X I/O portról a CPU akkumulátorába. Az OUT X utasítás pedig az adatszót az akkumulátorból az X I/O portra viszi. Bizonyos szavak jelezhetik az I/O egység állapotát és továbbiak pedig lehetnek speciális, az I/O egységre vonatkozó utasítások. További CPU-szintű utasítások Hayes 421-423: Additional I/O instructions Egy adatátvitel végrehajtása Egy I/O-egység és a memória közötti adatátvitel két CPU-utasítás végrehajtását igényli: READ vagy READ I/O STORE Memória I/O port (DATA regiszter) CPU (Akkumulátor) WRITE vagy WRITE I/O LOAD Egy regiszternyi adat inputjának esemény-sorozata a következő: 1. az I/O cím

alapján kiválasztásra kerül a megfelelő I/O port; 2. a processzor beírja az adott egység parancsregiszterébe a kiszolgálási igényét, majd mással kezd foglalkozni; 3. az adott periféria egy regiszternyi adatot küld az adat-bemeneti regiszterbe; 4. mihelyt itt rendelkezésre áll az adat, a periféria egy megszakítás-kérést küld a processzor felé; 5. a processzor megszakítás-kezelő rutinja beolvassa a megszakítás-kérést küldő periféria állapotregiszterének tartalmát, mely a READY bit beállításával jelzi, hogy a kért adat rendelkezésre áll az adatbemeneti regiszterben; 6. a processzor beolvassa az adatbemeneti regiszter tartalmát az akkumulátorába; 7. ezután a soron következő programutasítástól függ, hogy az adott akkumulátor-tartalommal mi történik, például STORE utasítás esetén a memóriában kerül eltárolásra, ADD utasítás esetén hozzáadásra kerül az utasításban szereplő memóriacím tartalmához. Az elmondottak

alapján egy regiszternyi adat outputjának eseménysorozata önállóan könnyen felírható. Értékelés, példa Ennek a módszernek az előnye, hogy végtelenül egyszerű. Hátránya, hogy minden adatforgalom a processzoron keresztül zajlik, annak az akkumulátor névvel jelölt általános célú regiszterén keresztül s így azt erősen terheli. Például az Intel processzorok esetében. I/O porton keresztül kommunikál az IBM PC-vel kompatibilis gépeknél az egér, a modem, stb. 4.112 Memória címtérben leképezett I/O (memory mapped addressing) Elve 4 FA4 Processzor Az alaplapon lévő operatív memória + a vezérlőkártyán lévô memória A memória-címtéren belül az I/O egységgel kommunikáló címtartomány A processzor egyetlen címteret lát A memóriában leképezett I/O A memóriában leképezett I/O lényege, a megosztás, azaz hogy a memória-címtérnek egy, közös részét használhatja mind a processzor, mind pedig a periféria. Annak

érdekében, hogy a processzor adatot küldjön az adott perifériához, elegendő az, hogy az adott perifériával közösen használt memóriaterületre beírja, mint egy közönséges STORE műveletet, akár egy későbbi felhasználásra szánt adatot. A periféria aztán ugyanezt a memória-területet el tudja olvasni és így hozzájut a számára szükséges adathoz. A memóriában leképezett címzésű egységeknek ezért természetesen közvetlenül el kell érniük a memóriasínt. Ezen kapcsolat révén nagy sebességre tesznek szert és olyan gyorsaságot érnek el, amekkorát csak a memória-rendszer és a síncsatlakozása lehetőséget biztosít. Megvalósítása DATA BUS SYSTEM BUS ADDRESS BUS READ WRITE Operatív tár A processzor címterének a CPU és az I/O egység által egyaránt látható része CPU Egy memória-hivatkozású utasítás, amely X címről adatlehívást illetve X címre adattárolást eredményez, akkor válik I/O utasítássá, amikor az X

memóriacím pont egy olyan memóriacímnek bizonyul, melyet egy I/O-egység is képes olvasni. Közönséges memória-lehívási és tárolási (load és store) utasításokat használhatjuk az adatszónak az I/O-egység által is elért memória-területről vagy memória-területre történő átvitelére, tehát semmiféle speciális I/O utasításra nincs szükség. Ezt mutatja az ábra is. A memória-hivatkozási utasítások dekódolása során a CPU által aktivált READ és WRITE vezérlővonalak használatosak mind a memória elérési ciklus, mind pedig egy I/O átvitel lebonyolításakor. Ilyenkor a perifériáról vagy a perifériára történő adatmozgatás mellett elemi feldolgozási műveletek hajthatók végre. Például az akkumulátor tartalmához add hozzá a perifériáról leolvasott adatot és az eredmény kerüljön az akkumulátorba. Az utasításkészletet ez esetben a tárolókapacitás és a dekódoló áramkörök rovására növeltük. Értékelés,

példa Ez a módszer gyorsabb átvitelt biztosít, mint a különálló címterű I/O, viszont az adatátvitelt még mindig csak a processzor részvételével lehet megvalósítani. 5 FA4 A legtipikusabb memória-címtérben leképezett egység a PC képernyője. A legtöbb grafikus rendszer megengedi a mikroprocesszor számára, hogy közvetlenül megcímezze azt a frame buffert, amely a képernyőn az adott pillanatban megjelenő képet tartalmazza. Például a Motorola 6800 (8 bites), a VAX és a PDP esetében van így. 4.12 A programozott I/O működése, alkalmazható átviteli módszerek 4.121 A feltétel nélküli, közvetlen (direkt) programozott adatátvitel A következő esetekben alkalmazzuk: mindenféle feltételtől függetlenül kell az adatátvitelt végrehajtani; átvitelnél a periféria mindig adatátvitelre kész állapotban van; ellenőrzésre sem előtte, sem utána nincs szükség. semmiféle szinkronizáció nincs a processzor és a periféria között. Az

egyszerűbb esetekben alkalmazzuk, tipikus alkalmazások például: világító kijelző (LED) működtetése. érzékelők lekérdezése, leolvasása; kapcsolóállás beolvasása. Hátránya, hogy különösen kivitelnél semmi visszacsatolás nincs az adat fogadásáról, így adatvesztés következhet be. 4.122 Feltételes adatátvitel Valamilyen feltétel teljesülésétől tehető függővé az átvitel lebonyolítása: valamilyen jelzőbit (flag) előírt értéke, pl. az eszköz foglaltságának vizsgálata Ha a jelzőbit nem megfelelő az átvitelhez, a processzornak várakoznia kell a megfelelő állapot bekövetkeztéig (váró ciklus); készenléti vizsgálat azonban a processzor egyéb tevékenységének rovására megy. Így leggyakrabban a másik módszert alkalmazzák, amikor a periféria kész jelzés egy megszakítási kérést jelent a processzor számára. Természetesen mindkét módszernél a processzornak végre kell hajtania az adatátvitelt még mielőtt a

periféria a következő adatátvitelt elindítaná. Vizsgáljuk meg a két módszert részletesen: Lekérdezéses adatátvitel (polled I/O vagy "wait for flag") Amikor egy I/O utasításhoz ért a CPU - legyen az implicit (memory mapped I/O esetén egy perifériára vonatkozó READ/WRITE utasítás vagy explicit IN/OUT utasítás - azt várjuk, hogy a megcímzett I/O port legyen készenléti (ready) állapotban az utasításra való válaszoláshoz. Amennyiben nem használunk handshaking-et, azaz az I/O egység nem generál acknowledge jelet, az I/O egységnek meghatározott időtartamon belül kell átvinni az adatot az adatsínre illetve adatsínről. Hogy kiküszöböljük az adatvesztést vagy egy meghatározhatatlanul hosszú I/O utasítás végrehajtási idő esetén kívánatos, hogy a CPU ismerje az I/O egység státuszát, így az adatátvitel lefolytatása akkor következhet be, amikor a periféria egység egy ismert készenléti (ready) állapotban van. A

programozott I/O rendszereknél a CPU általában úgy van programozva, hogy az adatátvitel előtt tesztelje az I/O egység állapotát. Az állapotot meg lehet állapítani egyetlen bit segítségével, amit az I/O egység folyamatosan elérhetővé tud tenni, például valamelyik I/O portnál az adatvonalakhoz csatlakoztatott flip-flop beállításával. Az I/O egység állapotának a CPU által történő megállapítása a következő lépéseket igényli: 1) 2) 3) Az állapot-információ beolvasása; Az állapot tesztelése annak meghatározásához, hogy az egység készen áll-e az adatátvitel megkezdésére; Ha nincs kész, visszatérés az 1) lépéshez; otherwise az adatátvitel lefolytatása. 6 FA4 A következő I8080-ass program átvisz egy adatot egy I/O egységről az akkumulátorba. Azt feltételezzük, hogy az A egységet úgy csatlakoztattuk az 1 és 2 porthoz, mint azt a memory mapped I/O-nál csináltuk. Az egység státuszát folyamatosan elérjük az 1

porton, míg a kívánt adatot a 2 porton, amennyiben az állapotszó READY értéket mutat. WAIT: IN CPI Utasítás 1 READY JNZ WAIT IN 2 Megjegyzés olvassuk be az I/O egység állapotát az akkumulátorba compare intermediate a READY szót az akkumulátorral, amennyiben egyenlő, állítsuk be a Z=1, ellenkező esetben pedig a Z=0 állást. Ha Z nem egyenlő 0 (ekkor az egység nincs kész), ugorjunk a WAIT-re olvassuk be az adatszót az akkumulátorba 1. kiválasztjuk az I/O egységet; 2. ciklikusan figyeljük, amíg az kész (ready) állapotba nem kerül; 3. átvisszük az I/O egység pufferéből a szót az akkumulátorba; 4. átvisszük az akkumulátor tartalmát a memóriába; kiszámítjuk a következő memóriacímet és ellenőrizzük, hogy az egész blokk átvitelre került-e 5. 6. ha az átvitelnek még nincs vége, akkor a 2. ponttól folytatjuk, ellenkező esetben az egységet le kell kapcsolni Például egy karakter kinyomtatása: a processzor ellenőrzi a

nyomtató állapotregiszterét, illetve annak foglaltságot jelentő bitjét; ha ez foglaltságot jelöl, akkor várakozik a felszabadulásra; a processzor a kiíratandó karaktert az adatkimenet regiszterbe tölti; a processzor a parancsregiszterbe betölti a karakterkiírás parancsát; a nyomtatóvezérlő értelmezi a parancsot, foglalt jelzést állít be az állapotregiszterben; a vezérlő az adatkimenet regiszterben lévő karaktert továbbítja a nyomtatáshoz: a kiírás befejeződése után a foglaltságjelzés megszüntetése. Ennek hátrányát a következő példa illusztrálja: A processzor feladata, hogy kezelje az I/O-kat. A feladat: van egy tömbünk, amit szeretnénk kiküldeni a perifériára for i:=0 to 1023 do begin repeat until READY (periféria); SEND (periféria, A [i]; end; A ciklusmagban egy várakozás van: ha készenléti állapotba kerül, akkor a READY függvény .T értéket vesz fel s ekkor elküldi az üzenetet a perifériához. Ha ez egy 10 MIPS-es

gép, akkor csak a nyomtatás egyetlen másodperce alatt 10 millió utasítást végezhet el a CPU. Tehát ha így nézzük, hihetetlen pazarlás ezt a ciklust futtatni Tegyük fel, hogy az operációs rendszer megengedi azt, hogy több program fusson egyszerre. Minden program kap egy szeletkét a mikroprocesszor időből, s ez úgy jelenik meg számára, hogy mintha lassabban működne a processzor, de nincs tudomása arról, hogy szerinte több program fut. Megszakításos I/O-vezérlés A processzornak az átviteli feladatokra fordított idejét célszerű minimalizálni. Ezért olyan módszert kell alkalmazni, amely ezt lehetővé teszi. Ez a módszer a megszakításos adatátvitel, amelyben a periféria kezdeményezi az átvitelt. Az ilyen átvitel lebonyolításához az I/O portoknak regiszterekkel kell rendelkeznie. 7 FA4 Az átvitel kezdetén a megfelelő utasítás kiadásával a processzor jelzi az I/O eszköz számára az átvitelre vonatkozó indítási igényét. Az

I/O eszköz ezután az átvitel kezdetére alkalmas időpontot a processzor felé küldött megszakítási kérelmével jelzi. A megszakítás kiszolgálása eredményezi az adatátvitelt Ez azt jelenti tehát, hogy kiküszöböli a processzornak az interface flag-bitje az állapotának a folyamatos tesztelésre fordított időt s lehetővé teszi, hogy az I/O adatátvitel elkészültekor (complete) a hardver egy megszakítást küldjön. Ebben az esetben egy megszakítás kiszolgálási rutin fogja végrehajtani a karakter-átvitelt az interface puffer regisztere és a processzor regisztere (például az akkumulátor) között, majd a következő karakternek a periféria-interface regiszter közti átvitelét fogja kezdeményezni. Amíg ez a karakter-átvitel zajlik, a processzor más munka végrehajtása céljából szabad azzal a feltétellel, hogy mihelyt a következő karakter rendelkezésre áll az interface puffer-regiszterében, azonnal megszakítás következik be. Jó példa:

Willis: 118-119. oldal A megszakításos adatátvitel előnye a lekérdezéses átvitellel szemben, hogy a processzor lényegesen kevesebb időt tölt el az adatátvitel irányításával. Ugyanakkor továbbra is a processzoron keresztül zajlik az átvitel és a nagyobb sebességű eszközök (pl. a merevlemez) esetében már nem kellő gyorsaságú ez az eljárás. 4.13 Előnyei, hátrányai, elterjedtsége A programozott adatátvitel nem túl előnyös, mert lassú adatátvitelt eredményez és a processzort teljesen leköti. Az átvitelt mindig a processzor kezdeményezi. Más irodalomból: A programvezérelt I/O nem alkalmas a nagysebességű adatátvitelre, mivel minden egyes adat beolvasásához egy sor utasítás végrehajtására van szükség; a nagy sebességű adatátviteli egységek szinkron műveletvégzéssel rendelkeznek. Az adatátvitelt a CPU-tól független fix frekvenciájú órajel vezérli. 4.2 A DMA (Direct Memory Access) átvitel 4.21 Mikor alkalmazzuk? A

közvetlen tárhoz fordulást (DMA) a nagyobb sebességű eszközök használata és nagyobb tömegű adat átvitele esetén célszerű alkalmazni. 4.22 A DMA átvitel lényege A hardver-komplexitás egy igen szerény növelésével elérhető, hogy az I/O egység a CPU közreműködése nélkül legyen képes adatblokk átvitelére a memória felé illetve a memóriától. Ez azt igényli, hogy az I/O egység, vagy pedig a vezérlője legyen képes memória-címek generálására és adatátvitelre a memória-sín felé és síntől. Ezen kívül sín-igénylési és kiválasztási mechanizmussal is kell rendelkeznie. Továbbra is a CPU a felelős minden egyes blokk-átvitel kezdeményezéséért Az I/O egység pedig a CPU további program-végrehajtása nélkül gondozza az átviteli folyamatot. Ezt a folyamatot hívják közvetlen tárhozzáférésnek. Nagy tömegű adatforgalom Egyedi adatforgalom Operatív memória Processzor DMA-vezérlő 8 Merevlemez FA4 A DMA

átvitel lényege A közvetlen tárhozfordulásos átvitel előnye, hogy a szükséges megszakítások száma nagyságrendekkel csökken, így a processzor ideje jelentős mértékben felszabadul. 4.23 A DMA átvitel megvalósítása A DMA rendszer főbb elemeit a következő ábra mutatja, különös tekintettel a DMA számára szükséges áramkörökkel (Hayes: 427. oldal): Memória ADDRESS DATA MAR IR AC Vezérlõ egység CPU DC IOAR IODR DMAREQUEST Vezérlõ egység DMAACKNOWLEDGE IOegység Az I/O interface tartalmaz egy IODR regisztert, akár csak a programozott I/O esetén; de ezen túlmenően van egy IOAR címregiszter és egy DC (data count) nevű adatszámláló. Ezek a regiszterek lehetővé teszik az I/O egység számára az adatátvitelt a memória egy összefüggő területére. Az IOAR-t arra használják, hogy tároljuk a következő átviendő szó címét. Ez automatikusan inkrementálódik minden szó átvitele után. A DC adatszámláló regiszter

tárolja, hogy hány, még átviendő szó maradt Ez minden átvitel után automatikusan dekrementálódik és nulla vonatkozásában tesztelődik. Mihelyt eléri a nullát, az I/O egység leáll. Az I/O egységet általában felszerelik egy megszakítási képességgel is, ennek révén egy megszakítást küld a CPU felé, hogy jelezze az adatátvitel végét. A DMA vezérléséhez szükséges logikát könnyen el lehet helyezni egy IC-ben, amelyet DMA vezérlő IC-nek hívnak. Ez több I/O egység vonatkozásában képes a DMA adatátvitel felügyeletére, melyek mindegyike különféle prioritással érheti el a memóriasínt. 4.24 A DMA átvitel működése 4.241 A DMA felparaméterezése A DMA vezérlők használatakor annak több paraméterét választhatóan lehet beállítani. Ilyen lehetőségek: írási vagy olvasási műveletre van szükség; a szükséges I/O egység címe; a memória-cím kezdő-értéke, ahonnan olvasunk vagy ahova írunk; az átviendő egységek jellege

(bájt, félszó, szó.) 9 FA4 - az olvasandó vagy írandó egységek száma a sínhasználat módja (blokk-sínciklusos, cikluslopásos); a DMA vezérlő csatornáihoz prioritási értéket rendelhetünk hozzá. az átviteli kapcsolat választása. A tároló-I/O eszköz kapcsolat mellett, létrehozható memóriamemória vagy I/O-I/O eszköz kapcsolat is 4.242 A DMA átvitel módszerei azaz a sínhasználat módjai Blokkos átvitel (burst cycle mode) Ha az átvitel blokkos formájú (például winchester esetén), akkor célszerű a sínt az átvitel teljes időtartamára lekötni. Másképp: A DMA képességgel rendelkező I/O egység átviheti szavak egy hosszú blokkját egyetlen folyamatos műveletként, ezt hívják blokkos átvitelnek. A közvetlen tárhozfordulásos átvitelnél a processzor által elindított DMA vezérlő - a processzor kihagyásával - önállóan irányítja az adatátvitelt a tároló és a kijelölt I/O eszköz között. A processzor és a DMA

vezérlő közötti kapcsolat a megszakítási vonalak segítségével jön létre. A DMA segítségével bonyolított adatátvitel a következő lépésekkel írható le: Processzor oldal - - a processzor megvizsgálja az I/O eszköz állapotjelzőjét, hogy fogadni tudja-e az átviteli kérelmet. Ha nem tudja fogadni, akkor egy hibavizsgáló rutin elindításával a processzor megpróbálja megállapítani a hiba okát; a processzor kiadja az átviteli utasítást és a szükséges paramétereket (az átviendő blokk kezdőcímét, hosszát, az átvitel irányát) az előírt módon előkészíti a DMA vezérlő számára; elindítja a DMA vezérlőt. DMA oldal - - a sín előkészítése az adatátvitelre; = DMA sínkérelem (DMA REQUEST) jelzése; = a sínciklus befejezése; = a processzor engedélyezi a sín használatát (DMA ACKNOWLEDGE); a cím sínre tétele; az adat sínre tétele; a számláló csökkentése; ha nem nulla, akkor további adatok címzése, átvitele; ha

a számláló = 0, akkor a sínkérelem megszüntetése; megszakítási kérelem a processzor felé, annak jelzésére, hogy az átvitel véget ért. Processzor oldal - a processzor ellenőrzi a DMA vezérlőt az átvitel végrehajtásának sikerességéről; a sínhasználat engedélyezést megszünteti. Egy két-perifériás DMA-vezérlő példája (A Hammacherből) Átveheti a sínvezérlést és közvetlen I/O↔M adatforgalmat vezérel, általában adatblokk szinten. 10 FA4 M . M CPU sín DMA I/O(disk) . I/O(highspeedprinter) Ebben a példában a DMA vezérlőt két I/O egység vonatkozásában használjuk. ez a lemez-egység és a nagysebességű nyomtató. Ezt úgy hívjuk, hogy két DMA-csatornával ellátott vezérlő A regisztereknek tárolniuk kell a memóriacímet, a blokkhosszt, stb., így ezeket duplikálni kell, hogy egyet-egyet használhassunk minden egyes egységhez. Ugyanígy természetesen külön vezeték köti össze a DMA-t és a két

perifériát. Hogy meginduljon a DMA átvitel a lemez és a memória között, a program beírja a következő információt a lemezhez rendelt DMA-csatorna regisztereibe: memória cím; blokkhossz (az átviendő blokkban lévő szavak száma - kb. a szektor mérete)); az adatot tartalmazó blokk lemezen lévő kezdőcíme; a végrehajtandó funkció (olvasás vagy írás). Ezután a DMA-vezérlő függetlenül kezd el cselekedni, hogy végrehajtsa a specifikált funkciót. Mihelyt készen van a DMA-átvitel, ezt a DMA-vezérlő állapot-regisztere mutatja. Szintén az állapotregiszter mutatja azt is, hogy az átvitel helyesen vagy hibásan zajlott. Amíg a DMA-átvitel folyik, az a program, amely az átvitelt igényelte, nem tud futni. Ugyanakkor a CPU-t más programok futására lehet használni. Miután a DMA-átvitel megtörtént, a CPU visszakapcsolható ahhoz a programhoz, amely az átvitelt igényelte. Mint ismeretes, az operációs rendszer hatáskörébe tartozik egy program

futásának felfüggesztése és egy másik elindítása. Szintén az operációs rendszer kezdeményezi a DMA-műveletet, amikor ezt egy program így kívánja. Amikor az átvitel elkészült, a DMA vezérlő megszakítás kérő jelnek hívott vezérlőjelet küldve a sínen tájékoztatja erről a CPU-t. Amikor a vezérlő kiadta ezt a jelet, a statusz-regiszterében a "kész" (Ready) bitet beállítja. Ábra a Németh 44. oldalról Jó szöveg a Willis 120. oldalon , ábra is Cikluslopás (cycle stealing) Ha az átviendő adatok nem blokkos formájúak (például gyorsnyomtató esetén), akkor csak egy-egy adat átvitelére kell igénybe venni a sínt. Ezt az eljárást nevezik cikluslopásnak, amely tulajdonképpen a sín időosztásos használata a processzorral közösen. Másképp: Alternatív esetben az I/O egység átvihet csak egy vagy két szót, mielőtt visszaadja a CPUnak a memóriasín vezérlését. Ezt hívják ciklus-lopásnak (cycle stealing) A DMA

átvitelhez használt ciklusok átlapolhatnak a CPU-ciklusokkal. Mivel nem minden CPU-ciklus igényli a memóriasín használatát, a CPU képes lehet az utasítás végrehajtás folytatására, miután lemondott a memóriasín vezérléséről. Így lehetségessé válik a CPU műveletek és a DMA átvitel átlapolására A DMA és a megszakítási áramköröket az I/O műveletek gyorsítására és az ilyen műveletekben a CPU által játszott szerepek többségének a kiküszöbölésére használják. Minden esetben speciális vezérlővonalak mennek az I/O egységtől a CPU-hoz, melyeket általános névvel nevezzünk DMA REQUEST és INTERRUPT REQUEST névvel. Az ezeken a vonalakon érkező jelek a megfelelő töréspontnál a CPU aktuális tevékenységének felfüggesztését és a DMA vagy megszakítási igény várást jelenti. Így a CPU számára kiküszöbölésre kerül az I/O egység állapotának meghatározásához 11 FA4 szükséges rutinok futtatása. A DMA

továbbá lehetővé teszi az I/O adatátvitelt az I/O utasításoknak a CPU által történő végrehajtása nélkül. A valamelyik I/O egység által bejelentett DMA megszakítási igény a CPU-tól csak a memóriasín vezérlésének a megszakító egységhez történő átadását jelenti. A CPU átadhatja a vezérlést minden olyan művelet végén, amely ezt a sínt használja. Egy utasításciklust egy sor CPU vagy gépi ciklusra oszthatunk, amelyek közül több igényelheti a memóriasín használatát. Általánosan használt technika, hogy minden CPU ciklus végén lehetővé kell tenni a gépnek, hogy válaszoljon a DMA igényre. Például a következő utasításciklus alatt öt töréspont van a DMA megszakítások megválaszolására. Amennyiben ilyen megszakítás érkezik a CPU-hoz, vár a következő töréspontig, felszabadítja a memóriasín vezérlését és az igénylő I/O egység felé DMA ACKNOWLEDGE vezérlővonal aktiválásával jelzést küld. Fázisok:

Utasítás Utasítás Operandus fetch dekódolás fetch exec. Eredmény tárolás . Hayes: 426. old CPU ciklus EzekaDMAtöréspontok Utasítástöréspont Ezazutasításciklus A megszakítások igénylése és nyugtázása a DMA-igényekhez hasonlóan megy végbe. Viszont a megszakítás nem egy sínvezérlési igény, hanem ellenkezőleg: azt a feladatot rója ki a CPU-ra, hogy kezdje meg a megszakítási programnak nevezett program végrehajtását. A megszakítási program a legkülönfélébb feladatok végrehajtását jelentheti, mint például I/O átvitel kezdeményezése, valamely I/O egység által feltárt hibára való válasz, stb. A CPU ennek a programnak lényegében ugyanolyan módon adja át a vezérlést, mint egy szubrutinnak. A CPU a megszakítási kérésekre csak az utasításciklusok között válaszol A cikluslopásos DMA átvitel folyamata a következő: 1. 2. 3. 4. 5. A DMA vezérlő fölprogramozása: a CPU végrehajt két I/O utasítást, amely

letölti az IOAR és a DC regiszterbe a kezdeti értéküket. Az IOAR-nek az adatátvitelre szolgáló memória-régió báziscímét kell tartalmaznia. A DC-nek pedig az átviendő egységek (bájt, félszó, szó) számát kell tartalmaznia. Amikor az I/O egység kész az adatátvitelre, az aktiválja a CPU DMA REQUEST vezérlővonalát. A CPU vár a következő DMA töréspontig Ezután lemond a memória adat és címsín vezérléséről és aktiválja a DMA ACKNOWLEDGE jelzést. Vegyük észre, hogy a DMA REQUEST és a DMA ACKNOWLEDGE lényegében a BUS REQUEST és a BUS ACKNOWLEDGE vonal a memóriasín számára. A szimultán DMA megszakítások kezelése a sín prioritásos vezérlési technikáknál megtárgyaltakhoz hasonlóképpen oldhatók meg. Most az I/O egység és a memória között megvalósul a közvetlen adatátvitel. Miután egy adategységet átvittünk, az IOAR és a DC sorrendben inkrementálódik és dekrementálódik Amennyiben a DC-t nem dekrementáltuk

nullára, de az I/O egység nincs ready állapotban a következő adat küldésére vagy fogadására, visszaadja a vezérlést a CPU-nak a memóriasín felszabadításával és a DMA REQUEST vonal deaktivizálásával. A CPU a DMA ACKNOWLEDGE vonal deaktiválásával és normál művelet visszajelzéssel válaszol. Ha a DC nullára dekrementálódik, akkor az I/O egység ismét lemond a memóriasín vezérléséről. Ez küldhet egy interrupt jelzést a CPU számára A CPU válaszolhat az I/O egység leállításával vagy egy új I/O átvitel kezdeményezésével. 4.25 A DMA átvitel PC-s környezetben 12 FA4 • Az első PC-kbe 1 db Intel 8237A típusú DMA-vezérlő volt beépítve, mely 4 db 8-bites, egymástól függetlenül üzemelő DMA csatornával rendelkezett. • A PC AT esetében már 2 db Intel 8237A típusú DMA vezérlőt építettek be, melyek egyikének egy csatornája a másik kaszkádosítására szolgál. Így az ISA bővítősín már 4 db bájt szervezésű

és 3 db 16 bites szószervezésű DMA csatornát tartalmaz. A bájt szervezésű átvitel biztosítja a kompatibilitást a bájt szervezésű perifériákkal. • A modern PC-kben a PCI kártya bridg-e és chipset-je DMA vezérlőként működve emulálja a PC AT két DMA-vezérlőjét. Amikor egy program vagy az operációs rendszer DMA-átvitelt kér, akkor PCI bridge értelmezi az Intel 8237A típusú DMA-vezérlő nyelvén érkező felkérést. 291 oldal Ma már egyébként sokszor a sokszor a 2 db Intel 8237A típusú DMA vezérlő emulátorának mind a 7 csatornáját 16-bites formábsn valósítják meg. • A Win95 megmutatja az aktuális DMA-csatorna hozzárendeléseket (System icon Control Paneljében kiválasztjuk a Computer-t a Devixe menuben és megnyomjuk a Properties gombot). 4.3 IOP A továbbiakban a logikai szintű (általánosított) periféria-kezeléssel foglalkozunk. Ezt a fejlettebb mikroprocesszorok és számítógépek esetén alkalmazzák. A periferiális

eszközök sokfélesége miatt a számítógépek beviteli/kiviteli rendszere nem kötődik meghatározott eszközök használatához, hanem általánosított beviteli/kiviteli eljárásokat és illesztési felületeket biztosítanak számukra. Ezen eljárások lényeges sajátossága, hogy a központi egység és a perifériák nagy sebességkülönbsége miatt általában nem használnak közvetlen processzorirányítást, hanem autonóm működésen alapulnak. (Gyakran alkalmaznak olyan többprocesszoros struktúrákat, melynél egy számítógép perifériaként csatolódik a másikhoz. Ilyen esetben a sebességkülönbség általában nem túl nagy, azonban a szóban forgó két processzor időzítése általában különböző, ekkor sem célszerű a közvetlen processzor-irányítás. A beviteli/kiviteli folyamatok kezelésére háromféle utasítástípus szolgál: vezérlőutasítások; periféria-állapot lekérdező utasítások; adatátviteli utasítások. A legegyszerűbb

mikroprocesszoros rendszerektől eltekintve a berviteli/kiveiteli hardver részleteit az operációs rendszer jórészt eltakarja. A csatornára és az I/O processzorra alapozott perifériakezelés lényege, hogy rögzített feladatú modulok hajtják végre, így a processzort felszabadítják a periféria részletes kezelése alól, melyet az csak megfelelő szoftver segítségével tudna végrehajtani. Ezek tehát intelligens, programozható eszközök, melyek a processzortól egy parancssorozatot véve a továbbiakban autonóm módon működve hajtják végre a periféria-kezelést. Az I/O processzorok az átvitel szervezésén túlmenően meglehetősen általános adatfeldolgozási képességekkel is rendelkeznek. Ez különbözteti meg őket a csatornáktól, melyek elsősorban a bevitel/kiviteli műveletek autonóm irányítására szolgálnak. Tehát a csatorna felfogható egyszerűsített I/O processzorként is. 13 FA4 Az IOP lényege : CPU program I/O program

Operatív tár CPU IOP kommunikációs régió rendszersín CPU IOP I/O sín I/O egységek A CPU és az IOP megosztja a hozzáférést a közös operatív tárhoz. A memória önálló programot tartalmaz a CPU és az IOP számára, ezen kívül rendelkezik egy olyan régióval is, mely üzenetek formájában információkat küld a két processzor között. A CPU például ide helyezheti az IOP által végrehajtandó program címét, vagy a használni kívánt I/O egység címét. Még közvetlenebbül 14 FA4 kommunikál egymással a CPU és az IOP a speciális vezérlővonalaikon keresztül. Ez a DMA-hoz hasonlóan a rendszersín arbitrálására, lefoglalására szolgál. 4.4 Adatkommunikációs processzor Morris Mano: 463. oldal 4.5 A külső illesztőfelületek A perifériák egy része a nagyobb méretük vagy a speciális funkciójuk miatt nem közvetlenül a számítógép bővítősínére, hanem egy külső illesztőfelületre csatlakozik. Ez lehet • szabványos

soros port; • szabványos párhuzamos port vagy • sínszerű SCSI felület. 4.51 Pont-pont vagy multipont illesztők Az illesztők fontos jellemzője, hogy pont-pont vagy multipont csatlakozást biztosít-e? A pont-pont csatlakozás egy kábellel köti össze a számítógépes rendszert és a perifériát. Az IBM PC-vel kompatibilis gépeknél ez jelenti a tipikus megoldást, így csatlakozik a számítógéphez például a billentyűzet, az egér, a nyomtató, a modem, stb. Viszont a multipont csatlakozások jelentik a jövő irányát. A multipont illesztők lényegüket tekintve külső sínek, mivel ugyanazon logikával működnek, mint a sínrendszer. A mai párhuzamos illesztők közül például ilyen a merevlemez-vezérlő, mely tipikusan két merevlemezt képes vezérelni, a hajlékonylemez-vezérlő, vagy a SCSI vezérlő, továbbá a multimédia vezérlő, mely alkalmas CD-ROM, audio és video csatlakoztatására. A korszerű soros illesztők között is találunk

multipont csatlakozóra példát: ezek közé tartozik az USB és az IEEE-1394 szabvány. 4.52 A soros és a párhuzamos illesztő Az első kettő megvalósítása PC-környezetben • kezdetben önálló kártyaként; • később az árcsökkenések eredményképpen már közös I/O kártyára integrálták őket; • napjainkban a további árcsökkenések eredményeképpen már az alaplapra vannak integrálva. Érdekességképpen viszont megemlítendők az 1989. júliusi maximális árak: Típus RS-232 soros kártya Centronics párhuzamos kártya Multi I/O (1 soros + 1 párhuzamos) Forgalmazó Műszertechnika Microsystem Microsystem Ár (ezer Ft) 24 6 18 Összehasonlításul akkor egy winchester nélküli, színes monitorú XT átlagára 123 ezer, ugyanez 20 Mbájtos winchesterrel 164 ezer, ugyanez 286-os processzorral 195 ezer és 386-os processzorral pedig 430 ezer forint volt. 4.521 Soros (serial) adatátvitel Elve Ennél az adatátvitelnél az egyes biteket ugyanazon a

vezetéken "sorban" egymás után, tehát időben eltolva továbbítják a két eszköz között. A számítógépes rendszer Illesztő Periféria Puffer 15 FA4 10.5 ábra: A soros átvitel A 10.5 ábrán bemutatott soros átvitel lényege, hogy csupán egyetlen adatátviteli vonal létezik az illesztő és a periféria között, ezért egyidejűleg csupán egyetlen bit átvitele lehetséges. Egy bájt illetve egy szó valamennyi bitjének átvitele csak libasorban, egymás után, azaz a nevének megfelelően sorosan lehetséges. Bár ez nyilvánvalóan lassabb átvitelt eredményez, mint a párhuzamos, az előnye viszont a zavarállósága: akár 50-100 méterre is biztosítható a kapcsolat. A nyolcvanas évek igen magas árainál még a soros csatlakoztatás jelentős előnye volt, hogy kevesebb vezetéket igényelve sokkal olcsóbb volt, mint a párhuzamos. Jelenleg az árkülönbség már csekélyebb, s így csak a nagyobb távolságú átvitel esetén motiválja

a választást. Értékelése A rendszer előnye: kevés vezeték, így olcsóbb; a külső zajoktól jobban védhető, mint a párhuzamos esetén; mindezek lehetővé teszik, hogy nagyobb távolságra is biztonsággal továbbítsuk az adatainkat. A rendszer hátránya a lassúság a párhuzamoshoz képest. Alkalmazása Az IBM-kompatibilis gépeknél napjainkban a COMM1-nek nevezett portra tipikusan az egeret csatlakoztatjuk, de soros portra csatlakozik az adatátviteli célokat szolgáló modem s csatlakoztathatunk ide nyomtatót is, mivel azok jelenleg általában biztosítják mind a soros, mind pedig a párhuzamos csatlakoztatás lehetőségét. Speciális csatlakozóval ellátott soros átvitellel csatlakozik például a billentyűzet a PC-vel kompatibilis gépekhez. Fajtái Az RS-232C vagy CCITT V.24 Talán a leggyakrabban használt interface szabvány az RS-232C vagy CCITT V.24 javaslat Ez a soros átvitelű egységek csatlakoztatására szolgál, mind a szinkron, mind pedig az

aszinkron vezérlésűekére, és széles körben használják mind a számítógép-perifériák, mind a videoterminálok és a modemek körében. (részletesen lásd: Hammacher 493-494) Szintén létezik szabványosított csatlakozása (RS-232C), s a mai PC-vel kompatibilis gépeket általában kétféle szabványosított csatlakozású soros porttal látják el. Az első, az úgynevezett COMM1 port 9 tűs csatlakozással rendelkezik, a második, a COMM2 pedig a párhuzamos portnál már említett 25 tűs DB25-tel. Az átviteli sebességet ma általában az átvitelt felügyelő szoftverben állítjuk be, az átvitel körülményeit, lehetőségeit figyelembe véve. A mai tipikus átviteli sebességek, bit/másodpercben mérve: 2.400, 4800, 9600, 14400, 38400, 57600 Mivel az adatbiteken kívül különféle vezérlőbiteket (paritás-ellenőrzés, stop, start) is továbbítani kell, ezért egy 9600 bit/másodperc átviteli sebesség mintegy 800 bájt/másodpercnek felel meg.

Universal Serial Bus (USB) Universal Serial Bus (USB) szabványt jelentett be egyszerre és együtt a Compaq, a Digital, az Intel, a Microsoft, a NEC, és a Northerm Telecom 1995. márciusában A szabvány a személyi számítógépekre vonatkozik, szabadon felhasználható és mindenki számára elérhető. Fő célja a számítógép, valamint a perifériák és a telefon közti összeköttetés egyszerűsítése. Lényege a "Dugd be és rajta!" stílusú részegység-konfigurálás kiterjesztése minden elképzelhető berendezésre, amit csak a tulajdonosa össze 16 FA4 akar kötni a személyi számítógéppel. Azokon a számítógépeken, amelyekbe beépítik az USB-t, szoftverből, annak kikapcsolása vagy a rendszer újratöltése nélkül lehet majd elengedni és visszahívni pl. a nyomtatót és a lapolvasót Ugyanakkor az USB csatlakozóaljzatba be lehet majd dugni a botkormánytól a billentyűzetig, mindent. Külön eszközök igénybevétele nélkül lehet

majd a telefonon beszélgetni, videózni és adatállományokat küldözgetni egyszerre. Az Inteltől kapott tájékoztatás szerint az USB másodpercenként 12 megabitet képes mozgatni szinkron és aszinkron üzemmódban, mely értéket a soros bemenetek ma szokásos 115 kilobitjével kell összevetni. Március vége óta minden minősített hardver és szoftverszállító megkaphatja a 09 kiadás sorszámát viselő leírást., s az ő visszajelzéseik alapján még 1995-ben elkészül az 10 kiadás A részletek megtalálhatók a http./WWWteleportcom/-USB INternet címen Míg a soros port általános hátránya az alacsony sebesség, az átviteli nehézségeket eredményező kábelezés és a korlátozott számú port, az 1996-ban bevezetett USB (Universal Serial Bus) mindhárom irányban kiutat mutat: 12 Mbit/másodperc átviteli sebesség mellett hibatűrő kábelezést és gyakorlatilag korlátlan számú csatlakozási pontot. A hibatűrő kábelezést például egy négyerű

vezetékkel, a csatlakozásokat pedig egy bemenet - két vagy három kimenet felépítésű csomópontokkal biztosítja. IEEE-1394 Az IEEE-1394-es szabvány a jövő soros portjaként meghirdetve azt a maximális célt tűzte ki: az IBM PC-vel kompatibilis gépek hátoldaláról el kívánja tüntetni azt a csatlakozási felület-erdőt, amit a jelenlegi gépeknél láthatunk, s egyetlen csatlakozási ponttal kívánja kiváltani a párhuzamos portot, az SCSI portot, a lokális hálózati csatlakozást, sőt még a video portot is. Ez már nem egy egyszerű port, ez már egy komplex kommunikációs rendszer, mely saját átviteli protokollal rendelkezik. A minimális átviteli sebessége 100 Mbit/másodperc, ami a helyi sín sebességével vetekszik és valóban alkalmassá teszi akár merevlemez egy csatlakoztatására is. Jelenlegi formájában maximum 63 egységet képes láncba fűzve, egymás után csatlakoztatni a számítógéphez. Érdekességképpen meg kell jegyezni, hogy az

IEEE-1394 nem csupán a számítógép- és periféria-gyártók tetszését nyerte meg, hanem a szórakoztató elektronikában is népszerűvé vált: a digitális videokamerák, fényképezőgépek, videolejátszók és televíziók csatlakozójaként. IrDA Természetesen a soros port fejlesztésével is foglalkoznak. Az IrDA (Infrared Developers Association - Infravörös Fejlesztési Szövetség)) néven 1994 közepén bevezetett és azóta rohamosan terjedő szabvány főleg a hordozható számítógépek tulajdonosok életét könnyíti meg. Kiküszöböli az asztali géphez való csatlakoztatáshoz szükséges vezetéket. A számítógép elején lévő kis sötét ablak jelzi ezen csatlakozási lehetőséget, s így az ember számára láthatatlan infravörös fény segítségével kommunikálhat a két gép egymással. Sőt! Ugyanezen technológia segítségével lehet csatlakozni a nyomtatóhoz vagy a modemhez is! 4.521 Párhuzamos (parallel) adatátvitel Elve Az adatszó

minden bitje egyszerre kerül átvitelre. A párhuzamos adatközvetítés azt jelenti, hogy az egyes bitek egyszerre, egymás mellett több vezetéken haladhatnak. Az adatvezetékek száma megegyezik az egyszerre átvihető bitek számával. Ez a szám általában követi a gép szóhosszának alakulását. A számítógépes rendszer Illesztő Periféria Puffer 17 FA4 A párhuzamos átvitel A párhuzamos átvitel nevét onnan kapta, hogy ahány vezetékből áll, annyi bitet tud egyidejűleg, azaz párhuzamosan továbbítani. Előnye a viszonylag nagyobb sebesség, hátránya, hogy zavar-érzékeny A vonalak ugyanis párhuzamosan, viszonylag közel futnak egymáshoz, így van lehetősége bizonyos interferenciának is. Nagyobb távolság áthidalása esetén az interferencia valószínűsége növekszik, s a vezetékek hosszából adódóan az egyes bitek késleltetése is különböző lehet. Ezért az ajánlott maximális távolság 4-6 méter. Értékelése A rendszer

előnye: mivel egyszerre több bit vihető át, ezért sebessége nagyobb, mint a "konkurens", soros átvitelé. A rendszer hátrányai: sok vezeték kell a megvalósításához, ezért drágább; mivel több vezetéken egymás mellett haladnak az adatok, így azok főleg nagyobb távolság esetén zavarhatják egymást. Alkalmazása A párhuzamos illesztési lehetőséget jelenleg leggyakrabban a nyomtató csatlakoztatására használjuk. Ezen túlmenően azonban a párhuzamos porton keresztül lehetőség van két PC összekötésére is. A kapcsolat létrehozásához szükséges szoftver-hátteret például a Norton Commander szolgáltathatja. Ezen keresztül aztán az egyik gépből láthatjuk a másik gép merevlemezét, sőt állományokat is másolhatunk a vezetéken keresztül az egyik gépből a másikba Fajtái Centronics Az IBM PC-vel kompatibilis gépek szabványosított hivatalosan DB25 típusú csatlakozónak, népszerű nevén Centronics csatlakozónak nevezett

csatlakozóval rendelkeznek. Ez a nyolcvanas évek elején még csak egyirányú kapcsolatot biztosított, mivel eredetileg kifejezetten a nyomtató egyszerű csatlakoztatására fejlesztették ki. IEEE-1284 1987-ben, a hordozható gépek terjedésével született meg az igény a kétirányú kapcsolat biztosítására, hiszen így a hordozható gép és az irodai gépek igen egyszerűen összekapcsolhatókká váltak. Az első, gyorsan megszületett, ám viszonylag lassú megoldást (négy bit az egyik irányba, négy a másikba) 1992-ben követte a professzionális változat (mindkét irányba 8 bit), melyet IEEE-1284 éven szabványosítottak. Ennél is érvényesült az IBM PC-knél szinte általánosan követett gyakorlat, mely szerint az új megoldások biztosították a régivel való kompatibilitást, így ez a szabvány képes hagyományos üzemmód biztosítására is, a korábbi elvek szerint kialakított perifériák csatlakoztatására. Azonban, amennyiben a perifériát

már az új szabványnak megfelelően alakították ki, akkor rugalmasan választható ki a kialakított öt üzemmód valamelyike. A választás a PC és a periféria előzetes, kölcsönös párbeszéde alapján történik, egymás lehetőségeinek és igényeinek tisztázásával. A választott üzemmódnak megfelelően dinamikusan változik az egyes vezetékekhez rendelt jelek kiosztása, s megkezdődhet a kommunikáció. Míg a hagyományos, Centronics csatlakozóval mintegy 100 Kbájt/másodperc átviteli sebességet lehetett elérni, az új szabvány szerinti sebesség 2 Mbájt/másodperc. Az új sebesség-tartomány már lehetővé teszi a szabványos csatlakozón keresztül illesztett perifériák választékának bővülését, s a hagyományosnak számító nyomtató illetve gép-gép kapcsolat mellett például már hajlékonylemezes egységek külső, szabványosított csatlakoztatása is lehetővé vált. Az IBM PC-vel kompatibilis gépek ma alapkiépítettségként

rendelkeznek legalább egy, kétirányú kapcsolatot biztosító párhuzamos átvitelt nyújtó általános célú párhuzamos porttal. Ez ma még általában a hagyományos Centronics csatlakozást jelenti, de várható az új IEEE-1284-re való fokozatos áttérés. 18 FA4 4.53 Sínszerű külső illesztőfelület: SCSI SCSI sín rendszersín SCSI sínvezérlő I/O egység I/O egység SCSI sínlezáró A SCSI átvitel Népszerű példája a párhuzamos, multipont átvitelnek az SCSI (Small Computer System Interface kisszámítógép rendszer-illesztő) (ejtsd: szkázi) illesztő. Az elődje még 1981-ben jelent meg, a PCvilágban 1986-ban szabványosították, ma inkább SCSI-1 néven emlegetve Ez egy 8-bites párhuzamos átvitelt jelentett, ami végső formájában 10 Mbájt/másodperc átviteli sebességet biztosított. 1991-ben az SCSI-2 néven megjelent újabb változatának legfőbb érdeme, hogy 16 illetve 32-bites párhuzamos átvitelt biztosított, így 20 illetve

40 Mbájt/másodperc átviteli sebességet ért el. Az SCSI-3 szabvány már egy kiterjedt gyűjtőfogalom, melynek egyes részeit önállóan publikálják. Az egyik legszembeötlőbb újdonsága, hogy függetleníti a hardvert a szoftvertől, s így azok önálló fejlődési útra léphetnek. A másik, hogy az eddigi egyetlen helyett négyféle kábelezési rendszert engedélyez, s például az FC-AL (Fibre Channel Arbitrated Loop = üvegkábel foglalású áramkör) már 100 Mbájt/másodperc átviteli sebességet biztosít. Ami viszont mindhárom SCSI szabványban közös, az eszközök konfigurálása. Minden SCSIeszköznek ugyanis két csatlakozási pontja van Az egyikbe kell dugni a bemenő kábelt, a másikba pedig a következő eszközhöz menő kimenő kábelt. Így a láncba fűzött SCSI-egységeket végül hozzácsatlakoztatjuk a számítógéphez. Minden SCSI-eszköz önállóan működik, és mind a számítógépes rendszerrel, mind pedig egymás között képesek

adatátvitelt biztosítani. Az utóbbira példaként megemlíthetjük, hogy egy merevlemez egység készíthet biztonsági másolatot egy mágnesszalagos egységre mégpedig úgy, hogy ebben az adatátvitelben nem vesz részt a számítógép központi processzora. Ez a példa rögtön rámutat az SCSI előnyére, viszont meg kell jegyezni, hogy a magasabb intelligenciának ára van: maga az SCSI-kártya is elég drága s az SCSI perifériák is drágábbak a más illesztővel rendelkező, hasonló teljesítményű perifériáknál. Tartalom 4. I/O RENDSZER - A PERIFÉRIÁK KEZELÉSE 1 4.0 Az I/O fajtái 4.01 A CPU részvételével: programozott I/O 4.02 A CPU kiiktatásával: DMA 4.02 Speciális I/O processzorral 1 1 1 2 4.1 Programozott I/O 4.11 Az I/O címzés 4.111 A különálló I/O címtér A különálló I/O címtér elve Az I/O port megcímzése Az I/O port felépítése A különálló I/O címtér megvalósítása Alapvető CPU-szintű I/O utasítások További

CPU-szintű utasítások Egy adatátvitel végrehajtása Értékelés, példa 2 2 2 2 2 3 3 4 4 4 4 19 FA4 4.112 Memória címtérben leképezett I/O (memory mapped addressing) Elve Megvalósítása Értékelés, példa 4.12 A programozott I/O működése, alkalmazható átviteli módszerek 4.121 A feltétel nélküli, közvetlen (direkt) programozott adatátvitel 4.122 Feltételes adatátvitel Lekérdezéses adatátvitel (polled I/O vagy "wait for flag") Megszakításos I/O-vezérlés 4.13 Előnyei, hátrányai, elterjedtsége 4 4 5 5 6 6 6 6 7 8 4.2 A DMA (Direct Memory Access) átvitel 4.21 Mikor alkalmazzuk? 4.22 A DMA átvitel lényege 4.23 A DMA átvitel megvalósítása 4.24 A DMA átvitel működése 4.241 A DMA felparaméterezése 4.242 A DMA átvitel módszerei azaz a sínhasználat módjai Blokkos átvitel (burst cycle mode) Egy két-perifériás DMA-vezérlő példája Cikluslopás (cycle stealing) 8 8 8 9 9 9 10 10 10 11 4.3 IOP 13 4.4

Adatkommunikációs processzor 15 4.5 A külső illesztőfelületek 4.51 Pont-pont vagy multipont illesztők 4.52 A soros és a párhuzanos illesztő 4.521 Soros (serial) adatátvitel Az RS-232C vagy CCITT V.24 Universal Serial Bus (USB) IEEE-1394 IrDA 4.521 Párhuzamos (parallel) adatátvitel Centronics IEEE-1284 4.53 Sínszerű külső illesztőfelület: SCSI 15 15 15 15 16 16 17 17 17 18 18 19 20 FA5 5. A megszakítási rendszer 5.1 Bevezetés A megszakítás fogalma A számítógépnek rugalmasan reagálnia kell a külvilág eseményeire. Erre a célra szolgál a számítógép megszakítási rendszere. A megszakítás bekövetkezésekor az éppen futó programról vezérlés ideiglenesen átadódik egy másik program számára, amely kiszolgálja a bekövetkezett eseményt. A megszakítást kiszolgáló program lefutása után pedig a megszakított program végrehajtása a következő utasításától kezdve folytatódik. Egy korszerű nagyteljesítményű

számítógép-rendszerektől pedig már nem csupán egy egyszerű reagálást kívánunk meg, hanem ezen túlmenően: hogy folyamatosan változó körülmények között is optimálisan dolgozzanak. Az optimális működés jellegét a rendszer sajátosságai döntik el - egy személyi számítógép esetén például érzékelnie kell, ha valamit a billentyűzetén begépelünk; az azonos idejű (real-time) és folyamatirányítási (process control) rendszerek esetén a gyors válaszadási idő az elsőrendű feladat esetleg az eredő hatásfok rovására is. Például határértéktúllépés esetén mindennél fontosabb a vészjelzés adása illetve az automatikus, azonnali beavatkozás. A megszakítás születése A megszakítási rendszereket elsődlegesen az I/O műveleteknek és a velük átlapoltan végrehajtott számítási művelteknek a összehangolására hozták létre. A megszakítás célja az volt, hogy egy I/O tevékenység beindítása után a processzornak ne

kelljen várakoznia az I/O művelet befejeződésére, hanem ezalatt más feladat vagy feladatrész végrehajtásába foghasson. Viszont az I/O tevékenység befejeződéséről valahogy értesítenünk kell a processzort. Ezért az I/O tevékenység befejeződése egy megszakítás-kérő jelet generál, amely az éppen végrehajtás alatt álló utasítás befejeződése után, a végrehajtásra következő utasítás megkezdése helyett megszakítást (vezérlés-átadást) hoz létre egy, a megszakítás konkrét okától (forrásától) függő címre, a szükséges megszakító rutinra. Egyúttal automatikusan (hardverrel) tárolódnak a megszakított programnak a megszakítás pillanatában fennálló legfontosabb állapotjellemzői és regiszterei (együtt: kontextus), hogy azok később, a megszakított program folytatásakor visszaállíthatók legyenek; valamint beállítódnak a megszakító rutin induló állapotjellemzői és regisztertartalmai. A megszakító rutin

végén megtörténik a vezérlés visszaadása a megszakított programra: például az utasításszámláló új tartalma a megszakított program végrehajtásra következő utasításának címe lesz. Terminológia Maga a megszakítás (interrupt) szó IBM eredetű, ezt használja az Intel is. A Motorola 68000 terminológia szerint ezt kivételnek (exceptions) hívják. A VAX terminológia viszont megkülönbözteti egymástól a megszakítást és a kivételt. 5.2 A megszakítások okai vagy forrásai A megszakítási rendszert az eredeti célon, az I/O tevékenységek és feldolgozási tevékenységek szinkronizálásán kívül ma már egyéb célokra is felhasználják. A megszakítási okok vagy megszakítási források a következőképpen osztályozhatók: 5.21 Géphibák Ebbe az osztályba az automatikus hibafigyelő áramkörök jelzései tartoznak: A hibafigyelő áramkörök egy része általában hibajelző kódok alkalmazásával (pl. paritáskontrollal) tárja fel az

adatátviteli vonalak, CPU-regiszterek vagy az operatív memória hibáit FA5 - A hibafigyelő áramkörök másik része az energia-ellátás és a klimatizáció-hűtés zavarai esetén jelez. 5.22 I/O források Ide tartoznak a perifériák megszakítás-kérő jelzései, amelyek általában az I/O tevékenységek befejeződésekor vagy üzenetközlést kezdeményező perifériák bevezető állapotjelzései hatására alakulnak ki. 5.23 Külső források Ebbe az osztályba tartoznak a külső eszközök által generált megszakító jelek (pl. a régi gépeknél a kezelőpult megszakító-kulcsának lenyomása vagy a mikrogépeknél a reset-gomb benyomása, összekapcsolt gépek esetén a másik gép jelzése). 5.24 Programozási források Azok a megszakítás-kérések, amelyek ebbe az osztályba tartoznak, mindig valamilyen utasítás végrehajtása vagy végrehajtásának megkísérlése következményeként alakulnak ki. E megszakítások célja általában a

programozási hibák jelzése vagy kiküszöbölése, de a programozó bizonyos célokból szándékosan is előidézhet ilyen típusú megszakításokat. A programozási okok részletesebb felbontása a következő: A memóriavédelem megsértése Ha az operatív memóriában egy időben több, egymástól független feladat programja tárolódik, szükség van azok védelmének megszervezésére, elsősorban véletlen felülírás ellen. Különféle védelmi eljárások alakultak ki, amelyek a memóriák tárgyalásánál kerülnek ismertetésre. Ha egy program futása során "idegen" címre hivatkozik, az alkalmazott hardver memória-védelem működésbe lép A tényleges tárkapacitás túlcímzése Ha a tényleges, fizikailag meglévő tárkapacitás kisebb, mint az utasítás végrehajtása során elméletileg kiadható legnagyobb cím, előfordulhat a tényleges tárkapacitás véletlen túlcímzése. Ebben az esetben szintén megszakítás következik be. A

címzési előírások megsértése A bájt-szervezésű gépeknél az utasítások hossza általában 2, 4 vagy 6 bájt lehet. Ez szokásosan együtt jár azzal a címzési előírással, hogy utasítás csak páros című bájttal kezdődhet. Ha például egy ugró utasítás páratlan címre ugratne, ez programhibát jelent és ezért végrehajtás helyett megszakítás történik. Hasonló címzési előírás lehet például hogy dupla szó csak 8-cal osztható című bájttal kezdődhet. Aritmetikai-logikai műveletek miatti megszakítások Ide tartoznak az integer és a lebegőpontos számok túlcsordulásai. 5.3 A megszakítások csoportosítása Szinkron - aszinkron megszakítások Azon megszakítások, amelyek a programnak ugyanazon adatokkal való végrehajtása során mindig ugyanott lépnek fel, szinkron megszakításoknak nevezzük. Ilyen például az integer túlcsordulás Az aszinkron események viszont véletlenszerűen következnek be. Például az I/O egység kérte

megszakítások, a hardver-hibák. Az utasítások végrehajtása között illetve közben fellépő megszakítások 2 FA5 Az utasítások végrehajtása között fellépő megszakítások az éppen végrehajtott utasítás eredményeképpen következnek be (például túlcsordulás, page fault, tárvédelmi hiba). A kezelése rögtön az utasítás végrehajtása után elindulhat, s a programfutás eredményessége aztán a kezelés eredményétől függ; Az utasítások végrehajtása közben fellépő megszakítások valamely utasítás végrehajtása alatt (tehát nem az utasítás-végrehajtási ciklussal szinkronban) merülnek fel. Ilyenek például a hardvermegszakítások Ekkor az esetek többségében először befejezésre kerül az éppen végrehajtás alatt álló utasítás, s csak utána kezdődik meg a megszakítás kiszolgálása. A felhasználó által explicit kért és nem kért megszakítások A felhasználó által explicit kért megszakítás például az

operációs rendszer szolgáltatásának meghívása, a nyomkövetés vagy az utasítás töréspont. Véletlenszerűen fellépő A felhasználó által nem kért megszakítás például az integer túlcsordulás, az I/O egység megszakítás, a hardver hiba. A megszakított program folytatódik vagy befejeződik A megszakított program folytatódik például I/O egység igénye alapján történő megszakítás, operációs rendszer szolgáltatásának meghívása esetén. A megszakított program futása befejeződik hardver hiba esetén. Felhasználó által maszkolható vagy nem maszkolható megszakítások A felhasználó által maszkolható például a nyomkövetés, a töréspont. Nem maszkolható viszont az I/O egység megszakítási kérése, az operációs rendszer szolgáltatásának meghívása. 5.4 Egy megszakítás kiszolgálásának általános folyamata A program-megszakítás lehetősége egy számítógépnek olyan tulajdonsága, amelynek segítségével egy program

bármely utasítás után leállítható, majd tetszőleges számú utasítás végrehajtása után, a program a soron következő utasításától újra indítható. A megszakítási rendszert miért tárgyaljuk a fizikai architektúra keretében? A kezelésük vegyesen, hardver és szoftver úton történik, s a szoftver keretében nincs igazán mód a hardver-vonatkozások ismertetésére. 5.41 A megszakítás előkészítése 1. valamilyen egység megszakítási kérést bocsát ki, azaz aktiválja az INTR vezérlővonalat; 2. a megszakítás beérkezésekor a számítógép az éppen folyó utasítást még végrehajtja: 3. minden utasítás-töréspontban a vezérlőegység megvizsgálja, hogy van-e megszakítás Észleli, hogy van megszakítás. Az INTACK vezérlővonal aktiválásával jelzi a megszakítási kérés elfogadását, mire a megszakítást kérő deaktiválja az INTR vonalat; 5.42 A megszakítás kiszolgálásának a hardver által végzett feladatai 1. Ekkor a

processzor elkezdi annak az előkészítését, hogy az eddig futó program helyett a megszakítást kiszolgálását végző programot kezdhesse végrehajtani. Ennek során a programtól általában függetlenül (tehát hardver úton) egy erre a célra kijelölt memória-tartományba, a veremtárolóba kimenti azokat az állapot-információkat (a PC és az állapotregiszterek tartalma), amelyek a megszakított programnak a megszakítás bekövetkezése utáni folytatásához szükségesek. 2. Ezután a számítógép rátérhet mindazoknak a műveleteknek a végrehajtására, amelyek érdekében a megszakítás bekövetkezett. Ennek érdekében be kell töltenie a megszakítást feldolgozó program első utasításának címét a PC-be, továbbá esetleg, tehát nem minden architektúra esetén be kell töltenie a megszakítást kiszolgáló program futásához szükséges állapot-információkat. Ezen két adatcsoport megszerzési módja architektúra-függő. Ez benne lehet az

eredeti megszakítási kérésben 3 FA5 vagy esetleg a processzornak kell kezdeményezni - akár a megszakítást feldolgozó programban - a megszakítást kérőnél ezen adatok rendelkezésre bocsátását. Szintén architektúra-függően a megszakítást kérő program lehet egyetlen program az összes megszakítás feldolgozására, lehet egyegy önálló program minden egyes megszakítás-típushoz, stb. Mihelyt a PC-be betöltésre kerül a megszakítást kiszolgáló program első utasításának címe, a processzor készen áll a megszakítást kérő rutin futtatására. 5.43 A megszakítás kiszolgálásának a szoftver által végzett feladatai 1. Azonban míg az állapottér információinak mentését a hardverre bíztuk, még hátravan a megszakított program adatterének (pontosabban az aktuális regiszter-tartalmának) mentése, hiszen a regisztereket a megszakítást kiszolgáló program is használhatja s ezáltal tönkretenné a megszakított programok által

beállított értékeket. Általában a megszakítást feldolgozó program első utasításai pont ezen regiszter-tartalmak mentését végzik, szintén a veremtárolóba. 2. Amennyiben egyetlen megszakítás-kiszolgáló program van, vagy egy megszakítás-típushoz több egység is tartozik, először beazonosítja a megszakítás-kérő egységet. 3. A megszakítás tényleges kiszolgálása Ennek során például I/O megszakítás esetén beolvassa a megszakítást kérő I/O port adatregiszterének tartalmát, esetleg további parancsokat küldhet az I/O egység számára, s azok végrehajtását is ellenőrizheti az I/O egység státuszregiszterének újabb beolvasásával (mint a hardver 2. pontban említett esetben az állapot-információk átküldését kérheti explicit). 4. A megszakítás kiszolgálásának befejeződése után (amennyiben a megszakítás nem okozott rendszerleállítást) gondoskodni kell arról, hogy egy programmal visszaírjuk a megfelelő regiszterekbe

a megszakítási veremtárolóból a megszakított program folytatásához szükséges adatokat, majd ezután megkezdődhet a megszakított program következő utasításának végrehajtása. A megszakítás tehát abban különbözik a közönséges programtól, hogy a program futásának megszakítása során a megszakított programtól teljesen függetlenül lejátszódik egy olyan folyamat, amelynek eredményeképpen az összes jellemző regiszter pillanatnyi állapota tárolódik egy veremmemóriában. 5.5 A megszakítás kiszolgálása 5.51 A megszakítás észlelése és nyilvántartása . A megszakítás észlelése A megszakítást a hardvertől függően • a megszakítási vezérlővonal feszültségszintje (szintérzékeny bemenetű hardver) vagy • a jel valamely éle (élérzékeny bemenetű hardver) váltja ki. A megszakítások nyilvántartása Minden egyes forráshoz tartozik egy jelző flipflop, amelyeket a forrásokban keletkezett megszakításkérések

állítanak 1-be. Ezek összességét nevezzük megszakítási jelző (flag) regiszternek, amely tehát az egyes forrásokból érkezett, még teljesítetlen megszakítás-kéréseket mutatja. Gyakran előfordul, hogy a jelző-regisztert alkotó flipflopok nem a CPU-ban, hanem magukban a forrásokban találhatók. 5.52 A megszakításkérő egység felismerése Mivel egy rendszerben több megszakítást kérő eszköz is lehet, ezért először azonosítani kell magát a megszakítást kérő eszközt. Egy megszakításkérő vonal esetén Lekérdezéses (polling) 4 FA5 Mihelyt valamelyik egység megszakítást kér, csupán azt lehet tudni, hogy valaki megszakítást kért. Ekkor három megoldást alkalmazatak: • el kell kezdeni valamilyen sorrendben lekérdezni az egyes egységeket, hogy kértek-e megszakítást, s az első olyan egység kérését, amely megszakítást kért, kiszolgáljuk. Az egységek lekérdezése történhet hardver úton (hardware polling vagy daisy

chain) vagy szoftver úton (software polling); Vektoros (vectored) Ez lehetővé teszi, hogy a megszakítást kérő egység azonosítsa magát, ami kiküszöböli az időtrabló lekérdezést. A nevét onnan kapta, hogy a megszakítás-kérésen kívül egy megszakítási vektornak nevezett bitsorozatot is átküld. A megszakítási vektor tartalma architektúránként változó A küldési lehetőségek a következők: • a megszakítást kérő egység a megszakítási vonal aktiválásán kívül a sínen elküldi egy azonosítóját, ami általában a kiszolgálását jelentő szervíz-program kezdőcíme; • a megszakítást kérő egység a megszakítási vonal aktiválásán kívül a sínen elküld egy megszakítási csoport-azonosítót, ezután valamilyen sorrendben el kell kezdeni az adott csoportba tartozó egyes egységek lekérdezését. Több megszakításkérő vonal esetén Mivel több megszakításkérő vonal segítségével a megszakítást kérő egység

azonosíthatja magát, tehát ez a vektoros megszakítás-kérések közé tartozik. 5.53 A megszakítások engedélyezése és tiltása (maszkolás) Programozható engedélyezés és tiltás A CPU utasítás-készletében általában van olyan utasítás, amely lehetővé teszi a megszakítás-kérések tiltását vagy maszkolását. Az ilyen utasításokkal a programozó valóban kikapcsolhatja az egyes megszakítás-kérési vonalakat, melyek eredményeképpen a CPU bizonyos megszakításokat nem vesz figyelembe. Például a lebegőpontos alulcsordulást maszkolhatjuk. Sok periféria státuszregiszterében van egy interrupt enable flag, melynek állása határozza meg, hogy a megszakítását a CPU elfogadja-e vagy sem. Másképp: Minden egyes forráshoz tartozik egy-egy maszk-bit, amelyek a megfelelő forrásokból érkezett (indikált) megszakítás-kérések elfogadását engedélyezik vagy megtiltják (kimaszkolják). A "megtiltás" a forrás jellegétől függően

vagy a kérés (jelző-flipflop) törlését vagy csak várakoztatását jelenti.A maszk-bitek összessége a maszk-szó, amelyet a maszk-regiszter tartalmaz. Mivel a maszk-regiszter a program állapotának (megszakíthatóságának) fontos jellemzője, ezért a maszk-regiszter az IBM 360 esetén például a programállapot-regiszter része, így új PSW aktivizálásakor a maszk-regiszter is megváltozhat. A megszakítás-kérések figyelésének és engedélyezésének általános elve: 5 FA5 Megszakítás-kérésekaforrásokból Jelzõ(flag) regiszter Parancsamegszakítási feltételekelemzésére Kiválasztólogika Ajelenlegi megszakítási szint kódja Parancsa megszakításra Azelfogadott kérsé szintkódjaésaforrsá súlykódja Azaktívmaszk-regiszter Maszk-szóbetöltése Az általános ismertetésben szereplő azon megállapítás, mely szerint minden forráshoz tartozik egy-egy maszk-bit, pontosításra szorul: - - - bizonyos forrásokhoz egyáltalán nem

tartozik maszk-flipflop (Pl. definiálatlan műveletkód használata, privilegizált utasítás használata normál állapotban). Az ilyen források szerinti megszakítás-kéréseket mindig ellenőrzöttnek tekintjük; más forrásokhoz pedig néha két maszk-flipflopot is hozzárendelnek (pl. aritmetikai műveletek szignifikancia-hibáihoz). Az ilyen ok szerinti megszakítás engedélyezéshez mindkét maszkflipflopnak engedélyező állásban kell lennie Végül az is gyakran előfordul, hogy több forrásnak egyetlen, közös maszkja van. Nem programozható engedélyezés és tiltás A mai mikroprocesszorok többsége rendelkezik egy non-maskable interrupt request (NMI) vonallal. A nem maszkolható kifejezés azt jelenti, hogy ezt nem lehet kikapcsolni. Egy NMI azonnal kiszolgálandó NMI-hez általában a rendszerszinten kritikus hibákat szokták kapcsolni, például a RAM paritáshibát vagy a tápellátás hibája. Mikor ez bekövetkezik, a számítógép még néhány

másodpercig működőképes, mivel minden tápegységben van egy pici energiatároló kapacitás. Az NMI azonnali kiszolgálása révén a számítógép normál módon lekapcsolódik, tehát a számítógép újraindítása könnyen lehetséges. 5.54 A prioritások kezelése Miután megállapítottuk a megszakításunk forrását, kézenfekvő eset lehet az, hogy egyszerre több forrás kér kiszolgálást. Ekkor a rendszernek azt is el kell tudni dönteni, hogy melyik megszakítás-kérést szolgálja ki először. 5.541 Prioritások nélküli rendszer Ez azt jelenti, hogy a megszakításokat beérkezésük sorrendjében szolgáljuk ki. Nagy hátránya, hogy az időérzékeny megszakítások (lásd később) kiszolgálása így megkéshet és ezért például adatvesztés következhet be. 5.542 Prioritásos megszakítási rendszer 6 FA5 A prioritásos megszakítási rendszer esetén egy prioritási sorrendet rendelünk az egyes forrásokhoz, s így meghatározzuk, hogy két

vagy több megszakítási igény esetén melyiket szolgálja ki a rendszer elsőként. Prioritási csoportok Az egyes prioritási csoportok értelmezése a következő: A védelmi rendszer megsértése és hardver-hibák Ezeknek van a legmagasabb prioritásuk. Csak akkor van értelme tovább folytatni az összes többi munkát, ha ezek lekezelése azt lehetővé teszi. Kritikus időzítés Amikor az adatátviteli vonalakon jön egy üzenet és egy karakter-alapú kommunikációs illesztő kéri a megszakítást, akkor rövid idő alatt ki kell szolgálni a megszakítást, mert különben az adat elvész. Teljesítmény Két eset lehetséges: • egy bizonyos felhasználónak valamilyen okból magasabb a prioritása, amiből az következik, hogy az általa üzemeltetett foylamatoknak magasabb prioritást kell biztosítani; • valamely programnak rendkívül magasak az erőforrás-igényei (például az operatív memória-igénye, s ezért a multiprogramozás kevésbé hatékony. Ekkor

a nagy erőforrásigényű folyamatnak adnak jóval nagyobb prioritást, hogy rövidebb ideig okozzon hatékonysági problémát. A prioritás eldöntésének algoritmusa A prioritás eldöntésének algoritmusa általában programozható. Általában a következő két algoritmust használják: Fix prioritás A megszakítási források prioritása az időben állandó, a megszakítást kérő egységekhez véglegesen hozzá van rendelve. Hátránya, hogy amennyiben egy magas prioriátsú forrás gyakran kér megszakítást, akkor az elnyomja az alacsonyabb prioritásúakat. Ezt alkalmazzák az IBM PC esetén (Intel 8259A megszakítás-vezérlő), ahol a prioritási szintek száma 8 illetve 15. Körbenforgó prioritás (rotating) Bizonyos megvalósításoknál több eszköz rendelkezik azonos prioritási szinttel. Ekkor a csoporton belül a legutoljára kiszolgált megszakítási forrás kerül a prioritási sor végére. Ennek hátránya, hogy sürgős kérés esetén esetleg túl

későn lesz kiszolgálva. Ilyen megoldást alkalmaznak az IBM PC (Intel 8259A megszakítás-vezérlő) esetén. Speciális maszk Ez lehetővé teszi a processzor számára, hogy bizonyos egységektől érkező megszakítási jelzéseket letiltson. Ilyen megoldást alkalmaznak az IBM PC (Intel 8259A megszakítás-vezérlő) esetén A prioritásos megszakítás-kezelés megvalósítási módja Hardver lekérdezéses (hardware polling vagy daisy chain) megszakítási rendszer A daisy chain esetén a processzortól megszakítást igénylő valamennyi egységet sorban felfűzünk úgy, hogy a legmagasabb prioritású lesz az első helyen, a következő egység pedig eggyel alacsonyabb prioritással fog rendelkezni. Amennyiben bármelyik egység megszakítási igénnyel rendelkezik, akkor aktiválja az INTR vezérlővonalat. Erre válaszképpen a processzor aktiválja az INTACK 7 FA5 vezérlővonalat. Azon egység, melynek nincsen megszakítási igénye, átengedi magán az aktivált

INTACK vonalat. Viszont amelyik egységnek függő megszakítási igénye van, az • deaktiválja az INTACK vonalat s így blokkolja az INTACK jelzést és • felrakja az adatsínre a megszakítási vektorát. A módszer hátránya, hogy az INTACK jel sorosan, azaz lassan terjed az egységek között. DATABUS INTACK U1 U2 Un CPU CONTROLBUS INTR Prioritási csoportok szervezése INTRACK INTRACK1 U Prioritásos arbitrálási áramkör CPU U INTR1 INTRACK2 U U INTRn INTR Prioritási csoportok szervezését az architektúrák többsége biztosítja, például a PDP11, a Motorola 68000 család és az Intel 8259A megszakítás vezérlő. Szoftver lekérdezéses (software polling) megszakítási rendszer Amikor a szoftver-lekérdezéses módszert alkalmazzuk, akkor a prioritást a lekérdezési sorrenddel határozzuk meg. Párhuzamos kiszolgálású megszakítási rendszer (independent requesting) 8 FA5 DATABUS amegszakítóprogram címe INTR U n 2 INTR1 prioritásos

INTACK1 arbitrálási CPU U U 1 INTR2 INTACK2 áramkör INTACK INTRn INTACKn A fenti séma szerint párhuzamosan érkezhetnek a megszakítási kérések az egyes egységektől. Ekkor a CPU egyszerűen csak a legmagasabb prioritásút fogadja. Amennyiben egy megszakitási vonalon több egység osztozik, akkor pedig valamilyen más eljárást kell alkalmazni a csoporton belüli legmagasabb prioritású egység kiválasztására. 5.55 A megszakítási rendszerek szintek szerint Maguk a megszakítási rendszerek hardver szempontból egy vagy többszintűek lehetnek. Egyszintű megszakítási rendszerek Az egyszintű megszakítási rendszer esetén egyetlen megszakítási szint van, tehát vagy két program-állapot regisztert találunk a CPU-ban (egyet a normál és egyet a megszakítási állapot számára); vagy pedig a régi program-állapot szó tárolására és az új elővételére bármely forrás esetén ugyanaz a főtárrekesz-pár van kijelölve. Így ha egy

megszakítás létrejön, újabb megszakításra nincs mód mindaddig, amíg vissza nem térünk a normál állapotba. A jobb megértés kedvéért egy példában tételezzük fel, hogy mindössze három meggszakítási forrásunk van. A legmagasabb prioritású forrást jelöljük 1-essel, a prioritási sorban második forrást 2-essel és a legalacsonyabb prioritásút 3-assal. 9 FA5 2 Megszakítási szint Normál processzor-állapot Engedélyezett megszakításkérések 2 1 3 1 3 Jelmagyarázat programmegszakítás programfolytatás programállapotváltás(amentés-betöltésidõigényét szemlélteti avastagság) amegszakítórutinbefejezõdése Most tegyük fel, hogy egy normál állapotban futó program valamely utasításának végrehajtása során megszakítás-kérés érkezik a 2-es és a 3-as forrásból, és a maszk-regiszter az összes forrás szerinti megszakítást egyaránt engedélyezi. Egyszintű megszakítás-rendszer esetén a kiválasztó logika

mindig a legmagasabb prioritású engedélyezett megszakítás-kérést keresi. Az utasítás végrehajtásának befejeződésekor tehát a kiválasztó logika megállapítja, hogy pillanatnyilag ez a 2-es forrás kérése a jelző-regiszterben és egyidejűleg automatikusan beíródik a 2-es forrás súlykódja a CPU egy meghatározott regiszterébe. A megszakító rutin később ennek alapján keresi meg a megszakítás pontos forrását, majd feldolgozza azt, végül visszaadja a vezérlést a normál állapotra, a megszakított programnak. A 3-as forrásból érkezett megszakítás-kérés elfogadására és feldolgozására legkorábban most kerülhet sor. Ez még nem is volna baj, hiszen a 3-as kérés az éppen feldolgozás alatt állónál alacsonyabb prioritású volt; azonban elképzelhető, hogy - mint az ábrán is látható - közben befut egy magasabb prioritású megszakítás-kérés is. Ez, bár a nálánál alacsonyabb prioritású kéréseket (jelen esetben a 3-as

forrásét) maga mödé utasítja, maga is várakozni kénytelen. A 2-es forrás szerinti kérés feldolgozása hosszabb ideig is eltarthat, viszont az 1-es forrás megszakítás-kérése esetleg nem tűrhet ekkora halasztást. Többszintű megszakítási rendszerek Az előzőekben vázolt problémát a többszintű megszakításrendszerek oldják meg. Tegyük fel, hogy minden egyes forráshoz külön megszakítási szint és vagy saját programállapot-regiszter tartozik, vagy külön rekesz-pár az operatív memóriában az Old PSW és a New PSW tárolására. A többszintű megszakításrendszerek szokásos működését előző példánkon mutatjuk be: A kiválasztó logika működésének egy lehetséges algoritmusa többszintű megszakításrendszerben a következó: keresi a pillanatnyi CPU-szintnél magasabb prioritás-szintű engedélyezett megszakításkéréseket. Ha talál ilyeneket, kiválasztja közülük a legalacsonyabb prioritás-szintűt és megszakítást hajt végre

erre a szintre, PSW-csere esetén ez oly módon zajlik le, hogy a megszakított szint PSW-je Old PSW-ként tárolódik az új szinthez rendelt főtár-rekesz pár egyik rekeszében, a másik rekesz tartalma pedig New PSW-ként betöltődik a programállapot-regiszterbe. Az elfogadott megszakítás-kérés nyugtázódik (jelző-flipflopja törlődik). Ezzel azonban a kiválasztó logika működése még nem zárult le Mielőtt az új szinten futó program első utasítása megkezdődhetnék, a kiválasztó logika megismétli a leírt vizsgálatot, és újabb és újabb megszakításokat hoz létre, míg működési algoritmusa ezt előírja. Végül már nem talál a legutoljára beállított szintnél magasabb prioritású engedélyezett kérést és megengedi a legutolsó New PSW-ben megjelölt utasítás végrehajtását. Ezzel az algoritmussal a CPU végeredményben az összes, a jelenleginél magasabb prioritás-szintű engedélyezett megszakítás-kérésre szinte azonnal reagál,

és a legmagasabb prioritás-szintű kérés feldolgozását kezdi meg elsőnek. Egy megszakítás-kérés feldolgozása után a megszakító rutin "Load 10 FA5 PSW" utasítással mindig annak a szintnek adja vissza a vezérlést, ahonnan kapta. Így a megszakításkérések egymás utáni feldolgozása is fontossági sorrendjükben következik be 1 Legmagasabbprioritású megszakítási szint 2 Közbensõprioritású megszakítási szint 3 Legalacsonyabbprioritású megszakítási szint Normál processzor-állapot Engedélyezett megszakításkérések 2 2 1 3 Jelmagyarázat programmegszakítás programfolytatás programállapotváltás(amentés-betöltésidõigényét szemlélteti avastagság) amegszakítórutinbefejezõdése Az elmondottaknak megfelelően a példánkban a következő történik: A 2-es és a 3-as forrás egyidejű beérkezése után először megszakítás történik a 3-as forrás szintjére, majd onnan azonnal tovább a 2-es szintre. Itt

megkezdődik a 2-es ok elemzése és feldolgozása Az időközben az 1-es forrásból érkező kérés miatt a feldolgozás abbamarad, és megszakítás történik az 1-es szintre. Itt megtörténik az 1-es ok feldolgozása, majd visszaadódik a vezérlés a 2-es szintre, ahol folytatódik a 2-es feldolgozása. Ennek befejeztével visszaadódik a vezérlés a 3-as szintre, és a 3-as feldolgozása is megtörténik. Végül a vezérlést ismét a normál szintű program kapja meg. Az elmondottak még annyiban szorulnak kiegészítésre, hogy - mivel egy megszakításkor az új PSW-vel egy új maszk-szó is aktiválódik - a további megszakítások engedélyezése szempontjából már nyilván az új maszk-szó az érvényes. Többszintű megszakításrendszerben a kiválasztó logika működésének egy másik lehetséges algoritmusa a következő: a kiválasztó logika keresi a pillanatnyi CPU-szintnél magasabb prioritás-szintű engedélyezett megszakítás-kéréseket. Ha talál

ilyeneket, kiválasztja közülük a legmagasabb prioritásszintűt, és megszakítást hajt végre erre a szintre Az állapotjellemzők cseréje most oly módon zajlik le, hogy a megszakított program állapotjellemzői a főtárnak a megszakított szinthez tartozó kijelölt területén tárolódnak, majd az új szinthez tartozó, szintén kijelölt területről új állapotjellemzők töltődnek be. Még egy fontos különbség az első változathoz képest: az elfogadott kérés jelző-flipflopja csak az őt feldolgozó megszakító program végén törlődik egy speciális dezaktiváló utasítás hatására. Elindul tehát az új szint megszakító programja, és addig fut, míg vagy nálánál is magasabb szintű engedélyezett kérés be nem érkezik időközben (ekkor az ismertetett algoritmus ismét lejátszódik), vagy a megszakítás feldolgozása be nem fejeződik. Ekkor a már említett dezaktiváló utasítás hatására törlődik a feldolgozott kérés jelző

flipflopja, és ismét működésbe lép a kiválasztó logika. Megkeresi a jelző flipflopok és az aktív maszkszó alapján a legmagasabb prioritásszintű engedélyezett kérést (ez a szint most biztosan alacsonyabb a jelenleginél), és a már leírt módon "megszakítást" hajt végre a kiválasztott szintekre. Hogy ezzel az algoritmussal az alapállapotban futó program is visszakaphassa a vezérlést, az alapállapotot a legalacsonyabb megszakítási szintnek tekintik, amelynek állandóan, nem-törölhetően és 11 FA5 nem-kimaszkolhatóan fennáll a megszakítás-kérése. Az ismertetett elv szerint működik például a Videoton R-10 számítógép megszakítási rendszere. 1 1-esmegszakítási szint 2 2 2-esmegszakítási szint 3 3-asmegszakítási szint Normál processzor-állapot Engedélyezett megszakításkérések 2 1 3 Jelmagyarázat programmegszakítás programfolytatás programállapotváltás(amentés-betöltésidõigényét szemlélteti

avastagság) amegszakítórutinbefejezõdése Az elmondottaknak megfelelően példánkban a következő történik: a 2-es és 3-as forrás egyidejű bejelentkezése után a kiválasztó logika rögtön a 2-es szintre szakít meg. Itt zajlik le a 2-es ok feldolgozása az 1-es forrás bejelentkezéséig, amikor is megszakítás történik az 1-es szintre. Az 1-es ok feldolgozása végén a dezaktiváló utasítás visszaadja a vezérlést a 2-es szintre, a 2-es ok feldolgozása végén pedig átadja a 3-as szintre. Végül a 3-as ok feldolgozása végén a dezaktiváló utasítás visszaadja a vezérlést az alapállapotban futó programnak. Esetenként a megszakítási források száma száznál több is lehet Ha minden forráshoz külön szintet rendelünk, az nagyon megdrágíthatja a gépet. Ezért gyakran csak a megszakítási források egy-egy osztályához rendelünk külön szinteket. Lényegében ilyen az IBM 360-as gépcsalád és az ESZR gépek megszakítási rendszere. Ennek

hátránya lehet, hogy ha valamelyik osztály szintjén egy megszakítás feldolgozása folyik, akkor egy ugyanazon osztályba tartozó, de feldolgozás alatt állónál magasabb prioritású megszakítás-kérés várakozni kényszerül (elsősorban az I/O okok osztályára gondolunk. A működési mechanizmust a következő példa szemlélteti: Példánkban tételezzük fel, hogy a prioritási sort a szintek (osztályok) között az 1-es jelű osztály, az osztályokon belül a ./a jelű forrás vezeti, továbbá hogy a kiválasztó logika a többszintű megszakítási rendszereknél bemutatott első algoritmus szerint dolgozik: a jelenleginél magasabb szintű engedélyezett kérések közül kiválasztja a legalacsonyabb szintűeket, és ezen osztályon belüli kérések közül a legmagasabb prioritásút elfogadva megszakít. A megszakított szint állapotjellemzői az új szinten tárolódnak. Az új szinten a kiválasztó logika mindenekelőtt megpróbálja megismételni ezt az

eljárást Ennek megfelelően példánkban a 2/b, a 3/a és a 3/b források egyidejű bejelentkezésekor először a 3/a forrás szerint történik megszakítás a 3-as szintre, majd - feltéve hogy ennek maszk-szava engedélyezi azonnal tovább a 2/bn 6 12 FA5 1/c 1-esmegszakítási szint 2/b 2/b 2/a 2-esmegszakítási szint 3/a 3-asmegszakítási szint Normál processzor-állapot Engedélyezett megszakításkérések Jelmagyarázat 2/b 1/c 3/b 2/a 3/a 3/b programmegszakítás programfolytatás programállapotváltás(amentés-betöltésidõigényét szemlélteti avastagság) amegszakítórutinbefejezõdése 5.6 Összefoglalás A megszakításoknak tehát az a lényege, hogy csak akkor foglalják le a processzor figyelmét, ha arra valóban szükség van. Miután a processzor munkaidejének csak töredékét teszik ki azok az esetek, amikor külső kapcsolatokkal kell foglalkoznia, a megszakítások rendszere felszabadítja a processzort a külső érintkezési pontok

időt rabló és fölösleges figyelésétől. Másrészt viszont, amikor külső kapcsolatot kell lekezelni, vagyis megszakító jelet kap, késlekedés nélkül, azonnal reagálhat. Az alprogram-hívás és a megszakítás közti különbség Egy számítógépes program futása alapvetően szekvenciális. Amennyiben a program futása során ettől el kívánunk térni, vezérlésátadó vagy alprogram-hívási utasításokat használunk. Megjelenési formáját tekintve a megszakítások leginkább az alprogram-híváshoz hasonlíthatóak: az alprogram az őt hívó a megszakított program és a főprogram számára végez megszakítást feldolgozó program valamilyen teékenységet teljesen független egymástól (a megszakítást esetleg egy egészen más felhasználó programja Különbség okozta) a hívása a program alapján előre tipikusan véletlenszerű látható az alprogram teljes egészében a megszakítás kiszolgálásában szoftvert jelent jelentős szerepet vállal

a hardver is A sínfoglalás és a megszakítások közti különbség A sínfoglalás és a megszakítások megvalósítása ugyanazon három féle módszerrel történik: Soros Hardver lekérdezése (daisy chain) 13 FA5 Szoftver lekérdezéses (software polling) Párhuzamos Párhuzamos kiszolgálású megszakítási rendszer (independent requesting) Ez önmagában is félreértésekre adhat okot. Ezen túlmenően mindkettő szorosan kapcsolódik a perifériák kiszolgálásához, hiszen pont a megszakításos I/O az elterjedt. Egy periféria megszakítással jelzi az átviteli igényét a processzor felé. Annak érdekében, hogy azonosítsa magát a legelterjedtebb vektoros átvitel esetén általában el kell kérnie a sínhasználati jogot a sínvezérlőtől s azon el kell küldenie a processzor számára a vektorát, mely tartalmazhatja az azonosítóját, vagy a kiszolgálási rutinjának címét, esetleg a kiszolgálási rutin futásához szükséges egyéb

állapotadatokat. Miután a processzor megtudta, hogy ki is kérte a megszakítást, akkor processzor a megszakítás feldolgozása során beolvassa az adott periféria állapotregiszterét, melyből látja, hogy az adott egység megszakítását kiszolgáló programnak melyik alprogramját kell futtatnia. Például egy hajlékonylemez egység esetén, ha nincs lezárva a meghajtó (az állapotregiszter READY bitje nincs beállítva), akkor kiírja a képernyőre, hogy az adott egység nincs készenléti állapotban és egy operátori beavatkozásig megszakítja a program futását. Amennyiben viszont az adott egység állapotregiszterében a READY bit be van állítva, akkor az átvitel szervezését végző alprogram fog futni. Magának az átvitelnek a szervezését már inkább az egység végzi, mint a processzor. Az egység kéri a az átvitelhez szükséges sínhasználatot a sínvezérlőtől, s amikor azt megkapja, az egység lép fel az ADÓ (vagy master) szerepében.

Nézzük meg más metszetekben is a két feladat eltérő jellegét: 1. Két teljesen különböző célú dologról van szö Sínfoglalásnál a megosztott sín haasználati jogáért küzdenek az egyes egységek, míg megszakításnál a processzort kérik, hogy az ő problémájukat kiszolgáló programot, utasításokat futtassa la, mégpedig soron kívül. Minél hamarabb: 2. Más a kéréseket adó egységek köre Sínfoglalásnál csak a kommunikáló perifériák, processzor és memória jöhet számításba, míg a megszakítást okozó egységek száma bővebb, itt már megjelenik az aritmetikai egység, a tápegység, stb. 3. Két, különböző hardver valósítja meg őket A sínfoglalást a sínvezérlő, a sínarbiter fogja össze és a BUS BUSY, BUS REQUEST valamint az egy vagy több BUS GRANT vezérlővonal vesz részt benne. A megszakítást viszont a megszakítás-vezérlő irányítja az INTR valamint az INTACK vezérlővonal részvételével. 5.7 Megszakítások a

gyakorlatban 5.71 Intel példa: 8259A megszakítási vezérlő Az első PC-k Az Intel processzoroknak mindössze 2 db megszakítási vonaluk van, az egyik a Non Maskable Interrupt, az NMI (amihez csatlakoztatták például memória paritás:hiba, tápellátási hiba megszakításait), a másik vonalon pedig osztozik az összes többi megszakítás. Annak érdekében, hogy megnövelje a megszakítási rendszer lehetőségeit, az IBM 1981-ben kiválasztotta az Intel 8259A jelzésű megszakítás-vezérlőt, s ez napjainkig is szabványossá vált. Ez 8 db megszakítást képes kiszolgálni, mégpedig 8 prioritási szinten. Az IRQ0-tól IRQ7-ig sorszámozott megszakítások esetén az IRQ0 prioritása a legmagasabb, az IRQ7-é pedig a legalacsonyabb. Az IBM PC AT Az AT megjelenésekor a 8 prioritási szint már kevésnek bizonyult, ezért az IBM 2 db 8259A vezérlő kaszkádba kötése mellett döntött: az hozzáadott vezérlő kimenetét rákapcsolták a már meglévő vezérlő

IRQ2-jéhez. A meglévő vezérlő kimenete az (NMI-t nem számítva) egyetlen megszakítási vezérlővonalon keresztül pedig csatlakozik a CPU-hoz. A kaszkádosítás eredményeképpen 2x8-1= 15 megszakítást tudunk kezelni (a kaszkádosításra elhasználunk egy bemenetet, ezért nem 16). PCI-sín A PCI megváltoztatja a meszakítási struktúrát és saját megszakítási vezérlést épít be a PCI bridge-be. A PCI rendszernek négy megszakítási vezérlővonala van, melyek mindegyike egy-egy bővítősínt szolgálhat ki. A PCI koncepció szerint az ISA bővítősín csak a PCI bridge-n keresztül kommunikálhat a mikroprocesszorral. A PCI tervezői kialakítottak egy úgynevezett sorosított megszakítás-támogató 14 FA5 rendszert Serialized IRQ Support for PCI Systems), mely egy úgynevezett IRQSER jelen alapul. Ebben egymás után jelölik, hogy mely megszakításhoz tartozik és melyikhez nem tartozik megszakítás-kérés. Ezt az információt eljuttatja a

mikroprocesszor chipsetében lévő hagyományos Intel 8259A jelzésű megszakításvezérlőhöz vagy annak funkcionális megfelelőjéhez. S a vezérlőt elérve a megszakítások kezelése már hagyományos módon történik. A megszakítások megosztása A 15 megszakítási lehetőség nem elegendő, ezért már az ISA sín esetén lehetővé tették a megszakítások megosztását. Amikor megosztanak egy megszakítást, akkor minden, az adott megszakítást használó egység ugyanazt a megszakítást használja, hogy jelezze a mikroprocesszor számára a megszakítási igényét. Ezután vagy a megszakítást kiszolgáló szoftver vag pedig a firmver irányítja a mikroprocesszort, hogy a csoportból a megszakítást ténylegesen kérő egység igényét szolgálja ki. A megszakítások kiosztása Mind a 8, mind pedig a 15 megszakításos esetre az IBM adott egy hozzárendelési táblát, hogy mely egységet mely megszakításhoz kössünk. A mai modern PC-k és operációs

rendszerek világában a Plug and Play szabvány mellett a következő öt megszakítás hozzárendelése kötött csupán: Példa az IBM PC-nél alkalmazott hozzárendelésekre: A megszakítás száma IRQ0 IRQ1 IRQ2 IRQ8 IRQ9 IRQ13 Funkció timer output 0 billentyűzet kaszkád (a 15-be nem számítjuk be) real time clock video, hálózati adapter lebegőpontos processzor Logikus, hogy a maszkolható megszakítások közül a legmagasabb prioritást a Timernek kell adni, hogy az órajelet minden körülmények közepette biztosítsa. Mivel személyi számítógépről van szó, ennek illik azonnal reagálni a billentyűzet-leütésre, ezért rendelték a második legmagasabb prioritási szinthez a billentyűzetet. Tehát 10 db megszakítással szabadon gazdálkodhatunk, a lényeg csupán, hogy mind a hardver egység, mind pedig a megszakítást kezelő szoftver (azaz a hardver egység megható szoftvere) tudja, hanyas számú megszakítást választottuk ki. 5.72 A megszakítások

listájának megtekintése a Win95-ben A megszakítások egyes egységekhez való hozzárendelését egy Win95-ös operációs rendszer esetén megtekinthetjük a System ikonból kiválasztva a Control Panelt, majd a Device menüben kiválasztjuk az Interrupt requestet. 15 FA5 Tartalom 5. A MEGSZAKÍTÁSI RENDSZER 1 5.1 Bevezetés A megszakítás fogalma A megszakítás születése Terminológia 1 1 1 1 5.2 A megszakítások okai vagy forrásai 5.21 Géphibák 5.22 I/O források 5.23 Külső források 5.24 Programozási források A memóriavédelem megsértése A tényleges tárkapacitás túlcímzése A címzési előírások megsértése Aritmetikai-logikai műveletek miatti megszakítások 1 1 2 2 2 2 2 2 2 5.3 A megszakítások csoportosítása Szinkron - aszinkron megszakítások Az utasítások végrehajtása között illetve közben fellépő megszakítások A felhasználó által explicit kért és nem kért megszakítások A megszakított program folytatódik vagy

befejeződik Felhasználó által maszkolható vagy nem maszkolható megszakítások 2 2 2 3 3 3 5.4 Egy megszakítás kiszolgálásának általános folyamata 5.41 A megszakítás előkészítése 5.42 A megszakítás kiszolgálásának a hardver által végzett feladatai 5.43 A megszakítás kiszolgálásának a szoftver által végzett feladatai 3 3 3 4 5.5 A megszakítás kiszolgálása 5.51 A megszakítás észlelése és nyilvántartása A megszakítás észlelése A megszakítások nyilvántartása 5.52 A megszakításkérő egység felismerése Egy megszakításkérő vonal esetén Lekérdezéses (polling) Vektoros (vectored) Több megszakításkérő vonal esetén 5.53 A megszakítások engedélyezése és tiltása (maszkolás) Programozható engedélyezés és tiltás Nem programozható engedélyezés és tiltás 5.54 A prioritások kezelése 5.541 Prioritások nélküli rendszer 5.542 Prioritásos megszakítási rendszer Prioritási csoportok A védelmi rendszer

megsértése és hardver-hibák Kritikus időzítés Teljesítmény A prioritás eldöntésének algoritmusa Fix prioritás Körbenforgó prioritás (rotating) Speciális maszk A prioritásos megszakítás-kezelés megvalósítási módja Hardver lekérdezéses (hardware polling vagy daisy chain) megszakítási rendszer 4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 7 7 7 7 7 7 16 FA5 Prioritási csoportok szervezése Szoftver lekérdezéses (software polling) megszakítási rendszer Párhuzamos kiszolgálású megszakítási rendszer (independent requesting) 5.55 A megszakítási rendszerek szintek szerint Egyszintű megszakítási rendszerek Többszintű megszakítási rendszerek 8 8 8 9 9 10 5.6 Összefoglalás Az alprogram-hívás és a megszakítás közti különbség A sínfoglalás és a megszakítások közti különbség 13 13 13 5.7 Megszakítások a gyakorlatban 5.71 Intel példa: 8259A megszakítási vezérlő Az első PC-k Az IBM PC AT PCI-sín A megszakítások

megosztása A megszakítások kiosztása 5.72 A megszakítások listájának megtekintése a Win95-ben 14 14 14 14 14 15 15 15 17