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á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.
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á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á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
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
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).
Számítógépek felépítése 9. előadás I/O rendszerek
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: Nem minden eltérés lényeges! movcx,100 movdi,offset array MOVAL,3 REPESCASarray JNENEM3... NEM3:DECDI... Használja ES-t Sokkal gyorsabb

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 addax,level; ax  az aktuális ; ugró táblán belüli cím jmp[ax]; 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 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja 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. ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás26 ALU vezérlés 6 Léptető vezérlés 2 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja SP  B sín ALU: B+1 C  SP MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető memória

Máté: Architektúrák5. előadás27 ALU vezérlés 6 Léptető vezérlés 2 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja SP  B sín ALU: B+1  C C  SP MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető memória

Máté: Architektúrák5. előadás28 ALU vezérlés 6 Léptető vezérlés 2 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja SP  B sín ALU: B+1  C C  SP MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető memória

Máté: Architektúrák5. előadás29 ALU vezérlés 6 Léptető vezérlés 2 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja SP  B sín ALU: B+1  C C  SP MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető memória

Máté: Architektúrák5. előadás30 ALU vezérlés 6 Léptető vezérlés 2 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja SP  B sín ALU: B+1  C C  SP MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető memória

Máté: Architektúrák5. előadás31 ALU vezérlés 6 Léptető vezérlés 2 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 Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja SP  B sín ALU: B+1 C  SP MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető memória

Máté: Architektúrák5. előadás32 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ás33 Léptető vezérlés 6 2 ALU vezérlés A B N Z C sín B sín 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 (nem ábrázoltuk!) 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) ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

Máté: Architektúrák5. előadás34 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ás35 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ó

Máté: Architektúrák5. előadás36 A B 6 2 ALU vezérlés N Z ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető 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.

Máté: Architektúrák5. előadás37 Memória ciklus A memória ciklus az adatút végén kezdődik (MAR ill. PC 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 MAR MDR PC MBR 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.

Máté: Architektúrák5. előadás38 Mic-1: 4.6. ábra. MPC új tartalmának kialakítása. 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) +

Máté: Architektúrák5. előadás39 MPC új tartalma A 9 bites következő cím (Addr) az MPC-be kerül. JAMN/JAMZ esetén MPC legmagasabb bitjének és az N/Z bitnek logikai vagy kapcsolata képződik MPC legmagasabb helyértékével (elágazás). 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 MPC új tartalma (folytatás) 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. Kezdődhet az újabb mikroutasítás végrehajtása.

Máté: Architektúrák5. előadás41 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(N, Z) mem.  MDR és/vagyalapján módosul MPC mem.  MBR Memória ciklus indításaJMPC(MBR) (rd, wr, fetch)alapján módosul MPC.

Máté: Architektúrák5. előadás42 Az ALU-nak ( ábra) 6 vezérlő bemenete van:  ENA az A bemenet engedélyezése (1) tiltása (0),  ENB a B bemenet engedélyezése (1) tiltása (0),  F0,  F1. F0, F1 kiválasztja az AND, OR, B#, + művelet valamelyikét,  INC: +1. teljes összeadó dekódoló F0F0 F1F1 INVA A ENA B ENB  INVA: Ha ENA = 1, akkor A#, Ha ENA = 0, akkor 0# = FFFF = – 1. átvitel be átvitel ki

Máté: Architektúrák5. előadás43 F0F0 F1F1 ENAENBINVAINCEredmény A B #A #B A + B A + B A B B – A B – – A A AND B A OR B – 1 Néhány példa (4.2. ábra)

Máté: Architektúrák5. előadás44 Az ALU-val végezhető műveletek: ábra A 4.2. ábra alapján: DEST = HDEST = SOURCE – H DEST = SOURCEDEST = SOURCE – 1 DEST = #HDEST = –H DEST = #SOURCEDEST = H AND SOURCE DEST = H + SOURCEDEST = H OR SOURCE DEST = H + SOURCE + 1DEST = 0 DEST = H + 1DEST = 1 DEST = SOURCE + 1DEST = –1 Az eredmény balra léptethető 8 bittel ( >1).

Máté: Architektúrák5. előadás45 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ás46 MAL (Micro Assembly Language ) SOURCE: a B sínre kötött regiszterek bármelyike: MDR, PC, MBRU (előjel nélküli - Unsigned MBR) 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. ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető

Máté: Architektúrák5. előadás47 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ás48 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ás49 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ás50 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ás51 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ás52 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ás53 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ás54 IJVM néhány utasítása: ábra. 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ás55 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ás56 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 magát az utasítást 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ás57 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. Ez az oka, 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ás58 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 magát az utasítást 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ás59 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ás60 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ás61 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ás62 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ás63 Feladatok Mi az egyszerűsített lexikális elemző feladata? Miért szerepel az assume utasításban es: data? Mire sztolgá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ás64 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ás65 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ás66 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ás67 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ás68 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ás69 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ás70 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ás71 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ás72 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?