1 / 83

; B = A n-dik hatványa, ; A és n előjel nélküli byte, B word

; 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

nassor
Download Presentation

; B = A n-dik hatványa, ; A és n előjel nélküli byte, B word

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ; 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

  2. ; Két vektor skalár szorzata. 1. változat code segment para public ’code’ assume cs:code, ds:data, ss:stack, es:nothing skalar proc far push ds ; visszatérési cím a verembe xor ax,ax ; ax  0 push ax ; visszatérés offset címe mov ax,data ; ds a data szegmensre mutasson mov ds,ax ; sajnos „mov ds,data” ; nem megengedett ; A 4. előadás

  3. mov cl,n ; cl  n, 0  n  255 xor ch,ch ; cx = n szavasan xor dx,dx ; az eredmény ideiglenes helye jcxz kesz ; ugrás a kesz címkére, ; ha CX (=n) = 0 xor bx,bx ; bx  0, ; bx-et használjuk indexezéshez 4. előadás

  4. ism: mov al,a[bx] ; al  a[0], később a[1], ... imul b[bx] ; ax  a[0]b[0], a[1]b[1], ... add dx,ax ; dx  részösszeg inc bx ; bx  bx+1, az index növelése ; B dec cx ; cx  cx-1, (vissza)számlálás jcxz kesz ; ugrás a kész címkére, ha cx=0 jmp ism ; ugrás az ism címkére kesz: mov ax,dx ; a skalár szorzat értéke ax-ben ; C 4. előadás

  5. call hexa ; az eredmény kiírása ; hexadecimálisan mov si,offset kvse ; kocsi vissza soremelés call kiiro ; kiírása ret ; vissza az Op. rendszerhez skalar endp ; a skalár eljárás vége ; D 4. előadás

  6. Egyszerűsítési lehetőség: ; B dec cx ; cx  cx-1, (vissza)számlálás jcxz kesz ; ugrás a kész címkére, ha cx=0 jmp ism ; ugrás az ism címkére kesz: mov ax,dx ; a skalár szorzat értéke ax-ben helyett: ; B LOOP ism ; ugrás az ism címkére, ; ha kell ismételni kesz: mov ax,dx ; a skalár szorzat értéke ax-ben 4. előadás

  7. Annak érdekében, hogy a skalárszorzatot kiszámító program ne rontson el regisztereket, kívánatos ezek mentése: ; A PUSH BX ; mentés PUSH CX PUSH DX és visszamentése: POP DX ; visszamentés POP CX POP BX ; C 4. előadás

  8. A paraméterek szabványos helyen történő átadása ; Két vektor skalár szorzata. 2. változat . . . ; A ; ELJÁRÁS HÍVÁS A PARAMÉTEREK ; SZABVÁNYOS HELYEN TÖRTÉNŐ ÁTADÁSÁVAL CALL SKAL ; ELJÁRÁS HÍVÁS ; eredmény az AX regiszterben ; C call hexa ; az eredmény kiírása mov si,offset kvse ; kocsi vissza, soremelés call kiiro ; kiírása . . . ret ; vissza az Op. rendszerhez skalar endp ; a skalár eljárás vége ; D 4. előadás

  9. SKAL PROC ; KÖZELI (NEAR) ELJÁRÁS ; KEZDETE ; Az A-tól C-ig tartó program rész: PUSH BX ; MENTÉSEK PUSH CX PUSH DX mov cl,n ; cl  n, 0  n  255 xor ch,ch ; cx = n szavasan xor dx,dx ; az eredmény ideiglenes helye jcxz kesz ; ugrás a kesz címkére, ha n=0 xor bx,bx ; bx  0, ; bx-et használjuk indexezéshez 4. előadás

  10. ism: mov al,a[bx] ; al  a[0], később a[1], ... imul b[bx] ; ax  a[0]b[0], a[1]b[1],... add dx,ax ; dx  részösszeg inc bx ; bx  bx+1, az index növelése ; B LOOP ism ; ugrás az ism címkére, ; ha kell ismételni kesz: mov ax,dx ; a skalár szorzat értéke ax-ben POP DX ; VISSZAMENTÉSEK POP CX POP BX ; C RET ; VISSZATÉRÉS A HÍVÓ ; PROGRAMHOZ SKAL ENDP ; A SKAL ELJÁRÁS VÉGE ; D … Csak az a és b vektor skalár szorzatát tudja kiszámolni! 4. előadás

  11. A paraméterek regiszterekben történő átadása ; Két vektor skalár szorzata. 3. változat . . . ; A ; ELJÁRÁS HÍVÁS A PARAMÉTEREK ; REGISZTEREKBEN TÖRTÉNŐ ÁTADÁSÁVAL MOV CL, n ; PARAMÉTER BEÁLLÍTÁSOK XOR CH, CH ; CX = n, ÉRTÉK MOV SI,OFFSET a ; SI  a OFFSET CÍME MOV DI,OFFSET b ; DI  b OFFSET CÍME call skal ; eljárás hívás ; eredmény az ax regiszterben call hexa ; az eredmény kiírása mov si,offset kvse ; kocsi vissza, soremelés call kiiro ; kiírása . . . ret ; visszatérés az Op. rendszerhez skalar endp ; a skalár eljárás vége 4. előadás

  12. skal proc ; Közeli (NEAR) eljárás kezdete push bx ; mentések push cx push dx xor dx,dx ; az eredmény ideiglenes helye jcxz kesz ; ugrás a kesz címkére, ha n=0 xor bx,bx ; bx  0, ; bx-et használjuk indexezéshez 4. előadás

  13. ism: mov al,[SI+BX] ; FÜGGETLEN a-tól imul BYTE PTR [DI+BX]; FÜGGETLEN b-től ; csak „BYTE PTR”-ből derül ki, hogy 8 bites a szorzás add dx,ax ; dx  részösszeg inc bx ; bx  bx+1, az index növelése loop ism ; ugrás az ism címkére, ; ha kell ismételni kesz: mov ax,dx ; a skalár szorzat értéke ax-ben pop dx ; visszamentések pop cx pop bx ret ; visszatérés a hívó programhoz skal endp ; a skal eljárás vége ; D . . . Így csak kevés paraméter adható át! 4. előadás

  14. ; Két vektor skalár szorzata. 4. változat . . . ; A ; ELJÁRÁS HÍVÁS A PARAMÉTEREK ; VEREMBEN TÖRTÉNŐ ÁTADÁSÁVAL MOV AL,n ; AL-t nem kell menteni, mert XOR AH,AH ; AX-ben kapjuk az eredményt PUSH AX ; AX=n a verembe MOV AX,OFFSET a ; AX  a OFFSET címe PUSH AX ; a verembe MOV AX,OFFSET b ; AX  b OFFSET címe PUSH AX ; a verembe A verembe került: n értéke, a címe, b címe paraméterek 4. előadás

  15. call skal ; eljárás hívás ; eredmény az ax regiszterben ADD SP,6 ; paraméterek ürítése a veremből . . . ret ; visszatérés az Op. rendszerhez skalar endp ; a skalár eljárás vége call skal Hatására a verembe került a visszatérési cím 4. előadás

  16. skal proc ; Közeli (near) eljárás kezdete PUSH BP ; BP értékét mentenünk kell MOV BP,SP ; BP  SP, ; a stack relatív címzéshez PUSH SI ; mentések PUSH DI push bx push cx push dx A verem tartalma: n értéke, a címe, b címe paraméterek visszatérési cím, bp, si, di, bx, cx, dx mentett regiszterek 4. előadás

  17. A verem tartalma: n értéke, a címe, b címe paraméterek visszatérési cím, bp, si, di, bx, cx, dx mentett regiszterek (SS:SP) dxPUSH BP ; BP értékét mentenünk kell + 2 cxMOV BP,SP ; BP  SP, + 4 bx + 6 di + 8 si +10 bp - - - - - - - - - - - - - - - - - - - - - (SS:BP) +12 visszatérési cím + 2 +14 b címe + 4 +16 a címe + 6 +18 n értéke + 8 . . . korábbi mentések . . . 4. előadás

  18. +10 bp - - - - - - - - - - - - - - - - - - - - - (SS:BP) +12 visszatérési cím + 2 +14 b címe + 4 +16 a címe + 6 +18 n értéke + 8 . . . korábbi mentések . . . MOV SI,6[BP] ; SI  az egyik vektor címe MOV DI,4[BP] ; DI  a másik vektor címe MOV CX,8[BP] ; CX  a dimenzió értéke xor dx,dx ; az eredmény ideiglenes helye jcxz kesz ; ugrás a kesz címkére, ha n=0 xor bx,bx ; bx  0, indexezéshez 4. előadás

  19. ism: mov al,[si+bx] ; független a-tól imul byte ptr [di+bx] ; független b-től ; csak „byte ptr”-ből derül ki, hogy 8 bites a szorzás add dx,ax ; dx  részösszeg inc bx ; bx  bx+1, az index növelése loop ism ; ugrás az ism címkére, ; ha kell ismételni kesz: mov ax,dx ; a skalár szorzat értéke ax-ben 4. előadás

  20. pop dx ; visszamentések pop cx pop bx POP DI POP SI POP BP ret ; visszatérés a hívó programhoz skal endp ; a skal eljárás vége ; D . . . ADD SP,6 ; paraméterek ürítése a veremből helyett más megoldás: RET 6 ; visszatérés a hívó programhoz ; verem ürítéssel: . . . SP = SP + 6 4. előadás

  21. C konvenció Hogy egy eljárás különböző számú paraméterrel legyen hívható, azt úgy lehet elérni, hogy a paramétereket fordított sorrendben tesszük a verembe, mert ilyenkor a visszatérési cím alatt lesz az első, alatta a második, stb. paraméter, és általában a korábbi paraméterek döntik el, hogy hogyan folytatódik a paramétersor. 4. előadás

  22. Lokális adat terület, rekurzív és re-entrant eljárások Ha egy eljárás működéséhez lokális adat területre, munkaterületre van szükség, és a működés befejeztével a munkaterület tartalma fölösleges, akkor a munkaterületet célszerűen a veremben alakíthatjuk ki. A munkaterület lefoglalásának ajánlott módja: . . . proc . . . PUSH BP ; BP értékének mentése MOV BP,SP ; BP  SP, ; a stack relatív címzéshez SUB SP,n ; n byte-os munkaterület lefoglalása . . . ; további regiszter mentések 4. előadás

  23. Lokális adat terület (NEAR eljárás esetén) (SS:SP) lokális adat terület . . . + 2 . . . . . . . . . . . . – 2 bp - - - - - - - - - - - - - - - - - - - - - (SS:BP) visszatérési cím + 2 paraméterek . . . korábbi mentések . . . A munkaterület negatív displacement érték mellett stack relatív címzéssel érhető el. (A veremben átadott paraméterek ugyancsak stack relatív címzéssel, de pozitív displacement érték mellett érhetők el.) 4. előadás

  24. A munkaterület felszabadítása visszatéréskor a . . . ; visszamentések MOV SP,BP ; a munkaterület felszabadítása POP BP ; BP értékének visszamentése ret . . . ; visszatérés utasításokkal történhet. 4. előadás

  25. Rekurzív és re-entrant eljárások Egy eljárás rekurzív, ha önmagát hívja közvetlenül, vagy más eljárásokon keresztül. Egy eljárás re-entrant, ha többszöri belépést tesz lehetővé, ami azt jelenti, hogy az eljárás még nem fejeződött be, amikor újra felhívható. A rekurzív eljárással szemben a különbség az, hogy a rekurzív eljárásban „programozott”, hogy mikor történik az eljárás újra hívása, re-entrant eljárás esetén az esetleges újra hívás ideje a véletlentől függ. Ez utóbbi esetben azt, hogy a munkaterületek ne keveredjenek össze, az biztosítja, hogy újabb belépés csak másik processzusból képzelhető el, és minden processzus saját vermet használ. 4. előadás

  26. Rekurzív és re-entrant eljárások Ha egy eljárásunk készítésekor betartjuk, hogy az eljárás a paramétereit a vermen keresztül kapja, kilépéskor visszaállítja a belépéskori regiszter tartalmakat – az esetleg eredményt tartalmazó regiszterek kivételével –, továbbá a fenti módon kialakított munkaterületet használ, akkor az eljárásunk rekurzív is lehet, és a többszöri belépést is lehetővé teszi (re-entrant). 4. előadás

  27. Gyorsító tár (cache – 2.16. ábra) A processzorok mindig gyorsabbak a memóriáknál. A CPU lapkára integrálható memória gyors, de kicsi. 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 - cache line) kerül beolvasásra a memóriából a gyorsító tárba. 4. előadás

  28. 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. Ugyanakkora tárban kevesebb gyorsító sor fér el. 4. előadás

  29. 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). Egyesített gyorsító tár: nem lehetséges párhuzamosítás. Hierarchia: • elsődleges, a CPU lapkán, • másodlagos, a CPU-val egy tokban, • külön tokban. 4. előadás

  30. 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

  31. Halmazkezelésű (csoportasszociatív) 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

  32. 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

  33. 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

  34. 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

  35. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztássegédprocesszorállapotvegyes Φ+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.34. ábra). CPU 4. előadás

  36. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes 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

  37. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes CPU Φ+5V Lényeges a cím- és adatlábak száma (3.34. á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

  38. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes 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

  39. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes CPU Φ+5V Pl. utasítás betöltése: • A CPU kéri a sín haszná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

  40. CPU lapka regiszterek memória-sín memória sínvezérlő B/K sín ALU modem nyomtató lemez Lapkán belüli sínek 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.35. ábra. 4. előadás

  41. 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

  42. 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 transceiver). 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

  43. 8086 80286 80386 20 bites cím vezérlés 4 bites 8 bites Sínszélesség (pl. IBM PC: 3.37., 3.51. ábra). 3.37. ábra. A cím szélességének növekedése az elmúlt időszakban 4. előadás

  44. 3.51. ábra.A PC/AT sín két komponense, az eredeti PC és az új rész 4. előadás

  45. Alaplap (motherboard, parentboard, 3.51. á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 (3.51., 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). 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

  46. CPU Központi memória PCI-híd Gyorsító tár SCSI-szkenner SCSI-lemez SCSI-vezérlő Video vezérlő PCI sín Nyomtató vezérlő Hangkártya ISA-híd Modem ISA sín Memóriasín SCSI sín Hálózati vezérlő 2.30. ábra.Egy tipikus modern PC PCI, SCSI és ISA sínnel 4. előadás

  47. Sokszorozott (multiplexed) sín: pl. először a cím van a sínen, majd az adat (ugyanazokon a vezetékeken). 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. Általában bonyolultabb a sín protokoll. 4. előadás

  48. Sínek időzítése Szinkron sín: 5 – 100 MHz-es órajel van a sín egy vezetékén. 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.38. ábra) 4. előadás

  49. Olvasási ciklus 1 várakozó állapottal T1 T2 T3 Φ címadatMREQ#RD#WAIT# TAD A kiolvasandó rekesz címe adat TML A memóriából történő olvasás ideje Kicsit hosszabb válasz idő esetén még egy várakozó ciklusra lenne szükség. 4. előadás

  50. 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

More Related