Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /

Slides:



Advertisements
Hasonló előadás
Egyszerűsített lexikális elemző
Advertisements

1 Számítógépek felépítése 9. előadás I/O rendszerek.
Alapvető digitális logikai áramkörök
A mikroprocesszor 1. rész.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Az LCD kijelző programozása
Adatbázisrendszerek elméleti alapjai 6. előadás
Adatbázisrendszerek elméleti alapjai 5. előadás
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Sztringek.
Bevezetés a Java programozásba
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
. . Egyszerű sín alapú számítógép (2.1. ábra)
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /
Máté: Architektúrák2. előadás1 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.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de.
Máté: Orvosi képfeldolgozás1. előadás1. Máté: Orvosi képfeldolgozás1. előadás2 A leképezés fizikai alapjai Fény, fénykép, mikroszkóp Röntgen sugárzás.
Máté: Orvosi képfeldolgozás3. előadás1 Torzítás. Máté: Orvosi képfeldolgozás3. előadás2 A tárgy nagyítása A forrás nagyítása forrás tárgy kép A tárgy.
Máté: Architektúrák7. előadás1 RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set.
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
A verem működése fpga-n
CISC - RISC processzor jellemzők
16. Verem műveletei Kaszab Gábor.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
2 tárolós egyszerű logikai gép vázlata („feltételes elágazás”)
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
Adatbázisrendszerek elméleti alapjai 7. előadás
Egy egyszerű gép vázlata
Egy harmadik generációs gép (az IBM 360) felépítése
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A számítógép működése TAKÁCS BÉLA
Egyszerűsített lexikális elemző
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Számítógép architektúra Címzésmódok. 2007Címzésmódok2-21 Operandusok egy operandus hossza lehet: –1 byte –2 byte (szó) –4 byte egy operandus lehet: –az.
Számítógép architektúra
Összetett adattípusok
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Számítógép architektúrák
Szintaktikai, szemantikai szabályok
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
Objektum orientált programozás
Fixpontos, lebegőpontos
A Visual Basic nyelvi elemei
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 7. előadás.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 8. előadás.
C Programozási alapok.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Írja fel a tizes számrendszerbeli
Máté: Architektúrák5. előadás1 PCI (Peripheral Component Interconnect): 32 bites adat átvitel (33,3 MHz, sávszélesség: 133 MB/s) szabadon felhasználható.
IT ALAPFOGALMAK HARDVER.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Összeállította: Gergely János
7. Multiplikatív műveletek:  : szorzás / : osztás
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Számábrázolás.
RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set Computer összetett utasításkészletű.
Programozás C# -ban Elágazások.
Változók.
A Számítógépek felépítése, működési módjai
A Számítógépek felépítése, működési módjai
Cache példák 2019 (IMSC).
Előadás másolata:

Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik 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

Máté: Architektúrák5. előadás2 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 MOVSd,s; MOVe String (byte vagy word) d és s csak azt mondja meg, hogy bájtos vagy szavas az átvitel!

Máté: Architektúrák5. előadás3 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 LODSs; 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 STOSd; STOre String (byte vagy word)

Máté: Architektúrák5. előadás4 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 CMPSd,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 illetve AX – d (!!!) értékének megfelelően állnak be. SCASB; SCAn String Byte SCASW; SCAn String Word SCASd; SCAn String (byte vagy word)

Máté: Architektúrák5. előadás5 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-gyel csö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.

Máté: Architektúrák5. előadás6 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 mindig REP-et használjunk, flag-et beállító utasítás előtt pedig sohase REP-et, hanem helyette a vele egyenértékű REPE-t vagy REPZ-t!

Máté: Architektúrák5. előadás7 ; A 100 elemű array nevű tömbnek van-e ;3-tól különböző eleme? movcx, 100 movdi, -1; előbb lehessen inc, mint cmp moval, 3 NEXT: incdi cmparray[di], al ; array di-edik eleme = 3? LOOPENEXT; ugrás NEXT-re, ; ha CX  0 és a di-edik elem=3 JNENEM3; CX = 0 vagy array[di]  3...; array  3... NEM3:...; di az első 3-tól különböző...; elem indexe

Máté: Architektúrák5. előadás8 Ugyanennek a feladatnak a 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? movcx,100 movdi,offset array movAL,3 REPESCASarray; array 0., 1.,... eleme = 3? JNENEM3...; array  3,... NEM3:DECDI; DI az első  3 elemre mutat...

