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

Hasonló dokumentumok
Digitális technika VIMIAA02 9. hét

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

Digitális technika VIMIAA01 9. hét

Digitális technika VIMIAA01

Digitális technika (VIMIAA01) Laboratórium 8

Digitális technika (VIMIAA02) Laboratórium 8

A MiniRISC processzor

A MiniRISC processzor

A MiniRISC processzor (rövidített verzió)

A MiniRISC processzor

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika VIMIAA hét

Bevezetés az informatikába

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Összetett feladatok megoldása

Egyszerű RISC CPU tervezése

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

Digitális technika VIMIAA02 7. hét

A PicoBlaze vezérlő alkalmazása a LOGSYS kártyán

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

Digitális technika VIMIAA01

Digitális technika VIMIAA01

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

Adatok ábrázolása, adattípusok

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

Mikrorendszerek felépítésének általános modellje

Digitális technika (VIMIAA02) Laboratórium 5.5

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

Digitális technika (VIMIAA02) Laboratórium 4

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

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Digitális technika (VIMIAA02) Laboratórium 4

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.

Bevezetés az informatikába

Digitális technika (VIMIAA01) Laboratórium 11

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

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

Egyszerű számítógép működése

Nagy Gergely április 4.

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

Digitális technika (VIMIAA01) Laboratórium 11

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

Digitális technika (VIMIAA01) Laboratórium 9

A mikroszámítógép felépítése.

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Digitális technika (VIMIAA01) Laboratórium 9

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

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

Összeadás BCD számokkal

Digitális technika (VIMIAA01) Laboratórium 10

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

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

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

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

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

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

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

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

Digitális technika (VIMIAA01) Laboratórium 4

Véges állapotú gépek (FSM) tervezése

Digitális technika VIMIAA02 6. EA Fehér Béla BME MIT

b. Következő lépésben egészítse ki az adatstruktúrát a teljes rendezéshez szükséges további egységekkel és készítse el a teljes mikroprogramot!

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

Digitális technika VIMIAA01 5. hét

Digitális technika VIMIAA02 6. EA

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

ISA szimulátor objektum-orientált modell (C++)

Labor gyakorlat Mikrovezérlők

Mikrorendszerek tervezése

Mikrorendszerek tervezése

Labor gyakorlat Mikrovezérlők

Véges állapotú gépek. Steiner Henriette

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

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

Digitális technika HF2 Elkészítési segédlet Gépi szintű programozás

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

A 32 bites x86-os architektúra regiszterei

VEZÉRLŐEGYSÉGEK. Tartalom

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

Véges állapotú gépek (FSM) tervezése

SzA19. Az elágazások vizsgálata

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

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

SZORGALMI FELADAT. 17. Oktober

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

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

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

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

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

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

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

A ChipScope logikai analizátor

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

Digitális technika (VIMIAA02) Laboratórium 2

Átírás:

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA02 9. hét Fehér Béla BME MIT Processzor adatstruktúrák DIGITÁLIS RENDSZEREK ÁLTALÁNOS FELÉPÍTÉSE: ADATSTRUKTÚRA + VEZÉRLÉS Vezérlés: Minden feladatra egységes általános elv De természetesen egyedi állapotdiagram, jelek, stb. Adatstruktúra: Egyedi felépítés, feladatorientált kialakítás Megmaradt a HW párhuzamos, időben konkurens működése

Processzor adatstruktúrák ADATSTRUKTÚRA + VEZÉRLÉS Adatstruktúra: Ahány feladat, annyi architektúra Lehetne itt is általánosítani? Valószínűleg igen Feladjuk a párhuzamos működés előnyét az egyszerű tervezhetőség érdekében Sok elemi művelet időben sorban egymás után, lehetőleg ugyanazt a HW-t használva Processzor adatstruktúrák Milyen legyen az általános adatstruktúra? Komponensek: adattárolók, műveletvégzők, huzalozás Adattárolók: Önálló regiszterek: bármelyik adat bármikor elérhető/tölthető : korlátozott számú adat érhető el (1,2,3) Stack: csak a stack teteje érhető el (1,2) Műveletvégzők: Egyedi elemek, közvetlen egyedi bemenetekkel Többfunkciós egység, funkcióválasztással és bemeneti operátor kiválasztással (ADD/SUB/COMP, AND/OR/XOR) Általános státuszjelek a művelet eredményéről (Z/C/N/V) Huzalozás: Bemenet/ kimenet kiválasztás/aktiválás Belső adatutak, operandus kiválasztás

