Embed
Email

tutorial

Document Sample

Categories
Tags
Stats
views:
0
posted:
10/24/2011
language:
Slovak
pages:
17
Dokumentácia k simulátoru SimulAnt



Úvod





Stavebné prvky počítača na úrovni RTL

Na úrovni RTL sú hlavnými stavebnými prvkami počítača registre, funkčné

jednotky a ďalšie prvky, napr. multiplexory, zbernice a počítadlá. Všeobecná schéma

jednoduchého počítača obyčajne znázorňuje tieto jeho jednotlivé súčasti: riadiacu

jednotku, operačnú časť a okolie počítača, ktoré tvorí pamäť a externé registre.

Zjednodušená schéma počítača s pamäťou je znázornená na obrázku 1. V praxi

všetky komponenty počítača majú vstup pre hodinový signál, čím je zabezpečená

synchronizácia.









1

Obr.1.: Schéma znázorňujúca stavbu jednoduchého počítača





Riadiaca jednotka

Riadiaca jednotka (RJ, Control Unit) zabezpečuje dekódovanie inštrukcie a na

základe výsledku komunikuje s operačnou časťou počítača. Vysiela signály, podľa

ktorých počítač pristupuje do hlavnej pamäti, k registrom alebo na štandardný

vstup/výstup. Vstupmi do riadiacej jednotky môžu byť niektoré signály operačnej

časti, ktorú na obr.1 reprezentujú ALU a registre. Výstupmi sú signály, ktoré posiela

v komunikačných slovách - mikroinštrukciách a sú reprezentované binárne. Každý

bit, alebo skupina bitov predstavuje v danej mikroinštrukcii nastavenie niektorého

z komponentov operačnej časti, čím im dáva signál na povolenie vstupu alebo

výstupu údajov (napr. signál OE - output enable - na príslušnom registri umožní

zápis jeho obsahu na zbernicu, LE - latch enable - povolí zápis do registra, a pod.).

Signály riadiacej jednotky pre operačnú časť a registre nie sú na obrázku 1

znázornené, zo vstupov riadiacej jednotky je znázornený len vstup z registra IR.





Operačná časť a registre

Operačná časť (OČ) pozostáva z jednej alebo viacerých funkčných jednotiek,

z registrov a prepojení. Funkčnou jednotkou býva ALU – aritmeticko-logická jednotka.

Ako prepojenia môžu byť použité zbernice a/alebo multiplexory.

ALU - je určená pre aritmetické a logické operácie s údajmi. V jednoduchších

mikroprocesoroch poskytuje minimálne operácie sčítania a negácie, na ktoré sa

ostatné operácie - násobenie, celočíselné delenie a odčítanie - dajú previesť. Druhá

časť ALU umožňuje základné logické operácie - logický súčet, súčin a neekvivalenciu

(AND, OR a XOR). Súčasťou jednotky je aj posunovač, ktorý vykonáva bitové posuvy

vľavo a vpravo. ALU má dva dátové vstupy, jeden dátový výstup a vstup, určujúci

operáciu, ktorá sa má vykonať. Tento na obrázku 1 nie je znázornený.

K štandardnej výbave operačnej časti patria registre:

 IR (instruction register) – obsahuje práve vykonávanú inštrukciu. Bity, ktoré

reprezentujú operačný kód sú poskytnuté riadiacej jednotke na dekódovanie.

V prípade skokových inštrukcií sprístupňuje operand ako adresu skoku.

 PC (program counter) – obsahuje adresu nasledujúcej inštrukcie. Môže mať

vlastnosť inicializácie (na adresu 0), prípadne v sebe môže obsahovať

mechanizmus na inkrementáciu vlastného obsahu, hoci vo väčšine zdrojov sa





2

uvažuje inkrementácia PC pomocou ALU. Príklad vnútornej štruktúry registra

PC s možnosťou zápisu údaja, inkrementáciou, riadením výstupu a nulovaním,

je na obr. 2, spolu s opisom jeho správania sa.

 ACC (accumulator) – slúži na uloženie medzivýsledku výpočtov, alebo

jedného z operandov.

 MAR (memory address register) – uchováva adresu pamäťového miesta, do

