Máté: Számítógép architektúrák

Hasonló dokumentumok
Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Digitális rendszerek. Mikroarchitektúra szintje

Számítógép architektúrák

Bevezetés az informatikába

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

VEZÉRLŐEGYSÉGEK. Tartalom

Adatelérés és memóriakezelés

1. Az utasítás beolvasása a processzorba

Egyszerű RISC CPU tervezése

Digitális rendszerek. Utasításarchitektúra szintje

A 32 bites x86-os architektúra regiszterei

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Máté: Számítógép architektúrák

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Máté: Számítógép architektúrák

A MiniRISC processzor

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

Adatok ábrázolása, adattípusok

Aritmetikai utasítások I.

Máté: Számítógép architektúrák

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Assembly Utasítások, programok. Iványi Péter

Programozás alapjai. 10. előadás

1. ábra: Perifériára való írás idődiagramja

Mintavételes szabályozás mikrovezérlő segítségével

Szekvenciális hálózatok és automaták

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

Számítógépek felépítése, alapfogalmak

Assembly utasítások listája

A mikroprocesszor felépítése és működése

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Számítógépek felépítése

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

DSP architektúrák dspic30f család

SzA19. Az elágazások vizsgálata

Az MSP430 mikrovezérlők digitális I/O programozása

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

A Számítógépek felépítése, mőködési módjai

7.hét: A sorrendi hálózatok elemei II.

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Számítógép architektúrák

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

A számítógép alapfelépítése

Assembly. Iványi Péter

7. Fejezet A processzor és a memória

Programozási nyelvek 6. előadás

Máté: Assembly programozás

Számítógépek felépítése, alapfogalmak

Máté: Számítógép architektúrák

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Digitális technika VIMIAA02 9. hét

Gábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006

Mutatók és mutató-aritmetika C-ben március 19.

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Máté: Számítógép architektúrák

DSP architektúrák dspic30f család memória kezelése

Programozott soros szinkron adatátvitel

Számítógép Architektúrák

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

Az interrupt Benesóczky Zoltán 2004

Adatszerkezetek 1. Dr. Iványi Péter

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Összeadás BCD számokkal

Hardverközeli programozás 1 1. gyakorlat. Kocsis Gergely

Informatika 1 2. el adás: Absztrakt számítógépek

Mikrokontrollerek. Tihanyi Attila május 8

Labor gyakorlat Mikrovezérlők

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

INTEL 8085 gépi utasításkészlete

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Digitális technika VIMIAA02 9. hét Fehér Béla BME MIT

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Szoftvertechnológia alapjai Java előadások

A programozás alapjai

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Máté: Számítógép architektúrák

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Assembly. Iványi Péter

Máté: Számítógép architektúrák

Labor gyakorlat Mikrovezérlők

Központi vezérlőegység

Assembly programozás levelező tagozat

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

BASH script programozás II. Vezérlési szerkezetek

A/D és D/A konverterek vezérlése számítógéppel

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Számítógép architektúrák

Átírás:

A mikroprogram Mic 1: 4.. ábra. 51x3 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.. ábra) elején MIR feltöltődik a vezérlőtár MPC által mutatott szavával. MPC 51x3 bites vezérlőtár (ROM) a mikroprogram tárolására MIR Addr J ALU C M 4 ről 1 ra dekódoló. előadás 1 memória C MAR MDR PC MR SP LV CPP TOS OPC H A ALU N Z Léptető Az ábra ajánlott Adatút ciklus (4.. ábra): (MIR feltöltődik a vezérlőtár MPC által mutatott szavával.) Kialakul a 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, N (Negative) és Z (Zero) megkapja az új értékét, A regiszterek feltöltődnek a C ről. MR/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.. előadás MPC új tartalma, JAMN/JAMZ A 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.: Cím Addr JAM Adatút vezérlő bitek 0x75 0x0 001... JAMZ =1 JAMN: if(lv-h < 0) goto L1; else goto L esetén a mikroprogram a 0x0 címen folytatódik, ha Z = 0, 0x1 címen folytatódik, ha Z = 1. Feltételes ugrás elágazás a mikroprogramban.. előadás 3. előadás 4 mic1_.swf MPC új tartalma, JMPC JMPC esetén MPC 8 alacsonyabb helyértékű bitjének és MR 8 bitjének bitenkénti vagy kapcsolata képződik MPC ben az adatút ciklus vége felé (MR megérkezése után). Ilyenkor Addr 8 alacsonyabb helyértékű bitje általában 0 Feltétlen ugrás az MR ben tárolt címre kapcsoló utasítás: goto(mr) vagy goto(mr OR 0x100) Kezdődhet az újabb mikroutasítás végrehajtása. JMPC: TOS=H+SP+1; goto(mr). előadás 5. előadás mic1_.swf 1