Processzor adatstruktúrák Milyen legyen az általános adatstruktúra? Szabványosítás: Adatméret: minden legyen adat azonos méretű pl. 8 bit Egyedi jelek lehetnek egy bitvektor elemei, beolvasunk 8 bitet, és maszkoljuk a kívánt bitpozíciót Az eddigi külső vezérlőjelek (pl. START) is adatbemenetként kezelhetőek, beolvashatóak, tesztelhetőek és a teszt eredménye szerint használhatóak a vezérlési feladat végrehajtására A kimeneti jelek hasonlóan egységesen kezelhetők, 8 bites bitvektorok közvetlenül, egyedi bitek bitpozíció beállítással kiadhatók A vezérlő egység kimenete (pl. READY) is így kezelhető Processzor vezérlés Az általános adatstruktúra jól használható, de képességei korlátosan érvényesíthetők Egy ütemben egy változó módosulhat Ez erősen szekvenciális végrehajtást jelent A vezérléshez az ASM működési modell csökkentett képessége bőven elegendő Nem jelent lényeges előnyt az általános FSM/HLSM tetszőleges állapotátmeneti képessége ASM állapotátmenetek: CONT: folytatás (ez az alapértelmezett mód) JUMP: ugrás tetszőleges állapotra (saját magára is) CJMP: elágazás, feltételes ugrás tetszőleges állapotra Feltétel nem teljesülése esetén CONT, folytatás

Processzor vezérlés ASM algoritmikus állapotvezérlővel A vezérlő ebben az esetben lehet egy egyszerű számlálón alapuló vezérlőegység: programszámláló (, Program Counter) Az állapotátmenetek vezérlése: CONT: <= + 1; // számláló INC JUMP : <= LABEL; // számláló LOAD CJMP : if (COND) then <= LABEL // LOAD else <= +1 // INC Ezt a feladatot egy inicializálható, tölthető bináris felfelé számláló tudja biztosítani RESET-re = 0, vagy a csupa 1, azaz 0xFFFF Processzor vezérlés ASM algoritmikus állapotvezérlővel A vezérlőjelek tehát nem közvetlenül a értékéből származnak, (annak állapota nem direktben kódolja azokat), hanem a tartalma megcímzi és kiolvassa a programmemóriában található utasítás szót (FETCH), és az utasításszó tartalmazza a kódolt vezérlőjeleket (annyi biten, amennyi a formátumba belefér), ezt az utasítás dekóder értelmezi (DECODE) és juttatja el az adatstruktúra felé végrehajtásra (EXECUTE). Tehát az adatstruktúra vezérlőjel generálás folyamata: új érték FETCH DECODE EXECUTE Ez történik a processzor vezérlő egységében

Processzor műveletvégzés alapú adatstruktúra kiegészítése be- /kimeneti interfésszel (memória, periféria) Általános tulajdonságok: Minden adatot először beírunk a regisztertömbbe Műveletet csak a regiszter adatokon végzünk Létezik közvetlen adat programkódból A részeredményeket visszaírjuk A végeredményt kiadjuk Ezt hívjuk LOAD/STORE felépítésnek A regisztertömb mérete Szélesség: 8/16/32/64 bit Mélység: 16/32/64 regiszter Több regiszter több reg. címbit (ut. méret) Több regiszter kevesebb extra adatmozgatás A 32 bites utasításméret jó kompromisszum Processzor műveletvégzés Az adatstruktúra műveleti egysége: : Aritmetikai Logikai Egység Műveleti képességek (utasítás készlet) Aritmetikai (ADD, SUB, INC, DEC.) Logikai (AND, OR, XOR, NOT ) Léptetés (SHL, SHR, ASH ) Forgatás (ROL, ROR, ) Feltétel vizsgálat (COMP, TST, ) Egyszerű adatmozgatás (MOV, LD, ST) Minden művelet a szabványos adatméreten 8 / 16 / 32 / 64 bit, az adott rendszer jellemzője Kisebb adatméret: operandus/eredmény maszkolása Nagyobb adatméret: Átvitelbit használatával kiterjesztett műveletvégzés