ktorého sa bude zapisovať, alebo z ktorého sa bude čítať.

 MBR (memory buffer register) – uchováva obsah bunky pamäti na danej

adrese, alebo dáta, ktoré sa majú zapísať do pamäti.

Registre MBR a MAR sú označované aj ako vyrovnávacie registre, pretože slúžia

ako medzistupeň medzi pamäťou a registrami počítača z dôvodu väčšej rýchlosti

registrových operácií v porovnaní s dobou prístupu do pamäti.









Registre vo všeobecnosti slúžia ako dočasné úložisko údajov. Z hľadiska koncepcie

sú registre podobné ako miesta v pamäti, rozdiel je, že fyzicky tvoria súčasť

procesora. Vďaka tomu umožňujú rýchlejšie čítanie a zápis údajov, ako je to pri

prístupe do pamäti, ktorá nie je na čipe. Register charakterizuje počet bitov, ktoré je

do neho možné zapísať. Proces čítania z registra neovplyvňuje jeho obsah, iba ho

skopíruje do cieľovej lokácie.

Počítače vo všeobecnosti obsahujú ľubovoľný počet registrov. Zväčša bývajú troch

typov: univerzálne, stavové a ukazovacie.





Zbernice

Sú využívané na prenos elektronických signálov (digitálnych informácií) medzi

jednotlivými časťami počítača. Fyzicky je to sada vodičov, ktoré paralelne prenášajú

signály. Používajú sa práve kvôli výhode jednorázového paralelného prenosu oproti

sériovému. Zbernice môžu byť jednosmerné a obojsmerné. Pri jednosmerných sa

prenos môže uskutočniť iba jedným smerom, napr. keď je jeden register vždy

zdrojový a druhý cieľový (prenos z PC do MAR po adresnej zbernici). Pri

obojsmerných je prenos údajov možný oboma smermi, ale nie súčasne. Príkladom je

dátová zbernica, kde môže nastať prenos z MBR aj do MBR.

Podľa druhu prenášaných údajov teda rozlišujeme v jednoduchom počítači tieto

druhy zberníc:





3

 adresnú ( address bus)

 dátovú (data bus)

 riadiacu (control bus)

Môžeme ich ešte rozlišovať aj na

 internú – prenos údajov medzi vnútornými registrami

 externú – prenos údajov medzi hlavnou pamäťou





Pamäť

Program pozostávajúci z inštrukcií býva uložený v pamäti. Pre výber inštrukcie

počítač na adresnú zbernicu umiestni adresu pamäťového miesta a nastaví riadiaci

signál čítania RD. Obsah pamäťového miesta z danej adresy sa skopíruje na dátovú

zbernicu. Podobne je to pri zápise. Nastaví sa signál WR a údaje z dátovej zbernice

sa zapíšu do pamäti. Alternatívne k signálom RD a WR sa používa aj signál žiadosti

o prístup do pamäti (MREQ) a signál RW, ktorého hodnota rozhoduje, či sa vykoná

čítanie alebo zápis. Bolo už spomenuté, že prístup do pamäti reálne trvá dlhšie ako

vykonanie súvisiacich mikrooperácií. Preto sa používajú registre MAR a MBR ako

medzikrok prístupu do pamäti, aby boli na zberniciach nastavené vždy správne údaje.





-





Spracovanie inštrukcií

Vykonáva sa postupne v troch základných krokoch:

1) výber inštrukcie z pamäti (fetch)

2) dekódovanie inštrukcie (decoding)

3) vykonanie inštrukcie (execution) – ktoré pozostáva z

 načítania operandov

 vlastného výkonu operácie

 zápisu výsledkov









4

Číslo Mikrooperácia Popis

1 ACC => MBR Presun celého obsahu ACC do MBR

2 MBR => ACC Presun celého obsahu MBR do ACC

3 PC => MAR Presun celého obsahu (adresy) z PC do MAR

4 IR.adr => PC Presun obsahu poľa adresy z IR do PC

5 IR => MAR Presun obsahu poľa adresy z IR do MAR

6 MBR => IR Presun celého obsahu MBR do IR

7 HALT Nastavenie preklápacieho obvodu na 1 (true)

8 READ MEM Prístup do pamäti - čítanie