Máté: Architektúrák5. előadás9 A 100 elemű array nevű tömbnek van-e 3-tól különböző eleme? movcx, 100 movdi, -1 moval, 3 NEXT: incdi cmparray[di], al LOOPENEXT JNENEM3... NEM3: movcx,100 movdi,offset array movAL,3 REPESCASarray JNENEM3... NEM3:DECDI... Használja ES-t. Sokkal gyorsabb Nem minden eltérés lényeges!

Máté: Architektúrák5. előadás10 Egyszerűsített lexikális elemző Feladata, hogy azonosító, szám, speciális jelek és a program vége jel előfordulásakor rendre A, 0,, és. karaktert írjon a képernyőre. Az esetleges hibákat ? jelezze. XLAT utasítás alkalmazásának tervezése: Karakter típusokkarakterekkód BetűA … Z a … z2 Számjegy0 … 94 Speciális jel,. tabulátor ; + - ( ) cr lf6 Vége jel$8 Hibás karaktera többi0

Máté: Architektúrák5. előadás11 datasegment para public ’data’ ; ugró táblák a szintaktikus helyzetnek megfelelően: ; kezdetben, speciális és hibás karakter után ;következő karakter t_sdwhiba ; hibás kar.: ?  spec. jel szint dwlev_a; betű: A  azonosító szint dwlev_n ; számjegy: 0  szám szint dwlev_s; spec. jel:,  spec. jel szint dwvege; $:.  program vége

Máté: Architektúrák5. előadás12 ; azonosító szint t_adwhiba ; hibás kar.: ?  spec. jel szint dwok; betű: nincs teendő dwok ; számjegy: nincs teendő dwlev_s; speciális jel:,  spec. jel szint dwvege; $:.  program vége ; szám szint t_ndwhiba ; hibás kar.: ?  spec. jel szint dwhiba; betű: hiba: ?  spec. jel szint dwok ; számjegy: nincs teendő dwlev_s; speciális jel:,  spec. jel szint dwvege; $:.  program vége

Máté: Architektúrák5. előadás13 leveldw?; az aktuális ugrótábla címe c_hdb0; hibás karakter kódja c_bdb2; betű kódja c_ndb4; számjegy kódja c_sdb6; speciális jel kódja c_vdb8; végjel kódja specjeldb’,.;+-()’, 13, 10; a speciális jelek vegjeldb’$’; vége jel, kihasználjuk, ; hogy itt van! tabledb256 dup (?); átkódoló tábla (256 byte) textdb’a,tz.fe&a 21 a12  12a $’ ; elemzendő szöveg dataends

Máté: Architektúrák5. előadás14 codesegment para public ’code’ assume cs:code, ds:data, es:data, ss:stack lexprocfar pushds xorax,ax pushax ; visszatérési cím a veremben movax,data movds,ax moves,ax; assume miatt callprepare; átkódoló tábla elkészítése movsi, offset text; az elemzendő szöveg ; kezdőcíme callparsing; elemzés ret; vissza az Op. rendszerhez lexendp

Máté: Architektúrák5. előadás15 prepareproc; az átkódoló tábla elkészítése ; az eljárás rontja ax, bx, cx, di, si tartalmát cld ; a string műveletek iránya pozitív movbx, offset table movdi,bx moval,c_h; hibás karakter kódja movcx,256; a tábla hossza repstostable; table  minden karakter hibás

Máté: Architektúrák5. előadás16 moval,c_b; betű kódja movdi,’A’; A ASCII kódja adddi,bx; A helyének offset címe movcx,’Z’-’A’+1; a nagybetűk száma ; a betűk ASCII kódja folyamatos! repstosb movdi,’a’; a ASCII kódja adddi,bx; a helyének offset címe movcx,’z’-’a’+1; a kisbetűk száma repstosb

Máté: Architektúrák5. előadás17 moval,c_n; számjegy kódja movdi,’0’; 0 ASCII kódja adddi,bx; 0 helyének offset címe movcx,’9’-’0’+1; a számjegyek száma ; a számjegyek ASCII kódja folyamatos! repstosb