Processzor műveletvégzés felépítése 1. verzió: Minden feladatra külön áramkör, a kimeneten MUX hálózattal nem gazdaságos 2. verzió: Sok feladat egyetlen összeadóval + a bemeneten speciális kiegészítés az adatelőkészítésre Kivonás: Kettes komplemens képzéssel Inkrementálás: 1 hozzáadása (pl. Ci) Dekrementálás: 1 kivonása Léptetés balra: önmagával összeadás Konkrét áramköri megoldások eltérőek Közös vonás: Néhány bites vezérlés: FUN bitek Operandus kiválasztás: REG1, REG2 cím Bemenet/kimenet előválasztás MUX vez Összegzés Tetszőleges digitális rendszer: Általános rendszerterv: adatstruktúra + vezérlés Processzoros rendszerek: Általános processzor adatstruktúra + ASM alapú egyszerűsített processzor vezérlőegység A vezérlési állapot indirekt megadása: (programmemória cím) programtár olvasás (aktuális utasítás) dekódolt vezérlő jelek származtatása és végrehajtás Továbblépés: = +1 vagy esetleg (feltételes) ugrás Egységesített adatméret és be-/kimeneti interfészek LOAD/STORE működés, külső vagy memória adatok regiszterbe töltődnek használat előtt

MiniRISC processzor - Bevezetés 8 bites vezérlőegység egyszerű alkalmazásokhoz Jól illeszkedik a LOGSYS Spartan-3E FPGA kártya komplexitásához Egyszerű felépítés, kis erőforrásigény Harvard architektúra 256 x 16 bites programmemória 256 x 8 bites adatmemória Egyszerű RISC jellegű utasításkészlet Load/store architektúra Műveletvégzés csak regisztereken 16 x 8 bites belső regisztertömb MiniRISC mintarendszer LED ek DIP kapcsoló A bővítőcsatlakozó B bővítőcsatlakozó 128 x 8 bites adatmemória (0x00 0x7F) basic_owr (0x80) basic_in (0x81) basic_io (0x84 0x87) basic_io (0x88 0x8B) MiniRISC CPU Adatmem. interfész Debug Prg. mem. Debug modul 256 x 16 bites programmemória slave_usrt (0x8E 0x8F) USRT basic_display (0x90 0x9F) basic_timer (0x8C 0x8D) basic_in (0x82) JTAG nyomógombok fejlesztői és kommunikációs port kijelzők

MiniRISC processzor Felépítése követi az adatstruktúra-vezérlő szemléletet : az utasítások beolvasása, feldolgozása és ennek megfelelően az adatstruktúra vezérlése Adatstruktúra: műveletek végrehajtása az adatokon RD WR DIN jelek Adatstruktúra Feltétel jelek MiniRISC processzor MiniRISC processzor adatstruktúra működése DIN RD WR DIN RD WR DIN RD WR MUX MUX MUX olvasás (load) Lokális adat átalakítása ( művelet) írás (store)

MiniRISC processzor A működés bemutatása egy egyszerű példán Példa: DMEM[3] = DMEM[0] + DMEM[1], ez négy adatstruktúra műveletet igényel: 1. REG[0] = DMEM[0] (load) 2. REG[1] = DMEM[1] (load) 3. REG[1] = REG[0] + REG[1] ( művelet) 4. DMEM[3] = REG[1] (store) Utasítás: a processzor által végrehajtható művelet Program: utasítások sorozata A végrehajtandó feladatot a processzor által támogatott utasításokra kell lebontani A programot a programmemória tárolja A vezérlőegység beolvassa az utasításokat és végrehajtja azokat az adatstruktúrán Programszámláló (Program Counter, ): a beolvasandó utasítás címét állítja elő Utasításregiszter (Instruction Register, ): a beolvasott utasítást tárolja vezérlő jelek feltétel jelek MiniRISC processzor Minden egyes utasítás végrehajtásánál a vezérlőegységnek a következő lépéseket kell elvégeznie: Lehívás (fetch): az utasítás beolvasása a programmemóriából és a növelése Dekódolás (decode): a művelet és az operandusok meghatározása Végrehajtás (execute): az utasításhoz tartozó művelet végrehajtásra kerül az adatstruktúrán A vezérlő lehet például egy állapotgép A fenti lépésekhez a vezérlő állapotgép egy-egy állapota rendelhető hozzá Ekkor egy utasítás végrehajtása három órajelciklust igényel vezérlő jelek feltétel jelek