9 WRITE MEM Prístup do pamäti - zápis

10 mADD Spočítanie obsahu ACC a MBR, výsledok do ACC

11 INCREMENT PC Zvýšenie obsahu PC o 1, vykonáva sa paralelne

12 TEST ACC Vráti logickú 1, ak obsah ACC = 0

13 NOT ACC Negácia obsahu ACC bit po bite

14 RSHIFT ACC Bitový posun obsahu ACC o jeden bit vpravo

15 DECODE Dekódovanie OP_CODE z IR

16 MBR.adr => MAR Presun obsahu adresových bitov z MBR do MAR

17 IR.adr => MBR Presun obsahu adresových bitov z IR do MBR

18 mMUL Vynásobenie obsahu ACC a MBR, výsledok do ACC

19 mDIV Vydelenie obsahu ACC s MBR, výsledok do ACC

20 LSHIFT ACC Bitový posun obsahu ACC o jeden bit vľavo

21 mAND Logický súčin obsahu ACC a MBR, výsledok do ACC

22 mOR Logický súčet obsahu ACC a MBR, výsledok do ACC

23 mXOR Exkl.log.súčet obsahu ACC a MBR, výsledok do ACC

24 CMP porovnanie obsahu ACC a MBR, výsledok do ACC

25 MBR.adr => PC Presun obsahu adresových bitov z MBR do PC





Mikrooperácie implementované v simulátore SimulAnt









Inštrukcia(adres.) Krok 1 2 3 4 5

HALT 7

LOAD (priame) 5 8 2

LOAD (nepriame) 5 8 16 8 2

STORE (priame) 5 1 9

STORE (nepriame) 5 8 16 1 9

ADD (bezprostredné) 17 10

ADD (priame) 5 8 10

ADD (nepriame) 5 8 16 8 10

JMP (priame) 4

JMP (nepriame) 5 8 25

JMPZ (priame) 12 4

JMPZ (nepriame) 12 5 8 25

ROR 14

NOT 13

CMP (bezprostredné) 17 24



5

CMP (priame) 5 8 24

CMP (nepriame) 5 8 16 8 24

MUL (bezprostredné) 17 18

MUL (priame) 5 8 18

MUL (nepriame) 5 8 16 8 18

DIV (bezprostredné) 17 19

DIV (priame) 5 8 19

DIV (nepriame) 5 8 16 8 19

ROL 20

AND (bezprostredné) 17 21

AND (priame) 5 8 21

AND (nepriame) 5 8 16 8 21

OR (bezprostredné) 17 22

OR (priame) 5 8 22

OR (nepriame) 5 8 16 8 22

XOR (bezprostredné) 17 23

XOR (priame) 5 8 23

XOR (nepriame) 5 8 16 8 23

Instruction FETCH* 3 8 6 11 15





Tabuľka postupností mikrooperácií pre jednotlivé inštrukcie









Formát inštrukcie pozostáva zo 16 bitov, rovnako, ako operandy. Ak si

označíme jednotlivé bity od 0 do 15 začínajúc zľava, ich význam je ako v tabuľke:

Bity Význam

[0] znamienko operandu v pamäti údajov

znamienko operandu v inštrukcii pri bezprostrednom adresovaní

[1-9] operand v inštrukcii pri bezprostrednom adresovaní

[1-15] operand v pamäti údajov

[0-9] adresa v inštrukcii

[10-11] adresovací režim inštrukcie

[12-15] operačný kód inštrukcie





Význam bitov v inštrukcii









Popis inštrukcií

Pomocou tabuľky inštrukcií som doimplementoval 11 inštrukcií, ktoré boli

vymenované tab.6:

 JMP (jump) - vykonáva v programe nepodmienený skok, nastavením adresy

v PC na cieľovú adresu skoku.



6

 JMPZ (jump-if-zero) - vykonáva podmienený skok. Podmienkou je, že

vyhodnotenie obsahu akumulátora ACC musí vrátiť TRUE (pravdivé) v prípade,

že je hodnota obsahu 0. Potom sa správa ako JMP. Ak je návratová hodnota

FALSE, pokračuje sa ďalšou inštrukciou, skok sa nevykoná.

 ROR (rotate right) - pravý bitový posun. V tomto prípade sa vykonáva v rámci

