Digitális technika VIMIAA02 9. hét

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

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

Digitális technika VIMIAA01 9. hét

Digitális technika VIMIAA01

A MiniRISC processzor

Digitális technika (VIMIAA01) Laboratórium 8

Digitális technika (VIMIAA02) Laboratórium 8

A MiniRISC processzor

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

A MiniRISC processzor

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika VIMIAA hét

Digitális technika (VIMIAA02) Laboratórium 1

Bevezetés az informatikába

Egyszerű RISC CPU tervezése

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

Digitális technika VIMIAA01

Digitális technika VIMIAA01

Összetett feladatok megoldása

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

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

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

Digitális technika VIMIAA02 7. hét

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

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

Adatok ábrázolása, adattípusok

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

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

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

Bevezetés az informatikába

Digitális technika (VIMIAA02) Laboratórium 5.5

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.

Digitális technika (VIMIAA01) Laboratórium 11

Digitális technika (VIMIAA02) Laboratórium 4

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

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

Digitális technika (VIMIAA02) Laboratórium 4

Digitális technika (VIMIAA01) Laboratórium 11

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 rendszerek. Utasításarchitektúra szintje

Nagy Gergely április 4.

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

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

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

Összeadás BCD számokkal

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

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

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

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

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

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

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

Digitális technika (VIMIAA01) Laboratórium 10

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

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!

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

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

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

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

Labor gyakorlat Mikrovezérlők

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

Mikrorendszerek tervezése

Labor gyakorlat Mikrovezérlők

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

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

Digitális technika (VIMIAA01) Laboratórium 4

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

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

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

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

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

Digitális technika VIMIAA01 5. hét

VEZÉRLŐEGYSÉGEK. Tartalom

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

Digitális technika VIMIAA02 6. EA

Mikrorendszerek tervezése

SZORGALMI FELADAT. 17. Oktober

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

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

SzA19. Az elágazások vizsgálata

Architektúra, megszakítási rendszerek

Újrakonfigurálható eszközök

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

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

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

A 32 bites x86-os architektúra regiszterei

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

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

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

7. Fejezet A processzor és a memória

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

Digitális technika VIMIAA01

Digitális technika VIMIAA01

Á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ő Regisztertömb: 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ó (PC, Program Counter) Az állapotátmenetek vezérlése: CONT: PC <= PC + 1; // számláló INC JUMP : PC <= LABEL; // számláló LOAD CJMP : if (COND) then PC <= LABEL // LOAD else PC <= PC +1 // INC Ezt a feladatot egy inicializálható, tölthető bináris felfelé számláló tudja biztosítani RESET-re PC = 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 PC értékéből származnak, (annak állapota nem direktben kódolja azokat), hanem a PC 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: PC új érték FETCH DECODE EXECUTE Ez történik a processzor vezérlő egységében

Processzor műveletvégzés Regisztertömb 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: ALU: 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 ALU 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: PC (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: PC = PC +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. Adatmemória interfész Debug Prg. mem. slave_usrt (0x8E 0x8F) basic_display (0x90 0x9F) basic_timer (0x8C 0x8D) basic_in (0x82) Debug modul 256 x 16 bites programmemória USRT 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 Vezérlő: 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 Adatmemória DOUT RD WR DIN DOUT Vezérlő jelek Feltétel jelek Adatstruktúra MiniRISC processzor

MiniRISC processzor adatstruktúra Adatmemória működése Adatmemória Adatmemória DIN DOUT RD WR DIN DOUT RD WR DIN DOUT RD WR MUX MUX MUX Regisztertömb Regisztertömb Regisztertömb ALU ALU ALU Adatmemória olvasás (load) Lokális adat átalakítása (ALU művelet) Adatmemória í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] (ALU 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, PC): a beolvasandó utasítás címét állítja elő Utasításregiszter (Instruction Register, IR): a beolvasott utasítást tárolja PC DOUT IR Vezérlő 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 PC 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 PC Vezérlő Init DOUT IR Fetch Decode Execute 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 Adatmemória DOUT DIN DOUT RD WR IRQ PC Számláló 0x00 0x01 ugrási cím Verem Z,C,N,V Z,C,N,V IE bit IF bit IR vezérlő jelek MUX1 WrX Regisztertömb RdX RdY Debug modul Init Break Vezérlő állapotgép Fetch Decode Execute Int_req feltétel jelek MiniRISC processzor 8 bites konstans ugrási cím OP1 Adatstruktúra ALU MUX2 OP2

MiniRISC processzor működése Adatmemória 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 DOUT DOUT DOUT DIN DOUT RD WR PC 0 1 IR REG[0]=DMEM[0] PC 1 IR REG[0]=DMEM[0] PC 1 IR REG[0]=DMEM[0] MUX Vezérlő Init Fetch Vezérlő Init LOAD Fetch Vezérlő Init LOAD Fetch Regisztertömb REG[0]=? 5 REG[1]=? REG[2]=? Decode Execute Decode Execute Decode Execute ALU Adatstruktúra Utasítás lehívása Dekódolás Végrehajtás

MiniRISC processzor működése Adatmemória 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 DOUT DOUT DOUT DIN DOUT RD WR PC 1 2 IR REG[1]=DMEM[1] PC 2 IR REG[1]=DMEM[1] PC 2 IR REG[1]=DMEM[1] MUX Vezérlő Init Fetch Vezérlő Init LOAD Fetch Vezérlő Init LOAD Fetch Regisztertömb REG[0]=5 REG[1]=? 2 REG[2]=? Decode Execute Decode Execute Decode Execute ALU Adatstruktúra Utasítás lehívása Dekódolás Végrehajtás

MiniRISC processzor működése 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] Adatmemória DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 DOUT DOUT DOUT DIN DOUT RD WR PC 2 3 IR R[1] = R[0] + R[1] PC 3 IR R[1] = R[0] + R[1] PC 3 IR R[1] = R[0] + R[1] MUX Vezérlő Init Fetch Vezérlő Init ADD Fetch Vezérlő Init ADD Fetch Regisztertömb REG[0]=5 REG[1]=2 7 REG[2]=? Decode Decode Decode Execute Execute Execute ALU 5 + 2 = 7 Adatstruktúra 5 2 Utasítás lehívása Dekódolás Végrehajtás 7

MiniRISC processzor működése Adatmemória 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] 0: REG[0]=DMEM[0] 1: REG[1]=DMEM[1] 2: REG[1]=REG[0]+REG[1] 3: DMEM[3]=REG[1] DMEM[0]=5 DMEM[1]=2 DMEM[2]=0 DMEM[3]=0 7 DOUT DOUT DOUT DIN DOUT RD WR PC 3 4 IR DMEM[3]=REG[1] PC 4 IR DMEM[3]=REG[1] PC 4 IR DMEM[3]=REG[1] MUX Vezérlő Init Fetch Vezérlő Init STORE Fetch Vezérlő Init STORE Fetch Regisztertömb REG[0]=5 REG[1]=7 REG[2]=? Decode Execute Decode Execute Decode Execute ALU 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 Adatmemória 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ő Assembler konzol Adatmemória tartalma USRT terminál Kijelző vezérlőpanel GPIO vezérlőpanel Periféria vezérlőpanel: - LED-ek, DIP kapcsoló - Nyomógombok CPU állapot: - PC, 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