MR VAGY 8 (N&JAMN) VAGY (Z&JAMZ) 1 bites flip flopok MPC új tartalmának kialakítása N Z Az ábra ajánlott MPC 3 JMPC 51x3 bites vezérlőtár (ROM) a mikroprogram tárolására á JAMN/JAMZ MIR Addr J ALU C M Mic 1: 4.. ábra.. előadás 7 1 Mic 1 működése (MPC) MIR regiszter, Addr MPC ALU, léptető megtudja, mit kell csináljon, eredmény C, N, Z C regiszterekbe JAMN, JAMZ és (N), (Z) mem. MDR és/vagy alapján módosul MPC mem. MR Memória ciklus indítása JMPC és (MR) (rd, wr, fetch) alapján módosul MPC.. előadás 8 Mic 1 programozása (4.5,. ábra) 3 bites bináris utasításokat kellene megadnunk. Pl.: A mikroprogram tár 11. címén lévő utasítás: egy ciklusban növeljük SP t1 gyel és kezdeményezünk olvasást a memóriából, folytatás a 1 es utasításnál. Szimbolikusan ezt így írhatnánk: SP = SP + 1; rd; goto 1 De így fogjuk írni: 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). memória C MAR MDR PC MR SP LV CPP TOS OPC H A ALU Léptető N Z MAL (Micro Assembly Language ) SOURCE: a re kötött regiszterek bármelyike: MDR, PC, MRU (előjel nélküli MR Unsigned), MR, SP, LV, CPP, TOS, OPC. DEST: a C re 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őla 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 MR be a PC címről.. előadás Az ábra ajánlott. előadás 10 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! Feltétlen ugrás: goto Main1 Az Addr mezőbe Main1 címét kell írni. Feltétlen ugrás MR szerint (kapcsoló utasítás): Ilyenkor JMPC = 1 goto (MR OR value) value általában 0 vagy 0x100.. előadás 11. előadás 1