binárnej reprezentácie čísla posunutie bit po bite doprava, bit najviac vpravo sa

nezachováva, na začiatok binárneho reťazca (najviac vľavo) sa pridá 0.

 NOT (negation) - negácia bit po bite. Všetky výskyty 0 a 1 sa v binárnej

reprezentácii čísla nahradia za opačnú hodnotu.

 CMP (compare) - porovnanie obsahu MBR vzhľadom na obsah ACC. Návratová

hodnota je 0 - ak sa obsahy rovnajú, (-1) - ak hodnota v ACC je menšia, 1 - ak

hodnota v ACC je väčšia

 MUL (multiply) - vykoná násobenie hodnôt v ACC a MBR, výsledok uloží do ACC.

Ak dojde k pretečeniu, teda že hodnota výsledku sa nedá binárne zobraziť 15

bitmi a znamienkom, do akumulátora sa uloží len spodných 15 bitov výsledku,

spolu so znamienkom, zvyšné bity sa zahodia a simulátor bude signalizovať, že

došlo k pretečeniu.

 DIV (divide) - vykoná celočíselné delenie hodnoty v ACC hodnotou v MBR,

výsledok uloží do ACC. Ak nastane delenie nulou, operácia sa nevykoná,

a hodnota v ACC zostáva pôvodná. Simulátor bude signalizovať delenie nulou

a reštartuje simuláciu.

 ROL (rotate left) - ľavý bitový posun. V tomto prípade sa vykonáva v rámci

binárnej reprezentácie čísla posunutie bit po bite doľava, bit najviac vpravo sa

nastaví na 0, bit najviac vľavo sa nezachováva.

 AND - vykoná logický súčin binárnej hodnoty v ACC s hodnotou v MBR,

výsledok uloží do ACC

OR - vykoná logický súčet binárnej hodnoty v ACC s hodnotou v MBR, výsledok

uloží do ACC









7

Používateľské prostredie a práca so simulátorom



Popis používateľského prostredia simulátora

Používateľské prostredie je tvorené hlavným dialógovým oknom aplikácie

a vedľajšími oknami, ktoré sa zobrazia po aktivovaní príslušného ovládacieho prvku

hlavného okna. Prvky v jednotlivých oknách sú označené menom, čiže by nemal byť

problém ich identifikovať.





Hlavné okno

Obsahuje schému počítača, ovládacie prvky a informačné okná.

Schému počítača tvoria:

Registre - v hornom boxe zobrazujú údaje v symbolickom/dekadickom tvare,

v dolnom boxe v binárnom tvare. Register IR má box pre symbolický tvar rozdelený

na časti pre operand a meno inštrukcie a box pre binárny tvar na časti pre operand,

adresovací režim a operačný kód.

- PC a MAR (šírka binárnej adresy)

- IR, MBR, ACC (šírka binárnej inštrukcie)

Riadiaca jednotka (Control unit) - zobrazuje postupnosť dekódovaných mikrooperácií,

alebo postupnosť pre fetch, aktuálne vykonávaná mikrooperácia býva vyznačená.

Pamäť (Memory) - horný box znázorňuje pamäť programu, dolný box znázorňuje

pamäť údajov. V oboch oknách sú 3 stĺpce: adresa, symbolický tvar a binárny tvar

(inštrukcií/údajov v pamäti).

Zbernice a ALU - sú vykreslené červenými čiarami. Pri aktivovaní počas simulácie sa

farba aktívnej zbernice alebo ALU zmení na zelenú a šípka na jednom z koncov

zbernice určuje smer prenosu. Pri aktivovaní sa vždy vyfarbí celá zbernica (dátová -

Data, adresná - Address, riadiaca - Control).

Informačné okná sú:

Okno operácií (Operation window) - zobrazuje operácie ALU

Okno informácií (Information window) - zobrazuje informácie o testovaní pamäti,

pretečení registrov a pod.

Ovládacie prvky sú:

Tlačidlá - sú umiestnené pozdĺž pravej strany hlavného okna.

- Help - otvorí nápovedu

- Open - načíta súbor s uloženým programom pre simulátor



8

- Save - uloží program, ktorý je práve v pamäti simulátora, do súboru

