690 likes | 828 Vues
Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás: CALL op ; eljárás hívás - közeli: push IP, IP op, - távoli: push CS, push IP, (CS:IP) op. Visszatérés az eljárásból: RET ; visszatérés a hívó programhoz (RETurn)
E N D
Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás: CALL op ; eljárás hívás - közeli: push IP, IP op, - távoli: push CS, push IP, (CS:IP) op. Visszatérés az eljárásból: RET ; visszatérés a hívó programhoz (RETurn) - közeli: pop IP, - távoli: pop IP, pop CS. RET op ; . . . , SP SP+op ; op csak közvetlen adat lehet! 4. előadás
Feltétlen vezérlés átadás (ugrás) JMP op ; ha op közeli: IP op, ; ha távoli: (CS:IP) op. 4. előadás
A feltételek: Zero, Equal, No(Not), Greater, Less, Above, Below, Carry 4. előadás
A feltételek: Zero, Equal, No(Not), Carry, Sign, Overflow, Parity Even, Parity Odd. 4. előadás
Minden feltételes vezérlés átadás IP relatív címzéssel (SHORT) valósul meg! Pl.: JZ MESSZE ; Hibás, ha ; MESSZE messze van Megoldás: JNZ IDE ; Negált feltételű ugrás JMP MESSZE IDE: . . . 4. előadás
Ciklus szervező utasítások IP relatív címzéssel(SHORT)valósulnak meg. LOOP ipr ; CX CX – 1, ugrás ipr -re, ; ha CX 0 LOOPZ ipr ; CX CX – 1, ugrás ipr -re, ; ha (CX 0 és Z=1) LOOPE ipr ; ugyanaz mint LOOPZ LOOPNZ ipr ; CX CX – 1, ugrás ipr -re, ; ha (CX 0 és Z=0) LOOPNE ipr ; ugyanaz mint LOOPNZ 4. előadás
; B = A n-dik hatványa, ; A és n előjel nélküli byte, B word ; Feltétel: A n-1 –dik hatványa elfér AL –ben. mov cl, n ; a ciklus előkészítése xor ch, ch mov al, 1 ; lehetne: mov ax, 1 xor ah, ah ; akkor ez nem kell JCXZ kesz ; ha n=0, akkor 0-szor ; fut a ciklus mag c_mag: mul A ; ciklus mag LOOP c_mag ; ismétlés, ha kell kesz: mov B, ax 4. előadás
; A 100 elemű array nevű tömbnek van-e ; 3-tól különböző eleme? mov cx, 100 mov di, -1 ; előbb lehessen inc, mint cmp mov al, 3 NEXT: inc di cmp array[di], al ; array di-edik eleme = 3? LOOPE NEXT ; ugrás NEXT-re, ; ha CX0 és a di-edik elem=3 JNE NEM3 ; CX = 0 vagy array[di] 3 . . . ; array 3 . . . NEM3: . . . ; di az első 3-tól különböző . . . ; elem indexe 4. előadás
String kezelő utasítások Az s forrás területet(DS:SI), a d cél területet pedig (ES:DI)címzi. Az utasítás végződése (B / W) vagy az operandus jelzi, hogy bájtos vagy szavas a művelet. A címzésben résztvevő indexregiszterek értéke 1-gyel módosul bájtos, 2-vel szavas művelet esetén. Ha a D (Direction)flag értéke 0, akkor az indexregiszterek értéke növekszik, 1, akkor csökken. CLD ; D 0 STD ; D 1 4. előadás
Az alábbi utasítások – mint általában az adat mozgató utasítások – érintetlenül hagyják a flag-eket Átvitel az (ES:DI) által mutatott címre a (DS:SI) által mutatott címről: MOVSB ; MOVe String Byte MOVSW ; MOVe String Word MOVS d,s ; MOVe String (byte vagy word) d és s csak azt mondja meg, hogy bájtos vagy szavas az átvitel! 4. előadás
Betöltés AL-be illetve AX-be a (DS:SI) által mutatott címről (csak SI módosul): LODSB ; LOaD String Byte LODSW ; LOaD String Word LODS s ; LOaD String (byte vagy word) Tárolás az (ES:DI) által mutatott címre AL-ből illetve AX-ből (csak DI módosul): STOSB ; STOre String Byte STOSW ; STOre String Word STOS d ; STOre String (byte vagy word) 4. előadás
Az alábbi utasítások beállítják a flag-eket Az (ES:DI) és a (DS:SI) által mutatott címen lévő byte illetve szó összehasonlítása, a flag-ek s – d (!!!) értékének megfelelően állnak be. CMPSB ; CoMPare String Byte CMPSW ; CoMPare String Word CMPS d,s ; CoMPare String (byte vagy word) Az (ES:DI) által mutatott címen lévő byte (word) összehasonlítása AL-lel (AX-szel), a flag-ek AL – d(AX – d) értékének megfelelően állnak be. SCASB ; SCAn String Byte SCASW ; SCAn String Word SCAS d ; SCAn String (byte vagy word) 4. előadás
Ismétlő prefixumok REP REPZ REPE és REPNZ REPNE A Z, E, NZ és NE végződésnek hasonló szerepe van, mint a LOOP utasítás esetén. Ismétlő prefixum használata esetén a string kezelő utasítás CX-szer kerül(het) végrehajtásra: • ha CX = 0, akkor egyszer sem(!!!), • különben minden végrehajtást követően 1-gyelcsökken a CX regiszter tartalma. Amennyiben CX csökkentett értéke 0, akkor nem történik további ismétlés. A flag beállító string kezelő utasítás ismétlésének további feltétele, hogy a flag állapota megegyezzen a prefixum végződésében előírttal. 4. előadás
Ismétlő prefixumok REP REPZ REPE és REPNZ REPNE A program jobb olvashatósága érdekében • flag-et nem állító utasítások előtt mindigREP-ethasználjunk, • flag-et beállító utasítás előtt pedigsohaseREP-et, hanemhelyette a vele egyenértékűREPE-tvagy REPZ-t! 4. előadás
A LOOP utasítás ismertetésénél bemutatott feladat megoldása string kezelő utasítás segítségével : ; A 100 elemű array nevű tömbnek van-e ; 3-tól különböző eleme? mov cx,100 mov di,offset array MOV AL,3 REPE SCAS array ; array 0., 1., ... eleme = 3? JNE NEM3 . . . ; array 3, . . . NEM3: DEC DI ; DI az első 3 elemre mutat . . . 4. előadás
Megjegyzések: - Amostani megoldás használja az ES szegmens regisztert, és feltételeztük, hogy a tartalma jó. - A két megoldás közötti eltérés nem minden pontban lényeges, pl. az első változat úgy is elkészíthető lett volna, hogy ott is mov di,offset array szerepeljen, de a mostani megoldásnál ez az utasítás kötelező! - A mostani megoldás lényegesen gyorsabb végrehajtást biztosít, mint a korábbi. 4. előadás
operandus beolvasó egység utasítás végrehajtó egység utasítás beolvasó egység utasítás dekódoló egység eredményvisszaíró egység Párhuzamosítás: utasítás vagy processzor szintű. Utasítás szintű: szállítószalag, csővezeték (pipelining). Kezdetben: Utasítás beolvasás Utasítás végrehajtás Minden fázist külön hardver hajt végre (2.4. ábra), ezek párhuzamosan működhetnek (szerelő csarnok). S1 S2 S3 S4 S5 4. előadás
Késleltetés (latency): mennyi ideig tart egy utasítás. • Áteresztőképesség (processor bandwidth): hány MIPS (Million Instruction Per Second) a sebesség. 4. előadás
Több szállítószalagos CPU Két szállítószalag (2.5. ábra): Két ALU, de közös regiszterek, A két szállítószalag lehet különböző is (Pentium): fő – ez többet tud, elsőbbséget élvez – és mellék Bonyolult szabályok a párhuzamos végrehajthatóságra (fordítók vagy hardver). operandus beolvasó egység utasítás végrehajtó egység utasítás dekódoló egység eredményvisszaíró egység utasítás beolvasó egység operandus beolvasó egység utasítás végrehajtó egység utasítás dekódoló egység eredményvisszaíró egység S1 S2 S3 S4 S5 4. előadás
S4 ALU ALU operandus beolvasó egység utasítás beolvasó egység utasítás dekódoló egység eredményvisszaíró egység LOAD STORE lebegő-pontos egység Szuperskaláris processzor 5 funkcionális egységgel: S1 S2 S3 S5 2.6. ábra 4. előadás
Vezérlő egység sok azonos processzor (ILLIAC IV: (4*)8*8), mindnek saját memóriája. Vezérlő processzor adja ki a feladatot. Mindegyik processzor ugyanazt csinálja, de a saját adatain. Már nem divatos (drága, nehéz kihasználni). Processzor szintű párhuzamosítás • Tömb (array) processzor (2.7. ábra) Teríti az utasításokat processzor memória 8*8-as processzor/memória rács 4. előadás
Vektor processzorok Vektor regisztereket használnak. A vektor regiszter több hagyományos regiszterből áll. Gyors szállítószalag gondoskodik a regiszterek feltöltéséről, szintén gyors szállítószalag továbbítja a regiszterek tartamát az aritmetikai egységbe, pl. a vektor regiszterek összeadásához. Az eredmények szintén vektor regiszterbe kerülnek. Jól kombinálhatók hagyományos processzorokkal. 4. előadás
A közös memória megkönnyíti a feladat megosztását. • Csak közös memória. Nagyon terheli a memória sínt. • Lokális memória is van. • Sok (>64) processzoros rendszert nehéz építeni a közös memória miatt. közös memória … CPU CPU CPU helyi memóriák közös memória … CPU CPU CPU • Multiprocesszorok 4. előadás
Multiszámítógépek: Nincs közös memória:A CPU-k üzenetekkel kommunikálnak egymással.Néhány μs üzenet idő. 2-3 dimenziós hálók, fák, gyűrűk. Közel 10 000-es rendszer is van. 4. előadás
Gyorsító tár (cache – 2.16. ábra) A processzorok mindig gyorsabbak a memóriáknál. Feloldási lehetőség: a központi memória egy kis részét (gyorsító tár) a CPU lapkára helyezni: Amikor egy utasításnak adatra van szüksége, akkor először itt keresi, ha nincs itt, akkor a központi memóriában. Lokalitási elv: Ha egy hivatkozás a memória A címére történik, akkor a következő valószínűleg valahol A közelében lesz (ciklus, mátrix manipulálás, …). Ha A nincs a gyorsító tárban, akkor az A-t tartalmazó (adott méretű) blokk (gyorsító sor - cashe line) kerül beolvasásra a memóriából a gyorsító tárba. 4. előadás
Találati arány (h): az összes hivatkozás mekkora hányada szolgálható ki a gyorsító tárból. Hiba arány:1-h. Ha a gyorsító tár elérési ideje: c, a memória elérési ideje: m, akkor az átlagos elérési idő = c + (1- h) m. A gyorsító tár mérete: nagyobb tár – drágább. A gyorsító sor mérete: nagyobb sor – nagyobb a sor betöltési ideje is. 4. előadás
Osztott (külön utasítás és adat) gyorsító tár előnyei: • Egyik szállítószalag végzi az utasítás, másik az operandus előolvasást. • Az utasítás gyorsító tárat sohasem kell visszaírni (az utasítások nem módosulnak). Közös gyorsító tár: párhuzamosítás nem lehetséges. Hierarchia: • elsődleges, a CPU lapkán, • másodlagos, a CPU-val egy tokban, • külön tokban. 4. előadás
Direkt leképezésű gyorsító tár működése: (4_38_abrahoz) Ha a gyorsító tár Vonal által mutatott sorában V=1 (valid), és a TAG megegyezik a címben lévő TAG-gel, akkor az adat bent van a gyorsító tárban (ebben a sorban). 4. előadás
Halmaz kezelésű gyorsító tár Ha egy program gyakran használ olyan szavakat, amelyek távol vannak egymástól, de ugyanoda képződnek le a gyorsító tárban, akkor sűrűn kell cserélni a gyorsító sort. Ha minden címhez n bejegyzés van, akkor n utas halmazkeresésű gyorsító tárról beszélünk. Ritka a több, mint 4 utas kezelés. LRU (Least Recently Used) algoritmus: gyorsító sor betöltése előtt a legrégebben használt bejegyzés kerül ki a gyorsító tárból. 4. előadás
Halmaz kezelésű gyorsító tár (4.39. ábra) D bejegyzés A bejegyzés B bejegyzés C bejegyzés Ha a gyorsító tár Vonal által mutatott sorában az A, B, C és D bejegyzések egyikében V=1 (valid), és a hozzá tartozó TAG megegyezik a címben lévő TAG-gel, akkor az adat bent van a gyorsító tárban (ebben a bejegyzésben). 4. előadás
Memóriába írás Stratégiák: Írás áteresztés (write through): az írás a memóriába történik. Ha a cím a gyorsítóban van, oda is be kell írni, különben el kellene dobni a gyorsító sort. Késleltetett írás (write deferred, write back): ha a cím bent van a gyorsító tárban, akkor csak a gyorsító tárba írunk, a memóriába csak gyorsító sor cserénél. Ha a cím nincs a gyorsító tárban, akkor előtte betölthetjük: írás allokálás (write allocation) – többnyire ezt alkalmazzák késleltetett írás esetén. 4. előadás
regiszterek Gyorsító tár Központi memória Mágneslemez Optikai lemez Szalag Elérési idő: néhány nanosec 100 msec Kapacitás: néhány bájt néhány száz GB Memória hierarchia (2.18. ábra) 4. előadás
címzés adat sín vezérlésmegszakítások sín kiosztássegéd processzorállapotsegéd információk Φ+5V földelés órajel tápfeszültség CPU (Central Processing Unit) Általában egyetlen lapkán van. Lábakon keresztül kommunikál a többi egységgel (3.33. ábra). CPU 4. előadás
címzés adat sín vezérlésmegszakítások sín kiosztássegéd processzorállapotsegéd információk CPU Φ+5V Lábak (pins) három típusa: cím, adat, vezérlés. Ezek párhuzamos vezetékeken, az un. sínen keresztül kapcsolódnak a memória, az I/O egységek hasonló lábaihoz. 4. előadás
címzés adat sín vezérlésmegszakítások sín kiosztássegéd processzorállapotsegéd információk CPU Φ+5V Lényeges a cím- és adatlábak száma (3.33. ábra): • Ha m címláb van, akkor 2m memóriarekesz érhető el (tipikus m = 16, 20, 32, 64). • Ha n adatláb van, akkor egyszerre n bit olvasható illetve írható (tipikus n = 8, 16, 32, 36, 64). 4. előadás
címzés adat sín vezérlésmegszakítások sín kiosztássegéd processzorállapotsegéd információk CPU Φ+5V Óra, áram (3.3 v. 5V), föld, továbbá vezérlőlábak: • sín vezérlés (bus control): mit csináljon a sín, • megszakítások, • sín kiosztás (ütemezés, egyeztetés – bus arbitration): kinek dolgozzon a sín, • segéd processzor vezérlése, jelzései, • állapot, • egyebek. 4. előadás
címzés adat sín vezérlésmegszakítások sín kiosztássegéd processzorállapotsegéd információk CPU Φ+5V Pl. utasítás betöltése: • A CPU kéri a sín haszálat jogát, • Az utasítás címét a cím lábakra teszi, • vezérlő vonalon informálja a memóriát, hogy olvasni szeretne, • a memória a kért szót az adat vonalakra teszi, kész jelzést tesz egy vezérlő vonalra, • a CPU végrehajtáshoz átveszi az utasítást. 4. előadás
CPU lapka regiszterek memória-sín memória sínvezérlő B/K sín ALU modem nyomtató lemez Lapkán belüli sinek Sín (bus): Korai személyi számítógépeknél egyetlen (külső) rendszersín, manapság legalább kettő van: egy belső és egy külső (I/O), 3.34. ábra. 4. előadás
Sínprotokoll: a sín működésének + a csatlakozások mechanikai, elektronikus definíciója Mesterek (masters): aktív (kezdeményező) berendezések (CPU, lemez vezérlő). Szolgák (slaves): passzív (végrehajtó) berendezések (lemez vezérlő, CPU), 3.35. ábra. Ez a szereposztás tranzakciónként eltérő lehet. A memória sohasem lehet mester! 4. előadás
A sínhez kapcsolódó lapkák lényegében erősítők.Mester – sín vezérlő (bus driver) – sín. Sín – sín vevő (bus receiver) – szolga.Mester–szolgáknál: sín adó-vevő (bus tranceiver). A csatlakozás gyakran tri-state device vagy open collector – wired-OR segítségével történik. Sávszélesség: (továbbítható bitek száma) / sec. Sávszélesség növelése:Gyorsítás: probléma a sín aszimmetria (skew), kompatibilitás. Sínszélesség: szélesebb sín drágább, kompatibilitás. 4. előadás
8088 80288 80388 20 bites cím vezérlés 4 bites 8 bites Sínszélesség (pl. IBM PC: 3.36., 3.49. ábra). 3.36. ábra. A cím szélességének növekedése az elmúlt időszakban 4. előadás
Sokszorozott (multiplexed) sín: pl. először a cím van a sínen (ugyanazokon a vezetékeken), majd az adat. Ilyenkor a sín szélesség lényegesen csökken (olcsóbb, kevesebb láb szükséges a sínhez való csatlakozáshoz), csökken a sáv szélesség is, de nem olyan mértékben, és általában bonyolultabb a sín protokoll is. Gyorsabb CPU gyorsabb sínt igényel! Kívánság:PC cseréjénél megmaradhasson a régi perifériák egy része: az új gépben is kell a régi sín! Sínek szabványosítása. Egy gépen belül több sín is használható: 2.30. ábra. 4. előadás
CPU Memória sín Központi memória Gyorsító tár PCI-híd SCSI sín SCSI-szkenner SCSI-lemez SCSI-vezérlő Video vezérlő Hálózati vezérlő PCI sín Nyomtató vezérlő Hangkártya ISA-híd Modem ISA sín 2.30. ábra.Egy tipikus modern PC PCI, SCSI és ISA sínnel 4. előadás
Alaplap (motherboard, parentboard, 3.49. ábra) Rajta van a CPU, sín(ek), ezen illesztő helyek (slots) a memória és a beviteli/kiviteli (Input/Output – I/O) eszközök számára (2.28. ábra). I/O eszköz: maga az eszköz + vezérlő (controller) külön kártyán vagy az alaplapon (2.29. ábra). 4. előadás
Sínek időzítése Szinkron sín: a sín egy vezetékén lévő 5 – 100 MHz-es órajel vezérel. Minden síntevékenység az órajelhez van igazítva. Síntevékenységek: cím megadása, vezérlőjelek (MREQ#, RD#, WAIT#), adat megérkezése, … (3.37. ábra) 4. előadás
Olvasási ciklus 1 várakozó állapottal T1 T2 T3 Φ címadatMREQ#RD#WAIT# TAD A kiolvasandó rekesz címe adat TML Minimális válasz idő Kicsit hosszabb válasz idő esetén még egy várakozó ciklusra lenne szükség. 4. előadás
Minden sínművelet a ciklusidő (sín ciklus) egész számú többszöröséig tart: pl. 2.1 ciklusidő helyett 3 ciklusidő kell. A leglassabb eszközhöz kell a sín sebességét igazítani, a gyors eszköz is lassan fog működni. 4. előadás
Aszinkron sín: Minden eseményt egy előző esemény okoz! Nincs órajel, WAIT. MSYN# (kérés - Master SYNchronization), SSYN# (kész - Slave SYNchronization). Akkor indulhat újabb tranzakció, ha SSYN# negált. Ugyanazon a sínen gyors és lassú mester - szolga pár is lehet. 4. előadás
címMREQ#RD#MSYN# adatSSYN# A kiolvasandó rekesz címe adat Aszinkron sín működése (3.38. ábra) 4. előadás