MiniRISC processzor teljes blokkvázlata A részletes felépítést lásd a Verilog forráskódban DIN RD WR Q Számláló 0x00 0x01 ugrási cím Verem Z,C,N,V Z,C,N,V IE bit IF bit vezérlő jelek MUX1 WrX RdX RdY Debug modul Break állapotgép Int_req feltétel jelek MiniRISC processzor 8 bites konstans ugrási cím OP1 Adatstruktúra MUX2 OP2 MiniRISC processzor működése DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 DIN RD WR 0 1 REG[0]=DMEM[0] 1 REG[0]=DMEM[0] 1 REG[0]=DMEM[0] MUX LOAD LOAD REG[0]=? 5 REG[1]=? REG[2]=? Adatstruktúra Utasítás lehívása Dekódolás Végrehajtás

MiniRISC processzor működése DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 DIN RD WR 1 2 REG[1]=DMEM[1] 2 REG[1]=DMEM[1] 2 REG[1]=DMEM[1] MUX LOAD LOAD REG[0]=5 REG[1]=? 2 REG[2]=? Adatstruktúra Utasítás lehívása Dekódolás Végrehajtás MiniRISC processzor működése DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 DIN RD WR 2 3 R[1] = R[0] + R[1] 3 R[1] = R[0] + R[1] 3 R[1] = R[0] + R[1] MUX ADD ADD REG[0]=5 REG[1]=2 7 REG[2]=? 5 2 5 + 2 = 7 7 Adatstruktúra Utasítás lehívása Dekódolás Végrehajtás

MiniRISC processzor működése DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 7 DIN RD WR 3 4 DMEM[3]=REG[1] 4 DMEM[3]=REG[1] 4 DMEM[3]=REG[1] MUX STORE STORE REG[0]=5 REG[1]=7 REG[2]=? Adatstruktúra Utasítás lehívása Dekódolás Végrehajtás MiniRISC processzor utasításai A programmemória bináris kód formájában tartalmazza a végrehajtandó utasításokat (gépi kód, assembly kód) Magasabb szintű leírást a processzor nem tud értelmezni Minden utasítás tartalmazza a művelet leírását és a művelet elvégzéséhez szükséges egyéb adatokat művelet (4 bit) regisztercím (4 bit) memóriacím (8 bit) Cím Művelet Gépi kód (16 bit) Assembly kód 0: REG[0] = DMEM[0] 1101000000000000 MOV r0, 0x00 1: REG[1] = DMEM[1] 1101000100000001 MOV r1, 0x01 2: REG[1] =REG[0] + REG[1] 1111000100000000 ADD r1, r0 3: DMEM[3] = REG[1] 1001000100000011 MOV 0x03, r1

MiniRISC assembler A MiniRISC processzor felhasználói programjait alacsonyszintű (gépközeli) programnyelven készíthetjük el és fordíthatjuk futtatható bináris kódra. Az assembly nyelven megírt programok lefordítása a LOGSYS MiniRISCv2-as assemblerrel lehetséges Konkrét programfejlesztési részletek az előadás végén MiniRISC kódgenerálás az assemblerrel Fordítás eredménye: Generált lista fájl: demo_add.lst

MiniRISC kódgenerálás az assemblerrel A generált memória tárgykód fájlok: kódfájl: code.hex 256 db 16 bites utasításkód kódfájl: data.hex 128 db 8 bites adat A kész kódfájlokat futtatás előtt a MiniRISC mintarendszer megfelelő memóriájába le kell tölteni. code.hex data.hex MiniRISC IDE - Programfejlesztés Futtatás: Szimulátorban Hardveren Fordítás és letöltés Végrehajtás vezérlése Forráskód szerkesztő tartalma USRT terminál Kijelző vezérlőpanel GPIO vezérlőpanel Periféria vezérlőpanel: LED ek, DIP kapcsoló Nyomógombok Assembler konzol CPU állapot:, flag ek, verem teteje, regiszterek tartalma Végrehajtott utasítások száma Elfogadott megszakításkérések száma

MiniRISC IDE - Programfejlesztés Digitális technika 9. EA vége