s príponou .ant

- Run - spustí jeden krok simulácie

- RunTo - spustí beh simulácie po označenú inštrukciu z pamäti, alebo celý

- Restart - reštartuje simuláciu, obsah pamäti zostáva ako na začiatku

- Reset - zruší celú simuláciu, vymaže obsah pamäti

- DEL (2x) - vymaže označenú položku z pamäti

Menu - sa nachádza v pravom hornom rohu hlavného okna. Okrem odkazov na

všetky spomenuté tlačidlá okrem DEL, obsahuje položku Instruction:

- New - otvorí dialógové okno pre definovanie novej inštrukcie

- Load - načíta používateľom vytvorenú inštrukciu zo súboru

- Save - uloží používateľom vytvorenú inštrukciu do súboru s príponou .anx

a Memory - Usage - otvorí dialógové okno nastavenia pamäti

Počiatočný stav okna po spustení:

PC - okno pre desiatkové zobrazenie: 0, binárne zobrazenie: 0000000000

ACC - okno pre desiatkové zobrazenie: 0, binárne zobrazenie: 0000000000000000

Control Unit - postupnosť mikrooperácií pre Fetch

Memory - všetky polia v oboch oknách sú prázdne (číslo poľa a reťazec znakov ‘-’)

Tlačidlá Run, RunTo a Restart nie sú momentálne funkčné. Ostatné tlačidlá sú

funkčné.





Okno na vloženie inštrukcie

Otvorí sa po dvojkliknutí na ľubovoľné pole pamäti programu. Ak pole nie je prázdne,

obsah okna sa inicializuje podľa jeho obsahu.

Instruction - padajúci zoznam, po kliknutí zobrazí dostupné inštrukcie. Výberom

jednej z nich sa aktivujú ostatné prvky okna

Addressing mode - obsahuje gombíky na určenie adresovacieho režimu (Immediate -

bezprostredný, Direct - priamy, Indirect - nepriamy). Sú aktívne/neaktívne podľa

typu zvolenej inštrukcie.

Address - slúži na vloženie adresy, ak je nastavený mód Direct alebo Indirect

Operand - slúži na vloženie operandu, ak je nastavený mód Immediate

Tri statické okná v dolnej časti zobrazujú binárny tvar vytváranej inštrukcie, v poradí:

operand, adresovací režim, operačný kód.

Tlačidlá - sa nachádzajú na spodnom okraji okna:





9

- OK - vloženie zvolenej inštrukcie do pamäti programu

- Cancel - zatvorenie okna bez uloženia zmien

- Reset - zrušenie nastavených volieb





Okno na vloženie operandu

Otvorí sa po dvojkliknutí na ľubovoľné pole pamäti údajov. Operand je možné zadať

ako celé desiatkové číslo, z rozsahu , alebo ako binárnu 16-bitovú

hodnotu. Po zaškrtnutí políčka Value is address sa predpokladá, že operand bude

adresou pre nepriamy adresovací režim.

Tlačidlá - sa nachádzajú na spodnom okraji okna:

- OK - vloženie zadaného operandu do pamäti údajov

- Cancel - zatvorenie okna bez uloženia zmien





Okno nastavenia pamäti

Otvorí sa po kliknutí na položku menu Memory > Usage. Do editovacieho boxu sa

načíta súčasné rozdelenie pamäti v percentách. Dá sa meniť s krokom 1, klikaním na

šípky na pravej strane, alebo priamym editovaním. Povolený rozsah hodnôt je

. Na ľavej strane okna sa zakaždým zobrazí aktuálne prislúchajúci počet

pamäťových miest a percentuálne rozdelenie.





Okno pre vytvorenie novej inštrukcie

Otvorí sa po kliknutí na položku menu Instruction > New. Na ľavej strane je

očíslovaný zoznam dostupných mikrooperácií, pravá strana slúži na definovanie

vlastností novej inštrukcie.

Instruction name - meno inštrukcie, vyžaduje sa, môže mať najviac 5 znakov.

Operand - špecifikuje, či inštrukcia bude pracovať s operandom. Po kliknutí sa

aktivujú ďalšie prvky, ktoré majú význam, iba ak je označená voľba operandu.