Máté: Architektúrák5. előadás18 movsi,offset specjel; speciális jelek ; feldolgozása xorah,ah ; hogy ax=al legyen pr1:lodsspecjel; speciális jel ASCII kódja movdi,ax; ah=0 miatt ax = a jel kódja cmpal,vegjel; vegjel közvetlenül a ; speciális jelek után van! jepr2; ez már a vegjel moval,c_s; speciális karakter kódja mov[bx+di],al; elhelyezés a táblában jmppr1; ciklus vége

Máté: Architektúrák5. előadás19 pr2:moval,c_v; a végjel kódja mov[bx+di],al; elhelyezés a táblában ret; vissza a hívó eljáráshoz prepareendp

Máté: Architektúrák5. előadás20 parsingproc; elemzés ; az eljárás rontja ax, bx, cx, di, si tartalmát cld; a string műveletek iránya pozitív movbx, offset table movdi,offset t_s ; spec. jel szint lv1:movlevel,di; szint beállítás xorah,ah; hogy ax=al legyen ok:lodstext; a következő karakter xlat; al  0, 2, 4, 6 vagy 8 movdi, level; di  az akt. ugrót. címe adddi, ax; az ugrótáblán belüli cím jmp[di]; kapcsoló utasítás

Máté: Architektúrák5. előadás21 hiba:movdi,offset t_s; hibás karakter, ; spec. jel szint következik moval,’?’ lv2: movah,14; BIOS hívás előkészítése int10h; BIOS hívás: ; karakter írás a képernyőre jmplv1 lev_a:movdi,offset t_a; azonosító kezdődik moval,’A’ jmplv2

Máté: Architektúrák5. előadás22 lev_n:movdi,offset t_n; szám kezdődik moval,’0’ jmplv2 lev_s:movdi,offset t_s; speciális jel moval,’,’ jmplv2 vege:moval,’.’; szöveg vége movah,14; BIOS hívás előkészítése int10h; BIOS hívás: ; karakter írás a képernyőre ret; elemzés vége, vissza a hívóhoz parsingendp codeends

Máté: Architektúrák5. előadás23 stacksegmentparastack ’stack’ dw100 dup (?); 100 word legyen a verem stack ends endlex; modul vége, start cím: lex

Máté: Architektúrák5. előadás24 Mikroarchitektúra szint Feladata az ISA (Instruction Set Architecture – gépi utasítás szint) megvalósítása. Nincs rá általánosan elfogadott, egységes elv. A ISA-szintű utasítások „függvények”, ezeket egy főprogram hívja meg végtelen ciklusban. A függvények a mikroarchitektúra szintjén valósulnak meg (mikroprogram). A mikroprogram változói (a regiszterek) definiálják a számítógép állapotát, pl.: PC (Program Counter, utasításszámláló).

Máté: Architektúrák5. előadás25 Mic-1 Adatút (Data Path, 4.1. ábra) 32 bites regiszterek, sínek, ALU, léptető SLL8 8 bittel balra, SRA1 1 bittel jobbra léptet. ALU bemenetei: H (Holding – tartó), B sín. Egy cikluson belül lehetséges egy regiszterből olvasni és az eredményt akár ugyanoda visszaírni 4.3. ábra. Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás26 Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás ALU vezérlés Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás28 Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás29 Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás30 Memóriaműveletek (4.1. ábra) Szócímzés: 32 bites adat írása, olvasása. szó cím = 4 * (bájt cím), a túlcsorduló bitek elvesznek MAR (Memory Address Register) MDR (Memory Data Register) Bájtcímzés: gépi szintű utasítás bájt olvasás. PC (Program Counter): bájt cím, MBR (Memory Byte Register): bájt. MBR kétfajta értelmezése (két vezérlőjel): MBR: MBR előjel kiterjesztéssel kerül a B sínre, MBRU: MBR előjel nélküli kiterjesztéssel kerül a B sínre. MAR MDR PC MBR memória