Feltételes elágazás, pl.: TOS (Top Of Stack) alapján Z = TOS ; if (Z) goto L1; else goto L // Z=1, ha TOS=0, különben Z=0. Cím Addr JAM Adatút vezérlő bitek 0x75 0x0 001... JAMZ =1 esetén a mikroprogram az L 0x0 címen folytatódik, ha Z = 0, L1 0x1 címen folytatódik, ha Z = 1. 4.7. ábra Az L1 és L címek különbsége 5 (0x100) kell legyen!. előadás 13 A verem operandusok és az eredmény ideiglenes tárolására is használható (operandus verem), pl. (4.. ábra): a1 = + a3 SP LV a3 a1 SP a3 a3 LV a1 SP +a3 a3 LV a1 SP a3 LV +a3. előadás 14 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.. előadás 15 Az IJVM memóriamodellje (4.10. ábra) A 4 G memória, 1 G szóként is szervezhető. Konstansok, mutatók Tartalma a program betöltésekor alakul ki, ISA utasítások nem írhatják felül CPP Konstans terület Verem Lokális változók és operandus verem SP Aktuális operandusok 3. LV Aktuális lokális változók 3. lokális változók. lokális változók 1. Program PC bájtot címez a metódus területen belül PC Metódus terület. előadás 1 IJVM néhány utasítása: 4.11. ábra (részlet). hex Mnemonic jelentés 10 IPUSH byte eteszi a byte ot a verembe A7 GOTO offset Feltétel nélküli ugrás offset re 0 IADD Kivesz a veremből két szót, az összegüket a verembe teszi IFEQ offset Kivesz a veremből egy szót, ha 0, akkor offset re ugrik F Kivesz a veremből két szót, ha egyenlők, akkor offset re IF_ICMPEQ ICMPEQ offset ugrik 15 ILOAD varnum eteszi varnum ot a verembe 3 ISTORE varnum Kivesz a veremből egy szót, és eltárolja varnum ba Kivesz a veremből két szót, a különbségüket a verembe 4 ISU teszi 00 NOP Nem csinál semmit 5F SWAP A verem két felső szavát megcseréli. előadás 17 Java (C) IJVM program 4.14. ábra in. kód program 1 ILOAD j // i = j + k 150 ILOAD k 15 03 i = j + k; 3 IADD 0 if(i = = 3) 4 ISTORE i 3 01 k = 0; 5 ILOAD i // if(i = = 3) 15 01 else IPUSH 3 10 03 j = j 1; 7 IF_ICMPEQ L1 F 00 0D 8 ILOAD j // j = j 1 15 0 IPUSH 1 1001 10 ISU 4 11 ISTORE j 3 0 1 GOTO L A7 00 0F 13 L1: IPUSH 0 // k = 0 1000 14 ISTORE k 3 03 15 L: Nem kell. előadás 18 3

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, MR az utasítás kódját tartalmazza. A főciklus legelső mikroutasítása a Main1, ez: PC=PC+1; fetch; goto(mr); 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 MR be (a következő mikroutasítás végén lesz MR ben a bájt). goto (MR) elugrik az utasítás feldolgozásához. 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. A továbbiakban utasításon az IJVM utasításait értjük, a mikroutasításokat μutasítás ként fogjuk jelölni.. előadás 1. előadás 0 A μutasítások egy lehetséges elhelyezkedése a mikroprogram tárban (részlet) 0 1 3 4 5 7 8 A C D E F 0 NOP1 IAND3 POP3 SWAP SWAP3 SWAP4 SWAP5 SWAP LDC_W4 8 LDC_W3 IINC3 IINC4 IINC5 IINC IFLT IFLT3 IPUSH1 IPUSH IPUSH 10 LDC_W1 LDC_W ILOAD1 ILOAD ILOAD3 ILOAD4 ILOAD5 INVOKEV1 INVOKEV0 INVOKEV1 INVOKEV INVOKEV3 18 IFLT4 0 F F 8 30 ISTORE1 ISTORE 38 ISTORE3 ISTORE4 ISTORE5 ISTORE 40 48 50 POP1 58 POP DUP1 DUP SWAP1 0 IADD1 IADD IADD3 ISU1 ISU ISU3 8 70 78 IAND1 IAND INVOKEV1 INVOKEV 80 IOR1 IOR IOR3 IINC1 IINC INVOKEV3 INVOKEV4 INVOKEV5 INVOKEV7 INVOKEV8 INVOKEV INVOKEV10 88 INVOKEV Nem kell. előadás 1 Látható, hogy nem helyezhetjük egymás után az egyes utasítások feldolgozását végző μutasítás sorozatot, ezért inkább azt a megoldást választottuk, hogy minden μutasí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 μutasítás.. előadás 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, MR az utasítás kódját tartalmazza. IJVM program: NOP IADD Main1 a következő utasítást vagy adatbájtot olvassa. Címke Műveletek // kommentár Main1 PC = PC + 1; fetch; goto(mr) nop1 goto Main1 iadd1 MAR = SP = SP 1; rd iadd H = TOS iadd3 MDR = TOS = MDR + H; wr; goto Main1. előadás 3. előadás 4 mic1_3.swf 4

Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny. SP A swap1 MAR = SP 1; rd // A. szó címe, olvasás MAR swap MAR = SP // MAR a verem tetejére mutat MAR A MDR swap1 MAR = SP 1; rd // A. szó címe, olvasás swap MAR = SP // MAR a verem tetejére mutat MAR MAR A MDR swap3 H = MDR; wr //. szó H ba, verem tetejére H = MDR (MAR) swap4 MDR = TOS // verem régi teteje MDR = A SP swap4 ben előny, hogy TOS tartalmazza a verem tetején lévő szót.. előadás 5. előadás swap1 MAR = SP 1; rd // A. szó címe, olvasás swap MAR = SP // MAR a verem tetejére mutat MAR MAR A MDR swap3 H = MDR; wr //. szó H ba, verem tetejére H = MDR (MAR) swap4 MDR = TOS // verem régi teteje MDR = A swap5 MAR = SP 1; wr // a. szóba MAR MDR (MAR) swap TOS = H; goto Main1 // TOS frissítése swap ban hátrány, mert ez az μutasítás csak azért kell, hogy TOS tartalmazza a verem tetején lévő szót. SP A. előadás 7. előadás 8 mic1_4.swf A WIDE utasítás A WIDE utasítás valójában prefixum: önmagában nem csinál semmit, csak jelzi, hogy a következő utasításnak 1 bites indexe van. Pl.: varnum a lokális változó 8 bites indexe. WIDE varnum a lokális változó 1 bites indexe. varnum a lokális változó 8 bites indexe. Main1 PC = PC + 1; fetch; goto(mr) MR = ILOAD iload1 H = LV MR varnum iload MAR = H + MRU; rd // rd(lv+varnum) iload3 MAR = SP = SP + 1 MDR (MAR) iload4 PC = PC + 1; fetch; wr (MAR) MDR iload5 TOS = MDR; goto Main1 MR opkód w_iload1 címe = iload1 címe + 0x100. előadás. előadás 30 5