Access to data memory - špecifikuje, či inštrukcia má pristupovať do pamäti údajov.

[Immediate | Direct | Indirect] addressing mode - špecifikuje, či inštrukcia má daný

adresovací režim, aktivuje/deaktivuje box pre sekvenciu mikrooperácií

prislúchajúceho režimu

[Immediate | Direct | Indirect] mode operation sequence boxy - slúžia na

definovanie postupnosti mikrooperácií príslušného adresovacieho režimu. Ak nie je









10

aktivovaný žiadny režim, aktívny je box Direct. Postupnosť pozostáva z čísel

mikrooperácií podľa zoznamu na ľavej strane okna, oddelených čiarkou.

Tlačidlá - sa nachádzajú na spodnom okraji okna:

- OK - uloženie novej inštrukcie do tabuľky inštrukcií

- Cancel - zatvorenie okna bez uloženia zmien





Príprava simulácie

Pri opise postupu sa v zátvorkách nachádzajú príklady zadanej hodnoty.





Vloženie programu do pamäti

Je možné postupovať dvoma spôsobmi:

a) po jednotlivých inštrukciách a operandoch - vložením inštrukcií a operandov na

zvolené miesta v pamäti

b) načítaním programu zo súboru, do ktorého sme si ho predtým uložili. Je možné

vytvoriť program aj priamo do textového súboru a načítať ho, nakoľko však simulátor

nevykonáva kontrolu syntaxe, ani neobsahuje mechanizmus podobný kompilátoru,

tento spôsob sa neodporúča.





Vloženie inštrukcie

1) dvojkliknutím vyberieme pamäťové miesto z horného okna pamäti (programu),

kam chceme inštrukciu vložiť, otvorí sa dialóg pre vloženie inštrukcie, v ňom:

2) vyberieme inštrukciu, ktorú chceme vložiť (napr. ADD)

3) zvolíme jeden z dostupných adresovacích režimov (napr. Direct)

4) zadáme adresu do aktívneho okna adresy (napr. 257)

5) potvrdíme tlačidlom OK. Ak sú zadané vstupy správne, dialóg sa zatvorí

a inštrukcia sa zobrazí v pamäti programu. Ak nastala pri zadávaní vstupov

chyba, zobrazí sa správa o chybe.





Vloženie operandu

1) dvojkliknutím vyberieme pamäťové miesto z dolného okna pamäti (údajov),

kam chceme operand vložiť (napr. 257), otvorí sa dialóg pre vloženie operandu,

v ňom:

2) vyberieme formát, v ako chceme operand vložiť, kliknutím na gombík vľavo od

príslušného boxu - prednastavený je desiatkový (môžeme ponechať)





11

3) zadáme hodnotu operandu (napr. 5)

4) pole Value is address môžeme nechať nezaškrtnuté

5) potvrdíme tlačidlom OK. Ak sú zadané vstupy správne, dialóg sa zatvorí

a operand sa zobrazí v pamäti programu. Ak nastala pri zadávaní vstupov

chyba, zobrazí sa správa o chybe.

Po vložení všetkých požadovaných inštrukcií treba vložiť ešte inštrukciu HALT. Až

potom je možné pokračovať so spustením simulácie. Predpokladá sa, že na adresách,

na ktoré inštrukcie odkazujú boli vložené operandy.





Uloženie hotového programu do súboru

1) stlačením tlačidla Save v pravom hornom rohu okna, zobrazí sa štandardný

dialóg pre uloženie súboru

2) treba zadať názov súboru a stlačiť Save. Vytvorenému súboru sa priradí

prípona .ant. Ak je pamäť prázdna, zobrazí sa hlásenie o chybe





Načítanie hotového programu zo súboru

Ak chceme program načítať zo súboru, je potrebné, aby sme si predtým nejaký

program uložili, takže prvý krát je potrebné vytvoriť program vložením jednotlivých

inštrukcií a potom ho uložiť. Potom ho načítame zo súboru:

1) stlačením tlačidla Open v pravom hornom rohu okna, zobrazí sa štandardný

dialóg pre výber súboru na otvorenie

2) vyznačíme zvolený súbor a otvoríme ho stlačením Open. Ak bol súbor uložený