Máté: Architektúrák5. előadás31 Léptető vezérlés N Z 9 jel: a B sínre írás a regiszterekből, 8 jel: 6 az ALU és 2 a léptető vezérlésére, 9 jel: a C sínről regiszterekbe írás, 3 jel: a memória eléréshez 2 jel: szó íráshoz/olvasáshoz 1 jel: bájt olvasáshoz. Összesen 29 jel szükséges A B sínre csak egy regiszter írhat egyszerre, ezért 9 helyett elég 4 jel, összesen 24 vezérlő jelre van szükség. Az adatút vezérlése (4.1. ábra) 6 2 ALU vezérlés A B C sín B sín ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás32 NEXT ADDRESS JMPC JAMN JAMZ SLL8 SRA1 F0F1 ENA ENB INVA INC H OPC TOS LV SP PC MDRMAR WRITE READ FETCH B sín Mikroutasítások 24 bit: az adatút vezérléséhez 9 bit: a következő utasítás címének megadásához, 3 bit: a következő utasítás kiválasztásának módjára. Ez adja a 36 bites mikroutasítást: 4.5. ábra. 0 = MDR1 = PC2 = MBR3 = MBRU4 = SP 5 = LV6 = CPP7 = TOS8 = OPC9-15 semmi AddrJAMALUCMemB

Máté: Architektúrák5. előadás33 SP  B sín; ALU  C; C  SP

Máté: Architektúrák5. előadás34 Memória ciklus A memória ciklus az adatút végén kezdődik (a C sínről a regiszterek feltöltése után), ezért ha a memória címet módosította ez a mikroutasítás, akkor a memória cím a módosított MAR ill. PC regiszter értéke lesz. Az olvasás eredménye csak két ciklussal később használható az ALU-ban, mert MDR ill. MBR csak a következő adatút ciklus vége felé töltődik fel a memó- riából, addig MDR ill. MBR régi értéke érhető el. MAR MDR PC MBR memória

Máté: Architektúrák5. előadás35 Memória ciklus: MAR = LV; rd; TOS = MDR

Máté: Architektúrák5. előadás36 Mic-1: 4.6. ábra. 512x36 bites vezérlőtár a mikroprogramnak, MPC (MicroProgram Counter): mikroprogram-utasításszámláló. MIR (MicroInstruction Register): mikroutasítás-regiszter. Az adatút ciklus (4.6. ábra) elején MIR feltöltődik a vezérlőtár MPC által mutatott szavával. AddrJALUCMB 9 512x36 bites vezérlőtár (ROM) a mikroprogram tárolására MIR MPC 4-ről 16-ra dekódoló A mikroprogram

Máté: Architektúrák5. előadás37 Adatút ciklus (4.6. ábra): (MIR feltöltődik a vezérlőtár MPC által mutatott szavával.) Kialakul a B sín kívánt tartalma, ALU és a léptető megtudja, mit kell csinálnia, Az ALU és a léptető elvégzi a feladatát, a C sín, N (Negative) és Z (Zero) megkapja az új értékét, A regiszterek feltöltődnek a C sínről. MBR/MDR megkapja az értékét, ha az előző ciklus adatot kért a memóriából. Kialakul MPC új értéke. Memória ciklus kezdete. N Z 6 2 A B C sín B sín ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás38 Mic-1: 4.6. ábra. AddrJALUCMB x36 bites vezérlőtár (ROM) a mikroprogram tárolására MIR MPC N Z MBR 8 JAMN/JAMZ JMPC 1 bites flip-flopok (N&JAMN) + (Z&JAMZ) + MPC új tartalmának kialakítása 1 2 3

Máté: Architektúrák5. előadás39 MPC új tartalma, JAMN/JAMZ A 9 bites következő cím (Addr) az MPC-be kerül. (JAMN ÉS N) VAGY (JAMZ ÉS Z) és MPC legmagasabb bitjének logikai vagy kapcsolata képződik MPC legmagasabb helyértékén. Pl.: esetén a mikroprogram a 0x092 címen folytatódik, ha Z = 0, 0x192 címen folytatódik, ha Z = 1. Feltételes ugrás – elágazás – a mikroprogramban. CímAddrJAMAdatút vezérlő bitek 0x750x JAMZ =1

Máté: Architektúrák5. előadás40 JAMN: if(LV-H < 0) goto L1; else goto L2 L2+ 0x100= L1

Máté: Architektúrák5. előadás41 MPC új tartalma, JMPC JMPC esetén MPC 8 alacsonyabb helyértékű bitjének és MBR 8 bitjének bitenkénti vagy kapcsolata képződik MPC-ben az adatút ciklus vége felé (MBR megérkezése után). Ilyenkor Addr 8 alacsonyabb helyértékű bitje általában 0 Feltétlen ugrás az MBR-ben tárolt címre – kapcsoló utasítás: goto(MBR) vagy goto(MBR OR 0x100) Kezdődhet az újabb mikroutasítás végrehajtása.