WIDE varnum a lokális változó 1 bites indexe. Main1 PC = PC + 1; fetch; goto(mr) MR = WIDE iload1 H = LV iload MAR = H + MRU; rd // rd(lv+varnum) iload3 MAR = SP = SP + 1 MDR (MAR) iload4 PC = PC + 1; fetch; wr (MAR) MDR iload5 TOS = MDR; goto Main1 MR opkód wide1 PC = PC + 1; fetch; goto(mr OR 0x100) MR ILOAD w_iload1 PC = PC + 1; fetch // index. bájtja MR 1. bájt w_iload H = MRU << 8 // 1. bájt léptetése MR. bájt w_iload3 H = H OR MRU // H = a 1 bites index w_iload4 MAR = LV + H; rd; goto iload3 rd(lv+varnum). előadás 31. előadás 3 mic1_5.swf 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, EN=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? 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? Melyutasítások tudnak olvasni a memóriából, éshogy működnek? Hogy lehet védekezni az ellen, hogy MDR egyszerre kapjon értéket a memóriából és a C ről? Mi az operandus verem?. előadás 33. előadás 34 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? fetch mikroutasítás után mikor használható MR új értéke az adatúton illetve MPC meghatározásához? Mire szolgál a PC és az MR regiszter? Mire szolgál az N és a Z regiszter? Mire szolgál a H regiszter? 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 vezérlésére? Hány jel szolgál a vezérlésére? Hány jelszolgál az ALU ésa léptető vezérlésére? Hány jel szolgál a C 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?. előadás 35. előadás 3

Milyen típusú memória a mikroprogram tároló? Mire szolgál az MPC regiszter? Mire szolgál a 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 /C vezérléséhez? Mire szolgál a JMPN/JMPZ bit? Mire szolgál a JMPC bit? Hogy alakul ki MPC új tartalma? 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?. előadás 37. előadás 38 Minek a rövidítése az IJVM? Ismertesse az IJVM memóriamodelljét! Milyen utasításai vannak az IJVM nek? Mi a IPUSH/DUP/IADD/SWAP utasítás feladata? Mi a GOTO utasítás feladata? Mi az IFEQ/IF_ICMPEQICMPEQ utasítás feladata? Hogy működik a Mic 1 főciklusa? Mit tartalmaz PC és MR 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? Mire szolgál a SWAP utasítás? Hogy valósítható meg a SWAP utasítás? Mire szolgál a WIDE utasítás? Hogy valósítható meg a WIDE utasítás? Mire szolgál az ILOAD utasítás? Hogy valósítható meg az ILOAD utasítás? Mire szolgál a WIDE ILOAD utasítás? Hogy valósítható meg a WIDE ILOAD utasítás?. előadás 3. előadás 40 Az előadáshoz kapcsolódó Fontosabb témák A Mic 1 működése, adatút ciklusa, memória ciklusa, mikroprogramja. MPC új értékének kialakulása Mic 1 en. Az IJVM, az IJVM memória modellje, az IJVM megvalósítása Mic 1 en. A WIDE utasítás hatása és megvalósítása Mic 1 en.. előadás 41 7