správne, mal by sa program, ktorý obsahuje, zobraziť v okne pamäti





Nastavenie pamäti

Ak je simulácia spustená, je potrebné ju najprv zastaviť tlačidlom Restart alebo

zrušiť tlačidlom Reset. Po zmene nastavenia pamäti sa jej aktuálny obsah vymaže.

1) klikneme na položku menu Memory > Usage, otvorí sa dialógové okno

nastavenia pamäti

2) zmeníme aktuálnu percentuálnu hodnotu v boxe podľa potreby, použitím šípok,

alebo priamym editovaním

3) potvrdíme tlačidlom OK, pamäť sa nainicializuje na zvolené rozdelenie









12

Definovanie novej inštrukcie

Ak je simulácia spustená, je potrebné ju najprv zastaviť tlačidlom Restart alebo

zrušiť tlačidlom Reset.

Vytvorenie novej inštrukcie

1) klikneme na položku menu Instruction > New, otvorí sa dialógové okno

vytvorenia inštrukcie

2) zadáme meno inštrukcie (napr. XYZ)

3) ak chceme, aby inštrukcia mala operand, zaškrtneme políčko Operand

(zaškrtneme ho), po jeho zaškrtnutí sa automaticky zaškrtne aj Access to data

memory. Ak nechceme, aby inštrukcia pristupovala do pamäti údajov, môžeme

políčko odškrtnúť. (môžeme ponechať)

4) zaškrtneme požadované adresovacie režimy (napr. Direct a Indirect)

5) do aktívnych boxov pre režimy zadáme postupnosti mikrooperácií, podľa ich

zoznamu na ľavej strane (reťazec /bez zátvoriek/ napr. pre Direct:

/5,8,2,13,14/ a pre Indirect: /5,8,16,8,13,14/)

6) potvrdíme tlačidlom OK, inštrukcia sa uloží do tabuľky inštrukcií pod kódom 15.

7) správne vytvorenie môžeme overiť vložením novej inštrukcie do pamäti podľa

postupu „Vloženie inštrukcie“





Uloženie novej inštrukcie do súboru

1) klikneme na položku menu Instruction > Save, zobrazí sa štandardný dialóg

pre uloženie súboru

2) treba zadať názov súboru a stlačiť Save. Vytvorenému súboru sa priradí

prípona .anx. Ak používateľ ešte nevytvoril žiadnu inštrukciu, zobrazí sa

hlásenie o chybe





Načítanie novej inštrukcie zo súboru

Ak chceme inštrukciu načítať zo súboru, je potrebné, aby sme si predtým nejakú

inštrukciu uložili, takže najprv je potrebné vytvoriť inštrukciu podľa postupu

„Vytvorenie novej inštrukcie“. Potom ju načítame zo súboru:

1) klikneme na položku menu Instruction > Load, zobrazí sa štandardný dialóg

pre výber súboru na otvorenie









13

2) vyznačíme zvolený súbor a otvoríme ho stlačením Open. Ak bol súbor uložený

správne, môžeme načítanú inštrukciu pridať do programu podľa postupu

„Vloženie inštrukcie“





B.4 Spustenie simulácie

Simuláciu môžeme spustiť dvoma spôsobmi:

- tlačidlom Run

- označením inštrukcie v pamäti programu a tlačidlom RunTo

Predpokladajme, že sme do pamäti načítali program „test1.ant“ z adresára \tst. Je to

jednoduchý program pre oboznámenie sa so simulátorom. Obsah pamäti bude

vyzerať nasledovne:

Obsah pamäti pred spustením programu



Adresa Inštrukcia Operand/konštanta

0 LOAD [256]

1 ADD [257]

2 STORE [258]

3 HALT

256 -4

257 12

258



Spustíme program pomocou Run.

1) Aktuálne sa vykonáva sekvencia Fetch: Na základe toho sa obsah registra PC

pošle do registra MAR a zobrazí sa v okne pre MAR. V okne Control Unit sa

vysvieti text „PC -> MAR“, ktorý reprezentuje tento prenos. Hlavička PC je

vyfarbená oranžovou farbou a hlavička MAR zelenou, čo zvýrazňuje, ktorý

register je zdrojový, a ktorý cieľový. Adresná zbernica sa zvýrazní zelenou