Máté: Architektúrák5. előadás42 JMPC: TOS=H+SP+1; goto(MBR)

Máté: Architektúrák5. előadás43 Mic-1 működése (MPC)  MIR regiszter  B sín,Addr  MPC ALU, léptető megtudja, mit kell csináljon, eredmény  C, N, Z C  regiszterekbeJAMN, JAMZ és(N), (Z) mem.  MDR és/vagyalapján módosul MPC mem.  MBR Memória ciklus indításaJMPC és (MBR) (rd, wr, fetch)alapján módosul MPC.

Máté: Architektúrák5. előadás44 Mic-1 programozása (4.5, 6. ábra) 36 bites bináris utasításokat kellene megadnunk. Pl.: Egy ciklusban növeljük SP-t 1-gyel és olvasást kezdeményezünk a memóriából, folytatás a 122-es utasításnál. Szimbolikusan ilyesmi: ReadRegister = SP, ALU = INC, Write SP, Read, NextAddress = 122; Nehézkes, helyette: SP = SP + 1; rd A folytatás címet csak akkor tüntetjük fel, ha az nem a következőként írt mikroutasítás (pl. goto Main1).

Máté: Architektúrák5. előadás45 MAL (Micro Assembly Language ) SOURCE: a B sínre kötött regiszterek bármelyike: MDR, PC, MBRU (előjel nélküli - MBR Unsigned), MBR, SP, LV, CPP, TOS, OPC. DEST: a C sínre kapcsolt regiszterek bármelyike: MAR, MDR, PC, SP, LV, CPP, TOS, OPC, H. Több regiszter is kaphatja ugyanazt az értéket. wr: memóriába írás MDR-ből a MAR címre. rd: memóriából olvasás MDR-be a MAR címről. fetch: 8 bites utasításkód betöltése MBR-be a PC címről. N Z 6 2 A B C sín B sín ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás46 Nem megengedett pl. az alábbi utasítás pár: MAR = SP; rd MDR = H // A memóriából is most kapna értéket!

Máté: Architektúrák5. előadás47 Feltétlen ugrás: goto Main1 Az Addr mezőbe Main1 címét kell írni. Feltétlen ugrás MBR szerint (kapcsoló utasítás): Ilyenkor JMPC = 1 goto (MBR OR value) value általában 0 vagy 0x100.

Máté: Architektúrák5. előadás48 Feltételes elágazás, pl.: TOS (Top Of Stack) alapján Z = TOS ; if (Z) goto L1; else goto L2 // Z=1, ha TOS=0, különben Z=0. esetén a mikroprogram az L20x092 címen folytatódik, ha Z = 0, L10x192 címen folytatódik, ha Z = 1. Az L1 és L2 címek különbsége 256 (0x100) kell legyen (4.7. ábra)! CímAddrJAMAdatút vezérlő bitek 0x750x JAMZ =1

Máté: Architektúrák5. előadás49 Eljárás: paraméterek, munka terület. A hívó és hívott eljárás paraméterei, változói nem lehetnek azonos területen: lokális változók. Verem (stack): LV (Local Variable), SP (Stack Pointer) verem mutató (4.8. ábra). SP → d5 d4 d3 d2 LV → d1 a3 a2 a1 SP → a3 a2 LV → a1 SP → b4 b3 b2 LV → b1 a3 a2 a1 SP → c2 LV → c1 b4 b3 b2 b1 a3 a2 a1

Máté: Architektúrák5. előadás50 A verem operandusok és az eredmény ideiglenes tárolására is használható (operandus verem), pl. (4.9. ábra): a1 = a2 + a3 SP → a2 a3 a2 LV → a1 SP → a3 a2 a3 a2 LV → a1 SP → a2+a3 a3 a2 LV → a1 SP → a3 a2 LV → a2+a3

Máté: Architektúrák5. előadás51 IJVM (Integer Java Virtual Machine): a JVM egész értékű aritmetikát tartalmazó része. Az IJVM utasítások szerkezete: az első mező az opcode (Operation Code, műveleti kód), az esetleges második mezőben az operandus meghatározására szolgáló adat van. Mikroprogram: betölti, értelmezi és végrehajtja az IJVM utasításokat: betöltés-végrehajtás (fetch-execute) ciklus.

