1 / 56

CPU (Central Processing Unit) feladatai a végrehajtandó utasítás betöltése,

CPU (Central Processing Unit) feladatai a végrehajtandó utasítás betöltése, a betöltött utasítás típusának megállapítása, az ezt követő utasítás címének megállapítása, ha kell, az operandus(ok) helyének megállapítása, ha kell, az operandus(ok) betöltése, az utasítás végrehajtása,

jayden
Download Presentation

CPU (Central Processing Unit) feladatai a végrehajtandó utasítás betöltése,

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. CPU (Central Processing Unit)feladatai • a végrehajtandó utasítás betöltése, • a betöltött utasítás típusának megállapítása, • az ezt követő utasítás címének megállapítása, • ha kell, az operandus(ok) helyének megállapítása, • ha kell, az operandus(ok) betöltése, • az utasítás végrehajtása, • ha kell, az eredmény helyének megállapítása, • ha kell, az eredmény tárolása, • az egész ciklus újra kezdése. 2. előadás

  2. Központi memória (2.9. ábra) A programok és adatok tárolására szolgál. Bit: a memória alapegysége, egy 0-t vagy 1-et tartalmazhat. Memória rekesz (cella): több bit együttese. Minden rekesz ugyanannyi bitből áll. Minden rekeszhez hozzá van rendelve egy szám, a rekesz címe. Egy rekeszre a címével hivatkozhatunk. A rekesz a legkisebb címezhető egység. 2. előadás

  3. Cím Rekesz/cella A rekesz hossza manapság legtöbbször 8 bit (byte ~ bájt). n a memória cellák száma Központi memória (2.9. ábra) Rekesz hossza 2. előadás

  4. A bitek számarekeszenként néhány számítógép-történetileg érdekes, kereskedelmi forgalomba került gépen(2.10. ábra) 2. előadás

  5. Bájtsorrend A legtöbb processzor több egymás utáni bájttal is tud dolgozni (szó – word, …). A legmagasabb helyértékű bájt a szóban a legalacsonyabb címen: legmagasabb címen: nagy (big) endian kis (little) endian MSBfirst LSBfirst Most/Least Significant Byte first Ha egy 32 bites szó bájtjainak értéke rendre: a, b, c, d, akkor a szó értéke: a*2563+b*2562+c*256+d a+b*256+c*2562+d*2563 2. előadás

  6. Bájtsorrend (2.11. ábra) A memória címek úgy vannak fölírva, hogy a legmagasabb helyértékű bájt van bal oldalon. 32 bites szó 32 bites szó 2. előadás

  7. Bájtsorrend (12. ábra) A szövegek karaktereit mindkét esetben növekvő bájt sorrendben helyezik el A TEXT szöveg és az 12345678 hexadecimális szám elhelyezése a két géptípuson Problémák a gépek közötti kommunikációban! 2. előadás

  8. Kódolás: adat + ellenőrző bitek = kódszó. Két kódszó Hamming távolsága: az eltérő bitek száma. Pl.: 11001 és 11011 (Hamming) távolsága = 1. Hibaérzékelő kód: bármely két kódszó távolsága > 1: paritás bit. d hibás bit javítása: a kódszavak távolsága > 2d. Egy hibát javító kód (2.13. ábra): m adat, r ellenőrző bit, összesen n = m + r. 2m „jó” szó, + minden „jó” szónak n db „egyhibás” szomszédja van, ezért (1+ n)2m £ 2n = 2m+ r , 2m -mel egyszerűsítve: m + r +1 £ 2r, vagy másképp: m + r 2r szükséges. 2. előadás

  9. Minden utasítás tartalmaz műveleti kódot. Ezen kívül tartalmazhat az operandusokra, eredményre vonatkozó információt. Utasítás típusok: • regiszter-memória utasítások: a regiszterek és a memória közötti adatforgalom (betöltés, tárolás). Ilyenkor egy regiszter és egy memória cím megadása szükséges a címrészen. • regiszter-regiszter utasítások: összeadás, kivonás, …Az eredmény is regiszterben keletkezik.Ilyenkor három regiszter megadása szükséges a címrészen. • … 2. előadás

  10. Címzési módszerek Három cím: cél = forrás1 + forrás2. A memória sok rekeszt tartalmaz, de csak kevés regiszter van. Egy regiszter néhány bittel címezhető. Regiszterek használata rövidíti a címeket, de nyújtja a programot, ha az operandus csak egyszer kell. A legtöbb operandust többször használjuk. Implicit operandusok: • Két cím: regiszter2 = regiszter2 + forrás1. • Egy cím: akkumulátor = akkumulátor + forrás1. • Nulla cím: verem, pl. az IJVMIADD utasítása. 2. előadás

  11. Operandus megadás • Közvetlen operandus (immediate operand): Az operandus megadása az utasításban (5.17. ábra) • Direkt címzés (direct addressing): A memóriacím megadása a címrészen. Az utasítás mindig ugyanazt a címet használja. Az operandus értéke változhat, de a címe nem (fordításkor ismert kell legyen!). • Regiszter címzés (register addressing): Mint a direkt címzés, csak nem memóriát, hanem regisztert címez. 2. előadás

  12. Regiszter-indirekt címzés (register indirect addresing): A címrészen valamelyik regisztert adjuk meg, de a megadott regiszter nem az operandust tartalmazza, hanem azt a memóriacímet, amely az operandust tartalmazza (mutató - pointer). Rövidebb és a cím változtatható. Önmódosító program (Neumann): Ma már kerülendő (cache problémák!), pl. regiszter-indirekt címzéssel kikerülhetjük. 2. előadás

  13. Pl.:, a 100 szóból álló A tömb elemeinek összeadása (egy elem 4 bájt), ~ 5.18. ábra. MOV R1, #0 ; gyűjtsük az eredményt R1-ben, ; kezdetben ez legyen 0. MOV R2, #A ; az A tömb címe MOV R3, #A + 400 ; a tömb utáni első cím C: ADD R1, (R2) ; regiszter-indirekt címzés a tömb ; aktuális elemének elérésére ADD R2, #4 ; R2 tartalmát növeljük 4-gyel CMP R2, R3 ; végeztünk? BLT C ; ugrás a C címkéhez, ha nem . . . ; kész az összegzés 2. előadás

  14. Indexelt címzés (indexed addressing): Egy eltolási érték (offset) és egy (index) regiszter tartalmának összege lesz az operandus címe, 5.19-20. ábra. MOV R1, #0 ; gyűjtsük az eredményt R1-ben, ; kezdetben ez legyen 0. MOV R2, #0 ; az index kezdő értéke MOV R3, #400 ; a tömb mögé mutató index C: ADD R1, A(R2) ; indexelt címzés a tömb ; aktuális elemének elérésére ADD R2, #4 ; R2 tartalmát növeljük 4-gyel CMP R2, R3 ; végeztünk? BLT C ; ugrás a C címkéhez, ha nem . . . ; kész az összegzés 2. előadás

  15. Bázisindex címzés (based-indexed addressing): Egy eltolási érték (offset) és két (egy bázis és egy index) regiszter tartalmának összege lesz az operandus címe. Ha R5 A címét tartalmazza, akkor C: ADD R1, A(R2) helyett a C: ADD R1, (R2+R5) utasítás is írható. • Verem címzés (stack addressing): Az operandus a verem tetején van. Nem kell operandust megadni az utasításban. 2. előadás

  16. Az Intel 8086/8088 társzervezése A memória byte szervezésű. Egy byte 8 bitből áll. word, double word. Byte sorrend: Little Endian (LSBfirst). A negatív számok 2-es komplemens kódban. szegmens, szegmens cím a szegmensen belüli „relatív” cím, logikai cím, virtuális cím, OFFSET, displacement, eltolás, Effective Address (EA) fizikai cím (Address) 2. előadás

  17. Az Intel 8086/8088 üzemmódjai valós (real) védett (protected) szegmens cím szegmens regiszter ↓ szegmens regiszter page tábla elem tartalma * 16 ↓ szegmens kezdőcíme fizikai cím szegmens kezdőcíme + szegmensen belüli cím 2. előadás

  18. Szegmens regiszterek (16 bitesek) A szegmens regiszterek bevezetésének eredeti célja az volt, hogy nagyobb memóriát lehessen elérni. • CS (Code Segment) utasítások címzéséhez • SS (Stack Segment) verem címzéséhez • DS (Data Segment) (automatikus) adat terület címzéséhez • ES (Extra Segment) másodlagos adat terület címzéséhez 2. előadás

  19. Vezérlő regiszterek (16 bitesek) • IP (Instruction Pointer) az éppen végrehajtandó utasítás logikai címét tartalmazza a CS által mutatott szegmensben • SP (Stack Pointer) a stack-be (verembe) utolsónak beírt elem logika címét tartalmazza az SS által mutatott szegmensben • STATUS (SR vagy FLAGS) a processzor állapotát jelző regiszter • BP (Base Pointer) a stack indexelt címzéséhez használatos • SI (Source Index) a kiindulási (forrás) adat terület indexelt címzéséhez használatos • DI (Destination Index) a cél adat terület indexelt címzéséhez használatos 2. előadás

  20. STATUS (FLAGS) bitjei (flag-jei) • O (Overflow) előjeles túlcsordulás • D (Direction) a string műveletek iránya, 0: növekvő, 1: csökkenő • I (Interrupt) 1: megszakítás engedélyezése (enable), 0: tiltása (disable) • T (Trap) 1: „single step”, 0: automatikus üzemmód • S (Sign) az eredmény legmagasabb helyértékű bit-je (előjel bit) • Z (Zero) 1 (igaz), ha az eredmény 0, különben 0 (hamis) • A (Auxiliary Carry) átvitel a 3. és 4. bit között (decimális aritmetika) • P (Parity) az eredmény alsó 8 bitjének paritása • C (Carry) átvitel előjel nélküli műveleteknél 2. előadás

  21. Általános regiszterek (16 illetve 8 bitesek) 2. előadás

  22. Az I8086/88 címzési rendszere Operandus megadás Adat megadás • Kódba épített adat (immediate – közvetlen operandus)MOV AL, 6 ; AL új tartalma 6MOV AX, 0FFH ; AX új tartalma 000FFH • Regiszter címzés:MOV AX, BX Az egyik cím mindig regiszter! A többi adat megadás esetén az automatikus szegmens regiszter: DS 2. előadás

  23. Direkt memória címzés: a címrészen az operandus logikai címe (eltolás, displacement) MOV AX, SZO ; AX új tartalma SZO tartalma MOV AL, KAR ; AL új tartalma KAR tartalma Valahol a DS által mutatott szegmensben: SZO DW 1375H KAR DB 3FH (DS:SZO) illetve (DS:KAR) MOV AX, KAR ; hibás MOV AL, SZO ; hibás MOV AX, WORD PTR KAR ; helyes, de … MOV AL, BYTE PTR SZO ; helyes, de … 2. előadás

  24. Indexelt címzés: a logikai cím: a 8 vagy 16 bites eltolás + SI vagy DI (esetleg BX) tartalma MOV AX, 10H[SI] MOV AX, -10H[SI] MOV AX, [SI] Regiszter-indirekt címzés: eltolási érték nélküli indexelt címzés MOV AX, [BX] MOV AX, [SI] • Bázis relatív (bázisindex) címzés: a logikai cím: eltolás + BX + SI vagy DI tartalma MOV AX, 10H[BX][SI] MOV AX, [BX+SI+10H] 2. előadás

  25. Stack (verem) terület címzés Automatikus szegmens regiszter: SS Megegyezik a bázis relatív címzéssel, csak a BX regiszter helyett a BP szerepel. 2. előadás

  26. Program terület címzés Automatikus szegmens regiszter: CS A végrehajtandóutasítás címe: (CS:IP) Egy utasítás végrehajtásának elején: IP = IP + az utasítás hossza. • IP relatív címzés:IP = IP + a 8 bites előjeles közvetlen operandus • Direkt utasítás címzés: Az operandus annak az utasításnak a címe, ahova a vezérlést átadni kívánjuk. Közeli (NEAR): IP <= a 16 bites operandus Távoli (FAR): (CS:IP) <= a 32 bites operandus. CALL VALAMI ; az eljárás típusától függően ;NEAR vagy FAR 2. előadás

  27. Indirekt utasítás címzés: Bármilyen adat címzési móddal megadott szóban vagy dupla szóban tárolt címre történő vezérlés átadás. Pl.: JMP AX ; ugrás az AX-ben tárolt címre JMP [BX] ; ugrás a (DS:BX) által címzett ; szóban tárolt címre. JMP FAR [BX] ; ugrás a (DS:BX) által ; címzett dupla szóban tárolt címre. 2. előadás

  28. Az utasítások szerkezete Prefixum: utasítás ismétlés, explicit szegmens megadás vagy LOCK MOV AX, CS:S ; S nem a DS, ; hanem a CS regiszterrel címzendő Operációs kód: szimbolikus alakját mnemonic-nak nevezzük Címzési mód byte: hogyan kell az operandust értelmezni Operandus: mivel kell a műveletet elvégezni 2. előadás

  29. Címzési mód byte A legtöbb utasítás kód után szerepel. Szerkezete: Ha a műveleti kód legalacsonyabb helyértékű bit-je 0, akkor byte-os művelet, 1, akkor word-ös (szavas) művelet. 2. előadás

  30. 2. előadás

  31. Szimbolikus alakban az operandusok sorrendje, gépi utasítás formájában a gépi utasítás kód mondja meg a regiszter és a memória közti adatátvitel irányát. Pl. az alábbi két utasítás esetén a címzési mód byte megegyezik: MOV AX, 122H[SI+BX] ; hexadecimálisan 8B 80 0122 MOV 122H[SI+BX], AX ; hexadecimálisan 89 80 0122 2. előadás

  32. Az általános regiszterek és SI, DI, SP, BP korlátlanul használható, a többi (a szegmens regiszterek, IP és STATUS) csak speciális utasításokkal. Pl.: MOV DS, ADAT ; hibás! MOV AX, ADAT ; helyes! MOV DS, AX ; helyes! A „többi” regiszter nem lehet aritmetikai utasítás operandusa, sőt, IP és CS csak vezérlés átadó utasításokkal módosítható, közvetlenül nem is olvasható. 2. előadás

  33. ; Assembly főprogram, amely adott szöveget ír a képernyőre ; ================================================= KOD SEGMENT PARA PUBLIC CODE; Szegmens kezdet ; KOD: a szegmens neve ; align-type (igazítás típusa): BYTE, WORD, PARA, PAGE ; combine-type: PUBLIC, COMMON, AT kifejezés, STACK ; class: CODE, DATA, (CONSTANT,) STACK, MEMORY ; ajánlott értelemszerűen ASSUME CS:KOD, DS:ADAT, SS:VEREM, ES:NOTHING ; feltételezett szegmens regiszter értékek. ; A beállításról ez az utasítás nem gondoskodik! 2. előadás

  34. KIIR PROC FAR ; A fő eljárás mindig FAR ; FAR: távoli, NEAR: közeli eljárás ; Az operációs rendszer úgy hívja meg a főprogramokat, hogy ; a CS és IP a program végén lévő END utasításban megadott ; címke szegmens és OFFSET címét tartalmazza, SS és SP a ; a STACK kombinációs típusú szegmens végét mutatja, ; a visszatérés szegmens címe DS-ben van, OFFSET-je pedig 0 PUSH DS ; DS-ben van a visszatérési cím ; SEGMENT része XOR AX, AX ; AX0, az OFFSET rész = 0 PUSH AX ; Veremben a (FAR) visszatérési cím MOV AX, ADAT ; AX az ADAT SEGMENT címe MOV DS, AX ; Most már teljesül, amit az ASSUME utasításban írtunk ; Eddig tartott a főprogram előkészületi része 2. előadás

  35. MOV SI, OFFSET SZOVEG ; SISZÖVEG OFFSET címe CLD ; a SZÖVEGet növekvő címek ; szerint kell olvasni CALL KIIRO ; Eljárás hívás RET ; Visszatérés az op. rendszerhez ; a veremből visszaolvasott ; szegmens és OFFSET címre KIIR ENDP ; A KIIR eljárás vége 2. előadás

  36. KIIRO PROC ; NEAR eljárás, ; megadása nem kötelező CIKLUS: LODSB ; ALa következő karakter CMP AL, 0 ; AL =? 0 JE VEGE ; ugrás a VEGE címkéhez, ; ha AL=0 MOV AH, 14 ; BIOS rutin paraméterezése INT 10H ; a 10-es interrupt hívása: ; az AL-ben lévő karaktert kiírja ; a képernyőre JMP CIKLUS ; ugrás a CIKLUS címkéhez, ; a kiírás folytatása VEGE: RET ; Visszatérés a hívó programhoz KIIRO ENDP ; A KIIRO eljárás vége KOD ENDS ; A KOD szegmens vége 2. előadás

  37. ADAT SEGMENT PARA PUBLIC DATA SZOVEG DB Ezt a szöveget kiírja a képernyőre DB 13, 10, 0 ; 13: a kocsi vissza, ; 10: a soremelés kódja, ; 0: a szöveg vége jel ADAT ENDS ; Az ADAT szegmens vége ; ================================================= VEREM SEGMENT PARA STACK DW 100 DUP (?) ; Helyfoglalás 100 db ; inicializálatlan szó számára VEREM ENDS ; A VEREM szegmens vége ; ================================================= END KIIR ; Modul vége, ; a program kezdőcíme: KIIR 2. előadás

  38. Digitális logikai szint Digitális áramkör: két érték – általában 0-1 volt között az egyik (pl. 0, hamis), 2-5 volt között a másik (1, igaz). Más feszültségeket nem engednek meg. Kapu (gate): kétértékű jelek valamilyen függvényét tudja meghatározni.Kapcsolási idő néhány ns (nanoszekundum = 10-9 s) 2. előadás

  39. 0 + Vcc + Vcc + Vcc + Vcc + Vcc Vki Bázis NEM (NOT) kapu (3.1-2.ábra) Kollektor 0 Vbe Emitter NEM(NOT)kapu, inverter Tranzisztor Szimbolikus jelölése: Igazság tábla: X A Inverziós gömb erősítő 2. előadás

  40. + Vcc Vki V1 V2 Igazság tábla: NEM-ÉS (NAND) kapu (3.1-2.ábra) Szimbolikus jelölése A X B 2. előadás

  41. V1 V2 A X B Igazság tábla: + Vcc NEM-VAGY (NOR) kapu (3.1-2.ábra) Vki Szimbolikus jelölése 2. előadás

  42. A X B Igazság tábla: ÉS (AND) kapu (3.2.ábra) Szimbolikus jelölése 2. előadás

  43. A X B Igazság tábla: VAGY (OR) kapu (3.2.ábra) Szimbolikus jelölése 2. előadás

  44. Boole-algebra Olyan algebra, amelynek változói és függvényei csak a 0, 1 értéket veszik fel, a műveletei: • ÉS (konjunkció), • VAGY (diszjunkció), • NEM (negáció). Igazságtábla: olyan táblázat, amely a változók összes lehetséges értéke mellett megadja a függvény vagy kifejezés értékét. 2. előadás

  45. Igazság tábla: Pl. 3 változós többségi függvény (3.3. ábra): értéke 1, ha legalább két argumentuma 1 Boole-algebrai alakja: A fölülvonás a NEM (negáció), az egymás mellé írás az ÉS, a + a VAGY művelet jele. Diszjunktív normálforma. 2. előadás

  46. A B C A B C M A B C Boole-függvény megvalósításának lépései (3.3.ábra): • igazságtábla, • negált értékek, • ÉS kapuk bemenetei, • ÉS kapuk, • VAGY kapu, kimenet. 2. előadás

  47. NOT NAND és NOR előnye: teljesség (3.4. ábra) AND OR 2. előadás

  48. Definíció: Akkor mondjuk, hogy két Boole-függvény ekvivalens, ha az összes lehetséges bemenetre a két függvény azonos kimenetet ad. Két Boole-függvény ekvivalenciája könnyen ellenőrizhető az igazság táblájuk alapján. Pl.: AB + AC és A(B + C) ekvivalens (3.5. ábra). Az első függvény megvalósításához két ÉS és egy VAGY kapura van szükség, a másodikhoz elegendő egy ÉS és egy VAGY kapu. 2. előadás

  49. Néhány azonosság (3.6. ábra) 2. előadás

  50. Disztribúciós szabály: A+BC=A+(BC)=(A+B)(A+C) Jelölje az ÉS műveletet ٨ , a VAGYműveletet ٧ , akkor A ٧ (B ٨ C) = (A ٧ B) ٨ (A ٧ C) 2. előadás

More Related