farbou a šípka ukazuje smer prenosu po nej.

2) Pri ďalšom stlačení Run sa podľa adresy v MAR vyberie obsah príslušného poľa

pamäti, ktoré sa vyznačí modrou farbou a zobrazí sa v MBR. Všimnime si aj

teraz farebné označenie hlavičiek registrov zapojených do prenosu, aktívne

zbernice pripojené k pamäti a smer ich prenosu.

3) Ďalším stlačením Run sa obsah MBR prenesie do IR, kde sa zobrazí názov

inštrukcie, adresovací režim a operand v oddelených oknách. Paralelne s tým

sa vykoná inkrementovanie PC. V tomto prípade je aktívna dátová zbernica.

4) Posledným stlačením Run v rámci sekvencie Fetch sa dekóduje inštrukcia v IR,

čo je symbolizované prenosom po riadiacej zbernici (Control) a v okne Control



14

Unit sa zobrazí nová postupnosť mikroinštrukcií pre jej vykonanie. Postup pri

ďalšom vykonávaní inštrukcií je analogický.

5) Po vykonaní všetkých inštrukcií sa zobrazí správa o úspešnom skončení

simulácie. Stav pamäti by sa mal zmeniť iba na adrese 258, kam sa zapísal

výsledok:

Obsah pamäti po skončení programu



Adresa Inštrukcia Operand/konštanta

0 LOAD [256]

1 ADD [257]

2 STORE [258]

3 HALT

256 -4

257 12

258 8





Spustenie simulácie spôsobí zároveň aktivovanie tlačidla Restart

a deaktivovanie tlačidiel DEL. Niektoré ďalšie možnosti menu budú počas behu

simulácie tiež zamedzené, ich spustenie vyvolá informáciu o bežiacej simulácii.

Tlačidlo Restart je možné použiť po spustení simulácie na jej opätovné začatie

s programom, ktorý je práve v pamäti. Stlačením tohto tlačidla sa inicializuje celý

simulátor okrem pamäti, ktorá ostáva naplnená programom. Okrem toho sa vymaže

aktuálny súbor s výstupným záznamom a nahradí sa novým prázdnym.

Tlačidlo Reset - slúži na úplne zrušenie simulácie aj s obsahom pamäti. Je potrebné

po jeho stlačení vložiť program nanovo. Súbor s výstupným záznamom sa nemaže,

len sa doňho poznačí, že nastal Reset a uzavrie sa.









15

Overenie priebehu a výsledkov simulácie



Na overenie priebehu a výsledkov simulácie slúži súbor „logfileX.txt“, kde X je

poradové číslo. Presné meno log-súboru sa objaví v informačnom okne po spustení

simulácie. Tento súbor s výstupným záznamom môžeme nájsť v podadresári \logs.

Pre náš jednoduchý príklad bol vytvorený takýto záznam, z ktorého je vidieť obsah

registrov a pamäti po každom kroku simulácie:





***Simulation started***



MEMORY:

Instructions on addresses: 0|1|2|3|

Operands on addresses: 256(-4)|257(12)|

REGISTERS:

PC: 0

MAR: 0

MBR: 0

ACC: 0

IR: 0



-------------------

Instruction LOAD fetched from address 0

REGISTERS:

PC: 1

MAR: 0

MBR: LOAD [256]

ACC: 0

IR: LOAD [256]



>>Instruction executed!>Instruction executed!>Instruction executed!>Instruction executed!<<

MEMORY(check for update...):

Operands on addresses: 256(-4)|257(12)|258(8)|

REGISTERS:

PC: 4

MAR: 3

MBR: HALT

ACC: 8

IR: HALT



**Simulation finished!**









17



Related docs
Other docs by Stariya Js @ B...
reflection on audacity
Views: 1  |  Downloads: 0
12FFIS
Views: 0  |  Downloads: 0
Sujatha_QA
Views: 3  |  Downloads: 0
ch20
Views: 0  |  Downloads: 0
jeux_pedagogiques1
Views: 5  |  Downloads: 0
ManuEpidemics
Views: 0  |  Downloads: 0
Lab_2_MSWO_data_sheet
Views: 1  |  Downloads: 0
07-grand_prix_f1
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!