Máté: Architektúrák5. előadás52 Az IJVM memóriamodellje (4.10. ábra) A 4 GB memória, 1 G szóként is szervezhető. CPP → Konstans terület SP → Aktuális operandusok 3. LV → Aktuális lokális változók 3. lokális változók 2. lokális változók 1. PC → Metódus terület Konstansok, mutatók Tartalma a program betöltésekor alakul ki, ISA utasítások nem írhatják felül Program PC bájtot címez a metódus területen belül Verem lokális változók és operandus verem

Máté: Architektúrák5. előadás53 IJVM néhány utasítása: ábra (részlet). hexMnemonicjelentés 10BIPUSH byte Beteszi a byte–ot a verembe A7GOTO offset Feltétel nélküli ugrás offset -re 60IADD Kivesz a veremből két szót, az összegüket a verembe teszi 99IFEQ offset Kivesz a veremből egy szót, ha 0, akkor offset -re ugrik 9FIF_ICMPEQ offset Kivesz a veremből két szót, ha egyenlők, akkor offset - re ugrik 15ILOAD varnum Beteszi varnum -ot a verembe 36ISTORE varnum Kivesz a veremből egy szót, és eltárolja varnum -ba 64ISUB Kivesz a veremből két szót, a különbségüket a verembe teszi 00NOP Nem csinál semmit 5FSWAP A verem két felső szavát megcseréli

Máté: Architektúrák5. előadás54 Java (C) IJVM program ábra Bin. kód program 1ILOADj// i = j + k ILOADk i = j + k; 3IADD 60 if(i = = 3) 4ISTOREi k = 0; 5ILOADi// if(i = = 3) else 6BIPUSH j = j – 1; 7IF_ICMPEQ L1 9F 00 0D 8ILOADj// j = j – BIPUSH ISUB 64 11ISTOREj GOTOL2 A7 00 0F 13 L1:BIPUSH0// k = ISTOREk L2:

Máté: Architektúrák5. előadás55 IJVM megvalósítása Mic-1-en (4.11., 17. ábra) Előkészület a gép indításakor: PC a végrehajtandó utasítás címét, MBR az utasítás kódját tartalmazza. A főciklus legelső mikroutasítása a Main1, ez: PC=PC+1; fetch; goto(MBR); PC most a végrehajtandó utasítás utáni bájtra mutat, ez lehet egy újabb utasítás kódja, vagy operandus. PC új értékének kialakulása után indul a fetch-csel kezdeményezett memória ciklus, ez a program következő bájtját olvassa MBR-be (a következő mikroutasítás végén lesz MBR-ben a bájt). goto (MBR) elugrik az utasítás feldolgozásához.

Máté: Architektúrák5. előadás56 Minden utasítás feldolgozását végző függvény első mikroutasítása az utasítás kódnak megfelelő címen van a mikroprogram tárban.

Máté: Architektúrák5. előadás57 A mikroutasítások elhelyezkedése a mikroprogram tárban (részlet) A 3 B 4 C 5 D 6 E 7 F 0NOP1IAND3POP3SWAP2SWAP3SWAP4SWAP5SWAP6 8LDC_W3LDC_W4IINC3IINC4IINC5IINC6IFLT2IFLT3 10BIPUSH1BIPUSH2 LDC_W1LDC_W2ILOAD1ILOAD2ILOAD3 18ILOAD4ILOAD5IFLT4INVOKEV19INVOKEV20INVOKEV21INVOKEV22INVOKEV23 20FF ISTORE1ISTORE2 38ISTORE3ISTORE4ISTORE5ISTORE POP1 58POP2DUP1DUP2SWAP1 60IADD1IADD2IADD3ISUB1ISUB2ISUB IAND1IAND2 80IOR1IOR2IOR3IINC1IINC2INVOKEV1INVOKEV2 88INVOKEV3INVOKEV4INVOKEV5INVOKEV6INVOKEV7INVOKEV8INVOKEV9INVOKEV10

Máté: Architektúrák5. előadás58 Látható, hogy nem helyezhetjük egymás után az egyes utasítások feldolgozását végző mikroutasítás sorozatot, ezért inkább azt a megoldást választottuk, hogy minden mikroutasítás tartalmazza a következő címét. Ha az első utasítás pl. NOP (No OPeration, nem csinál semmit), ennek a kódja 0x00, ezért a 0x00 címen kezdődik a NOP feldolgozását végző függvény. Ez egyetlen goto Main1 mikroutasítás.

Máté: Architektúrák5. előadás59 IJVM megvalósítása Mic-1-en (4.11., 17. ábra) A főciklus a Main1-nél kezdődik; PC a végrehajtandó utasítás címét, MBR az utasítás kódját tartalmazza. Main1 a következő utasítást vagy adatbájtot olvassa. CímkeMűveletek // kommentár Main1PC = PC + 1; fetch; goto(MBR) nop1goto Main1 iadd1MAR = SP = SP – 1; rd iadd2H = TOS iadd3MDR = TOS = MDR + H; wr; goto Main1

Máté: Architektúrák5. előadás60

Máté: Architektúrák5. előadás61 Feladatok Milyen string kezelő utasításokat ismer? Melyik flag módosítja a string kezelő utasítások működését? Melyik szegmens regiszterek befolyásolják a string kezelő utasítások működését? Mi a szerepe a string kezelő utasításokban az operandusoknak? Mely string kezelő utasítások módosítják/nem módosítják a flag-eket? Mit csinál a MOVSW utasítás? Mit csinál a STOS utasítás?

Máté: Architektúrák5. előadás62 Feladatok Azonos-e a MOVSW hatása két egymás utáni MOVSB hatásával? Indokolja a válaszát! Hogy állítja be a flag-eket a CMP d,AL utasítás? Hogy állítja be a flag-eket a CMPSB utasítás? Hogy állítja be a flag-eket a SCAS d utasítás? Milyen ismétlő prefixumokat ismer? Mi az egyes ismétlő prefixumok hatása? Mely prefixumok használata ajánlott flag-eket beállító illetve flag-eket nem módosító string kezelő utasítások előtt?

Máté: Architektúrák4. előadás63 Feladatok Az alábbi feladatok megoldásában használjon ismétlési prefixumot! Állapítsa meg egy 0-ra végződő bájtokból/szavakból álló string hosszát! Keresse meg egy n bájtból álló string-ben az A betű első/utolsó előfordulását (ha van)! Keresse meg egy 0-ra végződő string-ben az A betű első/utolsó előfordulását (ha van)! Helyes-e a SCASW utasítás használata az AB betű kombináció keresésében 2n bájt hosszú stringben? Indokolja a válaszát!

Máté: Architektúrák4. előadás64 Feladatok Írjon eljárást, amely megállapítja, hogy egy 0-ra végződő string-ben előfordul-e az ABC jelsorozat! Írjon eljárást, amely megállapítja, hogy egy string-ben előfordul-e egy másik string! Töltse fel az n hosszúságú bájt vektort az ABC mintával! Írjon eljárást egy n bájt hosszúságú forrás terület cél területre másolására (a két terület átfedhet)! 2n bájt hosszúságú forrás terület cél területre másolása mindig megoldható MOVSW utasításokkal? (A két terület átfedhet!)

Máté: Architektúrák5. előadás65 Feladatok Mi az egyszerűsített lexikális elemző feladata? Miért szerepel az assume utasításban es: data? Mire szolgál a CLD utasítás? Milyen ugrótáblákat tartalmaz a program? Milyen adatokat tartalmaz egy ugró tábla? Hogy értük el, hogy ugró táblát alkalmazhatunk a programban? Hogy működik az XLAT utasítás? Miért alkalmaztunk más módszert az átkódoló tábla kialakításakor a nagy betűk kódjának beírásához, mint a speciális jelek kódjának beírásához?

Máté: Architektúrák5. előadás66 Feladatok Milyen eljárásokkal valósítottuk meg az egyszerűsített lexikális elemzőt? Melyiknek mi a feladata? Milyen karakter eredményez hibát szám beolvasása közben? Milyen szintaktikus helyzetbe kerül a program hiba észlelése után? Hogyan kezeli a program a különböző szintaktikus helyzeteket? Magyarázza el a JMP [ax] utasítás működését! Mit kellene módosítani a programban, hogy a vége jel csak speciális jel után következhessen?

Máté: Architektúrák5. előadás67 Feladatok Mi a mikroarchitektúra szint feladata? Hogy valósítja meg a feladatát? Mi az adatút? Milyen sínjei vannak a Mic-1 -nek? Mely regiszterek csatlakoznak az A sínhez? Mely regiszterek csatlakoznak a B sínhez? Mely regiszterek csatlakoznak a C sínhez? Milyen jelek szükségesek az adatút vezérléséhez? Mire szolgál az SP regiszter két vezérlő bemenete? Mire szolgál az MBR regiszter két vezérlő bemenete?

Máté: Architektúrák5. előadás68 Feladatok Hogy történik a memóriából olvasás? Hogy történik a memóriába írás? Mire szolgál a MAR/MDR regiszter? Ha egy mikroutasítás módosítja MAR tartalmát, és olvas a memóriából, akkor mely címről fog olvasni? Memóriából olvasás után mikor használható MDR új értéke az adatúton illetve MPC meghatározásához? Mire szolgál a PC és az MBR regiszter? Mire szolgál az N és a Z regiszter? Mire szolgál a H regiszter?

Máté: Architektúrák5. előadás69 Feladatok Milyen memória műveletei vannak a Mic-1 -nek? Milyen jelek szükségesek a Mic-1 adatútjának vezérléséhez? Hány jel szolgál az A sín vezérlésére? Hány jel szolgál a B sín vezérlésére? Hány jel szolgál az ALU és a léptető vezérlésére? Hány jel szolgál a C sín vezérlésére? Hány jel szolgál a memória elérésére? Milyen részei vannak a Mic-1 mikroutasításainak? Milyen részei vannak az adatút ciklusnak?

Máté: Architektúrák5. előadás70 Feladatok Milyen részei vannak a Mic-1 mikroutasításainak? Milyen típusú memória a mikroprogram tároló? Mire szolgál az MPC regiszter? Mire szolgál az MIR regiszter? Miért van szükség az Addr mezőre? Milyen részei vannak az adatút ciklusnak? Hány bit kell a B/C sín vezérléséhez? Mire szolgál a JMPN/JMPZ bit? Mire szolgál a JMPC bit? Hogy alakul ki MPC új tartalma?

Máté: Architektúrák5. előadás71 Feladatok Miért nem megengedett az MAR = SP; rd MDR = H utasítás pár? Hogy valósítható meg feltétlen ugrás a mikroprogramban? Hogy valósítható meg feltételes ugrás a mikroprogramban? Hogy valósítható meg kapcsoló utasítás a mikroprogramban?

Máté: Architektúrák5. előadás72 Feladatok Milyen részei vannak az egy bites ALU-nak? Milyen vezérlő bemenetei vannak az ALU-nak? Milyen vezérlő bemenetek esetén lesz 1 az eredmény? Milyen eredményt szolgáltat az F 0 =0, F 1 =1, ENA=0, ENB=0, INVA=1, INC=1 vezérlő bemenet? A Mic-1 mely regisztere lehet az ALU bal/jobb operandusa? Hova tárolhatja a Mic-1 az eredményt? Érvényes utasítás-e Mic-1-en a H=OPC-H? Miért? Érvényes utasítás-e Mic-1-en a H=H-OPC? Miért?

Máté: Architektúrák5. előadás73 Feladatok Milyen utasításai vannak a Mic-1 gépnek? Milyen ugró utasításai vannak a Mic-1 gépnek? Milyen értékeket vehet föl a SOURCE operandus? Milyen értékeket vehet föl a DEST operandus? Mit jelent a wr? Mely utasítások tudnak olvasni a memóriából, és hogy működnek? Hogy lehet védekezni az ellen, hogy MDR egyszerre kapjon értéket a memóriából és a C sínről? Mi az operandus verem?

Máté: Architektúrák5. előadás74 Feladatok Minek a rövidítése az IJVM? Ismertesse az IJVM memóriamodelljét! Milyen utasításai vannak az IJVM-nek? Mi a BIPUSH/DUP/IADD/SWAP utasítás feladata? Mi a GOTO utasítás feladata? Mi a IFEQ/IF_ICMPEQ utasítás feladata? Hogy működik a Mic-1 főciklusa? Mit tartalmaz PC és MBR a főciklus indulásakor? Hogy valósítható meg Mic-1-en a NOP utasítás? Hogy valósítható meg Mic-1-en az IADD utasítás?