Zero fill - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Books/StaraZbirka/StaraZbirka.pdf · m. stankovi} i...

697
TO MUX S Micro- sequencer TO MUX C SBR CAR INTS NA MS PS BR MC TO MUX M Instruction decoder From mapping ROM OPCODE IR SHAM DST MODE S SRC MO 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MM MR Control ROM 256 x 31 00 01 10 M M M R DSA SB M A M B M D FS MO MC 11 L S P S MS NA MO EI Z N C V z n c v C1 A B V + C + Function unit N+ Z+ F 4 4 Zero fill 5 16 5 MO PSR MO MSTS TO MUX B TO MUX B CISC CPU FS Bus A Bus B Data in Address Memory M Data out MO To I/O Data out Address out From I/O 0 1 MUX D MD Bus D 0 1 2 3 MUX A 0 1 2 3 MUX B D RW 16 x 16 modified register file with R0 = 0 A B 0 || DST DSA 0 || DST DSA SP PC MO MO From PSR From zero fill 0 11 MA MB 0 12 3 4 4 4 2 8 8

Transcript of Zero fill - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Books/StaraZbirka/StaraZbirka.pdf · m. stankovi} i...

TO MUX S

Micro-sequencer

TO MUX CSBR

CAR

INTS

NAMSPSBRMC

TO MUX M

Instructiondecoder

Frommapping ROM

OPCODE IR SHAM DST MODE S SRC MO

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

MMMR

ControlROM256 x 31

000110

MM

MR DSA SB

MA

MB

MD FS MO

MC

11LS

PS MS NA MO

EI Z N C V

z n c v

C1 A B

V+

C+ Function unit

N+

Z+

F

4

4

Zero fill5 16

5

MO

PSR

MO

MSTS

TO MUX B

TO MUX B

CISC CPU

FS

Bus A Bus B

Data in Address

Memory M

Data out

MO

To I/O

Data out

Address out

From I/O0 1MUX DMD

Bus D

0 1 2 3MUX A

0 1 2 3MUX B

DRW

16 x 16modified

register filewith R0 = 0

A B

0 || DST

DSA0 || DST

DSA

SP

PC MO

MO

From PSR

From zerofill

011

MA MB

012

34

4 42

8

8

Reg_32

Register file

Zcomp_32

Four_32

Reg_32 Byteswap

Reg_set_D

Reset

Clk

GPR_SRC_AGRP_SRC_B

GPR_DST

Bypass_A

Bypass_B

Offset

IA_bus

Reg_sel_A

Data_sel

RightArith

Shamt

ShamtShamt_sel

DA_bus

Reg_sel_C

Signed Cin

D_bus

Dsave_2

Dsave_1

Reg_sel_B

LTZ GTZ EQ

Reg_A Reg_B

Reg_C

SignedSetenCin

Reg_D

B_busA_bus

GP

Mux

Mux Mux

Mux Mux

Mux

Reg_32

A BALU_32Shift_32

Mux

Mux

Reg_32

Reg_32

Reg_32

Mux

EXT

1

Mile Stoj~ev, Saa Risti, Milo Krsti _________________________________

ZBIRKA ZADATAKA IZ MIKROPROCESORA I

MIKRORA^UNARA I izdanje

2

Mile K. Stoj~ev, Saa S. Risti, Milo D. Krsti

ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORA^UNARA I izdanje Izdava~: Elektronski fakultet u Ni P. fax 73, 18000 Ni http://www.elfak.ni.ac.yu Recenzenti: Prof. dr Milun Jevti

Prof. dr Emina Milovanovi Urednik: Prof. dr Zoran S. Nikoli Tehni~ka obrada: Saa Risti, Milo Krsti Odlukom Nastavno-nau~nog vea Elektronskog fakulteta u Niu br. 1/0-05-094/98-002 od 12.10.1998 odobreno je tampanje rukopisa pod naslovom ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORA^UNARA, autora Mileta Stoj~eva, Sae Ristia i Miloa Krstia, kao pomonog ud`benika. ISBN 86-80135-18-6 CIP - Katalogizacija u publikaciji Narodna biblioteka Srbije, Beograd 681.325-181.4(075.8)(076) STOJ^EV, Mile K. Zbirka zadataka iz mikroprocesora i mikrora~unara / Mile K. Stoj~ev, Saa S. Risti, Milo D. Krsti. – [1. izd.]. – Ni : Elektronski fakultet, 1999 (Ni : Paser Print). - 1 knj. (razl. pag.) : graf. prikazi ; 24 cm. - (Edicija Pomoni ud`benici / Elektronski fakultet, Ni Na vrhu nasl. str.: Univerzitet u Niu. - Tira` 300. - Bibliografija. ISBN 86-80135-18-6 1. Risti, Saa S. 2. Krsti, Milo D. 681.32(075.8)(076) a) Mikroprocesori - Zadaci b) Ra~unari - Zadaci ID=70060812 Pretampavanje ili umno`avanje ove knjige nije dozvoljeno bez pismene dozvole izdava~a. Tira`: 300 primeraka [tampa: PASER PRINT, Ni

3

U n i v e r z i t e t u N i u E l e k t r o n s k i f a k u l t e t

Mile K. Stoj~ev, Saa S. Risti, Milo D. Krsti

ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORA^UNARA

Edicija: Pomoni ud`benici

1999.

4

Publikacije Elektronskog fakulteta u Niu ____________________________________________________________________________________

Edicija: Pomoni ud`benici ____________________________________________________________________________________ A. Mitrovi, PRAKTIKUM ZA VE@BE NA RA^UNARU IZ PREDMETA VE[TA^KA

INTELIGENCIJA, 1994

^. Milosavljevi, OSNOVI AUTOMATIKE - priru~nik za laboratorijske ve`be, 1995

^. Milosavljevi, OSNOVI AUTOMATIKE (vremenski kontinualni SAU) - metodi~ka zbirka zadataka, 1995

N. Jankovi, PRAKTIKUM LABORATORIJSKIH VE@BANJA ZA PREDMET SENZORI I PRETVARA^I, 1995

M. Radmanovi, D. Man~i, ZBIRKA ZADATAKA IZ ENERGETSKE ELEKTRONIKE, 1995

S. Risti, Z. Priji, D. Panti, ELEKTRONSKE KOMPONENTE - ZBIRKA ZADATAKA, 1995

L. Stefanovi, S. Popovi, OBRADA TEKSTA U TEXU, 1995

D. Anti, i dr., SISTEMI AUTOMATSKOG UPRAVLJANJA, 1995

B. Dimitrijevi, D. Deni, G. \or|evi, ELEKTRI^NA MERENJA - ZBIRKA ZADATAKA, 1995

D. Maksimovi, V. Litovski, PROJEKTOVANJE ELEKTRONSKIH KOLA - laboratorijski praktikum, 1996

M. Stankovi, D. Radulovi, D. Risti, MRE@NI SERVIS - WORLD, WIDE, WEB, 1996

B. Milovanovi i dr. MIKROTALASNA TEHNIKA - zbirka zadataka, 1996

M. Naumovi, ZBIRKA RE[ENIH ZADATAKA IZ DIGITALNIH SISTEMA UPRAVLJANJA, I deo: Diskretni signali, 1997

P. Ran~i, PRILOZI SVETLOTEHNI~KIM KARAKTERIZACIJAMA - SVESKA 4: OSVETLJENJE ZATVORENIH PROSTORA, 1997

M. Gmitrovi, R. Petkovi, TEORIJA ELEKTRI^NIH KOLA - Metodi~ka zbirka zadataka, 1997

M. Stankovi i dr., ZBIRKA ZADATAKA IZ OSNOVA RA^UNARSKE TEHNIKE, 1998

V. Litovski i dr., PRAKTIKUM LABORATORIJSKIH VE@BANJA IZ ELEKTRONIKE I, 1998

Z. Nikoli,i dr., PRAKTIKUM LABORATORIJSKIH VE@BI IZ OSNOVA TELEKOMUNIKACIJA I DIGITALNIH TELEKOMUNIKACIJA, 1999

M. Stoj~ev, S. Risti, M. Krsti, ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORA^UNARA, 1999

5

Ovu zbirku posveujemo studentima Elektronskog fakulteta u Niu

6

Reg_32

Register file

Zcomp_32

Four_32

Reg_32 Byteswap

Reg_set_D

Reset

Clk

GPR_SRC_AGRP_SRC_B

GPR_DST

Bypass_A

Bypass_B

Offset

IA_bus

Reg_sel_A

Data_sel

RightArith

Shamt

ShamtShamt_sel

DA_bus

Reg_sel_C

Signed Cin

D_bus

Dsave_2

Dsave_1

Reg_sel_B

LTZ GTZ EQ

Reg_A Reg_B

Reg_C

SignedSetenCin

Reg_D

B_busA_bus

GP

Mux

Mux Mux

Mux Mux

Mux

Reg_32

A BALU_32Shift_32

Mux

Mux

Reg_32

Reg_32

Reg_32

Mux

EXT

Staza podataka mikroprocesora MIPS R2000

7

TO MUX S

Micro-sequencer

TO MUX CSBR

CAR

INTS

NAMSPSBRMC

TO MUX M

Instructiondecoder

Frommapping ROM

OPCODE IR SHAM DST MODE S SRC MO

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

MMMR

ControlROM256 x 31

000110

MM

MR DSA SB

MA

MB

MD FS MO

MC

11LS

PS MS NA MO

EI Z N C V

z n c v

C1 A B

V+

C+ Function unit

N+

Z+

F

4

4

Zero fill5 16

5

MO

PSR

MO

MSTS

TO MUX B

TO MUX B

CISC CPU

FS

Bus A Bus B

Data in Address

Memory M

Data out

MO

To I/O

Data out

Address out

From I/O0 1MUX DMD

Bus D

0 1 2 3MUX A

0 1 2 3MUX B

DRW

16 x 16modified

register filewith R0 = 0

A B

0 || DST

DSA0 || DST

DSA

SP

PC MO

MO

From PSR

From zerofill

011

MA MB

012

34

4 42

8

8

Klasi~na CISC arhitektura

8

Edicija: Pomoni ud`benici

ISBN 86-80135-18-6

9

M. S

toj~

ev, S

. Ris

ti, M

. Krs

ti

Z

BIR

KA

ZA

DA

TA

KA

IZ

M

IKR

OPR

OC

ESO

RA

I M

IKR

OR

A^

UN

AR

A

1. Ocena performansi

1-1

1. Ocena performansi

ö õ

Test pitanje 1.1

[ta je arhitektura ra~unara?

Odgovor Arhitektura ra~unara opisuje pogled korisnika na ra~unar. Skup naredbi, vidljivi registri, strukture kao to su tabele za upravljanje radom memorije, model za manipulaciju sa izuzecima, sve su to delovi arhitekture ra~unara.

Test pitanje 1.2

[ta je organizacija ra~unara?

Odgovor

Organizacija ra~unara opisuje implementaciju arhitekture koja je nevidljiva korisniku. Proto~na struktura, transparentni ke, tabele koje se odnose na definiciju funkcije hardvera, TLB (translation look-aside buffer) - sve su to aspekti organizacije ra~unara.

Test pitanje 1.3

[ta je procesor, a ta ra~unar sa memorisanim programom?

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-2

Odgovor Procesor opte namene predstavlja kona~ni automat (finite state machine) koji izvrava instrukcije smetene u memoriji. Stanje sistema definiu vrednosti koje se ~uvaju u memorijskim blokovima zajedno sa vrednostima koje se ~uvaju u odre|enim registrima koji su sastavni deo procesora. Svaka instrukcija definie na~in na koji se stanje maine menja a, tako|e, i koju instrukciju treba izvriti kao narednu.

registri

instrukcije

FF...FF16

podaciadrese

instrukcije i podaci

memorija

procesor

heksadecimalneadrese

00...0016

Slika 1.1 Ra~unar sa memorisanim programom

Ra~unarski sistem kod koga se operacije kodirane u binarnoj formi smetaju u memoriju a izvravaju u definisanoj sekvenci zove se ra~unar sa memorisanim programom (stored program computer) (Slika 1.1). Ra~unari sa memorisanim programom ~esto se zovu von Neumann-ovi ra~unari.

Test pitanje 1.4

Koji su osnovni blokovi von Neumann-ovog ra~unara?

Odgovor Osnovni gradivni blokovi sistema sa Slike 1.2 su:

ulazni interfejs (i)

ulazni uredjaj (i)

uobi~ajeno skupljeniu jedinstvenu stazupodataka

izlazni uredjaj (i)sekundarnamemorija

procesor

glavnamemorija izlazni interfejs (i)

instrukcije i podaci

Slika 1.2 Osnovna struktura von Neumann-ovog ra~unara

1. Memorija u kojoj se ~uvaju instrukcije i podaci koji su potrebni instrukcijama

1. Ocena performansi

1-3

2. Ulazno/izlazni mehanizmi i periferni ure|aji namenjeni za prenos podataka ka-, ili iz sistema

3. Procesor koga ~ine sledea dva bloka:

• Upravlja~ka jedinica - pribavlja instrukcije iz memorije,

• Aritmeti~ki procesor - obavlja specificirane operacije.

Test pitanje 1.5 Ukazati na osnovne razlike izme|u von Neumann-ovog i Harvard pristupa.

Odgovor Korienje iste memorije za podatke i instrukcije je klju~na karakteristika von Neumann-ovih ra~unara.

Nasuprot ovakvom pristupu kod Harvard arhitekture (Slika 1.3), memorija u kojoj se ~uvaju podaci je izdvojena od memorije u kojoj se ~uvaju instrukcije. Kod ovakvog reenja putevi za prenos podataka i instrukcija su izdvojeni. Harvard arhitektura mo`e da pojednostavi i pobolja mehanizme koji se odnose na ~itanje/upis u memoriju, posebno ako programe samo ~itamo a ne menjamo u toku izvrenja programa, dok se podaci mogu ~itati i menjati. Tako|e, koristei dve izdvojene memorije, podaci i instrukcije se mogu simultano pribavljati.

Korienje jedinstvene memorije za podatke i instrukcije dovodi do efikasnijeg korienja memorije i tipi~no je kao reenje kod ranijih ra~unarskih sistema. Savremeni RISC i DSP procesori koriste vei broj puteva (magistrala) za prenos podataka izme|u procesora, memorije i U/I podsistema.

procesor

memorijapodataka

magistralaadresepodataka

magistralapodataka

memorijaza

instrukcije

magistralainstrukcija

magistralaadreseinstrukcija

ka spoljnojmemoriji

Slika 1.3 Pojednostavljena struktura Harvard arhitekture

Test pitanje

Kako se definie pojam propusnost?

Odgovor

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-4

Propusnost (bandwidth) predstavlja iznos informacija koji se mo`e preneti po komunikacionoj vezi, a izra`ava se u bitovima/s. Propusnost se jednostavno poveava poveanjem broja `ica u vezi. Poveanje broja linija podataka sa 32 na 64 udvostru~ava se propusnost.

Test pitanje 1.6

[ta je MIPS i kako se odredjuje?

Odgovor Mera koja se ~esto koristi za predstavljanje performansi ra~unara je MIPS (milion instrukcija u sekundi). MIPS ukazuje na brzinu ra~unara i izra`ava broj “prose~nih instrukcija” koje on izvrava u sekundi. Da bi ukazali na zna~enje prose~ne instrukcije analizirajmo inverznu MIPS meru, a to je, vreme izvreenja prose~ne instrukcije. Vreme izvrenja prose~ne instrukcije se mo`e odrediti na osnovu u~estanosti i vremena izvrenja svakog tipa instrukcija. Sledei trag izvrenja velikog broja ben~mark programa mogue je odrediti koliko puta se instrukcija izvrava u programu. Ilustracije radi usvojimo da je u~estanost pojavljivanja instrukcija u programu (IF - instruction frequency) data na Slici 1.4. Vreme izvrenja instrukcije izra`eno kao broj taktnih intervala (CPI - cycles per instruction) za svaki tip instrukcije je tako|e prikazano na Slici 1.4. Drugim re~ima CPI odgovara broju taknih intervala za koji procesor izvrava odre|enu instrukciju. Kod razli~itih procesora broj taktnih intervala potreban da se izvri odre|ena instrukcija je razli~it. Ako usvojimo da taktni interval traje t nanosekundi, tada za vreme izvrenja instrukcije va`i CPI*t nanosekundi.

Na osnovu Slike 1.4, prose~no vreme izvrenja programa se odre|uje kao:

( )∑=

k

1iCPUii T*CPI*IF

gde je i - tip instrukcije u okviru skupa instrukcija; k - ukupan broj instrukcija u repertoaru.

Za MIPS va`i:

( )1000

T*CPI*IF

1MIPS k

1iCPUii

×=

∑=

Na osnovu izraza zaklju~ujemo da se MIPS performansna mera dobija na osnovu prose~nog broja vremena izvrenja svakog tipa instrukcije, ponderisanim sa prose~nim brojem izvrenja te instrukcije u programu.

tip instrukcije

u~estanost instrukcije

% (IF)

broj taktnih intervala po

instrukciji (CPI)

ponderisani CPI

(IF * CPI)

Load i Store 30,4 1,5 0,456

Addi i Subi 10,0 1 0,1

Muli i Divi 3,8 10 0,38

Addf i Subf 9,5 7 0,665

Mulf i Divf 6,5 15 0,975

Logi~ke 3,0 1 0,03

Branch 20,0 1,5 0,3

1. Ocena performansi

1-5

Compare, Shift 16,8 2 0,336

broj taktova po prose~noj instrukciji = 3,242

Vreme izvrenja prose~ne instrukcije (za t=10 ns) = 3,242 × 10 = 32,42 ns

Broj MIPS-ova = (1 / 32,.42) = 30,845

Slika 1.4 Primer odredjivanja performansne mere MIPS.

Zadatak 1.1

Neka su u~estanost pojavljivanja instrukcija u programu (IF) i broj taktova potreban za izvrenje odredjenog tipa instrukcije (CPI) dati na Slici 1.5. Ako je t=10ns odredi broj MIPS-ova.

tip instrukcije u~estanost instrukcije

% (IF)

broj taktnih intervala po instrukciji (CPI)

Load i Store 28.5 2

Addi i Subi 12.0 1

Muli i Divi 4.5 8

Addf i Subf 8.5 7

Mulf i Divf 7.5 12

Logi~ke 5.0 1

Branch 18.0 1.5

Compare, shift 16.0 2

Slika 1.5 U~estanost pojavljivanja instrukcije i broj taktova po instrukciji

Test pitanje 1.7

Koje se druge mere i faktori, pored MIPS-a i MFLOPS-a, koriste za dobijanje slike o sistemu?

Odgovor Naj~ee koriene mere su:

(1) Propusnost procesora (throughput of a processor) je mera koja ukazuje na broj programa (zadataka ili zahteva) koje procesor mo`e da izvri po jedinici vremena.

(2) Iskorienost procesora ti~e se dela vremena u toku koga je procesor zauzet izvrenjem programa. U sutini, to je odnos izme|u vremena zauzea i ukupno proteklog vremena.

(3) Vreme odziva (response time) predstavlja vremenski interval od trenutka kada se izda zahtev za opslu`ivanje, do trenutka kada se ta usluga obavi. ^esto vreme odziva se naziva i kru`no vreme (turnaround time).

(4) Memorijska propusnost (memory bandwidth) ukazuje na broj memorijskih re~i kojima se u jedinici vremena mo`e pristupiti.

(5) Vreme pristupa memoriji (memory access time) predstavlja srednje vreme potrebno procesoru da pristupi memoriji, obi~no se izra`ava u nanosekundama (ns).

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-6

(6) Obim memorije (memory size) je kapacitet memorije a izra`ava se u megabajtovima (Mbajtovi=MB). Na odre|eni na~in ova mera ukazuje na iznos podataka koji se mo`e ~uvati u memoriji.

Pored nabrojanih performansnih mera postoje i drugi faktori koji imaju uticaj na kvalitet ra~unara, a to su:

(a) Optost - je mera koja odre|uje opseg aplikacija date arhitekture. Neke od arhitektura su dobre za nau~ne aplikacije a druge za poslovne. Arhitektura je marketinka ako podr`ava vei broj aplikacija.

(b) Jednostavnost korienja je mera koja ukazuje koliko je ta arhitektura laka programeru sistema, kada on `eli da je savlada i kada `eli da napie softver (kao to su operativni sistem ili kompilator) za tu arhitekturu.

(c) Proirljivost je mera koja ukazuje koliko je lako da se nadgradi ta arhitektura, kao to je ugradnja veeg broja procesora, vie memorije i vei broj U/I ure|aja.

(d) Kompatibilnost ukazuje koliko je data arhitektura kompatibilna sa prethodnim ra~unarom iz iste familije.

(e) Pouzdanost ukazuje na verovatnou greke ili srednje vreme izmedju greaka.

Zadatak 1.2

Ukazati kako se vri pore|enje performansi dvaju ra~unara R1 i R2. Dobijeni rezultati koji se odnose na vremena izvrenja T1 i T2 dvaju razli~itih programa P1 i P2, na ra~unaru R1 i R2, su sledea:

program T1 T2

P1 8s 4s

P2 3s 4s

Koja maina je br`a, za dati program, i za koliko?

Odgovor Ako se odre|eni program izvrava na ra~unaru Rx, tada izme|u performansi te maine i vremena izvrenja tog programa postoji sledei odnos:

PRx=1/ Tx

gde su : PRx - performanse; Tx - vreme izvrenja.

Ako imamo dva ra~unara X i Y i ako su performanse ra~unara X vee od performansi ra~unara Y, tada va`i :

PRx > PRy ⇒ 1/ Tx > 1/ Ty ⇒ Ty > Tx

^esto, kada upore|ujemo performanse dva ra~unara, mi govorimo: "Rx je n puta br`i od Ry", a to zna~i:

PRx/PRy = Ty/ Tx = n

U konkretnom slu~aju imaemo:

a) za program P1

PR1/ PR2= 4/ 8 = 0,5 ⇒ R2 dva puta br`i od R1;

b) za program P2

1. Ocena performansi

1-7

PR1/ PR2= 4/ 3 = 1,33 ⇒ R1 za 1,33 puta br`i od R2.

Zadatak 1.3

Program P1 se izvrava na ra~unaru R1 za vreme T1=8s, a na ra~unaru R2 za vreme T2=4s. Merenjem je tako|e utvr|eno sledee:

program broj instrukcija koje se izvravaju na R1 broj instrukcija koje se izvravaju na R2

P1 160*106 100*106

Odrediti broj izvrenih instrukcija u sekundi za svaki od ra~unara u toku izvrenja programa P1.

Odgovor a) za ra~unar R1

Ako za vreme T1 ra~unar R1 izvri 160*106 instrukcija tada na osnovu sledee proporcije, imaemo:

8 : 160*106 = 1 : x1

x1=18

*160*106=20*106 (instrukcija / sekundi);

b) za ra~unar R2:

4 : 100*106 = 1 : x2

x2=14

*100*106=25*106 (instrukcija / sekundi).

Zadatak 1.4

Neka se program P1 izvrava na ra~unaru R1 za 10s, u slu~aju kada je taktna frekvencija R1 fcp1=400 MHz. Projektantima je postavljen cilj da konstruiu ra~unar R2 koji e izvravati isti program za 6 s. Analizom su projektanti zaklju~ili da je mogue u zna~ajnoj meri poveati taktnu frekvenciju, ali ovo poveanje za posledicu ima sledee: novom ra~unaru R2 bie potrebno 1,2 puta vie taktnih intervala za izvrenje programa P1 u odnosu na ra~unar R1. Odrediti taktnu frekvenciju fcp2, ra~unara R2.

Odgovor U optem slu~aju, va`i sledea relacija:

Tx=Nx/ fcp

gde je:

Tx-vreme potrebno CPU-u da izvri program; Nx- ukupan broj taktnih intervala (perioda) u toku izvrenja programa; fcp- taktna frekvencija.

U konkretnom slu~aju, ra~unar R1 izvrava program P1 za N1 broj taktnih intervala, tj.:

10=N1/ (400*106) ⇒ N1=4000*106 (perioda)

Ako ra~unar R2 izvrava program P1 za 6 s, pri N2=1,2 N1, tada va`i:

6=N2/ fcp2 ⇒ fcp2= MHz 8006

10*4000*1,2 6

=

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-8

To zna~i da taktna frekvencija ra~unara R2 - fcp2, treba da bude dva puta vea od taktne frekvencije ra~unara R1, fcp1.

Test pitanje 1.8

Na osnovu koje relacije se odre|uje vreme koje je potrebno CPU-u da izvri program? Navesti faktore na osnovu kojih se odre|uje to vreme. U kojim se jedinicama izra`avaju komponente performansi?

Odgovor

Tcpu= cpt*CPI*NI=iodtaktni_perdibroj_sekun*

ainstrukcijlaih_intervabroj_taktn*

programukcijabroj_instr

gde je : NI-broj instrukcija u programu; CPI-broj taktnih intervala po instrukciji; tcp-vreme trajanja taktne pobude. Pri ovome imamo da je:

• tcp-odre|eno od VLSI IC poluprovodni~ke tehnologije i organizacije ra~unara • CPI-zavisan od organizacije i skupa instrukcija arhitekture CPU-a • NI-odre|en skupom instrukcija i tehnologijom kompilatora.

Osnovne komponente performansi CPU-a se izra`avaju u sledeim jedinicama:

komponente performansi jedinice mera

Tcpu sekunda

NI broj instrukcija potreban da se izvri program

CPI prose~an broj taktnih perioda po instrukciji

tcp broj sekundi po taktnom periodu

Test pitanje 1.9 Vreme koje je potrebno CPU-u de izvri program, TCPU se definie i kao:

TCPU=broj_taktnih_intervala_CPU-a_u_programu*tcp=N*tcp.

Skup instrukcija ~ini vei broj razli~itih klasa instrukcija. Instrukcije koje pripadaju razli~itim klasama se izvravaju za razli~ito vreme. Ukazati, detaljnije, kako se odre|uje N.

Odgovor

N=∑=

n

1iii NI*CPI

gde je : n-broj razli~itih klasa instrukcija; NIi- ukazauje na to koliko se broj puta instrukcija iz klase i izvrava u programu; CPIi prose~no vreme izvrenja instrukcije iz klase i.

Prema tome:

cp

n

1iiiCPU t*N*CPIT

= ∑

=

,

dok je

1. Ocena performansi

1-9

∑∑

=

=

==

n

1i

ii

n

1iii

ukcijabroj_instrNI

*CPIukcijabroj_instr

NI*CPICPI

Zadatak 1.5 Neka postoje dve implementacije arhitektura sa istim skupom naredbi. Ra~unar R1 karakterie tcp1=1ns i CPI1=2.0, a ra~unar R2 tcp2=2ns i CPI2=1.2. Koja maina je br`a za ovaj program i koliko?

Odgovor Obe maine izvravaju isti broj instrukcija u toku izvrenja programa i ozna~imo ovaj broj sa k. Broj taktnih intervala Nx u toku izvrenja programa:

a) za ra~unar R1 iznosi:

N1=k*2,0

b) za ra~unar R2 iznosi

N2=k*1,2

CPU-ovo vreme izra~unavanja za svaki ra~unar je:

i) za ra~unar R1:

TCPU1=k*2,0*tcp1=k*2,0*1ns=2,0*k ns;

ii) za ra~unar R2:

TCPU2=k*1,2*tcp2=k*1,2*2ns=2,4*k ns.

Formiranjem odnosa:

1,2nsk *2,0nsk *2,4

Tcpu1Tcpu2

PR2PR1

===

Ovaj rezultat ukazuje da je ra~unar R1 br`i 1,2 puta od ra~unara R2.

Zadatak 1.6

Projektant kompilatora treba da izabere odgovarajuu kôdnu sekvencu. Od projektanata hardvera je dobio sledee podatke:

klasa instrukcije vrednost CPI-a za ovu klasu instrukcija

A 1

B 2

C 3

-Za odre|eni HLL iskaz, projektant kompilatora je kreirao dve kôdne sekvence za ~ije izvrenje je potreban sledei broj instrukcija.

kodna sekvenca broj instrukcija po instrukcionoj klasi

A B C

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-10

1 2 1 2

2 4 1 1

Koja kodna sekvenca izvrava vei broj instrukcija? Koja je br`a? Koliki je CPI za svaku sekvencu?

Odgovor Sekvenca 1 se izvrava za 2+1+2=5 instrukcija, a sekvenca 2 za 4+1+1=6 instrukcija. Broj taktnih intervala CPU-a za odgovarajuu programsku sekvencu se odre|uje na osnovu izraza:

N=∑=

n

1iii NI*CPI

U konkretnom slu~aju:

a) za kodnu sekvencu 1 imaemo

N1=(2*1)+(1*2)+(2*3)=10 taktnih intervala

b) za kodnu sekvencu 2

N2=(4*1)+(1*2)+(1*3)=9 taktnih intervala

Vrednost CPI se odre|uje na osnovu izraza:

CPI=Nx/ broj_instrukcija

i) za sekvencu 1 imamo:

CPI1=10/5=2

ii) za sekvencu 2

CPI2=9/6=1,5

Ovaj primer pokazuje koliko je nekorektno da se koristi samo jedan faktor (broj instrukcija) da bi se ocenile performanse. Kada se upore|uju dva ra~unara, moraju se uzeti u obzir sve prethodno analizirane komponente.

Test pitanje 1.9

Ukazati na definiciju Amdahl-ovog zakona u izvornom obliku.

Odgovor Poveanje performansi se mo`e ostvariti poboljanjem nekog dela ra~unara (maine).

Amdahl-ov zakon definie ubrzanje koje se ostvaruje kada se pobolja neki deo maine tako da se i performanse te maine poveaju.

Ubrzanje=janjeisti_poboloja_ne_kore_maine_kperformansnjei_poboljaoja_koriste_maine_kperformans

ili, alternativno:

Ubrzanje=boljanjemini_sa_porama_na_maenja_progvreme_izvroboljanjaini_bez_prama_na_maenja_progvreme_izvr

Kada se analizira program (zadatak), mo`e se uo~iti da postoje delovi koji se mogu usavriti (ili se usavravaju) i delovi koji se ne mogu usavriti (ili se ne usavravaju). Prema tome, ako vreme izvrenja programa ozna~imo sa T, deo programa koji se mo`e usavriti sa Fpob, a ubrzanje sa Spob, tada:

1. Ocena performansi

1-11

( )

+−=

SpobFpobFpob1*TstaroTnovo

Ukupno ubrzanje Suk predstavlja odnos vremena izvrenja Tnovo i Tstaro:

( )

SpobFpobFpob1

1TstaroTnovoSuk

+−==

Ilustrcije radi, analizirajmo sledea dva slu~aja:

(I) Neka se usavreni deo programa izvrava 10 puta br`e od originalnog (neusavrenog). Za deo programa koji se mo`e usavriti u neusavrenom programu troi se 40% vremena. Ukupno ubrzanje Suk koje se posti`e uvo|enjem poboljanja iznosi sada:

Fpob=0.4

Spob=10

Suk=1

0 6 0 410

10 64

156. . .

.+

= ≈

(II) Neka se program na nekoj maini izvrava za 100s, pri ~emu se za operacije mno`enja troi 80s od tog vremena. Koliko puta treba ubrzati mno`enje ako `elimo da se program izvrava pet puta br`e.

Tnovo=Tstaro ( )

+−

SpobFpobFpob1

20=100((1-0.8)+0.8/Spob)

20=20+80/Spob

Ovaj rezultat ukazuje da ubrzanje izvrenja programa za pet puta nije mogue postii sa prihvatljivom vrednou Spob (neprihvatljiva vrednost za Spob je ∞).

Zadatak 1.7

Dva programa, P1 i P2, testirana su na tri ra~unara R1, R2 i R3, a dobijeni testovi su prikazani na Slici 1.6.

R1 R2 R3

P1 (s) 1 10 20

P2 (s) 1000 100 20

ukupno vreme (s) 1001 110 40

Slika 1.6 Vreme izvrenja programa na tri maine

Proceniti performanse maine sa aspekta vremena izvrenja.

Odgovor Na osnovu definicije "br`i od", mo`emo izvesti sledee zaklju~ke:

1) Za program P1:

• R1 je 10 puta br`i od R2

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-12

• R1 je 20 puta br`i od R3

• R2 je 2 puta br`i od R3

2) Za program P2:

• R2 je 10 puta br`i od R1

• R3 je 50 puta br`i od R1

• R3 je 5 puta br`i od R2

Svaka od prethodno pomenutih tvrdnji je istinita, ali zbirni rezultati daju konfuznu sliku o performansama R1, R2 i R3. Jedan od pristupa da se dâ neka bolja slika o relativnim performansama, zasniva se na pore|enju zbira ukupnog vremena izvrenja za oba programa. Zaklju~ci su sada sledei:

1. Za programe P1 i P2:

- R2 je 9,1 puta br`i od R1

- R3 je 25 puta br`i od R1

- R3 je 2,75 puta br`i od R2

Ako radno optereenje ~ine samo programi P1 i P2 koji se izvravaju podjednak broj puta, prethodne konstatacije su korektne, tj. daju pravu sliku. U optem slu~aju, prose~no vreme izvrenja n programa, koji ~ine radno optereenje, mo`e se izraziti kao aritmeti~ka sredina:

∑=

n

1iiT

n1

,

gde je Ti vreme izvrenja i-tog programa od ukupnog radnog optereenja koga ~ini n programa. Performanse se obi~no izra`avaju kao odnos "jedan sa ukupnim vremenom izvrenja" to predstavlja harmonijsku sredinu:

∑=

n

1i iR1

n

gde je Ri funkcija tipa 1/Ti (od vremena izvrenja programa radnog optereenja koga ~ine n programa). Pitanje koje se sada postavlja je sledee: kakav treba da bude korektan izbor programa koji ~ine radno optereenje? Kod definisanja aritmeti~ke sredine usvojeno je da svi programi imaju podjednaku te`inu, tj. da se svi izvravaju podjednako. Da bi se dala neka korektna ocena o performansama, koriste se sledea dva pristupa:

(a) Prvi pristup - ponderisano vreme izvrenja. Svakom programu koji je deo radnog optereenja dodeljuje se te`inski faktor - Wi (zbir svih te`inskih faktora programa koji ~ine radno optereenje, za dati ra~unar iznosi 1). Sumiranjem proizvoda tipa te`inski faktor dobija se ponderisana aritmeti~ka sredina:

∑=

n

1iii T*W ,

gde je Wi u~estanost ponavljanja i-tog programa u radnom optereenju, a Ti predstavlja vreme izvrenja tog programa. Na Slici 1.7 prikazane su tri razli~ite ponderacije, W(1), W(2) i W(3), od kojih je svaka proporcionalna vremenu izvrenja. Ponderisana harmonijska sredina brzina se definie kao:

1. Ocena performansi

1-13

∑=

n

1i i

i

RW

1

R1 R2 R3 W(1) W(2) W(3)

P1 (s) 1,00 10,00 20,00 0.50 0,909 0,999

P2 (s) 1000,00 100,00 20,00 0,50 0,091 0,001

aritmeti~ka sredina: (W1) 500,50 55,00 20,00

aritmeti~ka sredina: (W2) 91,82 18,18 20,00

aritmeti~ka sredina: (W3) 2,00 10,09 20,00

Slika 1.7 Ponderisane aritmeti~ke sredine vremena izvrenja programa kojima su dodeljene razli~ite te`ine.

(b) Drugi pristup - Normalizovano vreme izvrenja programa. Drugi pristup polazi od toga da radno optereenje ~ini skup programa ~ija vremena izvrenja nemaju istu te`inu ali su ona normalizovana u odnosu na vremena izvrenja na referentnom ra~unaru (maini) i zatim uzima prosek normalizovanih vremena izvrenja. Naj~ea referentna maina je VAX-11/780.

Prose~no normalizovano vreme izvrenja se mo`e izraziti kao aritmeti~ka ili geometrijska sredina. Geometrijska sredina se izra~unava kao:

n

n

1iiodnosenja_kao_Vreme_izvr∏

=

gde Vreme_izvrenja_kao_odnosi predstavlja vreme izvrenja normalizovano u odnosu na referentnu mainu, za i-ti program od ukupno n koji ~ine radno optereenje. U optem slu~aju za geometrijsku sredinu va`i osobina:

=

i

i

i

i

YX

ka_sredinaGeometrijs)(Yka_sredinaGeometrijs)(Xka_sredinaGeometrijs

Na Slici 1.8 prikazane su varijacije aritmeti~kih geometrijskih sredina normalizovanih vremena.

normalizovano sa R1 normalizovano sa R2 normalizovano sa R3

R1 R2 R3 R1 R2 R3 R1 R2 R3

P1 1.0 10.0 20.0 0.1 1.0 2.0 0.05 0.5 1.0

P2 1.0 0.1 0.02 10.0 1.0 0.2 50.0 5.0 1.0

aritmeti~ka sredina 1.0 5.05 10.01 5.05 1.0 1.1 25.03 2.75 1.0

geometrijska sredina 1.0 1.0 0.63 1.0 1.0 0.63 1.58 1.58 1.0

ukupno vreme 1.0 0.11 0,04 9.1 1.0 0.36 25.03 2.75 1.0

Slika 1.8 Vreme izvrenja sa Slike 1.6, normalizovano za svaku mainu

Zadatak 1.8

Neka postoje dve razli~ite implementacije, R1 i R2, istog skupa instrukcija. Skup instrukcija ~ine ~etiri klase (A,B,C i D). Taktna frekvencija R1 je 500 MHZ, a R2 je 750 MHz. CPI za svaku od klasa instrukcija maina R1 i R2 prikazan je na Slici 1.9.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-14

klasa CPI maine R1 CPI maine R2

A 1 2

B 2 2

C 3 4

D 4 4

Slika 1.9 CPI maina R1 i R2 za svaku od klasa A,B,C i D

Ako se vrne performanse definiu kao najvea brzina sa kojom maina mo`e da izvrava sekvencu instrukcija, koje su vrne performanse R1 i R2 izra`ene u instrukcija/sekundi?

Odgovor Maine R1 i R2, mogu postii vrne performanse ako izvravaju instrukcije iz klase A i B, respektivno. Vrne performanse maine R1 su 500 MIPS-a, a maine R2 375 MIPS-a.

Zadatak 1.9

Ako je broj instrukcija koje se izvravaju od strane odre|enog programa podjednak za sve klase sa Slike 1.10, za koliko puta je maina R2 br`a od R1, ako je fcpR1=500 MHz a fcpR2=750 MHz? R1 i R2 su dve razli~ite implementacije istog skupa instrukcija.

klasa CPI maine R1 CPI maine R2

A 1 2

B 2 2

C 3 4

D 4 4

Slika 1.10 CPI maina R1 i R2 za svaku od klasa A,B,C i D

Odgovor

524

4321,CPIR1 =

+++=

034

4422,CPIR2 =

+++=

6cpR1R1CPUR1 10*200NI

MHz5005.2*NIt*CPI*NIT ===

610*250NI

MHz7500.3*NI

=== cpR2R2CPUR2 t*CPI*NIT

Maina R2 ima krae vreme izvrenja i to zna~i da je br`a od R1.

25.1200250

TT

CPUR2

CPUR1 ==

tj., R2 je 1,25 puta br`a od R1.

Zadatak 1.10

1. Ocena performansi

1-15

Neka su R1 i R2 dve razli~ite implementacije istog skupa instrukcija. Skup instrukcija ~ine tri klase A, B, i C. Maina R1 se taktuje frekvencijom 400 MHz a R2 sa 200 MHz. Prose~an broj ciklusa za svaku klasu instrukcija, za R1 i R2, prikazan je na Slici 1.11.

klasa CPIR1 CPIR2 C1isk C2isk C3is

A 4 2 30% 30% 50%

B 6 4 50% 20% 30%

C 8 3 20% 50% 20%

Slika 1.11 Prose~an broj ciklusa svake od klase instrukcija Napomena: Simbol C se odnosi na kompilator. C1(C2) kompilator maine R1(R2). C1isk(C2isk) prose~an broj instrukcija date klase koje se dobijaju prevo|enjem programa. C3 je trei kompilator. Broj instrukcija koje koriste kopilatori za dati program je identi~an.

Koristei C1 (C2) na obe maine R1 i R2, odrediti za koliko e biti br`a R1(R2). Ako se isporu~uje R1 (R2), koji kompilator treba koristiti?

Odgovor a) Ako se koristi C1, va`i:

CPIR1C1=0,3*4+0,5*6+0,2*8=5,8

CPIR2C1=0,3*2+0,5*4+0,2*3=3,2

TCPUR1C1=NI*CPIR1C1*tcpR1=NI*5,8/400⋅106

TCPUR2C1=NI*CPIR2C1*tcpR2=NI*3,2/200⋅106

⇒=⋅⋅

= 1110400851020023

6

6

,)/(.)/(.

TT

CPUR1C1

CPUR2C1 R1 je 1,1 puta br`i od R2.

b) Ako se koristi C2, tada imamo:

CPIR1C2=6,4

CPIR2C2=2,9

pri istim uslovima je: t cpR1 6

1400 10

=⋅

i t cpR2 6

1200 10

=⋅

.

Dobiemo da je R2 za 1,10 puta br`i od R1.

c) Ako se koristi simulator C3, tada:

CPIR1C3=5,4

CPIR2C3=2,8

Pod istim uslovima koji va`e za a) i b), dobiemo da je R1 za 1,04 puta br`e od R2. Zbog toga, kada se koristi kompilator C3, treba isporu~ivati (kupovati) mainu R1.

Zadatak 1.11

Zainteresovani smo za dve implementacije maine, jedna sa-, a druga bez specijalnog FP hardvera. U toku izvrenja programa P u~ee operacija je sledee:

• FP mno`enje 10% • FP sabiranje 15%

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-16

• FP deljenje 5% • Integer instrukcije 70%

MFP (machine with floating point) ima FP hardver i zbog toga mo`e FP operacije implementirati direktno. Za svaku klasu instrukcije potreban je sledei broj taktnih intervala:

• FP mno`enje 6 • FP sabiranje 4 • FP deljenje 20 • Integer instrukcije 2

MNFP (machine with no floating point) nema FP hardver i zbog toga mora emulirati FP operacije koristei Integer instrukcije. Broj instrukcija tipa Integer, potreban za implementaciju svake od FP operacija, je sledei:

• FP mno`enje -> 30, • FP sabiranje -> 20, • FP deljenje -> 50.

Obe maine se taktuju na 100 MHz.

a) Odredi native MIPS za obe maine.

Napomena:

native MIPS =610*enjavreme_izvr

ukcijabroj_instr,

ili, alternativno:

MIPS = 610CPIestanost~taktna_u

*

b) Ako je MFP-u potrebno 300*106 instrukcija da bi izvrio program, koliko je Integer instrukcija potrebno MNFP-u da izvri isti program.

c) Ako je broj instrukcija MFP-a 300*106, za koje vreme se izvri program P na MFP i MNFP maini.

Odgovor a) CPIMFP=0,1*6+0,15*4+0,05*20+0,7*2=3,6

CPIMNFP=2

MIPSMFP= 6

6

106310100

⋅⋅

,=27,8

MIPSMNFP=100 10

2 10

6

6

⋅⋅

=50

b)

klasa instrukcije u~estanost kod MFP broj kod MFP (u milionima)

broj kod MNFP (u milionima)

FP mno`enje 10% 30 30*30=900

1. Ocena performansi

1-17

FP sabiranje 15% 45 45*20=900

FP deljenje 5% 15 50*15=750

Integer instrukcije 70% 210 210

ukupno 100% 300 2760

c) TMFP= s81082710300 6

,,

*MIPS

10N

MFP

61 ==*

TMNFP= s25550

102760 6

,*

MIPS10N

MNFP

62 ==

*

Zadatak 1.12

Neka je data maina kod koje postoje tri klase instrukcija A,B i C i CPI sa merama datim na Slici 1.12.

klasa instrukcije CPI za klasu

A 1

B 2

C 3

Slika 1.12 CPI za klase instrukcija

Na osnovu merenja kôda istog programa za dva razli~ita kompilatora, dobijeni su sledei podaci (Slika 1.13):

broj instrukcija (109) za svaku klasu instrukcije

kd A B C

kompilator 1 5 1 1

kompilator 2 10 1 1

Slika 1.13 Broj instrukcija svake klase

Neka je taktna frekvencija 500 MHz. Koja kôdna sekvenca e se izvravati br`e, shodno MIPS-ovima, a koja shodno vremenu izvrenja?

Odgovor

vreme_izvrenja=kvencijataktna_fre

_intervaliovi_taktniCPU −

TCPU=N*tcp

N=∑=

n

1iii N*CPI

U konkretnom slu~aju, kada je apliciran kompajler 1, va`i:

Nc1=(5*1+1*2+1*3)*109=10*109.

Kada je apliciran kompajler 2, imamo:

Nc2=(10*1+1*2+1*3)*109=15*109.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-18

Vreme izvrenja za odgovarajue kompajlirane programe iznosi:

TCPUC1= s 2010*500

10*106

9

=

TCPUC2= s 3010*500

10*156

9

=

Na osnovu vremena izvrenja zaklju~ujemo da kompilator generie krai program. Odredimo sada MIPS-ove za svaku verziju programa.

MIPS= 6CPU 10*T

ukcijabroj_instr

MIPSC1=( ) *

*5 1 1 10

20 10350

9

6

+ +=

MIPSC2=( ) *

*10 1 1 10

30 10400

9

6

+ +=

Interesantan zaklju~ak koji se namee je da kôd kompilatora 2 ima vei broj MIPS-ova ali se kôd kompilatora 1 izvrava za krai vremenski period.

Zadatak 1.13 Pretpostavite da ste glavni projektant novog procesora. Dizajn procesora i kompilatora su okon~ani, ali ostaje da se donese odluka da li e se i dalje proizvoditi sadanji dizajn ili je vredno potroiti jo dodatnog vremena da bi se reenje poboljalo. O ovom problemu ste diskutovali sa timom in`ejnera hardverista i doli ste do zaklju~ka da se mogu ponuditi sledee opcije:

(a) ne menjati reenje - ovaj tip maine naziva se Rosn. Njegova taktna frekvencija je 500 MHz, a merenja na simulatoru su dala sledee rezultate:

klasa instrukcije CPI frekventnost

A 2 40%

B 3 25%

C 3 25%

D 5 10%

(b) optimizovani hardver - tim projektanata hardvera je utvrdio da mo`e poboljati dizajn procesora, i poveati taktnu frekvenciju na 600 MHz. Poboljani procesor zvaemo Rpob. Merenja na simulatoru su dala sledee rezultate:

klasa instrukcije CPI frekventnost

A 2 40%

B 2 25%

C 3 25%

D 4 10%

(1) Odrediti CPI za maine Rosn i Rpob.

(2) Odredi MIPS za Rosn i Rpob.

1. Ocena performansi

1-19

(3) Koliko puta je br`i Rosn u odnosu na Rpob

(4) Tim projektanata kompilatora obaveten je o diskusiji koja se odnosi na poboljanje maine pa zbog toga predla`e da pobolja kompilator sa ciljem da povea performanse. Kombinaciju: poboljani kompilator plus bazna maina zvaemo Rkom. Dobijeni rezultati za pore|enu verziju kompilatora su sledei:

klasa instrukcije procenat instrukcije koji se izvrava u pore|enju sa Rosn

A 90%

B 90%

C 85%

D 95%

Ako Rosn izvrava 500 instrukcija klase A, tada e Rkom izvravati 0,9*500=450 instrukcija klase A za isti program. Koliki je CPI za Rkom?

(5) Koliko puta je br`i Rkom u odnosu na Rosn?

(6) Tim projektanata kompilatora ukazao je da je mogue implementirati kako hardverska, tako i kompilatorska poboljanja. Ovakav tip maine zvaemo Rhps. Koliko puta je br`i Rhps u odnosu na Rosn?

Odgovor (1) CPI za Rosn iznosi:

CPIRosn=2*0,4+3*0,25+3*0,25+5*0,1=2,8

CPI za Rpob iznosi:

CPIRpob=2*0,4+2*0,25+3*0,25+4*0,1=2,45

(2) MIPS za Rosn i Rpob:

MIPSRosn=500/2,8=179 MIPSRpob=600/2,45=245

(3) S obzirom da su Rosn i Rpob iste arhitekture, mogue je izvriti njihovo pore|enje sa aspekta MIPS rejtinga:

41179254

,MIPS

MIPS

Rosn

Rpob ==

(4) Ovaj problem se mo`e reiti na dva na~ina. Prvi se sastoji u sledeem: odredi se novi sastav instrukcija a zatim uskla|uju frekvencije taktovanja. Kod drugog, odre|uje se novi (relativni) broj instrukcija i deli se CPI sa tim brojem. Koristiemo drugi pristup:

odnos_instrukcija = 0,9*0,4+0,9*0,25+0,85*0,25+0,1*0,95=0,81.

Sada se CPI odre|uje kao:

CPIkom= 13810

950105850250390250390402,

.,*,*,*,*,*,*,*,*

=+++

(5) TCPURosn=osnosn

Rosn

fcp2,8*NI

fcpCPI*NI

=

TCPUhps=hpshpshps

hps

fcp2,5*Ni

fcp3,1*0,81*NI

fcp

CPI*NI==

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-20

Pri fcphps = fcposn, imaemo sledei odnos performansi:

1215282

,,,

TT

PRosnPRhps

CPUhps

CPUosn ===

(6) CPI za Rhps i Rosn se razlikuje, a za Rhps iznosi:

CPIhps= 72810

950104850250390250290402,

,,*,*,*,*,*,*,*,*

=+++

.

Za odnos performansi se dobija:

515002260082

,MHz*,MHz*,

TT

PRosnPRhps

CPurhps

CPUosn ===

Test pitanje 1.10

Mikroprocesor M radi na taktnoj frekvenciji od 100 MHz, i izvrava neki specificirani benchmark program koga ~ine 10.000 000 instrukcija za 0,25 s. Odredi odgovarajue vrednosti za CPI i MIPS koje va`e za dati eksperiment. Da li je procesor superskalaran?

Napomena: CPI - broj taktnih intervala po instrukciji, MIPS - milion instrukcija u sekundi

Odgovor Iz postavke zadatka va`i da Tu = 0,25s predstavlja ukupno vreme izvrenja specificiranog benchmark programa, koga ~ini Nu = 107 - instrukcija, kada mikroprocesor radi na taktnoj frekvenciji od fcp=100 MHz. Na osnovu izraza:

6cp

uu 10*f

CPI*NT = s,

imamo:

CPI = (fcp * Tu * 106)/N

= 25 * 106 * 10-7

= 2,5 takta intervala/instrukcija

Kao mera, MIPS je definisana izrazom:

CPI

fMIPS cp= .

Zamenom odgovarajue brojne vrednosti, dobiemo:

2,5100

MIPS =

= 40 miliona instrukcija/s

Ovo sledi iz ~injenice da M izvrava 107 instrukcija za 0,25s. S obzirom da se superskalarni RISC procesori obi~no projektuju za CPI < 1, to zna~i da M nije superskalarni procesor.

Test pitanje 1.11

Neka se mikroprocesor M1, koji radi na taktnoj frekvenciji 50 MHz, zameni novim modelom M2 koji ima istu arhitekturu kao i M1 ali radi na taktnoj frekvenciji od 75 MHz.

1. Ocena performansi

1-21

a) Ako za odredjeni benchmark program P1, broj MIPS-ova mikroprocesora M1 je m1, koliki je odgovarajui broj MIPS-ova -m2, kod mikroprocesora M2?

b) Kada se M1 ugradi u odgovarajuu mainu tipa personalni ra~unar -PC1, tada se program P1 izvrava za 250s. Zamenom M1 sa M2, vreme izvrenja programa P1 se skrauje samo na 220s. Ukazati na mogui razlog za ovako razo~aravajue “poboljanje” performansi.

Odgovor a) Na osnovu formule MIPS = fcp/CPI, i pretpostavke da obe maine imaju istu arhitekturu, proizilazi da M1 i M2 imaju istu CPI vrednost c. Na osnovu toga, zaklju~ujemo da je:

c50

m =1

c75

m =2 .

Odavde dobijamo:

1m5075

m2 =

= 1,5 m1.

b) Zamenom maine M1 mainom M2, realno je o~ekivati da se vreme izvrenja programa P1 skrati sa 250s na 250/1,5 = 167s. ^injenica da je realno novodobijeno vreme izvrenja programa P1 mnogo du`e (220 ns), ukazuje na to da se program P1, u toku svog izvrenja, dosta ~esto obraa memoriji i da je procesor prinudjen da insertuje vei broj stanja ~ekanja kako bi uspeno zavrio operacije ~itanja i upisa u memoriju. Isti zaklju~ak va`i i za ulazno-izlazne operacije. Pri ovome, treba naglasiti da je rad ulazno-izlaznih uredjaja nezavisan od brzine rada procesora. Navedene ~injenice su glavni razlozi loijih rezultata.

Test pitanje 1.12

Neka mikroprocesor M1 radi na taktnoj frekvenciji fcp1=100 MHz. Usvojimo, dalje, da nam je napredak tehnologije omoguio da M1 zamenimo novim CPU-om M2 ~ija je arhitektura i organizacija identi~na sa M1, ali je taktna frekvencija fcp2 sada via i iznosi 125 MHz. Na koji na~in zamena M1 sa M2 ima efekat na izvrenje skupa benchmark programa B sa aspekta: (a) vrednosti CPI-a; i (b) ukupnog vremena koje je CPU-u potrebno da izvri skup benchmark programa B?

Odgovor Kod zamene M1 sa M2, broj ciklusa (taktnih intervala) po instrukciji, koji zavisi samo od logike za procesiranje instrukcija, ostaje nepromenjen. Analogno ovome, ukupan broj instrukcija - Nu, potreban da se izvri skup programa B, ostae nepromenjen. Ali ipak, trajanje taktnog intervala kod CPU M1 je tcp1 = 1/fcp1 = 10ns, a kod CPU M2 se skrauje i iznosi tcp2 = 1/fcp2 = 8ns. Vreme potrebno CPU-u da izvri program, u optem slu~aju, iznosi:

Tu = Nu * CPI * tcp

Zamenom odgovarajuih vrednosti za tcp1 = 10ns i tcp2 = 8ns, smanjujemo Tu2 za 8/10 ili 80% od prvobitne vrednosti. To zna~i da, sa poveanjem taktne frekvencije od 25%, vreme koje je potrebno CPU-u da izvri program se skrauje za 20%.

Test pitanje 1.13

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-22

Mogua mera za ocenu performansi CPU-a M1 koji koristi paralelizam na nivou instrukcija, predstavlja prose~an broj-instrukcija-po-ciklusu, ili IPC (instructions-per-cycle) potreban da se izvri skup benchmark programa Q. Neka CPU M1, u toku procesiranja Q, izvri ukupno Nu instrukcija. Dalje, usvojimo da taktni interval kod M1 iznosi tcp, a da je Tu ukupno CPU-ovo vreme potrebno da M1 izvri skup programa Q. Odrediti izraz za IPC u funkciji Nu, Tu i tcp.

Odgovor

cp

uu f

CPI*NT =

IPC

1CPI =

cp

cp t1

f = .

Zamenom, sledi:

u

cpu

T

t*NIPC =

Test pitanje 1.14

Verovatnoa pojave odredjenog tipa instrukcija u toku izvrenja programa A i B, prikazana je na Slici 1.14.

verovatnoa pojavljivanja

tip instrukcije program A (komercijalni) program B (nau~ni)

Ld 0,24 0,29

St 0,12 0,15

FXop 0,27 0,15

FPop 0,00 0,19

Branch 0,17 0,10

Ostale 0,.20 0,12

Slika 1.44:Verovatnoa pojavljivanja instrukcija Napomena: FXop - operacija u fiksnom zarezu; FPop - operacija u pokretnom zarezu

Taktna frekvencija procesora je 100 MHz, a sve instrukcije, sa izuzetkom FPop, imaju prose~no vreme izvrenja od 10ns. Odrediti:

(a) Koliko je prose~no vreme izvrenja FPop instrukcija, ako ukupno prose~no vreme po instrukciji za program B iznosi 18,1ns?

(b) koliki je CPI za program B?

(c) Neka je prose~no vreme izvrenja instrukcija sa Slike 1.14 sledee: (1) Ld, St, i FPop instrukcije se izvravaju za po ~etiri taktna intervala; (2) FXop se izvrava za dva taktna intervala; (3) sve ostale instrukcije se izvravaju za jedan taktni interval. Za slu~aj da oba programa imaju po 2,5 miliona instrukcija, koji od programa e se izvriti br`e?

1. Ocena performansi

1-23

Odgovor a) S obzirom da je verovatnoa pojavljivanja instrukcije FPop - 0,19, tada e verovatnoa pojavljivanja svih ostalih instrukcija biti: (1 - 0,19) = 0,81. Ako je prose~no vreme FPop jednako k nanosekundi, a ukupno vreme izvrenja: 0,81*10 + 0,19*k = 18,1ns, to, reavanjem po k, dobijamo: k = 10/0,19 = 52,6ns.

b) Za fcp = 100MHz imamo tcp = 10ns. Polazei od definicije da je:

periodtaktniiinstrukcij poizvrenja vreme prosecno

CPI =

10

18,1= = 1,81 taktni interval.

c) Prose~no vreme izvrenja programa se izra~unava na osnovu relacije:

∑=

=n

1iiip tpt .

• Za program A ono iznosi:

tpA = 4 * (0,24 + 0,12 + 0,00)

+ 2 * 0,27

+ 1 * (0,17 + 0,20)

= 1.44 + 0,54 + 0,37

= 2,35 traktna intervala.

• Za program B ono iznosi:

tpB = 4 * (0,29 + 0,15 + 0,19)

+ 2 * 0,15

+ 1 * (0,10 + 0,12)

= 2,52 + 0,30 + 0,22

=3,04 taktna intervala.

Br`e e se izvriti program A.

Test pitanje 1.15

Performansna mera MIPS smatra se korisnom samo kada se koristi za procenu performansi onih procesora koji pripadaju istoj familiji i istog su proizvodja~a, kao to je to prikazano na Slici 1.15.

DEC 3000 DEC 4000 DEC 10000

Performansna mera Model 400 Model 610 Model 610 taktna frekvencija CPU-a (MHz) 133 160 200

veli~ina ke memorije (MB) 0,5 1 4 SPECint92* 63,8 81,2 104,3

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-24

SPECfp92* 111,2 143,1 200,4 Linpack 1000 x 1000 * 90 114 155 Perfect BM suite * 18,1 22,9 28,6

Cernlib * 16,9 21,0 26,0 Livermore loops * 18,7 22,9 28,1

Slika 1.55 Komparacija performansi triju ra~unara zasnovanih na DEC Alpha 64-bitnim mikroprocesorima

Napomena: Simbol "*" ukazuje da je odgovrajua stavka benchmark program

Ukazati na osnovne razloge koji predstavljaju opravdanje zato je ovakvo uporedjenje korektno.

Odgovor Analizirajui podatke koji su prikazani na Slici 1.15, zaklju~ujemo da se oni bolje interpretiraju kao relativne performansne mere a ne ako apsolutne. Na primer, pretpostavimo da `elimo da uporedjujemo performanse mainu tipa Digital 3000 i 10000. Odnos njihovih SPECint92 (ova mera se izra`ava u MIPS-ovima) iznosi: 104,3/63,8 = 1,65. Odgovarajui odnosi drugih pet benchmark programa variraju od 1,50 do 1,79 i ukazuju da je Digital 10000 pribli`no za 2/3 br`i u odnosu na Digital 3000. Uo~imo, takodje, da je odnos dveju taktnih frekvencija 200/133 = 1,50.

Opti zaklju~ak, kada se uporedjuju performanse dva ra~unara, je sledei: uporedjivati razli~ite procesore razli~itih proizvodja~a je teko iz sledeih razloga:

a) skupovi instrukcija nisu isti,

b) radna okru`enja u kojima se MIPS-ovi izra`avaju nisu identi~na (okru`enje uklju~uje ke memorije, operativne sisteme, U/I procesore i sve druge faktore koji imaju uticaj na vreme izvrenja instrukcija).

Zadatak 1.14

Propusnost magistrale (BW - bandwidth), se meri u MB/s i izra~unava se kao:

BW= W*t1

cik

gde je: tcik - vreme trajanja ciklusa magistrale; W - obim magistrale u bajtovima.

Neka je taktna frekvencija mikroprocesora 8088 5MHz-a, a memorijski ciklus, bez ubacivanja stanja ~ekanja, iznosi ~etiri taktna intervala. Odrediti propusnost magistrale pod uslovima:

(a) da se ne vri ubacivanje stanja ~ekanja; i

(b) da se ubacuje jedno stanje ~ekanja.

Uporediti dobijene rezultate sa performansama koje se odnose na mikroprocesor 8086 pod istim uslovima.

Odgovor Magistrala podataka mikroprocesora 8088 je 8-bitna a memorijski ciklus je trajanja tcik=4*200ns=800ns.

a) BW8088= sMBBns

/,* 2511800

1=

1. Ocena performansi

1-25

Magistrala podataka mikroprocesora 8086 je 16-bitna, pa je:

BW8086= sMBBns

/,* 522800

1=

b) Pod uslovom da se vri ubaciavanje jednog stanja ~ekanja, memorijski ciklus trajae 5 taktnih intervala, tj. tcik=5*200ns=1000ns, a propusnost magistrale u tom slu~aju iznosie:

BW 80881

10001 1' * /= =

nsB MB s

BW 80861

10002 2' * /= =

nsB MB s

Zadatak 1.15

Ciklus magistrale mikroprocesora 8086 iznosi ~etiri, a mikroprocesora 80286 dva taktna intervala. Ako je radna frekvencija oba mikroprocesora 10MHz, odrediti propusnost magistrale za oba procesora pri umetanju: (a) 0 stanja ~ekanja - WS (wait state); (b) 1 WS; i (c) 2 WS.

Odgovor Perioda takta sa kojim procesor radi je 1/(10MHz)=100ns

8086-10MHz 80286-10MHz

memorijski ciklus sa 0WS 400ns 200ns

memorijski ciklus sa 1WS 500ns 300ns

memorijski ciklus sa 2WS 600ns 400ns

5MB/s2*400ns

1BW8086_0WS == 4MB/s2*

500ns1

BW8086_1WS == 3.3MB/s2*600ns

1BW8086_2WS ==

10MB/s2*200ns

1BW80286_0WS == 6,6MB/s2*

300ns1

BW80286_1WS ==

5MB/s2*400ns

1BW80286_2WS ==

Zadatak 1.16

Odrediti vreme trajanja ciklusa memorije koji se odnosi na operaciju ~itanja i upisa, kod mikroprocesora 80286, pri sledeim uslovima:

(a) 12 MHz sa 1 WS; (b) 16 MHz sa 1 WS; (c) 16 MHz sa 2 WS

Napomena: memorijski ciklus procesora 80286 traje dva taktna intervala.

Odgovor (a) tcik|12 = (1+2)*80ns = 3*80ns = 240ns

(b) tcik|16 = (1+2)*62ns = 3*62ns = 186ns

(c) tcik|162WS=(2+2)*62ns=4*62ns = 248ns Napomena: U optem slu~aju va`i formula:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

1-26

tcik=(broj WS + memorijski ciklus)*tCPU

Za 80286 memorijski ciklus=2, a tCPU je taktna frekvencija procesora.

Test pitanje 1.16 [ta predstavlja pojam benchmark program?

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-1

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

ö õ

Test pitanje 2.1

Ukazati na osnovne razlike izme|u LE i BE adresiranja.

Odgovor Osam bitova (jedan bajt) nije dovoljno za memorisanje velikih brojeva, pa se zbog toga vei broj uzastopnih bajtova koristi za memorisanje velikih brojeva. Na primer, 2 bajta se koriste za prezentaciju 16-bitnih brojeva, 4 bajta za 32-bitne brojeve, 8 bajtova za 64-bitne,... Kod LE (little endian) adresiranja adresa rezultantne re~i zadaje se najni`om bajt adresom. Na primer, ako se za memorisanje 32-bitne re~i koriste lokacije 100, 101, 102, i 103 adresa broja bie 100. Lokacija 100 se koristi za ~uvanje LS bajta broja, 101 za bajt naredni po te`ini, itd. Kod BE (big endian) adresiranja, primera radi, lokacija 100 se koristi za memorisanje MS bajta broja, 101 za naredni manji po te`ini itd. Neki od procesora koriste LE adresiranje (tipi~no su to procesori iz familije Intel 8086, uklju~ujui i Intel 486) a drugi BE adresiranje (tipi~an primer je familija Motorola MC68000). Izbor adresiranja obi~no nije od zna~aja sa izuzetkom kada je potrebno preneti podatke izmedju jednog sistema i drugog, ili kada je potrebno manipulisati samo sa individualnim bajtovima broja.

Test pitanje 2.2

Dekodirati sledei ASCII kôd 10100111101001110110111000010100000101001011101011110011

Odgovor Sima Rus

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-2

Test pitanje 2.3

Koji bit treba komplementirati da bi promenili kôdove ASCII znakova “malih” slova na “velika” i obratno?

Zadatak 2.1

Napisati svoje ime i prezime pomou ASCII kodiranih znakova koristei 8-bitni kôd na sledee na~ine: (a) sa krajnje levim bitom uvek postavljen na nuli (b) sa krajnje levim bitom tako odabran da se generie parna parnost. Predvideti blanko znak izme|u imena srednjeg slova, kao i srednjeg slova i prezimena.

Test pitanje 2.4

Skicirati format instrukcije kod ~etvoro-, tro-, dvo-, jedno- i nulto- adresnih maina

Odgovor Formati instrukcija su prikazani na Slici 2.1. op-kôd adrese

operacija prvi operand

drugi operand

rezultat naredna adresa

a) ~etvoro-adresni format

operacija prvi operand

drugi operand

rezultat

b) tro-adresni format

operacija prvi operand i drugi

operand c) dvo-adresni format

operacija registar drugi operand

d) jedno-i-po-adresni format

operacija drugi operand

e) jedno-adresni format

operacija

f) nulto-adresni format

Slika 2.1 Formati instrukcija

Test pitanje 2.5

Na Slici 2.2, na grafi~ki na~in, prikazano je formiranje efektivne adrese operanda instrukcije kod hipoteti~kog procesora. Identifikovati adresne na~ine rada.

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-3

memorija

e)

RF polje

memorija

f)

RF polje

d)

opkôd

memorija

a)

b)

c)

e)

memorija

g)

RF polje memorija

h)

RF polje memorija

j)

memorija

opkôd adresa

adresa

operand

opkôd operand

operand

operand

opkôd operand

operand

operand

opkôd adresa

operand

registar

opkôd ofset

operand

opkôd adresa ofset

adresa operand

opkôd adresa baza

index operand

+

+

+

opkôd baza

+ operand+

registar

+1(-1)

i)

opkôd

Slika 2.2 : Na~ini adresiranja

Odgovor a) implicitno b) neposredno c) memorijsko direktno d) registarsko direktno e) memorijsko indirektno f) registarsko indirektno

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-4

g) registarsko preko implicitnog registra (obi~no je to PC)- tj. PC relativno h) registarsko relativno i) indeksno sa autoinkrementiranjem/dekrementiranjem j) bazno-indeksno

Test pitanje 2.6

Usvojiti da je obim instrukcije 16-bitni, a operandi se specificiraju 6-bitnim poljem. Neka postoji k dvo-operandskih i n nulto-operandskih instrukcija. Koji je maksimalan broj jedno-operandskih instrukcija koji se mo`e podr`avati od strane maine?

Odgovor Za dvo-operandske instrukcije imeemo sledei format:

4 6

opkod operand 1 operand 2

6

0 0 0 0

. . .1 1 1 0

k = 15 dvo-operandskih instrukcija

Kod jedno-operandskih instrukcija va`ie format:

4 + 6

opkod operand

6

1 1 1 1 0 0 0 0 0 0

. . . .1 1 1 1 1 1 1 1 1 0

m = 63 jedno-operandske instrukcije

Kod nulto-operandskih instrukcija imaemo format:

opkod

16

1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0. . . .

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

m = 64 nulto-operandskeinstrukcije

Za reavanje ovog problema koriena je tehnika kodiranja sa proirenjem.

Zadatak 2.2

Neka neki hipoteti~ki procesor koristi promenljivi format kodiranja instrukcija. Projektovati opkôd tako da podr`ava kodiranje: (1) sedam instrukcija sa dve 13-bitne memorijske adrese i jedno trobitno polje za specifikaciju

adrese registra; (2) sedam instrukcija sa tri trobitna polja za specifikaciju adrese registara; (3) ~etiri instrukcije kojima se ne specificiraju memorijske adrese i adrese registara. Odrediti kakvi su minimalni formati instrukcija pod (1), (2) i (3).

Odgovor Maina podr`ava tri formata: 32-bitni, 16-bitni i 8-bitni. Formati su sledei:

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-5

3 3 13 13

... ...

3 + 3 3 3 332-bitni format

16-bitni format

opkodx x x

reg. op. mem. op. 1 mem. op. 2

opkod1 1 1 x x x

reg. op. 1 reg. op. 2 reg. op. 3

opkod1 1 1 1 1 1 y y

2

8-bitni format

3 + 3

Napomena: Vrednost polja xxx ne mo`e biti 111

Test pitanje 2.7

Ra~unar ima 32-bitni format instrukcije koga ~ine sledea polja: 8-bitni opkôd; dva polja za specifikaciju adrese registra, svako obima 5 bitova, jedno 14-bitno polje za specifikaciju neposrednog operanda/registra. (a) koliki je maksimalan broj operacija koji se mo`e specificirati (b) koliko registara se mo`e adresirati (c) kolika je maksimalna vrednost neozna~enog neposrednog operanda koja se mo`e specificirati (d) u kom opsegu se mo`e specficirati vrednost ozna~enog neposrednog operanda, ako bit 13 predstavlja bit znaka.

Test pitanje 2.8

Instrukcija/podatak koju ra~unar pribavlja iz memorije je obima 24 bita. Postoji samo jedan format instrukcije, koji sadr`i opkôd deo i deo za neposredni operand. Svaka instrukcija je smetena u jednoj memorijskoj re~i. Skup instrukcija ~ini 150 razli~itih operacija. (a) sa koliko bitova se kodira opkôd deo instrukcije (b) koliko bitova se koristi za neposredni deo instrukcije (c) ako se neposredni operand koristi kao neozna~ena adresa memorije, koji je maksimalan broj re~i koji se mo`e adresirati (d) koja je najvea i najmanja algebarska vrednost kod brojeva u prezentaciji dvoji~nog komplementa koja se mo`e predstaviti neposrednim operandom?

Test pitanje 2.9

Koje osnovne grupe organizacije podataka postoje? Uka`i na njihove osobine.

Odgovor Tipove podataka je mogue organizovati u sledee ~etiri glavne grupe: skalarni, struktuirani, linearne liste i povezane liste. Skalarne podatke karakterie opseg vrednosti. Ovi podaci definisani su za fiksirani broj bitova. Naj~ee korieni skalarni tipovi podataka su prikazani na Slici 2.3.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-6

tip podatka obim u bitovima opseg format logi~ki 1 0-1 d0 BCD 4 0-9 d3d2d1d0 heksadecimalni 4 0-15 d3d2d1d0 znak 8 0-255 d7d6d5d4d3d2d1d0 celobrojna vrednost N 2N-1 znak, moduo celobrojna vrednost dvostruke preciznosti 2N 22N-1 znak, moduo realna (FP) N ±2± k znak, eksponent, mantisa realna vrednost dvostruke preciznosti 2N ±2± L znak, eksponent, mantisa

Slika 2.3 : Skalarni tipovi podataka

Strukturne tipove podataka ~ine skalarni podaci koji su ure|eni u blokove. Postoje dve osnovne varijacije: polje i zapis. Polje ~ine isti skalarni tipovi podataka, kakve su recimo celobrojne vrednosti. Polje karakterie jedinstveno ime, po~etnu lokaciju i obim. Polje mo`e biti definisano kao 1D (vektor), 2D (matrica), ili kao viedimenzionalno. Na slici 2.4 je prikazana struktura podataka tipa polje. Elementi polja u konkretnom primeru su sve uzastopne neparne celobrojne vrednosti u opsegu izme|u 1 i 20.

adresa podatak N 1

N+1 3 N+2 5 N+3 7 N+4 9 N+5 11 N+6 13 N+7 15 N+8 17 N+9 19

Slika 2.4 : Struktura tipa polje

Zapis predstavlja tabela razli~itih skalarnih tipova podataka ure|enih u razli~ita polja. Svaki zapis je definisan na osnovu svog imena, lokacije, obima i sadr`aja polja. Na Slici 2.5 je prikazana struktura jednog tipi~nog zapisa (record).

ime ime oca prezime ulica broj mesto stanovanja datum rodjenja optina republika mati~ni broj broj li~ne karte izdata od obrazovanje organizacija gde je zapoljen broj telefona kui broj telefona posao

Slika 2.5 Jedna klasi~na struktura tipa zapis

Linearne liste se formiraju pomou tabela i jednog ili veeg broja adresnih pokaziva~a. Elementi liste sekvencijalno se ubacuju i izbavljuju iz liste. Magacin i red ~ekanja su liste koje naj~ee sreemo. Magacin radi na principu LIFO bafera a karakterie se svojim imenom, obimom, lokacijom, i pokaziva~em. Red ~ekanja radi na principu FIFO bafera kome je pridru`en ulazni pokaziva~ za upis i izlazni pokaziva~ za ~itanje. Standardno je maksimalni opseg reda ~ekanja definisan po modulu N, gde je N veli~ina liste, a takav red ~ekanja se naziva kru`ni bafer. Dva reda ~ekanja je mogue kombinovati u jedinstveni red ~ekanja sa dva pristupa (dequeue), koji

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-7

dozvoljava da se operacije ~itanja i upis obavljaju sa obe strane. Na Slici 2.6 prikazane su linearne liste strukture podataka.

123456

N-3N-2N-1N

123456

N-3N-2N-1N

1 N

N 1

PTR RDPTR

WRPTR

RD

WD

WD

RD

a) magacin b) red ~ekanja c) red ~ekanja sa dva pristupa

Slika 2.6 Strukture podataka tipa linearna lista

Povezane liste se formiraju pomou nekontinualnih memorijskih lokacija koje se me|usobno povezuju pokaziva~ima za povezivanje (link pointers). Povezivanje mo`e biti u jednom smeru ili u oba. Kod kru`no povezane liste veza u zadnjem elementu pokazuje na prvi element. Povezanoj listi se dodeljuje ime, lokacija, veli~ina (obim) i pokaziva~ veze. Karakteristi~an tip strukture povezana lista je binarno stablo. Inicijalni elemenat binarnog stabla zove se koren (root). Svaka lokacija narednog elementa se naziva ~vor, a svakom elementu su pridru`ena dva pokaziva~a, levi i desni. Ovakva definicija rezultuje hijerarhijskoj strukturi podataka koja je simetri~na oko korena. Struktura tipa koren se koristi za ~uvanje informacija koja je organizovana na logi~ki na~in. Na Slici 2.7 prikazani su pomenuti tipovi strukture povezane liste. Pristup elementima strukture povezane liste je sekvencijalan, ali osnovna karakteristika ovih struktura je ta to su one lako proirljive.

A PTR B PTR C NULL

A PTR B PTR C NULL

L PTR A

D PTR

L PTR B

D PTR

L PTR C

D PTR

L PTR D

D PTR

L PTR E

D PTR

L PTR F

D PTR

L PTR G

D PTR

koren

~vor

a) povezana lista u jednom smeru

b) povezana lista u oba smera

c) binarno stablo

Slika 2.7 : Strukture podataka tipa povezana lista

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-8

Test pitanje 2.10

Instrukciju relativnog grananja ~ine dve 16-bitne re~i koje su smetene u memoriji na lokacijama 310 i 311 (decimalno). Grananje se vri na ekvivalentnoj decimalnoj adresi 225. Opkôd instrukcije nalazi se na lokaciji 310 a adresa grananja ~ija je labela X, na lokaciji 311. (a) odrediti decimalnu vrednost X-a. (b) odrediti binarnu vrednost X koristei prezentaciju dvoji~nog komplementa.

Odgovor a) kod relativnog grananja efektivna adresa, EA, se izra~unava kao : EA=adresni deo instrukcije+sadr`aj PC-a 225=X+312⇒ X=-87 Nakon pribavljanja instrukcije grananja PC pokazuje na opkôd naredne instrukcije koja se nalazi na adresi 312. b) 16-bitna binarna vrednost decimalnog broja -87 iznosi:

1111111110101001

(PC)→

memorija

.

.

.opkôd BranchXopkôd naredneinstrukcije

adrese

225

310311312

Zadatak 2.3

Neka procesor koristi sledee na~ine adresiranja Lda ADR ; direktno Lda #NADR ; neposredno Lda [ADR] ; indirektno Lda $ADR ; relativno, tj. M(ADR+PC) Lda (R1)ADR ; indeksno, tj. M(ADR+R1) Lda R1 : registarsko Lda [R1] ; registarsko indirektno a) Koliko puta e se upravlja~ka jedinica obratiti memoriji u toku izvrenja instrukcije Add R1,[OP1]. Instrukciju Add ~ine dve re~i. Prva re~ specificira opkôd i adresu registra R1 a druga indirektnu adresu. b) Koliko puta e se upravlja~ka jedinica obratiti memoriji u toku izvrenja instrukcije bezuslovnog grananja Jmp [ADR1]. Instrukciju Jmp ~ine dve re~i, prva je opkôd a druga indirektna adresa grananja.

Odgovor (a) Da bi odgovorili na ovo pitanje pretpostaviemo sledee:

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-9

• opkôd instrukcije Add se nalazi na adresi A. • sadr`aj lokacije A+1 neka je 1000. • na lokaciji M[1000] upisana je vrednost 2000 • na lokaciji M[2000] upisana je vrednost 150 • pre po~etka izvrenja instrukcije Add u registar R1 ~uva se vrednost 20.

Sadr`aj memorije i registra R1 pre i nakon izvrenja instrukcije je oblika:

.

..

.

.

.opkôd Add

1000...

2000...

150

20 170+R1

pre po~etka Add nakon zavretka AddR1

memorijaadresa

AA+1

1000

2000

Da bi se izvrila instrukcija Add, upravlja~ka jedinica se obraa ~etiri puta memoriji i to : Prvi put kada pribavlja opkôd Add, drugi put kada ~ita indirektnu adresu (sadr`aj lokacije A+1), trei put kada ~ita sadr`aj lokacije M[1000] = 2000 (adresu na kojoj se nalazi operand), i ~etvrti put kada ~ita adresu operanda instrukcije (M(2000)=150) b) Pod sli~nim uslovima, za instrukciju Jmp imaemo:

.

..

.

.

.opkôd Jmp

1000...

2000...

3500

3500PC

nakon zavretkainstrukcije JMP[1000]

memorijaadresa

AA+1

1000

2000

I u ovom slu~aju upravlja~ka jedinica se obraa memoriji ~etiri puta.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-10

Zadatak 2.4

Instrukcija koja je smetena na adresama 250 i 251 je tipa "Load u Acc" kod koje je adresno polje ADR (ili neposredni operando NOPR) jednak 500. Vrednost PC-a pre pribavljanja ove instrukcije je 250 a nakon pribavljanja 252 (ukazuje na narednu instrukciju). Sadr`aj registra R1 je 400, a u Acc se smeta rezultat koji se dobija izvrenjem instrukcije. Odrediti sadr`aj registra Acc i efektivnu adresu za sledee adresne na~ine rada ove instrukcije: a) direktni b) neposredni c) indirektni d) relativni e) indeksni f) registarski g) registarsko indirektni

.

.

.

opkôd modeADR ili NOPR=500

opkôd naredne instrukcije...

700...

800...

600...

300...

250251252

400

500

752

800

memorijaadrese

250PC

400R1

Acc

200...

900

Slika 2.8 : Izgled memorije i stanje PC-a, R1 i Acc pre izvrenja instrukcije Lda

Odgovor adresni na~in rada simboli~ko

obele`avanje registarski prenos efektivna

adresa sadr`aj Acc-a

direktni Lda ADR Acc ← M[ADR] 500 800 neposredni Lda #NOPR Acc ← NOPR 251 500 indirektni Lda [ADR] Acc ← M[M[ADR]] 800 300 relativni Lda $ADR Acc ← M[ADR+PC] 752 600 indeksni Lda (R1)ADR Acc ← M[ADR+R1] 900 200 registarski Lda R1 Acc ← R1 - 400 registarsko-indirektni Lda (R1) Acc ← M[R1] 400 700

Slika 2.9 : Simboli~ka konvencija kod adresnih na~ina rada

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-11

Test pitanje 2.11

Opkôd instrukcije Lda je smeten na lokaciji 200 a adresno polje na lokaciji 201. Adresno polje ima vrednost 300. Sadr`aj registra R1 je 750. Odrediti sadr`aj registra Acc i efektivnu adresu za sledee adresne na~ine rada ove instrukcije: (a) direktno ; (b) neposredno ; (c) relativno ; (d) registarsko indirektno ; (e) indeksno sa R1 kao indeksnim registrom. Sadr`aj memorije, pre po~etka izvrenja instrukcije Lda, prikazan je na Slici 2.10.

.

.

.

opkôd Lda mode300

opkôd naredne instrukcije...

700...

1200...

1400...

2000...

200201202

300

502

750

1050

memorijaadrese

200PC

750R1

Acc

Slika 2.10 : Izgled memorije pre izvrenja instrukcije Lda

Test pitanje 2.12

Mikrora~unar koristi 32-bitni format instrukcija. Sve instrukcije su istog obima. Registarsko polje, RF, sadr`i 32 registra. (a) Za format kod koga ne postoji address-mode polje a maina je troadresna (specificiraju se samo adrese registara iz RF polja) odrediti maksimalan broj moguih opkôdova instrukcije. (b) Za format sa dvo-adresnim registarskim poljima, jednim memorijskim poljem i maksimalno 256 opkôdova, odrediti koliki je maksimalan broj memorijsko adresnih bitova dostupan.

Odgovor (a) Format instrukcije je oblika: rs1 i rs2 su adrese prvog i drugog izvornog operanda, a rd adresa, odredinog operanda. Sa 17 bitova mogue je adresirati 217=128k razli~itih instrukcija. (b) Format instrukcije je oblika: To zna~i da je maksimalno mogue adresirati 214=16k memorijskih lokacija.

opkôd rs1 rs2 rd 17 5 5 5

opkôd rs1 rs2/rd mem. adresa

8 5 5 14

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-12

Test pitanje 2.13

Najvei broj procesora koji ima k-bitno opkôd polje ima implementirano manje od 2k razli~itih tipova instrukcija. Shodno tome neki opkôd oblici su neva`ei (invalid), to zna~i da se procesor na ove opkôdove ne odaziva definisanim akcijama (akcije specificirane skupom instrukcija). S vremena na vreme procesor mo`e da pribavi i pokua da dekodira i izvri neva`ei opkôd pre svega zbog programskih ili hardverskih greaka. Opisati korektni kurs akcija koje procesor treba da preuzme kada detektuje neva`ei opkôd. (Najvei broj mikroprocesora nema ugra|eni mehanizam za obradu neva`eih opkôdova, tako da ishodi koji slede nakon pokuaja da se izvre ovakve operacije mogu biti nepredvidljivi)

Zadatak 2.5

Sastavni deo staze podataka ra~unara je RF polje koga ~ine 32 registra. Instrukcije PUSH i POP nisu implementirane, ali ra~unar koristi sledee registarsko indirektne na~ine rada: • registarsko indirektni + inkrementiranje: Lda+ Rm,Rn ; Rm ← M[Rn] ; Rn ← Rn+1 Sto+ Rm,Rn ; M[Rn] ← Rm ; Rn ← Rn+1 • dekrementranje + registarsko indirektno: Lda- Rm,Rn ; Rn ← Rn-1 ; Rm ← M[Rn] Sto- Rm,Rn ; Rn ← Rn-1 ; M[Rn] ← Rm Pokazati kako se ove instrukcije mogu iskoristiti sa ciljem da se obezbede ekvivalentne instrukcije tipa PUSH i POP koristei se pri tome registrom R7 kao pokaziva~em magacina. Napomena: m≠n, m=0,...,31, n=0,...,31, dodatno Rm i Rn mogu da specificiraju registre PC i PSW.

Odgovor Instrukciju PUSH Rk kod najveeg broja procesora ~ine sledee aktivnosti: SP ← SP-1 M[SP] ← Rm a instrukciju POP Rm ← M[SP]

SP ← SP+1 Karakteristike ovakvog na~ina rada su sledee: (a) magacin raste nani`e (b) SP uvek pokazuje na punu lokaciju (c) kod operacije PUSH pokaziva~ SP se prvo dekrementira a nakon toga smeta podatak u magacin. (d) kod operacije POP prvo se izbavlja podatak iz magacina a nakon toga se inkrementira SP. U konkretnom slu~aju koristei raspolo`ive naredbe Lda+, Sto+, Lda- i Sto- mogue je organizovati rad magacina koristei sledee instrukcije: • operacija PUSH Sto- Rm,R7 ; R7 ← R7-1 ; M[R7] ← Rm

• operacija POP Lda+ Rm,R7 ; Rm ← M[R7] ; R7 ← R7+1 Zadatak ~itaoca je da ispita da li je mogue pomou naredbi Sto+ i Lda- organizovati magacin koji e rasti navie?

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-13

Zadatak 2.6

Registarsko polje, RF, ~ine osam registara, ozna~enih kao R0-R7. Koristei instrukcije Sto- Rm,Rn i Lda+ Rm,Rn napisati programske sekvence koje e simulirati rad instrukcija PUSHR (smeta sadr`aj registra R0 do R6 u magacin) i POPR (izbavlja sadr`aj magacina i smeta ga u registre R6 do R0).

Odgovor • aktivnost instrukcije PUSHR je ekvivalentna sledeoj sekvenci Sto- R0,R7 Sto- R1,R7 Sto- R2,R7 Sto- R3,R7 Sto- R4,R7 Sto- R5,R7 Sto- R6,R7 • aktivnost instrukcije POPR ekvivalentna je sledeoj sekvenci Lda+ R6,R7 Lda+ R5,R7 Lda+ R4,R7 Lda+ R3,R7 Lda+ R2,R7 Lda+ R1,R7 Lda+ R0,R7 Treba uo~iti da se smetanje sadr`aja registara u magacin vri po rastuem redosledu (po~ev od R0 ka R6), a izbavljanje iz magacina po obrnutom redosledu (po~ev od R6 ka R0).

Test pitanje 2.14

[esnaestobitna instrukcija smetena u memoriji na adresi 62010 koristi PC-relativni skok (Jump PC relative). Grananje se vri na lokaciju 53010. Adresno polje instrukcije je obima 10 bitova. Kojom binarnom vrednou je specificirano adresno polje koje se odnosi na relativni skok?

Odgovor PC, nakon izvrenja instrukcije na adresi 62010 ,inkrementira se na vrednost 62210, tj. ukazuje na narednu instrukciju programa. PC-relativni skok se ra~una u odnosu na vrednost 62210. Prema tome, decimalna vrednost adresnog polja instrukcije bie -9210 a odgovarajui binarni ekvivalent jednak je 11 1010 0100 2.

Zadatak 2.7

Neka su N,Z,V i C ~etiri markera uslova koji su sastavni deo PSW registra CPU-a, a uslovna grananja se obavljaju shodno Slikama 2.11-2.13.

tip grananja mnemonik Test uslov Branch if zero BZ Z=1 Branch if not zero BNZ Z=0 Branch if carry BC C=1 Branch if not carry BNC C=0 Branch if minus BN N=1 Branch if plus BNN N=0 Branch if overflow BV V=1 Branch if not overflow BNV V=0

Slika 2.11 : Instrukcije uslovnog grananja koje se odnose na slanje statusnog bita PSW registra

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-14

tip grananja mnemonik uslov statusni bitovi Branch if higher BH A>B C+Z=0 Branch if higher or equal BHE A≥B C=0 Branch if lower BL A<B C=1 Branch if lower or equal BLE A≤B C+Z=1 Branch if equal BE A=B Z=1 Branch if not equal BNE A≠B Z=0

Slika 2.12 : Instrukcije uslovnog grananja koje se odnose na neozna~ene brojeve *Napomena: Marker bit C u ovom slu~aju odnosi se na pozajmljivanje (borrow bit) tip grananja mnemonik uslov statusni bitovi Branch if greater BG A>B (N⊕V)+Z=0 Branch if greater or equal BGE A≥B N⊕V=0 Branch if less BL A<B N⊕V=1 Branch if less or equal BLE A≤B (N+V)+Z=1

Slika 2.13 : Instrukcije uslovnog grananja koje se odnose na ozna~ene brojeve

Program koji se izvrava na hipoteti~kom ra~unaru komparira dva neozna~ena (ozna~ena) broja A i B obavljajui operaciju oduzimanje A-B i uz istovremeno a`uriranje stanja statusnih bitova. Neka je A=00110101 i B=11000100. (a) odrediti razliku i interpretirati binarni rezultat (b) ako su A i B neozna~eni brojevi odrediti vrednosti statusnih bitova C (borow) i Z (zero) (c) ako su A i B ozna~eni brojevi odrediti vrednost statusnih bitova N (sign), Z (zero) i V (overflow) (d) ukazati koje instrukcije uslovnog grananja iz slike 2.12 imaju uslov=istinit (True) (e) ukazati koje instrukcije uslovnog grananja iz slike 2.13 imaju uslov=istinit (True)

Odgovor (a1) Algoritam za oduzimanje dva neozna~ena n-bitna broja A i B osnove 2 ~ine sledei koraci: (i) oduzima se umanjilac B od umanjenika A (ii) ako se na mesto MS bit pozicije ne javi "Borrow" tada je A≥B razlika je pozitivna a rezultat korektan. (iii) Ako se na mesto MS bit pozicije javi "Borrow" tada je B>A pa razliku B-A treba oduzeti od 2n a znak minus pridru`iti rezultatu. Kada se javi pozajmljivanje imamo da je rezultat jednak A-B+2n, gde 2n predstavlja vrednost pozajmljivanja na MS bit poziciji. Umesto ovog rezultata, `eljeni moduo je B-A. On se mo`e dobiti oduzimanjem prethodne formule od 2n, tj. 2n-(A-B+2n)=B-A U konkretnom primeru treba da oduzmemo sledea dva binarna broja A=00110101 i B=11000100. Borrow 1 1 0 0 0 0 0 0 A 0 0 1 1 0 1 0 1 B - 1 1 0 0 0 1 0 0 po~etni rezultat 0 1 1 1 0 0 0 1 MS Borrow je 1 a to ukazuje da je potrebno izvriti korekciju rezultata 28 1 0 0 0 0 0 0 0 0 -po~etni rezultat - 0 1 1 1 0 0 0 1 kona~ni rezultat - 1 0 0 0 1 1 1 1 (napomena : Do istog rezultata se dolazi formiranjem razlike B-A

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-15

Borrow 0 0 1 1 1 1 1 1 B 1 1 0 0 0 1 0 0 A 0 0 1 1 0 1 0 1 kona~ni rezultat - 1 0 0 0 1 1 1 1 (Ovaj kona~ni rezultat je korektan) Alternativna operacija oduzimanja dva n-bitna neozna~ena broja A i B se mo`e obaviti na sledei na~in: (j) dodaje se dvoji~ni komplement umanjilaca B umanjeniku A. Ova operacija se izvrava na sledei na~in: A+(2n-B)=A-B+2n. (jj) ako je A≥B, suma e generisati Carry na mesto MS bit pozicije, tj. 2n. Ovaj prenos se anulira (ne uzima u obzir) a ono to ostaje predstavlja rezultat A-B. (jjj) ako je A<B, suma nee generisati Carry na mestu MS bit pozicije i ona je jednaka 2n-(B-A), to predstavlja dvoji~ni komplement od B-A. Korekcija se obavlja kao i u prethodnom slu~aju (iii), uzimajui dvoji~ni komplement sume i dopisivanjem znaka minus ispred. U konkretnom slu~aju imaemo: A = 0 0 1 1 0 1 0 1 dvoji~ni komp. od B = 0 0 1 1 1 1 0 0 rezultat_ime = 0 1 1 1 0 0 0 1 Ne postoji prenos na MS bit poziciji pa je zbog toga potrebno izvriti korekciju rezultata rezultat_ime na sledei na~in u kona~ni kon_rezultat. kon_rezultat= - (dvoji~ni komplement od 01110001)= - 10001111 (a2) oduzimanje dva ozna~ena broja kada se za negativne brojeve koristi notacija dvoji~nog komplementa obavlja se shodno sledeem postupku: uzima se dvoji~ni komplement umanjilaca (uklju~ujui i bit znaka) i dodaje se umanjeniku (uklju~ujui i bit znaka). Carry koji se javlja na izlazu bita za znak ne uzima se u obzir. Sutina procedure se sastoji u tome da se operacija oduzimanja mo`e promeniti u operaciju sabiranja ako se promeni znak umanjilaca. Naime, (±A)-(+B)=( ±A)+(-B) (±A)-(-B)=( ±A)+(+B) Promena pozitivnog broja u negativni lako se izvodi uzimanjem njegovog dvoji~nog komplementa. Obrnuta operacija je tako|e jednostavna, jer komplement negativnog broja koji je ve u komplementarnoj formi generie pozitivni broj. 8-bitni ozna~eni brojevi u dvoji~nom komplementu se nalaze u opsegu od -128 do +127. Logika za detekciju Overflow oblika je kao na Slici 2.14.

n n

n

CinCn-1

Cn

V

C

BA

F

Slika 2.14 : Logika za Carry i Overflow

U konkretnom slu~aju imamo A=00110101=+53 dok je B=11000100=-60, pa e razlika biti A = 0 0 1 1 0 1 0 1 (+53) dvoji~ni komplement od B = 0 0 1 1 1 1 0 0 (+60) rezultat 0 1 1 1 0 0 0 1 (+113) Cn=0 Cn-1=0

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-16

S obzirom da nema Carry i Overflow, rezultat se nalazi u granicama dozvoljenog opsega za predstavljanje brojeva. (b) Kada su A i B neozna~eni brojevi shodno prvom algoritmu vidimo da se javilo pozajmljivanje na mesto MS bit pozicije pa je C=1, a kako je dobijena razlika razli~ita od nule to je i Z=0. (c) Kada su A i B ozna~eni brojevi imaemo da je N=0 (rezultat je pozitivan), Z=0 (rezultat je razli~it od nule), i V=0 ( nije odlo do premaaja). (d) Sledei uslovi bie istiniti: C=1 ⇒ A<B - BL ; branch if lower C+Z=1 ⇒ A≤B -BLE ; branch if lower or equal z=0 ⇒ A≠B - BNE ; branch if not equal (e) sledei uslovi bie istiniti (N⊕V)+Z=0 ⇒ A>B - BG ; branch if greater N⊕V=0 ⇒ A≥B -BGE ; brench if greater or equal

Zadatak 2.8 Napisati program za izra~unavanje sledeeg aritmeti~kog izraza: X=(A*(B+C))/(D*E-F) Usvojiti da su svi operandi inicijalno smeteni u memoriju (a) arhitektura procesora je tipa registar-u-registar a koriste se tro-adresne instrukcije. Za obraanje memoriji koriste se isklju~ivo instrukcije Load i Store. (b) arhitektura procesora je tipa memorija-u-memoriju a koriste se dvo-adresne instrukcije, tj. instrukcije su tipa Inst memop <op> memop. (c) CPU ima jedan akumulator a koristi jedno-adresne instrukcije, tj. instrukcije su tipa Inst memop <op>.

Odgovor (a) Lw R1,D Lw R2,E Lw R3,F Mul R1,R2 ;D*E→R1 Sub R1,R1,R3 ; D*E-F→R1 Lw R2,A Lw R3,B Lw R4,C Add R3,R3,R4 ;B+C→R3 Mul R2,R3 ;A*(B+C) →R2 Div R2,R1 ;(A*(B+C))/(D*E-F) →R2 Sw X,R2 ;(A*(B+C))/(D*E-F) →X (b) Mul D,E ;D*E→D Sub D,F ;D*E-F→D Add B,C ;B+C→B Mul A,B ;A*(B+C) →A Div A,B ;(A*(B+C))/((D*E)-F) →A Mov X,A ;A→X (c) Mov D ;D→Acc, Acc je akumulator Mul E ;E*Acc→Acc Sub F ;Acc-F→Acc Mov T1 ;Acc→T1 Mov C ;C→Acc Add B ;B+Acc→Acc

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-17

Mul A ;A*Acc→Acc Div T1 ;Acc/T1→Acc Mov X ;Acc→X

Zadatak 2.9

Napisati programsku sekvencu za izra~unavanje izraza: X = (A + B * C) / (D - E * F) kod nulto-, jedno-, dvo-, i tro-adresnih maina. Dostupne instrukcije kod odgovarajuih maina su:

a) nulto-adresna mainaPUSH MPOP MADDSUBMULDIV

c) dvo-adresna mainaMOV X,YADD X,YSUB X,YMUL X,YDIV X,Y

izv. i odr. izv.operand operand

b) jedno-adresna mainaLOAD MSTORE MADD MSUB MMUL MDIV M

d) tro-adresna mainaMOV X,YADD X,Y,ZSUB X,Y,ZMUL X,Y,ZDIV X,Y,Z

odr. izv.operand operand

izv. operand

Zadatak 2.10

Kreirati programske sekvence za izra~unavanje izraza c = a2-b2 kod maina koje koriste sledee formate instrukcija: a) tro-adresni - arhitektura je tipa R+M; b) dvo-adresni - arhitektura je tipa R+M; c) dvo-adresni - arhitektura je tipa Load/Store; d) jednoadresni - arhitrektura je tipa R/M. Napomena: (1) Koristiti skup naredbi hipoteti~kog procesora; (2) Promenljive a, b, c i privremena promenljiva x, ~uvaju se u memorijskim lokacijama A, B, C i X, respektivno.

Odgovor Izraz: c = a2-b2, mo`e se zapisati u obliku: c = (a+b)⋅(a-b) a) 1. Add X,A,B ; Mem (X) := Mem(A)+Mem(B)

2. Sub C,A,B ; Mem (C) := Mem(A)-Mem(B)

3. Mul C,X,C ; Mem (C) := Mem(X)*Mem(C) b) 1. Move X,A ; Mem(X) <- Mem(A)

2. Add X,B ; Mem(X) <- Mem(X)+Mem(B)

3. Move C,A ; Mem(C) <- Mem(A)

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-18

4. Sub C,B ; Mem(C) <- Mem(C)-Mem(B)

5. Mul C,X ; Mem(C) <- Mem(C) *Mem(X) c) 1. Load R1,A ; (R1) <- Mem(A)

2. Load R2,B ; (R2) <- Mem(B)

3. Move R3,R1 ; (R3) <- (R1)

4. Add R1,R2 ; (R1) <- (R1)+(R2)

5 Sub R3,R2 ; (R3) <- (R3)-(R2)

6. Mul R1,R3 ; (R1) <- (R1)*(R3)

7. Store C,R1 ; Mem(C) <- (R1) Napomena: R1, R2, R3, ... su registri RF polja. d) 1. Load R1,A ; (R1) <- Mem(A)

2. Load R2,B ;(R2) <- Mem(B)

3. Add R3,R1,R2 ; (R3) <- (R1)+(R2)

4. Sub R4,R1,R2 ; (R4) <- (R1)-(R2)

5 Mul R5,R3,R4 ; (R5) <- (R3)*(R4)

7. Store C,R5 ; Mem(C) <- (R5) Napomena: R1, R2, R3, ... su registri RF polja. e) 1. Load A ; (ACC) <- Mem(A)

2. Add B ; (ACC) <- (ACC)+Mem(B) 3. Store X ; Mem(X) <- (ACC)

4. Load A ; (ACC) <-Mem(A)

5. Sub B ; (ACC) <-(ACC)-Mem(B) 6. Mul X ; (ACC) <-(ACC) *Mem(X)

7. Store C ; Mem(C) <- (ACC)

Zadatak 2.11

Neka je dat skup od ~etiri procesora P0, P1, P2 i P3, gde je Pi i-to adresna maina. P0 je nulto-adresna stack maina, dok su P1, P2 i P3 konvencionalni ra~unari svaki sa po 16 registara opte-namene R0:R15 koji se koriste za manipulaciju sa podacima i kao adresni registri. Svi procesori, na nivou asemblerskog jezika, imaju opkôdove za instrukcije Add, Sub, Mul i Div radi implementacije operacija +, -, * i /, respektivno. a) Koristei to je mogue manji broj instrukcija (krai program), kreirati programske sekvence po kojima e svaka od maina izra~unavati vrednost sledeeg aritmeti~kog izraza: X : = (A/B + C * D)/(D * E - F + C/A) + G , koristei standardne mnemonike za ostale instrukcije kakve su na primer Load, Store, Push, Pop i dr. b) Izra~unati ukupnu veli~inu (obim) sva ~etiri programa u bitovima usvajajui da instrukcije na nivou mainskog jezika imaju sledee formate: (i) opkôdovi (ne sadr`e adresnu informaciju) su 8-bitni; (ii) memorijske adrese su 16-bitne; (iii) adrese registara su 4-bitne. (na primer, dvo-adresna instrukcija Load R7,B koja se odnosi

na mainu P2 i ozna~ava R7:=M(B), je obima 8 + 4 + 16 = 28 bitova).

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-19

Odgovor instrukcija du`ina instrukcija du`ina instrukcija du`ina instrukcija du`ina Push A 24 Load D 24 Mov R1,A 28 Div R0,A,B 44 Push B 24 Mul E 24 Div R1,B 28 Mul R1,C,D 44 Div 8 Sub F 24 Mov R2,C 28 Add R0,R0,R1 20 Push C 24 Store R1 12 Mov R2,D 28 Mul R1,D,E 44 Push D 24 Load C 24 Add R1,R2 16 Sub R1,R1,F 32 Mul 8 Div A 24 Mov R0,D 28 Div R2,C,A 44 Add 8 Add R1 12 Mul R0,E 28 Add R1,R1,R2 20 Push D 24 Store R1 12 Sub R0,F 28 Div R0,R0,R1 20 Push E 24 Load A 24 Mov R2,C 28 Add X,R0,G 44 Mul 8 Div B 24 Div R2,A 28 ukupno 312 bitova Push F 24 Store R1 12 Add R0,R2 16 d) tro-adresna Sub 8 Load C 24 Add R1,G 28 Push C 24 Mul C 24 Store X,R1 28 Push A 24 Add R1 12 ukupno 356 bitova Div 8 Div R2 12 c) dvo-adresna Add 8 Add G 24 Div 8 Store X 24 Push G 24 ukupno 336 bitova Add 8 b) jedno adresna Pop 24 ukupno 336 bitova a) nulto adresna maina

Zadatak 2.12

Neka je dat skup od ~etiri procesora P0, P1, P2 i P3 gde je Pi i-to adresna maina. P0 je nulto adresna maina a P1:P3 konvencionalni ra~unari od kojih svaki ima trideset dva 32-bitna registra opte namene R0:R31 koji se koriste za ~uvanje adresa i podataka. Svi procesori imaju instrukcije sa (asemblersko-jezi~kim) opkôdovima Add, Sub, Mul i Div za implementaciju operacija +,-,* i /, respektivno. a) Napisati programske sekvence za svaku od ~etiri maine pomou kojih se izra~unava sledei aritmeti~ki izraz:

X←(A/B+C*D)/(D*E-F+C/A)+G Za ostale instrukcije u programu koristi standardna imena kao to su Ld za "Load", St za "Store", Push, Pop, Mov i dr. b) Izra~unati obim (veli~inu) objektnog programa u bajtovima za svaki od ~etiri programa ako usvojimo da je format instrukcija na mainskom jeziku sledei: • opkôdovi (ne sadr`e adresnu informaciju) su 14-bitni • adrese registara su 5-bitne (ukupno 15 bitova) • polje adresnih modifikatora je 3-bitno (tipa su R/ M ) • memorijska adresa 32-bitna Na primer, dvo-adresna instrukcija Ld R4,B ima zna~enje R4←M(B) zauzima 14+15+3+32 ukupno 64 bita, 8 bajtova ili dve 32-bitne re~i. Napomena: Prvih 32 bita= opkôd+adr_reg+adr_mod su obavezna kod svake instrukcije

Test pitanje 2.15

Stack orijentisana maina se koristi za izra~unavanje izraza z:= w + 3 * (x - y). a) napisati program za izra~unavanje izraza; b) skicirati stanje magacina u toku izra~unavanja izraza.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-20

Odgovor

Upravlja~kajedinica

SP

Aritmeti~ko-logi~kajedinica

Magacin

TOS

TOS - vrh magacina

. . .

. . .

a)program

Push WPush 3Push XPush YSubMulAddPop Z

a) Program za odredjivanje izraza i princip rada maine

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

w w w w

w w w+3(x-y) w+3(x-y)

3 3 3

3

x xy

x-y3(x-y)

w+3(x-y)

TOSTOS

TOSTOS

TOSTOS

TOS TOS

z z z z

z z z z

Push w Push 3 Push x Push y

Sub Mul Add Pop z

b) Izgled magacina u toku izvrenja programa

Slika 2.26. Princip rada stack maine

Zadatak 2.13

Na stack maini sa Slike 2.17, izra~unava se izraz z := (4 * (a2 + b + c) - d)/(e + f * g). a) Odrediti odgovarajuu Polish notaciju po kojoj maina izra~unava vrednost izraza z.

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-21

b) Kreirati odgovarajuu programsku sekvencu po kojoj maina odredjuje vrednost izraza z.

Odgovor Kod prevodjenja datog izraza iz infix notacije u odgavarajuu Polish notaciju vri se zamena a2 sa a*a, tako da se kona~no dobija sledei sufiks tip Polish notacije z 4 aa * b + c + * d - e f g * + / := (1) Postupak prevodjenja se izvodi rekurzivno zamenom infix izraza X op Y odgovarajuim Polish izrazom X Y op, gde op ozna~ava odgovarajui operator u tekuem izrazu.

Upravlja~kajedinica

SP

Aritmeti~ko-logi~kajedinica

Magacin

. . .

. . .

TOS

Slika. 2.17 : Osnovni princip rada stack maine

Postupak prevodjenja po~injemo prepisivanjem izraza Z := A u formi Z A := . Sada je A oblika B/C = BC/ tako da po~etni izraz dobija formu Z B C/ := . U konkretnom slu~aju C = e + D = e D + = e f g * +, tako da dobijamo delimi~no transformisani Polish Z B e f g * + / :=, gde je B = 4 * (a*a + b + c) - d. Istim na~inom rezonovanja mogue je transformisati formu B u 4 a a * b + c + * d -, pa shodno tome dobiti izraz definisan jedna~inom (1) b) Odgovarajua programska sekvenca je oblika: Push 4 Push a Push a Mul Push b Add Push c Add Mul Push d Sub Push e Push f Push g Mul Add Div Pop z

Test pitanje 2.16

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-22

Za svaki binarni broj prikazan u tabeli, popuniti odgovarajuu ekvivalentnu vrednost

kd binarni broj neozna~eni

binarni 8-bitni ozna~eni

binarni neparna parnost

ASCII BCD

10011000 152 -104 98 01100001 01110011 10000101 10010110

Test pitanje 2.17

Izvriti konverziju sledeih binarno ozna~enih brojeva u odgovarajue decimalne ekvivalente a) 1101 0001 b) 0101 0000 c) 1000 1111 0101 1101

Test pitanje 2.18

36-bitni FP broj ~ine 24-bitna mantisa plus bit znaka i 10-bitni eksponent plus bit znaka. Koji se najvei i najmanji normalizovani pozitivni brojevi razli~iti od nule mogu predstaviti pomou ovog formata.

Zadatak 2.14 Napisati sekvencu instrukcija kojom se za dato x izra~unava vrednost funkcije y=x+2x+3, koristei sledee adresne formate instrukcija: a) tro - adresni b) dvo- adresni c) jedno- adresni Usvojiti da hipoteti~ki procesor ima implementirano registarsko polje (RF polje) koga ~ine 32 registra R0-R31 sa izuzetkom slu~aja pod c). Odrediti broj instrukcija i pristupa memoriji za svaki od slu~ajeva.

Zadatak 2.15

Koristei tro-adresni format instrukcija napisati programske sekvence za ~itanje i upis u: a) magacin koji raste - nani`e b) magacin koji raste - navie c) red ~ekanja tipa FIFO d) red ~ekanja tipa LIFO Napomena: Koristiti skup naredbi hipoteti~kog procesora

Zadatak 2.16

Za dvo-adresni format instrukcija napisati procedure za ~itanje i upis u red ~ekanja tipa FIFO koristei: a) direktno adresiranje b) indirektno adresiranje c) relativno adresiranje Napomena: Koristiti skup naredbi hipoteti~kog procesora

Zadatak 2.17

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-23

Napisati procedure za izbacivanje i dodavanje elemenata u povezanoj listi. Usvojiti da svaki elemenat liste koristi dve memorijske re~i, jedna sadr`i vrednost podataka a druga adresu narednog elementa u listi. Koristiti samo tro-adresni format instrukcija za slu~ajeve kada se radi pristupa elementima liste koriste sledei na~ini adresiranja: a) direktno adresiranje b) indirektno adresiranje. Napomena: Koristiti skup naredbi hipoteti~kog procesora

Zadatak 2.18

Kreirati sekvencu instrukcija koja se koristi za izra~unavanje sume ∑=

100

1iii xa , gde A=[a1, a2,..., a100] i

X=[x1, x2,...,x100] predstavljaju vektori smeteni u glavnoj memoriji. Koristiti dvo-adresni format instrukcija za slu~ajeve kada se radi pristupa elementima vektora koriste sledei na~ini adresiranja: a) direktni b) relativni c) indeksni sa autoinkrementiranjem. Napomena: Koristiti skup naredbi hipoteti~kog procesora

Test pitanje 2.19

Kako se odre|uje memorijska adresa, kod sistema zasnovanog na mikroprocesoru 80x86, instrukcije Mov [3000h],AL, ako je DS=1000h.

Odgovor

Registar AL memorijska adresa13000h

DS*10h+DISP10000h+3000h

memorijskaadresa

memorijskalokacija

Test pitanje 2.20

Neka procesor 80x86 izvrava instrukcije u realnom na~inu rada. Ako su DS=0200h, BX=0300h i DI=400h, odrediti kojim se memorijskim adresama pristupa od strane sledeih instrukcija: a) Mov AL,[1234h] b) Mov EAX,[BX] c) Mov [DI],AL

Odgovor a) DS*10h+DISP=2000h+1234h=3234h b) DS*10h+BX=2000h+300h=2300h c) DS*10h+DI=2000h+400h=2400h

Test pitanje 2.21

Mikroprocesor 80x86 radi u realnom na~inu rada. Ako su DS=1100h, LIST EQU 250h, SI=500h i BX=200h, odrediti kojim se memorijskim adresama pristupa od strane sledeih instukcija: a) Mov LIST[SI],EDX b) Mov CL,LIST[BX+SI] c) Mov CH,[BX+SI]

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-24

Odgovor a) DS*10h+SI+LIST=11000h+0500h+0250h=11750h b) DS*10h+BX+SI+LIST=11000h+0200h+0500h+0250h=11950h c) DS*10h+BX+SI=11000h+0200h+0500h=11700h

Test pitanje 2.22

Na asemblerskom jeziku mikrora~unara 80x86 kreirati strukturu podataka pod nazivom POLJA. Strukturu ~ine pet polja svako obima 16-bitova. Polja su imenovana kao F1, F2, F3, F4 i F5 i inicijalizirana su na vrednosti 1, 2, 3, 4 i 5, respektivno. Kojom se instrukcijom dobavlja sadr`aj polja F3 u registar AX.

Odgovor POLJA STRUC ; kreiranje i inicijalizacija strukture F1 DW 1 F2 DW 2 F3 DW 3 F4 DW 4 F5 DW 5 POLJA ENDS Pristup podatku koji se ~uva u polju F3 vri se sledeom instrukcijom: Mov AX,OFFSET POLJA.F3

Test pitanje 2.23

Pet razli~itih segmenata egzistiraju u sistemu. Segmenti se koriste na sledei na~in: (a) isklju~ivo programski (kôdni); (b) ~uvaju se samo konstante; (c) namenjen je kao bafer za brze U/I operacije; (d) standardni segment podataka; (e) segment magacina. Za svaki od pomenutih segmenata definisati koja su prava pristupa dozvoljena a koja zabranjena.

Odgovor tip samo ~itanje samo izvrenje samo upis ~itanje + upis ~itanje + izvrenje (a) + (b) + (c) + (d) + (e) +

Test pitanje 2.24 Nakon izvrenja sledeih sekvenci na asemblerskom jeziku mikroprocesora 80x86: a) MOV BH,38h ADD BH,2Fh b) MOV AL,9Ch MOV DH,64h ADD AL,DH c) MOV AX,34F5h ADD AX,95EBh

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-25

d) MOV BX,AAAAh ADD BX,5556h e) MOV AX,94C2h MOV BX,323Eh ADD AX,BX MOV DX,AX MOV CX,DX Odrediti u koje se stanje postavljaju markeri uslova CF, PF, AF, ZF i SF .

Odgovor a) MOV BH,38h ;BH = 38h ADD BH,2Fh ;38h + 2Fh = 67h = BH 38 0 0 1 1 1 0 0 0 + 2F + 0 0 1 0 1 1 1 1 67 0 1 1 0 0 1 1 1 CF = 0, PF = 0, AF = 1, ZF = 0, SF = 0 b) MOV AL,9Ch ; AL = 9Ch MOV DH,64h ; DH = 64h ADD AL,DH ; ⇒ AL = 0 9 C 1 0 0 1 1 1 0 0 + 6 4 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 CF = 1, PF = 1, AF = 1, ZF = 1, SF = 0 c) MOV AX,34F5h ; AX = 34F5h ADD AX,95EBh ; AX = CAE0h 3 4 F 5 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 1 + 9 5 E B 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 CA E 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 CF = 0 , PF = 0, AF = 1, ZF = 0, SF = 1 d) MOV BX,AAAAh ; BX = AAAAh ADD BX,5556h ; BX = 0000h AAAA 1 0 1 0 1 0 1 0 1 0 1 0 1 01 0 + 5 5 5 6 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 CF = 1, PF = 1, AF = 1, ZF = 1, SF = 0 e) MOV AX,94C2h ; AX = 94C2h MOV BX,323Eh ; BX = 323Eh ADD AX,BX ; AX = C700h MOV DX,AX ; DX = C700h MOV CX,DX ; CX = C700h

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-26

nakon sabiranja 9 4 C 2 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 + 3 2 3 E 0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 C 7 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 CF = 0, PF = 0, AF =1, ZF = 0, SF = 1

Test pitanje 2.25

Ukazati u kratkim crtama na ulogu prefiksa 66h kojim se odre|uje obim operanda i prefiksa 67h kojim se odre|uje obim adrese kod mikroprocesora i386.

Odgovor Opkôd sledee dve instrukcije Mov EAX,[01h] i Mov AX,[01h] u oba slu~aja je isti i jednak je 10111000. Ipak mikroprocesor i386 pravi razliku izme|u ova dva opkôda samo na osnovu DB bita u deskriptoru kôdnog segmenta i prefiksa 66h kojim se ukazuje na obim operanda. Ako je DB bit u deskriptoru kôdnog segmenta postavljen na nulu, i386 standardno koristi 16-bitni razmetaj. Tada asembler na sledei na~in vri kodiranje : ispred opkôda instrukcije Mov EAX, [01h] ubacuje se prefiks 66h koji ukazuje na obim operanda, tako da se sada javljaju sledea dva slu~aja: (a1) Mov EAX,[01h] : 66 B8 00 01h (instrukcijom se prenosi 32-bitna vrednost sa ofset adrese o1h u 32-bitni akumulator EAX) (a2) Mov AX,[01h] : B8 00 01 (instrukcijom se prenosi 16-bitna vrednost sa ofset adrese 01h u 16-bitni akumulator AX) Kada je DB bit u odgovarajuem deskriptoru segmenta podataka postavljen na 1, tada i386 standardno koristi 32-bitni razmetaj kao standard, a asembler vri kodiranje na sledei na~in: ispred opkôda instrukcije ubacuje prefiks 66h koji ukazuje na obim operanda. Konkretnije imaemo sledea dva slu~aja: (b1) Mov EAX,[01h] : B8 00 01 (instrukcijom se prenosi 32-bitna vrednost sa ofset adrese 01h u 32-bitni akumulator EAX) (b2) Mov EAX, [01h] : 66 B8 00 01 (instrukcijom se prenosi 16-bitna vrednost sa ofset adrese 01h u 16-bitni akumulator AX) Na sli~an na~in prefiks 67h odre|uje obim adrese operanda kao na primer kod instrukcije Mov AX,mem16 i Mov EAX,mem32. Objanjenje je identi~no kao i za prefiks 66h.

Test pitanje 2.26

Neka je zadata sledea 16-bitna vrednost : 1010 1100 1110 0011. Koje operacije moraju da se obave od strane procesora 80x86 kako bi se: a) osam LS bitova postavilo na 1? b) prvih osam bitova 16-bitne vrednosti postavilo na 0? c) komplementirale vrednosti srednjih osam bitova? Napomena : Uzeti da je 16-bitna vrednost neposredna; Koristiti instrukcije procesora 80x86.

Odgovor a) Mov AX,#0ACD3h ; 1010110011100011 - binarno Or AL,#0FFh b) Mov AX,#0ACD3h And AH,#00h

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-27

c) Mov AX,#0ACD3h Rol AX,4 ; rotiraj ulevo za ~etiri mesta Xor AH,#0FFh ; komplementiraj AH Ror AX,4 ; rotiraj udesno za ~etiri mesta

Test pitanje 2.27

Ukazati na koji se na~in marker ZF mikroprocesora 80x86 koristi za implementaciju programskih petlji.

Odgovor Termin programska petlja (program loop) se odnosi na skup instrukcija ~ije se izvrenje ponavlja nekoliko puta. Na primer, da bi se sabralo pet bajtova podataka, neophodno je postaviti broja~ koji ~uva trag o tome koliko puta treba ponoviti programsku petlju. Svaki put kada se izvri sabiranje broja~ se dekrementira a marker ZF se testira. Kada broja~ dostigne vrednost 0 marker ZF se postavi (ZF=1) i izvrenje petlje stopira. Programska sekvenca kojom se obavlja specificirana aktivnost oblika je MOV CX,05 ; CX je broja~ MOV BX,0200h ; BX ~uva ofset adresu podatka MOV AL,00 ; inicijalizira se AL PONOVI: ADD AL,[BX] ; AL = AL + naredni bajt INC BX ; inkrementira se broja~ podataka DEC CX ; dekrementira se broja~ petlje JNZ PONOVI ; skok na narednu iteraciju ako broja~ nije nula

Test pitanje 2.28

Ukazati, odgovarajuim primerom, kako se u programu na asemblerskom jeziku mikroprocesora 80x86 definiu segmenti magacina, podataka i kôda.

Odgovor I pored toga to je mogue napisati program na asemblerskom jeziku koji koristi samo jedan segment, uobi~ajeno je da se program sastoji od najmanje tri segmenta: segment magacina, segment podataka i kodni segment. Direktive 'SEGMENT' i "ENDS" koje ukazuju na po~etak i kraj segmenta imaju sledei format:

labela SEGMENT [opcije]

; iskazi koji pripadaju segmentu labela ENDS

Ime labela koje se nalazi ispred direktiva SEGMENT i ENDS je identi~no i jedinstveno. Polje [opcije] daje va`nu informaciju asembleru koja se odnosi na organizaciju segmenta, ali nije obavezno. Asemblersko jezi~ki iskazi grupisani su u segmente sa ciljem da se prepoznaju od strane asemblera a shodno tome i od CPU-a. Segmentom magacin definie se memorijski prostor za magacin, segmentom podataka definiu se podaci koji e program da koristi, a kôdni segment sadr`i (~ine ga) instrukcije na asemblerskom jeziku. Jedan jednostavan program na asemblerskom jeziku prikazan je na Slici 2.18.

; forma programa na asemblerskom jeziku procesora 80x86 STEKSEG SEGMENT

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-28

DB 64 DUP(?) STEKSEG ENDS ; ******************************************* DATASEG SEGMENT POD1 DB 26 h POD2 DB 29 h SUMA DB ? DATASEG ENDS ; ******************************************* KODSEG SEGMENT GL_PROG PROC FAR ; po~etna ta~ka programa ASSUME CS:KODSEG, DS:DATASEG, SS:STEKSEG MOV AX, DATASEG ;napuni adresu segmenta podataka MOV DS, AX ; dodeli vrednost DS-u MOV AL, POD1 ; dobavi prvi operand MOV BL, POD2 ; dobavi drugi operand ADD AL, BL ; saberi operande MOV SUMA, AL ; smesti rezultat u lokaciju SUMA MOV AH, 4Ch ; postavi se za INT 21h ; povratak u DOS

GL_PROG ENDP KODSEG ENDS

END GL-PROG ; izlazna ta~ka programa

Slika 2.18 : Jednostavan program na asemblerskom jeziku

Segment magacina sadr`i liniju "DB 64 DUP (?)". Ovom direktivom rezervie se memorijski prostor obima 64-bajta za potrebe magacina. U segmentu podataka definisane su tri stavke: POD1, POD2, i SUMA, svaka obima bajt. Prva direktiva u kôdnom segmentu nakon SEGMENT direktive je direktiva PROC. Procedura predstavlja grupu instrukcija koja je namenjena da obavi specifi~nu funkciju. Program sa Slike 2.18 sastoji se od jedne procedure, ali uobi~ajeno po nekoliko malih procedura, u sutini, ~ine program struktuiranijim. Svakoj proceduri se dodeljuje ime. Direktive PROC i ENDP mora da imaju istu oznaku (labelu). PROC direktiva mo`e da ima opciju NEAR i FAR. DOS zahteva da ulazna ta~ka korisni~kog programa bude procedura tipa FAR. Odmah nakon direktive PROC sledi direktiva ASSUME. Ova direktiva ukazuje asembleru koji e od segmenata definisanih direktivama SEGMENT biti korieni. Obi~no DOS dodeljuje ta~ne vrednosti segmentnim registrima CS i SS, dok se vrednost registra DS (i ES ako se koristi) mora inicijalizirati od strane programa kako je to prikazano na sl. 2.18. Zadnje dve instrukcije jezgra programa su MOV AH,4Ch INT 21h Namena ovih instrukcija je da vrate upravljanje radom CPU-a operativnom sistemu, u konkretnom slu~aju DOS-u. Zadnje tri linije ukazuju na kraj procedure, kôdnog segmenta i glavnog programa respektivno. Treba uo~iti da labela koja prethodi ENDP (GL_PROG) mora biti identi~na sa labelom koja prethodi direktivu PROC, a isti zaklju~ak va`i i za ENDS i SEGMENT (prethodi im ista labela KODSEG). Pseudo-instrukcijom END zavrava se ceo program i ukazuje DOS-u da je po~etnoj-ta~ki-programa kraj. Iz tog razloga labele za po~etnu-ta~ku-programa i END moraju biti identi~ne.

Test pitanje 2.29

Sledei program napisan na asemblerskom jeziku mikroprocesora 80x86 ima pet greaka. Ukazati koje su to. STEKSEG SEGMENT DB 100 DUP ( ?)

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-29

STE_SEG ENDS DATASEG SEGMENT POD1 DB ? DATASEG END KODSEG SEGMENT GL_PROG PROC FAR MOV AX,DATASEG MOV DS,AX MOV AL,34h ADD AL,4Fh MOV POD1,AL POCETAK ENDP KODSEG ENDS END Odgovor STEKSEG SEGMENT DB 100 DUP ( ?) *** STE_SEG ENDS DATASEG SEGMENT POD1 DB ? *** DATASEG END KODSEG SEGMENT GL_PROG PROC FAR *** ASSUME ; nema ASSUME u izvornom kôdu MOV AX,DATASEG MOV DS,AX MOV AL,34h ADD AL,4Fh MOV POD1,AL *** POCETAK ENDP KODSEG ENDS *** END Pogrean kôd je ozna~en sa <***> shodno komentaru u prethodnoj liniji

Test pitanje 2.30

Tri koraka u procesu kreiranja izvrivih programa na asemblerskom jeziku mikroprocesora 80x86 prikazana su na Slici 2.19. Popuniti podacima ostale pozicije i ukazati na karakteristike fajlova sa ekstenzijom .asm, .obj, .crf, .map i .exe.

Odgovor Korak Ulaz Program Izlaz 1. Program za editovanje tastatura mojfajl.asm 2. Asembliranje programa mojfajl.asm MASM mojfajl.obj 3. Linkovanje programa mojfajl.obj LINK mojfajl.exe

Slika 2.19 : Koraci u procesu kreiranja izvrivih programa Napomena: U rafiranoj oblasti nalaze se odgovori Vizuelne prezentacije efekata koraka na Slici 2.19 prikazani su na Slici 2.20. • "asm" fajl (izvorni fajl) kreira se od strane tekst procesora ili linijskog editora.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-30

• MASM asembler konvertuje .asm fajlove (instrukcije na asemblerskom jeziku) u ".obj" fajlove (fajl na mainskom jeziku)

• pored kreiranja objektnog programa MASM kreira i ".lst" fajl (listing fajl). ".lst" fajl je opcioni i veoma koristan programeru jer on lista sve opkd i ofset adrese kao i sve greke koje detektuje MASM.

• MASM generie i jedan opcioni fajl koji ima ekstenziju ".crf". On obezbedjuje alfabetsku listu svih simbola i labela koje se koriste u programu kao i broj linije u programu kada im se vri obraanje.

• kada u programu postoji vei broj kôdnih segmenata i segmenata za podatke postoji i potreba da se sazna gde se svaki od tih segmenata locira i koliki je obim u bajtovima svaki od njih. Ovu informaciju pru`a fajl se ekstenzijom .map. Fajl sa ekstenzijom .map je opcioni i daje ime svakog segmenta, gde svaki segment po~inje, gde zavrava i koliki je njegov obim u bajtovima.

• fajl sa ekstenzijom .exe je izvrivi Napomena: Postoje dve asemblerske direktive koje se koriste da u~ine fajl sa ekstenzijom .lst ~itljivijim, a to su PAGE i TITLE. Format PAGE direktive je PAGE [linije],[kolone] ova direktiva ukazuje tampa~u kako treba da se kuca tekst. Na primer PAGE 70.92 zna~i da e se na jednoj stranici kucati 72 linije, a u svakoj liniji po 92 znakova. Tekst nakon pseudo instrukcije TITLE unosi programer i on na jedan bli`i na~in treba da opie (asocira) koja je namena programa i za ta se koristi.

ASEMBLER(program)

EDITOR

(program)

LINKER(program)

mojfajl.asm

mojfajl.crtdrugi.objfajlovi

mojfajl.map

mojfajl.exe

mojfajl.lst

Slika 2.20 Koraci u generisanju izvrivih programa

Zadatak 2.19

Stepen inteligencije pet testiranih studenata je sledei 82, 76, 73, 94 i 70. Napisati programsku sekvencu za odredjivanje najvieg stepena inteligencije.

Odgovor

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-31

TITLE TESTIRANJE PAGE 80,100 SMAG SEGMENT DB 80 DUP (?) SMAG ENDS ;----------------------------------------------------------------------------------- SPOD SEGMENT KOEFIC DB 82,76,73,94,70 NAJVISI DB ? SPOD ENDS ;----------------------------------------------------------------------------------- SPROG SEGMENT PROG_1 PROC FAR

ASSUME CS:SPROG,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DS,AX MOV CX,5 ; postavi broja~ MOV BX,OFFSET KOEFIC ;BX ukazuje na KOEFIC SUB AL,AL ; AL=0 i ~uva NAJVISI koeficijent PONOVI: CMP AL,[BX] ; uporedi naredni sa najviim JA NAREDNI ; skok ako je AL najvii MOV AL,BX ; AL ~uva novi najvii NAREDNI: INC BX ; uka`i na naredni koeficijent

LOOP PONOVI ; produ`i pretra`ivanje MOV NAJVISI,AL ; sa~uvaj najvii koeficijent MOV AH,4Ch ; povratak na DOS INT 21h PROG_1 ENDI SPROG ENDS END PROG_1

Zadatak 2.20

ASCII kôdovi za mala i velika slova prikazani su na Slici 2.21.

slovo Heksa decimalna vrednost slovo Heksa decimalna vrednost A 41 a 61 B 42 b 62 C 43 c 63 D 44 d 64 . . . . . . . . . . . . . . . . Y 59 y 79 Z 5A z 7A

Slika 2.21: ASCII kodovi za mala i velika slova

Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za konverziju tekstva 'moJE IME je mILe' u niz velikih slova.

Odgovor TITLE KONVERZIJA U VELIKA SLOVA

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-32

PAGE 80,100 SMAG SEGMENT DB 128 DUP (?) SMAG ENDS ;----------------------------------------------------------------------------------- SPOD SEGMENT POD1 DB 'moJE IME je mILe' POD2 DB 16 DUP(?) SPOD ENDS ;----------------------------------------------------------------------------------- SPROG SEGMENT KON PROC FAR ASSUME CS:SPROG,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DS,AX MOV SI,OFFSET POD1 ; SI pokazuje na po~etni niz MOV DI,OFFSET POD2 ; DI pokazuje na konvertovani niz MOV CX,16 ; CX je broja~ simbola u nizu

PONOVI: MOV AL,[SI] ; dobavi naredni znak CMP AL,61h ; da li je manji od 'a'

JB IZNAD ; nema potrebe za konverzijom CMP AL,7Ah ; da li je vee od 'z' JA IZNAD ; nema potrebe za konverzijom AND AL,11011111b ; maskiraj DS bit poziciju za konverziju ; znaka u veliko slovo IZNAD MOV [DI],AL ; smesti veliko slovo INC SI ; poveaj pokaziva~ po~etnog niza INC DI ; poveaj pokaziva~ velikih slova LOOP PONOVI ; produ`i ako je CX=0 MOV AH,4Ch INT 21h ; povratak na DOS KON ENDP SPROG ENDS END KON

Zadatak 2.21

Niz od 10 ASCII znakova smeten je u segmentu podataka po~ev od ofset adrese 0010h na sledei na~in: ASC DB "8473251064" ORG 0010h NEPAK DB 10 DUP(?) Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za konverziju ASCII znakova u nepakovane BCD brojeve.

Odgovor Odgovarajui ASCII formati u heksadecimalnom i binarnom kôdu kao i BCD nepakovanom kôdu su oblika

dirka ASCII (hex) binarni BCD nepakovani 0 30 0011 0000 0000 0000

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-33

1 31 0011 0001 0000 0001 2 32 0011 0010 0000 0010 . . . . . . . . . . . . 8 38 0011 1000 0000 1000 9 39 0011 1001 0000 1001

Konverzija ASCII kôda u nepakovani BCD kôd vri se logi~kom operacijom And ASCII broja sa "0000 1111" (0Fh). Programska sekvenca za konverziju je oblika: MOV CX,5 MOV BX,OFFSET ASC ; BX pokazuje na ASCII podatke MOV DI,OFFSET NEPAK ; DI pokazuje na "nepakovane" BCD PONOVI: MOV AX,[BX] ; kopiraj dva naredna ASCII u AX AND AX,0F0Fh ; poniti ASCII MS 3 MOV [DI],AX ; smesti nepakovani BCD ADD DI,2 ; uka`i na naredni BCD ADD BX,2 ; poka`i na naredni ASCII LOOP PONOVI Karakteristi~no za ovu sekvencu je sledee: I pored toga to je podatak definisan direktivom DB, njemu se pristupa kao 16-bitnom. Alternativno reenje se zasniva na korienju PTR direktive MOV CX,5 MOV BX,OFFSET ASC MOV DI,OFFSET NEPAK PONOVI: MOV AX,WORD PTR[BX] ; kopiraj dva bajta u AX AND AX,0F0Fh MOV WORD PTR[DI],AX ; smesti nepakovani BCD ADD DI,2 ADD BX,2 LOOP PONOVI Interesantno je takodje i reenje koje umesto dva pokaziva~a koristi jedan pokaziva~ kao to je sledee MOV CX,10 ; puni se broja~ SUB BX,BX ; BX = 0 PONOVI: MOV AL,ASC[BX] ; AL = M[BX + ASC] AND AL,0Fh ; maskira se MS nibl MOV NEPAK[BX],AL ; AL M[BX + NEPAK] INC BX ; poveaj pokaziva~ LOOP PONOVI Operandi kojima se pristupa su obima bajt. Za slu~aj da se pristupa operandima tipa re~ treba izvriti sledeu modifikaciju MOV CX,5 SUB BX,BX PONOVI: MOV AX,WORD PTR ASC[BX] AND AX,0F0Fh MOV WORD PTR NEPAK[BX],AX ADD BX,2 LOOP PONOVI

Zadatak 2.22

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-34

Preko tastature se prihvataju dva ASCII kodirana broja 38h i 32h. Kreirati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 kojom se vri konvertovanje ASCII kodiranih brojeva u pakovani BCD format.

Odgovor Konverzija ASCII u pakovani BCD, vri se prvo konverzijom u nepakovani BCD a zatim njihovom kombinacijom se dobija pakovani BCD. Na primer kada se pritisnu dirke 8 i 2 tastatura generie kodove 38h i 32h, respektivno. Cilj je da se dobije 82h ili 10000010h koji se zove pakovani BCD broj. Programska sekvenca pomou koje se mo`e obaviti specificirana aktivnost ima oblik: ORG 0010h ; ofset adresa podataka VRED_ASC DB '82' ; na ofset adresi 0010h je 38,. a VRED_PBCD DB ? ; na ofset adresi 0011h je 32 MOV AX,WORD PTR VRED_ASC ; AH = 32, AL = 38 AND AX,0F0Fh ; maskiranje XCHG AH,AL ; AH↔AL MOV CL,4 ; CL = 4 radi pomeranja SHL AH,CL ; pomeri ulevo AH da bi dobio AH=80h OR AL,AH ; OR da bi se dobio pakovani BCD MOV VRED_PBCD,AL ; smesti rezultat Napomena: Obratiti pa`nju na LE notaciju kod pribavljanja podataka iz memorije u registar AX.

Zadatak 2.23

Kreirati programsku sekvencu, na asemblerskom jeziku mikroprocesora 80x86, koja je namenjena za konverziju pakovanog BCD broja 29 h u odgovarajui ASCII.

Odgovor Kod konverzije pakovanog BCD broja u odgovarajui ASCII, mora da se izvri prvo konverzija u nepakovani BCD a zatim u ASCII, shodno sledeem postupku: pakovani BCD napakovani BCD ASCII 29 h 02 h & 09 32 h & 39 0010 1001 0000 0010 & 0000 1001 0011 0010 & 0011 1001 Programska sekvenca bie oblika VRED_PBCD DB 29h VRED_ASC DW ? -------------- MOV AL,VRED_PBCD MOV AH,AL ; AL = AH, AL = 29 h, AH= 29h AND AX,0F00h ; maskiraj 9 od AH i 2 od AL MOV CL,4 ; pomeri udesno AH za nepakovani BCD SHL AH,CL OR AX,3030h ; kombinuj 30 da se dobije ASCII

XCHG AH,AL ; izvri konverziju radi LE formata MOV VRED_ASC,AX ; smesti ASCII

Zadatak 2.24

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-35

Napisati program, na asemblerskom jeziku mikroprocesora 80x86, kojim se vri sabiranje sledea dva broja BROJ1=52763198CD87h i BROJ2=3FC7DAB47BE8h. BROJ1, BROJ2 i SUMA su smeteni u segmentu podataka po~ev od ofset adresa 0010h, 0020h i 0030h, respektivno.

Odgovor TITLE PROGSAB SABIRANJE PAGE 80,100 SMAG SEGMENT DB 64 DUP (?) SMAG ENDS ;--------------------------------------------------------------------------------------------------------------- SPOD SEGMENT BROJ1 DQ 52763198CD87h ORG 0010h BROJ2 DQ 3FC7DAB47BE8h ORG 0020h SUMA DQ ? ORG 0030h SPOD ENDS ; ------------------------------------------------------------------------------------------------------------ SKOD SEGMENT SAB PROC FAR ASSUME CS:SKOD,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DX,AX CLC ; obrii prenos pre prvog sabiranja MOV SI,OFFSET BROJ1 ; SI pokazuje na BROJ1 MOV DI,OFFSET BROJ2 ; DI pokazuje na BROJ2 MOV BX,OFFSET SUMA ; BX pokazuje na SUMA MOV CX,4 ; CX je broja~ PONOVI: MOV AX,[SI] ; prvi operand u AX ADC AX,[DI] ; saberi drugi operand sa AX MOV [BX],AX ; smesti sumu ADD SI,2 ; inkrementiranje pokaziva~a ADD DI,2 ADD BX,2 LOOP PONOVI ; ako nije kraj produ`i MOV AH,4Ch INT 21h ; povratak na DOS SAB ENDP SKOD ENDS ENDS SAB

Test pitanje 2.31

Izvriti analizu sledee programske sekvence

POD_A DD 62562FAh POD_B DD 412963Bh RAZLIKA DD ? ------------------------- MOV AX,WORD PTR POD_A ; AX = 62FA SUB AX,WORD PTR POD_B ; oduzmi 963B od AX

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-36

MOV WORD PTR RAZLIKA,AX ; sa~uvaj rezultat MOV AX,WORD PTR POD_A+2 ; AX = 0625 SBB AX,WORD PTR POD_B+2 ; oduzmi 0412 sa pozajmljivanjem MOV WORD PTR RAZLIKA+2,AX ; smesti rezultat i odrediti kona~nu vrednost koja je smetena na lokaciji RAZLIKA.

Odgovor Nakon SUB, AX=62FA-963B=CCBF i CF=1. Kako je CF=1 kada se obavi SBB imaemo AX=625-412-1=212. Zbog toga vrednost smetena u RAZLIKA=0212CCBFh.

Test pitanje 2.32

Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 kojom se odredjuje broj jedinica u bajtu.

Odgovor ; u segmentu podataka POD1 DB 63h ; proizvoljno uzet broj BROJ DB ? ; u kdnom segmentu SUB BL,BL ; BL = 0 ~uva broj jedinica MOV DL,8 ; broja~ rotacija MOV AL,POD1 PONOVI: ROL AL,1 ; rotiraj jednu bit poziciju JNC NAREDNI ; proveri za 1 INC BL ; ako je CF = 1 dodaj 1 broja~u NAREDNI: DEC DL ; dekrementiraj broj rotiranja JNZ PONOVI ; ako nije zavren ponovi MOV BROJ,BL ; smesti broj jedinica u broj

Test pitanje 2.33

Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 kojom se broji broj jedinica u re~i. Broj jedinica zapamtiti u BCD formatu.

Odgovor ; u segmentu podataka POD2 DW B483h ; proizvoljno uzet broj BROJ2 DB ? ; u kodnom segmentu SUB AL,AL ; AL = 0 ~uva broj jedinica u BCD MOV DL,16 ; 16 rotiranja MOV BX,POD2 ; kopiraj operand u BX PONOVI: ROL BX,1 ; rotiraj jednu bit poziciju JNC NAREDNI ; proveri za 1, ako je CF = 0 ska~i ADD AL,1 ; ako je CF = 1 dodaj 1 broja~u DAA ; podesi broja~ za BCD NAREDNI: DEC DL ; prodji kroz sekvencu 16 puta JNZ PONOVI ; ako nije kraj ponovi MOV BROJ2,AL ; smesti broj jedinica u BROJ 2

Test pitanje 2.34

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-37

Da li sledee dve programske sekvence na asemblerskom jeziku mikroprocesora 80x86 imaju isti efekat? ; programska sekvenca 1 MOV BH,72h ROL BH,1 ROL BH,1 ROL BH,1 ROL BH,2 ; programska sekvenca 2 MOV BH,72h MOV CL,4 ROL BH,CL

Test pitanje 2.35

Da li su sledee dve programske sekvence na asemblerskom jeziku mikroprocesora 80x86 imaju isti efekat? ; programska sekvenca 1 CLC MOV AL,26h RCR AL,1 RCR AL,1 RCR AL,1 ; programska sekvenca 2 CLC MOV AL,26h MOV CL,3 RCR AL,CL

Test pitanje 2.36

Zato instrukcija "ROR BX,4" generie greku na asemblerskom jeziku mikroprocesora 80x86? Kako treba promeniti kd da bi se ona korektno izvrila tj. da bi se ostvario njen efekat?

Odgovor Mo`e samo ROR BX,1. Viestruko pomeranje se mo`e implementirati ako se instrukcija ponovi ~etiri puta ili ako se inicijalizuje registar CL na broj pomeranja, a zatim izvri instrukcija ROR BX,CL.

Test pitanje 2.37

Kakva e biti vrednost BX i CF nakon izvrenja sledeih sekvenci na asemblerskom jeziku mikroprocesora 80x86? a) MOV BX,672Ah MOV CL,3 ROL BX,CL b) STC MOV BX,37F1h MOV CL,5 RCR BX,CL c) CLC

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-38

MOV BX,191Ch MOV CL,5 RCL BX,CL d) SUB BX,BX STC RCR BX,1 STC RCR BX,1 e) MOV BX,0FFFFh MOV CL,5 CLC RCL BX,CL

Test pitanje 2.38

Objasniti razlike izmedju pojmova potpuna definicija segmenata (full segment definition) i pojednostavljena definicija segmenata (simplified segment definition) kada se govori o programiranju na asemblerskom jeziku mikroprocesora 80x86.

Odgovor Procesor 80x86 uobi~ajeno (u najveem broju slu~ajeva) koristi ~etiri segmentna registra: CS (kôdni segment), DS (segment podataka), SS (segment magacina) i ES (ekstra segment). Svaka linija u programu na asemblerskom jeziku mora da pripada (odgovara) jednom od ovih segmenata. Zadnjih godina novi metod segmenata je uveden (podr`avan) od strane Microsoft-ov MASM 5.0 i navie, Borland-ova TASM verzija 1 pa navie, i od strane drugih kompatibilnih asemblera. Ovaj metod se zove format sa pojednostavljenom definicijom, a njegova stutina se sastoji u tome to koristi tri jednostavne direktive: ".CODE", ".DATA" i ".STACK", koje odgovaraju registrima CS, DS i SS, respektivno. Koristei ove direktive korienje direktiva SEGMENT i ENDS ~ini nepotrebnim. U sutini pojednostavljena definicija segmenata je laka za razumevanje i korienje, posebno za po~etnike. Pre nego to se koristi pojednostavljena definicija segmenata neophodno je izabrati memorijski model za program koji se kreira. Uglavnom se koriste sledei memorijski modeli: • SMALL model - jedan od naj~ee korienih modela, koji koristi 64kB memorija za program i

64kB za podatke • MEDIUIM model - podaci moraju se smestiti u 64kB, a program mo`e biti vei od 64kB. • COMPACT model - suprotan je modelu MEDIUM, tj. program se mora smestiti u 64kB, a podaci

u prostor vei od 64kB. • LARGE model - kombinovanjem prethodna dva modela dobija se LARGE model, tj. i kôd i

podatke mogu biti vei od 64kB. Jedinstvena struktura podataka kao to je polje (vektor, matrica,...) ne sme da premai 64kB.

• HUGE model - program i podaci mogu da premae 64kB a takodje i jedinstvena struktura podataka mo`e biti vea od 64kB.

Postoji takodje, jo jedan model nazvan TINY. Ovaj model se koristi sa COM fajlovima kod kojih ukupna memorija program plus podaci ne sme da premai 64kB. TINY model se ne mo`e koristiti u sklopu pojednostavljene definicije segmenata. Na Slici. 2.22 ilustracije radi za jedan isti program prikazana je uporedna prezentacija potpune i pojednostavljene definicije segmenata. ; potpuna definicija segmenata ; pojednostavljena definicija segmenata ; --------- segment magacina ---- .MODEL SMALL SMAG SEGMENT .STACK 64

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-39

DB 64 DUP (?) ; SMAG ENDS ; ; --------- segment podataka ----- ; ---------------------------------------------------- SPOD SEGMENT .DATA POD_1 DW 1234h POD_1 DW 1234h POD_2 DW 5678h POD_2 DW 5678h REZ DW ? REZ DW ? SPOD ENDS ; ; -------- programski segment ____ ; --------------------------------------------------- SPROG SEGMENT .CODE SABERI PROC FAR SABERI: MOV AX,@DATA ASSUME CS:SPROG MOV DS,AX MOV AX,SPOD ... MOV DS,AX ... ... ... SABERI ENDP ... SPROG ENDS ... END SABERI END SABERI

Slika 2.22 Potpuna u odnosu na pojednostvljenu definicija segmenata

Jedan jednostavan program koji koristi pojednostavljenu definiciju segmenata prikazan je na Slici. 2.23. TITLE PROG 1 pojednostavljena definicija segmenta PAGE 60,132 .MODEL SMALL .STACK 32 .DATA

POD_1 DW 1234h,4892h,3D87h,28E0h ORG 10h

SUMA DW ? .CODE POCETAK: MOV AX,@DATA MOV DS,AX MOV CX,4 ; CX = 4, broja~ MOV DI,OFFSET POD_1 ; postavi pokaziva~ SUB BX,BX ; inicijaliziraj sumu BX SABERI: ADD BX,[DI] ; dodaj novu re~ na BX INC DI ; inkrementiraj pokaziva~ INC DI DEC CX ; dekrementiraj broja~ JNZ SABERI ; granaj se ako je CX = 0 MOV SI,OFFSET SUMA ; postavi pokaziva~ MOV [SI],BX ; smesti sumu MOV AH,4Ch INT 21h ; povratak na DOS END POCETAK

Slika 2.23 : Program za sabiranje ~etiri re~i koji koristi pojednostavljenu definiciju segmenata

Kod programa sa Slike 2.23, redosled segmenata nije od va`nosti, ali to zna~i da su segmenti kodirani u sledeem redosledu .STACK .DATA

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-40

.CODE Napomenimo da se program mo`e kodirati i u obrnutom redosledu .CODE .DATA .STACK kako je to prikazano na Slici 2.24. TITLE PROG 2 pojednostavljena definicija segmenta PAGE 60,132 .MODEL SMALL .CODE GL_P MOV AX,@DATA MOV DS,AX MOV SI,OFFSET POD_1 ; SI pokaziva~ izvornih podataka MOV DI,OFFSET KOPIRAJ ; DI pokaziva~ podataka koji se kopiraju MOV CX,06h ; CX broja~ petlje PETLJA: MOV AL,[SI] ; kopiraj naredni bajt u AL MOV [DI],AL ; kopiraj AL INC SI ; inkrementiraj pokaziva~ INC DI DEC CX ; dekrementiraj broja~ JNZ PETLJA ; granaj se ako je CX = 0 MOV AH,4Ch INT 21h ; povratak na DOS .DATA ORG 10h POD_1 DB 41h,23h,18h,12h,39h,62h ORG 28h KOPIRAJ DB 6 DUP (?) .STACK 32 END GL_P Slika 2. 24 : Program za kopiranje est bajtova u memoriji kojii koristi pojednostavljenu definiciju

segmenata u obrnutom redosledu

Test pitanje 2.39

Ukazati na osnovne razlike izmedju fajlova sa ekstenzijom .COM i ekstenzijom .EXE

Odgovor EXE fajlovi COM fajlovi

neograni~enog obima maksimalni obim 64kB segment magacina je definisan segment magacina nije definisan segment podataka je definisan segment podataka nije definisan po~etak kdnog i segmenta podataka se mo`e definisati na bilo koju adresu

po~etak kdnog segmenta i segmenta podataka je na ofset adresi 0100h

veliki fajlovi (zauzimaju mnogo memorije) mali fajlovi (zauzimaju malo memorije) svakom fajlu prethodi zaglavlje od 512 bajtova. Zaglavlje sadr`i informacije o obimu, lokacija adresa u memoriji, adresa magacina i dr.

ne sadr`i zaglavlje

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-41

Zadatak 2.25

Dva skupa ASCII kodiranih podataka se prihvataju sa tastature. Napisati program na asemblerskom jeziku mikroprocesora 80x86 za: a) konverziju podataka iz ASCII u pakovani BCD b) sabiranje viebajtnih pakovanih BCD i pamenje rezultata c) konverzija pakovanog BCD rezultata u ASCII

Odgovor TITLE PROG_KON ASCII u BCD konverzija i sabiranje PAGE 60, 132 SMAG SEGMENT DB 64 DUP (?) SMAG ENDS ;------------------------------------------------------------------------------------------------------------ PSEG SEGMENT POD1_ASC DB '2731947290' ORG 0010h POD2_ASC DB '3276401832' ORG 0020h POD3_BCD DB 5 DUP (?) ODG 0028h POD4_BCD DB 5 DUP (?) ORG 0030h POD5_SAB DB 5 DUP (?) ORG 0040h POD6_ASC DB 10 DUP (?) PSEG ENDS ; ----------------------------------------------------------------------------------------------------------- KSEG SEGMENT PROG1 PROC FAR ASSUME CS:KSEG,DS:PSEG,SS:SMAG MOV AX,PSEG MOV DS,AX MOV BX,OFFSET POD1_ASC ; BX pokazuje na prve ASCII MOV DI,OFFSET POD3_BCD ; DI pokazuje na prve BCD MOV CX,10 ; CX je broja~ CALL KONV_BCD ; konverzija ASCII u BCD MOV BX,OFFSET POD2_ASC ; BX pokazuje na druge ASCII MOV DI,OFFSET POD4_BCD ; DI pokazuje na druge BCD MOV CX,10 ; CX je broja~ CALL KONV_BCD ; konverzija ASCII u BCD CALL BCD_SAB ; sabrati BCD operande MOV SI,OFFSET POD5_SAB ; SI pokazuje na BCD rezultat MOV DI,OFFSET POD6_ASC ; DI pokazuje na ASCII rezultat MOV CX,05 ; CX je broja~ CALL KONV_ASC ; konverzija rezultata u ASCII MOV AH,4Ch INT 21h ; povratak na DOS PROG1 ENDP ; ------------------------------------------------------------------------------------------------------------- ; Potprogram za konverziju ASCII u pakovani BCD KONV_BCD PROC PONOVI: MOV AX,[BX] ; BX pokaziva~ ASCII podataka

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-42

XCHG AH,AL AND AX,0F0Fh ; maskiraj ASCII 30h PUSH CX ; sa~uvaj broja~ MOV CL,4 ; pomeri AH ~etiri bita ulevo SHL AH,CL ; pripremi za pakovani BCD OR AL,AH ; kreiraj pakovani BCD MOV [DI],AL ; DI pokaziva~ na BCD ADD BX,2 ; uka`i na naredna dva ASCII bajta INC DI ; uka`i na naredni BCD POP CX ; obnovi sadr`aj broja~a LOOP PONOVI RETG KONV_BCD ENDP ; ------------------------------------------------------------------------------------------------------ ; Potprogram za sabiranje dva viebajtna pakovana BCD operanda BCD_SAB PROC MOV BX,OFFSET POD3_BCD ; BX pokazuje na prvi operand MOV DI,OFFSET POD4_BCD ; DI pokazuje na drugi operand MOV SI,OFFSET POD5_SUM ; SI pokazuje na sumu MOV CX,05 CLC NOVI: MOV AL,[BX]+4 ; nabavi naredni bajt za operand 1 ADC AL,[DI]+4 ; nabavi naredni bajt za operand 2 DAA MOV [SI]+4,AL ; smesti sumu DEC DI ; uka`i na naredne bajtove DEC SI LOOP NOVI RET BCD_SAB ENDP ; ------------------------------------------------------------------------------------------------------------- ; Potprogram za konverziju pakovanog BCD u ASCII KONV_ASC PROC IZNOVA: MOV AL,[SI] ; SI pokaziva~ na BCD MOV AH,AL ; dupliciranje za nepakovani AND AX,0F00Fh ; raspakuj PUSH CX ; sa~uvaj broja~ MOV CL,04 ; pomeri udesno 4 bita za SHR AH,CL ; gornji nibl OR AX,3030h ; kreiranje ASCII XCHG AH,AL ; promeni mesta MOV [DI],AX ; sa~uvaj ASCII podatak INC SI ; poka`i na naredni BCD ADD DI,2 ; poka`i na naredni ASCII POP CX ; obnovi broja~ petlje LOOP IZNOVA RET KONV_ASC ENDP KSEG ENDS END PROG1

Zadatak 2.26

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-43

Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za mno`enje dve ASCII cifre '7' i '5', a dvocifreni rezultat pretstaviti u ASCII kdu.

Odgovor MOV AL,'7' ; AL = 37h AND AL,0Fh ; AL = 07 nepakovani BCD MOV DL,'6' ; DL = 36h AND DL,06h ; DL = 06 nepakovani BCD MUL DL ; AX = AL*DL = 07*06 = 002A h = 42 AAM ; AX = 0402 (7*6 = 42 nepakovani BCD) OR AX,3030h ; AX = 3432 rezultat u ASCII kodu

Zadatak 2.27

a) Napisati programsku sekvancu na asemblerskom jeziku mikroprocesora 80x86 koja se koristi za sabiranje dve ASCII cifre '5' i '2', a rezultat predstaviti u ASCII kôdu. b) Ponoviti aktivnost pod a) za slu~aj da su ASCII cifre '7' i '5'.

Odgovor a) MOV AL,'5' ; AL = 35 ADD AL,'2' ; AL = 35 + 32 = 67 AAA ; promeni 67 u 07 OR AL,30h ; OR AL sa 30 h da bi dobio ASCII b) SUB AH,AH ; AH = 0 MOV AL,'7' ; AL = 37 MOV BL,'5' ; BL = 35 ADD AL,BL ; AL = 37 + 35 = 6C AAA ; AL = 02 AH = CF = 1 OR AX,3030h ; AX = 3132

Test pitanje 2.40

(a) Koja od sledeih instrukcija na asemblerskom jeziku mikroprocesora 80x86 puni registar BX podatkom 1000h? (i) Mov [1000h],BX (ii) Mov BX,1000h (iii) Mov BX,[1000h] (iv) Add BX,1000h (b) Koja od navedenih instrukcija puni registar BX sadr`ajem memorijske lokacije 10000h?

Test pitanje 2.41

Odrediti sadr`aj registra AL nakon izvrenja sledee sekvence instrukcija na asemblerskom jeziku mikroprocesora 80x86: Mov BL,8Ch Mov AL,7Eh And AL,BL

Test pitanje 2.42

Sadr`aj memorije prikazan je na Slici. 2.25. Odrediti sadr`aje registara AX, BX i SP nakon izvrenja sledee sekvence instrukcija na asemblerskom jeziku mikroprocesora 80x86 MOV SP,0700h POP AX

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-44

POP BX

31

F0

D2

2C

89

37

24

0704

0703

0702

0701

0700

06FF

06FE

adrese memorija

Slika 2.25 : Sadr`aj memorije pre izvrenja sekvence

Test pitanje 2.43

Odrediti vrednost operanda nakon izvrenja svake od sledeih instrukcija na asemblerskom jeziku mikroprocesora 80x86: a) Inc BX b) Inc BYTE PTR[BX] c) Inc WORD PTR[BX] d) Inc DWORD PTR[BX] Za svaku od instrukcija neka je BX = 0600h, a sadr`aj memorije je prikazan na Slici 2.26.

POLJE PODATAKA

0608

0607

0606

0605

0604

0603

0602

47

BB

CA

59

13

F8

DB

27

F8

8

7

6

5

4

3

2

BROJ ELEMENTA

adrese memorija

Slika 2.26 : Sadr`aj memorije pre izvrenja instrukcije

Napomena: Da bi pristupio memorijskom operandu 80x86 koristi LE format.

Test pitanje 2.44

Neka mikroprocesor 386/486 izvrava naredbe In (ili Out) prikazane na Slici 2.27. Za svaku naredbu odrediti logi~ko stanje signala BE0, BE1, BE2 i BE3, kom se od portova pristupa i koje su linije za podatke aktivni.

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-45

BE3 BE2 BE1 BE0 Instrukcija Pristupa se portovima

Magistrala podataka

1 1 1 0 In AL,0 0 D0 - D7 1 1 0 1 In AL,1 1 D8 - D15 1 0 1 1 In AL,2 2 D16 - D23 0 1 1 1 In AL,3 3 D24 - D31 1 1 0 0 In AX,0 0 i 1 D0 - D15 0 0 1 1 In AX,2 2 i 3 D16 - D31 0 0 0 0 In EAX,0 0,1,2 i 3 D0 - D31

Slika 2.27: Na~in pristupa mikroprocesoru 386/486 U/I prostoru u toku izvrenja naredbi In i Out Napomena: U rafiranom delu krije se odgovor

Zadatak 2.28

Za implementaciju formule

zx x x

01 2 32

2=

+ −

koristi se asemblerski programski jezik procesora 80x86, gde xl, x2 i x3 treba da su parne pozitivne celobrojne vrednosti u opsegu od 0 do 100. Rezultat z0 treba da bude takode pozitivna celobrojna vrednost. a) Napisati programsku sekvencu, u obliku potprograma, kojom se testira parnost vrednosti xl, x2 i x3. Ako su xl i x3 neparni brojevi ili z0 negativan broj, postaviti marker CPU-a ZF = 1. U slu~aju kada se nije detektovala greka izvrenje programa zavriti sa ZF =0. b) Napisati programsku sekvencu za izra~unavanje z0 prema formuli. c) Nacrtati dijagram toka algoritma. Napomena: (1) Kod reavanja zadatka, prvo dati dijagram toka algoritma na osnovu koga bi se sagledao princip rada programa i potprograma. (2) Kod kreiranja programa i potprograma koristiti potpunu definiciju segmenata.

Zadatak 2.29

U memoriji mikrora~unara zasnovanog na mikroprocesoru 80x86 smeten je vektor od n ASCII cifara po~ev od adrese ANIZ (n je paran broj). a) Algoritamski (pomou dijagrama toka) predstaviti konverziju vektora ANIZ u vektor pakovanih BCD cifara, koje se smetaju u memoriju po~ev od adrese BNIZ b) Napisati programsku sekvencu na asemblerskom jeziku pomou koje je mogue izvriti konverziju vektora od n ASCII cifara u vektor pakovanih BCD cifara. Du`ina vektora n ~uva se na lokaciji NAN. Po~etak programa je sa lokacije PROG. Kod kreiranja programa i potprograma koristiti potpunu definiciju segmenata. Napomena: dve ASCII cifre formiraju jednu pakovanu BCD cifru.

Zadatak 2.30

Odrediti broj bajt-lokacija ~iji je sadr`aj nula a koje se nalaze u tabeli po~ev od memorijske lokacije ALFA pa do ALFA+k-1, gde je k=256. Smestiti adrese lokacija ~iji je sadr`aj nula u novu tabelu koja po~inje sa lokacije BETA, gde je BETA=ALFA+k (adrese su 16-bitne). Program napisati na asemblerskom jeziku za mikroprocesor 80x86, koristei potpunu definiciju segmenata. Za segment magacina definisati prostor od 64 bajta. Po~etak programa je na adresi POC.

Zadatak 2.31

Za sistem zasnovan na mikroprocesoru 80x86 napisati programsku sekvencu na asemblerskom jeziku kojom se:

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-46

(a) Postavljaju na nulu memorijske lokacije po~ev od adrese ALFA do ALFA+63h. b) Popunjavaju lokacije: ALFA decimalnim brojem 0, ALFA+1 decimalnim brojem 1, ALFA+2 decimalnim brojem 2, itd., do lokacije ALFA+63h. Kod oba slu~aja, (a) i (b), za pristup memorijskim lokacijama od ALFA do ALFA+63h, koristiti registarsko direktno adresiranje.

Zadatak 2.32

Za sistem zasnovan na mikroprocesoru 80x86 napisati programsku sekvencu na asemblerskom jeziku kojom se: (a) Postavljaju na nulu memorijske lokacije po~ev od adrese ALFA do ALFA+63h. b) Popunjavaju lokacije: ALFA decimalnim brojem 0, ALFA+1 decimalnim brojem 2, ALFA+2 decimalnim brojem 4, itd., do lokacije ALFA+63h, koja se puni brojem 126. Kod oba slu~aja, (a) i (b), za pristup memorijskim lokacijama od ALFA do ALFA+63h, koristiti memorijsko indirektno adresiranje.

Zadatak 2.33

Sistem prikazan na Slici 2.28 koristi se za pobudu desetocifarskog, multipleksiranog, sedmo-segmentnog displeja. U memoriji 8-bitnog hipoteti~kog ra~unara po~ev od lokacije DISP, smeteno je pet BCD pakovanih cifara na sukcesivnim lokacijama. Adresa osmobitnog le~a u koji se upisuje podatak za pobudu dekodera/drajvera je LEC_A. Napisati programsku sekvencu u obliku potprograma PP1 za pobudu displeja sa Slike 2.28, shodno dijagramu toka sa Slike 2.29. U toku pisanja programa pridr`avati se sledeih sugestija: • Registar R1 koristiti kao promenljivu BROJAC. • Informaciju o trajanju pobude svakog segmenta, ~uvati na lokaciji VREME. • Sadr`aj lokacije VREME napuniti u registar R2. • Potprogram PP1 po~eti sa lokacije POC. • Koristiti dvoadresni format instrukcija. • ACC je akumulator; • R1 i R2 su registri opte namene hipoteti~kog ra~unara; • SP je pokaziva~ magacina.

DR

DK

10 –cifr.7-segm.

LEDdisplej

MS

LS

8-bitnile~

4

4

8

cifra 0cifra 9

segmentno-drajverske linije

. . .

.

.

.

Slika 2.28 : Principijelna ema povezivanja LED displeja

Napomena: DR - BCD u sedmosegmentni dekoder/drajver; DR - dekoder “1 od 10”

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-47

Magacin<-ACCBROJAC:=0

PP1

BROJACneparan ?

[ift ACC u levo za4 mesta

DISP:=DISP+1

DA

ACC:=ACC OR BROJAC

LEC_A:=ACC

BROJAC > 10 ?

ACC<-Magacin

Return

DA

DA

R1=R1-1

ACC<-M[DISP]R1:= VREME

R1=0 ?

BROJAC:= BROJAC+1

Slika 2.29 : Dijagram toka algoritma za pobudu 10-cifarskog decimalnog broja na

multipleksiranom 7-segmentnom displeju

Zadatak 2.34

Logi~ka operacija Xor se koristi kod ifrovanja podataka. Naime, ako se obavi Xor operacija nad svakim elementom niza VEKTOR ~ija je po~etna adresa ALFA, sa klju~em, dobie se rezultantni ifrovani niz REZNIZ koga treba smestiti po~ev od adrese BETA. Niz VEKTOR ~ini N elemenata tipa bajt. a) Ako su svi elementi niza VEKTOR inicirani na vrednost 55h, a klju~ ima vrednost 0AAh,

pokazati koja e rezultantna vrednost biti upisana u svaku lokaciju REZNIZ-a. b) Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 kojom e se

ifrovani podaci smetati na lokacije REZNIZ c) Kakav treba da bude klju~ i koja operacija treba da se obavi da bi se ifrovani podaci REZNIZ-

a dobili u izvornom obliku (tj. kao deifrovani). Program napisati kao FAR proceduru korienjem potpune definicije segmenata. Segment podataka nazvati PODACI, segment magacina - MAGACIN, a programski segment - PROGRAM. Za segment magacina rezervisati prostor od 64 bajta. Na kraju procedure predvideti povratak u DOS sledeom sekvencom: Mov AH,4Ch Int 21h

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-48

Zadatak 2.35

U segmentu podataka smeten je niz nazvan SIMA koga ~ini 100 elemenata. Svaki element niza SIMA je tipa zapis i obima je 20 bajtova. Formirati novi niz nazvan OSAM koga ~ini osmi bajt svakog elementa (zapisa). Program za kreiranje niza OSAM napisati na asemblerskom jeziku mikroprocesora 80x86 u vidu potprograma tipa PROC FAR. Na kraju potprograma, izvrenjem sekvence: MOV AH,4Ch INT 21h obezbediti povratak u DOS. Za magacin predvideti prostor od 64 bajta. Koristiti pojednostavljenu definiciju segmenata.

Zadatak 2.36

Neka su data dva vektora VEK1 i VEK2, jednakih du`ina N = 256. Elementi vektora su ozna~ene 16-bitne vrednosti. Kompariranjem i-tih elemenata oba vektora (i = 0, ..., 255), pronai sve elemente koji se medjusobno razlikuju, a njihov broj upisati kao prvi elemenat novog vektora RAZL. Svaki sledei elemenat vektora RAZL sadr`i po tri 16-bitne re~i sa sledeim zna~enjem: redosledni broj elementa koji se razlikuje, srednja vrednost zbira - i, srednja vrednost razlike odgovarajuih elemenata VEK1 i VEK2. Program za kreiranje niza RAZL napisati na asemblerskom jeziku mikroprocesora 80x86 u vidu potprograma tipa PROC FAR. Na kraju potprograma, izvrenjem sekvence: MOV AH,4Ch INT 21h obezbediti povratak u DOS. Za magacin predvideti prostor od 64 bajta. Koristiti pojednostavljenu definiciju segmenata.

Zadatak 2.37

Data su dva niza NIZX i NIZY jednakih du`ina, svaki od n (n<100) 16-bitnih elemenata. Elementi nizova NIZX i NIZY smeteni su u memoriji na sledei na~in: X(1), X(2), ..., X(n), Y(1), Y(2), ..., Y(n). Podatak o du`ini niza n ~uva se na lokaciji DUZINA. Napisati program na asemblerskom jeziku mikroprocesora 80x86 u vidu potprograma tipa PROC FAR, koji se koristi za izra~unavanje sledeeg izraza:

( )∑=

−=∆N

1i

2i

2i yxxy

Rezultat xy∆ smestiti na lokaciju RAZLIKA kao 32-bitni broj. Na kraju potprograma, izvrenjem sekvence: MOV AH,4Ch INT 21h obezbediti povratak u DOS. Za magacin predvideti prostor od 64 bajta. Koristiti pojednostavljenu definiciju segmenata.

Test pitanje 2.45

[ta su moduli?

Odgovor ^esta je praksa kada se pie obiman softver, tj. veliki program, da se ceo program (projekat) razbije na manje celine, tzv. module, a zadatak koji se odnosi na pisanje ovih modula raspodeli izmedju veeg broja programera. Prednsoti ovakvog pristupa su sledee: (1) svaki modul se mo`e pisati, debagirati i testirati nezavisno od ostalih,

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-49

(2) greke u jednom modulu ne dovode do blokiranja celog projekta, (3) mogue je koristiti module radi povezivanja (linkovanja) sa viim programskim jezicima kakvi su C, Pascal i drugi, (4) paralelni rad veeg broja programera na kreiranju razli~itih modula skrauje ukupno vreme razvoja programa. Nae dosadanje iskustvo, strategija i saznanje u pisanju programa je bila sledea: Program je bio kreiran od glavne procedure koja je u toku svog izvrenja pozivala vei broj drugih potprograma. Ako se jedan od potprograma ne bi izvrio korektno tada je bilo neophodno ceo program ponovo napisati i reasemblirati. Efikasniji pristup u razvoju softvera bio bi sledei: Tretirati svaki potprogram kao poseban program (ili modul) i dodeliti mu posebno fajl-ime. Zatim svaki od modula asemblirati i testirati. Nakon testiranja i verifikovanja da su svi oni ispravni potrebno je izvriti njihovo povezivanje (linkovati ih) tako da oni ~ine jedinstvenu celinu (program). Mogunost povezivanja modula ostvaruje se zahvaljujui korienju odredjenih asemblersko jezi~kih direktiva. Direktive koje se naj~ee koriste za ove potrebe su EXTRN (external) i PUBLIC. Direktiva EXTRN se koristi da uka`e asembleru i linkeru da odredjena imena i promenljive nisu definisane u tekuem modulu nego su definisana na drugo mesto, tj. ona su eksterna. Za slu~aj da se direktiva EXTRN ne koristi (ne specificira), asembler nee biti u stanju da odredi gde su ova imena definisana pa e zbog toga generisati greku. Format direktive EXTRN je sledei:

EXTRN ime_1: tip ; svako ime mo`e biti u posebnoj EXTRN EXTRN ime_2: tip EXTRN ime_3: tip, ime_4:tip ; vei broj imena mo`e biti definisan istom direktivom EXTRN

Eksterna imena koja se koriste kod procedura mogu biti NEAR, FAR ili PROC (NEAR za male module, a FAR za vee). Imenovani podaci mogu biti sledeeg tipa: BYTE, WORD, DWORD, FWORD, QWORD ili TWORD. Ona imena ili parametri definisani kao EXTRN (definisani kao spoljni u odnosu na tekui modul) moraju da se definiu kao PUBLIC u modulu gde su definisani. Definisanjem imena kao PUBLIC dozvoljava asembleru i linkeru da obavi uparivanje sa odgovarajuom definicijom koja se odnosi na EXTRN. Format direktive PUBLIC je sledei:

PUBLIC ime_1 ; svako ime mo`e biti u posebnoj direktivi PUBLIC ime_2 PUBLIC ime_3, ime_4 ; vie imena mo`e biti izlistano u istoj direktivi tipa PUBLIC

Analizirajmo sada konstrukciju jednog programa koga ~ini glavna rutina, GLAVNA, i dva manja potprograma nazvana PP_1 i PP_2. Potprograme, PP_1 i PP_2, poziva glavna rutina.

; prvi fajl predstavlja glavna rutina EXTRN PP_1:FAR EXTRN PP_2:FAR PROG_SEG0 SEGMENT GLAVNA PROC FAR ASSUME CS:GLAVNA, DS:..., SS:..., ES:... ..... Call PP_1 Call PP_2 .... Mov AH, 4Ch Int 21h GLAVNA Endp PROG_SEG0 Ends End GLAVNA ; drugi fajl se odnosi na PP_1

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-50

PUBLIC PP_1 PROG_SEG1 SEGMENT PP_1 PROC FAR ASSUME CS:PROG_SEG1 .... Ret PP_1 Endp PROG_SEG1 Ends End ; trei fajl se odnosi na PP-2 PUBLIC PP_2 PROG_SEG2 SEGMENT PP_2 PROC FAR ASSUME CS:PROG_SEG2 ... Ret PP_2 Endp PROG_SEG2 Ends End

Slika 2.30 : Pisanje i povezivanje modula

Analizom programa sa Slike 2.30 mo`e se zaklju~iti sledee: (1) ulazna ta~ka programa je GLAVNA a izlazna END GLAVNA. (2) moduli koji se pozivaju od strane glavnog modula imaju direktivu End iza koje ne sledi oznaka ili ime. U konkretnom slu~aju PP_1 i PP_2 imaju direktivu End iza koje ne sledi oznaka.

Test pitanje 2.46

Kako se vri povezivanje modula?

Odgovor Neka je svaki od programskih modula sa Slike 2.30 (test pitanje 2.45) bio asembliran zasebno i zapamen kao fajl pod sledeim imenom: PROG_1.OBJ, PP_1.OBJ i PP_2.OBJ, respektivno. Njihovo povezivanje (linkovanje) pomou makroasemblera MASM, sa ciljem da se dobije (generie) jedinstveni izvrivi kd, se vri izdavanjem sledee naredbe

C > LINK PROG_1.OBJ + PP_1.OBJ + PP_2.OBJ

Analizirajmo sada jedan program, prikazan na sl. 2.31 a) koji se koristi za: (a) sabiranje dve re~i, i (b) mno`enje dve re~i Svaku od nabrojanih aktivnosti obavlja poseban modul. Podaci su definisani u glavnom modulu dok moduli za sabiranje i mno`enje nemaju svoje segmente podataka.

TITLE PROG_1 Ukazuje na modularno programiranje PAGE 60,132 EXTRN PP_1:FAR EXTRN PP_2:FAR PUBLIC VR1,VR2,ZBIR,PROIZ ; segment magacina SMAG SEGMENT DB 100 DUP (?) SMAG Ends ; segment podataka SPOD SEGMENT

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-51

VR1 DW 3412 VR2 DW 413 ZBIR DW 2 DUP (?) PROIZ DW 2 DUP (?) SPOD Ends ; kodni segment PR_SEG0 SEGMENT GLAVNI PROC FAR ASSUME CS:PR_SEG0,DS:SPOD,SS:SMAG Mov AX,SPOD Mov DS,AX Call PP_1 ; poziv potprograma za sabiranje Call PP_2 ; poziv potprograma za mno`enje Mov AH,4Ch Int 21h ; povratak na DOS GLAVNI Endp PR_SEG0 Ends End GLAVNI ; ************* a) Modul GLAVNI *************** ; program za odredjivanje sume dve eksterno definisane re~i i ; smetaj sume u lokaciji definisana od strane pozivnog programa TITLE PP_1 Program za sabiranje dve re~i PAGE 60,132 EXTRN VR1:WORD EXTRN VR2:WORD EXTRN ZBIR:WORD PUBLIC PP_1 PR_SEG1 SEGMENT PP_1 PROC FAR ASSUME CS:PR_SEG1 Sub BX,BX ; inicijaliziraj broja~ prenosa Mov AX,VR1 Mov DX,VR2 Add AX,DX ; VR1 + VR2 Adc BX,00 ; akumuliraj prenos Mov ZBIR,AX ; sa~uvaj sumu Mov ZBIR+2,BX ; sa~uvaj prenos Ret PP_1 Endp PR_SEG1 Ends End ; *****************b) Modul za sabiranje ****************** ; program za odredjivanje proizvoda dve eksterno definisane re~i i smetanje ; proizvoda u lokaciji definisanoj od strane pozivnog programa TITLE PP_2 Program za mno`enje dve re~i PAGE 60,132 EXTRN VR1:WORD EXTRN VR2:WORD EXTRN PROIZ:WORD

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-52

PUBLIC PP_1 PR_SEG2 SEGMENT PP_2 PROC FAR ASSUME CS:PR_SEG2 Mov AX,VR1 Mov CX,VR2 Mul CX ; VR1 * VR2 Mov PROIZ,AX ; memorii proizvod LS deo Mov PROZ+2,DX ; memorii proizvod MS deo Ret PP_2 Endp Pr_SEG2 Ends End ; *****************c) Modul za mno`enje *******************

Slika 2.31 : Program koga ~ine modul GLAVNI i moduli za sabiranje PP_1 i mno`enje PP_2

Analizom programa sa Slike 2.31 mo`emo da zaklju~imo sledee: (1) u modulu GLAVNI svaki od oba potprograma je deklarisan direktivom EXTRN to ukazuje da su ove procedure definisane u drugom fajlu. Eksterni potprogrami su pri ovome definisani kao FAR. (2) u fajlovima gde je definisan svaki potprogram, isti je deklarisan kao PUBLIC, tako da ga i drugi programi mogu pozivati. (3) u modulu GLAVNI imena VR1, VR2, ZBIR i PROIZ su definisana ka PUBLIC tako da i drugi programi mogu da pristupaju ovim podacima. U ostalim potprogramima ovi podaci se deklariu kao EXTRN. (4) povezivanje (linkovanje) sva tri programa vri se na sledei na~in

C > LINK GLAVNI .OBJ + PP_1. OBJ + PP_2.OBJ

Linker je taj koji reava sve probleme koji se odnose na uskladjivanja imena tipa PUBLIC i EXTRN.

Test pitanje 2.47

Kako se definie direktiva SEGMENT?

Odgovor U dosadanjoj analizi u toku definisanja segmenta nismo pominjali druge atribute koji prate ovu direktivu, nego smo samo koristili :

ime SEGMENT

Ovaj na~in definicije segmenta je prihvatljiv kada postoji samo po jedan segment za kd, podatke i magacin. Ali u slu~aju kada postoji vei broj modula koji se povezuju zajedno, neophodno je uskladiti i odgovarajuu definiciju segmenata. Kada se govori o modularnom programiranju potpuna definicija segmenta se vri na sledei na~in:

ime SEGMENT poravnanje tip_koji_se_kombinuje ime_klase

Uvedena polja imaju sledee zna~enje: • poravnanje - ukazuje da li granica segmenta po~inje na adresi tipa bajt, re~, paragraf ili

stranica. Ako se druga~ije ne nazna~i inicijalno (by default) se dodeljuje poravnanje tipa PARA, to zna~i da je po~etna granica segmenta odredjena paragrafom (Kod DOS-a paragraf se definie kao 16 bajtova, tj. svaki segment po~inje na 16-bajtnoj granici).

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-53

• tip_koji_se_kombinuje - ukazuje linkeru da li segmente istog tipa treba povezati zajedno ili ne. Tipi~ne opcije su STACK ili PUBLIC. Ako je tip_koji_se_kombinuje tipa PUBLIC linker e kombinovati taj segment sa drugim segmentima istog tipa u ostalim modulima. To zna~i da je mogue kombinovati vei broj kôdnih segmenata sa razli~itim imenima u kôdni: segment koji ima jedinstveno ime.

• ime_klase - postoje sledee ~etiri opcije: 'CODE', 'STACK', 'DATA' i 'EXTRA' koje su uokvirene jednostrukim navodnicama. Koristi se za kombinovanje segmenata istog tipa koji pripadaju razli~itim modulima.

Definicija segmenta magacina u modulu GLAVNI kojom se eliminiu upozorenja od strane linkera da segment nije definisan je oblika

ime SEGMENT PARA STACK 'STACK' Ako u drugim modulima segment podataka nije definisan tada se koristi sledea definicija

ime SEGMENT PARA 'DATA' Ako je segment podataka definisan u nekom drugom modulu tada direktiva PUBLIC treba da se nalazi izmedju PARA i 'DATA'. Sledeim definicijama segmenata kombinuju se segmenti podataka i kôda iz razli~itih modula

ime SEGMENT PARA PUBLIC 'CODE' ime SEGMENT PARA PUBLIC 'DATA'

Treba naglasiti da kada se kombinuju razli~iti segmenti iz razli~itih modula u jedinstveni segment, tada imena segmenata moraju biti takodje jedinstvena. Kod programa prikazanog na Slici 2.32 vri se potpuno nova definicija svih segmenata u poredjenju sa programom prikazan na Slici. 2.31 (Kodni segmenti nisu tipa PUBLIC). TITLE PROG_2 Isti kao PROG_1 ali sa potpunom definicijom segmenata PAGE 60,132 EXTRN PP_1:FAR EXTRN PP_2:FAR PUBLIC VR1,VR2,ZBIR,PROIZ ; segment magacina SMAG SEGMENT PARA STACK 'STACK' DB 100 DUP (?) SMAG Ends ; segment podataka SPOD SEGMENT PARA 'DATA' VR1 DW 3412 VR2 DW 413 ZBIR DW 2 DUP(?) PROIZ DW 2 DUP(?) SPOD Ends ; kodni segment PR_SEG0 SEGMENT PARA 'CODE' GLAVNI PROC FAR ASSUME CS:PR_SEG0,DS:SPOD,SS:SMAG Mov AX,SPOD Mov DX,AX Call PP_1 ; poziv potprograma Sabiranje Call PP_2 ; poziv potporgrama mno`enje Mov AH,4Ch GLAVNI Endp PR_SEG0 Ends

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-54

End GLAVNI ; ***************a) Modul GLAVNI *************** ; ovaj program izra~unava zbir dve spoljno definisane re~i i smeta sumu na lokaciji ; koju definie pozivni program TITLE PP_1 Program za sabiranje dve re~i PAGE 60,132 EXTRN VR1:WORD EXTRN VR2:WORD EXTRN ZBIR:WORD PUBLIC PP_1 PR_SEG1 SEGMENT PARA 'CODE' PP_1 PROC FAR ASSUME CS:PP_1 Sub BX,BX Mov AX,VR1 Mov DX,VR2 Add AX,DX Adc BX,00 Mov ZBIR,AX Mov ZBIR+2,BX Ret PP_1 Endp PR_SEG1 Ends End ; ******************b) Modul Sabiranje **************** ; ovaj program izra~unava proizvod dve eksterno definisane re~i i smeta proizvod na ; lokaciji koju definie pozivni program TITLE PP_2 Program za mno`enje dve re~i PAGE 60,132 EXTRN VR1:WORD EXTRN VR2:WORD EXTRN PROIZ:WORD PUBLIC PP_2 PR_SEG2 SEGMENT PARA 'CODE' PP_2 PROC FAR ASSUME CS:PR_SEG2 Mov AX,VR1 Mov CX,VR2 Mul CX Mov PROIZ,AX Mov PROIZ+2,DX Ret PP_2 Endp PR_SEG2 Ends End ; ****************c) Modul Mno`enje*****************

Start Stop Length Name Class 00000h 00063h 00064h SMAG STACK

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-55

00070h 0007Bh 0000Ch SPOD DATA 00080h 00092h 00013h PR_SEG0 CODE 000A0h 000B5h 00016h PR_SEG1 CODE 000C0h 000D0h 00011h PR_SEG2 CODE

d) memorijska mapa

Slika 2.32 : Program kod koga su segmenti potpuno definisani

Na Slici 2.32 d) prikazana je mapa memorije koja se odnosi na po~etak i kraj svakog od segmenata nakon obavljenog linkovanja. Uo~imo da je po~etak svakog segmenta definisan 16-bitnom granicom : 00070h, 00080h,... . Kôdni segmenti PR_SEG0, PR_SEG1 i PR_SEG2 su odvojeni, a njihovi po~eci na 16-bajtnim granicama definisani su sa PARA. Kôdni segmenti se mogu spojiti u jedinstveni koristei opciju PUBLIC. Spajanje kôdnih segmenata je mogue pod uslovom da svi oni imaju jedinstveno ime u budu deklarisani kao PUBLIC. Memorijska mapa koja se dobija u tom slu~aju za program sa Slike 2.32, imae sledei oblik

Start Stop Length Name Class 00000h 00063h 00064h SMAG STACK 00070h 0007Bh 0000Ch SPOD DATA 00080h 000D0h 00051h PR_SEG0 CODE

Ve smo ranije ukazali da se kod makro asemblera Microsofta MASM 5.0 pa navie, i Borlanda TASM verzija 1 pa navie umesto potpune definicije setgmenata ~ee koristi pojednostavljena definicija segmenata. U tom slu~aju modularan program sa Slike 2.32 imae oblik kao na Slici 2.33. TITLE PROG_3 Isti kao PROG_2 ali sa pojednostavljenom definicijom segmenta PAGE 60,132 .MODEL SMALL .STACK 64 .DATA PUBLIC VR1,VR2,ZBIR,PROIZ VR1 DW 3412 VR2 DW 413 ZBIR DW 2 DUP(?) PROIZ DW 2 DUP(?) ; program .CODE EXTRN PP_1:NEAR EXTRN PP_2:NEAR GLAVNI Mov AX,#DATA Mov DS,AX Call PP_1 Call PP_2 Mov AH,4Ch Int 21h End GLAVNI ; ****************a) modul GLAVNI *************** TITLE PP_1 Program za sabiranje sa pojednostavljenom definicijom segmenta PAGE 60,132 .MODEL SMALL EXTRN VR1:WORD EXTRN VR2:WORD

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-56

EXTRN ZBIR:WORD .CODE PUBLIC PP_1 PP_1 PROC NEAR Sub BX,BX Mov AX,VR1 Mov DX,VR2 Add AX,DX Adc BX,00 Mov ZBIR,AX Mov ZBIR+2,BX Ret PP_1 Endp End ; **********************b) modul Sabiranje ******************** TITLE PR_2 Program za mno`enje sa pojednostavljenom definicijom segmenta PAGE 60,132 .MODEL SMALL EXTRN VR1:WORD EXTRN VR2:WORD EXTRN PROIZ:WORD .CODE PUBLIC PP_2 PP_2 PROC NEAR Mov AX,VR1 Mov CX,VR2 Mul CX Mov PROIZ,AX Mov PROZ+2,DX Ret PP_2 Endp End ; *******************c) modul za Mno`enje ****************

Slika 2.33 : Modularni program koji koristi pojednostavljenu definiciju segmenata

Test pitanje 2.48

Kako se vri prenos parametara izme|u modula?

Odgovor ^esto se javlja potreba za prenos parametara izmedju razli~itih modula napisanih na asemblerskom jeziku ili izmedju programa napisanih na asemblerskom jeziku i HLL programa kakvi su Pascal, C i dr. Parametri koji se predaju mogu biti fiksne vrednosti, promenljive, polja podataka, ili pokaziva~i memorijskih lokacija. Naj~ee prenos parametara izmedju modula vri se preko registara, memorije ili magacina. Jedan tipi~an na~in predaje parametara preko registara prikazan je na Slici 2.34. Ovaj program se koristi za konverziju ASCII kôdiranih znakova u binarne. Program postavlja segment podataka, prihvata ASCII podatke za tastature, smeta ih u memoriji, a zatim poziva rutinu za konverziju broja u binarni. Kona~no rezultat smeta u memoriji. Registri BX i SI se koriste da ukazuju na odredjene podatke pre nego to se modul pozove a pozvani modul smeta rezultat u registar AX pre nego to se izvri povratak iz pozvane rutine u pozivnu.

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-57

TITLE PROG_4 Poziv programa za konverziju iz ASCII u binarni PAGE 60,132 PUBLIC DESET SMAG SEGMENT PARA STACK 'STACK' DB 64 DUP(?) SMAG Ends ; segment podataka SPOD SEGMENT ASC_OB LABEL BYTE ; ASCII oblast MAX_DUZ DB 6 ; maksimalna du`ina ST_DUZ DB ? ; stvarna du`ina ASC_BR DB 6 DUP(?) ; ASCII broj ORG 10h BIN_BR DW 0 PORUKA DB 'MOLIM UNESI PETO CIFARSKI BROJ', '$' DESET DW 10 SPOD Ends ; segment programa SPROG SEGMENT EXTRN ASC2B_KON:FAR ; konverzija ASCII u binarni GLAVNI PROC FAR ASSUME CS:SPROG,DS:SPOD,SS:SMAG Mov AX,SPOD Mov DS,AX ; prikazivanje poruke (PROMPT) Mov AH, 09 ; prenos parametra preko Mov DX, OFFSET PORUKA ; registara Int 21h ; poziv prekidne DOS rutrine ; mno`enje niza Mov AH,0Ah ; prenos parametara Mov DX,OFFSET ASC_OB ; preko registara Int 21h Mov SI,OFFSET ASC_BR Mov BH,00 Mov BL,ST_DUZ Dec BX Call ASC2B_KON ; poziv potprograma za konverziju Mov BIN_BR,AX ; sa~uvaj binarni (heksa) rezultat Mov AH,4Ch Int 21h ; povretak na DOS GLAVNI Endp SPROG Ends End GLAVNI

Slika 2.34 : Pozivni program za konverziju ASCII u binarni

Prenos parametara preko registara veoma ~esto se koristi kod DOS-ovih i BIOS-ovih prekidnih funkcijskih poziva (tipi~no preko Int 21h i Int 10h i td). Prednost ovog metoda je brzi prenos podataka (procesor najbr`e pristupa internim registrima) a nedostatak ograni~eni broj CPU-ovih registara. Drugi metod za prenos parametara se zasniva na definisanju RAM oblasti, tj. memorijskih lokacija. DOS i BIOS ~esto koriste i ovaj metod. Problem sa prenosom parametara preko fiksnih memorijskih oblasti se sastoji u tome to mora izmedju razli~itih proizvodja~a ra~unara da postoji univerzalni dogovor o memorijskim adresama preko kojih se prenose parametri. Na`alost ovakav dogovor do sada nije postignut.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-58

Naj~ee prenos parametara se vri preko magacina. Ovaj metod je univerzalan jer magacin postoji kod svih ra~unara. Ipak treba ukazati da su manipulacije sa magacinom kako komplikovane tako i rizi~ne iz sledeeg razloga: Kada se modul pozove, u magacin se smeta povratna adresa pozivnog programa. Za slu~aj da se sadr`aj magacina promeni program e krahirati. Zbog ovoga manipulacije sa magacinom mora dobro da se poznaju pre nego to se upustimo u takav rad. Program na Slici 2.35 prikazuje na~in prenosa parametara preko magacina. Glavni modul dobavlja tri operanda tipa re~ iz segmenta za podatke smeta ih u magacin, a zatim poziva potprogram. Potprogram dobavlja podatke iz magacina, sabira ih, smeta rezultat u registar, i obavlja povratak u pozivni program. Glavni program memorie rezultat sabiranja.

TITLE PROG_5 Predaja parametara preko magacina PAGE 60,132 EXTRN PP_6:FAR ; segment magacina SMAG SEGMENT PARA STACK 'STACK' DB 64 DUP (?) SMAG Ends SPOD SEGMENT PARA 'DATA' ; segment podataka VR1 DW 4157 VR2 DW 8436 VR3 DW 39C8 REZ DW 2 DUP(?) SPOD Ends ; programski segment SPR0 SEGMENT PARA PUBLIC 'CODE' GLAVNI PROC FAR ASSUME CS:SPRO,DS:SPOD,SS:SMAG Mov AX,SPOD Mov DS,AX Push VR3 ; smetaj parametara u magacin Push VR2 Push VR1 Call PP_6 ; poziv potprograma Mov REZ,AX ; smetaj rezultata Mov REZ+2,BX Mov AH,4Ch Int 21h GLAVNI Endp SPR0 Ends End GLAVNI ; ******************** a) glavni modul *************** ; u posebnom fajlu TITLE PR_6 Modul za sabiranje tri re~i koje se prenose preko magacina PAGE 60,132 PUBLIC PP_6 ; segment podataka SPRO SEGMENT PARA PUBLIC 'CODE' PP_6 PROC FAR ASSUME CS:SPRO Sub BX,BX ; BX = 0 zbog prenosa Push BP ; sa~uvaj BP Mov AX,[BP]+6 ; VR1→ AX Mov CX,[BP]+8 ; VR2 → CX

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-59

Mov DX,[BP]+10 ; VR3 → DX Add AX,CX ; VR1 + VR2 → AX Adc BX,00 ; CY → BX Add AX,DX ; (VR1 + VR2) + VR3 → AX Adc BX,00 ; BX + CY → BX Pop BP ; obnovi BP pre povratka Ret 6 ; dodaj 6 na SP da premosti podatke PP_6 Endp SPRO Ends End ; *********************b) modul sabiranja ******************

Slika 2.35 : Program za sabiranje tri broja gde se parametri prenose preko magacina

Da bi se bolje razumele manipulacije sa magacinom u okviru modula sabiranje (Slika 2.35)) na Slici 2.36 prikazan je izgled magacina poziva procedure PP_6, tj. modula za sabiranje. uslovno je uzeto da pre izvrenja instrukcije Push VR3 pokaziva~ magacina, SP, ukazuje na lokaciju 2000 h.

YYXX

39C8

8436

4157

CS

IP

BP

200120001FFF1FFE1FFD1FFC1FFB1FFA1FF91FF81FF71FF61FF51FF41FF31FF2

SP (pre Push VR3nakon Ret 6)

SP (nakon PushVR3)

SP (nakon PushVR2)

SP (nakon PushVR1)

SP (nakon Call PP_6,nakon Pop BP)

SP (nakon PushBP)

VR3

VR2

VR1

CS

IP

BP

Slika 2.36 : Izgled magacina

Test pitanje 2.49

Kako se vri kombinovanje programa na asemblerskom jeziku i programskom jeziku C?

Odgovor I pored toga to se programi napisani na asemblerskom jeziku za dati procesor najbr`e izvravaju oni nisu univerzalni iz prostog razloga to se asemblerski jezici od jednog procesora do drugog razlikuju. Na primer, asemblerski jezik za Intelove proceosre iz familije 80x86 razlikuje se od asemblerskog jezika za Motoroline procesore iz familije 680xx. Daleko bolje reenje je ono koje bi koristilo neki univerzalni programski jezik jer bi takvo reenje obezbedjivalo prenosivost programa sa jedne maine na drugu. Na`alost takav jezik do dana dananjeg ne postoji. Ali programski jezik

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-60

C zadnje dve decenije ~ini se da postaje sve vie univerzalni jezik za veliki broj procesora. Ilustracije radi veliki broj programa za PC maine, radne stranice zasnovane na procesorima iz familije Motorola MC 680xx, i mnogo drugih maina napisan je na jeziku C. U sutini C je univerzalni programski jezik koji sa neznatnom izmenom ili skoro bez modifikacije mo`e da se izvrava na bilo kojem procesoru. Program napisan na C-u treba samo rekompajlirati za dati procesor. Imajui u vidu da je C prenosivi jezik on sve vie postaje dominantan jezik posebno kod aplikacija koje se odnose na rad u realnom vremenu. Danas ~esto se sreemo sa sledeom situacijom: Oko 70% do 80% od nekih programa je napisan na C-u a ostatak na asemblerskom jeziku. Postoje dva na~ina za umetanje kôda napisanog na asemblerskom jeziku u C-u. Prva metoda se naziva in-line asembliranje, a kod druge iskaz u C poziva external asemblerski jezik.

Test pitanje 2.50

Kako se vri umetanje 80x86 asemlerskog kôda u program na C-u?

Odgovor Sagledaemo sada metod in-line koji se koristi kod Borland-ovog Turbo C (Microsoftov C takodje koristi in-line metod koji je sli~an Borlandovom, ali ranije verzije C-a ne podr`avaju ovaj metod). Analiziraemo sledeu sekvencu: Kako u programu napisanom na C-u izvriti postavljanje kursora na poziciji vrsta = 20 i kolona = 30. Kada je u pitanju Borlandov C tada ispred svake asemblerske instrukcije stoji prefiks "asm" koji predstavlja rezervisana re~ (Microsoft-ov C koristi rezervisanu re~ "_asm"). Dve verzije Borlandovog formata za in-line asembliranje oblika su: /*verzija 1 : koristi klju~nu re~ asm pre svake linije u in-line kodu */ main () asm mov ah, 2; /*svaka linija zavrava sa ";" ili <CR>*/ asm mov bh, 0; asm mov dl, 20 /* komentar mora da ima C-ov a ne ";" asemblerski stil */ asm mov dh, 10; asm int 10h; /* verzija 2 : koristi kljuj~nu re~ asm pre bloka in-line koda */ main () asm mov ah, 2 mov bh, 0 mov dl, 20 mov dh, 10 int 10h

Sledea dva programa prikazuju kako se vri prikaz niza podataka. Primer_1 je napisan strogo na C-u. Kod Primer_2 koristi se kombinacija Borlandovog Turbo C-a i asemblerskog kôda. Uo~imo da se kod kombinovanja C-a i asemblera asemblerske direktive tipa OFFSET (kao kod instrukcije Mov DX, OFFSET PORUKA) ne prepoznaju od strane C-a.

Primer_1 : Program na jeziku C

# include <stdio.h> main() printf ("Student Mika. \n");

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-61

Primer_2 : Turbo C sa in-line asembliranjem

char const *PORUKA = "Student Mika. \"$"; main () asm mov ah, 9; asm mov dx, PORUKA; asm int 21h;

Sledea programska sekvenca prikazuje takodje in-line asembliranje. In-line kd postavlja kursor na poziciji definisanoj sa vrsta = 15 i kolona = 30, a zatim prikazuje niz podataka koristei kombinaciju Borlandovog C-a i asemblera. main () int const vrsta = 15; int const kolona = 30; char const *PORUKA = Student Mika. \n $"; asm mov ah, 2 mov bh, 0 mov dl, kolona mov dh, vrsta int 10 h /* postavi kursor na poziciju */ mov ah, 09 mov dx, PORUKA int 21 h /* prika`i poruku */

Test pitanje 2.51

Kako C program poziva asemblerske procedure?

Odgovor I pored toga to je in-line asembliranje jednostavno u praksi se ~esto koristi sledei pristup: Kreiraju se potprogrami na asmblerskom jeziku a zatim se oni pozivaju iz C-a isto kao i funkcije C-a. (Treba ukazati da termin funkcija koji se koristi u C-u ima isto zna~enje kao termin procedura (ili potprogram) u asemblerskom jeziku). Ali pre nego to se po~ne sa pisanjem rutina na asemblerskom jeziku koje e se koristiti od strane C-a neophodno je prvo da se razume tehnika koja se odnosi na na~in prenosa parametara iz C-a u asemblerski jezik. Kod svih viih programskih jezika kakvi su C, Fortran, Pascal i dr. prenos parametara potprogramima (funkcijama) vri se preko magacina. Neki od kompilatora, kakvi su Pascal i C, prenose parametre po vrednosti, dok kod drugih kompilatora (kakvi su Fortran, Basic) predaju se adrese vrednosti. Tako na primer, kod Basic-a predaje se samo ofset adresa, dok se kod Fortrana predaju kako adresa segmenta tako i ofset adresa. Termin konvencija poziva (calling convention) se odnosi na tehniku kojom jezik predaje parametre potprogramu u trenutku kada ga pozove. U daljem tekstu analiziraemo konvenciju poziva koju koristi programski jezik C.

Test pitanje 2.52

Koje se konvencije poziva koriste kod C-a?

Odgovor

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-62

Konvencija poziva kod C-a koja se koristi za kombinovanje C-a sa MASM asemblerskim jezikom bie ilustrovana na primeru prikazanom na Slici 2.37. Za slu~aj da je pre poziva procedure _KURSOR, pokaziva~ magacina SP ukazivao na adresu 198Ch tada sadr`aj magacina u toku izvrenja ovog potprograma imae oblik kao na Slici 2.38.

extrn kursor (int, int), main () kursor (15, 12); printf ("Ovaj program postavlja kursor"); ; kursor.asm .MODEL SMALL .CODE PUBLIC _KURSOR ; ova procedura je pisana sa ciljem da se pozove iz C-a _KURSOR PROC Push BP ; sa~uvaj vrednost BP-a Mov BP, SP ; koristi BP kao indeks magacina Mov DH, [BP + 4] ; dobavi x = vrsta iz magacina Mov DL, [BP + 6] ; dobavi y = kolona iz magacina Mov AH, 02 ; postavi registar za poziv Int Int 10h Pop BP ; obnovi sadr`aj BP-a Ret _KURSOR Endp

Slika 2.37 : Poziv procedure napisana na asemblerskom jeziku iz C-a

000C

000F

IP

BP

Adrese198C198B198A19891988198719861985198419831982

BP+6 ~uva vrednosty=12=0Ch

BP+4 ~uva vrednostx=15=0Fh

BP+2 ~uva adresupovratka

SP=BP

Slika 2.38 : Sadr`aj magacina

Procedura na asemblerskom jeziku koja se poziva iz C-a mora da potuje sledea pravila: (1) Parametri se predaju po vrednostima u obrnutom redosledu od onog kako je nazna~eno. Na primer, funkcija prog(x,y,z) prvo predaje z, zatim y, a na kraju x. (2) Nakon to su parametri predati u magacin se smeta par CS : IP. Ako je C kompajliran u SMALL ili COMPACT memorijski modul (ili ako je procedura NEAR) tada se smeta samo IP. Ako je C kompajliran za MEDIUM, LARGE ili HUGE (ili je procedura FAR) tada se u magacin smetaju CS i IP (prvo CS a zatim IP). (3) U magacin se smeta BP a zatim se parametrima pristupa preko registra BP uz korienje odgovarajueg razmetaja. U daljem toku rada BP ~uva ofset u odnosu na segmentni registar SS. (4) Zadnja instrukcija treba da je Ret sa brojem kao operand, jer je posao C-a da vrati magacin u po~etno stanje a tako|e i pozivnom kdu vrati upravljanje.

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-63

(5) Ispred bilo kog imena deklarisanog kao "PUBLIC" mora da stoji "_" (kao na primer _KURSOR). Samo prva osam slova imena se prepoznaju, ostala se zanemaruju. (6) Kada C prenosi parametre o podacima tipa polja tada se ti podaci ne prenose po vrednostima nego kao pokaziva~i adresa (by reference). (7) Ako je C kompajliran u MEDIUM, HUGE ili LARGE modelu, tada se za procedure na asemblerskom jeziku koristi opcija FAR, a ako je kompajliran sa SMALL modelom tada se za procedure na asemblerskom jeziku koristi opcija NEAR. Analizirajmo sada kako izgleda kd procedure cursor (x,y) gde su x i y vrednosti vrste i kolone respektivno, napisana na asemblerskom jeziku da bi bila pozvana od strane C-a. Specifi~nost procedure je ta to se i sadr`aji registara AX, BX i CX smetaju u magacin. Sadr`aj magacina u toku izvrenja pozvane procedure prikazan je na Slici 2.39 b). .MODEL SMALL .CODE PUBLIC _KURSOR ; ova procedura je pisana da bude pozvana iz C-a _KURSOR PROC Push BP ; BP u magacin Mov BP, SP Push AX ; smesti registre ~iji se sadr`aj Push DX ; menja u toku izvrenja ovog modula Push BX ; u magacin Mov DH, [BP + 4] ; x = vrsta smesti u DH Mov DL, [BP + 6] ; y = kolona smesti u DH Mov AH, 02 ; postavi uslove za poziv Int Int 10h Pop BX ; obnovi sadr`aj registra Pop DX Pop AX Pop BP Ret _KURSOR Endp End ; **************a) procedura _KURSOR ***************

000C

000F

IP

BP

AHAL

DHDL

BHBL

200120001FFF1FFE1FFD1FFC1FFB1FFA1FF91FF81FF71FF61FF51FF4

BP+6 ~uva vrednost y=12

BP+4 ~uva vrednost x=15

BP+2 ~uva adresu povratka

SP=BP

AX

BX

DX

b) sadr`aj magacina

Slika 2.39 : Procedura _KURSOR koja se poziva iz C-a

Test pitanje 2.53

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-64

Kako se parametri vraaju C-u? Odgovor U prethodnim test pitanjima smo ukazali kako se parametri predaju iz C-a u magacin a zatim kako se oni koriste od strane procedure napisane na asemblerskom jeziku. Suprotno pitanje bi bilo sledee: [ta se deava kada funkcija u C-u o~ekuje da primi argumenat? Kada C o~ekuje argumenat od procedure na asemblerskom jeziku tada on o~ekuje da nadje povratni parametar u odredjeni registar ili registre. Parametri u zavisnosti od obima smetaju se shodno pravilima definisanim na Slici 2.40. registar obim tip podatka u C-u AL 1 bajt char, short AX 2 bajta int DX:AX 4 bajta long

Slika 2.40 : Povratne vrednosti koje C o~ekuje od procedure

Ako je vrednost koju procedura vraa tipa pokaziva~ (adresa) tada u AX e se nalaziti IP za slu~aj da je procedura NEAR, a u DX:AX bie CS:IP kada je procedura tipa FAR. Analizirajmo sada sledei primer: Tri vrednosti, x, y i z, tipa int, od strane funkcije na C-u se predaju proceduri na asemblerskom jeziku. Kd na asemblerskom jeziku obavlja njihovo sabiranje a sumu vraa nazad C-u, koji prikazuje rezultat. Ovaj programski primer je prikazan na Slici 2.41 a), a izgled magacina na Slici 2.41 b). extrn unsigned long suma (int, int, int), main() printf ("Suma je jednaka % u", suma (200, 450, 138)); Procedura suma .asm je oblika .MODEL MEDIUM .CODE .PUBLIC _SUMA ; ova procedura tipa FAR pribavlja tri re~i iz magacina sabira ih, a sumu vraa preko ; registarskog para DX:AX _SUMA PROC FAR Push BP ; sa~uvaj BP Mov BP,SP ; koristi BP kao pokaziva~ Sub AX, AX ; AX = 0 Mov DX, AX ; DX = 0 Add AX, [BP+6] ; x + 0 = AX Adc DX, 0 ; saberi prenos Add AX, [BP+8] ; x + y = AX Adc DX, 0 ; saberi prenos Add AX, [BP+10] ; x + y + z = AX Adc DX, 0 ; saberi prenos Pop BP ; obnovi sadr`aj BP-a Ret ; vrati se u C _SUMA Endp End ; ************************a) programski primer *********************

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-65

Z

Y

X

CS

IP

BP

200120001FFF1FFE1FFD1FFC1FFB1FFA1FF91FF81FF71FF61FF51FF4

BP+10 pokazuje na Z

BP+8 pokazuje na Y

BP+6 pokazuje na X

SP=BP

b) izgled magacina

Slika 2.41 : Programski primer _SUMA

Test pitanje 2.54

Kako se novi asembleri povezuju sa C-om?

Odgovor Verzije asemblera skorijeg datuma kakvi su Microsoftov MASM 5.1 ili Borlandov TASM 1.0 pa navie u~inili su da povezivanje modula na asembleru i C-u bude lake. Kao prvo nema potrebe da se vodi briga o razmetaju ili po~etku imena koje se, ili koja se, zajedni~ki koriste od C-a i asemblera (tj. da se pamti BP i da svako ime po~inje simbolom '_' kao to je bio slu~aj sa _KURSOR). Ilustracije radi program sa Slici 2.41 prepisan je na Slici 2.42. Uo~imo umetanje slova C u direktivi ".MODEL MEDIUM C". Ova direktiva omoguava asembleru da automatski izra~unava [BP+n] za sve parametre.

.MODEL MEDIUM , C .CODE .PUBLIC _SUMA SUMA PROC FAR POD1 : WORK, POD2 : WORD, POD3 : WORD Sub AX, AX Mov DX, AX Add AX, POD1 Adc DX, 0 Add AX, POD2 Adc DX, 0 Add AX, POD3 Adc DX, 0 Ret _SUMA Endp End

Slika 2.42 : Procedura SUMA - nova verzija

Test pitanje 2.55

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-66

Kako se vri predaja adresa polja iz C-a preko magacina?

Odgovor Programski jezik C predaje promenljive po vrednosti preko magacina a strukture podataka tipa polja kao pokaziva~e. Naime ofset adresa polja se smeta u magacin ako je memorijski model SMALL ili MEDIUM, ina~e u magacin se smeta par CS:IP. Primer na Slici 2.43 ilustruje ovaj aspekt. U primeru se koristi polje iz C-a koje ukazuje na dnevne zarade radnika za sva pet dana u nedelji koristei za definiciju podatak unsigned int (0 do 255). Nakon toga se koristi asemblerski kd za njihovo sabiranje i vraanje sume C-u radi prikazivanja.

int zarade [5] = 196, 214, 178, 126, 249 ; extern unsigned short ned_plata (int zarade [ ]); main ( ) printf ("Nedeljna plata = % u", ned_plata (zarade)); ned_plata.asm ima sledei oblik .MODEL MEDIUM .CODE .PUBLIC _NED_PLATA ; ovom procedurom se sabiraju pet bajtova ; na kraju suma se ~uva u registar AX _NED_PLATA PROC FAR Push BP ; sa~uvaj BP Mov BP,SP Push SI ; sa~uvaj SI Sub AX, AX Mov CX, 5 ; broja~ bajtova Mov SI, [BP+6] PONOVI : Add AL, [SI] ; dodaj dnevnu zaradu Adc AH, 0 Inc SI ; inkrementiraj pokaziva~ na Inc SI ; narednu zaradu Loop PONOVI Pop SI Pop BP Ret _NED_PLATA Endp End

Slika 2.43 : Program za odredjivanje nedeljne plate

Test pitanje 2.56

Kako se vri povezivanje rutina na asemblerskom jeziku sa C-om? Odgovor Pravila koja va`e kod povezivanja Microsoftovog Quick C sa MASM asemblerskim rutinama su sledea: 1. Proveri da li procedura na asemblerskom jeziku deklarie proceduru kao PUBLIC. Ime procedure treba da po~ne simbolom "_". Na primer, ako se procedura u C-u zove "mika" tada se ona u asembleru mora nazvati "_mika". Ako je memorijski model SMALL tada procedura u asembleru treba da je NEAR, a za slu~aj da je MEDIUM procedura traba da je tipa FAR. 2. U programu napisan na C-u deklarii proceduru kao external.

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-67

3. Asembliraj program na asemblerskom jeziku sa MASM kako bi se generisao objektni fajl, kao na primer mika.obj. 4. Kompajliraj program na C-u kako bi se generisao objektni fajl, kao na primer program.obj. (Quick C inicijalno generie memorijski model MEDIUM). 5. Pove`i oba objektna fajla u jedan izvrivi C>link program.obj _ mika.obj Kod Borlandovog C++ oni se povezuju zajedno na sledei na~in C > bcc program.C mika.asm Za vie detalja o ovoj problematici ~itaocu se preporu~uje da konsultuje izvornu literaturu Microsoft-a i Borlanda

Test pitanje 2.57

Potrebno je da se izvri grananje na adresi ADR1 ako je LS bit pozicija operanda, koji se ~uva u 16-bitnom registru R1, jednaka 1. Pokazati kako se ova aktivnost mo`e izvesti korienjem instrukcija: TEST i BNZ Napomena: efekat TEST instrukcije je sledei TEST Rx,Ry,Rz ; if Ry =Rz then Z=1, else Z=0 Efekat instrukcije BNZ (branch if not zero) je BNZ LAB1 ; if Z=0 goto LAB1, else continue

Test pitanje 2.58

Neka su zadata dva 8-bitna broja A=0011 0001 i B=10011100 (a) Odrediti decimalni ekvivalenat za svaki broj usvajui da su oni : (1) neozna~ene celobrojne vrednosti; i (2) ozna~ene celobrojne vrednosti. (b) Sabrati oba binarna broja i interpretirati sumu, usvajui da su oni: (1) neozna~ene; i (2) ozna~ene celobrojne vrednosti. (c) Nakon operacije sabiranja odrediti vrednost statusnih markera C (carry), Z (zero), N (sign) i V (overflow). (d) Koja e, od instrukcija uslovnog grananja (Slika 2.44), imati uslov true (istinit) nakon izvrenog sabiranja.

Uslov grananja mnemanik test uslov branch if zero BZ Z=0 branch if not zero BNZ Z=0 branch if carry BC C=1 branch if not carry BNC C=0 branch if minus BN N=0 branch if plus BNN N=0 branch if overflow BV V=1 branch if not overflow BNV V=0

Slika 2.44 Instrukcije uslovnog grananja i stanje uslovnih markera Napomena: Smatrati da operaciju sabiranja izvodi hipoteti~ki procesor.

Test pitanje 2.59

Lokacija na vrhu magacina, TOS, sadr`i vrednost 4130. Pokaziva~ magacina, SP, ima vrednost 3600. Instrukciju tipa CALL PP1 ~ine dve re~i. Prva re~ predstavlja opkôd i nalazi se na adresi 1200, a druga re~ ~ija je vrednost 2500 predstavlja po~etnu adresu potprograma PP1 i nalazi se na adresi 1202. Kakvi su sadr`aji PC-a, SP-a i TOS-a :

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-68

(a) pre nego to se instrukcija CALL PP1 pribavi iz memorije

(b) nakon izvrenja instrukcije CALL PP1

(c) nakon povratka iz procedure

Test pitanje 2.60 Neka je zadat 8-bitni operand C=11001100. Za hipoteti~ki procesor napisati nezavisne sekvence

koje obavljaju sledee operacije:

(a) SET b0 i b4

(b) RESET b2 i b6

(c) FLIP b1 i b7

(d) SIFT b0 i b7

Napomena:

(1) Bitovi u okviru bajta su definisani kao b7b6b5b4b3b2b1b0 gde je b7 MSB a b0 LSB;

(2) Za A=10101101 operacije FLIP b3, SIFT b5, RESET b2 SET b1 su definisane kao

FLIP b3 : A=10100101, gde A=A⊕B, i B=00001000

SHIFT b5 : A=00100000, gde A=A⋅B, i B=00100000

RESET b2 ; A=10101001, gde A=A⋅B, i B=1111 1011

SET b1 : A=10101111, gde A=A+B, i B=00000010

Test pitanje 2.61

Pokazati da jedna~ina Z+(N⊕V)=1 predstavlja potpuni test za uslov ACC≤0 kada se koristi aritmetika dvoji~nog komplementa. Na osnovu tablice istine, odredi slo`enost logike kojom se implementika uslov ACC≤0

Test pitanje 2.62

Pokazati da jedna~ina Z+(N⊕V)=0 predstavlja potpuni test za uslov ACC>0 kada se koristi aritmetika dvoji~nog komplementa. Na osnovu tablice istine, odredi slo`enost logike kojom se implementira uslov ACC>0.

Test pitanje 2.63

Pokazati da li su korektna imena testova i jedna~ine koje va`e za te testove, kada se manipulacije vre nad brojevima u dvoji~nom komplementu. Ime testa jedna~ina Carry set C=1 Carry clear C=0 Overflow V=1 no overflow V=0 negative N=1 positive N=0 (ACC)=0 Z=1 (ACC)≠0 Z=0 (ACC)>0 Z+(N⊕V)=0

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-69

(ACC)<0 (N⊕V)=1 (ACC)≥0 (N⊕V)=0 (ACC)≤ 0 Z+(N⊕V)=2 (ACC)>(B) (C+Z)=0 (ACC)<(B) (N⊕V)=1 (ACC)≥(B) C=0 (ACC)≤(B) (C+Z)=1

Test pitanje 2.64

U sledeem programu napisanom na asemblerskom jeziku mikroprocesora 80x86 popuniti blanko mesta. Glavni program definie podatke i poziva drugi modul koji sabira 5 bajtova podataka, a zatim ~uva rezultat. Napomena: Neka blanko mesta mogu biti suvina

.MODEL SMALL

.STACK 100h

.DATA

.PUBLIC ______, _______ POD1 DB 16,14,27,36,12 REZUL DW ?

.CODE EXTRN ________:FAR

POC: MOV AX,@POD1 MOV DS,AX CALL SUMA MOV AH,4Ch INT 21h END ________

; u drugom fajlu postoji modul za sabiranje 5 bajtova podataka

.MODEL SMALL _______POD1:BYTE _______REZUL:WORD

BROJ EQU 5 .CODE _______SUMA

SUMA PROC ______ MOV BX,OFFSET POD1 SUB AX,AX MOV CX,BROJ

_______: ADD AL,BYTE PTR[BX] ADC AH,0 INC BX LOOP PONOVI MOV REZUL,AX RET

_______ ENDP END ______

Test pitanje 2.65

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-70

Neka postoje ~etiri posebna modula ~ija su segmentna imena KODS1, KODS2, KODS3 I KODS4, respektivno. Ulazna ta~ka KODS1 je 00060h a mapa koja je dobijena nakon procesa linkovanja je sledeeg oblika.

Start Stop Length Name 00060 ---------- 0000Bh KODS1

--------- ---------- 00014h KODS2 --------- ---------- 00025h KODS3 --------- ---------- 00041h KODS4

(a) popuniti blanko polja ako su svi segmenti definisani kao PARA (b) popuniti blanko polja ako su svi segmenti definisani kao WORD

Zadatak 2.38

Kreirati program na asemblerskom jeziku mikroprocesora 80x86 koga ~ine sledee komponente: (a) U glavnom programu su definisane dve vrednosti: 1228 i 52400 (b) Glavni program poziva dva posebna modula, i predaje vrednosti (prenosi parametre) preko magacina. (c) U prvom modulu vri se mno`enje oba broja, a rezultat ponovo se vraa nazad glavnom modulu. (d) U drugom modulu vri se deljenje oba broja i predaje se glavnom programu koli~nik i ostatak. (e) Ukazati na sadr`aj magacina u toku izvrenja svakog modula ako je neposredno pre prve instrukcije CALL u glavnom programu sadr`aj registra SP=FFF8h.

Zadatak 2.39

Koristei 80x87 instrukcije, kreirati program za izra~unavanje izraza: z=(x2+y2)1/2, gde su x=3,12 a y=5,43.

Zadatak 2.40

Koristei 80x87 instrukcije, kreirati program za izra~unavanje izraza: y=2x2+5x+12,34, za x=1,25.

Zadatak 2.42

Koristei 80x87 instrukcije, kreirati program za izra~unavanje: 3(πr3)/4 za r=25,5.

Test pitanje 2.66

Ukazati koji se adresni na~ini rada za izvorini i odredini operand koriste kod svake od nabrojanih instrukcija instrukcija adresni na~in rada za drugi

izvorini i odredini operand adresni na~in rada za prvi izvorini operand

MOV A,B direktno memorijski direktno memorijski LD A,R3 direktno memorijski registarsko direktno LD R3,A registarsko direktni direktno memorijski LDI R3,#413 registarsko direktni neposredni MOV R4,D registarsko direktni direktno memorijski IN AL,D8 registarsko direktni direktni ADD (R0),R2 registarsko direktni registarsko direktni

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-71

(odgovor je tamnije rafirani deo) Test pitanje 2.67 Napisati programsku sekvencu za impementaciju izraza A = (B+C)*(D+E) kod 3-, 2-, 1- i 0-adresnih maina. U toku programiranja pridr`avati se sledeeg pravila: Izra~unavanje izraza ne sme da promeni vrednosti njegovih operanada.

Odgovor T-je memorijska lokacija gde se ~uva privremeno promenljiva 3-adresna 2-adresna 1-adresna 0-adresna ADD A,B,C LDA A,B LDA A PUSH D ADD T,D,E ADD A,C ADD E PUSH E MPY A,A,T LDA T,D STA T ADD ADD T,E LDA B PUSH C MPY A,T ADD C PUSH B MPY T ADD STA A MPY POP A

Test pitanje 2.68

Nezavisno od tipa maine, strukture registara CPU-a, i prirode instrukcija, ta svaki skup instrukcija mora da specificira, tj. koja kôdna polja mora da sadr`i svaka instrukcija?

Odgovor Svaka instrukcija eksplicitno ili implicitno mora da sadr`i kôdna polja pomou kojih se spcificira: (1) koja operacija treba da se obavi, tipi~ni primeri su ADD, MOV, LDA, SUB,... (2) gde se nalazi operand ili operandi ako postoje: operand ili operandi se mogu ~uvati u registrima CPU-a, memoriji, ili U/I portovima. Lokacija operanda se mo`e specificirati eksplicitno kao to je memorijska adresa, registar CPU-a, ili da se specificira implicitno u okviru opkôda kao to je akumulator kod jedno-adresnih maina, ili magacin kod nulto-adresnih. (3) gde smestiti rezultat, ako postoji - lokacija rezultata na sli~an na~in kao i lokacija operanda se mo`e eksplicitno ili implicitno specificirati. (4) gde se nalazi naredna instrukcija - in-line kôd je sekvenca instrukcija bez eksplicitnog grananja, a kod instrukcija koje menjaju tok programskog izvrenja Branch ili Jump adresa mora biti zadata kao deo tekue instrukcije. Instrukcija Skip predstavlja izuzetak - adresa preskoka (skip) je implicitna, tj. to je adresa instrukcije nakon naredne instrukcije.

Test pitanje 2.69

Dati kratak opis sredstava koji se koriste od strane programera na asemblerskom jeziku.

Odgovor Sredstva koja programeri na asemblerskom jeziku koriste su: (1) editor - koristi se za ediciju izvornog kôda (2) asembler - omoguava programeru da od programa napisanih na asemblerskom jeziku generie programe na mainskom jeziku. Prevodi iskaze asemblerskog jezika u binarne ekvivalente.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-72

(3) linker - povezuje posebno asemblirane module u jedinstveni modul koji je pogodan za punjenje i izvrenje (4) loader - puni izvrive binarne kôdove u memoriju i transformie neke logi~ke adrese u odgovarajue fizi~ke. (5) debugger - omoguava programeru da nadgleda (kontrolie) detalje koji se odnose na izvrenje programa (6) razvojni sistem - celina hardvera i softvera koja se koristi da podr`i razvoj novih sistema

Test pitanje 2.70

Koristei instrukcije date u sledeoj tabeli klasa instrukcije C instrukcije asemblerskog jezika kopiranje podataka a=b MOV b,a aritmeti~ko/logi~ke b=c+d*e ADD c,b,a upravlja~ke go to LAB1 BR LAB1 prevesti sledee iskaze napisane na programskom jeziku C u odgovarajue asemblerske. Usvojiti da su sve promenljive tipa Integer. a) A = (B+C) * (D+E); b) A = B*C+D*E; c) X = X+ Y; d) U = V; W = X * Y;

Odgovor Neka s i t predstavljaju memorijske lokacije u kojima se privremeno ~uvaju podaci

a) ADD B,C,s ADD D,E,t MPY s,t,A b) MPY B,C,s MPY D,E,t ADD s,t,A c) ADD X,Y,X d) MOV V,U MPY X,Y,W

Test pitanje 2.71 Stavke koje prate specifikaciju instrukcije su: a) koja operacija treba da se obavi, b) gde se nalazi operand ili operandi ako postoje, c) gde se smeta rezultat ako postoji , i d) gde se nalazi naredna instrukcija Kako treba specificirati instrukciju uslovnog grananja koja uporedjuje dva broja i obavlja grananje ako su oni jednaki?

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-73

Odgovor 1) opkod : odgovara insturkciji Branch-equal 2) operandi : gde se nalaze oba operanda koji se uporedjuju 3) rezultat : ovu stavku nije potrebno specificirati 4) naredna instrukcija : lokacija naredne instrukcije ako je uslov istinit.

Test pitanje 2.72

Objasniti zna~enje sledeih termina: (a) segment; (b) ofset; (c) grani~na adresa

Test pitanje 2.73

Koja je uloga magacina? Koja je inicijalna vrednost vrha magacina (Top of Stack - TOS) i kako se adresira magacin?

Test pitanje 2.74

U toku izvrenja programa CS=74A5h, SS=752Bh, IP=54h i SP=24h. Izra~unati adrese: (a) instrukcije koja se izvrava, i (b) tekue lokacije vrha magacina.

Test pitanje 2.75

Kakva je namena (svrha) instrukcije INTn ?

Test pitanje 2.76

Objasniti razlike izmedju kompajlera i asemblera.

Test pitanje 2.77

Objasniti razlike izmedju direktiva i instrukcija i dati po dva primera od svake.

Test pitanje 2.78

(a) Objasniti ulogu procedure (b) Kako se definie po~etak i kraj procedure? (c) U kom slu~aju procedura se definie kao FAR? (d) U kom slu~aju procedura se definie kao NEAR?

Test pitanje 2.79

Kakav e biti generisani heksadecimalni kôd za: (a) DB 34; (b) DB '34'; (c) DB 4DUP(0)

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-74

Test pitanje 2.80

Sa aspekta izvrenja koja razlika postoji izmedju sledee dve instrukcije? ADD CX,2548h ADD CX,[2548h]

Test pitanje 2.81

Sa ta~ke gledita izvrenja ukazati na razlike izmedju sledee dve instrukcije ADD BX,25 ADD [BX],25

Test pitanje 2.82

Objasniti koju aktivnost obavlja sledea instrukcija ADD DX,[BX+SI+8]

Test pitanje 2.83

Kod specifikacije sledeeg iskaza postoji greka ADD [BX],[DI] (a) Izvriti identifikaciju greke (b) Objasniti kako se mo`e ispraviti greka

Test pitanje 2.84

Za zadate definicije podataka pronai greke u iskazima, i obaviti odgovrajue kodiranje da bi se iste ispravile BAJTA DB 23 BAJTB DB 49 RECC DW 162 (a) ADD BAJTA,BAJTB (b) ADD AL,RECC (c) SUB BL,047Bh

Test pitanje 2.85

Objasniti kakav efekat imaju instrukcije INT i IRET na magacin.

Test pitanje 2.86

Napisati program za izra~unavanje Fibona~ijevog niza 1,1,2,3,5,8,13,... (Sa izuzetkom prva dva broja niza, svaki broj se dobija kao suma prethodna dva). Koristi instrukciju LOOP da bi postavio granicu na 12 iteracija.

Test pitanje 2.87

a) Odrediti vrednost svake fizi~ke adrese 1000H : 1234H 0100H : ABCDH

2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

2-75

A200H : 12CFH B2C0H : FA12H b) Odrediti nepoznate vrednosti za svaku fizi~ku adresu A000H :? = A0123H ?: 14DAH = 235DAH D765 : ? =BABC0H ?: CD21H = 32D21H

Test pitanje 2.88

Segment podataka je lociran po~ev od adrese A0000H do AFFFFH. Koja vrednost mora biti napunjena u DS?

Test pitanje 2.89

Odrediti vrednost fizi~ke adrese izvornog operanda za sledeu instrukciju MOV AL,1234H+[SI*2] neka je DS = 0200H a SI = 2000H

Odgovor Fizi~ka adresa = DS(0) + 1234H + (SI * 2) = 02000H + 1234H + (2000H * 2) = 07234H

Test pitanje 2.90

Identifikovati adresne na~ine rada izvorinih i odredinih operanada u sledeim instrukcijama (a) MOV AL,BL (b) MOV AX,0FFH (c) MOV [DI],AX (d) MOV DI,[SI] (e) MOV [BX]+0400H,CX (f) MOV [DI]+0400H,AH (g) MOV [BX][DI]+0400H,AL

Test pitanje 2.91

Kako se naziva proces otklanjanja greaka u programu?

Test pitanje 2.92

Koja je razlika izmedju sintaksne greke i greke u izvrenju programa?

Test pitanje 2.93

Opisati kakav se rezultat dobija nakon izvrenja sledee sekvence instrukcija. Rezultat se ~uva u registru AL.

2. Zbirka zadataka iz Mikroprocesora i mikrora~unara

2-76

MOV AL,01010101B AND AL,00011111B OR AL,11000000B XOR AL,00001111B NOT

Odgovor AL = 25H

Test pitanje 2.94

Napisati programsku sekvencu za sabiranje dve heksadecimalne cifre koje su smetene na bajt lokaciji ALFA. Rezultat smestiti u AL.

Odgovor MOV AL,ALFA MOV BL,AL MOV CL,04H ROR BL,CL AND AL,OFH AND BL,OFH ADD AL,BL

Zadatak 3.1

Neka su, za strukture staze podataka prikazane na Slici 3.1 i Slici 3.2, propagaciona kanjenja signala du` magistrale mag_A i mag_B, Tmag_A i Tmag_B iznose 10ns, a propagaciono kanjenje kroz ALU, TALU, iznosi 50ns. Vreme postavljanja signala (setup time - TS) za registre iznosi 8ns, vreme dr`anja (hold time- TH) je 5ns, a vreme dozvole rada izlaznih stepeni, TOE odgovarajuih blokova povezanih na magistrali je 5ns. Odrediti potrebno vreme da bi se obavile sledee operacije za strukture CPU-a sa Slike 3.1 i 3.2?

(a) prenos podatka iz jednog registra u drugi za sledee slu~ajeve:

(a1) u toku istog taktnog intervala istovremeno izvo|enje operacija Read i Write nad sadr`ajem istog registra nije mogue, tj. dozvoljena je samo operacija tipa (Rm)←(Rz) za z≠m.

(a2) mogua je operacija tipa (Rm)←(Rz) za sve vrednosti z i m.

(b) inkrementiranje sadr`aja programskog broja~a, tj. (PC)←(PC)+1, za slu~ajeve kada:

(b1) u istom taktnom intervalu nije dozvoljena operacija Read i Write nad sadr`ajem PC-a.

(b2) u istom taktnom intervalu je dozvoljena operacija Read i Write nad sadr`ajem PC-a.

Pored logi~kih operacija F=A and B, F=A or B, F=A xor B, F= not A, F= not B, F not (A and B), F= not (A or B), ALU je u stanju da obavlja i sledee aritmeti~ke operacije:

F=A, F=B, F=A+1, F=B+1, F=A-1, F=B-1, F=A+Cin, F=B+Cin, gde su A i B ulazi ALU-a a F izlaz ALU-a.

3. Procesori - sinteza staze podataka i upravlja~ka jedinica

ö õ

Procesori - sinteza staze podataka i upravlja~ka jedinica

2

. . .

internamagistrala B

internamagistrala A

magistrala podataka

adresna magistrala

interni pluseksterni upravlja~ki

signali

IR + dekoderinstrukcija

MDR

MAR

PC

SP

R0

Rn

Y

AddSubupravlja-

~kisignali

mag_B mag_ACin

set

reset

ALUBA

F

Slika 3.1 Interna organizacija CPU-a oko dve magistrale

Odgovor I slu~aj: Va`i za strukturu maine prikazanu na Slici 3.1.

(a1) S obzirom da u istom taktnom intervalu nije dozvoljena operacija Read i Write sadr`aja istog registra, operaciju premetanja sadr`aja registra Rm u registar Rz razbiemo u sledee dve.

a.1.1: (Rm)→(Y)

a.1.2: (Y)→(Rz)

Vreme potrebno da se obavi aktivnost, specificirana kao a.1.1, iznosi:

Ta.1.1=TOE+Tmag_A+Ts+TH

=5+10+8+5=28ns

Vreme potrebno da se obavi aktivnost a.1.2 iznosi:

Ta.1.2=TALU+Tmag_B+Ts+TH

=50+10+8+5=73ns

Izlaz registra Y direktno je povezan na ulaz A ALU-a pa zbog toga nije uzeto u obzir kanjenje TOE izlaznih stepeni registra Y.

Sistem prikazan na Slici 3.1 je sinhroni. Svaka operacija definisana je trajanjem taktnog intervala. Trajanje taktnog intervala treba da je neznatno vee od vremena trajanja najdu`e operacije. U

Procesori - sinteza staze podataka i upravlja~ka jedinica

3

konkretnom slu~aju Ta.1.2>Ta.1.1. Ako usvojimo da je trajanje taktnog intervala Tcp=75ns, tada ukupno za izvrenje operacije (Rm)→(Rz) su potrebna dva taktna intervala, tj.:

TUa1=2*Tcp=150ns

dekoderinstrukcija

IR

PC

MAR

internamagistrala

MDR

R0

.

.

.

Rn-1

Y

AddSubupravlja-

~kisignali

Z

Sistemskamagistrala

Adresnelinije

Linije zapodatke

mag_A

interni pluseksterniupravlja~kisignali

ALUBA

F

Slika 3.2 Interna organizacija CPU-a oko jedinstvene magistrale

(a2) U slu~aju da je u istom taktnom intervalu dozvoljena operacija Read i Write nad sadr`ajem istog registra, tada operacija tipa (Rm)→(Rz) za sve vrednosti m i z se obavlja za jedan taktni interval a vreme izvrenja operacije iznosi:

Ta2=TOE+Tmag_A+TALU+Tmag_B+Ts+TH

=5+10+50+10+8+5=88ns

Usvojiemo da je Tcp=90ns

U slu~aju a.1.2 ALU obavlja operaciju F=A, a u slu~aju a2 operaciju F=B.

(b1) Na sli~an na~in operacija (PC)+1→(PC) se razbija na dve operacije tipa

b.1.1: (PC)→(Y)

b.1.2: (Y)+1→(PC)

Vreme potrebno da se obavi b.1.1 iznosi:

Tb.1.1=TOE+Tmag_A+Ts+TH

Procesori - sinteza staze podataka i upravlja~ka jedinica

4

=5+10+8+5=28ns.

Vreme potrebno da se obavi b.1.2 iznosi:

Tb.1.2=TALU+Tmag_B+Ts+TH

=50+10+8+5=73ns

Ako usvojimo da je Tcp=75ns, tada pod istim uslovima kao i u slu~aju a1, ukupno vreme potrebno da se inkrementira sadr`aj PC-a iznosi:

Tub1=2*Tcp=150ns

(b2) Kada je u istom taktnom intervalu dozvoljena operacija Read i Write nad sadr`ajem istog registra, ukupno vreme izvrenja operacije (PC)+1→(PC) iznosi:

Tb2=TOE+Tmag_A+TALU+Tmag_B+Ts+TH

=5+10+50+10+8+5=88ns.

Usvojiemo da je Tcp=90ns.

II slu~aj koga e mo analizirati se odnosi na strukturu maine prikazanu na Slici 3.2.

Prenos podataka tipa (Rm)→(Rz) mora da se ostvari u dva taktna intervala (jedinstvena je magistrala za prenos podataka), a aktivnosti su tipa:

k11: (Rm)→(Z)

k12: (Z)→(Rz)

Odgovarajua vremena bie:

Tk11=TOE+Tmag_A+TALU+Ts+TH

=5+10+50+8+5=78ns

Tk12=TOE+Tmag_A+Ts+TH

=5+10+8+5=28ns

Iz istih razloga kao i u prethodnom slu~aju (taktna frekvencija je identi~na za oba slu~aja i usvajamo da iznosi Tcp=80ns), tako da ukupno vreme potrebno da se izvri operacija je:

Tuk1=2*Tcp=160ns

ALU u ovom slu~aju obavlja operaciju F=B

Operacija tipa (PC)→(PC)+1 ~ine sledee dve aktivnosti

k21: (PC)+1→(Z)

k22: (Z) →(PC)

Odgovarajua vremena bie:

Tk21=TOE+Tmag_A+TALU+Ts+TH

=5+10+50+8+5=78ns

ALU obavlja operaciju F=A+1 za:

Tk22=TOE+Tmag_A+Ts+TH

=5+10+8+5=28ns.

Ako usvojimo da je Tcp=80ns, tada ukupno za izvrenje operacije (PC)→(PC)+1 potrebno je vreme od

Tk2=2*Tcp=160ns

Procesori - sinteza staze podataka i upravlja~ka jedinica

5

Zadatak 3.2

Analizirajmo izvrenje instrukcije Add R1,Broj,R1 za strukturu staze podataka prikazane na Slici 3.3a). Upravlja~ka sekvenca ove instrukcije definisana je na Slici 3.3 c). CPU se taktuje frekvencijom 10MHz. Koliko dugo CPU treba da ~eka (Wait for Ready) u koracima 2 i 5, ako usvojimo da se ~itanje memorije obavlja za 450ns? Koliki se procenat vremena CPU nalazi u pasivnom stanju (iddle state) u toku izvrenja ove instrukcije?

ALU je u stanju da obavlja sledee operacije : F=A, F=B, F=A+B, F=B+Cin, F=A+Cin, F=A-B, F=A-Cin, F=B-Cin.

Napomena: U toku istog taktnog intervala (vreme izvrenja jedne mikrooperacije) istovremeno izvrenje operacija Read i Write nad sadr`ajem istog registra nije dozvoljeno. Usvojimo da se signal Read u normalnom re`imu rada aktivira na sredini taktnog intervala 1 (4) a deaktivira na sredini taktnog intervala 2 (5). Neka trajanje svake mikrooperacije iznosi 1 taktni interval. Princip upravljanja operacijama Upis i ^itanje sadr`aja registara sad`an je na Slici 3.3 b).

Odgovor Pri taktnoj frekvenciji od 10MHz trajanje taktnog intervala iznosi tc=100ns. U normalnom re`imu rada impuls Read traje 100ns. Imajui u vidu da je vreme pristupa memoriji 450ns, da bi pro~itali validni podatak iz memorije potrebno je ubaciti 4 stanja ~ekanja (4tw). Tako da je ukupno vreme pristupa memoriji, tACU, sada jednako:

tACU=tc+4tw=5tw=500ns, gde je tw=tc=100ns.

Odavde se mo`e videti da je tACU za 50ns du`e od potrebnog vremena pristupa memoriji.

IR

dekoder instrukcija +upravlja~ka logika

Y

kam em oriji

adresnam agistrala

m agistralapodataka

Z

A ddSubupravlja~k

isignaliA LU -a

M D R

M A R

PC

SP

R0

R n-2

Ci

reset

set

C in

A L UBA

F

interniupravlja~kisignali

internam agistrala

a) Organizacija staze podataka CPU-a oko jedinstvene interne magistrale

Procesori - sinteza staze podataka i upravlja~ka jedinica

6

R(i-1)

Y

Z

interna magistralaCPU-a

R(i-1)in

R(i-1)out

YinYout

Cin

Zin

Zout

ALUBA

F

b) princip upravljanja upisom i ~itanjem sadr`aja registara

korak akcija 1. PCout, MARin, Read, Clear Y, Set

Cin, F=B+Cin, Zin 2. Zout, PCin, Wait for READY 3. MDRout, IRin 4. Adresno_polje_IRout, MARin, Read 5. R1out, Yin, Wait for READY 6. MDRout, F=A+B, Zin 7. Zout, R1in, End c) Upravlja~ka sekvenca za izvrenje instrukcije Add sadr`aja

memorijske lokacije BROJ sa sadr`ajem registra R1 i smetaj rezultata u registar R1.

Slika 3.3: Organizacija CPU-a, princip upravljanja i sekvenca izvrenja operacije Add.

Test pitanje 3.1

Za strukturu procesora sa Slike3.3a) (zadatak 3.2) izvriti analizu na nivou mikrooperacija aktivnosti koje se obavljaju u toku ciklusa pribavljanje-re~i-iz-memorije. Usvojimo da se adresa memorijske lokacije kojoj se pristupa nalazi u registru R1, a da podatak koga ~itamo smetamo u registar R2.

Napomena: Usvojimo da se impuls Read generie u toku drugog taktnog intervala, stanje na liniji Ready testira na sredini treeg taktnog intevala, kada podatak nije spreman ubacuju se stanja ~ekanja, a ako je podatak spreman upisuje se u MDR na kraju treeg taktnog intervala

Procesori - sinteza staze podataka i upravlja~ka jedinica

7

Odgovor korak akcija 1. R1out, MARin 2. Read 3. Wait for Ready, MDRin 4. MDRout, R2in, End

Napomena: Vreme trajanja koraka 3 zavisi od vremena pristupa memoriji.

Test pitanje 3.2

Za strukturu procesora sa Slike 3..3 a) (zadatak 3.2), izvriti analizu na nivou mikrooperacija aktivnosti koje se obavljaju u toku ciklusa upis-re~i-u-memoriju. Usvojimo da se re~ koju treba memorisati ~uva u R2, a adresa memorijske lokacije gde treba smestiti tu re~ nalazi u R1.

Napomena: Usvojimo da se impuls Write generie u toku drugog taktnog intervala, stanje na liniji Ready se testira na sredini treeg taktnog intervala, a podatak upisujemo u memoriju na kraju treeg taktnog intervala.

Odgovor korak akcija 1. R1out, MARin 2. R2out, MDRin,

Write 3. Wait for Ready,

End Napomena: Treba ukazati da se aktivnosti 1 i 2, ako to arhitektura dozvoljava, mogu izvoditi paralelno.

Test pitanje 3.3

Za strukturu procesora sa Slike 3.3 a), iz zadatka 3.2, izvriti analizu ciklusa aritmeti~ke ili logi~ke operacije. Ilustracije radi ciklus sabiranja sadr`aja registra R1 sa sadr`ajem registra R2 i smetaj rezultata u registar R3 imae sledei oblik:

korak akcija 1. R1out, Yin 2. R2out, F=A+B,

Zin 3. Zout, R3in,

End

Test pitanje 3.4

Za strukturu procesora sa Slike 3.3 a), iz zadatka 3.2, odrediti upravlja~ku sekvencu koja va`i kod izvrenja instrukcije bezuslovnog grananja. Adresa grananja se dobija sabiranjem ofseta X koji je specificiran u okviru adresnog polja instrukcije grananja sa tekuom vrednou PC-a.

Odgovor korak akcija 1. PCout, MARin, Read, Clear Y, SetCin,

F=B+Cin, Zin 2. Zout, PCin, Wait for Ready 3. MDRout, IRin 4. PCout, Yin

Procesori - sinteza staze podataka i upravlja~ka jedinica

8

5. Adresno_polje_IRout, F=A+B, Zin 6. Zout, PCin, End

Test pitanje 3.5

Za strukturu procesora sa Slike 3.3 a), iz zadatka 3.2, odrediti upravlja~ku sekvencu koja va`i kod izvrenja instrukcije uslovnog grananja tipa BRN (Branch on Negative). Adresa grananja se dobija sabiranjem ofseta X koji je specificiran u okviru adresnog polja uslovne instrukcije grananja sa tekuom vrednou PC-a.

Odgovor korak akcija 1. PCout, MARin, Read, Clear Y, Set Cin,

F=B+Cin, Zin 2. Zout, PCin, Wait for Ready 3. MDRout, IRin 4. PCout, Yin, if not N = True then End 5. Adresno polje_IRout, F=A+B, Zin 6. Zout, PCin, End

Zadatak 3.3

Napisati sekvencu mikrooperacija potrebnih da struktura sa Slike 3.2 obavi sledee operacije:

saberi sadr`aj memorijske lokacije BROJ sa sadr`ajem registra R1 i sadr`aj smesti u BROJ.

saberi sadr`aj memorijske lokacije BROJ sa sadr`ajem registra R1 i sadr`aj smesti u R1

Saberi sadr`aj memorijske lokacije ~ija se adresa nalazi na memorijskoj lokaciji BROJ sa sadr`ajem registra R1 a rezultat smesti u R1.

(a) Ponoviti aktivnosti pod (a) i (b) za strukturu prikazanu na Slici 3.4. Usvojiti da, u optem slu~aju, instrukciju ~ine n re~i i da se svaka re~ nalazi u posebnoj memorijskoj lokaciji. Prva re~ instrukcije uvek specificira operaciju i adresni na~in rada, a naredne sadr`e adrese memorijskih lokacija izvorinih i odredinih operanada.

Napomena: U toku jednog taktnog intervala istovremeno izvrenje operacija Read i Write nad sadr`ajem istog registra nije dozvoljena.

Odgovor a) format instrukcija Add BROJ,BROJ,R1 je oblika:

opkôd

memorijska adresa prvog izvorinog i odredinog operanda

sekvenca mikrooperacija karakteristi~nih za izvrenje operacije Add BROJ,BROJ,R1; (BROJ)←(BROJ)+(R1) za sistem sa Slike 3.2, je oblika:

korak akcija 1. PCout, MARin, Read,

F=B+1, Zin 2. Zout, PCin, Wait za

Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B,

Procesori - sinteza staze podataka i upravlja~ka jedinica

9

Zin 5. Zout, PCin, Wait za

Ready 6. MDRout, Yin 7. R1out, F=A+B, Zin 8. Zout, MDRin 9. PCout, MARin, Write,

F=B+1, Zin 10. Zout, PCin, Wait za

Ready, End b) sekvenca mikrooperacija karakteristi~na za izvrenje operacije Add R1,R1,BROJ; (R1)←(R1)+(BROJ) za sistem sa Slike 3.2, je oblika:

korak akcija 1. PCout, MARin, Read,

F=B+1, Zin 2. Zout, PCin, Wait za

Ready 3. MDRout, IRin 4. PCout, MARin, Read,

F=B+1, Zin 5. Zout, PCin, Wait za

Ready 6. MDRout, Yin 7. R1out, F=A+B, Zin 8. Zout, R1in, End

c) sekvenca mikrooperacija karakteristi~nih za izvrenje operacije Add R1,@(BROJ),R1; (R1)←((BROJ))+R1, za sistem sa Slike 3.2, je oblika:

korak akcija 1. PCout, MARin, Read,

F=B+1, Zin 2. Zout, PCin, Wait za

Ready 3. MDRout, IRin 4. PCout, MARin, Read,

F=B+1, Zin 5. Zout, PCin, Wait za

Ready 6. MDRout, MARin, Read 7. R1out, Yin, Wait za

Ready 8. MDRout, F=A+B, Zin 9. Zout, R1in, End

d1) za strukturu sa Slike 3.4, sekvenca mikrooperacija karakteristi~nih za izvrenje operacije Add BROJ,BROJ,R1, je oblika:

korak

akcije

1. PCout, MARin, Read,F=B+1,

Procesori - sinteza staze podataka i upravlja~ka jedinica

10

Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read,

F=B+1, Zin 5. Zout, PCin, Wait za Ready,

R1out, Yin 6. MDRout, F=A+B, Zin 7. Zout, MDRin, Write 8. Wait za Ready,End

d2) Za strukturu sa Slike 3.4, sekvenca mikrooperacija karakteristi~nih za izvrenje operacije Add R1,BROJ,R1 je oblika:

korak akcije 1. PCout, MARin, Read, F=B+1,

Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B+1,

Zin 5. Zout, PCin, Wait za Ready,

R1out, Yin 6. MDRout, F=A+B, Zin 7. Zout, R1in, End

Procesori - sinteza staze podataka i upravlja~ka jedinica

11

. . .

internamagistrala B

internamagistrala A

magistrala podataka

adresna magistrala

interni pluseksterni upravlja~ki

signali

IR + dekoderinstrukcija

MDR

MAR

PC

SP

R0

Rn

Y

AddSubupravlja-

~kisignali

mag_B mag_ACin

set

reset

ALUBA

F

Z

Slika 3.4: Interna oranizacija CPU-a oko dve magistrale

Zadatak 3.4

Na Slici 3.5 prikazan je deo interne organizacije CPU-a. Prenos podataka izme|u obe magistrale mag_1 i mag_2 ostvaruje se preko ALU-a. ALU je u stanju da obavlja i sledee operacije F=A, F=B, F=A+1, F=B+1, F=A-1, F=B-1, gde su A i B ulazi ALU-a, a F izlaz ALU-a.

Napisati sekvencu mikrooperacija koja je karakteristi~na za fazu pribavljanja i izvrenja instrukcije JSR (Jump to Suboutine). Prva re~ je opkôd, a druga predstavlja po~etnu adresu potprograma. Povratna adresa se smeta u magacin. Na vrh magacina pokazuje registar SP.

Odgovor Sekvenca mikroperacija ima sledei oblik:

korak akcije 1. PCout, MARin, Read,

F=B+1, Zin 2. Zout, PCin, Wait for

Ready 3. MDRout, IRin 4. PCout, MARin, Read,

F=B+1, Zin

Procesori - sinteza staze podataka i upravlja~ka jedinica

12

5. Zout, PCin, Wait for Ready

6. MDRout, Yin 7. SPout, F=B-1, Zin 8. Zout, SPin 9. PCout, F=B, Zin 10. Zout, MDRin, SPout,

MARin, Write 11. F=A, Zin, Wait for Ready 12. Zout, PCin, End

. . .

ka memoriji i U/Ipodsistemu

magistrala podataka

adresna magistrala

interni pluseksterni upravlja~ki

signali

IR + dekoderinstrukcija

MDR

MAR

PC

SP

R0

Rn-2

Y

AddSubupravlja-

~kisignali

mag_2 mag_1Cin

set

reset

ALUBA

F

Z

Slika 3.5 : Interna organizacija CPU-a

Napomena: U toku istog taktnog intervala (mikrooperacija) istovremeno izvrenje operacija Read i Write nad sadr`ajem istog registra nisu dozvoljene.

Zadatak 3.5

Interna organizacija CPU-a prikazana je na Slici 3.6. Ulazi ALU-a, registri i magistrale mag_A i mag_B su obima 32-bita. Spoljna magistrala za podatke je po obimu 16-bitna. Na~in prenosa podataka izme|u MDR-a i spoljne memorije je sledei: podatak tipa bajt uvek se prenosi preko LS dela MDRL-a, a MS deo MDRL-a u zavisnosti od tipa operacije popunjava se nulama ili se znakovno proiruje na 16/32 bita. Podatak tipa re~ (16 bitova) uvek se prenosi preko MDRL-a, a podatak tipa duga re~ (32 bita) prenosi se preko MDR-a tako da se prvo prenose LS 16 bitova preko MDRL-a a nakon toga MS 16 bitova preko MDRH-a. Opkd instrukcije je 16-bitni. Ofset adresa i direktna adresa izvorinih i odredinih operanada specificiraju se u okviru druge ili tree re~i

Procesori - sinteza staze podataka i upravlja~ka jedinica

13

instrukcije. Ulaz B ALU-a povezan je preko multipleksera MUX na mag_A ili konstantu 2. Neka postoje dve grupe od po osam registara, poznatih kao D0-D7 registri za podatke i R0-R7 adresni registri.

Odrediti upravlja~ku sekvencu sledeih instrukcija:

a) Sub.W 200(R3),D4 b) Cmp.W (R2)+,D1 Odgovor Operacija je tipa D4-M(R3+200)→D4, a odgovorajua sekvenca je oblika:

korak akcije komentar 1. PCout, MUX0, F=B, MARin, Yin,

Read ; pribavi se opkôd instrukcije

2. Yout, MUX1, F=A+B, PCin, Wait for Ready

;

3. MDRLout, IRin ; 4. PCout, MUX0, F=B, MARin, Yin,

Read ; druga re~ instrukcije

5. Yout, MUX1, F=A+B, PCin, Wait for Ready

; ofset=200

6. MDRLout, MUX0, F=B, Yin ; privremeno se smeta u Y

7. R3out, MUX0, Yout, F=A+B, MARin, Read

; formira se M(R3+200)

8. D4out, MUX0, F=B, Yin, Wait for Ready

; D4→Y

9. MDRLout, MUX0, F=A-B, MARin, D4in

;D4-M(R3+200) →D4

Operacija je tipa D1-(R2), R2+2→R2, a sekvenca:

korak akcije komentar 1. PCout, MUX0, F=B, MARin, Yin,

Read ; pribavljanje opkôda instrukcija

2. Yout, MUX1, F=A+B, PCin, Wait for Ready

;

3. MDRLout, IRin ; 4. R2out, MUX0, F=B, Yin, MARin,

Read ; prihvata se podatak sa lokacije

5. Yout, MUX1, F=A+B, R2in, Wait for Ready

; M(R2), inkrementira R2

6. D1out, MUX0, F=B, Yin ; i D1→Y 7. Yout, MDRLout, F=A-B, Set

markeri uslova ; D1-M(R2)

Procesori - sinteza staze podataka i upravlja~ka jedinica

14

32

dekoderinstrukcija

IR

MAR

MDRH | MDRL

PC

R0

R7

InternamagistralaA

Internamagistrala

B

adresnelinije

linijezapodatke

D0

D7

2

32 32

Y

16

M 0 U X 1

mag_Amag_A

upravlja~kisignali

ALUBA

F

Slika 3.6 : Interna organizacija 32-bitnog CPU-a organizovanog oko dve magistrale

Zadatak 3.6

Interna organizacija 32-bitnog CPU-a prikazana je na Slici 3.7. Kao to se vidi sa Slike 3.7, svi interni registri i putevi podataka su obima 32-bita, dok je magistrala podataka kojom se CPU povezuje sa memorijom 16-bitna. Registar MDR ~ine dve polovine MDRH i MDRL, oba povezana na magistralu za podatke. Postoje dve operacije ~itanja RDH i RDL, koji ~itaju podatke iz memorije i pune ih u MDRH i MDRL, respektivno. Registar Y se mo`e postaviti na vrednost 0, 2 ili 4. Bilo koji od registara u istom upravlja~kom koraku (mikrooperaciji) se mo`e pojaviti kao izvorite i kao odredite, kao na primer R2out, Set Y=4, Add, R2in tj. sabira se 4 sa sadr`ajem registra R2.

Napisati upravlja~ke sekvence koje su potrebne za implementaciju sledeih CPU-ovih instrukcija:

a) Move.W #100,D1 b) Add.W (A2),D3 c) Add.B (A2),D3 gde .B/.W/.L ukazuju na obim operanda tipa bajt, re~ i dupla re~.

Odgovor a) Move.W #100,D1 ; 100→D1 Prva 16-bitna re~ predstavlja opkôd instrukcije a druga neposredni podatak 100.

korak

akcije

1. PCout, MUX-a, Set Y0, F=A+B, Yin,

Procesori - sinteza staze podataka i upravlja~ka jedinica

15

MARin, ReadRDL 2. Yout, MUX2, F=A+B, Yin, Wait for

Ready 3. MRDLout, IRin 4. MUX2, Yout, F=A+B, MARin, Yin,

ReadRDH 5. Yout, MUX2, F=A+B, PCin, Wait for

Ready 6. MRDHout, MUX0, Set Y0, F=A+B, D1in.w

b) Add.W (A2),D3 korak akcije 1. PCout, MUX0, Set Y0, F=A+B, Yin,

MARin, ReadRDL 2. Yout, MUX2, F=A+B, Yin, Wait for

Ready 3. MRDLout, IRin 4. MUX2, Yout, F=A+B, PCin 5. A2out, MUX0, Set Y0, F=A+B, MARin,

ReadRDH 6. D3out.w, MUX0, Set Y0, F=A+B, Yin,

Wait for Ready 7. MRDHout, MUX0, Yout, F=A+B, D3in.w

c) Add.B (A2),D3 korak

akcije

1. PCout, MUX0, Set Y0, F=A+B, Yin, MARin, ReadRDL

2. Yout, MUX2, F=A+B, Yin, Wait for Ready

3. MDRLout, IRin 4. MUX2, Yout, F=A+B, PCin 5. A2out, MUX0, Set Y0, F=A+B, MARin,

READRDH 6. D3out.B, MUX0, Set Y0, F=A+B, Yin,

Wait for Ready 7. MRDHout, MUX0, Yout, F=A+B, D3in.B

Procesori - sinteza staze podataka i upravlja~ka jedinica

16

32

dekoderinstrukcija

IR

MAR

MDRH | MDRL

PC

R0

R7

InternamagistralaA

Internamagistrala

B

adresnelinije

linijezapodatke

D0

D7

2

32 32

Y

16

M 0 U 1 X 2 3

mag_Amag_A

upravlja~kisignali

ALUBA

F

0

4

20

4

Slika 3.7 : Modifikovana interna organizacija 32-bitnog CPU-a organizovana oko dve magistrale

Zadatak 3.7

Za strukturu staze podataka prikazanu na Slici 3.8, napisati upravlja~ku sekvencu koja je potrebna za implementaciju sledeih CPU-ovih instrukcija

(a) JSR $30A16 (b) SUB.W $76C(A5),D0 Napomena: TEMP je registar za privremeno ~uvanje podataka. Usvojiti da se kao pokaziva~ magacina, SP, koristi registar R7. Simbol $ ukazuje da je neposredni podatak heksadecimalni broj.

Odgovor a) Implementacija instrukcije JSR $30A16

Format instrukcije koji se ~uva u memoriji je sledeeg oblika:

Procesori - sinteza staze podataka i upravlja~ka jedinica

17

opkôd JSR

0A16 LS deo adreseuslu`nog potprograma0003 MS deo adrese

uslu`nog potprogramaopkôd naredne instrukcije

tekueg programa

15 0

PC

PC+2

PC+4

PC+6

32-bitna adresauslu`ne rutine(potprograma)

Uobi~ajeno, registru R7 je dodeljena uloga pokaziva~a magacina, tj. R7=SP.

32

dekoderinstrukcija

IR

MAR

MDRH | MDRL

PC

R0

R7

InternamagistralaA

Internamagistrala

B

adresnelinije

linijezapodatke

D0

D7

2

32 32

Y

16

M 0 U 1 X 2 3

mag_Amag_A

upravlja~kisignali

ALUBA

F

0

4

20

4

TEMP

Slika 3.8: Interna organizacija 32-bitnog CPU-a oraganizovana oko dve magistrale

Procesori - sinteza staze podataka i upravlja~ka jedinica

18

korak akcije komentar

1. PCout, MUX0, Set Y0, F=A+B, Yin, MARin, ReadRDL

; pribavljanje opkoda instrukcije

2. Yout, MUX2, F=A+B, Yin, PCin, Wait for Ready

; (PC)=(PC)+2

3. MDRLout, IRin

4. MUX1, Yout, F=A+B, MARin, PCin, ReadRDL

; ~itanje LS adrese i smetanje u MDRL

5. MUX2, Yout, F=A+B,PCin, Wait for Ready

; (PC)=(PC)+2

6. PCout, MUX0, Set Y0, Yout, F=A+B, MARin, ReadRDH

; ~itanje MS adrese i smetanje u MDRH

7. PCout, MUX0, Set Y2, Yout, F=A+B, PCin, Wait for Ready

; (PC)=(PC)+2

8. MDRout, MUX0, Set Y0, Yout, F=A+B, TEMPin

; ~uvanje adrese u registar TEMP

9. R7out, MUX0, Set Y2, Yout, F=B-A, R7in, MARin, WriteDRL

; (SP)=(SP)-2

10. PCout, MUX0, Set Y0, Yout, F=A+B, MDRin, Wait for ReadyDRL

; (PC)LS→M(SP)

11. R7 out, MUX0, Set Y2, Yout, F=B-A, R7in, WriteDRH

; (SP)=(SP)-2, Adr→(PC)

12. TEMPout, MUX0, Set Y0, Yout, F=A+B, PCin, Wait for ReadyDRH, End

; (PC)MS→M(SP),

Napomena: Set Yi≡i→Y (i=0,2,4); Yin≡Mag_B→Y MUXi= signal sa ulaza i ide na izlaz multipleksera MUX (i=0,1,2,3) Aktivnost Yout mo`e biti izostavljena jer izlaz registra Y je direktno povazan na A ulaz ALU-a tako se ova aktivnost automatski podrazumeva. b) Implementacija instrukcije Sub.W $76C(A5), D0 je ekvivalentna aktivnosti (D0)=(D0)-M(A5+76Ch). Format instrukcije je sledei:

opkod Sub.W

neposredni operand 076C

PC

PC+2

korak akcije komentar

1. PCout, MUX0, Set Y0, Yout, F=A+B, Yin, MARin, ReadRDL

; pribavljanje opkôda instrukcije

2. Yout, MUX2, F=A+B, Yin, PCin, Wait for Ready

;(PC)=(PC)+2

3. MDRLout, IRin

4. MUX1, Yout, F=A+B, MARin, PCin, ReadRDH

; neposredni operand smeta se u Y

5. MUX2, Yout, F=A+B, PCin, Wait for Ready

; (PC)=(PC)+2

6. MDRHout, MUX0, Set Y0, Yout, F=A+B, MARin, TEMPin, ReadRDH

Procesori - sinteza staze podataka i upravlja~ka jedinica

19

7. A5out, MUX0, Yout, F=A+B, PCin, Wait for Ready

; M(A5+76C)→Y

8. PCout, MUX0, Set Y0, Yout, F=A+B, MARin, TEMPin, ReadRDH

9. MDRLout, MUX0, Set Y0, Yout, F=A+B, Yin

10. D0out, MUX0, Yout, F=B-A, D0in, End

Test pitanje 3.6

Kod 16-bitne bajt-adresibilne maine, nakon pribavljanja instrukcione re~i iz memorije PC treba da se inkrementira za 2. Sugerisati neku modifikaciju maine sa Slike 3..3 a) (zadatak 3.2), tako da se pojednostavi ova operacija (mikrooperacija).

Odgovor

Y

MUX

Z

+2

Selekt

0 1

Izme|u izlaza registra Y i A ulaza ALU-a ugra|uje semultiplekser MUX1 tipa 2-na-1. Na jednom od ulazaMUX1 direktno se dovodi konstantna vrednost 2 a nadrugom izlaz registra Y. Stanje signala Selekt definie kojie se od ulaza MUX1 biti prisutan na A ulazu ALU-a.

ALUBA

F

Test pitanje 3.7

Neka se od veeg broja flip-flopova prikazanih na Slici 3.9, formiraju registri CPU-a sa Slike 3.10. [ta e se desiti ako se u istom taktnom intervalu pokua izvrenje operacije R1←[R1]+Y ? Koji je tip memorijskih elemenata potreban da bi se izvrila ova operacija?

Odgovor Ako su signali Zin i Zout, prikazani na Slici 3.9, aktivni u toku celog taktnog intervala operacije sabiranja, kolo sa Slike 3.9 ponaa se kao transparentni le~ pa se, u elektri~nom smislu, zatvara sledea petlja:

R1out→mag_A→ALUbin→ALUout→mag_B→R1in

Procesori - sinteza staze podataka i upravlja~ka jedinica

20

S

R

Q

Q

Zout tro-stati~kidrajver

Zin

Din

Dout

Slika 3.9 : ulaz i izlaz jednog registarskog bita

Ovo zna~i da se, nakon prvog sabiranja, dobija R1=R1+Y. Za slu~aj da operacija sabiranja traje kratko, a trajanje taktnog intervala je znatno du`e od ukupnog vremena propagacije signala kroz petlju, pa e tada obaviti ponovno sabiranje, tako da e mo imati R1=(R1+Y)+Y. Ova konstatacija ukazuje da, ako je vreme propagacije signala kroz petlju k puta krae od trajanja taktnog intervala, tada, nakon k sabiranja, imaemo da je R1=R1+kY. Naime, kona~na vrednost koja se smeta u R1 bie zavisna od vremena propagacije signala kroz petlju i vremena trajanja taktnog impulsa. Da bi se dobio korektan rezultat u toku izvrenja ove operacije, potrebno je da flip-flop sa Slike 3.9 bude Master-Slave tipa.

Test pitanje 3.8

Kako je mogue, kod strukture sa Slike 3.10, da se u jednom taktnom intervalu izvede operacija Ri←[Ri]+[Y].

Procesori - sinteza staze podataka i upravlja~ka jedinica

21

32

dekoderinstrukcija

IR

MAR

MDRH | MDRL

PC

R0

R7

InternamagistralaA

Internamagistrala

B

adresnelinije

linijezapodatke

D0

D7

2

32 32

Y

16

M 0 U X 1

mag_Amag_A

upravlja~kisignali

ALUBA

F

Slika 3.10 Organizacija CPU-a oko dve magistrale

Odgovor Uvo|enjem master-slave flip-flopa pomou kojih se realizuju osnovne elije registara.

(Odgovor je dat u test pitanju 3.7)

Zadatak 3.8

Organizacija CPU-a oko tri magistrale mag_1, mag_2, mag_3, prikazana je na Slici 3.11. Kod arhitekture sa Slike 3.11 mogu je istovremeni prenos podataka po sve tri magistrale, kao na primer RA←[MDR] - po mag_1, RB←[Ri] - po mag_2, ALUout→MARin po mag_3.

Napisati sekvencu koraka koji su potrebni da se implementira sledea instrukcija:

Add (R8),X(R9) Usvojiti da su ovi putevi podataka 16-bitni, a bilo koja konstanta potrebna za implementaciju ove instrukcije nalazi u nekom od internih registara. Registar RB mo`e ako treba da radi u transparentnom re`imu rada. U ovom na~inu rada, podaci koji pristi`u na ulaz registra isovremeno su prisutni i na izlazu, ~ime je obezbe|eno da se podatak iz nekog registra RF polja prenese ka MAR ili MDR, i obrnuto od MDR u nekom od registara RF polja, u jednom koraku (jednom taktnom intervalu, tj. mikrooperaciji).

Napomene: (1) Aktivnost naredbe je sledeeg tipa :

Procesori - sinteza staze podataka i upravlja~ka jedinica

22

M(R9+X)+M(R8)→M(R9+X) (2) Format naredbe je sledei:

opkôd Add

ofset X

PC

PC+2

(3) RF polje CPU-a ~ine n registara vidljivih programeru, R0-Rn, i dva nevidljiva registra koji se koriste za privremeno ~uvanje podataka RT i RZ. Neki od vidljivih registara se koriste za ~uvanje konstanti i sledee su namene: R0=zero, R1=1, R2=2, R3=4, R4 se koristi kao PC, a R5 kao pokaziva~ magacina SP. (4) Upravlja~ki signal RBT postavlja registar RB u transparentni na~in rada. (5) Upravlja~ki signal Rkin upisuje podatak u registar Rk (k se odnosi na sve registre u emi), a upravlja~ki signal Rkout aktivira izlazni stepen registra Rk. (6) Upravlja~ki signal Sel A0 (Sel B0) selektuje ulaz 0 multipleksera MUXA (MUXB), a aktiviranjem signala Sel A1 (Sel B1) selektuje se ulaz 1 odgovarajueg multipleksera.

(7) ALU je u stanju da obavlja sledee operacije: F=A, F=B, F=A+B, F=A+B+Cin, F=A-B, tj. F=A+ B +Cin (8) Operacijom Set Cin postavlja se marker uslova Cin na logi~ku jedinicu, a operacijom Clear Cin brie se. (9) Read i Write se odnose na aktiviranje spoljnih signala za ~itanje i upis. (10) Wait for Ready je spoljni ulaz koga procesor testira radi zavretka operacije upis ili ~itanje.

Odgovor korak akcije komentar 1 PCout, Sel A1, RAin, Sel B1, RBT, Clear

Cin, F=B, MARin, Read ; pribavljanje opkoda

2 R2out, Sel B1, RBT, F=A+B, PCin, Wait for Ready

; (PC)=(PC)+2

3 MDRout, IRin 4 PCout, Sel A1, RAin, Sel B1, RBT, Clear

Cin, F=B, MARin, Read ; X→RA

5 R2out, Sel B1, RBT, F=A+B, PCin, Wait for Ready

; (PC)=(PC)+2

6 MDRout, Sel A0, RAin 7 R9out, Sel B1, RBT, F=A+B, MARin, RZin,

Read ; M(R9+X) →RA

8 R8out, Sel B1, RBin, Wait for Ready ; R9+X→RZ 9 MDRout, Sel A0, RAin, F=B, MARin, Read ; M(R8) →RB 10 Clear Cin, Wait for Ready 11 MDRout, Sel B1, RBT, F=A+B, RTin ;M(R8)+M(R9+X)

→RT 12 RZout, Sel B1, RBT, MARin, Write ; RT→M(R9+X) 13 RTout, Sel B1, RBT, MDRin, Wait for

Ready

14 Clear Cin, End

Procesori - sinteza staze podataka i upravlja~ka jedinica

23

dekoderinstrukcija

IR

0 1MUX A

RA

0 1MUX B

RB

Registri(RF - polje)

MDR

MAR

CinCoutspoljnjemagistrale

upravlja~kisignali

Sel A Sel Bmag_2

mag_1

mag_3

ALUBA

F

Slika 3.11 : Organizacija CPU-a oko tri magistrale

Zadatak 3.9

Za organizaciju CPU-a prikazanu na Slici 3.11, i sve napomene koje va`e iz prethodnog zadatka napisati sekvencu upravlja~kih koraka kojom se mo`e implementirati instrukcija CMP #BROJ,(R3)+.

Test pitanje 3.9

Na Slici 3.12 prikazan je blok dijagram staze podataka jednog 32-bitnog procesora.

RF polje ~ine 32 registra opte namene R0 do R31. U registru R0 uvek se ~uva 0, u registru R1 vrednost 1, a u registru R2 vrednost 4.

Procesor izvrava sledeih pet razli~itih tipova instrukcija:

• aritmeti~ko-logi~ke tipa registar-registar,

• aritmeti~ko-logi~ke tipa registar-konstranta,

• obraanje memoriji tipa Load/Store,

• uslovno grananje, i

• bezuslovno grananje.

Ukazati na format koji koristi svaka od nabrojanih instrukcija i na osnovne aktivnosti (mikrooperacije) koje se obavljaju u toku faze pribavljanja/dekodiranja kao i izvrenja nabrojanih instrukcija.

Odgovor Dijagram stanja ciklusa pribavljanje/dekodiranje prikazan je na Slici 3.13.

Procesori - sinteza staze podataka i upravlja~ka jedinica

24

Upravlja~ka jedinica

IR

PC

MAR

32 registra RF polje

MDR

S C O Zmarker registar

D_mag S1_mag S2_mag

adrese

podaci

upravlja~kisignali

ALU

B

A

F

Slika 3.12 Staza podataka jednog jednostavnog procesora.

U toku ciklusa pribavljanja instrukcije koji je identi~an za sve instrukcije, obavljaju se sledee aktivnosti:

MAR ¬ PC IR ¬ MDR PC ¬ PC + 4 Nakon faze dekodiranja, koja je identi~na za sve instrukcije, sledi faza izvrenja koja se razlikuje od instrukcije do instrukcije. A. Kod aritmeti~ko/logi~kih instrukcija tipa registar-registar, obavlja se sledea aktivnost

Rd ¬ Rs1 <operacija> Rs2 gde su Rs1 i Rs2 sadr`aji izvorinih registara, a Rd sadr`aj odredinog registra.

Sa aspekta magistrala, ova aktivnost se mo`e ras~laniti na sledee korake:

S1_mag ¬ Rs1; S2_mag ¬ Rs2 D_mag ¬ S1_mag <operacija> S2_mag

Procesori - sinteza staze podataka i upravlja~ka jedinica

25

Rd ¬ D_mag Format instrukcije imao bi oblik:

opkôd Rd Rs1 Rs2 neiskorieno

6 5 5 5 11

B. Kod aritmeti~ko logi~kih instrukcija tipa registar-konstanta imali bi sledee aktivnosti

S1_mag ¬ Rs1; S2_mag ¬ IR15-0 D_mag ¬ S1_mag <ALUop> S2_mag Rd ¬ D_mag

MAR ← PC

IR ← MDR

PC ← PC+4

dekodiranje

registar-registar

registar-konstanta

obraanjememoriji

branch

store

dekodiranje

pribavljanjeinstrukcije

izvrenje

Slika 3.13 Dijagram stanja ciklusa pribavljanje/dekodiranje

S1_mag ← Rs1S2_mag ← Rs2

D_mag ← S1_mag < ALUop > S2_mag

Rd ← D_mag

Slika 3.14 Dijagram stanja ciklusa izvrenja aritmeti~ko/logi~ke instrukcije registar-registar

Format instrukcije bi imao oblik:

Procesori - sinteza staze podataka i upravlja~ka jedinica

26

opkôd Rd Rs1 konstanta

6 5 5 16

C. Instrukcija Load/Store ima sledee karakteristike:

Kod obe instrukcije Load/Store adresa memorijske lokacije se specificira sadr`ajem izvornog adresnog registra Rs1 plus neposrednim 16-bitnim ofsetom koji je sastavni deo instrukcije.

opkôd Rd Rs1 16-bitni ofset

odredini adresni

a) Load format

opkôd Rd Rs1 16-bitni ofset

izvorini adresni

b) Store format

Aktivnosti koje se obavljaju u toku Load instrukcije su sledee (klju~ne sa aspekta razumevanja):

S1_mag ¬ Rs1; S2_mag ¬ IR15-0 D_mag ¬ S1_mag + S2_mag MAR ¬ D_mag D_mag ¬ MDR ; MDR -> S1_mag, D_mag <- S1_mag <ALU*op> Rd ¬ D_mag Napomena: <ALU*op> je operacija tipa F = A Za instrukciju Store klju~ne su sledee aktivnosti

S1_mag ¬ Rs1; S2_mag ¬ IR15-0 D_mag ¬ S1_mag + S2_mag MAR ¬ D_mag S1_mag ¬ Rd MDR ¬ S1_mag D. Tipi~ne instrukcije tipa Branch su slede:

BEQ R4,R5,L1 ; Branch to L1 if R4 = R5 BL R4,R5,L1 ; Branch to L1 if R4 < R5 BNE R4,R5,L1 ; Branch to L1 if R4 ! = R5 BGE R4,R5,L1 ; Branch to L1 if R4 >= R5 Pogodan format instrukcija je:

opkôd Rd Rs1 16-bitni ofset

odredini izvorite 1 izvorite 2

gde, za konkretni slu~aj, R4 je Rd, R5 je Rs1, a L1 = PC + 16-bitni ofset.

Kod svake od nabrojanih instrukcija Branch, ispituje se specificirani uslov. Ako je uslov istinit, izra~unava se ciljna adresa i puni u PC. Uslov grananja koji se formira na osnovu odnosa izmedju Rd i Rs1, proverava se ispitivanjem rezultata oduzimanja Rd od Rs1, na sledei na~in:

A_mag ¬ Rs1 ; B_mag ¬ Rd uslov ¬ A_mag - B_mag ; uslov se pamti postavljanjem marker-bitova S, C, O, Z Ciljna adresa se izra~unava dodavanjem 16-bitnog ofseta sadr`aju programskog broja~a.

ALUop ¬ PC + IR15-0 U sutini, kona~ni korak predstavlja punjenje PC-a ako je uslov ispunjen, na sledei na~in:

Procesori - sinteza staze podataka i upravlja~ka jedinica

27

if uslov = True then PC ¬ ALUop a kada uslov nije ispunjen, PC pokazuje na narednu instrukciju u programu.

E. Instrukcija Jump uzrokuje bezuslovnu promenu sekvence izvrenja na novu lokaciju. Tipi~an primer je instrukcija

J L1 ; Jump na L1 Format Jump instrukcije ima oblik:

opkôd 26 bitni ofset

6 26

I u ovom slu~aju koristi se PC relativno adresiranje, tj.

PC ¬ PC + IR25-0 Pored PC-relativnog adresiranja, za realizaciju Branch i Jump instrukcija mogue je koristiti i registarsko indirektno adresiranje. Format instrukcije Jump koja koristi registarsko-indirektno adresiranje ima oblik

opkôd ne koristi se Rs1 16-bitni ofset

6 5 5 16

operacija adresni registar

Tipi~ni primeri su:

J [R3] ; skok na lokaciju ~ija je adresa u R3 J 100[R3] ; skok na lokaciju ~ija je adresa u R3 plus 100 Kod instrukcije J 100[R3] obavie se sledee aktivnosti: S1_mag ¬ Rs1; S2_mag ¬ IR15-0 D_mag ¬ S1_mag + S2_mag PC ¬ D_mag

Test pitanje

Kakav je efekat sledeih instrukcija:

J L1 BEQ R3,R3,L1

Test pitanje 3.10

Tipi~na lista uslova kod arhitektura sa Slike 3.12 (Test pitanje 3.9), prikazana je na Slici 3.15. je sledea:

mnemonik uslov LL notacija BL Branch if less than <

BG Branch if greater than >

BGE Branch if greater or equal to >=

BLE Branch if less or equal to <=

BE Branch if equal ==

BNE Branch if not equal !=

Slika 3.15 Lista uslova

Procesori - sinteza staze podataka i upravlja~ka jedinica

28

Ako su poznati sadr`aji registara R3 i R4, odrediti koje odnose testiraju sekvence prikazane na Slici 3.16.

Koje uslove testiraju sledee sekvence:

kodna sekvenca uslov a) BL R3,R4,L1 R3 < R4 b) BL R4,R3,L1 R3 > R4 c) BL R4,R3,L1 R3 > =R4 BEQ R3,R4,L1 d) BL R3,R4,L1 R3 < =R4 BEQ R3,R4,L1 e) BEQ R3,R4,L1 R3= = R4 f) BL R3,R4,L1 R3 ! =R4 BL R4,R3,L1

Slika 3.16 Uslovi koji se testiraju

Odgovor Napomena: Reenje je dato na Slici 3.16 i predstavlja njen tamnije osen~eni deo.

Zadatak 3.10

Za model procesora ~ija je staza podataka prikazana na Slici 3.12, identifikovati osnovne korake karakteristi~ne za izvrenje instrukcija Call i Ret. Usvojiti da se R31 koristi kao pokaziva~ magacina, tj. R31 = SP.

Test pitanje 3.11

Ukazati na osnovne karakteristike MIN procesora.

Odgovor Dizajn procesora koji sadr`i minimalan skup logi~kih kola potrebnih za implementaciju CPU-a naziva se MIN procesor.

MIN ima dva registra koja su vidljiva programeru (Slika 3.17): (1) 8-bitni registar podataka nazvan akumulator, ACC; i (2) 14-bitni programski broja~, PC.

PC13 PC0

ACC7 ACC0

ACC

PC

Slika 3.17: Registri MIN-a vidljivi programeru

Drugi registri koji se koriste za opis MIN-a su:

MAR-memorijsko adresni registar obima 14-bita,

MDR-memorijski registar podataka obima 8-bitova,

IR-instrukcioni registar obima 16-bitova.

Procesori - sinteza staze podataka i upravlja~ka jedinica

29

Na Slici 3.18 su prikazani ovi registri kao i putevi podataka koji povezuju ove registre sa ostalim gradivnim blokovima procesora i memorije.

Memorija sistema sadr`i 214 bajtova. Osnovne memorijske operacije su:

READ- sistem pristupa lokaciji specificiranoj sadr`ajem registra MAR i kopira bajt sa te lokacije u registar MDR.

WRITE-kopira se bajt koji se nalazi u registru MDR u memorijsku lokaciju specificiranu sadr`ajem registra MAR.

8IR

15 13 7 0

7 0

07

13 0

13 0

MAR

PC

memorija

MDR

ACC

7 0

- +

ALU

8

8

8

1414

14

14 0000h bazna adresa

3FFFh max. adresa

adresapristupa

Slika 3.18 Implementacija MIN-a

Svaku instrukciju MIN-a ~ine dva bajta. Format instrukcije prikazan je na Slici 3 19. Instrukciju ~ine sledea dva polja: (a) F - dvobitno funkcijsko polje; i (b) A - 14-bitno adresno polje. Zna~enje funkcijskih kôdova prikazano je na Slici 3.20. Da bi izvrio instrukciju, procesor mora da obavi sledee osnovne korake:

G1. pribavi instrukciju G2. inkrementira PC G3. dekodira instrukciju G4. izvri instrukciju

F A

15 13 0

Slika 3.19 Format instrukcija MIN-a

operacija Funkcijski kôd Sto 0

Sub 1

Procesori - sinteza staze podataka i upravlja~ka jedinica

30

JNG 2

Slika 3.20 Funkcijski kodovi MIN-a

Ilustracije radi, aktivnosti koje se odnose na izvrenje instrukcije Sto su sledei:

korak G1

korak G2

korak G3

korak G4

D1. kopira se PC u MARD2. READ memorijaD3. kopira MDR u levu polovinu IR-aD4. inkrementira PCD5. kopira PC u MARD6. READ memorijaD7. kopira MDR u desnu polovinu IR-a

D8. inkrementira PC

D9. if bit IR15≠0 or IR14≠0, go na drugo mesto

D10. kopiraj IR13...IR0 u MARD11. kopiraj ACC u MDRD12. WRITE memorijaD13. go to korak D1

Ako napiemo istu semantiku u registar-transfer formi dobiemo mainski oblik instrukcije koji je prihvatljiviji za programera.

Neka IRH i IRL ozna~avaju vii i ni`i deo registra IR, a F i A su polja instrukcije koja se ~uvaju u IR. Simbol ":=" predstavlja operator dodele. Mikrooperacije pomou kojih se implementira instrukcija Sto su sledee:

D1. MAR:=PC; D2. READ; D3. IRH:=MDR; D4. PC:=PC+1 D5. MAR:=PC; D6. READ; D7. IRL:=MDR; D8. PC:=PC+1; D9. if F≠0 then go to na drugo mesto; D10. MAR:=A; D11. MDR:=ACC; D12. WRITE; D13. go to korak D1;

Treba ukazati da su koraci G1 i G2, tj. mikrooperacije D1...D8, identi~ni za sve MIN instrukcije.

MIN procesor ima, u svom repertoaru, samo jednu upravlja~ku instrukciju JNG-jump on negative. U toku izvrenja instrukcije JNG procesor testira sadr`aj ACC-a i, u zavisnosti od ishoda testa, mo`e da preuzme sledee aktivnosti:(a) kada uslov nije ispunjen inkrementira PC kako bi ukazao na narednu instrukciju u programu (JNG ponaa se kao ne-upravlja~ka instrukcija); (b) kada je uslov ispunjen, puni PC na adresu koja je specificirana instrukcijom JNG. Test se zasniva na vrednosti bita ACC7, tj. ako je ACC7=1 dolazi do grananja, a za slu~aj da je ACC7=0, procesor produ`ava sa izvrenjem naredne instrukcije u programu. Nakon izvrenja instrukcije Sub, u

Procesori - sinteza staze podataka i upravlja~ka jedinica

31

registar ACC upisae se razlika koju ~ine prethodni sadr`aj registra ACC i sadr`aj memorijske lokacije specificiran instrukcijom Sub, tj.

ACC←ACC'-M(A) gde: M(X) ozna~ava sadr`aj memorijske lokacije ~ija je adresa X; A se odnosi na adresu specificiranu instrukcijom Sub; ACC'-odgovara sadr`aju registra ACC pre po~etka izvrejna instrukcije.

Programska sekvenca kojom se u ACC upisuje sadr`aj memorijske lokacije X ima oblik (memorijska lokacija u kojoj se privremeno ~uva podatak nazvaemo T).

Sto T; ACC→T Sub T; ACC←ACC'-T ⇒ ACC=0 Sub X; ACC←0-X ⇒ ACC=-X Sto T; ACC→T ⇒ T=-X Sub T; ACC=ACC'-T ⇒ ACC=-X-(-X)=0 Sub T; ACC←T ⇒ ACC=-(-X)=X Ova programska sekvenca ekvivalentna je operaciji Ld X, tj. Load X to ACC.

Programska sekvenca kojom se vri sabiranje sadr`aja memorijske lokacije X sa sadr`ajem akumulatora ima oblik. (Ova sekvenca je ekvivalentna operaciji Add X, tj. Add X to ACC)

Sto T; ACC→T Sub T; ACC←ACC'-T ⇒ ACC=0 Sub T; ACC←ACC'-T ⇒ ACC=-T Sub X; ACC=ACC'-T ⇒ ACC=-T-X Sto T; ACC→T ⇒ T=-T-X Sub T; ACC=ACC'-T ⇒ ACC=-T-X-(-T-X)=0 Sub T; ACC←T ⇒ ACC=0-(-T-X)=T+X Naredni primer ilustruje kako se obavlja bezuslovno grananje na lokaciji Y, tj. Jmp Y

JNG Y; if ACC7=1 go to Y, else continue Sto T; ACC→T Sub T; ACC=ACC"-T ⇒ ACC=0 Sub T; ACC=ACC'-T ⇒ ACC=-T tj ACC7=1 JNG Y; go to Y

Zadatak 3.11

Napisati program za procesor MIN koji po~inje sa nepoznatim stanjem ACC-a a zavrava sa ACC=x+y, gde su x i y sadr`aji memorijskih lokacija X i Y, repektivno.

Zadatak 3.12

Dizajn MIN procesora je promenjen tako da MIN ima sada dva akumulatora ACC1 i ACC2.

Koje aspekte u prezentaciji i interpretaciji instrukcije treba promeniti da bi se novi dizajn prilagodio promeni.

Zadatak 3.13

Polje Funkcijski kod koje se odnosi na format instrukcije MIN-a je proiren i ima sledei oblik:

Procesori - sinteza staze podataka i upravlja~ka jedinica

32

operacija funkcijski kôd

00 Sto 01 Sub 10 JNG 11 Nand

gde je:

Nand A; ACC←ACC' nand M(A) Napisati programske sekvence pomou kojih je mogue implementirati sledee logi~ke instrukcije:

a) Not A ; kona~ni efekat ACC←not M(A)

b) Or A ; kona~ni efekat ACC←ACC' or M(A)

c) And A ; kona~ni efekat ACC←ACC' and M(A)

d) Xor A ; kona~ni efekat ACC←ACC' xor M(A)

e) a:=a Or b ; M(A)←M(A) or M(B) e) a:=a And b ; M(A)←M(A) and M(B)

e)a:=a Nand b ; M(A)←M(A) nand M(B)

e) a:=a Xor b ; M(A)←M(A) xor M(B)

Test pitanje 3.12

Struktura jednostavnog akumulatorski-zasnovanog procesora prikazana je na Slici 3.21.

Pretpostavimo da se preko registra DR ka memoriji M u jednom taktnom intervalu prenose 32-bitne re~i. Podatak D koji se smeta u DR mo`e biti 16- ili 32-bitni. Ako je D 16-bitni tada se on u trenutku upisa u memoriji automatski proiruje na 32-bita. Obim podatka D odredjuje marker S, tako da S = 0 ozna~ava da je podatak 16-bitni, a S = 1 da je 32-bitni. Na~in proirenja (ekstenzije) definisan je drugim markerom, pri ~emu E = 0 ozna~ava proirenje nulama, a E = 1 proirenje znaka. Izvriti projektovanje logike na nivou registra (RTL = Register Transfer Level) koja e biti u stanju da obavi neophodno proirenje znaka.

Dekoderinstrukcija

IR MAR PC

Upravlja~kisignali

Upravlja~kajedinica (UJ)

DR ACC

Sistemska magistrala

ALU procesnajedinica

(PJ)

ka/iz memorije iliU/I uredjaja

Slika 3.21 Jednostavna akumulatorski-zasnovana CPU jedinica

Procesori - sinteza staze podataka i upravlja~ka jedinica

33

Napomena: MAR - memorijsko adresni registar IR - instrukcioni registar PC - programski broja~ ACC - akumulator DR - registar podataka ALU - akumulatorsko logi~ka jedinica

Odgovor Na Slici 3.22 prikazana je logika za proirenje znaka koja koristi par multipleksera. Prvi multiplekser MUX1, koristi marker E kao selekt signal, a drugi multiplekser - MUX2, za selekciju koristi marker S.

S

16

1

16

16

16

1

ta~kaprespajanja

1 na 16

DR15:DR0

DR31:DR16

Ka memoriji

01531

DR15

DR registar

E1

01 1

0 1S

MUX1 2-na-1

0 1S

MUX1 2-na-1

Slika 3.22 Logika za upis podatka u memoriji koja ima mogunost proirenja sa nulom ili proirenja sa znakom

Napomena: MUX1 je 1-bitni multiplekser 2-na-1; MUX2 je 16-bitni multiplekser 2-na-1

Test pitanje 3.13

Registar DR sa Slike 3.21 (test pitanje 3.12) mo`e da prenese 32-bitnu re~ ka memoriji M u jednom taktnom intervalu. Podaci koji se prihvataju od strane DR-a radi upisa u M, mogu biti obima 4, 8, 16 ili 32-bita. No, nezavisno od toga kog su oni obima, u memoriji se podaci uvek upisuju kao 32-bitni koristei pri tome metod proirenja poznat kao ekstenzija znaka. Dvobitni marker S u CPU-u se postavlja na 00, 01, 10 ili 11 sa ciljem da uka`e kada je obim podatka 4-, 8-, 16- ili 32-bitni, respektivno.

Izvriti projektovanje logike na RTL nivou koja implementira tehniku proirenja znaka.

Odgovor Reenje je prikazano na Slici 3.23.

Procesori - sinteza staze podataka i upravlja~ka jedinica

34

DR3DR7

0

S MUX1 4 na 1

123

15 7 3 031DR15

DR15 DR7 DR3

DR15:DR8

Ka memoriji

S

2

2

2

16161616

8888

DR7:DR4

1

8 4

444DR3:DR0

16

DR - registar

0S

1MUX32 na 1

S

0

S MUX2 4 na 1

123

2

Slika 3.23 Logika za upis podataka u memoriju koja koristi mogunost proirenja znaka

Zadatak 3.14

Akumulatorski zasnovana CPU tipa Load/Store, prikazana na Slici 3.21 (test pitanje 3.12), u svom repertoaru koristi skup od 10 instrukcija prikazanih na Slici 3.24.

a) kopiranje sadr`aja memorijske lokacije X u memorijsku lokaciju Y

b) inkrementiranje sadr`aja akumulatora ACC

c) grananje na specificiranu adresu adr ako je ACC≠0.

d) usvajajui da se koristi kôd tipa znak-moduo implementiraj instrukcije: (d1) ACC:=-M(X), (d2) testiraj LS bit b re~i koja je memoriji smetena na lokaciji X. Ako je b=1, obrii ACC, ina~e ostavi ACC nepromenjen (za maskiranje odredjenih bitova u re~i koristi instrukciju And)

tip instrukcija HDL format Asemblersko jezi~ki format

Komentar

Load ACC:=M(X) Ld X napuni X iz M u ACC

Store M(X):=ACC St X smesti sadr`aj ACC-a u M kao X

kopiraj registar DR:=ACC Mov DR,ACC kopiraj sadr`aj ACC-a u DR

Prenos podataka

kopiraj registar ACC:=DR Mov ACC,DR kopiraj sadr`aj DR-a u ACC

sabiranje ACC:=ACC+DR Add saberi DR sa ACC

oduzimanje ACC:=ACC-DR Sub oduzmi DR od ACC

Obrada podataka AND operacija ACC:=ACC and

DR And logi~ka AND DR sa ACC

Procesori - sinteza staze podataka i upravlja~ka jedinica

35

NOT operacija ACC:=not ACC Not komplementiraj sadr`aj ACC-a

Branch PC:=M(adr) BRA adr grananje na instrukciju sa adresom adr

Programsko-upravlja~ke

Branch zero if ACC=0 then PC:=M(adr)

BZ adr grananje na instrukciju adr ako je ACC=0

Slika 3.24 Skup instrukijca CPU-a Napomena: Simbol M se odnosi na memorijsku lokaciju Koristei skup instrukcija sa Slike 3.24, pokazati kako se mogu implementirati sledee operacije koje kod najveeg broja ra~unara odgovraju jedinstvenoj instrukciji:

Odgovor a)

Ld X ; kopiraj sadr`aj memorijske lokacije X u ACC St Y ; kopiraj sadr`aj ACC-a u memorijsku lokaciju Y b) Jedan00...001 ; definicija konstante Jedan . . . Mov DR,ACC ; kopiraj sadr`aj ACC-a u DR

Ld Jedan ; napuni ACC konstantom jedan Add ; saberi sadr`aje DR i ACC i smesti rezultat u ACC c) BZ bdr ; granaj se na bdr ako je ACC=0 BRA adr ; ako je ACC¹0, granaj se na adr bdr: . . . . . . adr: . . . d1) Ld X ; napuni X u ACC Mov DR,ACC ; kopiraj X iz ACC u DR Sub ; izra~unaj ACC =X-X=0 Sub ; izra~unaj ACC=0-X=-X d2) maska00...001 ; LS bit pozicija maske je na logi~koj jedinici nula 00...000 ; konstanta nula akum dd...ddd ; lokacija u koju se ~uva sadr`aj ACC-a St akum ; smesti ACC u memoriji Ld X ; kopiraj X u ACC Mov DR,ACC ; kopiraj X iz ACC u DR Ld maska ; napuni masku u ACC And ; AND sadr`aja registara DR i ACC BZ izlaz ; testiraj ACC za nulu Ld nula ; ACC¹0; obrii ACC BRA kraj izlaz:Ld akum ; ACC=0; obnovi ACC na po~etnu vrednost kraj:. . .

Zadatak 3.15

a) Za jednostavnu akumulatorski-zasnovanu CPU jedinicu sa Slike 3.21 (test pitanje 3.12) i raspolo`ivi skup instrukcija prikazan na Slici 3.24 (zadatak 3.14), kreirati programsku sekvencu za izra~unavanje izraza ACC:=ACC*N, gde mno`enik predstavlja inicijalnu vrednost akumaulatora a

Procesori - sinteza staze podataka i upravlja~ka jedinica

36

mno`ilac je promenljiva koja je smetena u memoriji. Usvojiti da su mno`enik i mno`ilac neozna~eni celi brojevi i da su dovoljno mali da je za prezentaciju njihovog proizvoda dovoljna jedna re~. Implementirati ACC*N u obliku ACC+ACC+...+ACC, tj. izvri se N puta osnovna instrukcija Add.

b) Za kreiranu programsku sekvencu pod a) prikazati proces izvrenja programa kojim se obavlja mno`enje, tj. ACC:=ACC*N.

Odgovor a) Program mno`enja prikazan je na Slici 3.25. Telo glavnog programa (linije 5 do 17) se izvravaju N-puta.

linija lokacija instrukcija ili podaci komentar 0 jedan 00...001 konstanta jedinica

1 mnoze N mno`enik

2 akum dd...ddd lokacija inicijalne vrednosti Y dodeljena ACC-u

3 proiz 00...000 lokacija (parcijalnog) proizvoda P

4 St Y smesti inicijalnu vrednost ACC-a u Y

5 Ponovi: Ld mnoze napuni N u ACC i testiraj za kraj

6 BZ Kraj kraj if N=0; else continue

7 Ld jedan napuni 1 u ACC

8 Mov DR,ACC kopiraj 1 iz ACC u DR

9 Ld mnoze napuni N u ACC radi dekrementiranja

10 Sub oduzmi 1 od N

11 St mnoze sa~uvaj dekrementiranu vrednost N

12 Ld akum napuni po~etnu vrednost Y u ACC

13 Mov DR,ACC kopiraj Y iz ACC u DR

14 Ld proiz napuni tekuu parcijalnu sumu P

15 Add saberi Y sa P

16 St proiz smesti novu parcijalnu sumu u P

17 BRA Ponovi granaj se na Ponovi

18 Kraj: ...

Slika 3.25 Programska sekvenca kojom se obavlja operacija ACC:=ACC*N

Na kraju, proizvod P se smeta u memorijsku lokaciju proiz.

b) Usvojiemo sledee:

svaka instrukcija je obima jedne re~i,

instrukcija se pribavlja iz memorije za jedan taktni interval,

vreme izvrenja instrukcije iznosi jedan taktni interval

svaki ciklus pribavljanja naredbe uklju~uje sledei par operacija tipa registarski prenos

IR.MAR := M(PC) , PC := PC + 1

tj. za PC se koristi registar koji se okida ivi~no, a to zna~i da se u okviru jednog taktnog intgervala prvo mo`e ~itati a nakon toga vriti upis u registar.

podacima i programu su dodeljene memorijske lokacije po~ev od 1000, 1001, 1002,...

Sekvenca trasiranja koja odgovara operaciji mno`enja prikazana je na Slici 3.26.

Taktni interval

tip instrukcije PC MAR akcije UJ-e akcije PJ-e

1 St akum 1004 IR.MAR:=M(PC), PC:=PC+1

Procesori - sinteza staze podataka i upravlja~ka jedinica

37

2 1002 M(MAR):=ACC 3 Ld mnoze 1005 IR.MAR:=M(PC),PC:=PC+1 4 1001 AC:=M(MAR) 5 BZ kraj 1006 IR.MAR:=M(PC),PC:=PC+1 6 1001 testiraj N,nema akcije if N¹0 nema akcije 7 Ld jedan 1007 IR.MAR:=M(PC),PC:=PC+1 8 1000 ACA:=M(MAR) 9 Mov DR,ACC 1008 IR.MAR:=M(PC),PC:=PC+1 10 dddd DR:=ACC 11 Ld mnoze 1009 IR.MAR:=M(PC), PC:=PC+1 12 1001 ACC:=M(MAR) 13 Sub 1010 IR.MAR:=M(PC),PC:=PC+1 14 dddd ACC:=ACC-DR 15 St mnoze 1011 IR.MAR:=M(PC),PC:=PC+1 16 1001 M(MAR):=ACC 17 Ld akum 1012 IR.MAR:=M(PC),PC:=PC+1 18 1002 ACC:=M(MAR) 19 Mov DR,ACC 1013 IR.MAR:=M(PC),PC:=PC+1 20 dddd DR:=ACC 21 Ld proiz 1014 IR.MAR:=M(PC),PC:=PC+1 22 1003 ACC:=M(MAR) 23 Add 1015 IR.MAR:=M(PC),PC:=PC+1 24 dddd ACC:=ACC+DR 25 St proiz 1016 IR.MAR:=M(PC),PC:=PC+1 26 1003 M(MAR):=ACC 27 BRA Ponovi 1017 IR.MAR:=M(PC),PC:=PC+1 28 1005 PC:=MAR nema akcije 29 Ld mnoze 1005 IR.MAR:=M(PC),PC:=PC+1 30 1001 ACC:=M(MAR) 31 BZ Kraj 1006 IR.MAR:=M(PC),PC:=PC+1 32 1018 testiraj N:PC:=MAR if N=0 nema akcije 33 1018 . . .

Slika 3.26 Trasiranje tipa ciklus-po-ciklus u toku izvrenja instrukcije mno`enja

Test pitanje 3.14

Savremeni mikroprocesori koriste razli~ite tehnike za ubrzanje rada CPU-a kao to su: paralelizam na nivou instrukcija, proto~nost, rad sa ke memorijom dr.

Zna~ajno poboljanje paralelne obrade na instrukcionom nivou mo`e se ostvariti i kod jednostavnog procesora ~ija je ema prikazana na Slici 3.21 ( test pitanje 3.12). Analizom se mo`e ustanoviti da se aktivnosti jedinica PJ i UJ obavljaju u razli~itim taktnim intervalima. Ako ove dve aktivnosti ne dele isti resurs, kao to je sistemska magistrala, one se mogu izvravati istovremeno. Na primer, sekvenca od tri instrukcije kojom se menja prvobitni sadr`aj akumulatora ACC u -ACC ima oblik:

Taktni interval

tip instrukcije PC akcije UJ-e akcije PJ-e

1 Mov DR,ACC 2000 IR.MAR:=M(PC),PC:=PC+1 2 2001 DR:=ACC 3 Sub 2001 IR.MAR:=M(PC),PC:=PC+1

Procesori - sinteza staze podataka i upravlja~ka jedinica

38

4 2002 ACC:=ACC-DR 5 Sub 2002 IR.MAR:=M(PC),PC:=PC+1 6 2003 ACC:=ACC-DR

Preklapanjem ciklusa izvrenja svake instrukcije sa pribavljanjem naredne, pokazati kako je mogue ostvariti proto~nost u obradi na primeru prethodne sekvence i grafi~ki ilustrovati rad dvostepenog proto~nog sistema.

Odgovor Taktni interval

tip instrukcije PC akcije UJ-e akcije PJ-e

1 Mov DR,ACC 2000 IR.MAR:=M(PC),PC:=PC+1 2 Mov/Sub1 2001 IR.MAR:=M(PC),PC:=PC+1 DR:=ACC 3 Sub1/Sub2 2002 IR.MAR:=M(PC),PC:=PC+1 ACC:=ACC-DR 4 Sub2 2003

IF EX

IF EX

IF EX

6543210

Sub1

Sub2

Mov

t

Test pitanje 3.15

Postoji vei broj na~ina kako se mo`e poboljati bazi~na arhitektura prikazana na Slici 3.21 (test pitanje 3.12). Najvei broj CPU-ova uvode modifikacije (proirenja) koje imaju za cilj da u zna~ajnoj meri poboljaju performanse i olakaju programiranje. Bitnije modifikacije se odnose na:

korienje vienamenskih registara za manipulisanje sa adresama i podacima

manipulisanje sa dodatnim tipovima podataka, instrukcija i adresnih na~ina rada

uvodjenje registra koji ukazuje na status izra~unavanja

uvodjenje logike koja e manipulisti magacinom.

Uzimajui u obzir pomenute izmene pokazati kako izgleda modifikovana arhitektura sa Slike 3.21.

Odgovor

Procesori - sinteza staze podataka i upravlja~ka jedinica

39

RFpolje

ALU

SR DR

Sistemska magistrala

MAR IR

Logika zagenerisanje

adresa

Upravlja~kalogika

Interni upravlja~kisignali

PC SP

UJ

PJ

Ka memorijii U/ I

podsistemu

Slika 3.27 Modifikovana verzija arhitekture CPU-a sa Slike 3.21.

Test pitanje 3.16

Kod najveeg broja mikrora~unarskih sistema CPU ne upravlja direktno memorijom ili sistemskom magistralom. Umesto toga ugra|uje se dodatni kontroler magistrale ~iji je primarni zadatak da ostvari ulogu bafera. Koje osnovne blokove sadr`i kontroler magistrale?

Odgovor Kontroler magistrale generie neophodne upravlja~ke signale za magistralu; razli~itih bafera koji se koriste za privremeno ~uvanje podataka, kao i poveanje fan-out i fan-in (opteretljivost) izme|u CPU-a i RAM-a. Obi~no se kontroler magistrale realizuje kao posebno integrisano kolo ili kao sastavni deo procesora. Struktura kontrolera magistrale prikazana je na Slici 3.28, a tipi~na je za sisteme zasnovane na Intelovim mikroprocesorima.

Test Pitanje 3.17

Sprega CPU sa U/I podsistemom u najveem broju slu~ajeva ne ostvaruje se direktno nego preko odgovarajueg kontrolera magistrale. Kakva je struktura kontrolera magistrale koji upravlja U/I podsistemom?

Odgovor Struktura kontrolera magistrale koji upravlja U/I podsistemom, tipi~no za procesore iz Intel-ove familije, prikazana je na Slici 3.29.

Procesori - sinteza staze podataka i upravlja~ka jedinica

40

Din-Dout

A31..A2

D31..D0

BEX,ADS

CPU

generator takta

baferadrese

baferpodataka

upravljanjemagistralom

multi-plekseradresa

baferupisa i~itanja

blok zaupravljanjememorijom

memorija

CLK

CLK

kontroler magistrale

A10...A0

Ready,RAS,CAS,WEREADY,WR,RD,IO/M

Slika 3.28 Put CPU memorijski podsistem preko kontrolera magistrale

Din-Dout

A31..A2

D31..D0

BEX,ADS

CPU

generator takta

baferadrese

baferpodataka

upravljanjemagistralom

baferupisa i~itanja

U/Iupravljanje i

U/Idekodiranje

CLK

CLK

kontroler magistrale koji upravljaU/I podsistemom

READY,WR,RD,IO/M A15-A0

IORD, IOWRREADY

ka U/I portovima(diskovi, tastatura,displej,...)

Slika 3.29 Put CPU U/I podsistem preko odgovarajueg kontrolera magistrale.

Zadatak 3.16

16-bitna CPU, je bajt adresibilna maina. Bajtovi na parnim i neparnim adresama prenose se po MS i LS bit pozicijama magistrale podataka, respektivno. Pokazati kako treba organizovati strukturu registra MDR koji e podr`avati ovakav prenos. Kada se vri prenos bajta on je uvek prisutan na LS bit pozicijama unutar CPU-a.

Procesori - sinteza staze podataka i upravlja~ka jedinica

41

Odgovor a) postoji poravnanje b) ne postoji poravnanje

D 15 D 0

M S b a j t L S b a j t

m em orija

m agistralapo da taka

D 8 -D 1 5 D 7 -D 0

B 1 5-B 8

B 7 -B 0

8 8

8 8

parnan ep arn a

ad rese 1357

k -1k + 1

0246

k -2k

D 15 D 0

M S b a j t

L S b a j t

m em orija

D 8 -D 1 5 D 7 -D 0

B 15 -B 8

B 7-B 0

8 8

8 8

ad rese 1357

k -1k + 1

0246

k-2k

M D R M D R

Slika 3.30: Na~in pristupa procesora memoriji za slu~aj da postoji i nepostoji poravnanje re~i u memoriji

Da bi mogao da se ostvari prenos podataka ka/iz memorije, za slu~aj kada postoji i kada ne postoji poravnanje, neophodno je da se MDR spre`e sa magistralom podataka na na~in kako je prikazano na Slici 3.31:

D15 D0MDR

D15-D8 D7-D0

E3 E2 E1 E0

B15-B8

B7-B0

magistralapodataka

E0, E1, E2 i E3su dozvole radaizlaznihdrajverskihstepena

Slika 3.31 Sprezanje registra MDR sa magistralom

Test pitanje 3.18

Projektovati oscilator koji koristi invertore i elemenat za kanjenje. Ako elemenat za kanjenje, unosi kanjenje T, kolika je frekvencija oscilovanja?

Procesori - sinteza staze podataka i upravlja~ka jedinica

42

Modifikovati kolo oscilatora tako da se oscilacije mogu inicirati (startovati) i zaustavljati (stopirati) pod uticajem asinhronog ulaza RUN. Kada se oscilator zaustavlja, irina zadnjeg impulsa na njegovom izlazu treba da iznosi T, nezavisno od vremena u kojem stanje signala na ulazu RUN postane neaktivno.

Zadatak 3.17

Za strukturu sa Slike 3.32, odrediti vrednost upravlja~kih signala S1, S0 kao i L2, L1, L0, da bi se ostvarili sledei tipovi prenosa: (a) R0←R2; (b) R0←R1, R2←R1; (c) R0←R1, R1←R0.

n

S1 S00 MUX1 3 na 12

Load

R0

Load

R1

Load

R2

L0 L1 L2

punjenje

selekcija

n

n

n

n

n

Slika 3.32 Ulazi registara povezani na jedinstvenu magistralu

Odgovor registarski prenos

selekcija S1 S0

punjenje L2 L1 L0

R0←R2 1 0 0 0 1 R0←R1, R2←R1 0 1 1 0 1 R0←R1, R1←R0 nemogue nemogue

Zadatak 3.18

Za strukturu sa Slike 3.33, odrediti vrednost upravlja~kih signala S0, S1, S2 i L0, L1, L2 da bi se ostvarili sledei tipovi prenosa: (a) R0←R2; (b) R0←R1, R2←R1; (c) R0←R1, R1←R0.

Odgovor registarski prenos

selekcija punjenje

S2 S1 S0 L2 L1 L0 R0←R2 0 x x 0 0 1

R0←R1, R2←R1 1 x 1 1 0 1 R0←R1, R1←R0 * ne preporu~uje se kod transparentnih le~eva

** x 0 1 0 ↓ ↓ Napomena: (a) * Ako su registri R0, R1 i R2 realizovani kao transparentni le~evi ova operacija se ne preporu~uje jer se formira petlja tipa R0→MUX1→R1→MUX0 ;

Procesori - sinteza staze podataka i upravlja~ka jedinica

43

(b) ** Slu~aj kada su R0, R1 i R2 realizovani kao le~evi koji se pune opadajuom ivicom impulsa Lx: (c) Simbol "x" ukazuje da vrednost na tom ulazu nije od zna~aja.

n

n

S0 MUX01 2 na 1

S0 MUX11 2 na 1

S0 MUX21 2 na 1

L

Ul R0 Iz

L

Ul R1 Iz

L

Ul R2 Iz

S0 L0

S1

S2

L1

L2

n

n

n

n

Slika 3.33 Ulazi registara povezani na namenske multipleksere

Zadatak 3.19

Logi~ka struktura registra sa bidirekcionim ulazom prikazana je na Slici 3.34.

Za strukturu sa Slike 3.35 odrediti vrednost upravlja~kih signala E2, E1 E0 i L2, L1, L0 da bi se ostvarili sledei tipovi prenosa: (a) R0←R2; (b) R0←R1, R2←R1; (c) R0←R1, R1←R0.

l

R

punjenje

En

n n

n

≡ R

Load

En

n

Slika 3.34 Simbol registra sa bidirekcionim ulazno-izlaznim linijama

Procesori - sinteza staze podataka i upravlja~ka jedinica

44

R0

L0

E0

n

R1

L1

E1

n

R2

L2

E2

n

E2 E1 E0

dozvola L1L2

punjenje

Slika 3.35 Tro-stati~ka magistrala koja koristi registre sa bidirekcionim linijama

Odgovor registarski prenos

dozvola

E2 E1 E0 punjenje

L2 L1 L0 R0←R2 1 0 0 0 0 1 R0←R1, R2←R1 0 1 0 1 0 1 R0←R1, R1←R0 nije dozvoljeno - dolazi do sudara na magistrali

Test pitanje 3.19

Na Slici 3.36 prikazana je blok ema jednog RF polja. Pokazati kako izgleda njegova interna struktura.

1

B_adreseA_adrese2 2

n n

n 2

Write D_podaci D_adrese

4*n RF polje

A_podaci B_podaci

Slika 3.36. Blok ema RF polja

Procesori - sinteza staze podataka i upravlja~ka jedinica

45

Odgovor

0 Sel1 M2 U Y3 X

0 Sel1 M2 U Y3 X

R0load

R1load

R2load

R3load

n

n

n

n

0 1 2 3

dekoder

2D_ adrese

1

Write D_podaci

n

A_podaci

A_adrese B_adrese

n

n

n

n

n

n

n

nn

n n

2 2

B_podaci

Slika 3.37 Logi~ka struktura 4 * n RF polja

Test pitanje 3.20

Na Slici 3.38 a)-c) prikazane su tri osnovne konfiguracije PLD kola (PLD - Programmable Logic Device). Identifikovati tipove kola.

fiksno ANDpolje (dekoder)

programabilnoOR polje

programabilnoAND polje

fiksno ORpolje

programabilnoAND polje

programabilnoOR polje

programibilne

veze

programibilne

veze

programibilneveze

programibilneveze

ulazi

ulazi

ulazi

izlazi

izlazi

izlazi

a)

b)

c)

Slika 3.38 Tri osnovne konfiguracije PLD kola

Odgovor

Procesori - sinteza staze podataka i upravlja~ka jedinica

46

Slika 3.38 a): PROM; Slika 3.38 b): PAL; Slika 3.38 c): PLA

Zadatak 3.20

ALU ra~unara se implementira pomou PLD kola prikazanog na Slici 3.39.

ulazni baferi i

invertori

ANDpolje

ORpolje

Izlaznibaferi

x1x2

xn

I1

I2n

P1 PkO1

Om

F1

Fm

.

.

.

.

.

.

. . .

.

.

....

Slika 3.39 Opti blok dijagram PLD kola

ALU prihvata dva dvo-bitna broja A, B, Cin i dvo-bitni funkcijski ulaz F. Izlaz ALU-a ~ini dvo-bitni rezultat i Cout. Operacije koje obavlja ALU definisane su shodno sledeoj tabeli

F0 F1 OPERACIJA Cout 0 0 A+B izlazni prenos 0 1 A∨Β 1 1 0 A∧B 0 1 1 A∨/B 0

Programirati PLD kolo definisanjem produkata tipa suma proizvoda (SOP -Sum of Products).

Zadatak 3.21

Digitalni kontroler sa Slike 3.40 ima dva ulaza, A i B, i tri izlaza, X, Y, i Z, a taktuje se spolja. Kontroler kontinualno prelazi kroz sledeu sekvencu doga|aja. Na po~etku prvog taktnog perioda X se postavlja na 1. Na po~etku drugog taktnog perioda, u zavisnosti od stanja na ulazu A, tj. da li je 1 ili 0, postavlja se na 1 linija Y ili Z, respektivno. Kontroler zatim ~eka sve dok se linija B ne postavi na 1. Sa narednom usponskom ivicom taktnog signala, kontroler postavlja izlaz Z na 1 u toku trajanja jednog taktnog perioda, a zatim resetuje sve izlazne signale na 0 u trajanju od jednog taktnog perioda. Sekvenca se ponavlja po~ev sa narednom pozitivnom ivicom taktnog signala. Projektovati logiku kontrolera koritei PLD kolo sa Slike 3.39.

kontroler(PLD kolo)

oscilator

A

B

XYZ

Slika 3.40 Blok ema digitalnog kontrolera

Procesori - sinteza staze podataka i upravlja~ka jedinica

47

Test pitanje 3.21

Zato za PROM ka`emo da je PLD kolo koje ima fiksno AND i programibilno OR polje?

Odgovor AND polje kod PROM-a je izvedeno kao dekoder adresa memorijskih lokacija. Struktura dekodera se ne mo`e menjati (programirati), dok se sadr`aj memorijskih lokacija OR polja mo`e programirati.

Test pitanje 3.22

Na Slici 3.41 prikazana je logi~ka ema jednobitnog pomera~a ulevo/udesno. Objasniti princip njegovog rada.

S1 S2 S3 S4 S5 S6 S7S0

D0 D7D6D5D4D3D2D1

C

Slika 3.41 : Logi~ka ema jednobitnog pomera~a

Test pitanje 3.23

Blok koji mo`e da pomera informaciju za 32 bit pozicije u jednom taktnom intervalu prikazan je na Slici 3.42. Objasniti princip njegovog rada.

Odgovor Blok sa Slike 3.42 predstavlja fanel (funnel) pomera~ i sastavni je deo staze podataka 32-bitnih RISC procesora. Logika pomera~a mo`e da pomera informaciju ulevo ili udesno do 32 bit pozicije kako ozna~enih tako i neozna~enih brojeva. Pomera~ ~ine est nivoa multipleksera proto~no organizovanih. Shamt se odnosi na iznos pomeranja ulevo za specificirani broj puta. Kod pomeranja udesno ova vrednost se invertuje, a to rezultira pomeranjem ulevo za 33-n bit pozicija. Multiplekseri na vrhu obezbe|uju ekstra pomeranje za jednu bit poziciju udesno i ponovno upisivanje bita znaka na MS bit poziciji kod aritmeti~kog pomeranja udesno. Naredna pet nivoa (odozgo nani`e) omoguavaju pomeranje ulevo za 16, 8, 4 , 2 i 1 bit poziciju, pri ~emu je iznos pomeranja definisan sa Shamt. Ukupno propagaciono kanjenje ovog pomera~a je ekvivalentno kanjenju od 6 gejtova i nezavisno je veli~ini pomeranja.

Procesori - sinteza staze podataka i upravlja~ka jedinica

48

Mux21_32

Mux21_32

Mux21bis

AN3 0/1_32

E0

E0

E0

E0

E0Shamt0

Z(31:0)

Shamt(4:0)

A(31:0)

ArithRight

C

B

Z

B

A

Z

Z

B

A

B

A

Z

B

A

Z

B

A

A

Z

G

F

E

D

C

B

A

Shamt 1

Shamt 2

Shamt 3

Shamt 4

Mux21_32

Mux21_32

Mux21_32

Mux21_32

Mux21_32 Mux21_16

Mux21_8

Mux21_4

Mux21_2

Mux21_32

Slika 3.42 Blok koji mo`e da pomera informaciju za 32 bit pozicije

Zadatak 3.22

Cilj ovog zadatka je da uka`e na postupak sinteze kona~nog automata (Finite State Machine) koji se koristi za prodavanje tetrapak sokova. Princip rada automata je sledei: Automat za prodavanje sokova izdaje jedno pakovanje tetrapak soka nakon to je primio novac u vrednosti od 1,5 dinar. Kao maina, automat u jednom trenutku prihvata po jedan nov~i u vrednosti od 1 dinar ili 50 para. Sastavni deo automata je senzorski elemenat koji ukazuje da li je u maini uba~ena vrednost apoena od 1 dinar ili 50 para. Smatraemo da kada kupac ubaci 2 dinara maina ne vri povraaj od 50 para.

Odgovor Postupak sinteze sproveemo kroz nekoliko koraka.

Korak 1: Razumevanje problema - ponaanje maine naj~ee se opisuje govornim jezikom pri ~emu je va`no da ne postaje dvosmislenosti u interpretaciji. Obi~no proces projektovanja po~inje crtanjem blok dijagrama maine (Slika 3.43) na kome treba jasno uo~iti uloge ulaza i izlaza.

Procesori - sinteza staze podataka i upravlja~ka jedinica

49

Nailaskom taktnog impulsa vrednost 50 para ili 1 dinar se potvrdjuje ako je odgovarajui nov~i uba~en u mainu. Mehanizam za predaju tetrapak soka se oslobadja (izbacuje se jedan tetrapak sok) ako je maina nakon zadnjeg Reset-a prihvatila 1,5 dinar (ili vie). Ovakvom specifikacijom se ne definie u potpunosti ponaanje FSM-a. Na primer, ta e se desiti ako neko umesto nov~i od 50 para ubaci nov~i od 10 para? Ili ta se deava sa mainom kada je sok predat kupcu? U principu, treba preuzimati razumljive korake, a to zna~i da: (a) Senzor nov~ia vraa apoen ako ga ne prepozna; i (b) Nakon predaje tetrapak soka maina se resetuje.

Senzoruba~enognov~ia

Automatza prodajusokova

Mehanizamza predaju

tetrapak soka

reset

Cp-takt

50 para

1dinar

oslobodi

Slika 3.43 Blok dijagram maine za prodaju sokova

Korak 2: Apstraktna prezentacija - nakon to smo razumeli ponaanje maine neophodno je izvriti preslikavanje specifikacije u pogodniju apstraktnu prezentaciju. Dobar pristup je da se izvri numerisanje svih moguih sekvenci koje dovode do predaje tetrapak soka kupcu:

• tri nov~ia od po 50 para: 50 para, 50 para, 50 para

• dva nov~ia od po 50 para i jedan od dinar: 50 para, 50 para, 1 dinar

• jedan nov~i od 50 para i jedan od dinar: 50 para, 1 dinar

• jedan nov~i od 1 dinar i drugi od 50 para: 1 dinar, 50 para

• dva nov~ia od dinar: 1 dinar, 1 dinar.

Na Slici 3.44, u obliku dijagrama stanja, prikazane su sve mogue ulazne sekvence koje dovode do predaje tetrapak soka kupcu.

Sa ciljem da dijagram sa Slike 3.44 bude jednostavan i ~itljiv ozna~eni su samo pralazi koji eksplicitno uzrokuju promenu. Na oprimer, ako se u stranju S0 ne ubaci nov~i od 1 dinar ili 50 para maina ostaje u stanju S0.

Korak 3: Minimizacija stanja - opis rada maine sa devet stanja nije "najbolji" mogui. Naime stanja: S4, S5, S6, S7 i S8 imaju identi~no ponaanje pa se zbog toga mogu kombinovati u jedinstveno stanje. Dalja redukcija broja stanja zasniva se na iznosu novca kojeg je maina prihbvatila. Drugim re~ima, do vrednosti od 1 dinar se mo`e doi ubacivanjem dva nov~ia od po 50 para ili jednog od 1 dinar. Dijagram stanja koji odgovara ovakvoj interpretaciji prikazan je na Slici 3.45. Kao to se mo`e uo~iti, u odnosu na Sliku 3.44, broj stanja maine sa Slike 3.45 je redukovan sa 9 na 4.

Korak 4: Kodiranje stanja - Prezentacija automata koji ima minimalni broj stanja odgovara simboli~koj notaciji i opisuje se simboli~kom tabelom stanja prelaza (Slika 3.46). Naredni korak se odnosi na kodiranje stanja. Na~in na koji se vri kodiranje stanja ima veliki uticaj na iznos ugradjenog hardvera pomou koga se implementira maina. S obzirom da postoje ~etiri stanja dozvoljena su dva bita za kodiranje tih stanja. Tabela kodiranih stanja prikazana je na Slici 3.47.

Procesori - sinteza staze podataka i upravlja~ka jedinica

50

S0reset

1dinar

1dinarS2

S6(oslobodi)

50para

S5(oslobodi)

50paraS1

1dinar50para

S4(oslobodi)S3

1dinar

S8(oslobodi)

50para S7(oslobodi)

Slika 3.44 Dijagram stanja maine za prodaju tetrapak soka

0 para

1,5dinar(oslobodi)

1dinar

50 para

50p,1d

50p1d

50p 1d

reset

Slika 3.45 Minimizirani dijagram stanja maine za prodaju sokova Napomena: 50p = 50 para; 1d = 1 dinar

tekue stanje ulazi naredno stanje izlaz oslobodi

1d 50p 0p 0 0 0p 0 0 1 50p 0 1 0 1d 0 1 1 x x

50p 0 0 50p 0 0 1 1d 0 1 0 1,5d 0 1 1 x x

1d 0 0 1d 0 0 1 1,5d 0 1 0 1,5d 0 1 1 x x

1,5d x x 1,5d oslobodi

Slika 3.46 Simboli~ka tabela stanja prelaza kod maine za prodavanje tetrapak sokova sa minimalnim brojem stanja

Procesori - sinteza staze podataka i upravlja~ka jedinica

51

Napomena: Simbol "x" ukazuje da do ovakve situacije ne mo`e da dodje, na primer, maina mo`e da prihvati ubacivanje samo po jedan nov~i istovremeno, a ne i dva

Korak 5: Implementacija - naredni korak se odnosi na implementaciju tabele stanja prelaza izborom odgovarajuih memorijskih elemenata. Analiziraemo implementacije zasnovane na D i J-K flip-flopovima.

Karnaugh-ovi dijagrami (K-mape) za implementaciju sa D flip-flopovima prijazani su na Slici 3.48.

tekue stanje ulazi naredno stanje Q1 Q0 1d 50p D1 D0

izlaz oslobodi

0 0 0 0 0 0 0

0 1 0 1 0

1 0 1 0 0

1 1 x x x

0 1 0 0 0 1 0 0 1 1 0 0

1 0 1 1 0

1 1 x x 0

1 0 0 0 1 0 0

0 1 1 1 0

1 0 1 1 0

1 1 x x x

1 1 0 0 1 1 1

0 1 1 1 1

1 0 1 1 1

1 1 x x x

Slika 3.47 Kodirana tabela stanja - prelaza kod maine za prodaju tetrapak sokova

Procesori - sinteza staze podataka i upravlja~ka jedinica

52

Q1Q0→

1d 50p

00 01 11 10

00 0 0 1 1

01 0 1 1 1

11 X X X X

10 1 1 1 1

Q1Q0→

1d 50p

00 01 11 10

00 0 1 1 0

01 1 0 1 1

11 X X X X

10 1 1 1 1

Q1Q0→

1d 50p

00 01 11 10

00 0 0 1 0

01 0 0 1 0

11 X X X X

10 0 0 1 0

D0=50p⋅Q0+Q0⋅50p+Q1⋅50p+Q1⋅1db) K-mapa za D0

D1=Q1+1d+Q0⋅50pa) K-mapa za D1

oslobodi=Q1⋅Q0c) K-mapa za oslobodi

Slika 3.48 K-mapa kada se automat za prodaju sokova implementira pomou D-flip-flopova

Logi~ka implementacija automata za prodaju tetrapak sokova prikazana je na Slici 3.49.

D Q

D Q

reset

Cp

Q0

oslobodi

Q1

Q1

Q0D0

Cp

D1

Q1

1d

Q0

50p

50pQ0

Q0

50p

Q1

50p

Q1

1d

reset

Slika 3.49 Maina za prodavanje tetrapak sokova zasnovana na implemnetaciji sa D flip-flopovima

Kada se kona~ni automat za prodavanje sokova implementira pomou J-K flip-flopova, tabela stanja prelaza imae oblik kao na Slici 3.50, a odgovrajui Karnaugh-ovi dijagrami kao na Slici 3.51. Minimizirane Boole-ove jedna~ine ulaza J-K flip-flopova su:

J1 = 1d + Q0⋅50p K1 = 0

Procesori - sinteza staze podataka i upravlja~ka jedinica

53

J0 = Q0⋅50p + Q1⋅1d K0 = Q1⋅50p

Napomena: Simbol '/ ' ukazuje na komplement vrednosti. Logi~ka implementacija je prikazana na Slici 3.52.

Uporedjivanjem logi~kih ema sa Slike 3.49 i Slike 3.52, zaklju~ujemo da je kod FSM-a sa D flip-flopovima potrebno ugraditi 8 gejtova, a kod reenja sa J-K flip-flopovima 7 gejtova.

tekue stanje ulazi naredno stanje

Q1 Q0 1d 50p Q1 Q0 J1 K1 J0 K0

0 0 0 0 0 0 0 x 0 x

0 1 0 1 0 x 1 x

1 0 1 0 1 x 0 x

1 1 x x x x x x

0 1 0 0 0 1 0 x x 0

0 1 1 0 1 x x 1

1 0 1 1 1 x x 0

1 1 x x x x x x

1 0 0 0 1 0 x 0 0 x

0 1 1 1 x 0 1 x

1 0 1 1 x 0 1 x

1 1 x x x x x x

1 1 0 0 1 1 x 0 x 0

0 1 1 1 x 0 x 0

1 0 1 1 x 0 x 0

1 1 x x x x x x

Slika 3.50 Kodirana tabela stanja - prelaza kod maine za prodaju tetrapak sokova implementirana sa J-K flip-flopovima

Procesori - sinteza staze podataka i upravlja~ka jedinica

54

Q1Q0→

1d 50p

00 01 11 10

00 0 0 X X

01 0 1 X X

11 X X X X

10 1 1 X X

Q1Q0→

1d 50p

00 01 11 10

00 X X 0 0

01 X X 0 0

11 X X X X

10 X X 0 0

Q1Q0→

1d 50p

00 01 11 10

00 0 X X 0

01 1 X X 1

11 X X X X

10 0 X X 1

Q1Q0→

1d 50p

00 01 11 10

00 X 0 0 X

01 X 1 0 X

11 X X X X

10 X 0 0 X

a) K- mapa za J1

b) K- mapa za K1

c) K- mapa za J0

d) K- mapa za K0

Slika 3.51 Karnaugh-ovi dijagrami koji se odnose na implementaciju maine za prodavanje sokova

sa J-K flip-flopovima

J Q

J Q

K

reset

K0Q0

oslobodi

Q1

Q1

Q0J0

Cp

J1

K1K

reset

50pQ0

1d

Q0

50p

Q1

1d

Q1

50p

Cp

Slika 3.52 Maina za izdavanje tetrapak sokova zasnovana na implementaciji sa J-K flip-flopovima

Procesori - sinteza staze podataka i upravlja~ka jedinica

55

Test pitanje 3.24

Objasniti princip rada staze podataka prikazane na Slici 3.53.

Slika 3.53 Staza podataka jednostavne arhitekture

Odgovor A.Opis strukture staze podataka

Kao to se vidi na Slici 3.53, stazu podataka ~ini RF polje od 16 identi~nih 16-bitnih registara, ozna~enih kao PC, AC, SP, ... , E i F. Registri ozna~eni kao +1, 0 i -1 se koriste za ~uvanje konstanti. Svaki od 16 registara mo`e postaviti svoj sadr`aj na jednu ili obe interne magistrale, Amag i Bmag, a svaki od magistara se mo`e puniti sa tree magistrale Cmag. 16-bitna ALU, u zavisnosti od stanja na upravlja~kim linijama F0 i F1, mo`e da obavlja jednu od sledee ~etiri

Procesori - sinteza staze podataka i upravlja~ka jedinica

56

operacije: A + B, A and B, A, not A. ALU, u zavisnosti od stanja tekueg izraza, generie dva statusna bita N, koji je postavljen kada je izlaz ALUa negativan, i Z koji se postavlja kada je izlaza ALUa nula.

Izlaz ALUa se vodi na ulaz bloka Pomera~ koji mo`e da pomera za jednu bit poziciju ulevo i udesno. Pomeranje za dve bit pozicije sadr`aja registra R obavlja se tako to ALU izra~unava prvo R + R (pomeranje za jednu bit poziciju) a zatim Pomera~ vri pomeranje sume za jo jednu bit poziciju.

Magistrale Amag i Bmag nisu direktno povezane na ulaze ALUa. U sutini obe magistrale su povezane na ulaz le~eva, Ale~ i Ble~, a izlazi le~eva na ulaze ALUa. Upis u Ale~ i Ble~ je regulisan signalima MAR i L1, respektivno.

Komuniciranje sa memorijom ostvaruje se preko registara MAR i MBR. Linija M0 definie upis u MAR. U MBR se mo`e upisivati sadr`aj registra Pomera~ aktiviranjem signala M1. Signalima M2 i M3 regulie se upis/~itanje podataka u/iz memorije. Podaci koji se ~itaju iz memorije mogu se dovesti na levi ulaz ALUa preko multipleksera AMUX aktiviranjem upravlja~ke linije A0.

B.Definisanje formata mikroinstrukcije

Za upravljanje gradivnim blokovima sa Slike 3.53 potrebno je ukupno 61 upravlja~ki signal. Upravlja~ke signale mo`emo podeliti u sledeih devet funkcionalnih grupa:

16 signala za definisanje stanja Amag sa nekog od izlaza registara iz RF polja,

16 signala za definisanje stanja Bmag sa nekog od izlaza registara iz RF polja,

16 signala za punjenje registara RF polja sa Cmag,

2 signala za upravljanje radom le~eva A i B

2 signala za izbor funkcije koju obavlja ALU,

2 signala za upravljanje radom Pomera~a,

4 signala za upravljanje radom registara MAR i MBR,

2 signala koji ukazuju memoriji da li je ciklus upis ili ~itanje

1 signal koji upravlja radom AMUXa

Aktivnosti koje staza podataka mo`e da obavi u toku jednog ciklusa koristei nabrojane upravlja~ke signale su sledee: Postavljanje vrednosti na Amag i Bmag, le~ovanje u Ale~ i Ble~, izvrenje koje operacija koje obavljaju ALU i Pomera~ i memorisanje rezultata u jedan od 16 registara RF polja i/ili registra MBR. Pored nabrojanog mogue je puniti i registar MAR i inicirati memorijski ciklus. Koristei registar obima 61 bit kod koga je svaki bit dodeljen jednom upravlja~kom signalu, mogue je ostvariti upravljanje. Uslovno usvojiemo da vrednost 1 na odgovarajuoj bit poziciji ozna~ava da je taj signal aktivan a vrednost 0 da je neaktivan.

Po ceni uslo`njavanja upravlja~ke logike mogue je smanjiti broj upravlja~kih signala. Tako na primer, umesto 16 mogue je koristiti 4 upravlja~ka signala pomou kojih se mo`e kodirati broj registra ~ije e stanje biti prisutno na Amag. Isti zaklju~ak va`i i Bmag. Tehni~ki ova mogunost se izvodi ugradnjom dekodera 4 u 16.

Kada se govori o Cmag, situacija mo`e biti neto druga~ija. U principu je mogue istovremeno vriti upis u vei broj registara RF polja, no u praksi se ova mogunost skoro da i ne koristi. Zbog toga, usvojiemo da je za upravljanje upisom sa Cmag dovoljno 4 upravlja~ka signala. Za signale L0 i L1 nije potrebno koristiti posebne upravlja~ke linije jer se oni generiu u toku svakog taktnog intervala.

Dodatni signal koji nije eksplicitno pomenut, ali je veoma koristan, je onaj koji dozvoljava/brani dozvolu upisa u registaru RF polja signala za Cmag. Naime, ~esto se javlja potreba da ALU obavi

Procesori - sinteza staze podataka i upravlja~ka jedinica

57

svoju operaciju, generie N i Z signale, ali ne upie rezultat (tipi~no je to za inctrukciju Compare sadr`aja registra/memorije sa sadr`ajem registra). Ovaj signal zvaemo ENC (Enable C), a njegova interpretacija je sledea: ENC=1 memorisanje sadr`aja Cmag je dozvoljeno, a za ENC=0 nije dozvoljeno.

Signali upravlja~ke magistrale RD i WR se mogu tako|e koristiti za upravljanje le~ovanjem registra MBR, t. za pruhvatanje signala sa/i za pobudu sistemske magistrale respekrivno.

Shodno prethodnoj diskusiji redukovali smo broj uravlja~kih signala sa 61 na 22. Na Slici 3.54 prikazan je odgovarajui format koji sadr`i dodatna dva polja COND i ADDR, ~ije emo zna~enje kasnije detaljno opisati. Mikoroinstrukciju ~ine 13 polja, od kojih 11 imaju sledee zna~anje:

AMUX - definie koji se signal dovodi na levi ulaz ALUa

=MBR sebira 1,

~Ale sa sebira 0,AMUX

ALU - odre|uje funkciju ALUa

ALU

operacija je

operacija je and

10, operacija je

11, operacija je

=

+

0001

,,

A BA BAA

SH - definie funkciju pomeranja Pomera~a

=

ulevo pomeranje10,

udesno pomeranje01,

pomeranjanema 00,

SH

MBR - definie punjenje MBR-a od Pomera~a

MBRne puni se

puni se=

01

,,

MBRMBR

MAR- definie punjenje MAR-a od Ble~a

MARne puni se

puni se=

01

,,

MARMAR

RD - ukazuje na operaciju ~itanja memorije

=memorije iz MBR punjenje 1,

itanja~nema 0,RD

WR - ukazuje na operaciju upis u memoriju

WRnema upisa

upis a u memoriju=

01

,, MBR

ENC - definie upis u registar RF polja

RDne vri se upis

vri se upis=

01

,,

Procesori - sinteza staze podataka i upravlja~ka jedinica

58

C - vri selekciju registra u kome se obavlja upis sa Cmag ako je ENC=1

C

bira se

bira se

1111, bira se

=

00000001

,,

PCAC

FM

B - bira se registar ~iji e sadr`aj biti prikazan na Bmag

B

bira se

bira se

1111, bira se

=

00000001

,,

PCAC

FM

A - bira se registar ~iji e sadr`aj biti prikazan na Amag

=

F sebira 1111,

AC sebira 0001,

PC sebira 0000,

AM

COND - sadr`aj ovog polja od zna~aja je kod instrukcija grananja

COND

nema grananja

grananje ako je

10, grananje ako je

11, bezuslovno grananje

===

0001 1

1

,,

NZ

ADDR - adresa potencijalnog naslednika tekue mikronstrucije

Slika 3.54 Mogui format mikroinstrukcije koji se koristi za upravljanje staze podataka

C. Vremenski redosled kod izvrenja mikroinstrukcije

U toku dosadanje analize ukazali smo samo na ~injenicu kojim se signalima mo`e vriti upravljanje stazom podataka sa Slike 3.53, bez ula`enja u detalje u kojim situacijama su ti upravlja~ki signali aktivni.

Da bi ukazali na ovaj problem neto detaljnije analiziraemo koje se aktivnosti obavljaju u toku ALU ciklusa: Prvo se vri postavljanje le~eva A i B, zatim se daje vremena da ALU i Pomera~ obave svoj posao, a na kraju vri se memorisanje rezultata. Na osnovu primera, jasno je da tok doga|aja mora da se odvija po pomenutoj sekvenci. Na primer, ako pokuamo prvo da upiemo podatak sa Cmag u neki od registara RF polja, pre nego to se postave A i B le~evi, informacija koja e se zapamtiti bie nekorektna. Da bi ostvarili korektno sekvenciranje doga|aja uveemo ~etvorofazno pomeranje. Struktura sistema za generisanje taktnih impulsa prikazana je na Slici 3.55.

Klju~ni doga|aji u toku svakog od podciklusa su sledei:

Procesori - sinteza staze podataka i upravlja~ka jedinica

59

U mikroinstrukcioni registar MIR puni se mikroinstrukcija koja treba da se izvri.

Postave se sadr`aji specifisiranih izvornih registara RF polja na Amag i Bmag i zapamte se u Ale~ i Ble~, respektivno.

Poto to su ulazi stabilni dozvoljava se (po isteku vremena) da ALU i Pomera~ obave svoju funkciju, generiu stabilan izlaz, i ako je potrebno i napune MAR.

Nakon to je izlaz Pomera~-a stabilan memorie se sadr`aj prisutan na Cmag i jedan od registara RF polja i napuni se, ako je potrebno, registar MBR.

Slika 3.55 Struktura sistema za formiranje ~etvoro-faznog taktovanja

Detaljan blok dijagram prethodno analizirane arhitekture prikazan je na Slici 3.56.

Kao to se mo`e uo~iti sa Slike 3.56, arhitekturu sistema ~ine sledee dve celine:

staza podataka - koja se nalazi na levoj strani slike, i

upravlja~ka jedinica na desnoj strani Slike 3.56.

Centralno mesto upravlja~kog dela dodeljeno je mikroprogramskoj memoriji kapaciteta 256 * 32 = 8192 bitova. Sastavni delovi upravlja~ke jedinice su registri MPC (Micro Program Counter) i MIR (Micro Instruction Registar).

Zadatak je upravlja~ke jedinice da permanentno iz mikroprogramske memorije kopira mikroinstrukciju na koju ukazuje MPC i MIR. MIR se puni u toku taktnog subciklusa 1. U toku subciklusa 2, izlaz MIR-a je stabilan, to zna~i da njegovi izlazi imaju efekat na upravljanje stazom podataka. U subciklusu 2 Amag i Bmag se koriste za prenos registarsko izvornih operanada koji se selektuju od strane dekodera A i B. U toku ovog subciklusa aktiviraju se le~evi A i B, ~ime se obezbe|uju uslovi da ulazi ALUa budu stabilni za ostatak ciklusa. Paralelno sa nabrojanim aktivnostima inkrementira se sadr`aj MPC-a (MPC←MPC+1), sa ciljem da MPC mo`e na adresu naredne sekvencijalne mikroinstrukcije. Za vreme ciklusa 3 ALU i Pomera~ obavljaju specificirane aktivnosti i generiu validan rezultat. Mikroinstrukciono polje AMUX odre|uje levi ulaz ALUa, dok je desni direktno povezan na Ble~. Ako je MAR polje mikroinstrukcije postavljeno na 1 preko Bmag puni se MAR.

Procesori - sinteza staze podataka i upravlja~ka jedinica

60

U toku subciklusa 4, podaci prisutni na Cmag, u zavisnosti od stanja upravlja~kih bitova ENC i MBR memoriu se u specificirani registar RF polja ili MBR. Upis u specificirani registar RF polja se vri ako su ispunjena sledea tri uslova:

a) ENC = 1

b) trenutak odgovora subciklusa 4

c) C polje specificira registar

Slika 3.56 Detaljan prikaz arhitekture sa Slike 3.53

Upis u MBR se vri u toku subciklusa 4 i ako je upravlja~ki bit MBR=1. Upravlja~ki signali RD i WR, aktivni su onoliko dugo koliko su prisutni u MIR. U sutini odgovarajua MIR polja deluju kao le~evi.

D. Sekvenciranje mikroinstrukcije

Veoma va`no u ovom trenutku je sagledti kako se bira, radi izvrenja, naredna mikroinstrukcija. Ve smo ukazali da se u toku subciklusa 2 MPC inkrementira sa ciljem da uka`e na narednu sekvencijalnu mikroinstrukciju. Ali, pored toga, neophodno je ugraditi i odre|eni mehanizam koji e omoguiti uslovno grananje. U tom cilju u formatu mikroinstrukcije sa Slike 3.54 koriste se dva polja, ADDR koje adresira potencijalni naslednik tekue mikroinstrukcije i polje COND koje odre|uje da li se naredna mikroinstrukcija pribavlja MPC+1 ili ADDR.

Procesori - sinteza staze podataka i upravlja~ka jedinica

61

Izbor naredne mikroinstrukcije vri blok Logika mikrosekvencera (Slika 3.56) u toku subciklusa 4 kada su signali N i Z sa izlaza ALU-a validni. Izlaz ovog bloka upravlja radom (selekcijom) multipleksera Mmux, tj. usmerava MPC+1 ili ADDR ka MPC-u.

U zavisnosti od stanja polja COND izbor naredne mikroinstrukcije se vri na sledei na~in:

00 - naredna mikroinstrukcija se pribavlja sa adrese MPC+1

01 - grananje na AADR ako je N=1

10 - grananje na ADDR ako je Z=1

11 - bezuslovno grananje na ADDR

Ako se MS bit polja COND ozna~i sa L a LS bit sa R tada upravlja~ki signal multipleksera Mmux bie zadat sledeem relacijom

Mmux LRN LRZ LR RN LZ LR= + + = + +

Kada je Mmux=1 multiplekser Mmux usmerava ADDR ka MPC a za Mmux=0 pribavlja se naredna mikroinstrukcija iz sekvence.

E.Skup instrukcija na mainskom jeziku

Mainu koju emo analizirati nazvaemo u daljem tekstu Mac_1. Memorija Mac_1 arhitekture je kapaciteta 4096 * 16 bitova. Programer vidi Mac_1 preko tri registra: SP - pokaziva~ magacina, PC - programski broja~ i AC - akumulator. Ukupno Mac_1 ima implementirana tri adresna rada: direktni, indirektni i lokalni. Rad instrukcija koje koriste direktno adresiranje 12-bitna apsolutna memorijska adresa specificira se pomou 12 LS bitova instrukcije na mainskom nivou. Ove instrukcije pogodne su za pristup globalno promenljivim programskim veli~inama. Indirektno adresiranje omoguava programeru da izra~una adresu, smesti je u AC, a zatim da pristupi memorijskoj lokaciji radi upisa ili ~itanja. Ovaj na~in adresiranja preferira se kod pristupa elementima tipa polje. Lokalnim adresiranjem specificira se ofset u odnosu na SP radi pristupa lokalnim promenljivim

Skup instrukcija arhitekture Mac_1 prikazana je na Slici 3.57.

Binarni oblik Mnemonik Instrukcija Zna~enje

0000xxxxxxxxxxxx LODD Load direct ac:=m[x] 0001xxxxxxxxxxxx STOD Store direct m[x]:=as 0010xxxxxxxxxxxx ADDD Add direct ac:=ac+m[x] 0011xxxxxxxxxxxx SUBD Subtract direct ac:=ac-m[x] 0100xxxxxxxxxxxx JPOS Jump positive if ac≥0 then

pc:=x 0101xxxxxxxxxxxx JZER Jump zero if ac=0 then

pc:=x 0110xxxxxxxxxxxx JUMP Jump pc:=x 0111xxxxxxxxxxxx LOCO Load constant ac:=x(0≤x≤4095

) 1000xxxxxxxxxxxx LODL Load local ac:= m[sp+x] 1001xxxxxxxxxxxx STOL Store local m[x+sp]:=ac 1010xxxxxxxxxxxx ADDL Add local ac:=ac+m[sp+x] 1011xxxxxxxxxxxx SUBL Subtract local ac:=ac-m[sp+x] 1100xxxxxxxxxxxx JNEG Jump negative if ac<0 then

Procesori - sinteza staze podataka i upravlja~ka jedinica

62

pc:=x 1101xxxxxxxxxxxx JNZE Jump nonzero if ac≠0 then

pc:=x 1110xxxxxxxxxxxx CALL Call procedure sp:=sp-1;

m[sp]:=pc; pc:=x

1111000000000000 PSHI Puch indirect sp:=sp-1; m[sp]:=m[ac]

1111001000000000 POPI Pop indirect m[ac]:=m[sp]; sp:=sp+1

1111010000000000 PUSH Puch onto stack sp:=sp-1; m[sp]:=ac

1111011000000000 POP Pop from stack ac:=m[sp]; sp:=sp+1

1111100000000000 RETN Return pc:=m[sp]; sp:=sp+1

1111101000000000 SWAP Swap ac, sp tmp:=as; ac:=sp; sp:=tmp

11111100yyyyyyyy INSP Increment sp sp:=sp+y(0≤x≤255)

11111110yyyyyyyy DESP Decrement sp sp:=sp-y(0≤x≤255)

Slika 3.57 Skup instrukcija na mainskom jeziku arhitekture Mac_1 Napomena: xx . . . x -predstavlja 12-bitnu adresu; yy . . . y predstavlja 8-bitnu konstantu F.Mikroasemblerski jezik

Mikroasemblerski jezik arhitekture Mac_1 zvaemo MAL (Micro Asembly Language). Sa ciljem da se MAL u~ini sli~nim konvenciji koja se koristi kod Pascala identifikatore emo obele`avati malim italic slovima.

Karakteristi~ni slu~ajevi su sledei:

iskaz dodele je oblika

ac:=a + ac

za funkciju ALUa 00, 01, 10 i 11 koristiemo sledeu notaciju:

ac:=a + ac, a:=band(ir,smask), ac:=c, a:=inv(a)

gde se band odnosi na Boolean AND a inv na invertovanje.

notacije lshift i rshift ukazuju na pomeranje ulevo i udesno respektivno. Tako na primer:

tir:=lshift(tir + tir)

postavlja sadr`aj registra tir na obe magistrale Amag i Bmag, obavlja sabiranje, pomera za jedan bit ulevo i smeta rezultat ponovo u tir.

Za bezuslovno grananje koristi se izraz goto

Kod uslovnog grananja testiraju se markeri n i z, tako na primer

if n then goto 27

Procesori - sinteza staze podataka i upravlja~ka jedinica

63

iskaze dodele i grananja mogue je kombinovati u jednu liniju. Problem se javlja kada je potrebno testirati stanje registra a ne vriti upis. Ovaj problem se reava na sledei na~in: Uvodi se pseudo promenlkjiva alu kojoj se dodeljuje vrednost izraza ALU. Tako na primer

alu:=tir; if n then goto 27

ozna~ava da tir prolazi kroz ALU (kôd ALU=10), testira se MS bit n, a bit polje ENC=0.

operacije ~itanje i upis memorije u izvornom programuprate identifikatori rd i wr.

Na Slici 3.58 dati su primeri MAL iskaza i odgovarajui oblik mikroinstrukcije

iskaz

AM

UX

CO

ND

ALU

SH

MB

R

MA

R

RD

WD

EN

C

C

B

A

AD

DR

mar:=pc; rd 0 0 2 0 0 1 1 0 0 0 0 0 00 rd 0 0 2 0 0 0 1 0 0 0 0 0 00 ir:=mbr 1 0 2 0 0 0 0 0 1 3 0 0 00 pc:=pc+1 0 0 0 0 0 0 0 0 1 0 6 0 00 mar:=ir; mbr:=ac; wr

0 0 2 0 1 1 0 1 0 0 3 1 00

alu:=tir; if n then goto 15

0 1 2 0 0 0 0 0 0 0 0 4 15

ac:=inv(mbr) 1 0 3 0 0 0 0 0 1 1 0 0 00 tir:=lshift(tir); if n then goto 25

0 1 2 2 0 0 0 0 1 4 0 4 25

alu:=ac; if z then goto 22

0 2 2 0 0 0 0 0 0 0 0 1 22

ac:=band(ir, amsk); goto 0

0 3 1 0 0 0 0 0 1 1 8 3 00

sp:=sp+(-1); rd 0 0 0 0 0 0 1 0 1 2 2 7 00 tir:=lshift(ir+ir); if n then goto 69

0 1 0 2 0 0 0 0 1 4 3 3 69

Slika 3.58 MAL iskazi

G.Mikroprogram

Struktura mikroprograma (~ini je 79 linija), pomou koje se interpretiraju instrukcije na mainskom jeziku arhitekture Mac_1, prikazana je na Slici 3.59.

Registar IR (Slika 3.53) je instrukcioni registar i koristi se za ~uvanje tekue mikroinstrukcije (opkôd instrukcije na mainskom jeziku koja se pribavlja iz memorije). Registar TIR je privremena kopija registra IR i koristi se za dekodiranje opkôd mainske instrukcije. AMASK je adresna maska, 007777 (oktalno) i koristi se da izdvoji opkôd i adresne bitove, a SMASK je maska magacina, 000377 (oktalno), a koristi se kod instrukcija INSR i DESR za izolaciju 8-bitnog ofseta.

0: mar := pc; rd; glavna petlja

1: pc := pc + 1; rd; inkrementiraj PC

2: ir := mbr; if n then goto 28;

memorii, dekodiraj mbr

3: tir := lshift(ir + ir); if n then goto 19;

4: tir := lshift(tir); if n then goto 11;

000x or 001x?

5: alu := tir; if n then goto 0000 or 0001?

Procesori - sinteza staze podataka i upravlja~ka jedinica

64

9; 6: mar := ir; rd

7: rd;

8: ac := mbr; goto 0;

9: mar := ir; mbr := ac; wr; 0001 = STOD

10: wr; goto 0;

11: alu := tir; if n then goto 9;

0010 or 0011?

12: mar := ir; rd; 0010 = ADDD

13: rd;

14: ac := mbr + ac; goto 0;

15: mar := ir; rd; 0011 = SUBD

16: ac := ac + 1; rd; Napomena: x - y = x + not y

17: a := inv(mbr);

18: ac := ac + a; goto 0;

19: tir := lsift(tir); if n then goto 25;

010x or 011x?

20: alu := tir; if n then goto 23;

0100 or 0101?

21: alu := ac; if n then goto 0;

0100 = JPOS

22: pc := band(ir, amask); goto 0;

obavi grananje

23: alu := ac; if n then goto 22;

0101 = JZER

24: goto 0; bezuslovni skok na po~etak

25: alu := tir; if n then goto 27;

0110 or 0111?

26: pc := band(ir, amask); goto 0;

0110 = JUMP

27: ac := band(ir, amask); goto 0;

0111 = LOCO

28: tir := lshift(ir + ir); if n then goto 40;

10xx or 11xx?

29: tir := lshift(tir); if n then goto 35;

100x or 101x?

30: alu := tir; if n then goto 33;

1000 or 1001?

31: a := ir + sp; 1000 = LODL

32: mar := a; rd; goto 7;

33: a := ir + sp; 1001 = STOL

34: mar := a; mbr := ac; wr; goto 10;

35: alu := tir; if n then goto 38;

1010 or 1011?

36: a := ir + sp; 1010 = ADDL

37: mar := a; rd; goto 13;

38: a := ir + sp; 1011 = SUBL

39: mar := a; rd; goto 16;

40: tir := lshift(tir); if n then goto 46;

110x or 111x

Procesori - sinteza staze podataka i upravlja~ka jedinica

65

41: alu := tir; if n then goto 44;

1100 or 1101?

42: alu := ac; if n then goto 22;

1100 = JNEG

43: goto 0;

44 alu := ac; if z then goto 0;

1101 = JNZE

45: pc := band(ir, amask); goto 0;

46: tir := lshift(tir); if n then goto 50;

47: sp : =sp + (-1); 1110 = CALL

48: mar := sp; mbr := pc; wr;

49: pc := band(ir, amask); wr;goto 0;

50: tir := lshift(tir); if n then goto 65;

1111, ispitati

51: tir := lshift(tir); if n then goto 59;

52: alu := tir; if n then goto 56;

53: mar := ac; rd; 11110000 = PSHI

54: sp : =sp + (-1); rd;

55: mar := sp; wr; goto 10;

56: mar := sp; sp : =sp + ; rd; 1111001 = POPI

57: rd;

58: mar := ac; wr; goto 10;

59: alu := tir; if n then goto 62;

60: sp : =sp + (-1); 1111010 = PUSH

61: mar := sp; mbr := pc; wr; goto 10;

62: mar := sp; sp : =sp + ; rd; 1111011 = POP

63: rd;

64: ac := mbr; goto 0;

65: tir := lshift(tir); if n then goto 73;

66: alu := tir; if n then goto 70;

67: mar := sp; sp : =sp + ; rd; 1111100 = RETN

68: rd;

69: pc := mbr; goto 0;

70: a := ac; 1111101 = SWAP

71: ac := sp;

72: sp := a; goto 0;

73: alu := tir; if n then goto 76;

74: ac := band(ir, smask); 1111110 = INSP

75: sp := sp + a; goto 0;

76: a := band(ir, smask); 1111111 = DESP

77: a := inv(a);

Procesori - sinteza staze podataka i upravlja~ka jedinica

66

78: a := a + 1; goto 75;

Slika 3.59 Struktura mikroprograma

Kao i svi interpreteri, program sa Slike 3.59 ~ini glavna petlja koja pribavlja, dekodira i izvrava instrukcije. Glavna petlja po~inje sa linije 0, tj. pribavljanjem mikroinstrukcije (mainske instrukcije) na koju pokazuje PC. Dok ~eka da pribavi instrukciju, mikroprogram inkrementira PC i zad`ava aktivan signal RD. Instrukcija se pribavlja u toku linije 2, smeta u IR i istovremeno testira MS bit (15 bit). Ako je MS bit jednak jedinici, dekodiranje produ`avanje sa linije 28, a ako nije sa linije 3. Ako usvojimo da je pribavljena instrukcija tipa LODD, na liniji 3 se testira bit 14, a TIR se puni sa po~etnim oblikom instrukcije pomeren ulevo za dve bit pozicije (pomeranje za jedan bit poziciju vri ALU, a za jo jednu Pomera~). Testiranje MS bit pozicije vri se u sutini testiranjem statusnog bita N sa izlaza ALUa.

Sve instrukcije koje imaju 00 na MS bit pozicije na liniji 4 testiraju bit 13, tako da sve instrukcije koje po~inju sa 001 prelaze naliniju 11. Liniju 5 karakterie mikroinstrukcija za koju je ENC=0, tj. testira se TIR ali se ne menja njegov sadr`aj. U zavisnosti od testa, selektuje se kôd LODD ili STOD.

Kod instrukcije LODD, potrebno je prvo pribaviti re~ iz memorije koja se direktno adresira punjenjem 12 LS bitova IR-a u MAR.

Liniju 7 karakterie aktivnost ~ekanja. Kada se re~ dobavi, kopira se u AC i ska~e na liniju 0. Izvrenja instrukcija STOD, ADDD i SUBD su sli~na. Jedina razlika je se sastoji u na~inu izvo|enja oduzimanja. U sutini koristi se prezentacija dvoji~nog komplementa, tako da va`i:

x y x y x y x y− = + − = + + = + +( ) ( )1 1

Dodavanje 1 sadr`aju AC vri se u liniji 16.

Mikrokôd za JPOS po~inje sa linije 21. Ako je AC<0, grananje se vri naliniju 0. Kada je AC≥0, vri se maskiranje 12 LS bitova IR-a a rezultat smeta u PC (maska je 007777 oktalno). JZER (linija 23) radi suprotno od JPOS. Kod JPOS kada je uslov ispunjen grananje se obavlja i vraamo se na liniju 0, dok kod JZER ako je uslov ispunjen, obavlja se grananje. Efekat instrukcije JUMP i LOCO se jasno uo~ava sa sl.7

Sa stanovita izvrenja interesantna je instrukcija LODL. Kod ove instrukcije apsolutna memorijska adresa kojoj se obraamo izra~unava se sabiranjem ofseta, koji je deo instrukcije, sa sadr`ajem SPa. Nakon toga inicira se ciklus ~itanja memorije. Imajui u vidu da je ostatak kôda identi~an kao i LODL i LODD koriste se linije 7 i 8. Analogni kôdovi se koriste za STOL, ADDL i SUBL. Kôd za JNEG i JNZE sli~an je kôdu JZER i JPOS.

Instrukcija CALL prvo dekrementira SP, zatim smeta u magacin povratnu adresu, i kona~no ska~e na proceduru. Ostale mikroinstrukcije imaju 1111 na svim MS bit pozicijama, tako da se na osnovu dekodiranja adresa odre|uje njihov po~etak.

Test pitanje 3.25

Na ta ukazuje pojam paralelne staze podataka?

Odgovor U toku analize prethodnih zadataka opisali smo, uglavnom, strukturu jednostavnih staza podataka, tj. procesora organizovanih oko jedne ili dve magistrale. Ali, na `alost, kod znatnog broja aplikacija koje karakterie rad pri velikim brzinama, jednostavne staze podataka su suvie spore. Zbog toga ako `elimo da poveamo performanse koje se odnose na brzinu obrade neophodno je izvriti redizajn spore staze podataka na takav na~in da ona bude sposobna da izvrava nekoliko operacija paralelno. Ovakvi tipovi staze podataka poznati su kao paralelne staze podataka.

Procesori - sinteza staze podataka i upravlja~ka jedinica

67

Jedno od reenja da se paralelizira staza podataka zasniva se na poveanju broja portova RF polja i korienje nekoliko funkcionalnih jedinica, kako je to prikazano na Slici 3.60.

U konkretnom slu~aju sastavni delovi staze podataka su dva multipleksera MUX_1 i MUX_2, 6-portno RF polje (~etiri porta se koriste za ~itanje a dva za upis), 6 magistrala (~etiri za operande i dve za rezultate), i ~etiri funkcionalne jedinice (ALU, pomera~, mno`a~ i deljitelj). Ovakav tip staze podatatka mo`e da obavlja dve operacije paralelno, jednu u ALU ili pomera~u, a drugu u mno`a~u ili deljitelju.

Staza podataka sa Slike 3.60, zbog ograni~enog broja resursa, karakterie se i ograni~enim paralelizmom. Na primer, ne mo`e istovremeno da obavlja mno`enje i deljenje ili pomeranje i ALU operaciju, jer ove jedinice koriste iste magistrale za izvorne operande i rezultate.

U optem slu~aju, da bi se postigla najbolja uskla|enost izme|u algoritama i staze podataka koja se projektuje shodno potrebama potrebno je koristiti vei broj razli~itih tipova resursa kao to su RF polja, registara, memorija i dr., koji se povezuju preko veeg broja portova na po nekoliko magistrala. Magistrale se uglavnom koriste kao putevi preko kojih se dobavljaju izvorni operandi i putevi preko kojih se rezultati operacija smetaju u memorijskim jedinicama. Mogue je tako|e da u svakoj jedinici bude ugra|eno vei broj ulaznih i izlaznih le~eva u kojima se privremeno pamte ulazni operandi i rezultati. Le~ovanjem mo`e zna~ajno da se skrati vreme koje magistrale koriste za prenos operanda i rezultata a time i povea saobraaj na magistrali. Sa druge strane le~ovanje zahteva neto komplikovanije upravljanje.

Jedan tipi~an primer staze podataka koja koristi jako izra`en paralelizam kod prenosa podataka a koja je namenski projektovana prikazana je na Slici 3.61. Stazu podataka ~ine broja~, registar, tro-portno RF polje i dvo-portna memorija. Sastavni deo strukture su ~etiri magistrale, tri funkcionalne jedinice (dve ALU i jedan mno`a~), vei broj multipleksera i le~eva. Ovakve eme se ~esto sreu kod ASIC kola.

Slika 3.60 Paralelna staza podataka

Procesori - sinteza staze podataka i upravlja~ka jedinica

68

Slika 3.61 Tipi~an primer jedne staze podataka projektovane za specifi~nu aplikaciju

Test pitanje 3.26

Koji tipovi upravlja~kih jedinica postoje?

Odgovor Razli~iti modeli upravlja~kih jedinica i Finite State Machine-a tj., FSM-a, su sli~ni medjusobno jer se sastoje od logike koja odre|uje naredno stanje, registra stanja i izlazne logike. Jedan klasi~an primer upravlja~ke jedinice kod koje registar stanja ~ine D-flip-flopovi a izlazna logika i logika narednog stanja se mo`e implementirati pomou dvo-nivovske AND-OR ili vienivovske logi~ke mre`e, prikazan je na Slici 3.62.

U odre|enim slu~ajevima upravlja~ka jedinica mo`e da ima stotinu stanja, veliki broj ulaza, izlaza i upravlja~kih signala tako da njena implementacija mo`e biti veoma slo`ena. Zbog ovoga koriste se aplikativni stilovi projektovanja koji imaju za cilj da pojednostave implementaciju ovih slo`enih upravlja~kih jedinica.

Sa ciljem da se pojednostavi implementacija izlazne logike i logike narednog stanja koristi se registar stanja i dekoder, kako je to prikazano na Slici 3.63.

Procesori - sinteza staze podataka i upravlja~ka jedinica

69

Slika 3.62 Model upravlja~ke logike

Kod ovog reenja svako stanje identifikuje signal-stanja koji je jednak 1 kada je registar-stanja u tom stanju, dok je u ostalim slu~ajevima 0. Ugradnjom dekodera pojednostavljuje se implementacija logike narednog-stanja kao i izlazne logike ali pojednostavljuju se tako|e i Bulovi izrazi koji se odnose na ulaze registra-stanja, upravlja~ke izlaze staze podataka (interne) i upravlja~ke izlaze (eksterne). U slu~ajevima kada stanje ovih signala zavisi samo od vrednosti registra stanja, isti se mogu implementirati sa n-ulaznim OR logi~kim kolima, gde n predstavlja broj stanja za koje je svaki signal aktivan. Pored toga, oni slu~ajevi kod kojih su ovi signali tako|e zavisni od stanja statusnih ili ulaznih signala, se mogu implementirati pomou AND-OR logike kod koje AND gejtovi imaju obi~no dva ulaza, od kojih jedan predstavlja izlaz dekodera stanja a drugi statusni ili ulazni signal (Slika 3.63).

Logiku narednog stanja mo`emo tako|e zna~ajno redukovati ako po|emo od predpostavke da FSM-ove karakterie bezuslovna sekvenca stanja kod koje svako stanje ima samo jednog naslednika. [ta vie, ako se stanja u toj sekvenci kodiraju tako da se svako kodirano stanje mo`e dobiti inkrementiranjem kodiranog stanja koje odgovara prethodnom stanju, tada se registar stanja mo`e zameniti broja~em. Reenje koje odgovara ovoj alternativi prikazano je na Slici 3.64. U ovom slu~aju, logika_narednog_stanja generie dodatna dva signala: (a) signal punjenje/brojanje, L/C; i (b) signal za selekciju ulaza multipleksera Sel_Mux. Uka`imo da signal L/C mo`e da inkrementira broja~ ili postavlja broja~ u novo stanje koje odgovara adresi grananja. Grananje mo`e biti interno, tj odre|eno od strane logike_narednog_stanja, ili eksterno (informacija o grananju se dobavlja spolja uz pomo upravlja~kih ulaza). Korektna vrednost koja odgovara stanju grananja bira se pomou MUX-1.

Procesori - sinteza staze podataka i upravlja~ka jedinica

70

Slika 3.63 Upravlja~ka jedinica zasnovana na registru-stanja i dekoderu

Slika 3.64 Upravlja~ka jedinica zasnovana na broja~ima

Napomena: L - punjenje (Load); C - brojanje (Count)

Drugi na~in da se modularizira implementacija upravljanja zasniva se na ideji kodiranja ~esto korienih zadataka u obliku potprograma. Na primer, umesto da se ponavlja ista sekvenca nekoliko puta sekvencu je mogue zameniti pozivom potprograma a nakon zavretka potprograma povratkom. Da bi se ovaj princip upravljanja izveo neophodno je da postoji magacin (push down stack) u kome se pamti stanje koje sledi nakon poziva potprograma. Reenje koje koristi ovaj princip rada, prikazano je na Slici 3.65. Kao to se mo`e uo~iti u magacin se ~uva stanje koje sledi nakon tekueg stanja. Nakon zavretka potprograma stanje koje je zapameno u magacinu puni se u registar-stanja. Uo~imo da kod ovog reenja logika_narednog_stanja generie dva dodatna signala koji se koriste za smetanje podataka u magacin (push) i izbavljanje podataka iz magacina (pop).

Procesori - sinteza staze podataka i upravlja~ka jedinica

71

Slika 3.65 Upravlja~ka jedinica zasnovana na rad sa registrom-stanja i magacina

Slika 3.66 Upravlja~ka jedinica zasnovanja na mikroprogramskom upravljanju

Kona~na strategija za pojednostavljenje upravlja~ke jedinice zahteva da se logika narednog-stanja zameni upravlja~kom memorijom, koja se uobi~ajeno implementira pomou ROM ili PROM. Kod ove strategije registar-stanja se koristi kao adresni-registar upravlja~ke memorije. Reenje koje se zasniva na ovom konceptu prikazano je na Slici 3.66. Treba ukazati da se kod ovog projektantskog reenja ograni~ava broj upravlja~kih i statusnih signala koji se koriste za selekciju narednog-stanja, jer se cena upravlja~ke memorije udvostru~ava sa svakim novim upravlja~kim ili statusnim signalom. Zbog toga se koristi samo jedan ulazni ili statusni signal za selekciju narednog stanja, to

Procesori - sinteza staze podataka i upravlja~ka jedinica

72

ograni~ava mogunost grananja na grananje u dva smera (two-way branching). Drugim re~ima, naredna adresa mo`e biti inkrement u odnosu na tekuu ili adresa na kojoj se vri grananje. Grananje u dva smera se implementira pomou dva multipleksera koji se u sutini koriste kao selektori adresa. Postoji tako|e i selektor (multiplekser) uslova koji bira da se jedan od upravlja~kih ili statusnih signala koristi za selekciju naredne adrese. Naredna adresa se bira izme|u inkrementirane tekue adrese ili adrese grananja koja se ~ita iz ROM-a, magacina ili iz spoljnjeg okru`enja. Ovaj stil upravljanja se zove mikroprogramsko upravljanje a ROM u kome se smeta informacija o upravljanju zovemo mikroprogramsku memoriju.

Zadatak 3.23

Staze podataka se koriste kod svih standardnih procesora i ASIC implementacija sa ciljem da obave kompleksna numeri~ka izra~unavanja ili manipulacije nad podacima. Pored aritmeti~kih jedinica, logi~kih jedinica i jedinica za pomeranje podataka, staze-podataka sadr`e i memorijske elemente koji se koriste za privremeno ~uvanje podataka. Ukazati na slo`enost strukture staze-podataka koja se koristi da izvri sabiranje 100 brojeva shodno sledeoj relaciji:

suma= ∑=

100

1iix

Odgovor Izra~unavanje se mo`e implementirati iterativno, deklarisanjem promenljive suma kao privremene promenljive, inicijalno postavljena na nuli, a izvrenjem sledeih iskaza

suma=0 petlja:

for i=1 to 100 suma=suma + xi

end petlja Telo petlje se mo`e izvriti na 32-bitnoj stazi podataka koju ~ini jedan registar nazvan Akumulator i ALU. Promenljiva suma bie memorisana u Akumulatoru. Pri svakom taktnom intervalu ALU e vriti sabiranje nove xi i suma a rezultat e se ponovo ~uvati u Akumulatoru.

Na Slici 3.67 prikazana je jedna jednostavna staza podataka koja mo`e da obavi specificiranu sekvencu iskaza. Sastavni deo staze podataka predstavlja Selektor tipa 2-na-1. Selektor bira “0” ili ulaz spoljni-operand koji se direktno vodi na ulaz A ALU-a. Desni operand (ulaz B ALU-a) je uvek sadr`aj Akumulatora. Izlaz Akumulatora istovremeno pobudjuje jedan trostati~ki bafer (TSB).

Akumulator se u principu realizuje kao pomera~ki registar sa paralelnim punjenjem. Na Slici 3.67 b) prikazan je sadr`aj 9-bitne upravlja~ke re~i koja specifira vrednosti upravlja~kih signala za Selektor, ALU, Akumulator i TSB. Sve komponente u stazi podataka manipuliu sa podacima obima 32-bita.

Pri svakom taktnom intervalu, specifi~na upravlja~ka re~ definie rad staze - podataka. Da bi odredili sumu od 100 brojeva potrebna su 102 takta intervala. Upravlja~ka re~ bie ista za sve taktne intervale sa izuzetkom prvog i zadnjeg. U prvom taktnom intervalu neophodno je obrisati sadr`aj Akumulatora. U naredna 100 taktna intervala sabira se novi spoljni operand (tj. podatak) sa akumuliranom sumom. U zadnjem taktnom intervalu akumulirana suma se generie na izlazu.

Procesori - sinteza staze podataka i upravlja~ka jedinica

73

a) ematski dijagram staze podataka

8 7 6 5 4 3 2 1 0

selekcija ulaza

ALU upravljanje

iznos i smer pomeranja

upravljanje akumulatorom

dozvola izlaza

b) upravlja~ka re~

Slika 3.67 Jednostavna staza podataka sa akumulatorom

I pored toga to se staza podataka sa Slike 3.67 mo`e efikasno koristiti za izvrenje jednostavnih aritmeti~kih izraza, implementacija komplikovanijih izraza obi~no zahteva korienje po nekoliko privremeno promenljivih. Zbog ovoga pogodnije je kao stazu-podataka koristiti strukturu koja umesto Akumulatora koristi registarsko-polje (RF-registar file). Na Slici 3.68 prikazana je struktura jedne kompleksnije staze-podataka koju ~ini Selektor, tro-portno 8*32-bitno registarsko RF polje, ALU, Pomera~ i TSB-ovi. U konkretnoj realizaciji oba operanda se dobavljaju iz RF polja, a takodje se u RF polje smeta rezultat u toku svakog taknog intervala. Rad ALU-a i Pomera~a opisan je tablicama prikazanim na Slikama 3.68 b) i 3.68 c), respektivno. Sadr`aj upravlja~ke re~i definisan je tablicom na Slici 3.68 d). Uo~imo da je upravlja~ka re~ obima 20 bitova.

Procesori - sinteza staze podataka i upravlja~ka jedinica

74

ulazni_port

selektorS

456

ALU

MS1

S0

12 pomera~

IL IR

S1

S0

S23

0

711

8-10

12-14

1516-18

ClK

WAWE

RAAREA

RABREB

8*mRF polje

3

3

3

izlazni_port

rezultantna mag.

A Bmag A mag B

"0" "0"

19

a) Staza podataka

M F1 F0 ALU operacija0 0 0 komplement A0 0 1 AND A0 1 0 ExOR A0 1 1 OR A1 0 0 dekrement A1 0 1 Add1 1 0 Sub1 1 1 inkrement Ab) Rad ALU-a

S2 S1 S0 rad Pomera~a0 0 0 prolaz0 0 1 prolaz0 1 0 ne koristi se0 1 1 ne koristi se1 0 0 pomeranje ulevo1 0 1 rotiranje ulevo1 1 0 pomeranje udesno1 1 1 rotiranje udesnoc) Rad Pomera~a

9 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 S adresa upisa

WA, WE adresa ~itanja A

RAA, REA adresa ~itanja B

RAB, REB

ALU operacija M, F1-F0

operacija pomera~a

S2-S0

OE

d) Upravlja~ka re~

Slika 3.68 Staza podataka sa 3-portnim RF poljem

Zadatak 3.24

Koristei stazu podataka sa Slike 3.68, (zadatak 3.23) projektovati strukturu sistema koja e biti u stanju da broji broj jedinica u ulaznoj re~i. Na kraju sekvence brojanja rezultat generisati na izlazni-port.

Odgovor Kod reavanja problema usvajamo da staza podataka prihvata podatke od strane spoljnog okru`enja preko ulaza ulazni-port. Koristiemo promenljive Podatak, Broj, Maska i Privremena za opis algoritama pomou koga brojimo jedinice. Promenljiva Podatak se koristi za ~uvanje podataka kod koga analiziramo broj nula i jedinica. Algoritam nakon toga analizira Podatak po~ev od LSB do MSB i dodaje 1 promenljivoj Broj za svaku jedinicu koju detektuje u Podatak. Promenljiva Maska koristi se za ~uvanje konstante 1, a promenljiva Privremena za privremeno ~uvanje LSB Podatak-a. Nakon inicijalizacije, algoritam izdvaja LSB Podatak-a, smeta ga u Privremena, sabira Privremena sa Broj i smeta u Broj, i kona~no pomera udesno jednu bit poziciju Podatak. Ovu sekvencu treba

Procesori - sinteza staze podataka i upravlja~ka jedinica

75

ponavljati sve dok Podatak ne sadr`i sve nule. Kada je obim re~i Podatak razli~it (recimo 8-, 16-, 64-bitni) algoritam treba da obavlja pomeranje razli~it broj puta u saglasnosti sa obimom re~i.

Na Slici 3.69 a) prikazan je osnovni algoritam za brojanje broja jedinica u re~i podatka. Iskazi 1, 2 i 3 se koriste za inicijalizaciju promenljivih. Iskazi 4 i 5 namenjeni su za dodavanje 1 promenljivoj Broj uvek kada je LSB Podatak-a jednak 1. Iskazom 6 promenljiva Podatak se pomera jedno mesto udesno a istovremeno na mesto MSB Podatak se upisuje 0. Iskaz 7 se koristi za aktiviranje izlaza Izlazni port. Simboli >> i << ukazuju na pomeranje podataka ulevo ili udesno uz iznos pomeranja koji prati simbole, tj. >>1 odgovara pomeranju od jedne bit pozicije udesno.

1. Podatak := ulazni port 2. Broj := 0 3. Maska := 1 while Podatak : ≠ 0 repeat 4. Privremena := Podatak and Maska 5. Broj := Broj + Privremena 6. Podatak := Podatak >>1 end while 7. Izlazni port := Broj

a) Osnovni algoritam za brojanje jedinica

Privremena R4

Broj R3:

Maska R2:

nula R0:

Podatak R1:

b) Dodela registara promenljivim, (Napomena: U R0 se uvek ~uva 0)

upravlja~ke re~i

S adresa upisa

adresa ~itanja A

adresa ~itanja B

ALU operacija

operacija pomeranja

OE

1 1 R1 X X X X 0 2 0 R3 R0 R0 Add prolaz 0 3 0 R2 R0 X Inkrement A prolaz 0 4 0 R4 R1 R2 And prolaz 0 5 0 R3 R3 R4 Add prolaz 0

6 0 R1 R1 R0 Add pomeranje udesno

0

7 0 nijedan R3 R0 Add prolaz 1 c) Upravlja~ke re~i kod broja~a jedinice

Slika 3.69 Algoritam za brojanje jedinica

Procesori - sinteza staze podataka i upravlja~ka jedinica

76

Kod implementacije ovog algoritma moramo prvo promenljivim da dodelimo registre u RF polju. Kao to se vidi sa Slike 3.69 b), promenljivima Podatak, Maska, Broj i Privremena se dodeljuju registri R1, R2, R3 i R4. Nakon to su promenljivime smetene u registre, mogue je napisati korektne upravlja~ke re~i za svaki iskaz sa Slike 3.69 a). Sadr`aj odgovarajuih upravlja~kih re~i prikazan je na Slici 3.69 c), gde se u odgovarajuim kolonama upravlja~ke re~i koriste mnemonici, adrese operanada i specificirani registri.

Da bi upravljali stazom-podataka, usvojiemo da je Broja~-jedinica izveden kao posebni modul koji e po~eti sa brojanjem jedinica u re~i podataka kad je signal Start jednak 1, a postavie Zavrio na 1 kada je rezultat dostupan. Kao to se vidi sa Slike 3.70, FSM prezentacija Broja~a-jedinica ~ini osam stanja. Broja~-jedinica ostaje u stanju S0 sve dok signal Start ne postane 1, a zatim u naredna sedam stanja S1, ......, S7 izvravae algoritam shodno aktivnostima specificiranim na Slike 3.70 a),. Kona~no, u stanju S7, generisae se rezultat, tj. postavie se signal Zavrio na 1, a nakon toga sledi povratak u po~etno stanje S0.

S0

S1

S2

S3

S4

S5

S6

S7

zavr

io=1

poda

tak=

0

podatak=0

start=1

start=0

Podatak=Ulazni_port

Broj=0

Maska=1

Privremena=Podatak and Mask

Broj=Broj+Privremena

Podatak=Podatak>>1 (pomeranje udesno)

Izlazni_port=Broj

Slika 3.70 FSM prezentacija broja~a - jedinica

Logika kontrolera Broja~a-jedinica prihvata dva ulazna signala Start i Podatak ≠ 0 a generie jedan izlazni signal Zavrio. Start i Zavrio se koriste za komuniciranje kod po~etka i zavretka sa ostatkom sistema. Signal Podatak ≠ 0 je u sutini statusni signal koga generie logika staze-podataka. U sutini, u toku svakog taktnog intervala, shodno Slici 3.68, (zadatak 3.23), logika kontrolera mora da generie 20 upravlja~kih signala (upravlja~ku re~ sl. 2b ~ine 20 bitova). Da bi implementirali osam stanja, potrebna su nam tri D-flip-flopa, koje emo ozna~iti kao Q2, Q1 i Q0. Na Slici 3.70 a), b) i c) prikazana je tabela naredno stanje, preslikavanje, i jedna~ine narednog stanja, respektivno.

Start, (Podatak = 0)

Procesori - sinteza staze podataka i upravlja~ka jedinica

77

stanja Q2 Q1 Q0 00 01 10 11 S0 0 0 0 000 000 001 001 S1 0 0 1 010 010 010 010 S2 0 1 0 011 011 011 011 S3 0 1 1 100 100 100 100 S4 1 0 0 101 101 101 101 S5 1 0 1 110 110 110 110 S6 1 1 0 100 111 100 111 S7 1 1 1 000 000 000 000

a) tabela naredno stanje

Q2 = 0 Q2 = 1

start Q1Q0 (Podatak ≠ 0) 00 01 11 10 00 01 11 10

00 000 010 100 011 101 110 000 100 01 010 010 100 011 101 110 000 111 11 001 010 100 011 101 110 000 111 10 001 010 100 011 101 110 000 100

Q2,Q1,Q0 b) Karnaugh-ova mapa

Q2 (naredno)= Q2 Q1 Q0 + Q2 Q1 + Q2 Q0

Q1 (naredno)= Q1 Q0 + Q2 Q1 Q0 + (Podatak=0) Q1 Q0

Q0 (naredno)= Q2 Q1 Q0 + Q2 Q1 Q0 + Start Q1 Q0 + (Podatak=0) Q2 Q0

c) jedna~ine narednog stanja

Slika 3.71 Logika narednog stanja kod Broja~a-jedinica

Upravlja~ka logika Broja~a-jedinica se mo`e izvesti na osnovu upravlja~kih re~i prikazanih na Slici 3.69 c) Na Slici 3.72 a) prikazana je tabela izlazne logike koja se izvodi na osnovu Slike 3.69 c), zamenom korektnih binarnih vrednosti za sve mnemonike. Uo~imo da su minimizirani izrazi za svaki upravlja~ki signal sa Slike 3.69 a) izvedeni shodno tehnikama za minimizaciju. Jedna~ina koje se odnose na upravljanje su date na Slici 3.72 b). Kona~no, na Slici 3.73 prikazana je ema broja~a-jedinica koji koristi stazu podataka prikazanu na Slici 3.68 a).

adresa upisa adresa ~itanja A adresa ~itanja B ALU

operacija

operacija

pomeranja

stanje

Q2, Q1, Q0

S WA2 WA1 WA0 WE RAA2RAA1 RAA0 REA RAB2RAB1 RAB0 REB M S1 S0 S2 S1 S0

OE

S0 0 0 0 0 X X X 0 X X X 0 X X X 0 X X X X X X 0 S1 0 0 1 1 0 0 1 1 X X X 0 X X X 0 X X X X X X 0 S2 0 1 0 0 0 1 1 1 X X X 0 X X X 0 1 0 1 0 0 0 0 S3 0 1 1 0 0 1 0 1 X X X 0 X X X 0 1 1 1 0 0 0 0 S4 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 S5 1 0 1 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 0 S6 1 1 0 0 0 0 1 1 0 0 1 1 X X X 0 1 0 1 1 1 0 0 S7 1 1 1 0 X X X 0 0 1 1 1 X X X 0 1 0 1 0 0 0 1

a) izlazi logi~ke tabele

IE= Q2 Q1 Q0 RAA2=0 RAB2= Q0 M= Q1+ Q0

Procesori - sinteza staze podataka i upravlja~ka jedinica

78

WA2= Q1 Q0

WA1=Q2Q0+ Q2 Q1

WA0= Q1 Q0+Q1 0Q

WE=Q2 Q1 + 2Q Q0+Q1 0Q

RAA1= Q0 RAA0=1 REA= Q1

RAB1= 0Q

RAB0=0

REB= Q2 1Q

S1= Q2 Q0

S0=1 S2=S1= Q2 Q1 0Q S0=0 OE= Q2 Q1 Q0

b) Jedna~ine koje definiu stanje izlaznih signala upravlja~ke logike

Slika 3.72 Izlazna logika kontrolera Broja~a-jedinica

Slika 3.73 Struktura logike broja~-jedinica

Procesori - sinteza staze podataka i upravlja~ka jedinica

79

Zadatak 3.25

Projektovati red ~ekanja tipa FIFO, kapaciteta 1k RAM koji e biti prazan kada pokaziva~i zaglavlja i repa ukazuju na istu lokaciju, a pun kada se pokaziva~i zaglavlja i repa razlikuju za 1

Zadatak 3.26

Projektovati stazu podataka koja se koristi za izra~unavanje sledeih izraza:

∑=

⋅n

iii xa

1

i

n

iii bxa +⋅∑

=1

∑=

++n

iiii cxx

1

2

Zadatak3.27

Neka je staza podataka, prikazana na Slici 3.68 (zadatak 3.23), obima 8 bita.

(a) Kreirati algoritam za sabiranje dve pozitivne celobrojne 8-bitne vrednosti i generisanje 9-bitnog rezultata. Odrediti sadr`aj upravlja~ke re~i za svaki iskaz algoritma.

(b) Definisati i implementirati upravlja~ku jedinicu (kontroler) za stazu podataka, koja e izvravati algoritam definisan pod a).

Zadatak 3.28

Projektovati RF polje kapaciteta 8*n sa:

1. jednim portom za upis i dva za ~itanje;

2. dva porta za upis i jednim za ~itanje;

3. dva porta za upis i dva za ~itanje.

Zadatak 3.29

Koristei tro-adresne instrukcije, kreirati programke sekvence koje se koriste za ~itanje i upis u:

a) magacin koji raste nani`e;

b) red ~ekanja tipa FIFO;

c) red ~ekanja tipa LIFO.

Zadatak 3.30

Kreirati procedure za ~itanje i upis u red ~ekanja tipa FIFO. Format instrukcija je dvo-adresni. Procedure kreirati koristeisledee adresne na~ine rada:

(i) direktno adresiranje;

(ii) indirektno adresiranje;

(iii) relativno adresiranje.

Procesori - sinteza staze podataka i upravlja~ka jedinica

80

Zadatak 3.31

Kreirati procedure za izbacivanje i umetanje elemenata u listi. Usvojiti da svaka lista elemenata koristi dve memorijske re~. Prva re~ predstavlja vrednost elementa a druga adresu narednog elementa u listi. Koristiti isklju~ivo tro-adresni format instrukcija, za sledee adresne na~ine rada: (a) direktno adresiranje; (b) indirektno adresiranje.

Zadatak 3.32

Napisati sekvencu instrukcija za hipoteti~ki procesor koja se koristi za izra~unavanje izraza:

∑=

⋅100

1iii xa , pri ~emu je: A=[a1, a2, ..., a100] i X=[x1, x2, ..., x100]. Koristiti dvo-adresne instrukcije za

sledee adresne na~ine rada: a) direktno adresiranje; b) relativno adresiranje; c) indeksno adresiranje sa auto-inkrementiranjem.

Test pitanje 3.27

Objasniti princip rada struktura na Slici 3.74.

Odgovor a) Na osnovu tablice istinitosti:

c1 c2 funkcija

0 1 Apsolutna vrednost

1 0 Minimun

1 1 Maksimum

zaklju~ujemo da se radi o jedinici za izra~unavanje minimuma (od a i b), maksimuma i apsolutne vrednosti.

b) Na osnovu tablice istinitosti:

c1 c0 funkcija

0 0 Sabiranje

0 1 Minimun

1 0 Oduzimanje

1 1 Maksimum

zaklju~ujemo da se radi o jedinici za izra~unavanje zbira, razlike, munimuma i maksimuma.

c) Na osnovu tablice istinitosti:

c1 c0 funkcija

1 0 Sabiranje

0 1 Apsolutna vrednost

1 1 Oduzimanje

zaklju~ujemo da se radi o jedinici za izra~unavanje zbira, apsolutne vrednosti i razlike

Procesori - sinteza staze podataka i upravlja~ka jedinica

81

Sabira~

MUX01

MUX01

C1

C0

Bit znaka

a b

Sabira~

MUX01

MUX01

C1

C0

Bit znaka

a b

Sabira~

MUX01

C1

C0

Bit znaka

a b

C0

Bit znaka

a b

Sabira~

MUX01

C2

C1

MUX01

a) b)

c) d)

Slika 3.74 Tipovi kola za procesiranje

d) Na osnovu tablice istinitosti:

c2 c1 c0 funkcija

0 0 1 Sabiranje

1 0 0 Apsolutna vrednost

1 0 1 Oduzimanje

1 1 0 Minimun

1 1 1 Maksimum

zaklju~ujemo da se radi o jedinici za izra~unavanje zbira, apsolutne vrednosti, razlike, munimuma i maksimuma.

Zadatak 3.33

Blok dijagram staze podataka koja sve operacije obavlja za jedan taktni interval, prikazana je na Slici 3.75 a) 17-bitna upravlja~ka re~ na Slici 3.75 b), a kodiranje upravlja~ke re~i na Slici 3.75 c).

Procesori - sinteza staze podataka i upravlja~ka jedinica

82

1

RW3

DA3

AA

Write D podaci

D adrese 8 * nA adrese RF polje B adrese

A podaci B podaci

1 0 MUX B

Funkcionalnajedinica

A B

n

n

1

n nn

3

1

1

1

1

V

C

N

Z

0 1 MUX B

5

nn

1

Ulaz podataka

FS

MD

Bus A

Bus D

Adresni izlazi

Izlaz podataka

MB

Ulaz konstante

BA

nBus D

n

a) blok dijagram staze podataka

Napomena: Svi upravlja~ki signali su ozna~eni kao: XY

DA AA BA MB FS MD RW

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

b) upravlja~ka re~

DA, AA, BA MB FS MD RW

funkcija kôd funkcija kôd funkcija kôd funkcija kôd funkcija kôd R0 000 Registar 0 F=1 00000 Funkcija 0 nema Write 0 R1 001 Konstanta 1 F =A+1 00001 ulaz podataka 1 Write 1 R2 010 F=A+B 00010

R3 011 F=A+B+1 00011

R4 100 F=A+/B 00100

R5 101 F=A+/B+1 00101

R6 110 F=A-1 00110

R7 111 F=A 00111

Procesori - sinteza staze podataka i upravlja~ka jedinica

83

F=AÙB 01000 F=AÚB 01010 F=AÅB 01100 F=/A 01110 F=srA 10000 F=slA 10001

c) na~in kodiranja upravlja~ke re~i

Napomena: (a) sr i sl se odnose na operacije pomeranje udesno i ulevo operanda A za jednu bit poziciju, respektivno. (b) Simbol '/ ' ukazuje na komplement.

Slika 3.75 Staza podataka, upravlja~ka re~ i kodiranje upravlja~ke re~i za stazu podataka

Ilustracije radi, operacije oduzimanja sadr`aja dva registra R2 i R3 i smetanje rezultata u R1 definisana kao:

R1←R2+R3 +1, kodira se na sledei na~in:

Polje: DA AA BA MB FS MD RW Simbol: R1 R2 R3 Registar F=A+/B+1 Funkcija WriteBinarna vrednost:

001 010 011 0 00101 0 1

Odrediti sadr`aj svih polja upravlja~ke re~i sa Slike 3.75 b), za sledee tipove operacija:

a) R1←R2-R3; b) R4←slR6; c) R7←R7+1; d) R1←R0+2; e) izlaz podatka ← R3;

f) R4 ← ulaz podatka; g) R5 ← 0

Odgovor Simboli~ki upravlja~ka re~ je kodirana na sledei na~in:

mikro operacija DA AA BA MB F3 MD RW R1←R2+/R3+1 R1 R2 R3 Registar F=A+/B+1 Funkcija Write R4←sl R6 R4 R6 - Registar F=slA Funkcija Write R7←R7+1 R7 R7 - - F=A+1 Funkcija Write R1←R0+2 R1 R0 - Konstanta F=A+B Funkcija Write izlaz podatka←R3

- - R3 Registar - - nema Write

R4← ulaz podatka

R4 - - - - ulaz podatka Write

R5← 0 R5 R0 R0 Registar F=AÅB Funkcija Write Binarno upravlja~ka re~, za odgovarajuu operaciju, kodirana je na sledei na~in:

mikrooperacija DA AA BA MB FS MD RWR1←R2-R3 001 010 011 0 00101 0 1 R4←sl R6 100 110 000 0 10001 0 1 R7←R7+1 111 111 000 0 00001 0 1 R1←R0+2 001 000 000 1 00010 0 1 izlaz podatka←R3

000 000 011 0 00000 0 0

R4←ulaz podatka

100 000 000 0 00000 1 1

Procesori - sinteza staze podataka i upravlja~ka jedinica

84

R5←0 101 000 000 0 01100 0 1

Zadatak 3.34

Specificirati sadr`aj upravlja~ke re~i kod staze podataka sa Slike 3.75 a) (zadatak 3.33), sa ciljem da se implementiraju sledee mikrooperacije:

a) R3←R5-R2 b) R2←ulaz podatka c) R6 ← 0 d) R1 ← R0+1 e) R4 ← srR3 f) R7 ← R5 + ulaz konstante g) R3 ← R2 Å R7 h) R2 ← sl R3

Zadatak 3.35

Staza podataka procesora i odgovarajua upravlja~ka re~ definisane su na Slici 3.75 (zadatak 3.33). Registri RF polja su obima 8 bitova i inicijalno su postavljeni na sledee vrednosti: R0=0, R1=1, R2=2, ... , R7=7. tj. Ri=i (i=0,...,7).

Odrediti koji se tip mikrooperacije obavlja za sledee kôdove:

a1) 110 100 101 0 01000 01 a2) 110 001 100 0 00101 01 a3) 101 010 000 0 10000 01 a4) 101 000 000 0 00000 11 a5) 111 111 000 1 01100 01 a6) 010 000 000 0 01100 01

Odrediti sadr`aj registara RF polja nakon izvrenja svake mikrooperacije.

Test pitanje 3.28

[ta predstavlja pojam barel-pomera~?

Odgovor Barel (barrel) pomera~ je digitalno kolo koje mo`e da odjednom pomeri ulaznu informaciju za proizvoljan broj bit pozicija. Na primer, kod barel- pomera~a sa osam ulaza, u jednom prolazu, ulaz mo`e rotirati od 0 do 7 pozicija. Barel pomera~i se koriste za implementaciju operacija bit-ekstrakcije koje su podr`ane od strane velikog broja skupova instrukcija ra~unara.

Opisaemo rad ovog pomera~a na sledei na~in:

Ozna~imo 8 ulaznih podataka sa D7, D6, ..., D0, 8 izlaznih podataka sa O7, O6, ..., O0, a tri upravlja~ka ulaza sa S2, S1 i S0. Pomera~ mo`e da realizuje 8 izlaznih funkcija, pri ~emu svaka zavisi od 11 ulaza: S2, S1, S0, D7, D6, ..., D0. Najjednostavniji na~in da se razume ponaanje pomera~a je tabulacija izlaznih vrednosti u upravlja~kih signala, kako je to prikazano na Slici 3.76.

S2S1S0 O7 O6 O5 O4 O3 O2 O1 O0

Procesori - sinteza staze podataka i upravlja~ka jedinica

85

000 D7 D6 D5 D4 D3 D2 D1 D0

001 D6 D5 D4 D3 D2 D1 D0 D7

010 D5 D4 D3 D2 D1 D0 D7 D6

011 D4 D3 D2 D1 D0 D7 D6 D5

100 D3 D2 D1 D0 D7 D6 D5 D4

101 D2 D1 D0 D7 D6 D5 D4 D3

110 D1 D0 D7 D6 D5 D4 D3 D2

111 D0 D7 D6 D5 D4 D3 D2 D1

Slika 3.76 Funkcije koje obavlja barel pomera~

Izlazi u funkciji 11 ulaznih signala se mogu opisati sledeim relacijama:

0S2S1S0D...S0D6S1S2D7S0S1S2O7 +++=

S2S1S0D7...S0D5S1S2D6S0S1S2O6 +++=

. . .

1S2S1S0D...S0D7S1S2D0S0S1S2O0 +++=

Analizom Boole-ovih jedna~ina, mo`emo da zaklju~imo sledee: Sve kombinacije ulaza Si su potrebne kod svake funkcije i svaki izlaz Dj se javlja u ta~no jednom ~lanu tipa suma proizvoda. U konkretnom slu~aju, to zna~i da za implementaciju sa diskretnim gejtovima, po jednoj funkciji, bie potrebno 8 ~etvoroulaznih gejtova i jedan osmoulazni. Ukupno, za ceo pomera~, potrebno je 32 ~etvoroulazna i osam osmoulaznih gejtova.

Alternativno reenje se zasniva na korienju multipleksera. Nije teko uo~iti da se svaki ulaz mo`e implementirati pomou multipleksera tipa “8 na 1”, kako je to prikazano na Slici 3.77.

MUX

O0

S2S1S0

D0 D1 D2 . . . D6 D7

MUX

O1

D0 D1 D2 . . . D6 D7

MUX

O7

D0 D1 D2 . . . D6 D7

S2S1S0

S2S1S0

Slika 3.77 Barel pomera~ implementiran pomou osam multipleksera tipa 8_na_1

4. RISC procesori

4-1

4. RISC procesori

ö õ

Konvencije kod korienja registara MIPS-a

ime broj registra korienje da li se pamti kod Call?

$zero 0 uvek postavljen na konstantnu vrednost nula nije dostupan• $at 1 rezervisan za potrebe asemblera nije dostupan• $v0-$v1 2-3 ~uva se vrednost dobijenog rezultata ili izraza

~ija se vrednost odredjuje ne

$a0-$a3 4-7 ~uva vrednost argumenta pri prenosu parametara proceduri

da

$t0-$t7 8-15 za ~uvanje privremenih promenljivih ne $s0-$s7 16-23 ~uvanje promenljivih da $t8-$t9 24-25 ~uvanje dodatnih privremenih promenljivih ne $k0-$k1 26-27 rezervisani od strane operativnog sistema nije dostupan $gp 28 globalni pokaziva~ da $sp 29 pokaziva~ magacina da $fp 30 pokaziva~ okvira da $ra 31 adresa povratka da

Napomena: Za ostale detalje o formatima instrukcija, repertoaru instrukcija, na~inu kodiranja instrukcija i dr., videti Dodatak C.

Test pitanje 4.1

Neka A predstavlja vektor koga ~ini 100 elemenata, od kojih je svaki obima 32-bita, a G=1500 i H=1900 su adrese memorijskih lokacija u kojima se ~uvaju promenljive g i h. Prevesti sledei iskaz programskog jezika C na asemblerski jezik mikroprocesora MIPS.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-2

g=h+A[8]; Napomena: Promenljive g i h ~uvati u registre $s1 i $s2, baznu adresu vektora A = 2600 ~uvati u registar $s3. Rezultat smestiti na lokaciji G.

Odgovor

registri sadr`aj

$zero

$s1

$s2

$s3

$t0(privremeni)

G=1500

adrese(decimalne)

0

g

h

A0

a8

.

.

.

g

h

.

.

.

.

.

.

a0

a1

a2

.

.

.

a99

.

.

.

H=1900

A=A0=2600

A1=2604

A2=2608

A99=2996

Programska sekvenca ima sledei oblik:

Addi $s3,$zero,A0 # A0→$s3

Lw $s2,H($zero) # h→$s2

Lw $t0,8*4($s3) # a8→$t0

Add $s1,$s2,$t0 # g = $s1 = h + a8

Sw $s1,G($zero) # g→G

Test pitanje 4.2 Neka A predstavlja vektor koga ~ine 10 elemenata (A[0] ,..., A[9]) od kojih je svaki obima 32-bita, a H = 2000 adresa memorijske lokacije u kojoj se ~uva promenljiva h. Prevesti sledei iskaz programskog jezika C na asemblerski jezik mikroprocesora MIPS.

A[10] = h+A[8]; Napomena: Baznu adresu vektora A = 2600 ~uvati u registru $s3. A[10] je vrednost novo-dobijenog elementa koji se smeta na lokaciji tipa re~ koja neposredno sledi iza lokacije zadnjeg elementa vektora A[9].

Odgovor

4. RISC procesori

4-3

registri sadr`aj

$zero

$s3

$s2

$t1

$t2(privremeni)

adrese(decimalne)

0

A0

h

a8

a10

.

.

.

.

.

.

a0

a1

a2

.

.

.

a9

.

.

.

H=2000

A=A0=2600

A1=2604

A2=2608

A9=2636

a10A9=2640

Addi $s3,$zero,A0 # A0→$s3

Lw $t0,H($zero) # h →$t0

Lw $t1,32($s3) # a8 →$t1

Add $t2,$t0,$t1 # a10 = h + a8

Sw $t2,40($s3) # a10 →Adr = 2640

Test pitanje 4.3

Neka A predstavlja vektor koga ~ine 20 elemenata od kojih je svaki obima re~ (32-bita).Kakav je asemblerski kd mikroprocesora MIPS za odgovarajui kdni segment na C-u?

g = h + A [i]; Napomena: Bazna adresa vektora A je A0 = 3000 i ~uva se u registru $s3. Adresa promenljive g je G = 2000, promenljive h je H = 2200, a promenljive i je I = 1500. Kompilator dodeljuje promenljige g, h i i registrima $s1, $s2 i $s4.

Odgovor Addi $s3,$zero,A0 # A0 → $s3 Lw $s2,H($zero) # h → $s2 Lw $s4,I($zero) # i → $s4 Add $t1,$s4,$s4 # $t1 = 2 * i Add $t1,$t1,$t1 #$t1 = 4 * i Add $t1,$t1,$s3 #$t1 = adr od A[i](4 * i + $s3) Lw $t0,0($t1) #A[i] → $t0 Add $s1,$s2,$t0 # g = h + A[i] Sw $s1,G($zero) # g → Adr 2000

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-4

Test pitanje 4.4 Neka je dat vektor A koga ~ine 400 elemenata. Elementi vektora su tipa re~ (32-bitni). Ako usvojimo da se u registru $t1 ~uva bazna adresa polja A a u $s2 promenljiva h, tada se sledei iskaz na programskom jeziku C.

A[300] = h + A[300]; kompajlira u

Lw $t0,1200($t1) #A[300]->$t0 Add $s0,$s2,$t0 #$s0 = h + $t0 Sw $s0,1200($t1) #$t0->A[300]

Kakav e biti kôd na mainskom jeziku mikroprocesora MIPS za ove tri instrukcije?

Odgovor opkod rs rt rd adresa/iznos

pomeranja funkcija

• 35 9 8 1200

0 18 8 8 0 2

43 9 8 1200

Odgovarajui binarni ekvivalent imae oblik:

100011 01001 01000 0000 0100 1011 0000

000000 10010 01000 01000 00000 000010

101011 01001 01000 0000 0100 1011 0000

Zadatak 4.1

(a) U sledeem C kodnom segmentu f, g, h, i i j su promenljive:

if (i==j) go to LAB1; f=g+h; LAB1: f=f-i; Usvojimo da su svih pet promenljivih f do j ve smetene u pet registra $s0 do $s4, respektivno. Kakav e biti kompilovani kod mikroprocesora MIPS?

(b) Koristei iste promenljive i registre iz slu~aja pod (a) kompajliraj sledei if iskaz na C-u.

if (i==j) f=g+h; else f=g-h;

Odgovor a)

BEQ $s3,$s4,LAB1 ; skok na LAB1 ako je i=j

Add $s0,$s1,$s2 ; f=g+h

LAB1:Sub $s0,$s0,$s3 ; f=f-i

b)

4. RISC procesori

4-5

i==j?

f=g+h f=g-h

i=j i≠j

Else:

Izlaz:

BNE $s3,$s4,Else ; skok na Else ako je i≠j

Add $s0,$s1,$s2 ; f=g+h, tj. preska~e se ako je i≠j

J Izl ; skok na Izlaz

Else:Sub $s0,$s1,$s2 ; f=g-h, tj ska~e se ako je i=j

Izl: ---

Zadatak 4.2 Neka je data sledea petlja u programskom jeziku C:

Ponovi: g = g + A [ i ] ; i = i + j ; if (i != h) go to Ponovi; Gde je A vektor od 100 elemenata. Adrese promenljivih g, h, i i j su G, H, I i J, respektivno. Promenljive g, h, i i j kompilator dodeljuje registrima $s1, $s2, $s3 i $s4, respektivno. Usvojimo da se bazna adresa vektora A ~uva u registar $s5. Kakav e biti MIPS-ov asemblerski kd za odgovarajuu petlju na C-u.

Odgovor Lw $s2,H($zero) # h->$s2 Lw $s3,I($zero) # i->$s3 Lw $s4,J($zero) # j->$s4 Add $s5,$zero,A0 # A0->$s5 Pon: Add $t1,$s3,$s3 #$t1 = 2 * i Add $t1,$t1,$t1 #$t1 = 4 * i Add $t1,$t1,$s5 #$t1 = adresa od A[i] Lw $t0,0($t1) # A[i] → $t0 Add $s1,$s1,$t0 # g = g + A [i]i Sw $s1,G($zero) # g → M [G] Add $s3,$s3,$s4 # i = i + j BNE $s3,$s2,Ponovi # go to Ponovi if i ≠ h

Test pitanje 4.5

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-6

Neka je data sledea klasi~na petlja u C-u:

while (sima [ i ] = = k) i = i + j ; Usvojimo da kompilator dodeljuje promenljive i, j i k registrima $s3, $s4 i $s5, a baznu adresu polja sima registru $s5. Kakav e biti asemblerski kôd za odgovarajui segment na C-u?

Odgovor Ponovi:Add $t1,$s3,$s3 #$t1 = 2 * i Add $t1,$t1,$t1 #$t1 = 4 * i Add $t1,$t1,$s6 #$t1 = adresa od sima[i] Lw $t1,0($t1) #sima[i]->$t0 BNE $t0,$s5,Kraj # go to Kraj if sima[i] ≠ k Add $s3,$s3,$s4 # i = i + j J Ponovi # go to Ponovi Kraj: . . .

Test pitanje 4.6 Objasni efekat instrukcije Slt.

Odgovor Testiranje na jednakost ili nejednakost je verovatno najpopularniji test, ali je ponekad po`eljno da se proveri da li je neka promenljiva manja od druge promenljive. Na primer, kod petlje tipa for ~esto je po`eljno proveravati da li je indeksna promenljiva manja od 0. Ovo uporedjenje kod asemblerskog jezika na mikroprocessoru MIPS obavlja se instrukcijom Slt. Instrukcija Slt uporedjuje dva registra i postavlja trei na 1 ako je prvi manji od drugog, ina~e postavlja trei registar na 0.

Tako na primer, instrukcija

Slt $t0, $s3, $s4

postavie $t0 na 1 ako je sadr`aj $s3 manji od sadr`aja $s4, ina~e e registar $t0 biti postavljen na 0.

Test pitanje 4.7 Neka se promenljiva a ~uva u registru $s0, a promenljiva b u registru $s1. Kakav e biti kôd koji testira da li je promenljiva a manja od promenljive b, a zatim se vri grananje na labelu Manje ukoliko je uslov ispunjen.

Odgovor Slt $t0,$s0,$s1 # $t0 = 1 if $s0 <$s1, tj a < b BNE $t0,$zero,Manje # go to Manje if $t0, tj if a < b Manje:.... Ovo zna~i da par instrukcija Slt i BNE implementiraju instrukciju BLT (branch on bess than)

Zadatak 4.3 Neka jed dat sledei kôd na programskom jeziku C:

switch (k) case 0: f = i + j ; break; /* k = 0 */ case 1: f = g + h ; break; /* k = 1 */ case 2: f = g - h ; break; /* k = 2 */

4. RISC procesori

4-7

case 3: f = i - j ; break; /* k = 3 */

Usvojimo da se est promenljivih, od f do k, ~uvaju u odgovarajuih est registara $s0 do $s5, a da se u $t2 smeta 4. Napisati odgovarajui kôd na asemblerskom jeziku procesora MIPS.

Odgovor # prvo se testira k da bi se proverilo da li je ispunjen uslov 0 = < k = < 3 # koristi se promenljiva k da se odredi indeks tabele, tj k se mno`i sa 4

Slt $t3,$s5,$zero # Test if k < 0 BNE $t3,$zero,Kraj # if k < 0, go to Kraj Slt $t3,$s5,$t2 # Test if k < 4 BEQ $t3,$zero,Kraj # if k > = 4, go to Kraj Add $t1,$s5,$s5 # $t1 = 2 * k, podeavanje indeksa tabele Add $t1,$t1,$t1 # $t1 = 4 * k, svaki podatak je obima 4 bajta

# usvojimo da ~etiri sekvencijalne memorijske re~i koje po~inju od adrese # definisane sadr`ajem registra $t4, imaju adrese koje odgovaraju labelama L0, L1, L2 i L3. # Punjenje adrese skoka se obavlja na sledei na~in:

Add $t1,$s1,$s1 # $t1 = adresa Jump Tabela[k] Lw $t0,0($t1) # $t1 = Jump Tabela[k] # skok se sada obavlja sledeom instrukcijom:

Jr $t0 # Jump na osnovu sadr`aja registra $t0

# C verzija case iskaza koja se naziva switch iskaz ima oblik:

L0: Add $s0,$s3,$s4 # za k = 0 izra~unaj f = i + j J Kraj # zatim idi na Kraj L1 : Add $s0,$s1,$s2 # za k = 1 izra~unaj f = g + h J Kraj # zatim idi na Kraj L2 : Sub $s0,$s1,$s2 # za k = 2 izra~unaj f = g - h J Kraj # zatim idi na Kraj L3 : Sub $s0,$s3,$s4 # za k = 3 izra~unaj f = i - j Kraj: .... # zavretak iskaza switch

Zadatak 4.4

Neka je data sledea procedura na programskom jeziku C:

int primer_1 (int g, int h, int i, int j)

int f; f = (g + h) - (i + j); return f; Napomena: Parametarske promenljive g, h, i, i j ~uvaju se u argument regstrima $a0, $a1, $a2 i $a3, a promenljiva f u registru $s0.

Kakav e biti kompajliran kôd na asemblerskom jeziku mikroprocesora MIPS?

Odgovor # kompajlirani program mora da po~ne na adresi koja je difinisana labelom # procedure a u konkretnom slu~aju je to primer_1. U toku izvrenja procedure # koristiemo registre $s0, $t0 i $t1 pa zbog toga njihov sadr`aj, odmah nakon # ulaska u proceduru, sa~uvaemo u magacin. Sekvenca kojom se u magacinu kreira # prostor od tri re~i a zatim smetaju stare vrednosti, ima oblik:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-8

primer_1: Sub $sp,$sp,12 # oslobodi prostor u magacinu za 3 elementa Sw $t1,8($sp) # sa~uvaj $t1 Sw $t0,4($sp) # sa~uvaj $t0 Sw $s0,0($sp) # sa~uvaj $s0 # izgled magacina pre, u toku, i nakon izvrenja procedure # primer_1 prikazan je na Slici 4.1 telo procedure ~ine sledee tri naredbe Add $t0,$a0,$a1 # $t0 = g + h Add $t1,$a2,$a3 # $t1 = i + j Sub $s0,$t0,$t1 # $t1 = f = (g + h) - (i + j) # vrednost koju procedura vraa kao rezultat smeta se u registar $v0

Add $v0,$s0,$zero # $v0 = $s0 + 0 # pre povratka iz procedure treba obnoviti stare vrednosti registara $s0, $t0 i $t1, tj. obaviti operacije Pop Lw $s0,0($sp) # Pop $s0 Lw $t0,4($sp) # Pop $t0 Lw $t1,8($sp) # Pop $t1 Add $sp,$sp,12 # podesi magacin da izbaci tri elementa # procedura zavrava sledeom instrukcijom: Jr $ra # povratak pozivnoj rutini

Zadatak 4.5

Cilj ovog zadatka je da uka`e na na~in korienja ugnje`djenih procedura.

Kao prvo, proceduru koja ne poziva na dalje druge procedure, naziva se procedura tipa list (leaf). Kada jedna procedura pozove drugu, a druga treu, i td., ka`emo da dolazi do gne`djenja (nesting). Rekurzivne procedure nazivamo one koje pozivaju same sebe. Kada se govori o mikroprocesoru MIPS analiziraemo sledei scenario: Neka glavni program pozove proceduru A, prethodno prenosei argument ~iju vrednost 3 smeta u registar $a0, a zatim sledi izvrenje instrukcije Jal A. Pretpostavimo, sada, da procedura A poziva proceduru B uz pomo instrukcije Jal B prenosei argumenat ~ija je vrednost 7, koga smeta u registar $a0. S obzirom da procedura A jo nije zavrena, postoji mogui konflikt oko korienja registra $a0. Na sli~an na~in postoji takodje konflikt koji se odnosi na povratnu adresu koja se ~uva u $ra, imajui u vidu da se u registru $ra sada nalazi (~uva se) povratna adresa za proceduru B. Da ne bi dolazilo do konflikata potrebno je preduzeti odgovarajue korake. Jedno od reenja je sledee: Smestiti u magacin (push) sadr`aj svih registara koje e pozvana procedura koristiti. Argumenti koji se prenose smetaju se u registre $a0 do $a3 ili u $t0 do $t9. Takodje u magacin se smeta stanje registra $ra i svih, ili nekih, od registara $s0 do $s7. Pokaziva~ magacina se podeava da uka`e na broj registara koji se smeta u magacin. Nakon povratka iz procedure, obnavlja se stanje registara a pokaziva~ magacina podeava da poka`e na korektnu vrednost (lokaciju).

4. RISC procesori

4-9

$sp

ni`eadrese

$sp

vieadrese

a) b) c)Napomena: SP uvek pokazuje na punu lokaciju

$sp

sadr`aj registra$t1

sadr`aj registra$t0

sadr`aj registra$s0

Slika 4.1 Vrednosti pokaziva~a magacina i magacina :

(a) pre poziva procedure; (b) u toku izvrenja procedure; (c) nakon povratka iz procedure

Da bi ukazali na ovaj problem sa neto vie detalja analiziraemo jednu rekurzivnu proceduru na C-u koja se koristi za izra~unavanje faktorijela:

int fakto (int n)

if (n < 1) return (1); else return (n * faktor(n - 1));

Kakav e biti kompilovani MIPS-ov asemblerski kôd?

Odgovor # Parametarsku promenljivu n pozivni program predaje preko registra $a0. # Kompajlirani program po~inje instrukcijom ispred koje stoji labela fakto, zatim se # u magacin smetaju povratna adresa i stanje registra $a0.

fakto: Sub $sp,$sp,8 # podesi magacin za dva elementa

Sw $ra,4($sp) # sa~uvaj povratnu adresu Sw $a0,0($sp) # sa~uvaj vrednost argumenta n

# prvi put kada se procedura fakto pozove instrukcija Sw smeta u magacin adresu # programa iz koga je izvren poziv. Naredne dve instrukcije testiraju if n < 1, ako # je n >= 1 go to L1. Slt $t0,$a0,1 # testiraj za n < 1 BEQ $t0,$zero,L1 # if n >= 1, go to L1 # Ako je n < 1, procedura fakto vraa vrednost 1 upisom 1 u registar $v0, tj sabira 1 # i 0 i smeta rezultat u $v0. Zatim izbavlja iz magacina obe zapamene vrednosti i

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-10

# ska~e na povratnu adresu: Add $v0,$zero,1 # povratna vrednost = 1 Add $sp,$sp,8 # Pop dva elementa magacina Jr $ra # povratak na instrukciju nakon Jal # Pre izbavljanja dve stavke iz magacina treba napuniti $a0 i $ra. S obzirom da se # $a0 i $ra ne menjaju kada je n < 1 ove dve instrukcije se preska~u. # Ako n nije manje od 1, dekrementira se vrednost argumenta, a zatima poziva # procedura fakto sa dekrementiranom vrednou n: L1: Sub $a0,$a0,1 # n > = 1 : argument postaje (n - 1) Jal fakto # Call fakto sa (n - 1)

# Naredna instrukcija je ona koja se odnosi na povratak iz procedure fakto. Sada se # obnavlja stara povratna adresa i stara vrednost argumenta, zajedno sa pokaziva~em magacina: Lw $a0,0($sp) # povratak iz Jal: obnovi argument n Lw $ra,4($sp) # obnovi povratnu adresu Add $sp,$sp,8 # podesi pokaziva~ magacina za pop dva elementa # Nakon ovoga u registar $v0 treba smestiti proizvod starog argumenta i tekue # vrednosti. Ovo se obavlja na sledei na~in:

Mult $v0,$a0,$v0 # povratna vrednost n * fakto (n - 1) # Kona~no fakto ska~e ponovo na povratnu adresu

Jr $ra # povratak pozivnom programu

Na Slici 4.2 prikazano je koje se vrednosti ~uvaju u magacinu, a koje ne, u toku poziva procedure.

~uvaju se ne ~uvaju se

argument registri: $a0-$a3 registri povratne vrednosti: $v0-$v1

registri za ~uvanje promenljivih:$s0-$s7 registri za ~uvanje privremenih: $t0-$t9

pokaziva~ magacina: $sp

registar povratne adrese: $ra

magacin iznad pokaziva~a magacina magacin ispod pokaziva~a magacina

Slika 4.2 [ta se pamti, a ta ne, u magacinu

Test pitanje 4.8 Da li se kod mikroprocesora MIPS, osim registarskog, koristi i neki drugi na~in za prenos parametara izmedju pozivne i pozvane procedure?

Odgovor Magacin se, takodje, koristi kao medijum za prenos parametara, obi~no kada je njihov broj veliki tako da se svi podaci ne mogu smestiti u registre, ili kada se prenose strukture tipa polja/vektori. Segment magacina u kome se ~uva stanje registara (koje je potrebno zapamtiti kao lokalne promenljive) naziva se okvir procedure ili aktivacioni zapis. Na Slici 4.3 prikazano je stanje magacina pre, nakon, i posle poziva procedure.

Kao to se vidi sa Slike 4.3, softver mikroprocesora MIPS koristi pokaziva~ okvira ($fp - frame pointer) koji pokazuje na prvu re~ okvira procedure. Obi~no pokaziva~ magacina ($sp) menja svoju

4. RISC procesori

4-11

vrednost u toku izvrenja procedure. Ove promene rezultiraju reazli~itim ofsetima (pomerajima) u toku izvrenja procedure u odnosu na pristup promenljivima, pa je zbog toga taj pristup teko razumljiv i ote`an. Sa druge strane, $fp karakterie stabilna bazna adresa tako da je obraanje promenljivima razumljivo za programera i relativno jednostavno.

Test pitanje

Zato su programi za RISC mikroprocesore du`i od programa CISC mikroprocesa?

Test pitanje

[ta je to Harvard arhitektura? Da li je ona karakteristi~na samo za RISC-ove? Da li CISCsistem mo`e da koristi Harvard arhitekturu?

Test pitanje

[ta predstavlja pojam zakanjeno grananje?

$sp

ni`eadrese

$sp

vieadrese

a) b) c)

$sp

sa~uvani argument-registri, ako ih ima

$t1

zapameno stanjeregistara za ~uvanjepromenljivih, ako

ih ima

lokalna polja istrukture, ako ih

ima

$fp $fp

$fp

zapamena adresapovratka

Slika 4.3 Dodela prostora magacina (a) pre; (b) u toku; (c) nakon poziva procedure

Test pitanje 4.9

Koje instrukcije koristi procesor MIPS radi: ~itanje podatka tipa bajt iz memorije i njegovo smetanje na mesto LS bajta registra $t0

upis podatka tipa bajt u memoriju ako se isti pribavi iz LS bajta registra $t0.

Odgovor

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-12

(a) Lb $t0,0($sp) # ~itanje bajta iz izvorita (b) Sb $t0,0($gp) # upis bajta u odredite

Zadatak 4.6

Procedura kopiniz se koristi za kopiranje niza y u niz x. Na kraju niza $sp pokazuje na bajt ~ija je vrednost 00 (konvencija kod C-a).

void kopiniz (char x[ ], char y[ ])

int i; i = 0; while ((x[i] = y[i]) != 0) /* kopiraj i testiraj bajt */ i = i + 1;

Kakav e biti MIPS-ov asemblerski kôd?

Napomena: Bazne adrese nizova x i y se ~uvaju u $a0 i $a1, a indeksna vrednost i u registru $s0.

Odgovor # Procedura kopiniz podeava prvo sp a zatim smeta $s0 u magacin kopiniz:Sub $sp,$sp,4 #podeavanje magacina za vie od jednog elementa Sw $S0,4($sp) # sa~uvaj $s0 u magacin # Inicijaliziranje i na 0, naredna instrukcija postavlja $s0 na 0, sabiranjem 0 sa 0 i # memorisanjem sume u $s0 Add $s0,$zero,$zero # i = 0 + 0 # Sledi po~etak petlje. Adresa y[i] se formira sabiranjem i sa y[ ]: L1: Add $t1,$a1,$s0 # adresa za y[i] je u $t1 # Uo~imo da je y[i] niz bajtova # Da bi napunili znak u y[i], treba prvo da napunimo bajt (tj. znak) u registar $t2: Lb $t2,0($t1) # $t2 = y[i] # Adresa x[i] se smeta u $t3 a nakon toga znak iz $t2 na tu adresu: Add $t3,$a0,$s0 # adresa od x[i] u $t3 Sb $t2,0($t3) # x[i] = y[i] # Sledi inkrementiranje indeksa i, i skok na labelu L1 ako znak nije nula, tj. ako nije zadnji znak niza, tada: Add $s0,$s0,1 # i = i + 1 BNE $t2,$zero,1 # if y i ! = 0, go to L1 # Ako ne dodje do grananja, to zna~i da je to zadnji znak u nizu, pa je zbog toga # neophodno obnoviti sadr`aj registra $s0 i $sp-a i izvriti povratak: Lw $s0,4($sp) # y[i] = = 0; kraj niza obnovi staru vrednost $s0 Add $sp,$sp # izbavi jednu re~ iz magacina

4. RISC procesori

4-13

Jr $ra # povratak

Test pitanje 4.10

Napisati programsku sekvencu kojom se pokaziva~u magacina $sp, mikroprocesora MIPS, dodaje konstanta vrednost.

Odgovor Lw $t0,konst($zero) # $t0 = konstanta Add $sp,$sp,$t0 # $sp = $sp + $t0

Ili, alternativno reenje bi bilo: Addi $sp,$sp,konst # $sp =$sp + konstanta

Test pitanje 4.11

Kakav je asemblerski kôd mikroprocesora MIPS koji se koristi za punjenje 32-bitne konstante:

0000 0000 0011 1101 0000 1001 0000 0000

u registar $s0.

Odgovor # Prvo se pune 16 bitova vee te`ine, 61 decimalno, pomou instrukcije Lui: Lui $s0,61 # 61 decimalno = 0000 0000 0011 1101 binarno # vrednost registra $s0 nakon izvodjenja ove operacije je # $s0 = 0000 0000 0011 1101 0000 0000 0000 0000 # u narednom koraku sabiraju se ni`ih 16 bitova, ~ija je decimalna vrednost 2304, na sledei na~in:

Addi $s0,$s0,2304

# 2304 decimalno = 0000 1001 0000 0000 binarno # kona~na vrednost $s0 bie 0000 0000 0011 1101 0000 1001 0000 0000

Test pitanje 4.12

Za klasi~nu petlju na C-u:

while (sima[i] = = k) i = i + j;

odgovarajui kompajlirani kôd na semblerskom jeziku mikroprocesora MIPS je sledei:

Ponovi: Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s5 # $t1 = adresa od sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,Kraj # go to Kraj if sima[i] = k Add $s3,$s3,$s4 # i = i + j J Ponovi # go to Ponovi Kraj: ... (Napomena: Promenljive i, j i k se ~uvaju u registrima $s3, $s4 i $s5 a bazna adresa vektora sima u registar $s6).

Ako usvojimo da se petlja izvrava po~ev od memorijske lokacije 80000, kakav e biti mainski kôd mikroprocesora MIPS za datu petlju?

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-14

Odgovor U sledeoj tabeli prikazana je sekvenca izvrenja, pri ~emu je, za svaku instrukciju dat njen format i odgovarajua lokacija u memoriji:

veli~ina polja adrese 6 5 5 5 5 6 80000 0 19 19 9 0 32 80004 0 9 9 9 0 32

80008 0 9 21 9 0 32

80012 35 9 8 0

80016 5 8 21 8 80020 0 19 20 19 0 32

80024 2 80000 80028...

Test pitanje 4.13

Neka je data sledea instrukcija grananja:

BEQ $s0,$s1,L1 # if($s0 = = $s1) go to L1

Zameniti je parom instrukcija koje nude veu distancu grananja.

Odgovor BNE $s0,$s1,L2 # preskok za jednu instrukciju

J L1 L2: ...

Test pitanje 4.14

Za MIPS-ov kôd koji sledi,opii koju aktivnost obavlja. Usvojimo da se $a0 koristi ulazni registar podataka i inicijalno sadr`i n, pozitivna celobrojna vrednost, a registar $V0 kao izlazni.

Pocetak: Addi $t0,$zero,0 Addi $t1,$zero,1 Ponovi: Slt $t2,$a0,$t1 BME $t2,$zero,Kraj Add $t0,$t0,$t1 Addi $t1,$t1,2 J Ponovi Kraj : Addi $v0,$t0,$zero

Odgovor Uokvireni i rafirani deo koji se odnosi na komentar, predstavlja deo odgovora. Prikazanom programskom sekvencom izra~unava se zbir neparnih brojeva do najveeg neparnog

# $t0 = 0 + 0 # $t1 = 0 + 1 # if($a0<$t1) $t2 =1, else $t2= 0 # if($t2 !=$zero) go to Kraj # $t0 = $t0 + $t1 # $t1 = $t1 + 2 # go to Ponovi # $v0 = $t0 + 0

4. RISC procesori

4-15

broja koji je manji ili jednak inicijalnoj vrednosti n, tj odredjuje se vrednost 1 + 3 + 5 + ... + n (ili n - 1 ako je n paran broj).

Test pitanje 4.15 Programski segment koji sledi koristi se za procesiranje strukture podataka tipa niz a kao rezultat generie dve va`ne vrednosti koje se smetaju u registre $v0 i $v1. Usvojimo da niz ~ine 5000 re~i koje se indeksiraju po~ev od 0 do 4999, da se bazna adresa niza ~uva u registru $a0, a obim (veli~ina = 5000) u registru $a1.

U kratkim crtama ukazati koju aktivnost ovaj kôdni segment obavlja, i koje se vrednosti smetaju u $v0 i $v1.

Odgovor Add $a1,$a1,$a1 Add $a1,$a1,$a1 Add $v0,$zero,$zero Add $t0,$zero,$zero Iznova: Add $t4,$a0,$t0 Lw $t4,0($t4) Add $t5,$zero,$zero Add $t1,$zero,$zero Ponovi: Add $t3,$a0,$t1 Lw $t3,0($t3) BNE $t3,$t4,Skok Addi $t5,$t5,1 Skok : Addi $t1,$t1,4 BNE $t1,$a1,Ponovi Slt $t2,$t5,$v0 BNE $t2,$zero,Naredni Add $v0,$t5,$zero Add $v1,$t4,$zero Naredni: Addi $t0,$t0,4 BNE $t0,$a1,Iznova Ovom kôdnom sekvencom odredjuje se koja se re~ naj~ee javlja u nizu. Takodje, pomenuta re~ se upisuje u $v1, a vrednost koja ukazuje na to koliko se puta ona pojavljuje u nizu, ~uva se u registru $v0.

Test pitanje 4.16

Usvojimo da se kôdni segment iz prethodnog test pitanja izvrava na maini ~ija je taktna frekvencija 500MHz, a vreme izvrenja odgovarajuih instrukcija je dato sledeom tabelom:

instrukcija taktni intervali

Add, Addi, Slt 1

Lw, BNE 2

Za najgori slu~aj, odredi koliko je vremena potrebno da se izvri pomenuta programska sekvenca?

Odgovor Ako zanemarimo 4 instrukcije pre petlje, uo~avamo da spoljnu petlju koja se izvrava 5000 puta, u najgorem slu~aju, ~ine 4 instrukcije pre unutranje petlje i 6, nakon unutranje petlje. Vreme potrebno

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-16

da se izvre ovi delovi petlje iznosi 1+2+1+1=5 taktna intervala (odnosi se na instrukcije Add, Lw, Add i Add) i 1+2+1+1+1+2=8 taktnih intervala (odnosi se na instrukcije Slt, BNE, Add , Add, Addi i BNE), to ukupno iznosi 13 taktnih intervala po iteraciji, ili 5000*13 po spoljnoj petlji. Za unutranju petlju potrebno je 1+2+2+1+1+2=9 taktnih intervala po iteraciji (~ine je instrukcije Add, Lw, BNE, Addi, Addi i BNE), a ona se ponavlja 5000*5000 puta. To zna~i da je ukupno potrebno vreme u trajanju od 9*5000*5000 taktnih intervala. Prema tome, ukupno vreme izvrenja bie aproksimativno:

tu = (5000*13 + 9*5000*5000)/(500*106) = 0,45 s

Na osnovu dobijene vrednosti za tu vidimo da dominantni uticaj na vreme izvrenja programske sekvence ima unutranja petlja.

Test pitanje 4.17 Koja je minimalna sekvenca instrukcija potrebna da mikroprocesor MIPS izvri sledei iskaz na C-u:

x = y + 300 Napomena: Usvojimo da se vrednost x ~uva u registru $t0, a vrednost y u registru $t1.

Odgovor Addi $t0,$t1,300

Test pitanje 4.18

Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora MIPS koja odgovara sledeem iskazu na C-u:

x[8]= x[12] + b Napomena: Usvojimo da se b ~uva u registru $t0, a bazna adresa polja x iznosi 4.000.000 (decimalno).

Odgovor Binarni ekvivalenat bazne adrese x je: 4.000.000(decimalno) = 0000 0000 0011 1101 0000 1001 0000 0000(binarno)

Ova vrednost ukazuje da je neophodno koristiti naredbu Lui kako bi napunili registar $t1 baznom adresom:

Lui $t1,0000000000111101 # MS adresa u MS deo $t1 Ori $t1,$t1,0000100100000000 # MS adresa logi~ka OR sa LS adresom u $t1 Lw $t2,48($t1) # $t2 = x [12] Add $t2,$t2,$t0 # $t2 = x [12] + b Sw $t2,36($t1) # $t2 ->M(x[8])

Zadatak 7 Sledea programska sekvenca se koristi za kopiranje 32-bitnih re~i sa adrese na koju pokazuje sadr`aj registra $a0, na adresu na koju pokazuje $a1, pri ~emu sadr`aj registra $v0 ukazuje na broj kopiranih re~i. Program zaustavlja kopiranje kada naidje na re~ ~ija je vrednost 0. Zadnju re~ treba kopirati ali ne i brojati.

Ponovi: Lw $v1,0($a0) # ~itaj narednu izvorinu re~ Addi $v0,$v0,1 # inkrementiraj broja~ kopiranih re~i Sw $v1,0($a1) # upii re~ u odredite Addi $a0,$a0,1 # inkrementiraj pokaziva~ izvorita

4. RISC procesori

4-17

Addi $a1,$a1,1 # inkrementiraj pokaziva~ odredita BNE $v1,$zero,Ponovi # Ponovi ako je kopiran podatak ≠ nule

Analizom programa mo`e se ustanoviti sledee:

a) Postoji vei broj greaka u MIPS-ovoj programskoj sekvenci. Locirati greke i dati korektnu verziju programa.

b) Za nekorektnu programsku sekvencu odredi format instrukcije (mainski kôd) za svaku instrukciju kao i decimalnu vrednost svakog polja.

Odgovor Korektna verzija programa, je oblika:

Addi $v0,$zero,-1 # inicijaliziraj se $v0 sa ciljem da se # izbegne odbrojavanje nultog (praznog) niza Ponovi: Lw $v1,0($a0) # ~ita se naredna re~ izvornog niza Addi $v0,$V0,1 # inkrementira se broja~ kopiranih re~i Sw $v1,0($a1) # upis re~i u odredini niz Addi $a0,$a0,4 # inkrementira se pokaziva~ izvorinog niza Addi $a1,$a1,4 # inkrementira se pokaziva~ odredinog niza

BNE $v1,$zero,Ponovi # go to Ponovi ako kopirana re~ ≠ nula

Greke koje postoje u nekorektnom programu su sledee:

(1) Broja~ re~i, $v0, nije inicijaliziran,

(2) Odbrojava se re~ ~ija je vrednost nula (kada je niz prazan)

(3) Pokaziva~ izvorinog niza se inkrementira za 1 umesto za 4

(4) Pokaziva~ odredinog niza se inkrementira za 1 umesto za 4.

a) Mainski kôd nekorektne verzije programa ima oblik:

instrukcija format opkod rs rt neposredna vrednost

Lw $v1,0($a0) I 35 4 3 0

Addi $v0,$v0,1 I 8 2 2 1

Sw $v1,0($a1) I 43 5 3 0

Addo $a0,$a0,1 I 8 4 4 1

Addi $a1,$a1,1 I 8 5 5 1

BNE $v1,$zero,Ponovi I I 5 3 0 -20

Zadatak 4.8

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-18

Kao to smo ve u jednom od prethodnih test-pitanja naglasili, programski segment u C-u:

while (sima[i]== k) i = i + j; (gde se promenljive i, j i k ~uvaju u registrima $s3, $s4 i $s5, a bazna adresa niza se nalazi u $s6), ima odgovarajui asemblerski kôd koji je oblika:

Ponovi: Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa niza sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$S5,Kraj # go to Kraj if sima[i] ≠ k Add $s5,$s3,$s4 # i = i + j J Ponovi Kraj: ... Analizom kompajliranog kôda, mo`e se uo~iti sledee:

(1) pri svakom prolasku kroz petlju izvrava se jedna instrukcija uslovnog i jedna bezuslovnog grananja;

(2) samo loi kompilatori generiu kôd sa ovoliko suvinosti (dve instrukcije koje se odnose na promenu toka programa).

Problem koji treba reiti je sledei: kreirati asemblerski kôd za mikroprocesor MIPS, koji e, za svaki prolazak kroz petlju, generisati samo jednu instrukciju tipa Branch ili Jump.

Koliko se instrukcija izvrava pre i posle optimizacije ako broj iteracija petlje iznosi 10, tj. sima[i+10*j] = k , a sima[i],..., sima[i+9*j] ≠ k)?

Odgovor Broj instrukcija koje se izvravaju kod prvobitne verzije asemblerskog programa, za 10 potpunih iteracija i jedan izlazak iz petlje, iznosi 10*7+5 = 75 instrukcija

Revidirana verzija programa koja u petlji sadr`i samo jednu instrukciju grananja oblika je:

Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa polja sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,Kraj # go to Kraj if sima[i] ≠ k Ponovi: Add $s3,$s3,$s4 # i = i + j Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa polja sima[i] Lw $t0,0($t1) # $t0 = sima[i] BEQ $t0,$s5,Ponovi # go to Ponovi if sima[i]= k Kraj: ... Broj instrukcija koji se izvrava za ovu verziju programa iznosi: 5 + 10 * 6 = 65

Za slu~aj da se vrednost 4*j izra~unava pre petlje, mogue je dalja modifikacija ~iji je oblik sledei:

Add $t2,$s4,$s4 # $t2 = 2 * j Add $t2,$t2,$t2 # $t2 = 4 * j Add $t1,$s3,$s3 # $t1 =2 * i Add $t1,$t1,$t1 # $t1 = 4 * i

4. RISC procesori

4-19

Add $t1,$t1,$s6 # $t1 = adresa polja sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,Kraj # go to Kraj if sima[i] = k Ponovi: Add $t1,$t1,$t2 # $t1 = adresa polja sima[i + m *j] Lw $t0,0($t1) # $t0 = sima[i] BEQ $t0,$s5,Ponovi # go to Ponovi if sima[i] Kraj: ... Broj instrukcija koje se izvravaju iznosi 7+10*3 = 37

Zadatak 4.9

Pseudoinstrukcije ne pripadaju skupu instrukcija mikroprocesora MIPS ali se ~esto koriste u MIPS-ovim programima. Za svaku od pseudoinstrukcija datu u tabeli, odredi minimalnu sekvencu stvarnih MIPS-ovih instrukcija pomou kojih se obavlja specificirana aktivnost.

Napomena: U kreiranim programskim sekvencama koristi registar $at. Simbol big se odnosi na 32- bitnu; a simbol small na 16-bitnu celobrojnu vrednost.

Odgovor pseudo instrukcija ta obavlja reenje

1) Move $t5,$t3 $t5 = $t3 Add $t5,$t3,$zero

2) Clear $t5 $t5 = 0 Add $t5,$zero,$zero

3) Li $t5,small $t5 = small Addi $t5,$zero,small

4) Li $t5,big $t5 = big Lui $t5,MS_deo(big)

Ori $t5,LS_deo(big)

5) Lw $t5,big($t3) $t5 = Memorija [$t3+big] Li $at,big

Add $at,$at,$t3

Lw $t5,0($at)

6) Addi $t5,$t3,big $t5 = $t3+big Li $at,big

Add $t5,$t3,$at

7) BEQ $t5, Small, L if ($t5 = small) go to L Li $at,small

BEQ $t5,$at,L

8) BEQ $t5, big, L if ($t5 =big) go to L Li $at,big

BEQ $at,$zero,L

9) BLE $t5, $t3, L if ($t5 < = $t3) go to L Slt $at,$t3,$t5

BEQ $at,$zero,L

10) BGT $t5, $t3, L if($t5 > $t3) go to L Slt $at,$t3,$t5

BNE $at,$zero,L

11) BGE $t5, $t3, L if($t5 > = $t3) go to L Slt $at,$t5,$t3

BEQ $at,$zero,L

Napomena: Tamnije rarifani deo se odnosi na reenje. U delu reenja koristi se instrukcija Li koja se implementira kao u slu~ajevima 3 i 4.

Zadatak 4.10

Neka je data sledea kodna sekvenca na C-u:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-20

for (i = 0; i <= 100; i = i + 1) a[i] = b[i] + c;

Usvojimo da su:

(1) a i b nizovi ~iji su elementi tipa re~ (32-bitne vrednosti);

(2) bazna adresa niza a se ~uva u $a0, a bazna adresa niza b u $a1;

(3) u registru $t0 se ~uva promenljiva i, a u registru $s0 promenljiva c.

Napisati odgovarajui kôd na asemblerskom jeziku mikroprocesora MIPS. Koliko se instrukcija izvri prilikom izvrenja programa? Koliko puta se vri obraanje memoriji podataka u toku izvrenja programa?

Odgovor # Inicijaliziraemo prvo registar $t0 na 0, tj. i = 0: Add $t0,$zero,$zero # $t0 = 0 # Ako se u $s0 ~uva adresa promenljive c, tada se ona smeta u $t1 sledeom instrukcijom Lw $t1,0($s0) # $t1 = c # Da bi odredili bajt adresu sukcesivnih elemenata polja i proverili da li je kraj petlje, # potrebne su nam konstante 4 i 401. Usvojiemo da se one nalaze u memoriji # na lokacijama Konst4 i Konst401 u trenutku kada se vri punjenje programa Lw $t2,Konst4($zero) # $t2 = 4 Lw $t3,Konst401($zero) # $t3 = 401 # U okviru tela petlje pristupa se elementima polja, obavlja se izra~unavanje, i testira kraj petlje Ponovi: Add $t4,$a1,$t0 # $t4 = adresa elementa b[i] Lw $t5,0($t4) # $t5 = b[i] Add $t6,$t5,$t1 # $t6 = b[i]+ c Add $t7,$a0,$t0 # $t7 = adresa elementa a[i] Sw $t6,0($t7) # a[i]= b[i]+ c Add $t0,$t0,$t2 # i = i + 4 Slt $t8,$t0,$t3 # $t8 = 1 if $t0 < 401 tj. i < = 100 BNE $t8,$zero,Ponovi # go to Ponovi if i < = 100

Broj instrukcija koji se izvrava iznosi 4+101*8 = 812

Broj obraanja memoriji podataka je 3+101*2 = 205

Test pitanje 4.19

Pokazati koja je najkraa sekvenca MIPS-ovih instrukcija kojom se odredjuje apsolutna vrednost celobrojne vrednosti date u prezentaciji dvoji~nog komplementa. Izvriti konverziju ove instrukcije (instrukcija koju asembler procesora MIPS prihvata):

Abs $t2,$t3 Zna~enje je sledee: registar $t2 ~uva kopiju registra $t3 ako je registar $t3 pozitivan, ili, ~uva dvoji~ni komplement registra $t3 ako je $t3 negativan.

Odgovor Addu $t2,$zero,$t3 # kopiraj $t3 u $t2

4. RISC procesori

4-21

BGEZ $t3,Dalje # if $t3 > = 0 go to Dalje Sub $t2,$zero,$t3 # - $t3 kopiraj u $t2 Dalje: ...

Test pitanje 4.20

Ukazati na najkrau sekvencu instrukcija mikroprocesora MIPS kojom se odredjuje da li postoji izlazni prenos (carry out) u toku sabiranja sadr`aja dva registra, recimo registre $t3 i $t4. Postavi 0 ili 1 u registar $t2 ako je izlazni prenos 0 ili 1, respektivno.

Odgovor Addu $t2,$t3,$t4 Sltu $t2,$t2,$t4 ili, alternativno reenje bi bilo:

Addu $t2,$t3,$t4 Sltu $t2,$t2,$t3

Test pitanje 4.21

Ukazati na najkrau sekvencu instrukcija mikroprocesora MIPS kojom se vri sabiranje celobrojnih vrednosti u duploj preciznosti. Usvojimo da je jedna 64-bitna celobrojna vrednost u prezentaciji dvoji~nog komplementa smetena u registre $t4 i $t5 a druga u registre $t6 i $t7. Sumu smestiti u registre $t2 i $t3. U konkretnom slu~aju MS re~i 64 bitnih celobrojnih vrednosti se ~uvaju u parno numerisanim registrima, a odgovarajue LS re~i u neparno numerisanim registrima.

Odgovor Ako ne `elimo overflow detekciju, tada mo`emo koristiti sledeu sekvencu.

Addu $t3,$t5,$t7 # $t3 = $t5 + $t7 Sltu $t2,$t3,$t5 # if ($t3 < $t5) then $t2 = 1; else $t2 = 0 Addu $t2,$t2,$t4 # Carry out + $t4 = $t2 Addu $t2,$t2,$t6 # $t2 + $t6 = $t2

Kada `elimo da detektujemo da li postoji premaaj (overflow) tada je potrebno koristiti sledeu sekvencu:

Addu $t3,$t5,$t7 Sltu $t2,$t3,$t5 Add $t2,$t2,$t4 Add $t2,$t2,$t6 # detektuje se premaaj

Zadatak 4.11

Napisati programsku sekvencu na asemblerskom jeziku za mikroprocesor MIPS xx pomou koje je mogue obaviti sledeu logi~ku funkciju:

cbacbacbacbaS ⋅⋅+⋅⋅+⋅⋅+⋅⋅=

Promenljive a, b i c ~uvaju se u memorijskim lokacijama A, B i C, respektivno.

Kod reavanja zadataka koristiti sledeu registarsku konvenciju, koja va`i za MIPS procesor:

Odgovor lzraz se mo`e srediti na sledei na~in:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-22

)baba(cb)aba(cS ⋅⋅+⋅⋅+⋅+⋅⋅=

zczcS ⋅+⋅= ,

gde je z = baba ⋅⋅+⋅ = a Å b i babaz ⋅+⋅=

S = c Å a Å b

Programska sekvenca ima sledei oblik:

Lw $t0,A($zero) ; pribavi a u $t0 Lw $t1,B($zero) ; pribavi b u $t1 Lw $t2,C($zero) ; pribavi c u $t2 Xor $t2,$t2,$t0 ; c = c Å a Xor $t2,$t2,$t1 ; c = c Å a Å b St S($zero),$t2 ; smesti c u S

Test pitanje 22 Neka je dat sledei HLL iskaz:

a := (b >= c) or (d == e)

Napisati odgovarajuu programsku sekvencu na asemblerskom jeziku mikroprocesora MIPS xx. Promenljive a, b, c, d i e se ~uvaju u memorijskim lokacijama A, B, C, D i E, respektivno. Za pisanje programa koristiti standardnu MIPS-registarsku konvenciju, datu na Slici 1.

Odgovor Ideja se zasniva na sledeem konceptu:

a = True (tj. a = 1) ako je uslov ispunjen, ili a = False (tj. a = 0) ako uslov nije ispunjen.

Test pitanje 4.23

Za sledee tri situacije identifikuj tipove zavisnosti po podacima

upis

~itanje

instrukcija 1

instrukcija 2

a)

~itanje

upis

instrukcija 1

instrukcija 2

b)

4. RISC procesori

4-23

upis

upis

instrukcija 1

instrukcija 2

c)

Odgovor a) Read - after - write (RAW) hazard

b) Write - after - read (WAR) hazard

c) Write - after - write (WAW) hazard

Test pitanje 4.24

Ukazati na osnovne tipove hazarda po podacima (RAW, WAR i WAW) koje postoje izmedju sledeih instrukcija :

i1 : Add R1, R2, R3 ; R1 = R2 + R3 i2 : Add R4, R1, R4 ; R4 = R1 + R4 i3 : Add R3, R1, R2 ; R3 = R1 + R2 i4 : Add R1, R1, R4 ; R1 = R1 + R4

Test pitanje 4.25

Format instrukcija RISC procesora MIPS RX000 prikazan je na Slici 4.4.

3 1 2 5 0o p k o d a d re s a g r a n a n ja A d ra ) fo r m a t J - t ip a

3 1 2 5 2 0 1 5 0o p k ô d R s R t n e p o s re d n i o p e ra n d I m m

a d r e se r e g is ta ra(2 )

b ) fo r m a t I - t ip a

3 1 2 5 2 0 1 5 1 0 5 0o p k ô d R s R t R d iz n o s p o m e ra n ja fu n k c i ja

a d r e se r e g is ta ra(3 )

c ) fo r m a t R -t ip a Slika 4.4 Format instrukcija mikroprocesora MIPS RX 000

Neka je I instrukcija koja se tekue izvrava, smetena na lokaciji (memorijskoj adresi) FFFF FF00 h.

a) Ako I nije instrukcija grananja, na kojoj se memorijskoj adresi nalazi instrukcija koja se izvrava neposredno nakon instrukcije I?

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-24

b) Neka je I instrukcija bezuslovnog grananja koja ima specificirano 26-bitno adresno polje grananja Adr = 2A9 FFFFh. Odredi memorijsku adresu instrukcije koja e se izvravati neposredno nakon instrujkcije I?

Odgovor a) Adresa naredne instrukcije bie

FFFF FF00h + 4 = FFFF FF04h

b) Instrukcija bezuslovnog grananja ima format J-tipa

J Adr

To zna~i go to Adr. Imajui u vidu da su memorijske adrese kod RX000 obima 32-bita, CPU treba da proiri 26-bitno asdresno polje sa slike 1 na 32 bita. Proirenje se izvodi automatski od strane procesora u sledea dva koraka:

Temp := PC[31 : 28].Adr.00 ; PC := Temp ;

Prva ~etiri MS bita programskog broja~a PC se smetaju ispred Adr, a dva bita 00 se pridru`uju kao zadnja dva LS bita polju Adr. Ovako formirana 32-bitna adresa se puni u PC.

U konkretnom slu~aju PC[31 : 28] = F h = 1111b., a polje:

Adr = 2A9 FFFFh = 10 1010 1001 1111 1111 1111 1111 b,

tako da je ciljna adresa grananja:

A = 1111. 1010 1010 0111 1111 1111 1111 11.00 b.

Ponovnom konverzijom u heksadecimalni format dobiemo:

A = FAA7 FFFCh.

Test pitanje 4.26

Neka je dat 32-bitni mikroprocesor P, RISC tipa, ~iji jedini adresni na~ini rada za:

registarsko -registarske instrukcije - su neposredni i direktni;

Load/Store instrukcije - je registarsko indirektni sa ofsetom.

Usvojimo da procesor P ima 32 registra opte namene R0 : R31 koji se mogu koristiti kao registri za podatke i adrese. Jedinstveni 32-bitni format instrukcije ~ine sledea ~etiri polja: (i) opkôd; (ii) specifikacija dva registra; (iii) 16-bitna neposredna adresa.

Odrediti:

Koliki je maksimalan broj opkôd tipova;

Koristei tipi~nu asemblersko jezi~ku notaciju sa jasnim komentarom, opisati aktivnost instrukcija koje mikroprocesor P obavlja, za svaku od sledee tri operacije:

Load re~ iz memorije M

Store bajt u memoriji M

Dupliraj broj koji se ~uva u registar (opkôd za mno`enje ne postoji).

4. RISC procesori

4-25

Odgovor a) Za specifikaciju adresa oba registra potrebno je 10 bitova, a za neposredni operand 16 bitova. Za opkod ostaje 32-16-10 = 6 bitova, to odgovara 26 = 64 opkôd tipa.

b) Neka Rd i Rs ozna~avaju odredini i izvorini registar, respektivno. Koristei notacije procesora RX000, imaemo:

Ldw Rd,offset(Rs) ; Rd := M([Rs + ofset]) Stb offset(Rs),Rd ; M(Rs + ofset) := Rd[7 : 0] Lsh Rd ; Logi~ki pomeri ulevo za jednu bit poziciju

Test pitanje 4.27

Neka je dat 32-bitni RISC procesor P definisan u prethodnom test-pitanju. Objasni kako se, pomou jedne ili veeg broja instrukcija procesora P, mogu izvriti sledee tri instrukcije:

Swap Rx,Ry ;medjusobno razmeni sadr`aj dva registra Clr Rx ; obrii sadr`aj registra Push Rx ; smesti u magacin

Ponovo koristi tipi~nu asemblersku jezi~ku notaciju sa jasnim komentarima.

Odgovor Usvojiemo da je sadr`aj registra R0 jednak 0.

• Operacija SWAP

Add Rk,Rx,R0 ; Rx + 0 -> Rk, operacija Mov, Rk = privremeni registar Add Rx,Ry,R0 ; Ry + 0 -> Rx Add Ry,Rk,R0 ; Rk + 0 -> Ry, tj. Rx -> Ry

• Operacija Clear

Sub Rx,Rx,Rx ; Rx - Rx -> Rx

Alternativna instrukcija bi bila:

And Rx,Rx,#0 ; Rx and 0 -> Rx

• Operacija Push

Neka pokaziva~ magacina bude registar Rk

Sub Rk,Rk,#4 ; Rk - 4 -> Rk Add #0(Rk),Rx ; M(Rk) := Rx

Test pitanje 4.28

Koja od sledeih instrukcija ne postoji kod RISC-ova?

a) Add Rx,Ry b) Move Rx,Immediate

c) Or Rx,Memory

Odgovor Instrukcija Add Rx,Ry se realizuje kao: Add Rx,Rx,Ry, instrukcija Move Rx,Immediate se realizuje kao: Add Rx, R0, Immediate, a instrukcija Or Rx, Memory ne mo`e se realizovati jedinstvenom instrukcijom, ve kao pseudo-instrukcija, na sledei na~in:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-26

Lw Ry,Memory(R0) Or Rx,Rx,Ry

Test pitanje 4.29

Na kom principu rade superkalrni procesori?

Odgovor Superskalarno procesiranje predstavlja sposobnost iniciranja veeg broja instrukcija u jednom taktnom intervalu. Tipi~ni superskalarni procesor iz dolazeeg niza instrukcija pribavlja i dekodira po nekoliko instrukcija istovremeno. U toki procesa pribavljanja, sa ciljem da se obezbedi tok izvrenja instrukcija, ishodi koji prate uslovne instrukcije granjanja (granaj se ili ne) uvek se unapred predvi|aju (recimo, uvek se predpostavlja da e se grananje desiti, ili suprotno). Niz instrukcija se nakon toga analizira i detektuju zavisnosti po podacima, a zatim se pre svega od tipa, inicira paralelno izvrenje instrukcija u funkcionalnim jedinicama. Naredno paralelno izvrenje instrukcija se inicira dr`ei se sledeeg principa: Inicira se ivrenje onih dekodiranih instrukcija za koje su spremni operandi i za koje postoje slobodne funkcionalne jedinice (resursi) na kojima se one izvravaju, a ne kakav je njihov prvobitni redosled u programu. Ova osobina, koja je karakteristi~na za veliki broj superskalarnih implementacija, poznata je kao dinami~ko planiranje izvrenja instrukcija (dynamic instruction scheduling). Nakon izvrenja aktivnosti izvrenja, rezultati instrukcija se resekvenciraju kako bi isti mogli da se koriste kod a`uriranja stanja procesa koje odgovara konkretnom (sekvencijalnom) programskom redosledu a ne iniciranom ~ak i za slu~aj da se javo prekid. S obzirom da se individualne instrukcije posmatraju kao celine koje se paralelno izvravaju za superskalarni procesor se ka`e da koristi paralelizam na nivou instrukcija (instruction level parallelism).

Test pitanje 4.30

Na ta se oslanja razvoj svakog novog procesora?

Odgovor Razvoj softvera i hardvera izuzetno je dinami~an. Zbog toga svaki arhitekta nekog novog procesora mora da zna sa kakvom bazom znanja polazi u reavanje novog zadatka. Za najvei broj procesora akumulirano znanje predstavlja prethodna verzija/generacija procesora. Tako na primer, prethodnik za CISC procesor i486 je bio i386, za MC68030 je bio MC68020 itd. Sli~na je situacija i kod superskalarnih procesora. Klju~na komponenta akumuliranog znanja kod ovih procesora je binarna kompatibilnost, koja se odnosi na mogunost izvrenja mainskog programa koji je napisan za stariju generaciju procesora. Jo od ranije projektanti softvera su uo~ili da se zna~ajne prednosti u projektovanju skupa instrukcija posti`u kada je skup instrukcija novog procesora kompatibilan sa razli~itim modelima iste generacije procesota. Iz brojnih prakti~nih razloga osnova za o~uvanje softverske kompatibilnosti osvojeno je da bude jezika na binarno mainskom nivou.

Test pitanje 4.31

[ta su to sekvencijalni i paralelni model izvrenja?

Odgovor Va`na osobina procesora ranijih generacija predstavlja sekvencijani model izvrenja (sequential execution model). Kod ovog modela PC se koristi da se u jednom ciklusu pribavi iz memorije

4. RISC procesori

4-27

jedinstvena instrukcija. Instrukcija se zatim izvrava. Nakon zavretka instrukcije procesor inkrementira PC a iz memorije se pribavlja naredna instrukcija. Za model sekvencijalnog izvrenja ka`emo da je prirodno da poseduje koncept preciznog stanja. Naime u trenutku prekida precizno stanje maine (arhitekturno vidljivi registri i memorija) odslikava ono stanje koje odgovara stanju maine koje strogo prati sekvencijalni model izvrenja programa. Zbog toga se ponovni start implementira tako to se izvrenje programa nastavlja od one instrukcije u programu kod koje je dolo do prekida.

Implementacije koje se odnose na superskalarne procesore zna~ajno se razlikuju od sekvencijalnog modela izvrenja, jer je kod superskalarnih procesora cilj da se to vei broj aktivnosti obavi paralelno. Kao rezultat takvog koncepta rada program treba sada posmatrati kao specifikaciju : [ta se mo`e uraditi (izvriti) a ne kako se to realno izvrava.

Kada se govori o programu, pojam bolje performanse uvek indirektno asocira na krae vreme izvrenje. U principu za svaku instrukciju je potreban vremenski period kako bi se ona pribavila i izvrila. Ovaj period se zove latencija instrukcije. Skraenje vremena izvrenje sekvence instrukcija (~itaj programa) mo`e se postii: (1)smanjenjem latencija individualnih instrukcija; i (2) paralelnim izvrenjem veeg broja instrukcija. Kod najveeg broja slu~ajeva pristup (1) zahteva ugradnju obimnog i slo`enog hardvera, dok se pristup (2) oslanja na implementaciju veeg broja relativno jednostavnih gradivnih blokova. Ovo je razlog zato se rad superskalarnih procesora oslanja na paralelizam.

Test pitanje 4.32

[ta se hardverski implementira kod superskalarnih procesora?

Odgovor Sa aspekta hardvera kod superskalarnih procesora se implementiraju:

1. Strategija simultanog pribavljanja veeg broja instrukcija. U najveem broju slu~ajeva ishod uslovnog grananja unapred se predvi|a, tj. optimisti~ki se pribavljaju instrukcije sa puta za koga se smatra da e se nastaviti

2. Metod za odre|ivanje zavisnosti RAW tipa. Da bi se odredila ova zavisnost potrebno je da se poznaje tok instrukcija, vrednosti koje se ~uvaju u registrima i mehanizmi za prenos ovih vrednosti (tipi~no su to mehanizmi premoavanja) na onim mestima gde su u toku izvrenja instrukcija ti mehanizmi i potrebni

3. Metod za paralelno iniciranje izvrenja (issuing) veeg broja instrukcija

4. Resursi za paralelno izvrenje veeg broja instrukcija (u samom procesoru ugra|uje se vei broj proto~no organizovanih funkcionalnih jedinica)

5. Hijerarhijska organizacija memorije koja je u stanju da istovremeno podr`ava vei broj obraanja memoriji

6. Metodi za komunikaciju sa memorijom isklju~ivo preko instrukcija tipa Load i Store

7. Interfejs memorije koji e prilagoditi hijerarhijsku organizaciju memorije strategiji izvrenja instrukcije sve u ciju dobijanja maksimalnih performansi

8. Metodi koji e dovesti proces u konkretan redosled. Ovim mehanizmima, spolja posmatrano, obezbe|uje se korektno sekvencijalno izvrenje procesa.

Test pitanje 4.33

Kako se predstavlja program i kako se izvrava stati~ki program kod superskalarnih procesora?

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-28

Odgovor Najvei broj aplikacionih programa napisan je danans na nekom od HLL-ova. Takvi programi se zatim prevode (kompajliraju) na binarne programe ili programe na stati~kom mainskom nivou. U sutini stati~ki program opisuje skup izvrenja. Svakom izvrenju odgovara odre|eni skup podataka koji je karakteristi~an za to izvrenje. Implicitno stati~kim programom se specificira sekvencijalni model izvrenja, tj. koji odgovara prirodnom redosledu izvrenja instrukcija. Ilustracije radi, na Slici 4.5 a) prikazan je HLL program napisan na C-u. Program je preveden na neoptimizovani stati~ko-asemblerski program (Slika 4.5 b)). Program sa Slike 4.5 odgovara delu rutine za sortiranje. Susedne vrednosti polja a[ ] se upore|uju i uzajamno zamenjuju mesta kada je a[i] > a[i+1]. Promenljiva izmena ~uva trag o broju promene mesta. Ako je na kraju prolaska kroz polje promenljiva izmena=0 tada ka`emo da je polje sortirano.

Stati~ki program sa Slike 4.5 izvrava se nad specifi~nim skupom ulaznih podataka. Sekvenca instrukcije koje se izvravaju slede jedna za drugom, za stati~ke instrukcije ka`emo da ulaze u dinami~ku sekvencu jednostavnim inkrementiranjem PC-a koji pokazuje na narednu instrukciju koju treba izvriti. Kada se u programskoj sekvenci javi instrukcija uslovno grananje ili bezuslovni skok tada se vrednost PC-a a`urira na neredoslednu adresu. Za neku instrukciju ka`emo da je upravlja~ko zavisna (control dependent) u odnosu na prethodnu(e) dinami~ku(e) instrukcij(e) kada tok programa (eksplicitno) specificira da prvo mora da se izvri prethodna instrukcija. Drugim re~ima, oba metoda za modifikaciju PC-a (inkrementiranje i a`uriranje) rezultuju postojanju upravlja~ke zavisnosti.

4. RISC procesori

4-29

for (i=0;i<zadnji;i++)

if (a[i] > a[i+1]

temp=a[i];a[i]=a[i+1]a[i+1=temp;izmena++;

a) HLL program napisan na C-u

LAB2: Move r3,r7 //* r3 → a[i]

Lw r8,(r3) //* Load a[i]

prvi blok Add r3,r3,4 //* r3 → a[i+1]

Lw r9,(r3) //* Load a[i+1]

BLE r8,r9,LAB3 //* Branch a[i]>a[i+1]

Move r3,r7 //* r3 → a[i]

Sw r9,(r3) //* Store a[i]

drugi blok Add r3,r3,4 //* r3 → a[i+1]

Sw r8,(r3) //* Store a[i+1]

Add r5,r5,1 //* izmena++

LAB3: Add r6,r6,1 //* i++

trei blok Add r4,r7,4 //* r4 → a[i]

BLE r6,r4,LAB2 //* Branch i<zadnji

b) Kompilovana verzija

Slika 4.5 Deo rutine za sortiranje

Test pitanje 4.34

Kako se prevazilaze upravlja~ke zavisnosti kod superskalarnih procesora?

Odgovor Prvi korak ka poveanju paralelizma na nivou instrukcija zasniva se na eliminaciji upravlja~ke zavisnosti. Upravlja~ke zavisnosti koje rezultuju usled inkrementiranja PC-a su jednostavnije u odnosu na one koje se javljaju zbog a`uriranja vrednosti PC-a. Uka`imo na specifi~nosti svake od njih.

a) Upravlja~ke zavisnosti zbog inkrementiranja PC-a

U principu, stati~ki program se mo`e posmatrati kao skup osnovnih blokova. Svaki osnovni blok predstavlja neprekidni blok instrukcija koji ima po jednu ulaznu i jednu izlaznu ta~ku. Kod asemblerskog kôda sa Slike 4.5 b), postoje tri osnovna bloka. Prvi blok ~ini pet instrukcija izme|u oznake LAB3 i instrukcije BLE. Drugi blok ~ine instrukcije izme|u BLE i LAB3, a trei od instrukcije koja po~inje oznakom LAB3 do instrukcije BLT. Nakon to je osnovni blok pribavljen (od strane logike za pribavljanje) sledi njegovo eventualno izvrenje. Zbog ovoga, bilo koja sekvenca instrukcija koja pripada osnovnom bloku se mo`e, kao jedinstvena celina, inicirati radi

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-30

izvrenja u konceptualni prozor izvrenja (window of execution). Cilj je da se prozor izvrenja odr`ava uvek pun jer instrukcije koje se nalaze u njemu mogu paralelno da se izvravaju. Naime, nakon to su instrukcije inicirane u prozoru izvrenja, ako apstrahujemo zavosnost po podacima, one mogu paralelno da se izvravaju.

b) Upravlja~ke zavisnosti zbog a`uriranja PC-a

U okviru individualnih blokova postoji odre|eni paralelizam, ali da bi se poveao iznos paralelizma, upravlja~ke zavisnosti koje se javljaju zbog a`uriranja PC-a a posebno one koje su posledica uslovnih grananja moraju biti prevazi|ene. Jedan od na~ina da se uradi ovo je da se predvidi ishod instrukcije uslovno grananje i da se spekulativno pribave i izvre instrukcije sa predvi|enog puta. (Pribavljanje i iniciranje izvrenja instrukcija, kod superskalarnih procesora, pod predpostavkom da se ishodi grananja korektno predvi|aju i da se izuzeci nee javiti zove se spekulativno izvrenje (speculative execution)). Instrukcije sa predvi|enog puta se unose u prozor izvrenja. Ako se kasnije, za predvi|anje ustanovi da je bilo korektno, tada je spekulativni status instrukcija od koristi, tako da njegov efekat na stanje maine je identi~an kao i efekat ostalih instrukcija. Kada se za predikciju ustanovi da nije bila korektna, tada i spekulativno izvrenje nee biti korektno. Sa ciljem da se stanje procesora ipak sa~uva korektno neophodno je da se iniciraju akcije obnavljanje korektnog stanja koje je va`ilo pre instrukcije grananja. U konkretnom slu~aju, instrukcija BLE sa Slike 4.5b) kreira upravlja~ku zavisnost. Da bi se premostila ova zavisnost, kao ishod izvrenja ove instrukcije treba predvideti izlaz “ne granaj se”. Pri tome se instrukcije koje se nalaze izme|u instrukcija grananja i instrukcije na oznaci LAB3 treba spekulativno izvravati.

Test pitanje 4.35

Kako se definie zavisnost po podacima kod superskalarnih procesora?

Odgovor Izme|u instrukcija koje se nalaze u prozoru izvrenja mogu da postoje ograni~enja tipa zavisnosti-po-podacima (data dependencies). Zavisnost-po-podacima izme|u instrukcija javljaju se zbog toga to instrukcije mogu da pristupaju (radi ~itanja ili upisa) istoj lokaciji (memorijskoj ili registarskoj). Kada instrukcije pristupaju istoj lokaciji, ka`emo da se javlja hazard jer postoji verovatnoa da redosled pristupa toj lokaciji ne bude korektan. Idealno posmatrano izme|u instrukcija realno je o~ekivati da postoje samo ograni~enja tipa prava zavisnost (true dependence). Ova ograni~enja karakteristi~na su za hazarde RAW (read-after-write), jer instrukcija tipa potroa~, mo`e da pro~ita vrednost nakon to je instrukcija proizvo|a~ upisala rezultat.

Pored pravih kod superskalarnih procesora postoje i veta~ke zavisnosti (artificial dependecies). Ove zavisnosti rezultat su WAR (write after read) i WAW (write after write) hazarda. WAR hazard se javlja u situacijama kada instrukcija treba da upie novi rezultat u lokaciju, ali upis mora da se odlo`i sve dok prethodne instrukcije kojima je stara vrednost potrebna ne pro~itaju tu vrednost. WAW hazard se javlja kada vei broj instrukcija a`urira istu lokaciju, ali je pri ovome veoma je bitno da se sa~uva korektan redosled a`uriranja.

Na Slici 4.6 prikazan je deo programskog segmenta (prvi blok) sa Slike 4.5b), na kome su jasno nazna~eni kakvi tipovi zavisnosti po podacima postoje izme|u instrukcija.

4. RISC procesori

4-31

LAB2: Move r3, r7Lw r8, r3Add r3, r3, 4Lw r9, (r3)BLE r8, r9, LAB3

RAWWAW

WAR

Slika 4.6 Primer zavisnosti po podacima

Test pitanje 4.36

Kako se vri planiranje izvrenja instrukcija kod superskalarnih procesora?

Odgovor Nakon reavanja problema koji se ti~u upravlja~kih zavisnosti i zavisnosti-po-podacima inicira se izvrenje instrukcija “~ime po~inje njihovo paralelno izvrenje". U sutini planiranje paralelnog izvrenja instrukcija (parallel execution schedule) se realizuje hardverski. Planer uzima u obzir realna ograni~enja kao to su prave zavisnosti po podacima i broj raspolo`ivih funkcionalnih jedinica.

Planiranje paralelnog izvrenja ~esto zna~i da instrukcije zavravaju svoje izvrenje u redosledu razli~itom od onog specificiranog sekvencijalnim modelom. [ta vie mo`e da se desi da se odre|ene instrukcije izvre u potpunosti i pored toga to sekvencijalnim modelom njihovo izvrenje nije bilo predvi|eno (tipi~no ovaj slu~aj se javlja kada se pribave spekulativne instrukcije sa nekorektno predvi|enog puta grananja). Zbog ovoga, memorijski elementi date arhitekture (registri i memorijske lokacije) ne smeju da se a`uriraju odmah nakon to se instrukcija zavri. Umesto toga rezultat instrukcije privremeno se pamti sve do trenutka kada nai|e trenutak da se on stvarno preda. U me|uvremenu da bi se postigle visoke performanse, rezultati moraju radi korienja biti dostupni zavisnim instrukcijama. U trenutku kada se odredi da je ekvivalentni sekvencijalni model izvrio instrukciju svi privremeni rezultati se ~ine stalni a shodno tome i a`uriraju arhitekturno stanje. Ovaj proces se uobi~ajeno zove predaja rezultata (committing ili retiring) instrukcije.

Na Slici 4.7 prikazan je paralelni metod izvrenja kakav sreemo kod najveeg broja superskalarnih procesora. Instrukcije su zadane stati~kim programom. Dinami~ki niz instrukcija formiraju pribavljene instrukcije i one za koje je izvrena predikcija grananja. Dinami~ki niz instrukcija se ispituje radi detekcije i eliminisanja veta~ke zavisnosti. Nakon toga one se smetaju u prozor izvrenja. U prozoru izvrenja redosled instrukcija ne odgovara sekvencijalnom redosledu, ali su one parcijalno ure|ene. Ure|enost je odre|ena pravom zavisnou i dostupnou resursa. Na kraju nakon zavretka instrukcija, instrukcije se ponovo vraaju u redosled koji odgovara sekvencijalom modelu a njihovi rezultati korektno a`uriraju arhitekturno stanje procesa.

Na Slici 4.7, na konceptualnom nivou je prikazano izvrenje sekvence kod superskalarnih procesora.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-32

stati~kiprogram

pribavljanjeinstrukcija ipredikcijagrananja

isporu~ivanjeinstrukcije

iniciranjeizvrenjainstrukcije

izvrenjeinstrukcija

preure|enjeinstrukcija ipredaja

Slika 4.7: Rad superskalarnih procesora na konceptualnom nivou

Napomena: Faze obrade su prikazane na gornjem delu

Test pitanje 4.37 Objasniti pojam odmotavanje petlje (loop unrolling).

Odgovor Osnovna ideja odmotavanja petlje sastoji se u tome to je potrebno ponoviti izvrenje tela petlje onoliko puta koliko je to predvidjeno samim kôdom, tj. u~initi kôd petlje sekvencijalnim. Odmotavanjem se eliminie inter-iteracioni kôd, kao to je dekrementiranje broja~a petlji, testiranje za kraj petlje i uslovno grananje izmedju iteracija. Odmotavanje petlje se mo`e implementirati veoma lako kada je broj iteracija u toku faze kompilacije poznat, to je naj~ei slu~aj kod do i for petlji.

Zadatak 4.12

Neka je data sledea jednostavna petlja:

for i=1 to 3 do b(i) = 4.13*a(i)

Pokazati kako izgleda potencijano kompajlirani kôd petlje kod CISC i RISC maine.

Blokovi podataka a1, a2 i a3, kao i b1, b2 i b3, ~uvaju se u memorijskim lokacijama A1, A2, A3, B1, B2 i B3, respektivno. Kod oba procesora smatrati da postoji registarsko polje od 32 interna registra, imenovana kao r0, r1,..., r31.

Odgovor

Potencijalno kompajlirani kôd kod CISC procesora bie oblika:

Load r1,A1 ; napuni po~etnu adresu bloka A

Load r2,B1 ; napuni po~etnu adresu bloka B

Load r3,3 ; napuni broja~ petlje

4. RISC procesori

4-33

Ponovi: Fmul [r2],4.13,[r1] ; mno`enje koristei indirektno adresiranje Inc r1,4 ;inkrementiranje pokaziva~a na naredni element bloka podat. a(i)

Inc r2,4 ; inkrementiranje pokaziva~a na naredni element bloka podat. b(i)

Dcr r3 ; dekrementirnje broja~a petlje

BNZ Ponovi ; granaj se na Ponovi ako broja~ petlje nije nula

Osnovna karakteristikla ove programske sekvence je ta to instrukcija Fmul koristi indirektno adresiranje radi pristupa memorijskim operandima.

Nasuprot ovakvom pristupu, kompajlirani kod kod RISC maine, za istu petlju i izvrenje instrukcije Fmul, koristi registarske operande. [ta vie, za ovakav slu~aj, imajui u vidu da je petlja kratka, vri se odmotavanje petlje ~ime se kôd koji se odnosi na dekrementiranje i testiranje eliminie, tako da nakon odmotavanja dobijamo:

Lw r1,A1 ; Lw je ekvivalentna instrukciji Load

Lw r2,B1 Lw r3,3 Fmul 0(r2),4.13,0(r1) Addi r1,r1,4

Addi r2,r2,4 Fmul 0(r2),4.13,0(r1) Addi r1,r1,4

Addi r2,r2,4 Fmul 0(r2),4.13,0(r1)

U konkretnom slu~aju, primenjena je code-inlining tehnika (tradicionalna makro-ekspanziona tehnika) kao standardna kompilatorska optimizaciona tehnika za kratke potprograme. Code-inlining zna~i da se vri ubacivanje (insertovanje, ili tzv. umetanje) celog tela potrograma svaki put kada se on pozove u ta~ki poziva, umesto da se telo petlje posebno memorie i svaki put poziva iz pozivnog (glavnog) programa.

Ipak, treba ukazati da je jednostavno odmotavanje petlje ~esto neprakti~no, posebno kada je broj iteracija veliki, ili kada broj iteracija nije fiksiran (poznat) u toku kompilacije. Kod ovakvih situacija jednostavno odmotavanje petlje treba proiriti. Standardno korieni metod se sastoji u sledeem:

Petlja se odmotava odredjeni broj puta, recimo tri puta, i postavlja broja~ petlje na rezultantnu grupu odmotanih petlji. Nakon toga se vri dekrementiranje, testiranje za kraj petlje i uslovno grananje za svaku od grupa odmotanih petlji. Evidentno je da je u ovom slu~aju potrebno kreirati: prvo, neki pred-kôd (prolog-kôd) pre po~etka petlje, a zatim, na kraju neki zavrni-kôd (epilog-kôd) kako bi se sve aktivnosti uspeno i korektno obavile. Tako na primer, ako `elimo prethodnu petlju da izvrimo 30 puta, koristiemo sledei kôd:

Lw r1,A1 Lw r2,B1 Lw r3,30 Ponovi: Fmul 0(r2),4.13,0(r1) Addi r1,4

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-34

Addi r2,4 Fmul 0(r2),4.13,0(r1) Addi r1,4

Addi r2,4 Fmul 0(r2),4.13,0(r1) Addi r1,4

Addi r2,4 Subi r3,r3,3 BNE r0,r3,Ponovi ; if (r0!=r3) go to PC = PC + 4 + Ponovi; u r0 uvek se

~uva 0

Tehnika odmotavanja petlji ne mo`e se efikasno primeniti kada izmedju narednih iteracija egzistira rekurentnost.

Test pitanje 4.38

Ukazati na osnovni smisao koncepta softverska proto~nost.

Odgovor Softverska proto~nost je tehnika koja je, po analogiji, sli~na tehnici hardverske proto~nosti. Osnovna ideja zasniva se na paralelnom izvrenju kôda petlje na ILP procesoru (ILP - Instruction Level Processor). U sutini, ILP procesor ~ini veliki broj izvrnih jedinica koje rade paralelno. Da bi ukazali na ovaj problem neto detaljnije, analiziraemo izvrenje sledee HLL petlje:

for i=1 to 7 do b(i) = 4.13*a(i)

Neka kompajlirani kôd RISC maine bude:

Lw r1,b(1) Fmul r1,4.13,r1 St a(i),r1

Da bi objasnili princip softverske proto~nosti, ograni~imo se samo na telo petlje a ne i na prolog- i epilog-kôd. Pri analizi, uveemo sledee pretpostavke:

Maina poseduje posebne jedinice za manipulaciju sa FP i FX brojevima, posebnu logiku za Lw i St instrukcije. Sve jedinice su u stanju da paralelno izvravaju operacije. Svaka od jedinica omoguava, u svakom taktnom intervalu, iniciranje nove operacije. Pretpostavimo da FP jedinica generie rezultat instrukcije Fmul, za period od tri taktna intervala, dok je latencija instrukcija Lw i St jedan taktni interval.

Obavimo sada razvijanje petlje i pokuajmo da izvrimo to je mogue veu paralelizaciju. Po~nimo sa izvrenjem prve iteracije:

taktni interval instrukcija komentar

4. RISC procesori

4-35

k Lw r1, b(1) puni se a(1)

k+1 Fmul r1, 4.13, r1

k+2 Subi r3, 1 r3 je broja~

k+3 Add r0, r0, r0 operacija Nop

k+4 St a(1)+, r1 smesti a(i), i inkrementiraj i

Napomena: Instrukcija tipa Store sa autoinkrementiranjem indeksa ne postoji kod MIPS-a. Ona je ovde data da bi se skratio kôd, a vie ukazalo na smisao uvedene tehnike.

U konkretnom slu~aju, pretpostavili smo da je latencija operacije Fmul tri taktna intervala, to zna~i da u taktnom intervalu k+3 rezultat jo nije dostupan, pa je zbog toga neophodno ubaciti operaciju Nop. Pod ovakvim pretpostavkama, druga iteracija se mo`e inicirati u taktnom intevalu k+1 punjenjem podatka a(2). Ipak, da bi se izbegla interferencija sa prvom iteracijom, tj. da bi se izbegao konflikt kod korienja r1, u drugoj iteraciji se vri preimenovanje registara r1 u r2 i r3 u r4. Shodno prethodnom, obe iteracije se mogu sada izvravati paralelno, tako da je sekvenca oblika:

taktni interval 1. iteracija 2. iteracija

k Lw r1, b(1)

k+1 Fmul r1, 4.13, r1 Lw r2, a(2)

k+2 Subi r3, 1 Fmul r2, 4.13, r2

k+3 Add r0, r0, r0 Subi r4, 1

k+4 St b(1)+, r1 Add r0, r0, r0

St b(2)+, r2

Mo`emo sada produ`iti sa narednim iteracijama na sli~an na~in.

Stvarni prikaz tehnike softverske proto~nosti prikazan je na Slici 4.8.

Analizirajmo sada taktne intervale k+4, k+5 i k+6, u toku kojih se uo~ava efekat tehnike foftverska proto~nost. Klju~ni aspekt stvarnih aktivnosti u toku ovih taktnih intervala ogleda se u tome to je paralelizam u radu izmedju susednih iteracija u petlji, u potpunosti ostvaren. Na primer, u taktnom intervalu k+4 paralelizam je sledei:

(1) memorie se rezultat iteracije 1, tj. a(1) se smeta u b(1), a pri tome se inkrementira i indeks.

(2) dekrementira se broja~ petlji, tj. r3 = r3-1

(3) obavlja se FP mno`enje 4,13*a(4)

(4) puni se operand iteracije 5, tj. smeta u b(5)

taktni interval

broj iteracije

1 2 3 4 5 6 7

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-36

k Lw

k+1 Fmul Lw

k+2 Subi Fmul Lw

k+3 Addi Subi Fmul Lw

k+4 St Addi Subi Fmul Lw

k+5 St Addi Subi Fmul Lw

k+6 St Addi Subi Fmul Lw

k+7 St Addi Subi Fmul

k+8 St Addi Subi

k+9 St Addi

k+10 St

Slika 4.8 Paralelno izvrenje petlje na ILP procesoru sa veim brojem proto~no-izvrnih jedinica

Uo~imo da aktivnosti u taktnim intervalima k+4 do k+6 imaju repetitivni oblik, to se ti~e planiranja izvrenja (scheduling), pa se zbog toga mogu zameniti odgovarajuom petljom. Pri ovome, svaka iteracija nove petlje sadr`i vei broj aktivnosti (operacija) koje pripadaju razli~itim iteracijama po~etne petlje, tj.:

Loop: Sti; Subi+2; Fmuli+3, Lwi+4; BC Loop; petlja se izvrava za i=1, 2 i 3.

Kako je to prikazano na Slici 4.9, softversko-proto~ni kôd ~ine tri dela: (1) glavni deo - ima repetitivni oblik i predstavlja novo telo petlje; (2) inicijalni kôd - nazvan prolog; i (3) zavrni kôd - nazvan epilog.

prolog

epilog

novo telo petlje

(a) paralelno izvrenje (b) softversko-proto~no izvrenje

Slika 4.9 Struktura softversko-proto~nog kôda

Zadatak 4.13

Neka se na nekom hipoteti~kom RISC procesoru izvrava sledei program na asemblerskom jeziku:

Ld r4,#A ; napuni konstantu A u registar r4 Ld r5,#B ; napuni konstantu B u registar r5

4. RISC procesori

4-37

Ld r6,#C ; napuni konstantu C u registar r6 Ld r9,#0 ; obrii registar r9 BEQ r4,r5,adr1 ; if (r4)=(r5) then go to adr1 Add r9,r5,r5 ; (r4)+(r5)→(r9) Mul r9,r9,r9 ; (r9)*(r9)→(r9) Add r9,r9,#1 ; (r9)+1→(r9) adr1:St (r1),r9 ; smesti r9 u M(r1) Identifikovati RAW, WAR i WAW hazarde koji su prisutni, ako nita nije poznato o strukturi proto~ne organizacije RISC procesora.

Odgovor Analizirajmo sve instrukcije koje ~itaju i upisuju razli~ite eksplicitno definisane operande r4, r5, r6, r9, M(r1), kao i programski broja~ PC.

instrukcija Read Write

I1 Ld r4, #A r4

I2 Ld r5, #B r5

I3 Ld r6, #C r6

I4 Ld r9, #0 r9

I5 BEQ r4, r5, adr1 r4, r5 PC

I6 Add r9, r4, r5 r4, r5 r9

I7 Mul r9, r9, r9 r9 r9

I8 Add r9, r9, #1 r9 r9

I9 St (r1), r9 r9 M (r1)

Sledee potencijalne RAW zavisnosti postoje:

(I1, I5) (I4, I7)

(I1, I6) (I4, I8)

(I2, I5) (I4, I9)

(I2, I6) (I6, I7)

(I6, I8)

(I6, I9)

(I7, I8)

(I7, I9)

(I8, I9)

zbog r4

zbog r5

zbog r9

Jedina WAR zavisnost je

(I7, I8) zbog r9.

Zavisnosti tipa WAW su:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-38

(I4, I6)(I4, I7)(I4, I8)(I6, I7) zbog r9(I6, I8)(I7, I8)

Kod odre|ivanja ovih zavisnosti usvojene su sledee pretpostavke:

a) ne postoji ograni~enje u pogledu broja proto~nih stepeni, tj. dubine proto~ne obrade

b) ne postoji ograni~enje u pogledu mogunosti da bilo koji stepen ~ita ili upisuje operande

Test pitanje

Zato se RISC arhitektura naziva Load/Store?

Test pitanje

Kreirati RISCprogramsku sekvencu kojom se izvrava sledea pseudo-instrukcija:

Add Mem,Reg,Mem

Test pitanje

Koja je prednost kada su sve instrukcije mikroprocesora istog obima?

Zadatak 4.14

Staza podataka jedne proto~ne petostepene jedinice, kod koje nisu izvedene povratne veze, tj. premoavanja, prikazana je na Slici 4.10.

IF S1 ID S2 EX S3 ME S4 WB

Cp

Le~ Le~

Le~

Le~

Slika 4.10 Petostepena proto~na jedinica

Pravila koja se odnose na princip rada strukture sa Slike 4.10 su sledea:

(a) Operand koji se dobavlja iz memorije kod operacije Load dostupan je procesoru nakon faze ME, a upisuje se u registar RF polja u fazi WB.

(b) Kod operacije Store operand je smeten u memoriji nakon faze ME.

4. RISC procesori

4-39

(c) Instrukcija grananja kako je prikazano na Slici 4.11 uzrokuje zastoj od tri ciklusa (jedan ciklus je ponovljeni IF ciklus a ostala dva su ciklus tipa zastoj, tj. iddle)

instrukcija grananja IF ID EX ME WB

naslednik grananja IF1 * * IF2 ID EX ME WB

naslednik grananja + 1 IF ID EX ME WB

naslednik grananja +2 IF IF EX ME WB

Slika 4.11 Efekat instrukcije grananja

Napomena: IF1 se odnosi na pribavljanje opkoda instrukcije koja u programu neposredno sledi iza instrukcije grananja; IF2 se odnosi na pribavljanje opkda ciljne instrukcije grananja; Simbol '*" se odnosi na zastoj.

d) Upis raspolo`ivog operanda u neki od registara RF polja vri se u toku prve polovine taktnog impulsa, a ~itanje sadr`aja registra se obavlja u toku druge polovine. Kao posledica je mogue preklapanje faze ID i WB, tj. ID mo`e da pribavi operand koji se memorie u toku faze WB.

Za sledei kôdni segment : ponovi: Lw r1,0(r2) Addi r1,r1,#1 Sw r1,o(r2) Addi r2,r2,#4 Sub r4,r3,r2 BNZ r4,ponovi Ako je inicijalna vrednost r3 jednaka r2+396, nacrtati kako izgleda izvrenje instrukcije u vremenu. Reenje treba da ima oblik kao onaj na Slici 4.11.

Ako pretpostavimo da su sva obraanja memoriji tipa ke pogodak, koliko je taktnih intervala potrebno da se petlja izvri?

Odgovor Vremenski dijagram proto~nog sistema prikazan je na Slici 4.12.

taktni intervali

instrukcija 1 2 3 4 5 6 7 8 9 10

11

12

13

14

15

16

17

18

19

20

21

22

23

Lw r1,0(r2) F D E M W

Addi r1,r1,#1 F * * D E M W

Sw r1,0r2 F * * D E M W

Addi r2,r2,#4 F D E M W

Sub r4,r3,r2 F * * D E M W

BNZ r4,ponovi F * * * D E M W

Lw r1,0r2 F * * F D E M W

Slika 4.12 Vremenski dijagram rada maine za jednu potpunu iteraciju petlje i prve instrukcije naredne iteracije.

Napomena: Radi preglednosti slike umesto notacije faza IF, ID, EX, MF, i WB koriena su obele`avanja F, D, E, M i W , respektivno.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-40

Zastoji se javljaju iz sledeih razloga:

taktni intervali razlog

3-4 Addi zaustavlja ID sve dok Addi ne upie operand u r1

6-7 Sw zaustavlja ID sve dok Addi ne upie operand u r1

10-11 Sub zaustavlja ID sve dok Addi ne upie operand u r2

13-14 BNZ zaustavlja ID sve dok Sub ne upie operand u r4

16-17 BNZ izra~unava novu vrednost ciljne adrese PC-a tako da se Lw ne mo`e pribaviti pre kraja ciklusa 17

Na osnovu dijagrama sa Slike 4.12, vidi se da druga iteracija po~inje 17 taktnih intervala nakon prve iteracije, a zadnjoj iteraciji je potrebno 18 taktnih intervala da bi zavrila. To zna~i da i-ta iteracija (iteracije se broje od 0-98) po~inje u taktnom intervalu 1+(i*17). S obzirom da se petlja izvrava 99 puta, ukupni broj taktnih intervala, da se izvri cela sekvenca, iznosi (98*17)+18=1684 taktna intervala.

Zadatak 4.15

Ukazati na osnovne tipove hazarda po podacima (RAW, WAR, WAW) koje postoje izme|u sledeih instrukcija.

i1: Add r1, r2, r3 ; r1=r2+r3 i2: Add r4, r1, r4 i3: Add r3, r1, r2 i4: Add r1, r1, r4

Napomena: proto~ni procesor koristi 5-stepenu obradu a aktivnosti u toku svake faze, za svaki tip instrukcija, su sledee:

I_mem : pribavljanje instrukcije

R : ~itanje RF polja i dekodiranje opkoda instrukcije

EX : ALU operacija

D_mem : pristup memoriji podataka

W : upis u RF polje

Za detalje o formatu pogledati Dodatak C.

I_mem R EX D_mem W

4. RISC procesori

4-41

Odgovor R r2,r3 EX r1 W r1

R r1,r4 EX r4 W r4

R r1,r2 EX r3 W r3

R r1,r4 EX r1 W r1

i1

i2

i3

i4

R - ~itanjeEX - rezultat operacije poznatW - upisza slu~aj da ne postoji premoavanje:1. izme|u parova instrukcija i1:i2, i1:i3, i1:i4

postoji RAW zavisnost zbog r12. izme|u parova instrukcija i2:i4

postoji RAW zavisnost zbog r4

Zadatak 4.16

Ciklus izvrenja instrukcije, formati instrukcija i strukture staze podataka jednog ~etvorostepenog RISC procesora prikazane su na Slici 4.13.

Pribavljanje instrukcije idekodiranje

FD

Pribavljanje operanda iliadresa

OF

Izvrenje operacije iliizra~unavanje efektivne

adreseEX

Smetaj rezultataWB

Slika 4.13 (a) Ciklus grananja instrukcije

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-42

Pokazati kako izgleda izvrenje sledeih programskih sekvenci:

a) x=a+b

y=b-c

z=c+d

Ofset adrese promenljivih a, b, c, d, x, y i z u okviru bloka podataka ozna~ene su kao A, B, C, D, X, Y i Z, repektivno. U registar R0uvek se ~uva nula. Promenljive a, b, c, d, x, y i z smestiti u registre R1, R2, R3, R4, R5, R6 i R7, respektivno. Bazna adresa bloka podataka se ~uva u registru R10. Vrednost bazne adrese je 100D.

b) Za slu~aj da putevi premoavanja (isprekidane linije) kod CPU-a sa Slika 4.13 nisu izvedeni, napisati programsku sekvencu i nacrtati vremenski dijagram za sledeu programsku sekvencu:

var=a+b

zbir=var+c

Ofest adresa promenljivih a, b, c, var i zbir u okviru bloka podataka ozna~ene su kao A, B, C, VAR i ZBIR, respektivno. U registru R0 uvek se ~uva 0. Promenljive a, b, c, var i zbir ~uvati u registrima R1, R2, R3, R4 i R5. Bazna adresa bloka podataka se ~uva u registru R10. Vrednost bazne adrese je 100D.

c) Za slu~aj da su putevi premoavanja (isprekidane linije) kod CPU-a sa Slike 4.13 izvedeni, ponoviti aktivnosti specificirane pod b).

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

ConstantDest Scr1 Scr2

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

OffsetDest Scr1 Scr2

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

OffsetDest Scr1 Scr2

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

OffsetDest Scr1 Scr2

(a) Registarske instrukcijearitmeti~ke,logi~ke,pomeranja i iftovanja

(b) Instrukcije koje seobraaju memorijiLoad i Store

(c) Instrukcije za upravljanjetokom programaJump i Branch

(d) Ostale instrukcijeNop, Clear, Set, Reset

imeOP Dest, Src1, Src2OP Dest, Src1, ConstantMove Dest, Src1Shift Dest, Src1,Constant

imeLw immU DestLw immL DestLw rel Dest, Src2, OffsetSt rel Src1, Src2, Offset

imeJump OffsetJump Src2, OffsetBrel Src2, Offset

imeNo-opClear DestSstat DestRstat Dest

AkcijaRF[Dest]←RF[Src1] Op RF[Src2]RF[Dest]←RF[Src1] Op ConstantRF[Dest]←RF[Src1]RF[Dest]←RF[Src1] shift Constant

AkcijaRF[Dest](31...16)←OffsetRF[Dest](15...0)←OffsetRF[Dest]←Mem[RF[Src2]+Offset]Mem[RF[Src2]+Offset]←RF[Src1]

AkcijaPC←PC+OffsetPC←RF[Src2]+Offset

[ ]RF[Src2] relnot RF[Src1] ifOffsetPCPCRF[Src2] rel RF[Src1] if1PCPC

+←+←

Akcijanema efektaRF[Dest]←0Status[Dest] ←1Status[Dest] ←0

(b) formati instrukcija

Napomena: RF-registarsko polje; Status-marker registar

4. RISC procesori

4-43

dekoderskalogika

Upravlja~ki registar

IR

Memorija zainstrukcije

PC

MUX1

+1 +

Offsetregistar

Upravlja~kiregistar

Destregistaar

Dest registar Offsetregistar

--

3

MUX2

Status44 4 4

2

1

MUX3

ALU&shifter

RFpolje

reg_B reg_A

MAR44

MUX2

Memorijaza podatke

MDR

(c) blok RISC procesora

Napomena: Veze prikazane isprekidanim linijama se odnose na puteve premoavanja

Slika 4.13 : ^etvorostepeni RISC procesor

Odgovor a) Sekvenca instrukcija na asemblerskom jeziku i odgovarajui vremenski dijagram koji se odnosi na redosled izvrenja instrukcija prikazani su na Slici 4.14

Adrese (decimalne) Instrukcija komentar

100 Lw R1,A(R10) ; R1←a

104 Lw R2,B(R10) ; R2←b

108 Lw R3,C(R10) ; R3←c

112 Lw R4,D(R10) ; R4←d

116 Add R5,R1,R2 ; x=a+b

120 Sub R6,R2,R3 ; y=b-c

124 Add R7,R3,R4 ; z=C+d

128 St R5,X(R10) ; x→M(X)

132 St R6,Y(R10) ; y→M(Y)

136 St R7,Z(R10) ; x→M(Z)

140 ----------

a) asemblerski program

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-44

Aktivnost

proto~nog

stepena

Taktni

interval

0

1

2

3

4

5

6

7

8

9

10

11

12

13

FD Read PC

Write IR

100

Lw

104

Lw

108

Lw

112

Lw

116

Add

120

Sub

124

Add

128

St

132

St

136

St

140

OF Write reg_A

Write_regB

(R10)

(R10)

(R10)

(R10)

R1

R2

R2

R3

R3

R4

R5

R10

R6

R10

R7

R10

EX Write MAR

Write MDR

reg_B+

ofset_A

reg_B+

ofset_B

reg_B+

ofset_C

reg_B+

ofset_D

R1+R2

R2-R3

R3+R4

reg_B+

ofset_X

R5

reg_B+

ofset_Y

R6

reg_B+

ofset_Z

R7

WB Write RF

Write Mem

Write PC

104

108

112

R1

116

R2

120

R3

124

R4

128

R5

132

R6

136

R7

140

R5

144

R6

148

R7

152

156

b) vremenski dijagram

Slika 4.14 Princip rada RISC procesora ciklus-po-ciklus za sekvencu instrukcija x=a+b; y=b-c; z=c+d

b) Odgovarajua sekvenca instrukcija na asemblerskom jeziku kao i vremenski dijagrami karakteristi~ni za izvrenje sekvence prikazani su na slici 4.15

Adrese (decimalne) Instrukcija komentar 100 Lw R1,A(R10) ; R1<-a

104 Lw R2,B(R10) ; R2<-b

108 Lw R3,C(R10) ; R3<-C

112 Nop 116 Add R5,R1,R2 ; var<-a+b

120 Nop 124 Nop 128 Add R5,R3,R4 ; zbir=C+var

132 Nop 136 Nop 140 St R5,ZBIR(R10)

a) Program na asemblerskom jeziku kada postoje zavisnosti po podacima a ne postoji premoavanje

4. RISC procesori

4-45

Aktivnost

proto~nog

stepena

Taktni

interval

0

1

2

3

4

5

6

7

8

9

10

11

12

13

FD Read PC

Write IR

100

Lw

104

Lw

108

Lw

112

Nop

116

Add

120

Nop

124

Nop

128

Add

132

Nop

136

Nop

140

St

OF Write reg_A

Writereg_B

(R10)

(R10)

(R10)

R1

R2

R4

R3

R5

R10

EX Write MAR

Write MDR

reg_B+

ofset_A

reg_B+

ofset_B

reg_B+

ofset_C

R1+R2

R3+R4

reg_B+

ofset_zbir

R5

WB Write RF

Write Mem

Write PC

104

108

112

R1

116

R2

120

R3

124

128

R4

132

R6

136

140

R5

144

148

152

R5

156

b) vremenski redosled kada postoje zavisnosti po podacima a ne postoji premoavanje

Slika 4.15 : Princip rada RISC maine ciklus-po-ciklus kod izvrenja sekvence instrukcija var=x+y; zbir=var+c; kada postoji zavisnost po podacima

c)

Adresa Instrukcija komentar

100 Lw R1,A(R10) ; R1<- a

104 Lw R2,B(R10) ; R2<-b

108 Lw R3,C(R10) ; R3<- C

112 Add R4,R1,R2 ; var=a+b

116 Add R5,R3,R4 ; zbir=var+C

120 St R5,zbir(R10) ;

a) Program na asemblerskom jeziku kada postoje zavisnosti po podacima a izvedeno je i premoavanje

Aktivnost

proto~nog

stepena

Taktni

interval

0

1

2

3

4

5

6

7

8

FD Read PC

Write IR

100

Lw

104

Lw

108

Lw

112

Add

116

Add

120

St

OF Write reg_A

Write_regB

(R10)

(R10)

(R10)

R1

R2

R1+R2

R3

R3+R4

R10

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-46

EX Write MAR

Write MDR

Write status

reg_B+

ofset_A

reg_B+

ofset_B

reg_B+

ofset_C

R1+R2

R3+R4

reg_B+

ofset_zbir

R3+R4

WB Write RF

Write Mem

Write PC

104

108

112

R1

116

R2

120

R3

124

128

R4

132

R6

136

b) Vremenski redosled izvrenja instrukcija kada je izvedeno premoavanje

Slika 4.16 Program na asemblerskom jeziku i vremenski dijagram za slu~aj b) kada je premoavanje izvedeno

Zadatak 4.17

Za RISC procesor prikazan na slici 4.13 napisati programsku sekvencu na osnovu koje se odre|uje koja je od dve promenljive a i b, vea, tj. manja.

Inicijalno, promenljiva a je smetena u registar R1, premenljiva a je smetena u registar R1, promenljiva b u registar R2, veu vrednost ~uvati u R3 a manju u R4.

Usvojiti da je po~etna adresa programa 100D, a R0=0

Odgovor Sekvenca instrukcija na asemblerskom jeziku koja se koristi za odre|ivanje minimalne i maksimalne vrednosti ima sledei oblik

Adresa Instrukcija komentar

100 BGE R1,R2,+40 ; if R1>=R2 go to LAB1

104 Nop 108 Nop 112 Nop 116 Add R3,R2,R0 ; Move max, b

120 Add R4,R1,R0 ; Move min, a

124 J +24 ; jump to LAB2

128 Nop 132 Nop 136 Nop

LAB1: 140 Add R3,R1,R0 ; Mov max, a

144 Add R4,R2,R0 ; Mov min, b

LAB2: 148 ............

Napomena: Nakon pribavljanja tekue instrukcije PC se ne inkrementiras za 4 jo u fazi FD kako se to izvodi kod veine RISC procesora nego tek u fazi WB. Zbog toga su iznosi skokova na LAB1 i LAB2 +40 i +24, a ne +36 i +20, respektivno.

4. RISC procesori

4-47

Tip

aktivnosti

Taktni

interval

0

1

2

3

4

5

6

7

8

9

10

FD Read PC

Write IR

100

BGE

104

Nop

108

Nop

112

Nop

116

Add

120

Add

124

J

128

Nop

132

Nop

136

Nop

148

OF Write reg_A

Write_regB

R1

R2

R2 R1

EX Write MAR

Write DDR

Write status

R1>=R2

R2

R1

WB Write RF

Write Mem

Write PC

104

108

112

116

120

124

128

R3

132

R4

136

140

a) vremenski dijagram kada do uslovnog grananja ne do|e

Tip aktivnosti

Taktni interval

0

1

2

3

4

5

6

7

8

9

10 FD Read PC

Write IR

100

BGE

104

Nop

108

Nop

112

Nop

140

Add

144

Add

148

OF Write reg_A

Write_regB

R1

R2

R1 R2

EX Write MAR

Write DDR

Write status

R1>=R2

R1

R2

WB Write RF

Write Mem

Write PC

104

108

112

140

144

148

R3

R4

b) vremenski dijagram kada do uslovnog grananja do|e

Slika 4.17 : Vremenski dijagrami - efekat instrukcije uslovnog grananja

S obzirom da procesor ne mo`e da odredi adresu naredne instrukcije za tri taktna intervala neophodno je da kompilator ubaci tri Nop instrukcije nakon instrukcije uslovnog grananja BGE (branch greater or

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-48

equal). Na slli~an na~in potrebno je da kompilator ubaci tri Nop instrukcije nakon instrukcije bezuslovnog grananja J (jump). Na sl. 4.17a) prikazan je vremenski dijagram kada do (uslovnog) grananja na do|e a na sl. 4.17b) kada je uslov ispunjen i do|e do grananja.

Zadatak 4.18

Ukazati na efekat tehnike predikcije grananja, ako RISC procesor sa sl. 4.13 izvrava programsku sekvencu iz prethodnog zadatka pod istim uslovima (misli se na dodelu promenljivih registrima).

Odgovor Programska sekvenca na asemblerskom jeziku je oblika

Adresa Instrukcija komentar

100 BGE R1,R2,+4 ; if R1>=R2 go to LAB1

104 Add R3,R2,R0 ; Move max, b

108 Add R4,R1,R0 ; Move min, a

112 J +3 ; go to LAB2

LAB1: 116 Add R3,R1,R0 ; Move max, 0

120 Add R4,R2,R0 ; Move min, b

LAB2: 124 ---------------

Uo~imo da u ovaj programskoj sekvenci ne postoje instrukcije tipa Nop. Vremenski dijagram koji prikazuje kako se program izvrava ako do (uslovnog) grananja na do|e prikazan je na slici 4.18b).

Kao to se vidi sa slike 4.18a) procesor izvrava instrukcije na adresama 104, 108 i 112 kao da grananje ne postoji. Ali u taktnom intervalu 3, kada je predikcija potvr|ena, procesor produ`ava da pribavlja narednu instrukciju sa adrese 116, ne znajui da je prethodna instrukcija bita J, tj. bezuslovno grananje. U taktnom intervalu 6 procesor odredi da je vrednost adrese skoka 124, on puni ovu vrednost u PC i pribavlja instrukciju u registar IR u taktnom intervalu 7. U tom momentu, prethodne tri instrukcije koje su startovale u taktnim intervalima 4,5 i 6, uklju~ujui i instrukciju na lokaciji 124, se prazne iz proto~nog sistema, tj. anulira se njihov efekat. Da bi odredio minimalnu i maksimalnu vrednost, u ovom slu~aju, procesoru su potrebna sedam taktna intervala.

Na dijagramu sa slike 4.18b) prikazan je vremenski redosled doga|aja kada se obavi uslovno grananje. Procesor izvrava prve ~etiri instrukcije kao u prethodnom slu~aju. Ipak kada u taktnom intervalu 3 procesor odredi da do grananja mora da do|e, puni se adresa grananja 116 u PC i prazni proto~ni sisem, tj. anulira zapo~eto izvrenje instrukcija na adresama 104, 108 i 112. Uo~imo da e se adresa 104 napuniti nezavisno od toga to je ona naredna adresa u sekvenci instrukcija. Procesor zatim produ`ava da izvrava instrukcije na adresama 116, 120 i 124. U ovom slu~aju, da bi obavio istu aktivnost, procesoru su potrebna 6 taktna intervala. Zna~i ako usvojimo da je verovatnoa da e dogradnja da doe do 50%, tada procesor, koristei predikciju grananja, odre|iva|e minimalnu i maksimalnu vrednost, u proseku 6,5 taktna intervala, to je pribli`no 28% br`e u odnosu na to kada predikcijagrananja ne postoji.

Prethodna diskusija jasno ukazuje na prednosti koje nudi predikcija grananja. Naime, procesor kod koga mehanizam predikcije grananja nije implementiran u proseku "troie" nekoliko taktnih intervala vie (po instrukciji uslovnog grananja) u odnosu na onaj procesor kod koga je mehanizam predikcije implementiran.

4. RISC procesori

4-49

Tip

aktivnosti

Taktni

interval

0

1

2

3

4

5

6

7

8

FD Read PC

Write IR

100

BGE

104

Add

108

Add

112

J

116

Add

120

Add

124

124

OF Write reg_A

Write_regB

R1

R2

R1

R1

R1 R2

EX Write MAR

Write DDR

Write status

R1>=R2

R2

R1

R1

Write RF

Write Mem

Write PC

104

108

112

116

R3

120

R4

124

124

a) vremenski dijagram kada do grananja ne do|e

Tip

aktivnosti

Taktni

interval

0

1

2

3

4

5

6

7

8

FD Read PC

Write IR

100

BGE

104

Add

108

Add

112

J

116

Add

120

Add

124

OF Write reg_A

Write_regB

R1

R2

R2

R1

R1 R2

EX Write MAR

Write DDR

Write status

R1>=R2

R2

R1

R2

WB Write RF

Write Mem

Write PC

104

108

112

116

120

124

R3

R4

b) vremenski dijagram kada do grananja do|e

Slika 4.18 : Rad RISC procesora kod koga je implementiran mehanizam predikcije grananja

proto~ni sistem se prazni

proto~ni sistem se prazni

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-50

Zadatak 4.19

Za sistem zanovan na RISC procesoru prikazan na slici 4.13 kreirati program i nacrtati vremenske dijgrame za izra~unavanje apsolutne vrednosti promenljive a, za sledee slu~ajeve:

a) bez predikcije grananja

b) sa predikcijom grananja

Zadatak 4.20

Neka su a i b dve ozna~ene celogrojne vrednosti. Vrednost 22 ba + aproksimativno se odre|uje na osnovu sledeeg izraza:

22 ba + ≈max((0,975x+0,5y),x)

gde je x=max(|a|,|b|), a y=min(|a|,|b|)

Kreirati program na asemblerskom jeziku, za sistem zasnovan RISC mokroprocesoru prikazan na

slici 4.13, pomou koga se izra~unava aproksimativna vrednost izraza 22 ba + za sledee slu~ajeve:

(a) bez korienja tehnike premoavanja i predikcije grananja

(b) koristiti tehniku premoavanja a ne predikciju grananja

(c) ne koristiti tehniku premoavanja a koristiti predikciju grananja

(d) koristiti tehnike premoavanja i predikcije grananja

Napomena: Vrednost 0.875x izra~unati na sledei na~in. Prvo podeliti vrednost x sa 8, tj. x/8=0.125x. Operacija deljenja se izvodi se izvodi pomeranjem vrednosti x tri puta u desno. Zatim izvriti operaciju x-0.125x=0.875x.

Zadatak 4.21

Napisati program za sistem zasnovan na RISC procesoru prekiazan na slici 4.13 koji se koristi za izra~unavanje izraza y=x2+2x+3 za dato x. Usvojimo da ALSU (ALU&Shifter) obavlja operaciju mno`enja za jedan taktni interval. Nacrtati vremenski dijagram rada sistema.

Zadatak 4.22

Koristei skup instrukcija RISC procesora sa slike 4.13c) koje su prikazane na slici 4.13b) predlo`iti promene formata instrukcija koje e omoguiti:

(1) Pristup RF polju koga ~ine:

(a) 16-registara R0-R15

(b) 32-registara R0-R31

(c) 64-registara R0-R63

(d) 256-registara R0-R255

(2) Poveanje polja ofseta

4. RISC procesori

4-51

Test pitanje 4.39

U kom se registru RF polja, kod RISC mikroprocesora, uvek ~uva vrednost nula, nezavisno od toga koja se operacija izvrava?

Test pitanje 4.40

O kom je tipu zavisnosti popodacima radi u sledeim slu~ajevima:

a)

i1: Add r2,r3,r4 ; r2 = r3 + r4

i2: Add r5,r2,r1 ; r5 = r2 + r1

b)

j1: Add r2,r3,r4 ; r2 = r3 + r4

j2: Add r4,r5,r6 ; r4 = r5 + r6

c)

k1: Add r2,r3,r4 ; r2 = r3 + r4

k2: Add r2, r5,r6 ; r2 = r5 + r6

Odgovor a) RAW

b) WAR

c) WAW

Test pitanje 4.41

Ukazati na tipove hazarda po podacima koji postoje izmedju sledeih instrukcija:

i1: Add r1,r2,r3 ; r1 = r2 + r3

i2: Add r4,r1,r4 i3: Add r3,r1,r2 i4: Add r1,r1,r4

Test pitanje 4.42

Ukazati na prednosti i nedostatke superskalarnih i superproto~nih procesora.

Test pitanje 4.43

Na koji na~in se mo`e ostvariti odlaganje izvrenja (delaying of execution) instrukcija kod RISC procesora? Usvojiti da proto~ni sistem ~ine sledei stepeni: IF, ID, OF, EX i WB.

Odgovor Da bi ukazali na ovaj problem, razmotrimo izvrenje instrukcija i1 i i2 izmedju kojih postoji zavisnost po podacima:

i1: Add r2,r3,r4 ; r2 = r3 + r4

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-52

i2: Add r5,r2,r1 Odlaganje izvrenjka se mo`e ostvariti na sledea dva na~ina:

a) Kod prvog reenja odla`e se izvrenje aktivnosti stepena OF ili IF instrukcije i2 za dva taktna intervala, kako je to prikazano na Slici 4.19.

IF ID EXOF WB

IF --ID -- OF WBEX

taktni intervali

1 2 3 4 5 6 7 8

i1

i2

a) Odlaganje izvrenja faze OF

IF ID EXOF WB

-- IF-- ID OF WBEX

taktni intervali

1 2 3 4 5 6 7 8

i1

i2

b) Odlaganje izvrenja faze IF

Slika 4.19 Odlaganje izvrenja

Da bi se umetnulo kanjenje, u procesor je potrebno ugraditi dodatnu hardversku komponentu koja se naziva pipeline interlock - PI. Blok PI detektuje zavisnosti i unosi kanjenje kod izvrenja izmedju zavisnih instrukcija, sve dok se konflikt ne rei.

b) Kod drugog reenja, kompilator reava problem zavisnosti. U toku kompilacije kompilator detektuje zavisnosti izmedju podataka i instrukcija, a nakon toga, preuredjuje ove instrukcije tako da zavisnosti nisu vie hazardne (opasne) sa aspekta rada sistema. U slu~aju kada nije mogue da se izvri preuredjenje instrukcija, umetaju se instrukcije tipa Nop i na taj na~in stvara kanjenje. Ilustracije radi, posmatrajmo izvrenje sledeih instrukcija:

i1: Add r2,r3,r4 i2: Add r5,r2,r1 i3: Add r6,r6,r7 i4: Add r8,r8,r7 Redosled izvrenja ovih instrukcija se mo`e preurediti tako da se i3 i i4, koje nisu zavisne od i1 i i2, ubacuju izmedju i1 i i2 na sledei na~in:

4. RISC procesori

4-53

IF ID EXOF WB

IF ID OF WBEX

taktni intervali

1 2 3 4 5 6 7 8

i1

i2

IF ID EXOF WB

IF ID OF WBEX

Test pitanje 4.44

Objasniti princip rada tehnike premoavanja.

Odgovor Termin premoavanje (bypassing / forwarding) se odnosi na tehniku direktne predaje rezultata jedne instrukcije drugoj instrukciji, sa ciljem da se izbegne (eliminie), najpre memorisanje dobijenog rezultata, a nakon toga, i njegovo pozivanje. Premoavanje se mo`e ostvariti na nivou kompilatora, ~ime se izbegavaju nepotrebna obraanja memorijskim lokacijama putem prosledjivanja vrednosti preko registara a ne preko memorijskih lokacija. Premoavanje (prosledjivanje) rezultira poveanjem brzine izrenja operacija iz razloga to procesor br`e pristupa svojim internim registrima u odnosu na memorijske lokacije. Premoavanje se, takodje, mo`e implementirati i na hardverskom nivou kako bi se eliminisali proto~ni ciklusi koji se odnose na ~itanje sadr`aja registra ~iji je sadr`aj bio a`uriran u prethodnom proto~nom stepenu. U ovom slu~aju, premoavanjem se eliminiu pristupi registrima na taj na~in to se koriste br`i putevi za prenos podataka.

Kompilator koristi sledee tri tehnike premoavanja:

1) Store-Fetch Forwarding - SFF

2) Fetch-Fetch Forwarding - FFF

3) Store-Store Overwriting - SSO

Store i Fetch se odnose, prvo na upis operanada u meoriju, a nakon toga ~itanje istih iz memorije. U svakom slu~aju, neophodno je eliminisati nepotrebno obraanje memoriji.

Kod SFF pristupa, operand se direktno uzima iz procesorsko-operandskog registra. Na primer, sledei kôd:

St 200(r0),r2 ; kopira se sadr`aj registra r2 u memorijsku lokaciju 200

; pri ~emu je r0 jednako 0

Lw r3,200(r0) ; kopira sadr`aj memorijske lokacije 200 u registar r3

se mo`e redukovati:

St 200(r0),r2 Add r3,r2,r0 ~ime se eliminie jedno obraanje memoriji.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-54

Kod FFF pristupa, viestruki pristupi istoj memorijskoj lokaciji se eliminiu ako se u~ini da se svi pristupi odnose na operand kojise, nakon ~itanja, smeta u jedan od registara procesora. Tako na primer,

Lw r2,200(r0) Lw r3,200(r0) Lw r4,200(r0) se mo`e redukovati na:

Lw r2,200(r0) Add r3,r2,r0 Add r4,r2,r0 ~ime se eliminiu dva obraanja memoriji.

Kod SSO pristupa, eliminie se jedna ili vei broj operacija tipa upis bez posrednih operacija koje se odnose na pamenje rezultata. Tako na primer,

St 200(r0),r2 St 200(r0),r3 se mo`e redukovati na:

St 200(r0),r3 Ali, treba naglasiti, da ovo pojednostavljenje mo`e ~esto da bude uzrok greaka kod najveeg broja programa.

Interno premoavanje (Internal forwarding) predstavlja hardversko premoavanje koje se implementira od strane registara procesora ili puteva (magistrala) podataka i nije vidljivo programeru. Intrerno premoavanje se mo`e aplicirati na proto~nom izvrenju instrukcija sa ciljem da se eliminiu obraanja registrima opte namene, tj. registrima RF polja. Na primer, kod sledee kodne sekvence:

Add r3,r2,r5 Subi r4,r3,#8 operaciji Subi je potreban sadr`aj registra r3 koji se generie od strane instrukcije Add. Instrukcija e se zaustaviti u stepenu OF i ~ekae da vrednost r3 postane va`ea. Internim premoavanjem prosledjuje se vrednost koju treba smestiti u r3, direktno, na ulaz stepena EX.

Bez premoavanja, operacija Subi treba da sa~eka a`uriranje vrednosti r3, pa nakon toga mo`e da sledi ~itanje vrednosti registra r3. Uo~`imo da, i u ovom slu~aju, dolazi do zastoja od jedne vremenske jedinice, ali, kada premoavanja ne bi bilo, zastoj bi bio dva puta du`i (~italac treba da odgovori na pitanje da li sa izlaza stepena EX mo`e da se izvri premoavanje na ulaz stepena EX, kako je to isprekidanim vezama , prikazano na Slici 4.20).

Premoavanje se mo`e proiriti na prosledjivanje rezultata veem broju instrukcija, kako je to prikazano u sledeoj programskoj sekvenci:

Add r3,r2,r5 Subi r4,r3,#8 Subi r6,r3,#4 Obe Subi instrukcije koriste vrednost koja se ~uva u r3. Za slu~aj da na Slici 4.20 postoje oba premoavanja, do zastoja u radu sistema ne bi dolazilo.

4. RISC procesori

4-55

U principu, premoavanje iziskuje dodatnu logiku u proto~noj implementaciji, ali je kao princip veoma atraktivno kada se govori o poveanju performansi RISC procesora.

IF OF EX WB

premoavanjesa EX na EX

(opciono)

premoavanje sa WB na EX

ka r3(r3 pripada RF polju

instrukcije

Add r3,r2,r5

Subi r4,r3,#8

. . .

IF EXOF WB premo-avanje

IF zastojOF EX WB

IF OFzastoj EX WB

write r3

Slika 4.20 Princip rada internog premoavanja

Test pitanje 4.45

Ukazati kako se kod RISC maina reava problem dodele registara (register allocation).

Odgovor Arhitekture koje koriste registarske prozore sa preklapanjem, kakve su BRISC I i II, rade najbr`e kada se sve ili se skoro sve lokalne promenljive ~uvaju u registrima. Kod procedura koje manipuliu sa malim brojem promenljivih obi~no se ne javljaju problemi, ali kada je broj promenljivih vei od broja raspolo`ivih registara tada se odredjene promenljive moraju ~uvati u memoriji. Sa ciljem da se minimizira ovaj problem, i da se sa~uva filozofija rada RISC-a tj. intenzivira rad sa registrima potrebno je to je mogue vie posla dodeliti kompilatoru. Naime, najvei broj komplilatora te`i da optimizira korienje registara i redukuje broj promenljivih koje se ~uvaju u memoriji. Jedan opti pristup se zasniva na sledeem principu: Vremenski se vri rasporedjivanje korienja pojedinih registara u odnosu na programske promenljive u toku pojedinih vremenskih intervala u okviru procedure. Iz konkretnog programa se mo`e videti stanje svih promenljivih. Kru`ii ukazuju kada odredjena promenljiva postaje aktivna (o`ivi), a kockice kada promenljiva prestaje da postoji (izumire).

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-56

n broj jedin. nula pola rez

1 function Moszero (n:integer):boolean; 2 var broj, jedin, nula, pola:integer; 3 rez:boolean; 4 begin 5 broj:=n*n; 6 jedan:=0; 7 nula:=0; 8 while broj>0 do 9 begin 10 pola:=broj div 2; 11 if 2*pola=broj 12 then nula:nula+1 13 else jedan:jedan+1; 14 broj:=pola 15 end 16 if nula>jedan 17 then rez:=true 18 else rez:=false; 19 Moszero:=rez 20 end;

Kao to se vidi Pascal funkcija prihvata jedan parametar n, izra~unava n2 a zatim se odbrojava u binarnoj prezentaciji broja n2 broj bitova koji su postavljeni na 1 kao i broj bitova postavljenih na 0. Ako postoji vei broj 0 od 1 rezultat koji se vraa je True, ina~e se vraa False. Bit najvee te`ine rezultata koji je postavljen na 0 ne broji se. Princip rada je sledei: Broj koji se testira deli se na dva i zatim se proverava da li je on paran ili neparan. Na ovaj na~in se detektuje vrednost na koju je postavljen LS bit. Testiranje za neparan-paran izvodi se u linijama 10 i 11 (uka`imo da deljenjem neparnog broja sa dva, a zatim dupliranjem koli~nika, ne generie po~etni broj, dok kod deljenja parnog broja sa dva a zatim mno`enjem koli~nika sa dva dobija se ponovo po~etna vrednost).

Funkcija koristi est promenljivih: n, broj, jedin, nula, pola i rez. Prva promenljiva n je parametar dok su ostale lokalne promenljive. U svaku ta~ku izvrenja funkcije, svaka promenljiva mo`e biti u jedno od dva stanja. Za varijablu se ka`e da je aktivna ako vrednost koju ona sadr`i je potrebna. Formalnije, promenljiva V je aktivna u ta~ki P ako postoji tok upravljanja od ulazne ta~ke procedure preko iskaza koji dodeljuje vrednost promenljivoj V i zatim od P ka drugom iskazu U koji koristi V bez intervencije dodele promenljivoj V izmedju P i U. Sledei primer pokazuje da je V aktivna izmedju P i U.

ulaz u proceduru

P V:=3

V je aktivna u ovom periodu

V X:=V

Sa druge strane, u sledeem slu~aju, V nije aktivna izmedju P i Q jer ona prima novu vrednost u Q. Za promenljivu koja nije aktivna ka`emo da ne postoji.

4. RISC procesori

4-57

ulaz u proceduru

P V:=3

Q V:=4

V je aktivna u ovom periodu

V X:=V Koncept aktivnog postojanja je va`an kod dodele registara jer dve ili vei broj promenljivih mogu da koriste isti registar ako nisu nikad aktivne istovremeno. U odnosu na Pascal funkciju MosZero vidimo da su promenljive n, pola i rez u razli~itim delovima funkcije. Optimizirajui komplilator e zbog toga dodeliti sve tri promenljive istom registru.

Poznat je vei broj algoritama za maksimiziranje pakovanja promenljivih u registre. Najpopularniji od svih je tzv. graph coloring, kod koga se svaka procedura predstavlja kao usmereni graf sa iskazima kao ~vorovi a upravlja~kim puitevima izmedju njih kao potezi. Svakoj promenljivoj se dodeljuje boja tako da ne postoje dve istovremeno aktivne promenljive koje imaju istu boju. Cilj algoritma je da odredi minimalan broj boja potreban grafu, tj. da odredi chromatic number (CN). Ako je CN manji ili jednak broju dostupnih registara, sve promenljive e se ~uvati u registre, tj. nee biti potrebno koristiti instrukcije Load i Store.

Test pitanje 4.46 a) RISC maina koristi princip rada sa prozorima koji se preklapaju. Ukupno jednoj proceduri se dodeljuje 32 registra, od kojih se 8 koristi za globalne promenljive. Ostala 24 registra su namenjena za ~uvanje ulaznih parametara, lokalnih promenljivih i izlaznih parametara. Ukazati na mogue na~ine korienja 24 registra koji se dodeljuju izmedju ove tri kategorije.

b) Ako procedura ne poziva druge procedure, da li registri koje normalno koristimo za prenos izlaznih parametara se jednostavno gube?

c) Od 32 registra koji su datom trenutku vidljivi RISC I maini 10 su globalni, 6 se koriste za ulazne parametre, 10 za lokalne promenljive, a 6 za izlazne parametre. Za koliko registra se inkrementira prozor nakon poziva nove procedure?

Test pitanje 4.47

Load i Store instrukcije koje postoje kod tipi~ne 32-bitne RISC maine su sledee:

Load ozna~eni bajt

Load neozna~eni bajt

Store bajt

Load ozna~enu polu re~ (16 bitova)

Load neozna~enu polure~

Store polu re~

Load re~ (32-bita) Store re~

Postoje ukupno pet Load a samo tri Store. Zato?

Test pitanje 4.48

Zbirka zadataka iz Mikroprocesora i mikrora~unara

4-58

Proceduru ~ine 20 iskaza, i 12 lokalno proimenljivih, A do L. Lista i opseg iskaza u toku kojih je svaka promenljiva aktivna je sledea

A : 1-5 E : 6-10 I : 1-4

B : 3-12 F : 12-20 J : 5-8

C : 10-15 G : 14-19 K : 7-12

D : 13-20 H : 1-6 L : 16-19

Koji je minimalni broj registara potreban da se ~uvaju ove promenljive, i kako se promenljive mogu pakovati (dodeljivati registrima) da bi se postigao ovaj minimum?

Test pitanje 4.49

Proceduru ~ine 17 uzastopnih iskaza bez iskaza Jump. Promenljiva x se dodeljuje iskazima 4,9 i 15, a koristi se u iskazima 7, 10, 12 i 17. Dati listu koja ukazuje na opseg iskaza u toku kojih je promenljiva x aktivna.

Zbirka zadataka iz Mikroprocesorskih sistema

5-0

5. Memorije

5-1

5. Memorije

ö õ

Zadatak 5.1

Na slici 5.1 prikazana je logi~ka ema i tablica istine, linijskog dekodera 3-u-8 tipa 74LS138, a na slici 5.2 EPROM memorija tipa 2764 kapaciteta 8kB. EPROM prostor mikrora~unara zasnovan na mikroprocesoru 8088 kapaciteta 64kB zauzima opseg adresa od F0000h do FFFFFh. Koristei dekodersko kolo 74LS138, logi~ko NAND kolo sa tri ulaza tipa 74LS10 i EPROM memoriju tipa 2764 pokazati kako izgleda struktura memorijskog sistema, kao i sistema za selekciju adresa. Koliko EPROM ~ipova je potrebno ugraditi? Nazna~iti za koji je opseg adresa odgovarajui izlaz dekodera 74LS138 va`ei.

Slika 5.1: Logi~ka ema i tablica istine 3-u-8 linijskog dekodera 74LS138

Izlazi

Selektorski ulazi

Ulazi dozvole

rada

Izlazi Ulazi

Zbirka zadataka iz Mikroprocesorskih sistema

5-2

2764

A0-A12

D0-D7

OE

CE

podaci

adrese

RD

~ipselekt

Slika 5.2. Memorijski ~ip 2764

Odgovor

a) Struktura memorijskog sistema

A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 . . . A0 Opseg sele-ktovanih adresa

1 1 1 1 0 0 0 x x x . . . x F0000-F1FFF 1 1 1 1 0 0 1 x x x . . . x F2000-F3FFF . . x . . . . x . . . . x . . 1 1 1 1 1 1 1 x x x . . . x FE000-FFFFF

b) Selekcija prostora

Slika 5.3 Struktura koja koristi osam 2764 EPROM-ova za formiranje 64kB memorijskog prostora lociranog u adresnom prostoru F0000h - FFFFFh

Adrese

Podaci

A13 A14 A15

A16

A17A18A19

A0 ⋅ A12 O0 ⋅ O7

2764

74LS138

5. Memorije

5-3

Zadatak 5.2 ^esto se kao dekoder adresa koristi bipolarni PROM. Logi~ka ema bipolarnog PROM-a tipa TPB28L42 kapaciteta 512*8 prikazana je na slici 5.4. EPROM prostor kapaciteta 64kB, mikrora~unrskog sistema zasnovanog na CPU 8088, lociran je u adresnom opsegu po~ev od adrese F0000h do FFFFFh. Koliko EPROM ~ipova tipa 2764 je potrebno ugraditi? Nazna~iti za koji opseg adresa je odgovarajui izlaz PROM-dekodera va`ei.

A0-A8

O0-O7G

adrese

dozvolarada

podaci

Slika 5.4 Logi~ki dijagram bipolarnog PROM tipa TPB28L42

Odgovor

Slika 5.5 Memorijski sistem koji koristi bipolarni PROM TPB28L42 kao dekoder adresa

Ulazi Izlazi G A8 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

sve ostale kombinacije 1 1 1 1 1 1 1 1

Slika 5.6 Na~in na koji je programiran bipolarni PROM TPB28L42

Adrese

Podaci

dekoder adresa

TPB28L42

Zbirka zadataka iz Mikroprocesorskih sistema

5-4

Zadatak 5.3

Logi~ka ema programibilnog logi~kog kola tipa PAL16L8 prikazana je na slici 5.7. PAL16L8 se koristi kao dekoder adresa 64kB EPROM prostora kod mikroprocesora 8088. EPROM prostor je lociran u opsegu po~ev od adrese F0000h do FFFFFh. EPROM memorija je realizovana promou ~ipova 2764 (8k*8). Ukazati na na~in kako je programirano kolo PAL16L8 i kako izgleda struktura memorijskog podsistema koju ~ini dekoder i osam EPROM ~ipova 2764?

Slika 5.7 Logi~ki dijagram kola PAL16L8

Odgovor Programiranje ~ipa PAL16L8 vri se sledeom programskom sekvencom. Sekvenca je napisana na HDL jeziku PALASM.

Logi~ki dijagram

5. Memorije

5-5

TITLE adresni_dekoder PATTERN test_kolo_1 REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 05/20/1998 CHIP DEKODER PAL16L8 ; pins 1 2 3 4 5 6 7 8 9 10 A19 A18 A17 A16 A15 A14 A13 NC NC GND ; pins 11 12 13 14 15 16 17 18 19 20 NC O8 O7 O6 O5 O4 O3 O2 O1 VCC EQUATIONS /O1 = A19*A18*A17*A16*/A15*/A14*/A13 /O2 = A19*A18*A17*A16*/A15*/A14*A13 /O3 = A19*A18*A17*A16*/A15*A14*/A13 /O4 = A19*A18*A17*A16*/A15*A14*A13 /O5 = A19*A18*A17*A16*A15*/A14*/A13 /O6 = A19*A18*A17*A16*A15*/A14*A13 /O7 = A19*A18*A17*A16*A15*A14*/A13 /O8 = A19*A18*A17*A16*A15*A14*A13 Struktura memorijskog podsistema kojom se pomou kola PAL16L8, U1, dekodiraju osam EPROM ~ipova 2764, U2-U9, prikazana je na slici 5.8

Slika 5.8 PAL16L8 kao dekoder adresa EPROM memorijskog prostora realizovan pomou osam ~ipova 2764

Zbirka zadataka iz Mikroprocesorskih sistema

5-6

Test pitanje 5.1

Na slici 5.9 prikazano je kako se pomou 16 SRAM ~ipova tipa 62256 (32k*8) formira memorijski podsistem, i isti povezuje na mikrora~unarski sistem zasnovan na mikroprocesoru 8088. Slika 5.9 Stati~ki memorijski podsistem kapaciteta 512kB koji koristi 16 SRAM ~ipova tipa 62256

5. Memorije

5-7

[tampana plo~a na kojoj su smetene komponente sa slike 5.9, koristi dva dekodera tipa 74LS138 za selekciju 16 razli~itih SRAM komponenti, a treim dekoderom (tipa 74LS138) bira se odgovarajua memorijska banka. Sa 16 SRAM ~ipova kapaciteta 32k*8 se formira memorijski prostor veli~ine 512kB (u konkretnom slu~aju je to prostor po~ev od lokacije 00000h do 7FFFFh). Ukratko ukazati na princip organizacije logike za dekodiranje i funkcije ostalih komponenti u sistemu. Odgovor Prvi dekoder (U4) na emi sa slike 5.9 selektuje ostala dva dekodera (U3 i U9). Pomou adresa koje po~inju sa A19 A18 = 00 selektuje se dekoder U3, a pri A19A18 = 01 bira se dekoder U9. Treba uo~iti da se slobodni pinovi dekodera U4 mogu iskoristiti za dalja proirenja. Sa A19 i A18 obezbedjena je selekcija do ~etiri 256k*8 RAM blokova (4*256k*8), naravno uz dogradnju jo dodatna dva dekodera tipa 74LS238 koji bi se koristili za selekciju prostora od 512k do 1M. Analizirajui sliku 5.9 uo~avamo da su adresni ulazi kod ove memorijske sekcije baferovani, a takodje se baferuju signali D0 - D7 kao i upravlja~ki signali /RD i /WR. Baferovanje je va`no kada se na jednoj plo~i pobudjuje vei broj kola (kao to je u ovom slu~aju sa memorijskim ~ipovima). Bez baferovanja na svakoj plo~i, optereenje na sistemskoj adresnoj magistrali, magistrali za podatke i upravlja~koj magistrali postoje suvie veliko i dovodi da rad sistema bude nekorektan (fan-in i fan-out CPU-a i memorijskih ~ipova nije veliki). U konkretnoj realizaciji sa slike5.9 kao baferi LS adresa se koriste kola U1 i U2 (le~ 74LS244), a kao bafer upravlja~kih signala /RD, /WR i MS adrese A17-A19 se koristi kolo U3 (74LS244). Na magistrali za podatke povezan je primo-predajnik U5 (74LS245). Ostala kola U6A (74LS20), U7A (74LS00) i U8A formiraju logiku koja odredjuje smer prenosa podataka po magistrali za podatke, tj. od CPU-a ka memoriji ili od memorije ka CPU-u. Test pitanje

Za memorijski sistem definisan zadatkom 5.2 projektovati kolo dekodera adresa TPB28L42, kod koga je EPROM prostor kapaciteta 64kB, mikrora~unarskog sistema zasnovanog na CPU 8088 lociran: a) u adresnom prostoru po~ev od adrese 30000h do 3FFFFh b) u adresnom prostoru po~ev od adrese 60000h do 6FFFFh. Test pitanje 5.2

[ta je to "Flash" memorija, zato se koristi? Ukazati na jednu njenu tipi~nu aplikaciju? Odgovor Flash memorija je komponenta tipa EEPROM. Uobi~ajeno se koristi za memorisanje "setup" informacije razli~itih interfejs kartica (video kartice, disk kontroler kartice, itd) kao i sistemskog BIOS-a kod PC maina. Drugim re~ima flash memorije se uglavnom apliciraju za ~uvanje informacije koja se povremeno menja. Jedina razlika izmedju flash memorije i SRAM-a je u tome to flash memorija zahteva napon od 12V za programiranje kako kod operacije brisanja tako i operacije upis. Jedna tipi~na aplikacija Intel-ove flash memorije 28F400 koja se koristi kod sistema zasnovanog na CPU-u 8088 prikazana je na slici 5.10. Memorija 28F400 (~ip U?) se mo`e koristiti kao ~ip kapaciteta 512k*8 ili 256k*16. Pinovi OE (Output Enable), CE (Chip Enable) i WE (Write Enable) imaju istu ulogu kao i oni kod SRAM ~ipova. Novi pinovi su: VPP - povezuje se na 12V kod brisanja i programiranja; PWD - selektuje "power down mode" kada je na logi~koj nuli, ali se takodje koristi i kod programiranja; BYTE - selektuje na~in rada bajt (0) ili re~ (1); pin DQ15 funkcionie kao LS adresni ulaz u bajt na~inu rada. Logi~ki simbol dekodera adresa U?A, tipa 74LS139, sa slike 10, i njegova odgovarajua tablica istine prikazani su na slici 5.11.

Zbirka zadataka iz Mikroprocesorskih sistema

5-8

Slika 5.10 Sprega flash memorije 28F400 kod sistema zasnovanog na mikroprocesoru 8088

Slika 5.11 Dekoder 74LS139

Selektorskiulazi

Selektorski ulazi

Ulaz dozvole rada

Ulaz dozvole rada

Izlazi

Izlazi

Ulazi Izlazi

5. Memorije

5-9

Dekoder 74LS139 sa slike 5.10 koristi adresu A19 i upravlja~ki signal MIO/ kao ulaze. Signal A15 selektuje flash memoriju po~ev od lokacije 80000h do FFFFFh, pri ~emu za MIO/ =0 rad dekodera je dozvoljen.

Test pitanje 5.3

Logi~ki dijagram generatora/detektora parnosti SN74LS280 prikazan je na slici 5.12a) a funkcionalna tabela na slici 5.12b).

izlazi broj ulaza od A do I koji su na visoko å paran å neparan

0, 2, 4, 6, 8 H L 1, 3, 5, 7, 9 L H

b) a)

Slika 5.12 Logi~ki dijagam (a); i funkcionalna tabela generatora/detektora parnosti SN74AS280 (b) Napomena: H-visoko (high); L - nisko (low)

Ako na raspolaganju imamo SRAM ~ipove 62556 kapaciteta 32k*8, projektovati 64k*8 SRAM memorijski sistem koji ima ugra|eno kolo za detekciju greke parnosti. Bitove parnosti koje generie 74LS280 ~uvati u SRAM 6287 kapaciteta 64k*1. Koristei dekoder adresa 74LS138, SRAM kapaciteta 64kB, smestiti u memoriju po~ev od lokacije 80000h do 8FFFFh. Memorijski sistem projektovati za mikroprocesor 8088.

Odgovor Struktura memorijskog sistema prikazana je na slici 5.13. Analizom slike mo`emo doi do sledeih zaklju~aka:

(a) osam linija D0-D7 povezano je na ulaze A-H kola U6 (74LS280), dok je ulaz I=0. To zna~i da kada se na ulazima U6 pojavi paran broj jedinica, logi~ka jedinica koja se generie na izlazu å paran upisuje se u U5 (RAM parnosti 6287). Kada je broj jedinica na ulazu neparan, u U5 se upisuje logi~ka nula. Sa aspekta kodiranja podataka koji se smetaju u memoriju koristi se neparna parnost.

(b) kod ~itanja podataka iz memorije, svaki podatak se dovodi na (drugo) kolo za proveru parnosti U7 (74AS280). U ovom slu~aju koriste se svi ulazi ~ipa U7. Ulazi A do H povezani su na izlaze SRAM-ova a ulaz I na izlaz RAM-a parnosti, U5 (6287). ^ip U5 se ~ita kada je selektovan (CE* = 0), a u U5 se upisuje kada je /CE = 0 i /WE = 0. Ako je parnost neparna (ne postoji greka) izlaz å paran kola U7 (74AS280) se postavlja na logi~ku nulu. Ako se zbog kakvih razloga pro~itana informacija iz memorije promeni, izlaz kola U7 e se postaviti na 1.

(c) izlaz å paran kola U7 povezan je preko D flip-flopa U8A (74LS74) na ulaz nemaskirajueg prekida NMI. Izlaz NMI (ulaz u CPU) logika sa slike 5.13 ne mo`e nikad da postavi na logi~ku nulu (nakon uklju~enja sistema na napajanje, RESET je taj signal koji postavi NMI na logi~ku nulu). Ako se NMI postavi na 1, program koji se izvrava se prekida, a nakon toga izvrava specijalni potprogram (sistemska rutina) kojom se ukazuje da je u memorijskom sistemu detektovana greka parnosti.

A B C D E F G H I

74AS 280

åparan åneparan

Zbirka zadataka iz Mikroprocesorskih sistema

5-10

Slika 5.13 SRAM sistem kapaciteta 64 kB koji sadr`i kolo za detekciju greaka parnosti

Test pitanje 5.4

Magistrale podataka kod mikroprocesora 8086/80186/80286/80386SX su dvaput veeg obima u odnosu na mikroprocesore 8088/80188. Procesori 8086/80186/80286/80386SX moraju biti u stanju upisivati (~itati) podatak u bilo koju 16-bitnu ili 8-bitnu lokaciju. To zna~i da se 16-bitni podaci upisuju (~itaju) u posebne sekcije nazvane banke koje su obima 8-bitova, tj. mikroprocesor mo`e da pristupi bilo kojoj banci, ili da pristupi jednoj i drugoj banci istovremeno. Jedna banka se naziva ni`a-banka i uklju~uje sve parno numerisane lokacije, a druga via-banka i sadr`i sve neparno numerisane lokacije. Kada pristupa vioj-banci procesor 8086/80186/80286/80386SX aktivira signal /BHE, a kada pristupa ni`oj banci signal /BLE. Lokacije koje pripadaju parnoj i neparnoj banci prikazane su na slici 5.14a) a selekcija banaka vri se na osnovu tabele sa slike 5.14b). Projektovati dekodersko kolo koje e za mikroprocesor 80386SX (24-bitna adresa) selektovati 16*64kB RAM memorijske komponente u adresnom opsegu od 000000h do 0FFFFFh. Kao dekodere koristiti kola 74LS138. Odgovor Struktura dekodera za selekciju banaka prikazana je na slici 5.15. Kao to se vidi sa slike 5.15 koriste se dva dekodera 74LS138. Kod dekodera U3, signal /BLE je priklju~en na ulaz /G2A a kod dekodera U2 signal /BHE je doveden na ulaz /G2A. Selekcija banaka se vri shodno sledeoj tabeli :

aktivni dekoderi 16-bitni prenos 8-bitni prenos - via banka 8-bitni prenos - ni`a banka

U1, U2, U3 U1, U2 U1, U3

5. Memorije

5-11

a) memorijske banke do 1 MB /BHE /BLE (A0) funkcija

0 0 selektovane su obe banke : 16-bitni prenos 0 1 selektovana je via-banka : 8-bitni prenos 1 0 selektovana je ni`a-banka : 8-bitni prenos 1 1 banke nisu selektovane

b) selekcija banaka pomou signala /BHE, /BLE (tj. A0) Slika 5.14 Memorijske banke i na~in selekcije

Test pitanje 5.5

Za generisanje "write strobe" signala memorijskog podsistema kod mikrora~unara zasnovanih na CPU-u 8086 koristi se sledea ema.

HWRWR

AOLWR

(MWTC)

BHE

Kod 80286/80386 umesto /WR se koristi signal /MWTC. Kod mikrora~unara zasnovanog na CPU-u 80286/80386 16-bitna memorija je locirana u adresnom prostoru po~ev od lokacije 060000h do 06FFFFh. Koristei PAL16L8 kao dekoder adresa, projektovati strukturu memorijskog sistema (dekoder + 16-bitna memorija). Usvojiti da se kao SRAM ~ipovi koriste komponente 62256 (32k*8) a da dekoder adresa generie signal /SEL (/CS), /HWR i /LWR.

Odgovor Adrese koje treba dekodirati se nalaze u opsegu od 0000 0110 0000 0000 0000 0000 = 060000h do 0000 0110 1111 1111 1111 1111 = 06FFFFh tj. 0000 0110 XXXX XXXX XXXX XXXX = 06XXXXh

Via banka

Zbirka zadataka iz Mikroprocesorskih sistema

5-12

Slika 5.15 Selekcija banaka kod 80386SX

PAL16L8 treba programirati na sledei na~in

TITLE Adresni_Dekoder PATTERN Test 2 REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 6/8/97 CHIP DEKODER2 PAL16L8 ; pins 1 2 3 4 5 6 7 8 9 10 A23 A22 A21 A20 A19 A18 A17 A16 AO GND ; pins 11 12 13 14 15 16 17 18 19 20 BHE SEL LWR HWR NC NC MWTC NC NC VCC EQUATIONS /SEL = /A23* /A22*/A21*/A20*/A19*A18*A17/A16 /LWR = /MWTC+/A0

5. Memorije

5-13

/HWR = /MWTC+/BHE Struktura memorijski sistem plus dekoder prikazana je na slici 5.16.

Slika 5.16 Struktura dekodera adresa

Zadatak 5.3

Kod mikrora~unarskog sistema zasnovanog na CPU-u 8086 treba ugraditi dve memorijske sekcije, RAM i EPROM. Za EPROM sekciju na raspolaganju imamo ~etiri ~ipa 27128 (16k * 8) od kojih treba realizovati memoriju kapaciteta 32k*16 lociranoj u prostoru po~ev od adresa F0000h do FFFFFh. RAM sekciju realizovati sa ~etiri ~ipa 62256 (32k*8) tako da se dobije memorija kapaciteta 64k*16 po~ev od lokacije 00000h do 1FFFFh. Kao dekoder adresa koristiti kolo 74LS139. Odgovor Struktura memorijskog sistema prikazana je na slici 5.17. [ema se karakterie sledeim karakteristi~nim reenjima.

(1) Jedna polovina dvostrukog adresnog dekodera U7A tipa 74LS139 se koristi za selekciju RAM (~ipovi U2 do U5) a druga U7B za selekciju EPROM sekcije (~ipovi U6 do U11). Memorija se uvek ~ita kao 16-bitna. Signal /RD je povezan na sve EPROM i RAM /OE ulazne pinove.

(2) Upravlja~ki signali /LWR i /HWR su povezani na razli~ite banke RAM memorije. Ovakvo reenje obezbedjuje da se mo`e vriti kako 16-bitni, tako i 8-bitni upis podataka u RAM prostor.

(3) Kod najveeg broja reenja pristup EPROM sekciji zahteva ubacivanje odredjenog broja stanja- ~ekanja. U konkretnoj realizaciji signal sa izlaza kola U12 (74LS30) mo`e se voditi ka

generatoru- stanja-~ekanja (detalji koji se odnose na generatora-stanja-~ekanja nisu prikazani na slici 5.17).

Napomena : Kod 80386SX umesto /BLE se koristi A0

Zbirka zadataka iz Mikroprocesorskih sistema

5-14

Slika 5.17 Memorijski sistem kod 8086 koji sadr`i 6kB EPROM i 128kB SRAM

Zadatak 5.4

Projektovati memorijski sistem CPU-a 80386SX koga ~ine sledee dve sekcije: EPROM kapaciteta 256kB realizovana od ~etiri ~ipa 27512 (64k*8), i SRAM kapaciteta 128kB realizovana sa ~etiri ~ipa 62256 (32k*8). Kao dekoder adresa koristiti kolo PAL16L8, koje pored ~ip selekt signala za memorijske ~ipove treba da generie i signale upisa /LWR i /HWR. PAL kolo treba da dekodira 16-bitne memorijske adrese koje pripadaju prostoru od 000000h do 01FFFFh za SRAM, i prostoru od FC0000h do FFFFFFh za EPROM . Odgovor PAL16L8 treba programirati na sledei na~in

TITLE Dekoder_adresa PATTERN 3 REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 6/8/97 CHIP DEKODER_3 PAL16L8 ;pins 1 2 3 4 5 6 7 8 9 10 MWTC A0 A16 A17 A18 A19 A20 A21 A22 GND ;pins 11 12 13 14 15 16 17 18 19 20 NC HWR A23 BHE LWR CS0 CS1 CE0 CE1 VCC

5. Memorije

5-15

EQUATIONS /LWR = /MWTC + /A0 /HWR = /MWTC +/BHE /CS0 = /A23*/A22*/A21*/A20*/A19*/A18*/A17*/A16 /CS1 = /A23*/A22*/A21*/A20*/A19*/A18*/A17*A16 /CE0 = A23*A22*A21*A20*A19*A18*/A17 /CE1 = A23*A22*A21*A20*A19*A18*A17

Slika 5.18 Memorijski sistem CPU-a 80386 koji sadr`i 256k EPROM i 128k SRAM

Test pitanje 5.6

Koliki prostor mo`e da adresiraju mikroprocesori 80386DX ili 80486? Kojim se upravlja~kim signalima vri selekcija banaka, i uka`i na na~in formiranja signala "write-strobe" za svaku banku. Odgovor Mikroprocesori 80386DX ili 80486 mogu da adresiraju memoriju kapaciteta 2GB (adresa je 32-bitna). Magistrala za podatke je 32-bitna, a to zna~i da je memorija organizovana u ~etiri banke (slika 5.19). Selekcija banaka se vri pomou upravlja~kih signala BE0 i BE1 ,BE2 ,BE3 . Kada su selektovane sve banke, vri se 32-bitni prenos podataka, kada su selektovane dve banke (/BE3 i /BE2, ili /BE1 i /BE0) vri se 16-bitni prenos podataka, a kod 8-bitnog prenosa selektuje se jedna banka. Na slici 5.20 prikazana je logika za generisanje upravlja~kih signala za upis WR3 i WR2 ,WR1 ,WR0 .

Zbirka zadataka iz Mikroprocesorskih sistema

5-16

Slika 5.19 Organizacija memorije kod mikroprocesora 80386DX i 80486

Slika 5.20 Upravlja~ki signali za upis u odgovarajue banke kod 80386 DX i 80486 Zadatak 5.5

Kod sistema zasnovanog na mikroprocesoru 80486 projektovati SRAM memorijski sistem kapaciteta 256k*8. Memoriju realizovati pomou SRAM ~ipova tipa 62256 (32k*8), a locirati je u adresnom prostoru po~ev od lokacije 02000000h do 0203FFFFh. Za dekodiranje adresa koristiti ~ipove PAL16L8. Odgovor Struktura memorijskog sistema prikazana je na slici 5.21. Dekodiranje adresa je organizovano u dva nivoa. Program za dekoder U1 oblika je

TITLE Dekoder_adresa PATTERN Test4 (PAL U1) REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 6/8/97 CHIP DEKODER4 PAL16L8 ; pins 1 2 3 4 5 6 7 8 9 10 MWTC BE0 BE1 BE2 BE3 A17 A28 A29 A30 GND ; pins 11 12 13 14 15 16 17 18 19 20 A31 CS1 U2 NC WR0 WR1 WR2 WR3 CS0 VCC EQUATIONS /WR0 = /MWTC */BE0

5. Memorije

5-17

/WR1 = /MWTC */BE1 /WR2 = /MWTC */BE2 /WR3 = /MWTC */BE3 /CS0 = /A31*/A30*/A29*/A28*/A17*/U2 /CS1 = /A31*/A30*/A29*/A28*A17*/U2

Slika 5.21 SRAM kapaciteta 256 k kod sistema zasnovan na mikroprocesoru 80486 Napomena: Signali *MRDC, *MWTC, *BE0, *BE1, *BE2 i *BE3 su aktivni kao niski Dekoder U2 je programiran na sledei na~in:

TITLE Dekoder_adresa PATTER Test5 (PAL U2) REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 6/8/1997 CHIP DEKODER5 PAL16L8 ; pins 1 2 3 4 5 6 7 8 9 10 A18 A19 A20 A21 A22 A23 A24 A25 A26 GND ; pins 11 12 13 14 15 16 17 18 19 20 A27 U2 NC NC NC NC NC NC NC VCC EQUATIONS /U2 = /A27*/A26*/A25/A24*/A23*/A22*/A21*/A20*/A19*/A18 Test pitanje 5.7

Zbirka zadataka iz Mikroprocesorskih sistema

5-18

Kako je kod mikroprocesora Pentium i Pentium Pro (sa izuzetkom verzije P24T) organizovana memorija, i kakva je struktura kola za generisanje odgovarajuih "write strobe" signala? Odgovor Magistrala podataka kod mikroprocesora Pentium je 64-bitna. Memorija je organizovana u osam banaka (slika 5.22). Struktura kola za generisanje signala "write strobe" prikazana je na slika 5.23.

Slika 5.22 Organizacija memorije kod mikroprocesora Pentium

Slika 5.23 Struktura kola za generisanje upravlja~kih signala "write strobe" Napomena: Signal /MWTC se dobija kombinovanjem signala M|/IO i W|/R.

Zadatak 5.6

5. Memorije

5-19

Kod sistema zasnovanog na mikroprocesoru Pentium koristei EPROM ~ipove 27512 (64k*8) projektovati memorijski sistem obima 1MB koji se nalazi po~ev od memorijske lokacije FFF00000h do FFFFFFFFh. Dekodiranje adresa organizovati u dva nivoa koristei komponente PAL16L8. Odgovor Struktura memorijskog sistema prikazana je na slici 5.24

Slika 5.24 Organizacija 512kB EPROM prostora kod mikroprocesora Pentium

Dekoderi adresa U1 i U2 su programirani na sledei na~in:

TITLE Dekoder_adresa PATTERN Test6 (PAL U1) REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 10/8/97 CHIP DEKODER5 PAL16L8 ; pins 1 2 3 4 5 6 7 8 9 10

Zbirka zadataka iz Mikroprocesorskih sistema

5-20

A29 A30 A31 NC NC NC NC NC NC GND ; pins 11 12 13 14 15 16 17 18 19 20 U2 CE NC NC NC NC NC NC NC VCC EQUATIONS /CE = /U2*A29*A30*A31 TITLE Dekoder_adresa PATTERN Test7 (PAL U2) REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 10/8/1997 CHIP DEKODER5 PAL 16 L8 ; pins 1 2 3 4 5 6 7 8 9 10 A19 A20 A21 A22 A23 A24 A25 A26 A27 GND ; pins 11 12 13 14 15 16 17 18 19 20

A28 NC NC NC NC NC NC NC U2 VCC EQUATION /U2 = A19*A20*A21*A22*A23*A24*A25*A26*A27 Napomena: Memorija je smetena po~ev od lokacije F8000000h do FFFFFFFFh. Test pitanje 5.8

Neka je broj adresnih ulaza memorijskog ~ipa: (a) 8; (b) 11; (c) 12; i (d) 13. Odredi broj memorijskih lokacija kojima se mo`e pristupati. Odgovor (a) 256; (b) 2048; (c) 4096; (d) 8192 Test pitanje 5.9

Koje namene imaju sledei pinovi kod memorijskih komponenata: (a) /CS (kod RAM-a) ili /CE (kod EPROM-a ili ROM-a), (b) /OE (c) /WE (kod RAM-a) Odgovor (a) /CS ili /CE pin se koristi da selektuje ili dozvoli rad memorijskoj komponenti tako da ona mo`e da obavlja operaciju ~itanje ili upis. (b) /OE dozvoljava aktiviranje izlaznih stepeni ~ipa u toku operacije ~itanje pod uslovom da je /CS ili /CE aktivan. (c) /WE uzrokuje da se obavi operacija ~itanja memorije pod uslovom da je /CS ili /CE aktivan. Test pitanje 5.10

Dekoder adresa realizovan pomou NAND kola prikazan na slici 5.25 koristi se za selekciju 2716 EPROM memorijske komponente kojoj su dodeljene memorijske lokacije FF800h - FFFFFh. Modifikuj dekoder realizovan pomou NAND kola prikazan na slici 5.25 tako da mo`e da selektuje memoriju lociranu u sledeem adresnom prostoru: (a) DF800h - DFFFFh (b) 40000h - 407FFh

5. Memorije

5-21

Slika 5.25 Adresni dekoder realizovan NAND kolom koji se koristi da selektuje EPROM ~ip tipa 2716 za opseg adrese od FF800h - FFFFFh

Odgovor Za strukturu sa slike 5.25 va`i sledea adresna selekcija

1111 1111 1xxx xxxx xxxx ili 1111 1111 1000 0000 0000 = FF800h do 1111 1111 1111 1111 1111 = FFFFFh

a) Za selekciju adresa u opsegu od DF800h do DFFFFh imaemo

1101 11111 1xxx xxxx xxxx ili 1101 11111 1000 0000 0000 = DF800h do 1101 11111 1111 1111 1111 = DFFFFh

Logi~ka ema dekodera je prikazana na slici 5.26.

b) Za selekciju adresa u opsegu od 40000h do 407FFh imaemo

0100 0000 0xxx xxxx xxxx ili 0100 0000 0000 0000 0000 = 40000h do 0100 0000 0111 1111 1111 = 407FFh

Logi~ka ema dekodera je prikazana na slici 5.27.

adresni prostor procesora 8088Magistrala podataka procesora 8088

Zbirka zadataka iz Mikroprocesorskih sistema

5-22

Slika 5.26 Logi~ka ema dekodera adresa koji selektuje memorijski prostor po~ev od adrese DF800h do DFFFFh

A19A18A17A16A15A14A13A12A11

IO/M

123

45

67

1011

1213

1415

9

74ALS133

Slika 5.27 Logi~ka ema dekodera adresa u opsegu 40000h do 407FFh

Test pitanje 5.11

Modifikovati logiku dekodera adresa prikazanog na slici 5.3a) tako da dekoder mo`e da selektuje memoriju ~ije su adrese locirane u opsegu od: (a) 70000h - 7FFFFh (b) 40000h - 4FFFFh Odgovor a) Za selekciju adresa u opsegu 70000h - 7FFFFh va`ie

0111 xxxx xxxx xxxx xxxx ili 0111 0000 0000 0000 0000 = 70000h do 0111 1111 1111 1111 1111 = 7FFFFFh

Logi~ka ema dekodera adresa prikazana je na slici 5.28

5. Memorije

5-23

b) Za selekciju adresa u opsegu od 40000h do 4FFFFh imaemo

0100 xxxx xxxx xxxx xxxx ili 0100 0000 0000 0000 0000 = 40000h do 0100 1111 1111 1111 1111 = 4FFFFFh

Logi~ka ema dekodera adresa prikazana je na slici 5.29

A Y0B Y1C Y2

Y3G1 Y4G2 Y5G3 Y6

Y7

70000h-71FFFh72000h-73FFFh74000h-75FFFh76000h-77FFFh78000h-79FFFh7A000h-7BFFFh7C000h-7DFFFh

A13A14A15

A18A19

74LS138

A17A16

Slika 5.28 Logi~ka ema dekodera adresa za opseg od 70000h do 7FFFFh

Slika 5.29 Logi~ka ema dekodera adresa za opseg od 40000h do 4FFFFh Test pitanje 5.12

Reprogramiraj bipolarniPROM sa slike 5.4 tako da isti mo`e dekodirati memorijske adrese koje pripadaju sledeim opsezima: (a) 30000h - 3FFFFh (b) 80000h - 8FFFFh Odgovor Na~in programiranja bipolarnog PROM-a za slu~ajeve pod a) i b) je prikazan na sledeim tabelama: a)

OE A8 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7

Zbirka zadataka iz Mikroprocesorskih sistema

5-24

0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0

(b)

OE A8 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0

Test pitanje 5.13

Modifikuj kolo prikazano na slici 5.8 programiranjuem PAL komponente, koja ima funkciju dekodera adresa, tako da je mogue adresirati memorijski prostor po~ev od lokacije: (a) B0000h do BFFFFh (b) 40000h do 4FFFFh Odgovor (a) deo programa koji se odnosi na jedna~ine na osnovu kojih se programira PAL16L8 ima sledei oblik EQUATIONS /O1 = A19*/A18*A17*A16*/A15*/A14*/A13 /O2 = A19*/A18*A17*A16*/A15*/A14*A13 /O3 = A19*/A18*A17*A16*/A15*A14*/A13 /O4 = A19*/A18*A17*A16*/A15*A14*A13 /O5 = A19*/A18*A17*A16*A15*/A14*/A13 /O6 = A19*/A18*A17*A16*A15*/A14*A13 /O7 = A19*/A18*A17*A16*A15*A14*/A13 /O8 = A19*/A18*A17*A16*A15*A14*A13 (b) EQUATIONS /O1 = /A19*A18*/A17*/A16*/A15*/A14*/A13 /O2 = /A19*A18*/A17*/A16*/A15*/A14*A13 : /O8 = /A19*A18*/A17*/A16*A15*A14*A13

Test pitanje 5.14

Na slici 5.30 prikazano je kako se osam EPROM ~ipova tipa 2732 mogu povezati na mikrora~unarski sistem zasnovan na procesoru 8088.

5. Memorije

5-25

(a) Modifikovati kolo sa slike 5.30 tako da dekoder adresa mo`e da selektuje memorijski prostor po~ev od lokacije 68000h do 6FFFFh.

(b) Modifikovati kolo sa slike 5.30 tako da dekoder adresa mo`e da selektuje osam 2764 (8k*8) EPROM ~ipova po~ev od lokacije 10000h do 1FFFFh .

Slika 5.30 Na~in povezivanja osam EPROM ~ipova tipa 2731 kod mikrora~unara zasnovanog na procesoru 8088

Odgovor (a) (b) reenje problema za ovaj slu~aj treba da da ~itaoc. Test pitanje 5.15

Adrese

Podaci

74LS13

Zbirka zadataka iz Mikroprocesorskih sistema

5-26

Modifikuj kolo sa slike 5.17 tako da je EPROM prostor lociran po~ev od lokacije C0000h do CFFFFh, a RAM prostor od lokacije 30000h do 4FFFFh. Test pitanje 5.16

Kod mikrora~unarskog sistema zasnovanog na mikorpocesoru 80386SX izvriti projektovanje memorijske plo~e tipa SRAM obima 16 -bitova tako da je SRAM prostor lociran u adresnom opsegu po~ev od adrese 200000h do 21FFFFh.

Test pitanje 5.17

Izvriti projektovanje 32-bitnog memorijskog interfejsa koji ima instaliranu EPROM memoriju po~ev od lokacije DDDD0000h do FFFFFFFFh, koristei pri tome EPROM ~ipove 27128 i kolo PAL16L8 kao dekoder adresa.

Odgovor

Test pitanje 5.18

Za mikrora~unarski sistem zasnovan na procesoru Pentium/PentiumPro izvri projektovanje memorijske plo~e obima 64 bita koja sadr`i EPROM prostor po~ev od lokacije FFF00000h do FFFFFFFFh, i SRAM prostor po~ev od lokacije 00000000h do 003FFFFFh. Izbor EPROM i SRAM ~ipova kao i dekodera adresa treba da obavi projektant. Zadatak 5.7

Neka su data sledea ~etiri bajta heksadecimalnih podataka: 25h, 62h, 3Fh i 52h. (a) Odredi "checksum" bajt. (b) Obavi "checksum" operaciju kako bi se obezbedio integritet podataka. (c) Ako je drugi bajt 62h promenio vrednost na 22h, poka`i kako checksum detektuje greku. Odgovor

5. Memorije

5-27

a) Checksum se odredjuje sabiranjem bajtova 25h + 62h + 3Fh + 52h 118 Suma iznosi 118h, tako da ako se zanemari prenos dobiemo 18h. Checksum bajt je dvoji~ni komplement od 18h a to iznosi E8h. b) Sabiranjem niza bajtova uklju~ujui i checksum bajt rezultira novoj sumi ~ija je vrednost nula. Ovakva vrednost sume ukazuje da u bloku podataka ne postoji bajt ~ija je vrednost promenjena 25h + 62h + 3Fh + 52h + E8h 200h (prenos se zanemaruje) c) Sabiranjem niza bajtova uklju~ujui i checksum bajt pokazuje se da je rezultat razli~it od nule, a to zna~i da je vrednost jednog ili veeg broja bajtova promenjena 25h + 22h + 3Fh + 52h + E8h 1C0h (zanemarujui prenos dobija se C0h). Test pitanje 5.19

Odredi opseg adresa za koje je signal /CS aktivan :

CS

A15A16A17A18A19

.

.

.

A0

A14

32k*8

Zadatak 5.8

Kreiraj Checksum rutinu za testiranje 8kB ROM BIOS-a kod IBM PC/XT maine. Na po~etnu lokaciju Checksum rutine ukazuje par DS:[BX] . Odgovor Cheksum PROC NEAR Mov CX, 8192 ; broj bajtova za sabiranje Xor AL, AL ; AL = 0 TEST: Add AL,DS : BX ; dodaj naredni bajt Inc BX ; naredni bajt Loop TEST ; sabrani svi bajtovi Or AL, AL ; SUMA = 0 ?

Zbirka zadataka iz Mikroprocesorskih sistema

5-28

Ret Checksum ENDP Test pitanje 5.20

Koristei NAND kola i invertore izvri projektovanje dekodera adresa koji e selektovati memorijske lokacije po~ev od adrese 0C0000h do 0C0FFFh. Test pitanje 5.21

Odredi opseg adresa koji se mogu selektovati kada izlazi dekodera adresa 74LS138 Y0, Y3 i Y6 postanu aktivni.

AB Y0C

G2A Y3G2B

Y6G1

CS

74LS138 16K*8A14A15A16

A17A18

A19

Zadatak 5.9

Propusnost magistrale, BW, se meri u MB/s i izra~unava se kao

BW=(1/tcik)*W

gde je: tcik - vreme trajanja ciklusa magistrale; W - obim magistrale u bajtovima. Taktna frekvencija mikroprocesora 8088 je 5MHz a memorijski ciklus bez ubacivanja stanja ~ekanja iznosi ~etiri taktna intervala. Odredi propusnost magistrale pod uslovom: (a) da se ne vri ubacivanje stanja ~ekanja, (b) da se ubacuje jedno stanje ~ekanja. Uporedi dobijene rezultate sa performansma koje se odnose na mikroprocesor 8086 pod istim uslovima. Odgovor Magistrala podataka maikroprocesora 8088 je 8-bitna a memorijski ciklus je trajanja tcik=4*200ns = 800ns. a) BW8088 = (1/800ns)*1B = 1,25MB/s Magistrala podataka mikroprocesora 8086 je 16-bitna, pa BW8086 =(1/800ns)*2B = 2,5MB/s

b) Pod uslovom da se vri ubacicanje jednog stanja ~ekanja memorijski ciklus trajae 5 taktnih intervala, tj. tcik = 5*200s = 1000ns, a propusnost magistrale u tom slu~aju iznosie

BW'8088 = (1/1000ns)*1B = 1MB/s

BW'8086 = (1/1000ns)*2B = 2MB/s

5. Memorije

5-29

Zadatak 5.10

Ciklus magistrale mikroprocesora 8086 iznosi 4 taktna intervala, a mikroprocesora 80286 dva taktna intervala. Ako je radna frekvencija oba mikroprocesora 10MHz odredi propusnost magistrale za oba procesora pri: (a) 0 stanja ~ekanja, tj. zero WS (sait state); (b) 1WS; i (c) 2WS. Odgovor Perioda takta sa kojom procesor radi je 1/(10MHz) = 100ns 8086-10MHz 80286-10MHz memorijski cklus sa 0WS 400ns 200 ns memorijski cklus sa 1WS 500ns 300 ns memorijski cklus sa 2WS 600ns 400 ns

BW8086/0WS =(1/400ns)*2 = 5MB/s

BW8086/1WS =(1/500ns)*2 = 4MB/s

BW8086/2WS =(1/600ns)*2 = 3.3MB/s

BW286/0WS =(1/200ns)*2 = 10MB/s

BW286/1WS =(1/300ns)*2 = 6.6MB/s

BW286/2WS =(1/400ns)*2 = 5MB/s Zadatak 5.11

Odredi vreme trajanja ciklusa memorije koje se odnosi na operaciju ~itanje i upis kod mikroprocesora 80286, pri: (a) 12MHz sa 1WS (b) 16MHz sa 1WS (c) 16MHz sa 2WS Napomena: Memorijski ciklus procesora 80286 traje dva taktna intervala .

Odgovor (a) tcik|12 = (1+2)*80ns = 3*80ns = 240ns (b) tcik|16 = (1+2)*62ns = 3*62ns = 186ns (c) tcik 16|2WS = (2+2)*62ns = 4*62ns = 248ns Napomena: U optem slu~aju va`i formula: tcik = (broj WS + memorijski ciklus) * t cpu

za 80286 memorijski ciklus = 2, a tcpu je taktna frekvencija procesora.

Test pitanje 5.22

Neka mikroprocesor Pentium izvrava sledee instrukcije. Odredi logi~ko stanje signala /BE7 - /BE0 za svaku od sledeih instrukcija: a) Mov AL, [0000] b) Mov AX, [0000] c) Mov EAX, [0000] Odgovor

Zbirka zadataka iz Mikroprocesorskih sistema

5-30

instrukcija /BE7 /BE6 /BE5 /BE4 /BE3 /BE2 /BE1 /BE0 Mov AL, [0000] 1 1 1 1 1 1 1 0 Mov AX, [0000] 1 1 1 1 1 1 0 0 Mov EAX, [0000] 1 1 1 1 0 0 0 0 Test pitanje 5.23 Usvojimo da procesor 486 izvrava instrukciju Mov EAX, [0005]. Koji e /BEx signali biti aktivni? Koliko je ciklusa magistrale potrebno da se izvri ova instrukcija? Odgovor Instrukcijom Mov EAX, [0005] pristupa se 32-bitnom podatku (4-bajta) koji je u memoriji lociran po~ev od adresa 0005 do 0008. S obzirom da za poravnanje memorije va`i ema sa sl. 5.31:

.

.

.

0

4

8

C

3

7

B

Slika 5.31 : Poravnjanost 32-bitnih re~i u memoriji

To zna~i da su za pristup potrebna dva ciklusa magistrale: (a) U toku prvog aktivan je signal /BE3 a pristupa se bajtu na memorijkoj lokaciji 0008; (b) a u toku drugog aktivni su signali /BE0-/BE2 i vri se prenos bajtova koji su locirani po~ev od memorijske lokacije 0005 do 0007. Zadatak 5.12

Za upravljanje memorijom mikrora~unarski sistem koristi tehniku strani~enja. Predpostavimo da se javlja potreba za korienjem stranica po sledeem redosledu: 12, 14, 2, 34, 56, 23, 14, 56, 34, 12 a da je u glavnoj memoriji mogue istovremeno ~uvati do 4 stranice. Izlistati stranice u glavnoj memoriji nakon svakog prenosa stranice koristei sledee algoritme zamene: (a) FIFO (b) LRU Ukazati kad dolazi do greke strani~enja. Odgovor

5. Memorije

5-31

Usvojimo da je memorija pre po~etka ispra`njena. a) FIFO princip

b)LRU

Test pitanje 5.23

Koje osnovne tipove memorija danas naj~ee sreemo kod mikrora~unarskih sistema? Odgovor Naj~ee korieni memorijski medijumi kod mikrora~unarskih sistema prikazani su na slici 5.32.

memorija

opti~ki magnetni poluprovodni~ki

mogue je samo~itanje

mogue je~itanje i upis

trake diskovi proizvoljanpristup

serijskipristup

ROM RAM

CDWORMCD-R

magneto-opti~ki

start-stopstrimer

flopikruti

pomera~kiregistarCCD

PROMEPROMEEPROMFle

stati~kidinami~ki

Slika 5.32 : Klasifikacija memorijskih medijuma

Napomena : CD-R- recordable CD Zadatak 5.13

Adresni dekoder dozvoljava CPU-u da selektuje, na sistemskoj magistrali, memorijsku lokaciju, interfejs modul, ili kontroler periferije. Koristei dekoder sa slike 5.33 projektovati adresni dekoder koji selektuje jedan od osam adresnih blokova koji pripadaju adresnom prostoru od FC00h do FFFFh.

* * * * - - -

12

- -

14 12

- 2

14 12

34 2 14 12

56 34 2

14

23 56 34 2

14 23 56 34

14 23 56 34

145 23

56 34

12 14 23 56

*-dolazi do greke strani~enja

+ +

+ + +

* * * * - - -

12

- -

14 12

- 2

14 12

34 2 14 12

56 34 2

14

23 56 34 2

14 23 56 34

14 23 56 34

1423 56 34

12 14 23 56

*-dolazi do greke strani~enja

+ - pogodak

Zbirka zadataka iz Mikroprocesorskih sistema

5-32

upravlja-~ki ulazi

A0A1A2 dekoder 3:8EN1EN2EN3

.

.

.

adresniulazi

CS7CS6

CS1CS0

Slika 5.33

Odgovor

EN1

EN2

EN3 dekoder 3:8A2A1A0

A15A14A13A12A11A10

Data_Req

A9A8A7

CS7

CS0

.

.

.

a) Dekoder adresa

FF80-FFFF

FF00-FF7FFE80-FEFFFE00-FE7F

FD80-FDFF

FD00-FD7F

FC80-FCFFFC00-FC7F

CS7

6543

2

10

b) selektovani memorijski blokovi

Slika 5.34 : Logika adresnog dekodera Kao to se vidi sa slike 5.34, svaka memorijska lokacija u okviru bloka selektuje se pomou ni`ih sedam adresnih linija (A6-A0), a obim bloka je 128 lokacija. Test pitanje 5.24

Koliko bajtova ~ine memorije sledeeg kapaciteta: kilobajt, megabajt, gigabajt, terabajt, petabajt, exebajt, zettabajt, i yottabajt. Odgovor

jedinica skraenica kapacitet u jedinicama kapacitet u bajtovima kilo-bajt kB ili k 1024 bajtova 1,024

mega-bajt MB ili M 1024 k-bajtova 1,048,576 giga-bajt GB 1024 mega-bajtova 1,073,741,824 tera-bajt TB 1024 giga-bajtova 1,099,511,627,776 peta-bajt PB 1024 tera-bajtova 1,125,899,306,843,624 exa-bajt EB 1024 peta-bajtova 1,152,921,504,607,870,976

zetta-bajt ZB 1024 exa-bajtova 1,180,591,620,718,458,879,424 yotta-bajt YB 1024 zetta-bajtova 1,208,925,819,615,701,892,530,176 Zadatak 5.14

5. Memorije

5-33

Koliko RAM ~ipova kapaciteta 32k*8b je potrebno ugradiditi da bi se realizovala memorija kapaciteta 256 kB? Skicirati blok dijagram 256k*8b RAM sistema, ako je struktura jednog RAM ~ipa ( kapaciteta 32k*8b) data na slici 5.35.

Adr

CS

R/W

32k*8b

PodD0-D7

A0-A14

selekcija

upis/~itanje

slika 5.35 : RAM kapaciteta 32k*8b

Odgovor

32k*8bAdrCS PodR/W

32k*8bAdrCS PodR/W

32k*8bAdrCS PodR/W

.

.

.

A2 "0"A1 "1"A0

dekoder3÷8

E "7"

D0-D7

upis/~itanje

A17

A16

A15

CS

CS0

CS1

.

.

.

A0-A14

Slika 5.36 : Struktura 256*8b RAM-a

Kao to se vidi sa slike 5.36 ukupno je potrebno osam RAM ~ipova kapaciteta 32k*8 bitova. Zadatak 5.15

Koristei 64k*8b RAM ~ipove i dekoder adresa kao onaj na slici 5.35, konstruisati RAM memorijski blok kapaciteta 256k*16. Test pitanje 5.25

Pokazati kako izgledaju logi~ke strukture osnovne stati~ke RAM elije, modela RAM bit "slice"-a i 16*1b RAM ~ipa. Odgovor Logi~ke strukture stati~ke RAM elije, modela RAM bit "slice"-a i 16*1b RAM ~ipa prikazane su na slici 5.37 i 5.38.

Zbirka zadataka iz Mikroprocesorskih sistema

5-34

Q

Q

R

S

Select

B

B C

C

a) Stati~ka RAM elija

RAM cell

RAM cell

RAM cell

Read/Write logic

Data in Data out

Read/ Bit selectWrite

Wordselect1

Wordselect2n-1

Wordselect0

Select

B

B

Q

Q

R

S

C

C

Select

Q

Q

R

S

Q

Q

R

Bit select

ReadWrite

Write logic

Read logic

Data out

Data in

Ram cell

Ram cell

Wordselect2n - 1

Wordselect0

(b1) logic diagram

(b2) Symbol

(b) Model RAM bit "slice"-a

Slika 5.37 : Struktura stati~ke RAM elije model RAM bit "slice"-a i struktura 16*1b RAM ~ipa. Test pitanje 5.26

Unutar RAM ~ipa radi pristupa RAM elijama umesto jedinstvenog dekodera, sa k ulaza i 2k izlaza koji zahteva ugrednju 2k AND kola sa po k ulaza po gejtu, koriste se dva dekodera sa po k/2 ulaza. Jedan od dekodera upravlja "word" selekt linijama a drugi upravlja "bit" selekt linijama (slika 5.38), to rezultira dvodimenzionalnoj matri~noj selektorskoj emi. Ako RAM ~ip ~ine m re~i sa 1 bit po re~i, tada emom sa slike 5.38 selektuje se ona RAM elija koja se nalazi na preseku

5. Memorije

5-35

WordSelect vrste i BitSelect kolone. S obzirom da WordSelect linija na selektuje striktno re~i (word) ona se naj~ee naziva Row Select. Izlaz dekodera koji selektuje jednu ili vei broj bit "slice"-ova naziva se Column Select.

RAM cell 0

RAM cell 4

RAM cell 8

RAM cell 12

Read/Writelogic

Data in

Data out

Read/ BitWrite select

RAM cell 1

RAM cell 5

RAM cell 9

RAM cell 13

Read/Writelogic

Data in

Data out

Read/ BitWrite select

RAM cell 2

RAM cell 6

RAM cell 10

RAM cell 14

Read/Writelogic

Data in

Data out

Read/ BitWrite select

RAM cell 3

RAM cell 7

RAM cell 11

RAM cell 15

Read/Writelogic

Data in

Data out

Read/ BitWrite select

2-to-4Decoder

21

20

3

2

1

0

Rowselect

A3

A2

Row decoder

Dataoutput

Data inputRead/Write

0 1 2 3

2-to-4 Decoderwith enable

2 1 2 0 Enable

A1 A0Chip select

Columndecoder

Slika 5.38 : Dijagram 16*1 RAM koji koristi polje elija formata 4*4

(a) kako se naziva na~in selekcija RAM elije prikazan na slici 5.38. (b) kako izgleda blok dijagram 8*2b RAM-a organizovan kao polje elija formata 4*4 Odgovor (a) ovakav na~in dekodiranja se naziva koincidentna selekcija

Zbirka zadataka iz Mikroprocesorskih sistema

5-36

(b)

RAM cell 0

RAM cell 4

RAM cell 8

RAM cell 12

Read/Writelogic

Data in

Data out

Read/ BitWrite select

RAM cell 1

RAM cell 5

RAM cell 9

RAM cell 13

Read/Writelogic

Data in

Data out

Read/ BitWrite select

RAM cell 2

RAM cell 6

RAM cell 10

RAM cell 14

Read/Writelogic

Data in

Data out

Read/ BitWrite select

RAM cell 3

RAM cell 7

RAM cell 11

RAM cell 15

Read/Writelogic

Data in

Data out

Read/ BitWrite select

2-to-4Decoder

21

20

3

2

1

0

Rowselect

A2

A1

Row decoder

0 1

1-to-2 Decoderwith enable

20 Enable

Columndecoder

Column select

A0 Chip select

Dataoutput 1

Dataoutput 0

Data input 0Data input 1Read/Write

Slika 5.39 : Blok dijagram 8*2b RAM-a koji koristi polja elija formata 4*4

Zadatak 5.16

16k*4b RAM ~ip koristi koincidentno dekodiranje (deli interni dekoder na dva dekodera, jedan za selekciju vreste a drugi za selekciju kolone). (a) ako se usvoji da je polje RAM elija kvadratnog tipa, kakvog je tipa svaki od dekodera i koliko je AND kola potrebno za dekodiranje adrese? Odrediti koje "row" i "column" selekcione linije su aktivirane kada je binarna ulazna adresa ekvivalentna (9000)10.

5. Memorije

5-37

Odgovor Pojednostavljena organizacija dekodera po vrsti i koloni prikazana je na slici 5.40. Organizacija od 16k*4b rezultira 64kb tj. 64k elija, koje se organizuju u formi 256*256. Binarna adresa od (9000)10 ekvivalentna je A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 2 3 2 8 = heksadecimalno 8960 40 = decimalno b) aktiviraju se 40 vrsta i 35 kolona

0

1

8 na 256

255

0

256

64k-256

1

257

64k-255

2

258

64k-254

3

259

64k-253

4

260

64k-252

5

261

64k-251

6

262

64k-250

7

263

64k-249

252 253

509

64k-2

254

510

64k-1

255

511

64k

dekodervrsta

.

.

.

A7

A6

A0

R/WD0D1D2D3

0 1 2 . . . . . . . . . . . . . . . . . . . . . 62 636 na 64

dekoderkolona

A13 A12 . . . A8 Cs

508

64k-3

.

.

.

Slika 5.40 : Pojednostavljena organizacija RAM-a 16k*4b Zadatak 5.17

Na raspolaganju imamo ra~unarski sistem koji koristi strni~enje. Kapacitet glavne memorije je tri stranice. Izvrenje programa Q iziskuje obraanje pet razli~itim stranicama Pi, gde i=1, 2 , 3, 4 , 5 pri ~emu je i adresa stranice. Niz adresa stranica koji se formira u toku izvrenja programa Q je 232152453252, to zna~i da se prvo obraamo stranici P2 zatim P3, itd. Stranice se dodeljuju glavnoj memoriji shodno politici zamene FIFO, LRU ili OPT (optimal replacement policy). Grafi~ki prikazati na~in dodele stranica za sve tri nabrojane politike.

Zbirka zadataka iz Mikroprocesorskih sistema

5-38

Vreme 1 2 3 4 5 6 7 8 9 10 11 12 broj stranice 2 3 2 1 5 2 4 5 3 2 5 2 Test pitanje 5.27

Kada se govori o pakovanju DRAM memorijskih ~ipova ~esto se koriste termini SIMM i DIMM. Objasni njihovo zna~enje.

Odgovor Prvenstveno zbog visoke gustine pakovanja DRAM-ovi predstavljaju danas jezgro memorije kod najveeg broja mikrora~unarskih sistema. Na primer, nije nita neobi~no da mikrora~unar ima instalirano 64MB (DRAM) glavne memorije, 8MB (DRAM) video memorije i jo 16MB (DRAM) hard-disk ke memorije. Danas se memorijski ~ipovi pakuju kao integrisana kola standardno nazvana diskretni ~ipovi. Kod ranijih maina ovi diskretni ~ipovi su bili instalirani u odgovrajua podno`ja uobi~ajeno 9 ~ipova po memorijskoj banci. Pojavom 32-bitnih mikroprocesora zahtevi za ugradnjom memorije veeg kapaciteta su postali izra`eniji pa su memorije postale po kapacitetu suvie velike, a sa druge strane njihova realizacija sa diskretnim ~ipovima je postala neprakti~na. Naime, za realizaciju samo jedne banke potrebno je 36 ~ipova, tako da ugradnja veeg broja banaka dovodi do iskorienja celokupno dostupnog, fizi~kog prostora. Sa ciljem da se minimizira povrina koja se koristi za ugradnju DRAM-ova na tampanoj plo~i, moderna (savremena) alternativna pakovanja standardno koriste memorijske module. Kod ovakvih modula nekoliko diskretnih memorijskih ~ipova se smeta na jednu malu plug-in tampanu plo~icu. Memorijski moduli su kompaktniji i pouzdaniji od diskretnih ~ipova iz dva razloga. Prvo, ~ipovi se leme na modulu, instalirani su veoma blizu jedan drugom tako da je iskorienje prostora veoma dobro. Drugo, diskretnim ~ipovima koji se instaliraju na memorijskim modulima nikad se ne pristupa kao pojedina~nim ~ipovima ve kao grupi, pa je povrina za pakovanje kompaktnije iskoriena, a kvarovi i nepouzdanosti u radu lake se lociraju, dok se moduli jednostavnije i br`e zamenjuju.

Postoji vei broj razli~itih tipova memorijskih modula. U najveem broju slu~ajeva oni imaju CELP (Card Edge Low Profile) konektore sa 30 do 83 kontakata na svakoj strani modula. Kod tampanih plo~a nazvanih SIMM (Single In-line Memory Modules) kontakti se ostvaruju na suprotnoj strani, po~ev od one strane na kojoj su izlemljeni ~ipovi, tako da svaki par kontakata (jedan sa prednje a drugi sa zadnje) obezbedjuje samo jedan kontakt tj. aktivan je samo zadnji. Sa druge strane, kod tampanih plo~a nazvanih DIMM (Dual In-line Memory Modules) kontakti sa obe strane plo~a su aktivni ( tj. koriste se oni sa prednje i sa zadnje strane) i slu`e za razli~ite namene. Postoji i trei vid tampanih plo~a, koje se danas sve redje koriste, poznate pod imenom SIPP (Single In-line Pin Package) moduli koji koriste pin konektore. Veze kod SIPP modula se izvode kao iglice uredjene u kolinearnoj formi. Ovakvi moduli su uglavnom namenjeni za direktno

⊕ ⊕ ⊕ ⊕ ⊕ ⊕

⊕ ⊕ ⊕ ⊕ ⊕

⊕ ⊕ ⊕

2* - -

2* 3 -

2* 3 -

2 3 1

5 3* 1

5 2 1*

5* 2 4

5* 2 4

3 2* 4

3 2* 4

3 5 4*

3* 5 2

2* - -

2* 3 -

2 3* -

2 3* 1

2* 5 1

2 5 1*

2 5* 4

2* 5 4

3 5

4*

3 5* 2

3* 5 2

3* 5 2

2 - -

2 3 -

2 3 -

2 3 1

2 3 5

2 3 5

4 3 5

4 3 5

4 3 5

2 3 5

2 3 5

2 3 5

FIFO

LRU

OPT

* - prvi uao ⊕ - pogodak

* - prvi kandidat za zamenu ⊕ - pogodak

⊕ - pogodak

5. Memorije

5-39

lemljenje na tampanoj plo~i. Ponekad se sreu i specijalna SIPP podno`ja koja predstavljaju niz rupa poredjanih u liniji u koje se “ubada” modul.

Moduli se razlikuju i po broju veza koje imaju. Danas uglavnom sreemo sledee tipove modula:

• 30-pinski SIMM

• 72-pinski SIMM

• 72-pinski Small Outline DIMM (SODIMM)

• 168-pinski DIMM

• 30-pinski SIPP.

Test pitanje 5.28

Uka`i na osnovne karakteristike pakovanja tipa SIMM.

Odgovor Razlikujemo dva tipa pakovanja tipa SIMM:

- 30-pinski SIMM - jednobajtni - 72-pinski SIMM - ~etvorobajtni.

Izgled 30-pinskog pakovanja tipa SIMM prikazan je na slici 5.41.

Slika 5.41 30-pinsko 9-bitno SIMM pakovanje

Ovaj tip pakovanja karakterie bajtovski prenos. Kada se govori o memorisanju podataka, koriste se 9-bitni SIMM-ovi (sa proverom parnosti) i 8-bitni SIMM-ovi (bez provere parnosti). Kolo za detekciju parnosti ne pripada SIMM plo~ici ali je deo ukupnog memorijskog sistema. Kao to se

Zbirka zadataka iz Mikroprocesorskih sistema

5-40

vidi sa Slike 5.41, za proveru parnosti koriste se pinovi 26, 28 i 29. Kod 8-bitnog SIMM-a pomenuti pinovi su tipa NC (not connected). S obzirom da 30-pinski SIMM-ovi koriste 8-bitnu magistralu za prenos podataka, za realizaciju jedne banke potrebno je ugraditi vei broj SIMM-ova. Tako na primer, kod 16-bitnih CPU-ova kakvi su 286 i 386SX potrebna su dva 30-pinska SIMM-a po banci. Kod 32-bitnih CPU-ova kakvi su 386DX i 486 potrebna su ~etiri 30-pinska SIMM-a po memorijskoj banci. Kod CPU-ova koji imaju 64-bitnu magistralu za podatke kakav je Pentium potrebno je ugraditi osam 30-pinskih SIMM-ova po memorijskoj banci. Ovaj broj je suvie veliki tako da se danas 30-pinski SIMM-ovi skoro i ne koriste. Izgled 72-pinskog SIMM pakovanja prikazan je na Slici 5.42. Kao to se vidi sa slike, prenos se vri po ~etiri bajta sa- i bez bita parnosti na nivou svakog bajta, tj. kada parnost nije implementirana prenose se 32 bita a kada je implementirana 36 bitova.

sa strane Slika 5.42 Izgled tampane plo~e za 8M*32 (32 MB) SIMM-a

Namena pinova SIMM-a sa Slike 5.42 je sledea:

5. Memorije

5-41

naziv pina namena

A0-A10 adresni ulazi CAS0-CAS2 strobe adresa kolone DQ0-DQ31 ulaz/izlaz podataka nc nije povezan PD1-PD4 PD1 - PD4 RAS0-RAS3 strobe adresa vrste Vcc 5V napajanje GND masa, tj. Vss WE dozvola upisa

detekcija prisutnosti

brzina PD1 PD2 PD3 PD4 (ns) (67) (68) (69) (70) 50 nc GND GND GND 60 nc GND nc nc 70 nc GND GND nc 80 nc GND nc GND

Kao to se vidi sa Slike 5.42 (pogled sa strane), memorijski ~ipovi kod ovog tipa SIMM pakovanja leme se sa obe strane tampane plo~e. Ilustracije radi na Slici 5.43 prikazano je ekvivalentno kolo 32MB SIMM pakovanja koje koristi memorijske ~ipove TM 893CBK 32 (8M*32) proizvod firme Texas Instruments.

Slika 5.43 Ekvivalentno kolo 32 MB SIMM (8M*32) bez provere parnosti

Zbirka zadataka iz Mikroprocesorskih sistema

5-42

Test pitanje 5.29 Ukazati na osnovne karakteristike pakovanja tipa DIMM.

Odgovor 72-pinska SIMM pakovanja su postala usko grlo kada su se na tr`itu pojavile PC maine zasnovane na procesorima Pentium i Pentium Pro. Imajui u vidu da su magistrale podataka kod ovih procesora 64-bitne neophodno je bilo ugaraditi dva SIMM-a po jednoj banci, upravo kako su svojevremeno maine zasnovane na CPU-u 486 zahtevale ugradnju ~etiri 30-pinska SIMM-a. Da bi se izalo na kraj zahtevima maina ~ija je magistrala podataka obima 64-bita projektanti memorijskih sistema razvili su memorijske module sa veim brojem veza koje dodatno omoguavaju i adresiranje veeg memorijskog prostora. Novi moduli imali su ukupno 168 razli~itih veza, po 84 sa svake od strane modula, a nazvani su DIMM-ovi. Na Slici 5.44 prikazan je izgled jednog tipi~nog 168-pinskog DIMM-a.

Slika 5.44 168 pinsko DIMM pakovanje

Kao to se vidi sa Slike 5.44, svaka strana konektora je podeljena na tri grupe medjusobno razdvojene procepima. Prvu grupu ~ine pinovi 1-10 (85-94) drugu grupu pinovi od 11-40 (86-116), a treu grupu pinovi 41-84 (116-168). Brzina odziva memorijskog modula signalizira se CPU-u preko pinova PD1-PD8 shodno sledeoj tabeli:

signal pin 60 ns 70 ns 80 ns PD1 79 L L L PD2 163 L L L PD3 80 H H H PD4 164 L L L PD5 81 L L L PD6 165 H L H PD7 82 H H L PD8 166 H H H

Veoma ~esto, kod minijaturnih verzija PC maina, umesto 72-pinskog SIMM pakovanja koristi se 72-vo pinsko SODIMM (Small Out line Dual In-line Memory Module) pakovanje (Slika 5.45).

Slika 5.45 72 pinsko DODIMM pakovanje

5. Memorije

5-43

U elektri~nom pogledu 72-pinsko SODIMM pakovanje ekvivalentno je 72-pinskom SIMM pakovanju. Svako SODIMM pakovanje ~ine ~etiri izdvojene banke koje omoguavaju da magistrala podataka bude obima 8, 16 ili 32 bita.

Test pitanje 5.30 Ukazati na osnovne karakteristike pakovanja tipa SIPP.

Odgovor SIPP (Single In-line Pin Package) moduli koriste pin-konektore. Izgled 30-pinskog SIPP memorijskog modula prikazan je na Slici 5.46

Slika 5.46 30-pinski SIPP modul

Izvodi konektora SIPP modula standardno su namenjeni za direktno lemljenje na tampanoj plo~i. Ne tako ~esto ovi moduli se instaliraju i u SIPP podno`ja.

U elektri~nom pogledu SIPP i SIMM pakovanja su identi~na, a sa funkcionalne ta~ke gledita ovi moduli se mogu realizovati od identi~nih memorijskih ~ipova, tehnologija i kapaciteta.

Test pitanje 5.31 Da li postoji standardna notacija na osnovu koje je mogue identifikovati tipove memorijskih ~ipova.

Odgovor Ne postoji jedinstveni standard na osnovu koga bi bilo mogue identifikovati tip memorijskog ~ipa. Ipak najvei broj proizvodja~a pridr`ava se sledeeg pravila

Zbirka zadataka iz Mikroprocesorskih sistema

5-44

WWW XX YYYY - ZZ gde je:

• WWW - kôd proizvodja~a

• XXX - identifikacija tipa memorije (EPROM, SRAM, DRAM itd)

• YYYY - kapacitet memorisanja u bitovima

• ZZ - vreme pristupa u nanosekundima

Tako na primer, ~ip MC 27256-10 identifikujemo kao:

• WWW = MC, kôd za Motorola Semiconductor

• XX = 27 kôd za EPROM, DRAM se identifikuje sa 41 ili 51, fle memorija sa 28, SRAM se ozna~ava sa 62 ili 7C

• YYYY = 256, ukupni kapacitet memorisanja ~ipa (256 kbita)

• ZZ = 10, vreme pristupa je 100 ns.

Na osnovu fabri~kog broja nemogue je identifikovati na koji na~in je organizovana memorija kapaciteta 256 kbita. Kada se govori o EPROM ~ipovima, oni su skoro uvek bajtovske organizacije, tako da u konkretnom slu~aju imamo ~ip 32 kB (32 k * 8 = 256 kbita).

Test pitanje 5.32 Koli~ina podataka (merena u bajtovima) koje procesor mo`e da prenese u toku jedne sekunde naziva se brzina prenosa podataka (DTR Data Transfer Rate), a izra~unava se kao:

magistraleciklusa jednog vreme

magistrale ciklusu jednom bajtova po prenetihbrojDTR = (1)

Vreme potrebno da se obavi jedan ciklus magistrale iznosi:

CM = n * Tcp = cpfn

(2)

gde: n - predstavlja broj sistemskih taktova po jednom ciklusu magistrale, Tcp - vreme trajanja spoljne taktne pobude magistrale, fcp - frekvencija takta magistrale.

Zamenom (2) u (1) dobijamo:

DTR =n

f * magistrale ciklusu jednom bajtova po prenetihbroj (3)

Odrediti DTR za CPU 8088 koji radi na frekvenciji 4,77 MHz i uporediti ovaj rezultat sa DTR-om mikroprocesora Pentium ~ija je taktna frekvencija magistrale 66 MHz.

Odgovor

suioda/prenotaktna per 4MHz 4,77 *bajt 1

DTR88 =

= 1,19 MB/s

suioda/prenotaktna per 2

MHz 66 *bajtova 8DTR PEN =

5. Memorije

5-45

= 264 MB/s

221=88

PEN

DTR

DTR

Ilustracije radi, u sledeoj tabeli prikazani su DTR-ovi za procesore iz familije Intel 80x86.

mikroprocesor obim magistrale (bajtovi)

broj prenetih bajtova po

memorijskom ciklusu

broj taktova po memorijskom

ciklusu

radna frekvencija magistrale

(MHz)

DTR1

(MB/s)

8088 1 1 4 8 2 8086 2 2 4 10 5 80386 4 4 2 33 66 80486 4 4 2 50 100 80486 4 16 5 50 1602

Pentium 8 8 2 66 264 Pentium 8 32 5 66 4223

Pentium 8 32 4 66 5284

Pentium Pro 8 8 2 66 264 Pentium Pro 8 32 5 66 4223

Pentium Pro 8 32 4 66 5284

Napomena: 1(DTR se izra~unava prema jedna~ini (3)) 2(2-1-1-1- burst na~in rada, podaci su poravnjani na 16-bajtovnim granicama, ciklus je tipa samo-~itanje, prenosi se 16 bajtova po ciklusu) 3(2-1-1-1- burst na~in rada, ciklus je tipa ~itanje ili upis, prenose se 32 bajta po ciklusu) 4(1-1-1-1- burst na~in rada, iskoriena je mogunost proto~no odredjivanje adresa).

Test pitanje 5.33 Na Slici 5.47 prikazani su vremenski dijagrami magistralnih ciklusa tipa Upis (Write) i ^itanje (Read) za mikroprocesore 8086 i 8088.

a) Shodno talasnim dijagramima prikazanim na Slici 5.47, dati kratak komentar koji se odnosi na cikluse ^itanje i Upis.

b) Ako vreme pristupa pristupa procesora definisano na slici 5.47 iznosi 2.3 TCPU, gde je TCPU= 209 ns, a vreme pristupa memoriji se nalazi u granicama od 200-300 ns odrediti da li e sistem korektno raditi bez ubacivanja stanja ~ekanja.

Odgovor a) komentar treba da dâ ~italac na osnovu analize vremenskih dijagrama; b) vreme pristupa procesora iznosi 2.3*209=481 ns, a to je du`e od 300 ns. Prema tome, nije potrebno ubacivati stanja ~ekanja.

Zbirka zadataka iz Mikroprocesorskih sistema

5-46

Slika 5.47 Vremenski dijagrami magistralnih ciklusa kod operacija tipa ^itanje i Upis za mikro-

procesore 8086 i 8088.

Test pitanje 5.34 Kada memorija ili U/I podsistem ne mo`e da dostavi podatke CPU-u brzinom sa kojom on to o~ekuje, sa ciljem da se uskladi brzina rada oba delova sistema, ubacuju se stanja ~ekanja. Na koji na~in se reava problem stanja-~ekanja?

Odgovor Globalno posmatrano, postoje sledea tri reenja za ovaj problem:

1. Smanjenje taktne frekvencije sistema

2. Ugradnja br`ih memorijskih ~ipova ili U/I jedinica

3. Programiranje memorijske jedinice (ili U/I podsistema) tako da, pri svakom pristupu memoriji (ili U/I podsistemu), izda zahtev za generisanjem stanja ~ekanja - obi~no se to izvodi signalom READY.

Test pitanje 5.35 Na Slici 5.48 prikazani su magistralni memorijski ciklusi ^itanje i Upis koji va`e za mikroprocesore 386, 486 i Pentium. Shodno talasnim dijagramima sa Slike 5.48, dati odgovarajui komentar.

5. Memorije

5-47

Slika 5.48 Talasni dijagram operacija ^itanje i Upis

Test pitanje 5.36 Na Slici 5.49 prikazano je procesorsko vreme pristupa memoriji za mikroprocesore iz familije 80x86. Odrediti:

(a) vreme trajanja taktne prirode procesora u ns;

(b) vreme trajanja pristupa procesora memoriju u ns.

Odgovor

spoljni takt vreme pristupa CPU-a memoriji

procesor frekvencija u MHz perioda u ns T stanja vreme u ns

8088 4,77 209 2.3 480,0

8086 10 100 2.3 230,0

80386 33 33 1.5 49,5

80486 50 20 1.5 30,0

Pentium 66 15 1.5 22,5

Pentium Pro 66 15 1.5 22,5

Slika 5.49 Vreme pristupa procesoru 80x86 memoriji

Napomena: Tamnije rafirani deo se odnosi na odgovor

Zbirka zadataka iz Mikroprocesorskih sistema

5-48

Test pitanje 5.37 Kada se govori o operaciji ^itanje ili Upis a re~ je o mikroprocesorima 486, Pentium i Pentium Pro ukazati na zna~enje pojma burst ciklus.

Odgovor Kao to se mo`e primetiti sa Slike 5.48, procesorima 386, 486 i Pentium, da bi preneli jedan podatak u toku operacije Upis ili ^itanje, potrebna su dva taktna intervala po magistralnom ciklusu. Po~ev od procesora 486 pa navie, implementiran je novi re`im rada nazvan burst bus ciklus. Sutina se sastoji u sledeem: Prvi burst bus ciklus karakterie trajanje od 2T ciklusa magistrale, ali zato, svaki naredni ciklus magistrale trajanja je samo T. Na ovaj na~in brzina prenosa podataka se duplira u odnosu na nonburst na~in rada. Primarni cilj burst na~ina rada je da obezbedi to je mogue br`e popunjavanje interne procesorske ke memorije. U sutini, burst ciklusi se mogu implementirati za bilo koji pristup memoriji. Ograni~enja koja va`e su sledea:

(1) Kod mikroprocesora 486, ciklus je ograni~en na prenos od samo 16 bajtova (obim jedne linije ke memorije) po burst ciklusu. Kod 16-bajtnog poravnjanja podaci pripadaju memorijskoj oblasti po~ev od adrese XXXX XXX0 do XXXX XXXF. U okviru ove oblasti mogua su sledea ~etiri burst redosleda (a) 0-4-8-C; (b) 4-0-C-8; (c) 8-C-0-4; i (d) C-8-4-0. Na primer, za prenos 16 bajtova u burst re`imu rada po~ev od adrese 0000 0100 potrebna su ~etiri ciklusa magistrale. Jedna od moguih sekvenci je:

ciklus 1 - bajtovi 100 - 103

ciklus 2 - bajtovi 104 - 107

ciklus 3 - bajtovi 108 - 10B

ciklus 4 - bajtovi 10C - 10F

(2) Kod mikroprocesora Pentium u toku burst ciklusa prenose se 32 bajta (odgovara obimu linije internog kea). U ovom slu~aju, takodje, svi podaci koji se prenose moraju da se nalaze u okviru granica po~ev od adrese XXXX XXX0 do adrese XXXX XX1F. Ponovo su mogua ~etiri burst redosleda (a) 0-8-10-18; (b) 8-0-18-10; (c) 10-18-0-8; (d) 18-1-8-0.

(3) Kod mikroprocesora 486 burst ciklusi tipa Upis nisu dozvoljeni, dok su kod Pentiuma dozvoljena oba, kako burst Upis, tako i burst ^itanje.

Za prenos podataka u burst na~inu rada potrebna su ~etiri ciklusa magistrale. Oni se ozna~avaju kao 2-1-1-1. To zna~i da prvi ciklus magistrale traje 2T, a ostala tri ciklusa 1 T. Koristei adresnu proto~nost (address pipelining), kada se memorijska adresa generie pre po~etka magistralnog ciklusa u toku koga se vri prenos podataka, procesor Pentium mo`e da generie burst cikluse tipa 1-1-1-1.

Zadatak 5.18 Na Slici 5.50 prikazan je memorijski interfejs koji odgovara memorijskoj mapi sa Slike 5.51. Kao dekoder adresa se koristi programibilno kolo PAL 16L8.

Kreirati izvorni kôd za PAL adresni dekoder.

5. Memorije

5-49

256K x 8RAM

RDWR

CE

RAM 0

256K x 8RAM

RDWR

CE

RAM 1

256K x 8RAM

RDWR

CE

RAM 2

64K x 8RAM

RD

CE

ROM 0

64K x 8RAM

RD

CE

ROM 1

20 19 18 17 16 15 14 13 12 11

1 2 3 4 5 6 7 8 9 10

PAL16L8

8088CPU

modulA0-A17 A0-A17 A0-A15 A0-A15

A16A17A18A19IOM

D7-D0

A0-A17

RAM0

RAM1 RAM2

ROM0ROM1

+5V

Slika 5.50 Memorijski interfejs

ROM164K

ROM064K

RAM2256K

RAM1256K

RAM0256K

1 MB

FFFFFF0000

E0000

C0000

80000

40000

00000

Slika 5.51 Memorijska mapa

Zadatak 5.19 32-bitni memorijski interfejs koji podr`ava memoriju kapaciteta YYY MB je prikazan na Slici 5.52. Njega ~ine osam SIMM-ova kapaciteta ZZ MB (SIMM0-7), i kolo Ul tipa 74LS138 kao 3-u-8 linijski dekoder. Svaki SIMM ima ugra|eno po ~etiri memorijska modula. Kapacitet svakog memorijskog modula je 4 MB. Odrediti:

(a) kapacitet memorijskog interfejsa YYY izra`en u MB

(b) kapacitet jednog SIMM pakovanja ZZ izra`en u MB

(c) za koji adresni opseg je va`ei svaki od osam izlaza adresnog dekodera U1

Zbirka zadataka iz Mikroprocesorskih sistema

5-50

(d) rad sa koliko memorijskih interfejsa kao onaj sa Slike 5.52 podr`ava sistem

(e) nacrtati memorijsku mapu i nazna~iti mesta gde se preslikavaju SIMM0 do SIMM7.

Slika 5.52 Memorijsko polje koga ~ini osam SIMM-ova

Deo odgovora: Izlazi dekodera U1, “0” do “7”, aktiviraju se shodno sledeoj tabeli:

izlaz opseg adresa “0” 0000 0000 - 00FF FFFF “1” 0100 0000 - 01FF FFFF “2” 0200 0000 - 02FF FFFF “3” 0300 0000 - 03FF FFFF “4” 0400 0000 - 04FF FFFF “5” 0500 0000 - 05FF FFFF “6” 0600 0000 - 06FF FFFF “7” 0700 0000 - 07FF FFFF

5. Memorije

5-51

A31 A30 A29 28 A27 A26 A25 A24 A23 A22 A3 A2 BE3 BE2 BE1 BE0

Korienje adresnih- i BE linija za adresiranje memorije kapaciteta 128 MB

Ovih pet linija moraju biti na “niskom”kako bi se dozvolio rad dekodera

Ove tri linije selektuju jedanod osam SIMM-ova

Ove 22 linije selektuju jedan bajt usvakom 4 MB x 8 DRAM-u, svakog

SIMM-a

Ove ~etiri linije selektuju bajt, re~ili duplu re~ (preko ~etiri DRAM

modula na svakom SIMM-u)

SIMM7

SIMM6

SIMM5

SIMM4

SIMM3

SIMM2

SIMM1

SIMM0

FFFFFFFF

F8000000

10000000

08000000

00000000

A27-A31 = 11111

A27-A31 = 00001

A27-A31 = 0000016 MB

128 MB

Zadatak 5.20 Struktura 32-bitnog memorijskog SRAM interfejsa prikazana je na Slici 5.53. Sistem je zasnovan na procesoru 386/486. Odredi:

(a) kapacitet interfejsa

(b) strukturu dekodera adresa (logi~ku emu), ako se memorijski interfejs preslikava na dno fizi~ke memorije tj. po~ev od adrese 0000 0000.

(c) koja je krajnja adresa zadnjeg bajta ovog interfejsa, i u kom je ~ipu smeten ovaj bajt?

Zbirka zadataka iz Mikroprocesorskih sistema

5-52

D0-D7

A0-A15

CS2

WE OE CS1

D0-D7

A0-A15

CS2

WE OE CS1

D0-D7

A0-A15

CS2

WE OE CS1

D0-D7

A0-A15

CS2

WE OE CS1

BE0

Dekoder

BE1 BE2 BE3

Selekcija memorije

+5V +5V +5V +5V

SRAM-A SRAM-B SRAM-C SRAM-D

MEMWMEMR

D0-D7

Upravlja~kamagistrala

A2-A17

D8-D15

D16-D23

D24-D31

Magistralapodataka

Adresnamagistrala

Slika 5.53 32-bitni memorijski SRAM interfejs

Test pitanje 5.38 Usvojimo da je CS = FF25h. Odrediti najviu i najni`u fizi~ku adresu za memorijski prostor koga adresiraju mikroprocesori: (a) 8088/86 (b) 80286 Specificirati sadr`aj bita A20.

Odgovor (a) najni`a fizi~ka adresa je FF250 h, a najvia 0F24F h (FF250 h + FFFF h). S obzirom da kod procesora 8088/86 postoje samo adresne linije A0-A19, prenos kod operacije sabiranja adresa se zanemaruje.

(b) kod 286 najni`a fizi~ka adresa je identi~na kao i kod 8088/86 i iznosi FF 250 h, ali je najvia fizi~ka adresa 10 F24F h pa je zbog toga A20 = 1.

Test pitanje 5.39

Za UV - EPROM ~ip 27128 odrediti kapacitet, organizaciju, broj adresnih pinova kao i broj pinova za podatke.

Odgovor Kapacitet ~ipa 27128 je 128 kb. Organizacija EPROM ~ipova je YY k * 8. To zna~i, za konkretni slu~aj, da je organizacija ~ipa 16k*8, to ukazuje da je broj pinova za podatke 8, a broj adresnih pinova 14, tj. 214 = 16k.

Test pitanje 5.40 Koliko je adresnih pinova dodeljeno svakom od memorijskih ~ipova:

5. Memorije

5-53

(a) 16k * 4 DRAM

(b) 16k * 4 SRAM

Odgovor Broj adresa je 14 s obzirom da je 214 = 16k a) kod DRAM-a postoje 7 adresnih pinova (A0 - A6) i dva pina za RAS i CAS b) kod SRAM-a postoje 14 adresnih pinova A0 - A13 Broj linija za podatke kod obe memorije, DRAM i SRAM, je identi~an i iznosi 4, tj. D0 - D3.

Test pitanje 5.41 Talasni dijagrami koji va`e kod operacije ^itanje SRAM-a i DRAM-a (standardni model) prikazani su na Slici 5.54.

a) vremenski dijagrami koji se odnose na operaciju ^itanje, kod SRAM-a, predstavljeni su na Slici 5.54 a).

Uporediti minimalna CPU-ova vremena potrebna da se pro~itaju 150 proizvoljnih memorijskih lokacija date banke, za sledee slu~ajeve:

i) DRAM sa tACC = 100 ns i tRC = 190 ns

ii) SRAM sa tACC = 100 ns

Odgovor i) DRAM-u je potrebno 190 ns da pristupi svakoj lokaciji. Zbog toga ukupno je potrebno 150

* 190 = 28,500 ns

ii) U slu~aju SRAM-a potrebno je vreme od 150 * 100 = 15.000 ns.

Test pitanje 5.42 Jedan od na~ina da se eliminie uticaj tRP (RAS precharge time) vremena kod DRAM-ova je korienje interleaving metode. Kod ove metode, jedna pored druge se postavljaju dve banke, a CPU pristupa svakoj banci alternativno. Na ovaj na~in tRP vreme jednog skupa banaka se preklapa sa vremenom pristupa drugoj banci. To zna~i da dok CPU pristupa jednom skupu banaka, drugi skup se ponovo puni (precharge). Da bi objasnili princip analizirajmo Slici 5.55.

Ako usvojimo da 80386SX radi na 20 MHz, memorijski ciklus CPU-a bie 100 ns, tj. trajanje dva taktna intervala. Pod uslovom da je instaliran DRAM ~ije je vreme pristupa 70 ns a precharge vreme 65 tada dobiemo da je vreme ciklusa DRAM-a 135 ns, to je znatno du`e od 100 ns koliko traje memorijski ciklus CPU-a. Ovaj problem se reava korienjem interleaving-a memorije. U konkretnom slu~aju nakon to je CPU 80386SX pristupio skupu A on prelazi na pristup skupu B dok za skup A se odvija akcija precharge. Na sli~an na~in, dok procesor pristupa skupu A, za skup banaka B se odvija akcija precharge.

b) odrediti vreme pristupa 1024 proizvoljnim bitovima kod memorije kapaciteta 1M * 1 pri tRAC = 85 ns, a tRC = 165 ns.

c) odrediti vreme pristupa svim 1024 memorijskim lokacijama ako se koristi metod interleaving-a memorije.

Zbirka zadataka iz Mikroprocesorskih sistema

5-54

va`ea adresa

tRC

adrese

RD

tAC

a) vremenski dijagrami operacije ~itanja kod SRAM-a

tRAC - vreme pristupa od RAS

tCAC - vreme pristupa od CAS

tRC- vreme trajanja ciklusa ~itanja

tRP - RAS precharge vreme

b) talasni dijagrami koji se odnose na operaciju ^itanje, kod DRAM-ova, predstavljeni su na Slici

5.54 b).

tRC

adrese

RAS

tRAC

tRAC - vreme pristupa od RAStCAC - vreme pristupa od CAStRC - vreme trajanja ciklusa ~itanjatRP - RAS precharge vreme

b) vremenski dijagrami operacije ~itanja kod DRAM-a

tRP

podaci

CAS

tCAC

Slika 5.54 Vremenski dijagrami kod DRAM-ova i SRAM-ova

5. Memorije

5-55

00030007000B

00020002000A

skup B

8 8

D15-D8 D7-D0

000100050009

000000040008

skup A

8 8

D15-D8 D7-D0

Slika 5.55 DRAM interleaving organizacija

Odgovor a) vreme potrebno da se pro~itaju sve 1024 lokacije iznosi: t

S = 1024 * tRC

= 1024 * 165 ns = 168.960 ns b) Kada se koristi interleaving, tada vreme potrebno da se pro~ita svih 1024 lokacija iznosi: t’

S = 1024 * tRAC

= 1024 * 85 ns

= 87.040 ns

Test pitanje 5.43 Na koji na~in su organizovane memorijske elije kod sledeih DRAM ~ipova:

(a) 256 k * 1 (b) 1 M * 1 (c) 4 M * 1

Odgovor a) Memorija kapaciteta 256 k * 1 ima 9 adresnih pinova (A0 - A8), a elije su organizovane u obliku matrice 29 * 29 = 512 * 512, tj. 512 vrsta od kojih svaka ima 512 kolona elija.

b) 1024 * 1024

c) 2048 * 2048

Test pitanje 5.44 Neka DRAM-ovi tipa : (a) 256k*1; (b) 1M*1; (c) 4M*1; rade u strani~nom na~inu (re`imu) rada (page mode). Pokazati na koji na~in je svaki ~ip organizovan u stranice. Odrediti broj kolona po stranici za slu~ajeve pod (a), (b) i (c).

Zbirka zadataka iz Mikroprocesorskih sistema

5-56

Odgovor (a) za 1 M * 1 imamo 512 stranica, pri ~emu svaka stranica ima 512 kolona elija (b) 1024 stranica, gde svaka stranica ima 1024 bitova, tj. kolona (c) 2048 stranica svaka po 2048 bitova

Test pitanje 5.45 Odrediti ukupno vreme koje CPU potroi da bi pristupio celoj stranici memorije ako memorijske banke rade u strani~nom na~inu rada, za slu~aj da je DRAM kapaciteta 1 M * 1 a tRC = 165 ns, tRAC = 85 ns, a tPC = 50 ns. Odgovor U strani~nom na~inu rada, da bi se pro~italo 1024 bitova, porebno je vreme od:

ts = tRAC + 1023 * tPC

= 85 ns + 1023 * 50 ns

= 51.235 ns.

Napomena: Videti vremenske dijagrame u koji su prikazani na slici 5.56

Test pitanje 5.46 Na Slici 5.56 prikazani su talasni dijagrami koji va`e za a) page mode, b) static column mode; c) nibble mode. Dati komentar i ukazati kako se ra~una ukupno vreme prenosa podatka izme|u CPU-a i memorije.

Test pitanje 5.47 Odrediti ukupno vreme koje je potrebno CPU-u da pristupi celoj stranici memorije ako memorijske banke koriste static-column mode, a DRAM-ovi su kapaciteta 1 M * 1 sa tRC = 165 ns, tRAC = 85 ns, i tSC = 50 ns.

Odgovor t

S = tRAC + 1023 * tSC

= 85 + 1023 * 50 ns = 51,235 ns. Test pitanje 5.48 Odrediti ukupno vreme koje je CPU-u potrebno da pristupi: (a) 4 bita kod nibble mode DRAM-a (b) svim 1024 bita kod nibble mode DRAM-a ako je tRAC = 85 ns, tNC = 85 ns, tRP = 70 ns.

Odgovor a) Da bi pristupio 4 bita u nibble mode potrebno je t4N = tRAC + 3 tNC = 85 + 3 * 40 ns = 205 ns.

5. Memorije

5-57

Slika 5.56 Re`imi rada DRAM-a

b) Da bi pristupio svim 1024 bita koriste se 256 pristupa kod 4 nibble mode, tako da je ukupno vreme

t4N = 256 (tRAC + 3 tNC + tRP)

= 256 (85 + 3 * 40 + 70)

= 70.400 ns.

Napomena: Za definiciju tRP videti Sliku 5.54 b).

Zbirka zadataka iz Mikroprocesorskih sistema

5-58

Zadatak 5.21 Koristei kataloke podatke za 1 M * 1 DRAM ~ip, date na Slici 5.57, odrediti potrebno vreme da se pristupi 4 bita za sledee re`ime rada:

(a) standard mode

(b) page mode

(c) static column mode

Uporediti rezultate sa onim dobijenim u prethodnom test pitanju koji va`i za nibble mode DRAM.

Vreme pristupa (ns) Standard Page Static Column Nibble

Access time from row, tRAC 85 85 85 85

Access time from column, tCAC 25

Access time from column, tAA 45

Access time from column, tNC 20

Vreme ciklusa

Read cycle time, tRC 165

Page mode cycle time, tPC 50

Static column time, tSC 50

Nibble mode cycle time, tNC 40

Slika 5.57 Karakteristika 1 M * 1 DRAM ~ipa

Odgovor Ozna~imo sa t4xx vreme potrebno da se pro~itaju 4 bita u odgovarajuem re`imu rada.

(a) za Standard mode:

t4sm = 4 tRC = 4 * 165 = 660 ns

(b) za Page mode:

t4pm = tRAC + 3 tPC = 85 + 3 * 50 = 235 ns

(c) za Static column mode:

t4sc = tRAC + tSC = 85 + 3 * 50 = 235 ns

(d) kod Nibble mode imali smo t4Nm = 205 ns

Test pitanje 5.49 Ukazati na osnovne fizi~ke razlike izmedju sledeih tipova memorijskih tehnologija: SRAM, fle memorije, magnetni flopi disk, opti~ki hard disk, i CD-ROM.

Odgovor Osnovne karakteristike SRAM-a, Fle memorije, magnetnog flopi diska, opti~kog hard diska, i CD ROM-a prikazane su u sledeoj tabeli:

5. Memorije

5-59

tehnologija medijum memorisanja

metod pristupa

izmenljivost permanentnost vreme pristupa

SRAM elektronski proizvoljan ~itanje/upis NDRO, gubi se sadr`aj

(5-20) ns

fle memorija

elektronski proizvoljan ~itanje re~i/ upis bloka

NDRO, gubi se sadr`aj

(50-100) ns

magnetni flopi disk

magnetni serijski ~itanje bloka/ upis bloka

NDRO, gubi se sadr`aj

(10-50) ns

opti~ki hard disk

opti~ki serijski ~itanje bloka/ upis bloka

NDRO, gubi se sadr`aj

(50-100) ns

CD-ROM opti~ki serijski ~itanje bloka/ upis bloka

NDRO, gubi se sadr`aj

(50-100) ns

Napomena: NDRO - ne destruktivno ~itanje (non destructive readout) Zadatak 5.22 RAM prostor veli~ine 128 MB je projektovan od RAM ~ipova kapaciteta 2 N * 4-bita. Usvojimo da se kao dekoderi adresa koriste integrisani dekoderski ~ipovi tipa 1-izlaz-od 2k, gde je k < 3, kao i ostala standardna logi~ka kola, ako je potrebno. Glavni cilj projektanata je da u svom reenju ugradi minimalan broj integrisanih kola.

(a) Pokazati kako izgleda reenje memorijskog podsistema, ako usvojimo da svaki RAM ~ip kapaciteta 2M*4 bita, ima jedinstvenu ~ip selekt liniju. Ponuditi reenje ~ija je struktura sli~na onoj koja je prikazana na Slici 5.58 ili Slici 5.59.

(b) Ako svaki RAM ~ip ima dve ~ip selekt linije CS1 = CS2 = 1 pokazati kakva je slo`enost memorijskog sistema

2m wRAM

CS WE OE

2m wRAM

CS WE OE

2m wRAM

CS WE OE

2m wRAM

CS WE OE

w w w

4w

podaci D

madresa A

CS WE OE

Upravlja~kelinije

Slika 5.58. Poveanje obima re~i RAM-a za ~etiri puta

Odgovor (a) RAM veli~ine 128 MB se mo`e realizovati kao 64M * 2 * 8 bitova, tj. pomou polja RAM

~ipova. Ukupan broj adresa koji nam stoji na raspolaganju je 27. To su adrese od: A26 : A0. Dekoder tipa 1/64 je potrebno ugraditi radi za dekodiranja MS adresnih bitova A26 : A21 sa ciljem da se pristupi adresama vrsta. Ovakav dekoder se mo`e realizovati u dva nivoa pomou devet dekodera adresa tipa 1-od-8 izlaza. Svaki izlaz rezultujueg dekodera je povezan na CS

Zbirka zadataka iz Mikroprocesorskih sistema

5-60

ulaze RAM modula Mij . RAM modul Mi,j ~ine dva RAM ~ipa kapaciteta 2M*4bita. Ako usvojimo da dodatni drajveri nisu potrebni, tada ceo memorijski sistem ~ine devet dekodera i 128 RAM ~ipova (Slika 5.60). Na Slici 5.60 prikazan je detalj organizacije memorijskog bloka Mij koji odgovara organizaciji prikazanoj na Slici 5.58. ^italac treba da poka`e da li se mo`e /koristiti reenje koje se zasniva na organizaciji sa Slike 5.59.

2m wRAM

CS WE OE

2m wRAM

CS WE OE

2m wRAM

CS WE OE

2m wRAM

CS WE OE

w

w podaci D

adresa A

~ip selekt

dozvola upisa

izlaz

w

w

2

mm+2

w

dekoder“1_od_~etiri”

E

Slika 5.59 Poveanje broja re~i koje se ~uvaju u RAM-u za faktor ~etiri

Napomena: 2m*w = 2M*4

Jevtinije reenje se dobija ako svaki RAM ~ip ima izvedeno dva ~ip selekta. U tom slu~aju se RAM prostor mo`e oganizovati kako je prikazano na Slici 5.61. Konkretna realizacija zahteva ugradnju samo dva dekodera tipa 1-od-8-izlaza. Dekoder D1 se koristi da adresira osam vrsta a dekoder D2 osam kolona.

5. Memorije

5-61

.

.

....

.

.

.

. . .CS00

M00

CS01

M01

CS07

M07

01

D1

G7

A23A22A21

01

D2

G7

CS10

M10

CS11

M11

CS17

M17

.

.

.

A23A22A21

. . .

.

.

.01

D8

G7

CS70

M70

CS71

M71

CS77

M77

.

.

.

A23A22A21

. . .

01

D1

G7

A26A25A24

2M*4 2M*4

4 48

CSWEOE

adreseA20:A0

podaci

Slika 5.60 2D organizacija memorijskog prostora veli~ine 128 MB koji koristi memorijske ~ipove sa jedinstvenim CS kapaciteta 2 M * 4

Napomena: Detalji koji se odnose na definisanje stanja signala WE i OE (slika 5.58 i 5.59 nisu prikazani na slici 5.60

Zadatak 5.23 Koristei DRAM memorijski ~ip kapaciteta 8 M * 8 bitova kao osnovnu komponentu (Slika 5.62), projektovati memorijski sistem veli~ine 256 M * 32 bita. Za formiranje memorijskih blokova veeg kapaciteta koristiti eme prikazane na slikama 5.58 i slici 5.59.

Zbirka zadataka iz Mikroprocesorskih sistema

5-62

M00 M01 M02 M03 M04 M05 M06 M07

M10 M11 M12 M13 M14 M15 M16 M17

M20 M21 M22 M23 M24 M25 M26 M27

M30 M31 M32 M33 M34 M35 M36 M37

M40 M41 M42 M43 M44 M45 M46 M47

M50 M51 M52 M53 M54 M55 M56 M57

M60 M61 M62 M63 M64 M65 M66 M67

M70 M71 M72 M73 M74 M75 M76 M77

1/8 dekoderza CS2

1/8dekoderza CS1

3

3

6

A26:A21

CS1

CS1

A23:A21

A26:A24

Slika 5.61 Organizacija RAM prostora veli~ine 128 MB u formi 2D-polja kada RAM ~ipovi imaju

dve ~ip selekt linije

Logika zasinhronizaciju i

osve`avanje

Interniupravlja~ki

signali

8

MagistralapodatakaD0:D7

Bafer podataka

8192x1024x8polje memorijskih

elija

Dekoderadresevrste

Dekoder adresakolona

Baferadresakolona1013

13

Baferadresevrste

Adresnamagistrala

RAS CAS WE OE

Slika 5.62 Struktura memorijskog DRAM ~ipa kapaciteta 8 MB

5. Memorije

5-63

Odgovor Za realizaciju memorijskog prostora veli~ine 256 M * 32 bita pomou DRAM ~ipova obima 8 M * 8 bitova potrebno je ugraditi:

1288

328

256=*

kopija DRAM integrisanih kola sa Slike 5.62, koristei pri tome organizaciju koja je prikazana na slici 5.58. Da bi se zadovoljile potrebe koje se odnose na veli~inu adresnog prostora treba koristiti adresni dekoder tipa 1-od-32-izlaz.a Reenje koje se odnosi na organizaciju memorijskog prostora veli~ine 256M*32bita prikazana je na Slici 5.63.

8Mx8b RAMA DQ

RAS

CAS WE OE

8Mx8b RAMA DQ

RAS

CAS WE OE

8Mx8b RAMA DQ

RAS

CAS WE OE

32

32

32podaci D

012

3031

E

~ip selekt

adresa A0 A12

adresa A13:A175

13

RAS

CAS

dozvola upisa WEdozvola izlaza

Slika 5.63 256M * 32 bitna organizacija memorije zasnovana na DRAM ~ipu kapaciteta 8 M * 8 bita

^italac treba da obrati pa`nju na na~in multipleksiranja RAS i CAS signala pomou dvo-ulaznih OR logi~kih kola. Reenje prikazano na Slici 5.63 karakteristi~no je i po tome to je ceo RAM prostor organizovan kao 1D umesto 2D polje.

Test pitanje 5.50 Za DRAM ~ip kapaciteta 8M*8 ~ija je struktura prikazana na slici 5.62 odrediti koje je minimalno vreme potrebno da se pro~itaju sadr`aji svih adresibilnih lokacija memorije: (a) Kada se adrese generiu u proizvoljnoj sekvenci,

Zbirka zadataka iz Mikroprocesorskih sistema

5-64

(b) Kada se koristi page mode.

Napomena: (i) trajanje ciklusa ~itanja kod generisanja proizvoljnog niza adresa iznosi 90 ns; (ii) u page mode vreme prenosa jednog podatka iznosi 30 ns.

Odgovor (a) Broj lokacija DRAM-a sa Slike 5.62 iznosi 223 = 8 M. Vreme potrebno da se pro~itaju sve lokacije je:

TR = 223 * 90 ns = 0,755 s

(b) u page mode-u, u okviru jedne stranice postoje 1024 pristupa, a broj stranica je 8192, tako da je ukupno vreme:

TS = (1024 * 30) * 8192 = 0,254 s

Zadatak 5.24

Potrebno je projektovati RAM prostor kapaciteta 16 MB. Projektant na raspolaganju ima sledea tri DRAM ~ipa ~ija je opta struktura prikazana na Slici 5.64.

tip kapacitet cena po ~ipu

1 4 M * 1 bit 22 din

2 1 M * 2 bita 10 din

3 256 k * 8 bitova 4,5 din

Cena ostalih kola, - komponenata (tampana plo~a, konektori i dr) koje se ugradjuju u memorijski sistem, izra~unava se indirektno kao: Cost. = x + 10 y (dinara) gde su:

x - broj ugradjenih RAM ~ipova y - broj adresnih bitova koje treba dekodirati spolja

Odrediti koja e ugradnja (tip DRAM ~ipova) rezultirati minimalnom cenom memorije.

RAM2m w

CS WE OE

wmadresa A

OE - dozvola izlazaCS - ~ip selekt

WE - dozvola upisa

Slika 5.64 RAM komponenta

5. Memorije

5-65

Odgovor tip memorije broj mem.

~ipova cena mem.

~ip. tip dekodera cena pristupa ukupna cena

4 M*1 b 32 32*22 = 704 1-od-2 32+20=52 704+52=756

1 M*2 b 64 64*10 = 640 1-od-16 64+40=104 640+104=744

256 k *4 b 128 128*4,5 =576 1-od-64 128+60=186 576+186=762

Na osnovu dobijenih vrednosti, zaklju~ujemo da je najjeftinije ugraditi ~ipove tipa 1 M * 2 bita

Test pitanje 5.51 Odredjeni broj DRAM-ova kapaciteta 1 M * 16 bitova koristi ~etvorostruki adresni interleaving radi pristupa memorijskim bankama M0, M1, M2 i M3.

(a) Identifikovati banke kojima se vri pristup na osnovu sledee ~etiri adrese: 01234, ABCDE, 91272 i FFFFF.

(b) Ako je jedna od memorijskih banaka zauzeta, koja je verovatnoa da e zahtev biti zakanjen (odlo`en) zbog sudara kod pristupa toj banci?

Odgovor Na osnovu vrednosti dva LS bita odredjuje se kojoj se banci pristupa. a)

heksadecimalna adresa binarna adresa banka kojoj se pristupa

01234 0000...0100 M0

ABCDE 1010...1110 M2

91272 1001...0010 M2

FFFFF 1111..1111 M3

b) Verovatnoa sudara zbog pristupa toj banci je 1/4 = 0,25.

Test pitanje 5.52 Magnetni disk ima sledee karakteristike:

• broj pisti na povrini zapisa 200

• rotacija diska 2400 obrtaja/minuti

• kapacitet memorisanja po pisti 62500 bitova/in~

Proceni prose~nu latentnost kod prenosa podataka ka/od diska.

Napomena: 1 in~ = 2,54 cm

Odgovor Prose~na latencija tL je vreme potrebno da se disk zaokrene za polovinu kruga, a u konkretnom slu~aju iznosi:

Zbirka zadataka iz Mikroprocesorskih sistema

5-66

ms5122400

50,

,t L ==

Brzina prenosa podataka iznosi:

bit/s2,54

000000262,54

62500*40

2,5462500

*60

2400v ===

Test pitanje 5.52 Za odredjeni magnetni hard disk definisani su sledei parametri:

• broj diskova (povrine na kojima se vri zapis) 14(27)

• broj pisti po povrini zapisa 4925

• ukupan broj sektora na svim povrinama za zapis 17,755,614

• formatirani kapacitet diska 9.09 GB

• brzina rotacije diska 5400 obr./min

• prose~no vreme pozicioniranja glave diska na pistu (seek time) 11,5 ms

• interna brzina prenosa podataka 44-65 MB/s

Odrediti veli~inu bloka (sektora) podataka BP i prose~no vreme pristupa bloku podataka tB.

Odgovor Veli~ina sektora se dobija kao:

bajtova 512

,10*9,09

zapisza a povrinamsvimna sektora broj ukupnidiska kapacitetiformatiran

BP

9

=

=

=

6175517

Prose~no vreme pristupa tB predstavlja zbir prose~nog vremena pozicioniranja ana pisti tS, prose~ne rotacione latentnosti tL, i prose~nog vremena prenosa jednog bloka.

U konkretnom slu~aju imamo da je:

• tS = 11,5 ms

• rotaciona brzina

obr/s 9060

5400r == = 0,09 obr/ms

s 5,560,09*21

t L ==

• prose~na interna brzina prenosa je

55 MB/s => 55 kB/ms

za prenos jednog bloka (sektora) potrebno je interno vreme:

ms ,055000

bajtova 512t I 01==

5. Memorije

5-67

Prose~no vreme pristupa:

tBP= tS + tL + tI

= 11,5 + 5,56 + 0,01

= 17,07 ms

Zadatak 5.25 Vreme pozicioniranja magnetne glave diska zavisi od toga koliko se brzo vri pomeranje upisno-~itajue glave sa jedne piste na drugu. Usvojimo da je: (i) ukupan broj pisti N i da su one numerisane od 0 do N-1; (ii) upisno-~itajuoj glavi potrebno je vreme Dt da se pomeri sa piste i na pistu i ± D, tj za D pisti.

Shodno prethodnom, ako se prvo pristupalo pisti i a nakon toga sledi pristup pisti j = i ± D, vreme pozicioniranja glave kod narednog pristupa iznosi Dt. Najkrae vreme pozicioniranja glave je 0 a najdu`e Nt. Postavlja se sledee pitanje: Koliko je prose~no vreme pozicioniranja glave na pistu tS u funkciji N i t? Ako usvojimo da se pistama pristupa po proizvoljnom (slu~ajnom) redosledu, pokazati da je tS ≈Nt/3; to zna~i da je prose~no vreme pristupa pisti pribli`no jednako vremenu da se upisno-~itajua glava pomeri za treinu od ukupnog broja pisti.

Izvedi dokaz na primeru N = 8.

Odgovor Za N = 8 formirajmo matricu oblika 8 * 8, za sve 64 (i, j) kombinacije:

pista j

pista i 0 1 2 3 4 5 6 7

0 0 1 2 3 4 5 6 7

1 1 0 1 2 3 4 5 6

2 2 1 0 1 2 3 4 5

3 3 2 1 0 1 2 3 4

4 4 3 2 1 0 1 2 3

5 5 4 3 2 1 0 1 2

6 6 5 4 3 2 1 0 1

7 7 6 5 4 3 2 1 0

Suma svih 64 ulaza je 168, tako da je:

625,264

168Dsred ==

Vrednost 2,625 je veoma blizu vrednosti 8/3.

Da bi generalizovali postupak analizirajmo ponovo prethodnu tabelu. Analizu emo po~eti od glavne dijagonale, i ii prema gornjim i donjim dijagonalama.

Prvo, na glavnoj dijagonali su sve nule. Dijagonala ispod glavne dijagonale ima sedam jedinica, ona ispod subdijagonale est dvojki, i td. To zna~i da je zbir ulaza ispod glavne dijagonale:

Zbirka zadataka iz Mikroprocesorskih sistema

5-68

1(N-1)+2(N-2)+3(N-3)+...+1(N-1)= ( )∑−

=

−1N

1i

iN*i

Ulazi iznad glavne dijagonale imaju isti oblik, a to zna~i da je njihov zbir (suma) identi~an kao i prethodna suma. Na osnovu prethodnog, imamo da je:

( )

∑∑

=

=

=

−=

=−

=

1N

1i

22

1N

1i

2

1N

1isred

iN2

iN2

2,6N

iN*i*2D 25

(1)

Kako va`i, u optem slu~aju

( )

21nn

in

1i

+=∑

=

(2)

i:

( )( )

612n1nn

in

1i

2 ++=∑

=

(3)

zamenom (2) i (3) u (1) dobijamo:

( ) ( )( )

612N1NN

N2

21NN

N2

D2sred

−−+

−=

3N

13N2N1ND

2

sred

−−−−=

3N1

3N

Dsred −=

3N

Dlim sred =>− αN

Zbog ovoga:

3

NDt t

sredts ≈=

Proverom za N = 8 imamo

2,625241

38

3N1

3N

=−=−

a to odgovara vrednosti dobijenoj iz tabele.

Test pitanje 5.53

Magnetna traka je du`ine 800 m. Zapis na traci se vri po 9 pisti. Traka prolazi ispod glave za zapis brzinom od 500 cm/s. Kolika treba da je linearna gustina zapisa na traci ako `elimo da ostvarimo brzinu prenosa od 107 bita/s? (b) Usvojimo da su podaci na traci organizovani u blokove veli~ine 32 kB. Razmak izmedju dva bloka je 1 cm. Koliko bajtova je mogue memorisati na traci?

5. Memorije

5-69

Odgovor a) Gustina zapisa D jednaka je:

traketanja brzina krebajtovima uaka nosa podatbrzina pre

D =

bajta/cm *,*500*8

10D

73

3

7

1052104

10===

b) du`ina svakog 32 kB-nog bloka podataka je

cm 12,810*2,510*32

3

3

≈=l

Maksimalan broj bajtova koji mo`e da se memorie na traci du`ine 800 m, pod uslovom da se ceo dostupan prostor koristi za memorisanje podataka, izra~unava se kao:

blokova izm.razmak bloka jednogdu`ina trakedu`ina ukupna

dataka blokova po broj ukupan+

=

= ( ) blokova 58000,138800

m0,010,128800m

≈=+

ukupan broj bajtova = 5800*32 000 = 1,856*107 bajtova

Zadatak 5.26

Ra~unar R1 ima ugradjen dvo-nivovski virtuelno-memorijski sistem. Vremena pristupa glavnoj memoriji M1 i sekundarnoj memoriji M2 iznose 10-6 i 10-3 s, respektivno. Testiranjem je ustanovljeno da je prose~no vreme pristupa memorijskoj hijerarhiji 10-4 s. Ovo vreme je neprihvatljivo duga~ko za najvei broj aplikacija. Ukazati na najmanje dva na~ina pomou kojih je ovo vreme mogue smanjiti sa 10-4 na 10-5 s, i dati komentar u vezi cene, kako sa hardverske tako i softverske ta~ke gledita.

Odgovor Ukazaemo na tri na~ina na koje je mogue smanjiti tA sa 10-4 na 10-5 s.

(1) Poveanje stope pogodaka H: ovo se mo`e ostvariti poboljanjem algoritma memorijskog preslikavanja (memory mapping algorithm). Tipi~no se to izvodi korienjem bolje politike zamene stranica ili promenom du`ine stranice. Cena koja mora da se plati je uglavnom softverska. ^esto je mogue poveati H poveanjem kapaciteta glavne memorije, a to direktno zna~i da se poveava cena hardvera. Prvo odredimo tekuu vrednost za H na osnovu relacije

tA = H×tA1 + (1 - H) tA2 (1)

gde je tA = 10-4, tA1 = 10-6, a tA2 = 10-3

Preuredjenjem po H dobiemo:

H = (tA - tA2)/(tA1 - tA2) (2)

= (10-4 - 10-3)/(10-6 - 10-3)

= 0,901.

Zbirka zadataka iz Mikroprocesorskih sistema

5-70

Da bi se dobilo prose~no vreme pristupa tA = 10-4 potrebno je poveati H na H', tako da je:

H' = (10-5 - 10-3)/(10-6 - 10-3)

= 0,991.

To zna~i da `eljeno smanjenje vremena pristupa tA sa 10-4 na 10-5 neminovno dovodi do poveanja stope pogodaka H sa 0,901 na 0,991.

(1) Smanjenjem tA2 - mogue je zameniti sekundarnu memoriju sa uredjajem ~ije je vreme pristupa krae. Na ovaj na~in u zna~ajnoj meri se poveava cena hardvera (Slika 5.65).

10-9

10-8

10-7

10-6

10-5

10-4

10-3

10-2

10-1

10

1

100

10-9 10-8 10-7 10-6 10-510-10

magnetne trake

opti~ki diskovi (CD-ROM i dr)

magnetni diskovi(hard-disk)

DRAM integrisana kola

SRAM integrisana kola

cena c(dolara po bitu)

vremepristupa tA (s)

Slika 5.65 Vreme pristupa u odnosu na tehnologiju

Preuredjenjem jedna~ine (1) dobija se:

tA2 = (tA - H tA1)(1 - H)

ako bi u~inili tA = 10-4, tada je neophodno da i tA2 bude:

tA2 = (10-4 - 0,901 * 10-6)/(1 - 0,901)

≈ 10-4

Ovo reenje ukazuje da je neophodno smanjiti tA2 za faktor reda 10, tj. sa 10-3 na 10-4.

(2) Smanjenje tA1 - mogue je smanjiti tA . Ovaj slu~aj se javlja kada se glavna memorija realizuje br`om tehnologijom.

Preuredjenjem jedna~ine (1) dobiemo

tA1 = (tA + (1 - H) tA2)/H (3)

5. Memorije

5-71

Zamenom za tA = 10-5, H = 0,901 i tA2 = 10-3 u (3), dobiemo: za tA1 = - 0,998 * 10-6, tj. negativnu vrednost. To zna~i da je nemogue ostvariti `eljenu vrednost za tA od 10-4 ugradnjom br`ih memorijskih ~ipova.

Zadatak 5.27 Dvo-nivovsku organizaciju memorije (M1 i M2) karakterie vreme pristupa tA1 = 10-8 s i tA2=10-3 s. Kolika treba da bude stopa pogodaka H da bi efikasnost pristupa bila ne manja od 65% od svoje maksimalne vrednosti?

Odgovor Efikasnost pristupa l je definisana odnosom tA1/tA. Da bi dobili l = 0,65 potrebno je da:

tA = tA1/l = 10-8/0,65 = 1,53846 * 10-8 s.

Na osnovu relacije:

tA = H tA1 + (1 - H)tA2

dobijamo:

H = (tA - tA2)/(tA1 - tA2)

= (1,53486 * 10-8 - 10-3)/(10-8 - 10-3)

= 0,999846.

To zna~i da stopa pogodaka mora biti H ≥ 0,999846, da bi l ≥ 0.

Zadatak 5.28 Kod n-to nivovske organizacije memorije, stopa pogodaka Hi koja je pridru`ena memoriji Mi na nivou i, mo`e se definisati preko verovatnoe da informacija koju zahteva CPU bude dodeljena memoriji Mi. Ako usvojimo da se sva informacija, koja se ~uva u Mi , takodje, javlja i u Mi +1, tada va`i uslov H1 < H2 <... <Hn = 1. Koristei ovu definiciju za Hi generalizovati izraz koji va`i za dvo-nivonsku memorijsku hijerarhiju (tA = H×tA1 + (1 - h) tA2) na n-nivovsku memorijsku hijerarhiju.

Odgovor U~estanost pristupa nivou Mi memorijske hijerarhije se definie kao verovatnoa da e se obraanje stavki X od strane CPU-a obaviti (ostvariti) na nivou Mi, tj. da je Mi najvii nivo (ili najmanja vrednost i) koji ~uva vrednost X. Odavde sledi da je pi = Hi - Hi-1 pri H0 = 0 i Hn = 1. Za prose~no vreme pristupa va`i relacija:

∑=

=n

1iAiA i

tpt (4)

Zamenom se dobija:

( )∑=

− ⋅−=n

1iA1iiA i

tHHt

Napomena: Samo za slu~aj n=2, va`i p1 = H1 = H.

Zbirka zadataka iz Mikroprocesorskih sistema

5-72

Zadatak 5.29 Hijerarhijska struktura memorije ra~unara C1 organizovana je u ~etiri nivoa, ozna~ena kao M1, M2, M3 i M4, sa odgovarajuom stopom pogodaka od 0,8, 0,9, 0,99 i 1, respektivno. Neka se u toku izvrenja programa Q obraanje memoriji vri 3000 puta. Odrediti ta~an broj obraanja memoriji Ri koja se obave u toku izvrenja programa Q, a odnose se na nivo Mi.

Odgovor Neka I = 3000 bude ukupan broj obraanja memoriji od strane programa Q, i neka Hi bude stopa pogodaka memorije Mi. U optem slu~aju za broj obraanja memoriji Ri va`i izraz:

Ri = (Hi - Hi-1) I ,

gde je H0 = 0.

Za konkretan primer imaemo:

R1 = 0,80 * 3000 = 2400

R2 = (0,95 - 0,80) * 3000 = 450

R3 = (0,99 - 0,95) * 3000 = 120

R4 = (1,0 - 0,99) * 3000 = 30

Napomena: Treba naglasiti da je ∑Ri = I.

Zadatak 5.30 Ostatak-stope-pogodaka - RHi nivoa Mi, kod hijerarhijski organizovanog memorijskog sistema, se definie kao odnos broja zahteva za pristup, koji u sutini dolaze do Mi, prema broju zahteva koje Mi zadovoljava . To zna~i da je RHi <= Hi, jer Mi mo`e da ispuni (zadovolji) bilo koji zahtev za pristupom koji je zadovoljen od strane viih, br`ih nivoa hijerarhije.

Odrediti RHi svakog nivoa kod ~etvoro-nivovske organizacije memorije za program Q definisan u prethodnom zadatku.

Odgovor Ako je Hi stopa pogodaka memorije Mi, tada va`i RHi = Hi- Hi-1, gde je H0 = 0. Zamenom odgovarajuih vrednosti dobijamo:

RH1 = H1 = 0,8 RH2 = 0,95 - 0,8 = 0,15 RH3 = 0,99 - 0,95 = 0,04 RH4 = 1 - 0,99 = 0,01

Napomena: SRHi = 1,0, sa izuzetkom RH1, va`i da je RHi << Hi.

Zadatak 5.31 Neka pi predstavlja deo zahteva za pristup memoriji koji se javlja kao rezultat pristupa nivou memorije Mi kod tro-nivovske hijerarhijske organizacije.

nivo i vreme verovatnoa pristupa vreme prenosa

5. Memorije

5-73

pristupa tA(s) pi stranice tBi(s)

M1 10-7 0,999990 0,0005

M2 10-6 0,000009 0,01

M3 10-4 0,000001

Kada se na nivou Mi javi promaaj, dolazi do zamene stranice izmedju nivoa Mi i Mi+1, uz prose~no vreme zamene stranice tBi.

(a) Odrediti prose~no vreme za koje procesor pro~ita jednu re~ iz memorije.

(b) Neka se projektantu da zahtev da u~inimo da tA <= 1,1 * 10-7. To zna~i da tA ne sme da premai vreme pristupa memoriji za vie od 10%. Poboljanje se mo`e ostvariti ako se M3 zameni memorijskom tehnologijom kod koje se tB2 smanji na vrednost tB2'. Kolika je vrednost tB2'.

(c) Sugerisati i ukazati na opravdanje kako se na jeftiniji na~in mo`e doi do zadovoljavajueg reenja, tj. kako se mo`e smanjiti tA a da se pri tome ne smanjuje tB2 na vrednost tB2'.

Odgovor (a) Prose~no vreme pristupa se izra~unava kao:

tA = p1tA1 + p2(tA1 + tB1) + p3(tA1 + tB1 + tB2) (5) = tA1 + (p2 + p3) tB1 + p3tB2 = 10-7 + 0,00001 * 0,0005 + 0,000001 * 0,01 s = (1,0 + 0,05 + 0,1) * 10-7 s

= 1,15 * 10-7

(b) Potrebno je sada odrediti t'B2 tako da tA <= 1,1 * 10-7, pa stoga:

1,1 * 10 -7 < tA1 + (p2 + p3) tB1 + p3t'B2

1,1 * 10-7 < 1,05 * 10-7 + 0,00001 * t'B2

Sledi da je:

t'B2 < 0,05 * 10-7 * 0,005 s

to ukazuje da vreme prenosa bloka treba najmanje skratiti za 50%. Ovo se mo`e postii ako se M3 zameni sekundarnom memorijom koja je dvaput br`a od tekue instalirane, to predstavlja skupo reenje.

(c) Jedna~ina (5) ukazuje da se tA mo`e smanjiti na vrednost 1,1 * 10-8 ako se smanji tA1 na vrednost 0,95 * 10-7 ili na jo ni`u vrednost. Ovo zna~i da je potrebno da M1 ima krae vreme pristupa za 5%, a ~ini se da se taj cilj mo`e ostavariti po ni`oj ceni. Alternativno reenje je da se neznatno povea p1 a efektivno smanje p2 i p3. Poveanje p1 (zavisno je od ponaanja programa) se mo`e ostvariti po nekoj srednje prihvatljivoj ceni a to zna~i ili da se povea kapacitet memorije M1, ili pobolja politika zamene stranica.

Zadatak 5.32 a) Odrediti kolika je prose~na cena po bitu kao i vreme pristupa ~etvoro-nivovskog memorijskog sistema na osnovu vrednosti specificirane sledeom tabelom:

memorija kapacitet cena ($/B) vreme pristupa stopa pogodaka

Zbirka zadataka iz Mikroprocesorskih sistema

5-74

ke 1 16 kB 10-3 10 ns 0,990000

ke 2 256 kB 10-5 20 ns 0,999900

glavna memorija 32 MB 10-6 100 ns 0,999999

disk memorija 8 GB 10-9 10 ns 1,000000

b) Neka je, zbog ekonomskih razloga, drugi nivo kea eliminisan iz sistema. Odrediti rezultujui procenat promena koji se odnosi na cenu sistema i vreme pristupa.

Odgovor Neka za memoriju Mi vrednosti ci i Si ozna~avaju cenu po bitu i kapacitet, respektivno. Prose~na cena po bitu -c, se odredjuje na osnovu sledee relacije:

c = (c1S1 + c2S2 + c3S3 + c4S4)/(S1 + S2 + S3 + S4) (6)

= (10-3 * 214 + 10-5 * 218 + 10-6 *225+10-9*233)/(214 + 218 + 225 + 233)

= (16,38 + 2,62 + 33,55 + 8,59)/(8,62 * 109)

= 7,09 * 10-9 dolara/bajtu

Na osnovu prezentiranih podataka, stopa pogodaka Hi se mo`e interpretirati kao verovatnoa da re~ kojoj se obraamo postoji (nalazi se) u memoriji nivoa i, tj. Mi. Re~i koja se nalazi na nivou Mi se pristupa samo kada ista nije dodeljena nivou Mj, pri ~emu va`i j < i.

Neka pi predstavlja verovatnoa da e se obraanje memoriji procesirati od strane nivoa Mi. Sledi da je pi = Hi - Hi-1, gde H0 = 0. Shodno prethodnoj konstataciji, imaemo da je:

tA = p1tA1 + p2tA2 + p3tA3 + p4tA4.

Odgovarajuom zamenom za pi, i=1,..., 4, dobiemo:

tA = (H1 - H0)tA1 + (H2 - H1)tA2 + (H3 - H2)tA3 + (H4 - H3)tA4 (7)

= 0,99 * 10-8 + 0.0099 * 2 10-8 + 0,00099 * 10-7 + 0,000001 * 10-2 s

= (0,99 + 0,0198 + 0,00099 + 0,1) * 10-8 s

= 1,11079 * 10-8 s = 11,11 ns

b) ako se izostavi nivo-2 ke M1 na osnovu jedna~ine (6) dobijamo:

c = (10-3 * 214 * 10-6 * 225+ 10-9 * 233)/(214 + 225 + 233)

= (16,38 + 33,55 + 8,59)/(8,62 * 109)

= 6,79 * 10-9 dolara/bajt.

Uo~ava se smanjenje cene sa 7,09 * 10-9 dolara/bajtu na 6,79 * 10-9 dolara/bajtu to iznosi oko 4,2 %. Zbog eliminacije kea na nivou-2, na osnovu jed. (7), imaemo:

t'A = (H1 - H0)tA1 + (H3 - H1)tA3 + (H4 - H3)tA4

= 0,99 * 10-8 + 0,009999 * 10-7 + 0,0000001 * 10-2 s

= (0,99 + 0,09999 + 0,1) * 10-8 s

= 1,18999 * 10-8 s = 11,90 ns

Prose~no vreme pristupa se povealo sa 11,11 ns na 11,90 ns, ili procentualno za oko 7%, za slu~aj kada ke nivoa-2 ne postoji, tj. nije instaliran.

5. Memorije

5-75

Zadatak 5.33 Analizirajmo trag (trejs) adresa stranica koji je generisan od strane dvo nivovske eme ke-glavna memorija. [ema koristi strani~enje po zahtevu, a ima kapacitet kea od ~etiri stranice.

1 6 4 5 1 4 3 2 1 2 1 4 6 7 4 1 3 1 7

Usvojimo da postoji vrui (hot) start, tako da su keu inicijalno dodeljene strnice 1, 2, 3, i 4.

Koja od politika zamene stranica FIFO ili LRU je pogodnija za ovaj slu~aj?

Odgovor Simulacije koje se odnose na politike zamene FIFO i LRU prikazane su na Slici 5.66. Usvojeno je, inicijalno, da su sve stranice napunjenje u ke u sledeem redosledu: 1 (prva), 2, 3 i 4 (zadnja). LRU ima za treinu vei broj pogodaka od FIFO. Simulacija prikazuje da FIFO ponekad isprazni na kratko stranicu pre nego to joj se ponovo obrati, ali to je jednostavno zbog toga to je to stranica koja je najdu`e boravila (bila) u keu, dok, sa druge strane, LRU je zadr`ava jer je do pogodka bio skoro dolo.

vreme t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 broj pogodaka

strani-ca

1 6 4 5 1 4 3 2 1 2 3 4 7 4 1 3 1 7

1 2 2 3 4 4 6 5 5 5 5 1 3 3 2 7 7 7

2 3 3 4 6 6 5 1 1 1 1 3 2 2 4 4 4 4

3 4 4 6 5 5 1 3 3 3 3 2 4 4 7 1 1 1

4 6 6 5 1 1 3 2 2 2 2 4 7 7 1 3 3 3

FIFO

pogoci x x x x x x x x x 9

2 3 3 1 6 6 5 1 4 4 4 1 2 2 3 7 7 4

3 4 1 6 4 5 1 4 3 3 1 2 3 3 7 4 4 3

4 1 6 4 5 1 4 3 2 1 2 3 4 7 4 1 3 1

1 6 4 5 1 4 3 2 1 2 3 4 7 4 1 3 1 7

LRU

pogoci x x x x x x x x x x x x 12

Slika 5.66 Simulacija traga (trejs-a) koji se odnosi na adresu stranice koristei FIFO i LRU politike zamene

Zadatak 5.34 Izvriti projektovanje ~etvorostruko, skupno-asocijativnog kea, uzimajui kao model 8 kB dvostruko skupno-asocijativne ke memorije prikazane na Slici 5.67. Projektovana ke memorija treba da ima sledee karakteristike: kapacitet kea 64 kB; obim sistemske magistrale 32-bita.

Odgovor Struktura ~etvorostruke skupno-asocijativne ke memorije prikazana je na Slici 5.68. Analizirajui Sliku 5.67 i Sliku 5.68, mo`emo zaklju~iti sledee:

32-bitna memorijska adresa S se interpretira na sledei na~in:

• 5 LS bitova odnose se na deo razmetaja adrese A kojim se identifikuje bajt u okviru 32-bajtnog bloka

Zbirka zadataka iz Mikroprocesorskih sistema

5-76

512 x 20tag RAM T0

512 x 64 RAMpodataka D0

512 x 64 RAMpodataka D1

512 x 20tag RAM T1

20-bitnitag komparator C1

20-bitnitag komparator C0

Upravlja~kalogika

memorije zaupis/~itanje

Adresa skupa

Adresa memorije 20 9 3

Adresna magistrala 32

9

20

Ke tag memorijaKe memorija za

podatke

Adresa skupa

Tag

Magistrala podataka64

CPU

GlavnamemorijaD D

CS

A CS

DA

D

uparenost uparenost

Razmetaj

Slika 5.67 Model 8 kB dvostruko skupno-asocijativne ke memorije nekog mikroprocesora

T3

T2

T1

DDD

DT0

512x18-bittag RAMA

Upravlja~kalogika

memorijeza

upis/~itanje

Tagcomparator C0

Tagcomparator C1

Tagcomparator C2

Tagcomparator C3

D3D2D1

DD

D

DD0

A4Kx32-bit

RAM podataka

32

Glavnamemorija

CPU

uparenostuparenostuparenostuparenost

Tag

18

9 Adresa skupa 12

Adresna magistrala 32

TAG ke memorija Ke podataka

Magistrala podataka

Slika 5.68 ^etvorostruka skupno-asocijativna ke memorija

5. Memorije

5-77

• postoje ukupno 64 k/32 = 211 = 2048 blokova koji se ~uvaju (memoriu) u ke

• keevi su podeljeni na 512 skupova, pri ~emu svaki skup memorie po ~etiri bloka koristei skupno asocijativno adresiranje u okviru skupa.

• devet bitova iz A formira adresu skupa, dok ostalih 18 bitova tag adresu

• uporedjivanje se vri tag komparatorima C0,..., C3.

• tag memorija se implementira pomou ~etiri RAM-a, T0,...,T3, svaki kapaciteta 512 * 18 bitova

• postoje ukupno ~etiri RAM-a podataka, D0,...,D3, svaki kapaciteta 4 k * 32 bita

Test pitanje 5.54 Ra~unarski sistem ~ija je realna memorija veli~ine 232 bajtova koristi osmostruku skupno-asocijativnu memoriju. Obim linije je 16-bajtova, a skup ~ine 210 linija. Odrediti obim kea i du`inu tag-a.

Odgovor obim kea = broj skupova * broj blokova po skupu * broj bajtova po bloku U konkretnom slu~aju:

obim kea = 8 * 2 **10 * 16 = 128 kB

Ako usvojimo da se koristi 32-bitna memorijska adresa, ona e sadr`ati: (a) adresni tag; (b) 10-bitnu adresu skupa; i (c) 4-bitnu bajt adresu.

Prema tome, adresni tag bie obima 32-(10 + 4) = 18 bitova.

Zadatak 5.35 Na Slici 5.69 prikazana je struktura 256 kB direktno preslikane ke memorije. Projektant, koristei model sa Slike 5.69, treba da projektuje novi ke (koristei isti model kao onaj na Slici 5.69) koji ima sledee karakteristike:

a) kapacitet kea treba da je 64 kB,

b) obim ke bloka 32 B,

c) obim sistemske magistrale 32-bita. Odgovor Zahtevani 16 k * 32-bitni ke mo`e se realizovati pomou ~etiri SRAM ~ipova kapaciteta 16k * 8 bitova (Na Slici 5.69 prikazan je SRAM 71286 ~iji je kapacitet 32 k * 8).

U odnosu na Sliku 5.69, kod novog reenja, adresu skupa treba smanjiti sa 13 na 12-bita. Isti zaklju~ak va`i i za adresu razmetaja koja adresira bajt u okviru bloka, tj. treba je redukovati sa 5 na 2 bita.

Za obim adresnog taga preostaje 18 bitova, a to zna~i da ako se koristi ceo adresni prostor od 232 memorijskih bajtova, potrebno je ugraditi tri ke-tag RAM integrisana kola tipa 71B74.

Magistrala podataka treba da je 32-bitna.

Osim navedenih izmena, ostali detalji su identi~ni kao oni na Slici 5.69.

Zbirka zadataka iz Mikroprocesorskih sistema

5-78

14 13 5Memorijskaadresa

14 13 5

32

8K x 14ke tagRAM

(2x71B74)

32K x 64ke dataRAM

(8x71256)

D MATCH D

Adresa re~i podataka umemoriji

Adresa skupa

Adresa skupa Razmetaj

Adresa magistrale

Glavnamemorija

CPU

Upravlja~ka logikamemorije za upis/~itanje

Magistrala podataka64

64

Slika 5.69 Struktura 256 kB direktno-preslikani ke

Test pitanje 5.55 Kod sistema prikazanog na Slici 5.69 izvrena je modifikacija. Naime, adresne linije su ozna~ene kao A0 : A31, pri ~emu je A0 MS - a ne LS adresni bit. Idenitifikovati koje se adresne linije kod modifikovanog reenja koriste za adresiranje ke RAM-a podataka.

(a) Neka se podatak obima re~ prenosi po sistemskoj magistrali za 15 ns. Proceniti koliko vremena je potrebno da se sistem u potpunosti odazove na memorijski pristup kada dodje do ke promaaja.

Odgovor (a)

• Na osnovu oznaka sa Slike 5.69, zaklju~ujemo da adresni bitovi A14 : A26 formiraju 13-bitnu adresu skupa,

• narednih pet bitova - A27 i A31, koriste se za adresiranje re~i u okviru bloka,

• bitovi A0 : A13 se koriste kao tag adresa

(b)

Jedinstveni osmo bajtovski prenos podataka po sistemskoj magistrali podataka se ostvaruje za 15 ns. Da bi se sistem odazvao na ke promaaj, generie se ~etvorostruki prenos podataka tipa burst mode (prenose se 8 * 4 = 32 B) pa se na taj na~in popunjava ke blok. Vreme potrebno da se ostvari ovaj prenos iznosi 4 * 15 = 60 ns.

Test pitanje 5.56 Memorijski sistemi se karakteriu vie-nivovskom, hijerarhijskom organizacijom. Cilj ovakve organizacije je da ostvari (postigne) dobar kompromis izmedju cene, kapaciteta memorije i performanse ukupnog memorijskog sistema.

5. Memorije

5-79

Optu strukturu n-nivovskog sistema ~ine n razli~itih tipova memorije. Nacrtati blok dijagrame standardnih hijerarhijskih organizacija memorije za n = 2, 3 i 4, i ukazati od kojih se tipova memorije realizuju odgovarajui nivoi.

Odgovor

CPUGlavna

memorijaSekundarnamemorija

I

D

I

D

M3M4

CPUGlavna

memorijaSekundarnamemorija

I

D

I

D

M1M2

I - Tok instrukcijeD – Tok podataka

CPUGlavna

memorijaSekundarnamemorija

I I

D

M2M3

I

D

D

I-ke

D-ke

M1

Kenivoa 1

Kenivoa 2

I

D

I

D M2M1

Slika 5.70 Hijerarhijska organizacija memorije

a) dvo-nivovska; b) tro-nivovska; c) ~etvoro-nivovska

Za realizaciju odgovarajueg nivoa Mi koristi se tip:

• SRAM za ke memorije

• DRAM za glavnu memoriju

• magnetna-disk jedinica za sekundarnu memoriju Test pitanje 5.57 Kakve relacije postoje izmedju susednih memorijskih nivoa Mi i Mi+1 kod hijerarhijske organizacije memorije prikazane na slici 5.70 Odgovor • cena po bitu ci > ci+1

• vreme pristupa tAi < tAi+1

• kapacitet memorisanja Si < Si+1

Zbirka zadataka iz Mikroprocesorskih sistema

5-80

Test pitanje 5.58 Da li kod hijerarhijske organizacije memorije, prikazane na Slici 30, CPU mo`e direktno da komunicira sa memorijom nivoa Mi?

Odgovor CPU mo`e direktno da komunicira samo sa M1, M1 da komunicira sa M2 itd. Drugim re~ima, da bi CPU pro~itao informaciju koja se ~uva na nivou Mi potrebno je da se ostvari sekvenca od i prenosa podataka koja ima oblik:

Mi-1 := Mi; Mi-2 := Mi-1; Mi-3 := Mi-2 ;...; M1 := M2; CPU := M1

Izuzetak je dozvoljen kod manipulacije sa keom. Naime, CPU je projektovan da premosti ke nivo(e) i da se obrati direktno memoriji. U optem slu~aju, sva informacija koja se u datom trenutku nalazi na nivou Mi prisutna je i na nivou Mi+1, ali ne i suprotno.

Test pitanje 5.59 Cilj hijerarhijske organizacije memorije, to se vremena pristupa ti~e, je da se postignu performanse koje su veoma bliske najbli`oj memorijskog komponenti M1 i, a kada se posmatra cena po bitu i kapacitet memorisanja, ostvare mogunosti memorijske komponente Mn. U sutini, performanse memorijskog sistema zavise od velikog broja faktora, identifikovati najva`nije.

Odgovor • Statisti~ka evidencija o adresnim obraanjima, tj. redosled i u~estanost generisanja logi~kih

adresa od strane programa koji koriste memorijsku hijerarhiju.

• Vreme pristupa tAi, za svaki nivo Mi - relativno u odnosu na CPU.

• Kapacitet memorisanja Si svakog nivoa.

• Obim Spi bloka (stranica) koji se prenosi izmedju susednih nivoa.

• Algorirtam dodele (alokacije) koji se koristi da odredi memorijske oblasti u kojima se prenose blokovi od strane procesa (zadatka) koji obavlja medjusobnu razmenu (swapping) blokova.

Test pitanje 5.60 Za dvo-nivovski memorijsko hijerarhijski model koga emo ozna~iti sa (M1, M2), i koji se mo`e interpretirati kao ke - glavna memorija, ili glavna memorija - sekundarna memorija, ukazati na relacije na osnovu kojih se odredjuje:

a) prose~na cena po bitu memorije - c,

b) stopa ke pogodaka - H,

c) prose~no vreme pristupa - tA,

d) efikasnost pristupa - e,

e) iskorienost prostora - u.

Odgovor

5. Memorije

5-81

(a) 21

2211

SSScSc

c++

=

gde ci ozna~ava cena po bitu (cost-per-bit) za Mi, a Si predstavlja kapacitet memorisanja u bitovima za Mi.

(b) Performanse dvo-nivovske organizacije ~esto se izra`avaju zavisnosti od stope-pogodaka H (hit-ratio H). Stopa-pogodaka se definie kao verovatnoa da se virtuelnom adresom generisanom od strane CPU-a, obraamo informaciji koja je tekue memorisana u najbr`oj memoriji M1. Imajui u vidu da se obraanje memoriji M1 (pogodak) mo`e ostvariti za mnogo krai period od obraanja memoriji M2 (promaaj), cilj je da stopa pogodaka - H bude to je mogue bli`a jedinici. U optem slu~aju, stopa pogodaka se odredjuje eksperimentalno na sledei na~in. Izvrava se ili simulira rad skupa reprezentativnih programa. Broji se broj adresnih obraanja N1 i N2 koji se odnosi na obraanje memorijama M1 i M2, respektivno. Stopa pogodaka H se izra~unava na sledei na~in:

21

1

NNN

H+

=

Treba naglasiti da H jako zavisi od tipa programa. Veli~ina 1-H naziva se stopa-promaaja (miss-ratio).

(c) Neka tA1 i tA2 predstavljaju vreme za pristup memorijama M1 i M2, respektivno, relativno u odnosu na CPU. Kod dvo-nivovske memorijske organizacije, prose~no vreme pristupa tA (average time tA) CPU-a nekoj re~i u memoriji iznosi:

tA = H×tA1 + (1 - H) tA2

Kod najveeg broja dvo-nivovske hijerarhijske eme, zahtev za prenosom re~i koja se ne nalazi u M1 (javi se promaaj) uzrokuje da se, umesto jedne re~i, prenese ceo blok informacije iz M2 u M1. Kada se prenos bloka zavri, re~ za kojom je izdat zahtev za prenos nalazi se u M1. Ako sa tB ozna~imo vreme potrebno da se izvri prenos celog bloka podataka (block access ili block transfer time), tada va`i da je tA2 = tB + tA1. Kada se tA2 zameni u tA dobiemo:

tA = tA1 + (1 - H) tB

Kod najveeg broja slu~ajeva tA2 >> tA1, pa tA2 » tB.

(d) Ozna~imo sa r + tA2/tA1 odnos vremena pristupima memorijama M2 i M1.

Neka e = tA1/tA, predstavlja faktor koji ukazuje na to za koliko se tA razlikuje od najkraeg (minimalnog) vremena pristupa tA1. Vrednost e nazvaemo efikasnost pristupa (access efficiency) dvo-nivovske memorije. Iz relacije:

tA = H×tA1 + (1 - H)tA2

deobom leve i desne strane sa tA1 i sredjivanjem, dobijamo:

( )Hr1r1

e−+

=

Na Slici 5.71 prikazana je zavisnost e u funkciji H za razli~ite vrednosti r kao perametar. Tako na primer, za r = 100, da bi e > 0,9 potrebno je da H > 0,998.

Zbirka zadataka iz Mikroprocesorskih sistema

5-82

1,0

0,8

0,6

0,4

0,2

0,2 0,4 0,6 0,8 1,0

stopa pogodaka H

efikasnostpristupa

e

r=1

r=2

r=10

r=100

Slika 5.71 Efikasnost pristupa e + tA1/tA kod dvo-nivovske memorije u funkciji stope pogodaka H za

razli~ite vrednosti r = tA2/tA1

(e) Organi~enje kod instaliranja veeg iznosa memorije u ra~unarskom sistemu uglavnom se ogleda u ceni. Zbog ovoga, po`eljno je da imamo to je mogue manje neiskoriene memorije. Efikasnost, kao mera koja ukazuje na to kako se u datom trenutku koristi memorijski prostor, definie se kao odnos memorijskog prostora Su zauzetog od strane k "aktivnih" ili "korisnih" programa i podataka, u odnosu na ukupni iznos dostupne memorije.

Ovaj odnos se naziva iskorienost prostora - u (space utilization) i definisana je kao:

SS

u u=

S obzirom da se prostoru memorije M1 ~ee obraamo nego prostoru M2, opravdanije je meru u definisati u odnosu na M1.

Do gubitka prostora memorije M1 dolazi uglavnom iz sledeih razloga:

• Fragmentacija memorije ~esto uzrokuje da se javi neiskorieni prostor (empty regions).

• Neiskoriene oblasti - ~esto se podaci kao deo stranice prenose iz M2 u M1, a zatim ponovo u M2, a da se pri tome nismo obratili njima. U sutini, suvini prenosi su neizbe`ni jer skoro je nemogue u celosti predvideti kojim e se adresama vriti obraanje.

• Sistemske oblasti - ove oblasti su rezervisane za sistemski softver koji upravlja radom memorije.

Test pitanje 5.61

Koje zadatke sistem za upravljanje memorijom obavlja automatski?

Odgovor (1) Translaciju memorijskih adresa iz virtuelnog adresnog prostora u kojem se program izvrava, u

realne memorijske adrese kojima se identifikuju fizi~ke memorijske lokacije

(2) Dinami~ku (re)alokaciju ili premetanje (swapping) informacije izmedju razli~itih memorijskih nivoa, tako da se memorisani delovi (stavke) nalaze u najbr`oj memoriji pre nego to su oni potrebni (koriste se)

5. Memorije

5-83

Test pitanje 5.62

Kako se dele magnetni hard diskovi u odnosu na pristup medijumu za ~itanje i upis, sa aspekta kako glava pristupa pistama?

Odgovor Serijske memorije, kakvi su magnetni hard diskovi, dele se na:

• diskove koji imaju vei broj fiksno postavljenih upisno-~itajuih glava obi~no po jedna za pistu

• diskove koji imaju jednu pokretnu glavu koja je zajedni~ka za vei broj pisti

Test pitanje 5.63

Kada se govori o magnetnim diskovima, ukazati na zna~enje sledeih pojmova:

• seek time - ts,

• latencija - tL,

• rotaciona latencija

• blok podataka

• brzina prenosa bloka podataka

• prose~no vreme pristupa bloku podataka

Odgovor • Prose~no vreme potrebno da se pomeri glava sa jedne piste na drugu naziva se seek time - ts, ili

vreme pozicioniranja

• Nakon to se glava pozicionira na pisti, potrebno je da se ona pomeri na mesto gde je zapisana informacija i da dodje do kontakta glave i medijuma kako bi po~eo prenos podataka. U tom smislu karakteristi~no je prose~no vreme koje je potrebno da se ostvari ovaj pomeraj naziva se latencija - tL, memorije

• Kod memorija kod kojih informacija rotira po kru`noj pisti, veli~ina tL se naziva rotaciona latentnost.

• Kod sekvencijalnog zapisa, re~i se grupiu u vee jedinice koje zovemo grupe. Sve re~i iz grupe se smetaju u uzastopne lokacije tako da vreme potrebno da se pristupi celom bloku ~ini: vreme pozicioniranja i vreme latencije.

• Brzina sa kojom se vri prenos informacija ka- ili sa piste, naziva se brzina prenosa podataka (data transfer rate).

Prose~no vreme pristupa bloku podataka - tB, jednako je:

rNn

2r1

tt SB ++=

gde je: N - fiksni kapacitet re~i po pisti r - broj okretaja diska u sekundi; n - broj re~i po bloku podataka; tS - prose~no seek time;

Zbirka zadataka iz Mikroprocesorskih sistema

5-84

Proizvod r×N odgovara brzini prenosa podataka iz memorije i izra`ava se u re~/s. Nakon to je upisno-~itajua glava pozicionirana na po~etak `eljenog bloka, podaci se prenose aproksimativno za n/(rN) sekundi. Prose~na latencija je 1/(2r) sekundi, a to odgovara vremenu potrebnom da se disk okrene za pola kruga. Kona~no, tS je prose~no vreme pozicioniranja glave na `eljenu pistu.

Test pitanje 5.64

Na Slici 5.72 prikazana je, na konceptualnom nivou, vienivovska hijerarhijska organizacija memorije kod jednog ra~unara. Ukazati na osnovne razlike koje postoje izmedju nivoa (M1, M2) i (M2, M3).

CPU ke

M1

glavnamemorija

M2

sekundarnamemorija

M3RF

polje

Slika 5.72 Vienivovska hijerarhijska organizacija jednog ra~unara

Odgovor

dvo-nivovska hijerarhija (Mi-

1, Mi) ke-glavna memorija (M1,M2) glavna-sekundarna memorija

(M2, M3)

odnos tipi~nih vremena pristupa tA1/tAi-1

5/1 1000/1

sistem za upravljanje memorijom

uglavnom implementiran hardverski

uglavnom implementiran softverski

tipi~an obim stranice 8 B 4 kB pristup procesora drugom nivou Mi

procesor mo`e direktno da pristupi M2

svi pristupi ka M3 se realizuju preko M2

Test pitanje 5.65

Koji su osnovni gradivni blokovi kea?

Odgovor Osnovni gradini blokovi ke memorije su ke tag memorija i memorija podataka. Na~in njihovog sprezanja sa CPU-om prikazan je na sledeoj emi:

5. Memorije

5-85

ke tag memorija(direktorijum)

memorija keapodataka

pogodak

adresa podaciupravlja~ki signali

Test pitanje 5.66

Koje dve osnovne sistemske organizacije kea postoje kod ra~unara?

Odgovor Postoje dva na~ina organizacije kea ra~unara i ona su prikazana na slici 5.73.

Kod look-aside reenja (Slika 5.73 a)), na sistemsku magistralu se direktno povezuju ke i glavna memorija. Kod ovog reenja CPU na po~etku ciklusa upisa/~itanje postavlja na adresnoj magistrali realnu adresu Ai. i na taj na~in inicira ciklus pristup-memoriji. Ke M1 odmah uporedjuje Ai sa tag adresama koje se tekue nalaze u njegovoj tag memoriji. Ako dodje do uparivanja u M1, to zna~i da se javio ke pogodak, pristup se zavrava od strane operacije upis/~itanje, tako da glavna memorija M2 ne u~estvuje u prenosu. Ako ne dodje do uparivanja sa Ai, javlja se ke promaaj, pa se tada `eljeni pristup zavrava od strane operacije ~itanje/upis koja je usmerena ka M2. Kao odziv na ke promaaj, blok (linija, ulaz) podataka Bj koji sadr`i i ciljnu adresu Ai se prenosi iz M2 u M1. Ovaj prenos je brz, jer su blokovi kratki, SRAM je brz, a ceo prenos se ostvaruje u burst mode-u. Ke implementira neku politiku zamene kao to je LRU sa ciljem da odredi gde da smesti dolazei blok. Kada je neophodno, ke blok koji se zamenjuje od strane Bj u M1 smeta se u M2. Uo~imo da ke promaaji, i pored toga to su retki, rezultuju prenosom bloka izmedju M1 i M2, pa je za to vreme magistrala zauzeta, to je ~ini nedostupnom za obavljanje drugih U/I operacija.

Neto br`a, ali znatno skuplja organizacija kea prikazana je na Slici 5.73 b), a naziva se look-through. CPU komunicira sa keom preko magistrale (lokalne) koja je izdvojena od glavne sistemske magistrale. Sistemska magistrala je dostupna za korienje ostalim jedinicama (kao to su U/I kontroleri) radi komuniciranja sa glavnom memorijom. Zbog toga, pristupi keu i pristupi glavnoj memoriji u kojima ne u~estvuje CPU mogu da se izvravaju konkurentno. Nasuprot look-aside pristupu, kod look-through kea CPU automatski ne alje sve zahteve za pristup memoriji ka glavnoj memoriji, nego se takvi zahtevi javljaju samo kada dodje do ke promaaja. Look-through ke omoguava da lokalna magistrala koja povezuje M1 i M2 bude po obimu vea od sistemske magistrale, ~ime se ubrzava prenos podataka izmedju kea i glavne memorije. Na primer, ako je sistemska magistrala 32-bitna, a ke blok je obima 128 bitova = 16 bajtova (tipi~na vrednost), za povezivanje M1 i M2 se koristi 128-bitna magistrala podataka, koja obezbedjuje da se ceo ke blok prenese za jedan taktni interval. Glavni nedostatak look-through reenja, pored izrazite slo`enosti, predstavlja du`i vremenski period koji je potreban memoriji M2 da se odazove CPU-u kada se javi promaaj.

Zbirka zadataka iz Mikroprocesorskih sistema

5-86

CPU

KeM1

Glavnamemorija

M2Pristupkeu

Zamenabloka

Pristup glavnojmemoriji

Sistemskamagistrala

KeM1

CPU

Pristup

keuZamena bloka

Kekontroler

Kontrolerglavne

memorije

Glavnamemorija M2

Pristup glavnojmemoriji

b

Sistemskamagistrala

a

Slika 5.73 Dve sistemske organizacije kea:

(a) look-aside, i (b) look-through Test pitanje 5.67

[ta su "interleaving" memorije? Odgovor Predaja razli~itih adresa veem broju memorijskih modula tako da se n-uzajamno nepovezanim linijama koje pripadaju razli~itim memorijskim modulima mo`e simultano pristupati, zovemo memory interleaving. Pri ovome va`no je praviti razliku izmedju: (i) bloka uzastopnih lokacija kojima se pristupa simultano; i (ii) lokacije koje nisu uredjene a pristupa im se simultano pri ~emu se lokacije nalaze u razli~itim memorijskim modulima. Kod interleaving-a memorije memorijsko adresno polje se deli na dva dela. Jedno polje se koristi za selekciju lokacija u okviru memorijskih modula, a drugo za selekciju modula. Memorijski modul se mo`e selektovati pomou LS i MS adresnih bitova. Na slici 5.74 prikazana su oba adresna formata.

5. Memorije

5-87

MS bit LS bit

adresa u okviru modula adresa modula a) interleaving odredjen ni`im adresama

adresa modula adresa u okviru modula b) interleaving odredjen viim adresama

Slika 5.74 : Adresni formati kod interleaving-a

Jedno tipi~no reenje memorijskog interleaving-a koje se kod jedno-procesorskih sistema koristi za smanjenje efektivnog vremena pristupa memoriji prikazano je na sl. 5.75.

CPU

kontroler memorije

001 m-1000

m+1 2m-1m

modul 2 modul mmodul 1

.

.

.

.

.

.

.

.

.

...

Slika 5.75 : Interleaved memorija

Test pitanje 5.68

Kako se vri distribucija adresa kod interleaved memorije? Odgovor Distribucija memorijskih adresa po izdvojenim memorijskim modulima, shodno adresnim formatima sa slike 5.74, prikazana je na slici 5.76. Alternativno, umesto termina adresnog formata interleaving-odredjen-viim-adresama koristi se termin grubi-interleaving (coarse interleaving) a umesto termina interleaving-odredjen-ni`im-adresama koristi se termin fini-interleaving (fine interleaving). Izbor grubog ili finog inteleaving-a zavisi od tipa spre`ne mre`e. Fini-interleaving je efikasniji kod magistralno orijentisanih arhitektura kada se interleaved memorijski moduli odazivaju u sekvencu jedan za drugim. Grubi-interleaving je pogodniji kod sistema koji koriste krozbar spre`ne mre`e, tj. kada procesori paralelno pristupaju razli~itim memorijskim modulima.

grubi interleaving fini interleaving

Zbirka zadataka iz Mikroprocesorskih sistema

5-88

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

memorijskimodul

0

memorijskimodul

1

memorijskimodul

n

Adrese

.

.

.

.

.

.

.

.

.

.

.

.

memorijskimodul

0

memorijskimodul

1

memorijskimodul

2

memorijskimodul

n

Adrese

adresa modula

adresa u okviru

adresa u okviru modula

adresa modula

Slika 5.76 : Distribucija kod grubog i finog interleving-a

Test pitanje 5.69

Kako se koriste interleaving memorije kod sistema ~ija je magistrala poveanog obima? Odgovor Reenje kada je interleaving-odredjen-ni`im-adresama (low order interleaving) je pogodnije kod jednoprocesorskih sistema sa interleaved memorijom, kod kojih se uzastopnim memorijskim lokacijama, koje se nalaze u razli~itim memorijskim modulima, mo`e pristupiti simultano. Tako na primer, sa ~etiri modula i interleaving odredjen ni`im adresama, adrese prvog modula bie 0, 4, 8, 12, 16, .... , adrese drugog modula bie 1, 5, 9, 13, 17, .... , one koje pripadaju treem su 2, 6, 10, 14, 18,...., a ~etvrtog modula 3, 7, 11, 15, 19, .... . U optem slu~aju sa n-to-strukim interleaving-om-odredjen-ni`im-adresama, adrese prvog modula bie 0, n, 2n, 3n, ... , a isti korak va`i i za ostale module. Uobi~ajeno memorijski sistemi kod kojih je memorija podeljena na module koristi se format interleavinga-odredjen-viim-adresama. Pri ovom u datom trenutku se adresira samo jedan modul i ne postoji preklapanje izmedju memorijskih operacija. Na slici 5.77 prikazana je interleaved memorijska organizacija kod jednoprocesorskog sistema koja koristi posebnu magistralu za podatke radi povezivanja procesora i modula. Na osnovu adresa memorijskih modula selektuju se moduli, a generisane memorijske adrese sukcesivno se upisuju u adresne baferske registre. Nakon punjenja adrese, modul vri detekciju lokacije i obezbedjuje pristup tipa ~itanja ili upisa. Kod ciklusa ~itanje, nakon isteka ciklusa za pristup memoriji podaci se sukcesivno pojavljuju na magistralama za podatke. Kod ciklusa upis, podaci na magistralama za podatke generie procesor. Ovi podaci prihvataju se sukcesivno od strane memorijskih modula. Ovakva organizacija mo`e biti pogodna za ke sistem koji se takodje deli na module.

5. Memorije

5-89

CPU

Dekoderadresemodula

podaci

adresa

magistralaveeg obima

AR AR ARAR

memorijski moduli

AR - adresniregistar podaci podaci podaci

Slika 5.77 : Interleaving memorije kod sistema ~ija je magistrala poveanog obima

Test pitanje 5.70

Kako se koriste interleaving memorije kod sistema sa jedinstvenom magistralom? Odgovor Jedinstvena magistrala se mo`e koristiti i na na~in kako je to prikazano na slici 5.78. U konkretnoj realizaciji svakom memorijskom modulu pridru`en je baferski registar za podatke u kome se privremeno ~uvaju podaci koji se upisuju u modul ili se ti podaci prihvataju kada se ~itaju iz modula. Tajming ovog sistema prikazan je na slici 5.79a. Mogue je takodje istovremeno dovesti svim modulima istu adresu kako bi se ostvario pristup uzastopnim re~ima (ova varijanta izvodjenja va`i kada je adresni format interleaving-a odredjen ni`im adresama). Tajming ove varijante je prikazan na slici 5.79b.

CPU

Dekoderadresemodula

podaci

podaciadresa

AR BR BR BR BRAR ARAR

memorijski moduli

podaci podaci podaci

Slika 5.78 : Interleaving memorije kod sistema organizovan oko jedinstvene magistrale

Napomena : AR - adresni registar ; BR - baferski registar za podatke

Zbirka zadataka iz Mikroprocesorskih sistema

5-90

punjenjeadresnihregistara

pristuppodacima

vreme

memorijskimoduli

vreme pristupa

a) razli~ite adrese svakom memorijskom modulu

generisanjeadrese generisanje

naredneadrese

pristuppodacima

vreme

ciklus 1 ciklus 2memorijskimoduli

b) ista adresa svakom memorijskom modulu

Slika 5.79: Tajming kod interleaved memorije

6. Programabilne jedinice, tehnike U/I prenosa

6-1

6. Programabilne jedinice,

tehnike U/I prenosa

ö õ

Test pitanje 6.1

Mikrora~unar je povezan na tampa~ koji mo`e da otkuca 10 znakova u sekundi. [ta e se desiti ako se status tampa~a analizira svakih 200ms? Neka se znaci prihvataju preko tastature u sistem, u proseku brzinom od 10 znakova u sekundi. Me|utim vremenski interval izme|u dva pritiskanja dirki na tastaturi mo`e da bude krai, i da iznosi 60ms. Sa kojom frekvencijom je potrebno analizirati tastaturu od strane U/I programa?

Odgovor Ako se tampa~ analizira svakih 200ms, tada se tampanje usporava na samo 5 znakova u sekundi. Situacija je razli~ita sa ulaznim ure|ajem kao to je tastatura. I pored toga to se znaci prihvataju (unose u proseku) od strane sistema svakih 100ms, ulazni ure|aj (u konkretnom slu~aju to je tastatura) treba da se analizira najmanje svakih 60ms. Ina~e, postoji rizik da se u ulaznom baferu tastature jedan podatak upie preko drugog, za slu~aj da se prethodni ne pro~ita.

Test pitanje 6.2

Nacrtaj dijagram toka koji va`i za opslu`ivanje jednog ure|aja a odnosi se na tehniku prenosa podataka nazvanu “polled” U/I.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-2

Odgovor

uslu`i ure|aj

da

~itaj status

ure|ajspreman?

postavi markereuslova na osnovuvrednosti statusa

obavi drugizadatak

ne

testira se stanje markera uslova, instrukcijomuslovnog grananja

obi~no se izvodi logi~kim operacijama ilioperacijama tipa CMP

standardno se izvodi In instrukcijom

Slika 6.1 Polled U/I tehnika za opslu`ivanje jednog uredjaja

Test pitanje 6.3

Mikroprocesor analizira status U/I ure|aja svakih 20ms. Ispitivanje inicira tajmer koji prekida rad procesora svakih 20ms. Interfejs ure|aja ~ine dva porta - jedan statusni a drugi port podataka. Koliko dugo traje samo onaj deo programa koji se odnosi na analizu i opslu`ivanje ure|aja, ako je taktna frekvencija 8 MHz? Pojednostavljenja radi, usvojimo da se svi zna~ajni instrukcioni ciklusi, koji se odnose na analizu i opslu`ivanje ure|aja, izvravaju za 12 taktnih intervala.

Odgovor Da bi pro~itali status ure|aja potrebno je izvriti “ulaznu” instrukciju. Ceo ciklus instrukcije (uklju~ujui pribavljanje opkôda i ~itanje statusa) traje 12*0,125=1,5 µs. Za ispitivanje stanja statusa ure|aja potrebno je pribaviti i izvriti najmanje jo jednu instrukciju, a to zna~i dodatnih 1,5 µs, tako da je za kompletnu analizu statusa potrebno 3 µs. Ako je ure|aj spreman da prihvati novi podatak, tada CPU treba da izvri i “izlaznu” instrukciju. To zna~i jo 1,5 µs (va`i pod uslovom da je podatak koji se prenosi na izlaznom portu ve spreman za korienje u nekom od CPU-ovih registara). Imajui sve ovo u vidu, grubo posmatrano, za analizu i opslu`ivanje ure|aja potrebno je najmanje 4,5 µs, to je daleko manje od 20ms.

Test pitanje 6.4

Neka CPU mo`e da izvrava U/I instrukciju iterativnog tipa. Nakon prvog izvrenja, uklju~ujui pribavljanje opkôda, dekodiranje i pribavljanje operanda, takvoj instrukciji je potrebno samo pet taktnih intervala da bi se ponovo izvrila. Sa druge strane, ako za izvrenje iste U/I instrukcije koristimo neiterativnu U/I instrukciju, tada je potrebno 20 taktnih intervala da bi se pribavio opkôd instrukcije, a nakon toga se ona izvrava. Izra~unati efekat poveanja brzine prenosa podataka za slu~aj da se koriste iterativne instrukcije, a prenosi se blok podataka obima 128 re~i. Odgovor Kod neiterativnih instrukcija za prenos bloka podataka od 128 re~i potrebno je 20*128=2560 taktnih intervala. Kada se koristi iterativna U/I instrukcija potrebno je 5*128=640 taktnih intervala za prenos istog bloka. Poveanje brzine iznosi :

6. Programabilne jedinice, tehnike U/I prenosa

6-3

(2560-640)/2560=0,75

ili 75%, ignoriui pri tome vreme pribavljanja opkôda jedne iterativne instrukcije i odgovarajui operand, tj. broja~ petlje. Test pitanje 6.5

Neka mikroprocesorski sistem zasnovan na CPU-u 8088, u toku ciklusa INTA, prihvata preko magistrale podataka (D0-D7) vektor-broj koji se odnosi na rutinu za pru`anje usluge tampa~u. Nakon internog procesiranja, CPU odredi da se rutina za pru`anje usluga tampa~u nalazi na adresi 0132h. Kako treba organizovati oktalni bafer sa Slike 6.2, da bi se u toku INTA ciklusa prihvatio korektan kôd adrese. Odgovor Odgovarajui vektor-broj je 132/4=33 (odnosi se na CPU 8088 i njegov na~in obrade). Shodno tome, adresni kôd koji se prihvata od strane CPU-a treba da je 0010 0001. Ovo zna~i da ulazi baferskih kola koji su povezani na linijama za podatke D0 i D5, moraju biti na “visoko”, a ostali ulazi (D1, D2, D3, D4, D6 i D7) treba da se spoje na “masu” (povezivanje prikazano na Slici 6.2 ne sla`e se sa korektnim reenjem jer Slika 6.2 je samo ilustracija).

.

.

.

INTREQ

INTACK

D7-D0

+5V

+5V

INTR

CPU

Slika 6.2 : Povezivanje oktalnog bafera na sistem prekida

Test pitanje 6.6

Pojedini mikroprocesori, kakav je Motorola MC68000, prihvataju zahteve za prekid preko tri IPL (interrupt priority level) linije. Predpostavimo da se `eli implementirati ema za prihvatanje vektorskih prekida preko 11 INTR linija od kojih 5 treba da budu nemaskirajui. Kako se to mo`e izvesti ako se ugradi kolo tipa koder prioriteta 74148? Odgovor Nemaskirajuim prekidima, ukupno ih ima pet, mora biti dodeljen prioritet najvieg nivoa. Shodno tome, potrebno je sva pet zahteva za prekid najvieg prioriteta dovesti na ulaz jednog OR kola a

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-4

njegov izlaz povezati na nivo I7 kodera prioriteta 74148. Ostalih 6 (maskirajuih) linija treba povezati na ulaze I1-I6 kola 74148, shodno planiranom redosledu prioriteta (Slika 6.3).

I7

I6

I5

I1

.

.

.

INTR7

INTR11

INTR6

INTR5

INTR1

6 zahtevaza prekidkoji se mogumaskirati

5 zahtevaza prekidnajviegprioriteta

INTA

IPL0

IPL1

IPL2

O0

O1

O2

74148

MC68000 OR

OE

Slika 6.3 : Prihvatanje zahteva za prekid kod MC 68000 preko linija IPL0-IPL2

Test pitanje 6.7

Jedan ciklus magistrale CPU-a (Read ili Write) traje 6 taktna intervala. Zbog sporog vremena pristupa memoriji CPU treba da ubacuje jo dva stanja ~ekanja po magistralnom ciklusu. Kada DMA kontroler aktivira BR liniju (sl. 6.4) potrebna su dva taktna intervala da bi isti dobio pravo upravljanja nad magistralom (ovo va`i pod uslovom da ne postoji druga aktivnost na magistrali). Koliko dugo DMA kontroler treba da ~eka za dodelu magistrale, ako CPU radi sa taktnom frekvencijom od 8MHz? Da li je opravdano koristiti DMA u paketnom re`imu rada (burst mode) ako U/I ure|aj mo`e da prenosi podatke brzinom od 0,75MB/s?

BR

BG

Bus request

Bus grant

CPU

DMAsignali

(od/ka DMA kontroleru)

Slika 6.4 : DMA signali kod tipi~nog mikroprocesora

6. Programabilne jedinice, tehnike U/I prenosa

6-5

Odgovor Prvo, smatraemo da ne postoji neki drugi ciklus magistrale koji je tekue aktivan. Vreme trajanja jednog taktnog intervala (ciklusa) iznosi 125ns (1/8MHz). Da bi stekao pravo upravljanja nad magistralom U/I ure|aj mora da ~eka 2*125=250ns. Ali ako je neki ciklus magistrale u toku, U/I ure|aj mora jo dodatno da ~eka (6+2)*125=1000ns=1µs. To zna~i da U/I ure|aj mora da ~eka u vremenskom intervalu koji mo`e biti minimalno 250ns, a maksimalno 1,25µs.

Zaklju~ak: U/I ure|aj koga karakterie brzina prenosa od 0,75MB/s mo`e u konkretnom slu~aju da koristi paketni DMA re`im rada.

Test pitanje 6.8

Neka je dat sistem kod koga ciklusi magistrale (generisani od strane CPU-a ili U/I ure|aja) traju 500ns (250ns po smeru). Prenos prava upravljanja magistralom u oba smera, od CPU-a ka U/I ure|ajima i obratno, traje 500ns. Jedan od U/I ure|aja u sistemu karakterie brzina prenosa od 50kB/s i koristi DMA U/I. Podaci se prenose bajt po bajt. Usvojimo da se koristi paketni DMA re`im rada. Koliko dugo e ure|aj dr`ati magistralu kada prenosi blok du`ine 128 bajtova? Ponovi zadatak kada se koristi re`im rada kra|a ciklusa magistrale.

Odgovor Brzina prenosa od 50kB/s odgovara vremenu od 20µs po bajtu. Za blok du`ine 128 bajtova ure|aju je potrebno vreme od 20*128=2560µs=2,56ms. Ovom intervalu treba dodati vreme potrebno da se izvri prenos prava upravljanja nad magistralom (na po~etku i na kraju prenosa bloka). Ovo vreme je 500ns i malo je u odnosu na 2,56ms, pa zbog toga za prenos bloka u paketnom re`imu rada ka`emo da traje 2,56ms. Kod re`ima rada “kra|a ciklusa magistrale” DMA interfejs : (a) zahteva magistralu samo kada je potrebno vriti prenos; (b) obavlja se prenos podataka; i (c) osloba|a se magistrala.

Na osnovu prethodne diskusije, za prenos jednog bajta potrebno je sada vreme od 250+500+250=1µs. Imajui u vidu da se izme|u dva bajt prenosa magistrala osloba|a, magistrala e ukupno za prenos celog bloka, biti zauzeta samo 1*128=128µs. Ovo zna~i da e re`im rada kra|a ciklusa magistrale redukovati zauzetost magistrale za faktor 2560/128=20.

Test pitanje 6.9

Neka je dat mikrora~unarski sistem kod koga se U/I prenos podataka vri prekidnom rutinom. Prose~na brzina prenosa podataka je 8kB/s. Za obradu prekida potrebno je vreme od 100µs (uklju~uje vreme potrebno da se izvri grananje na rutinu za obradu prekida, izvrenje prekidne rutine, i povratak u glavni program). Odredi koji se deo CPU-ovog vremena troi na opslu`ivanje U/I ure|aja.

Odgovor U proseku, ure|aj prenosi samo jedan bajt u periodu 1/0.008=125µs. Da bi opslu`io ure|aj, CPU mora da potroi 100µs na obradu prekida, a to zna~i da je to 100/125=0,8 ili 80% od procesorskog vremena. Ovaj rezultat ukazuje da procesor suvie mnogo vremena troi na obradu prekida.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-6

Test pitanje 6.10

Neka U/I ure|aj iz prethodnog test pitanja ima ugra|ena dva 16-bajtna bafera i da se zahtev za prekid ka CPU-u generie onog trenutka kada se jedan od bafera napuni. Sada se rad CPU-a prekida jedanput svakih 16*0,125=2ms. Normalno, obrada prekida sada traje du`e, jer se u toku izvrenja rutine za obradu prekida vri prenos od 16 bajtova. Da bi u toku izvrenja rutine za obradu prekida CPU preneo jedan bajt, potrebno mu je vreme od 8µs. Izra~unaj deo CPU-og vremena koje se troi na opslu`ivanje U/I ure|aja.

Odgovor U toku vremenskog perioda od 2ms javlja se jedan zahtev za prekid. Vreme obrade koje prati jedan prekid iznosi sada 100+(8*15)=220µs. Ovo predstavlja 0,22/2=0,11, tj. 11% od CPU-og vremena.

Test pitanje 6.11

U centralnoj procesorskoj jedinici iz prethodna dva test pitanja implementirane su dve repetitivne U/I instrukcije (REPIN i REPOUT). Ova mogunost obezbedjuje da se odgovarajuom rutinom za obradu prekida vri prenos svakog bajta bloka podataka za samo 2µs. Koji je deo CPU-og vremena sada potreban da se opslu`i U/I ure|aj?

Odgovor U rutini za obradu prekida iz prethodna dva test pitanja za prenos svakog bajta bloka podataka koristi se softverska petlja koju ~ine nekoliko instrukcija. Ovim instrukcijama koriste se sledei putevi za prenos podataka CPU ↔ memorija i CPU ↔ U/I ure|aj. Svaku instrukciju koja pripada petlji potrebno je pribaviti i izvriti.

Sa druge strane, kod repetitivnih U/I instrukcija nema potrebe za softverskom petljom. Naime, repetitivna U/I instrukcija pribavlja se samo jedanput i ponavlja sve dok se ne izvri prenos svih 16 bajtova. Na ovaj na~in vreme obrade prekida redukuje se na 16*6=96µs. Deo vremena koje CPU potroi u odnosu na period od 2ms iznosi sada (0,22-0,096)/2=0,062 tj. 6,2%, to predstavlja faktor poboljanja od skoro dva puta u odnosu na rezultat dobijen u prethodnom test pitanju.

Test pitanje 6.12

CPU analizira U/I ure|aj svakih 10ms. Iniciranje analize se vri generisanjem zahteva za prekid od strane programibilnog tajmera. Na koju inicijalnu vrednost treba napuniti tajmer ako se on taktuje frekvencijom 2MHz?

Odgovor Perioda pobudnog takta tajmera je 0,5µs. Prema tome, 10ms odgovarae 10000/0,5=20000 taktnih impulsa. To zna~i da odgovarajui broja~ programibilnog tajmera treba napuniti na binarnu vrednost koja je ekvivalentna decimalnoj vrednosti 20000.

Zadatak 6.1

Na Slici 6.5 prikazano je serijsko interfejs kolo standarda RS-232C.

6. Programabilne jedinice, tehnike U/I prenosa

6-7

TTLnivoi

+12V

-12V

MC1488 MC1489

C1

+5V

TTLnivoi

C2

RS-232cnivoi

Slika 6.5 : Serijsko interfejs kolo standarda RS-232C

Sa ciljem da se smanje indukovane smetnje prema susednim kolima, standardom RS-232C specificira se slew-rate manji od 30V/µs. Signal na izlazu drajvera MC1488 menja se izme|u naponskih nivoa -11,75 V i +11,75V. Prelazi (u oba smera) su skoro linearni i traju 0,5µs. Da li prelazi signala (sa visoko na nisko i nisko na visoko) ispunjavaju ograni~enja koja se odnose na standard RS-232C u pogledu specificiranog slew-rate-a? Sa ciljem da se ispune zahtevi u pogledu slew-rate-a kod RS-232C, na izlazu drajvera MC1488 dodaje se kondenzator C1. Koliko treba da bude njegova aproksimativna vrednost, ako drajver generie konstantnu struju od 10mA? Odgovor U toku prelaznog stanja promena izlaznog napona iznosi 2*11,75=23,5V. Za ovu promenu imaemo slew-rate od 23,5/0,5=47V/µs, to zna~i da brzina promene ulaznog signala ne zadovoljava zahteve standarda RS-232C, tj. standardom specificirani slew-rate je 30V/µs a realni 47V/µs, tako da e indukovane smetnje prema susednim kolima biti suvie velike. Vrednost kondenzatora C odre|ujemo na osnovu relacije q=C*V, gde su q i V tovar i napon na kondenzatoru C, respektivno. Diferenciranjem po vremenu obe strane ove jedna~ine dobijamo dq/dt=C(dV/dt) tj. I=C(dV/dt) gde je I struja. Izjedna~avanjem dV/dt=30V/µs i zamenom, dobijamo C=(10/30)*10-9F ≅ 330pF. Ako ispunimo ovaj uslov, drajver MC1488 treba opteretiti ekvivalentnom kapacitivnou od 330pF. Stvarna kapacitivnost koja se vidi od strane drajvera izra~unava se istom relacijom, tj. zamenom 47V/µs za dV/dt. Rezultat koji se dobija je 210pF. Ova kapacitivnost, u sutini, predstavlja distribuiranu kapacitivnost kabla. Sa ciljem da ispunimo zahteve standarda RS-232C u pogledu slew-rate-a, neophodno je dodati spoljni kondenzator ~ija je vrednost C1=330-210=120pF. Zadatak 6.2

Princip rada predajnika i prijemnika kod asinhronog prenosa podataka, koji se zasniva na start-stop operaciji, prikazan je na Slici 6.6.

stanje mark

Dolazeisignal stanje

space

stop stanje mark

Taktprijemnika t

1 1 0 1 0 1 0

Slika 6.6: Start-stop operacije

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-8

Neka vreme prenosa jednog bita iznosi 20ms. Ako se ignoriu bilo kakva ograni~enja koja se odnose na broj bitova podataka koji se mogu preneti izme|u start i stop bitova, proceni maksimalan broj bitova koji se mo`e pouzdano primiti kada prijemnik radi sa taktnom frekvencijom od 48Hz? Odgovor Usvojimo da je po~etak start-bita takav da takt prijemnika po~inje ta~no na polovini intervala prvog bita na prijemu.

trajanje bitskog intervala na prijemu = 20 ms trajanje taktnog perioda prijemnika = 1/48 Hz ≅ 20,83 ms

Jasno se vidi sa Slika 6.7 a) da e nakon prijema prvog bita, takt prijemnika da se pomera za 0,83 ms kod svakog sukcesivnog bita. Problem se prema tome sastoji u odre|ivanju broja pomeraja koji dovode do toga da greka bude vea od 10 ms, tj.

10/0,83=12

Ovo zna~i da e nakon 12 taktnih impulsa nakon prvog doi do nepouzdanog prijema (Slika 6.7b))

start

Podaci naprijemnoj strani

t(ms)0 20 30 40

a) 10 30,83

9,17ms

t(ms)

taktprijemnika

signal naprijemnojstrani

takt prijemnika

b)

start 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300

10 30,8 51,7 72,5 93,3 114,2 135 155,8 176,7 197,5 218,3 239,2 260 280,8

t(ms)

t(ms)

Slika 6.7 : Ekstrakcija informacije na prijemnoj strani

Kao to se vidi sa Slike 8, svi bitovi do 12-og i uklju~ujui 12-i se korektno primaju. Test pitanje 6.13

Asinhroni podaci se prenose kao znaci (karakteri) na sledei na~in : pet informacionih bitova svaki trajanja po 20ms, start bit trajanja 20ms i stop bit trajanja 30ms.

6. Programabilne jedinice, tehnike U/I prenosa

6-9

Odrediti:

(a) brzinu prenosa u bps.

(b) brzinu prenosa informacije (signalna brzina) u baud-ima.

Odgovor Vreme potrebno da se prenese jedan znak=20+(5*20)+30=150ms. U toku ovog vremena prenosi se 7 bitova, pa je

brzina prenosa=7/(150⋅10-3)=46,7bps

Signalni elemenat se prenosi najkrae za 20ms, pa je stoga

signalna brzina=1/(20⋅10-3)=50bauda-a

Test pitanje 6.14

Modem prenosi informaciju koristei osmo-nivovski QAM. Ako je trajanje svakog signalnog elementa 0,8333ms, odredi :

(a) baud-ovu brzinu

(b) bitsku brzinu

Odgovor (a) Baud-ova brzina se definie kao funkcija tipa ϕ=f(1/T) gde je T vreme trajanja najkraeg signalnog elementa

Baud-ova brzina=1

0 8333 1012003, ⋅

=− bauda

(b) ako postoje osam moguih nivoa za svaki signal, tada se svaki signalni elemenat predstavlja pomou tri bita (od 000 do 111 - binarno). Prema tome tri bita se predaju svakih 0,8333ms, pa je

Bitska brzina= 03600,8333

3osavreme_prenabroj_bitov

== bps

Test pitanje 6.15

Data je mre`a od 10 ra~unara topologije tipa potpuno povezana reetka. Koliki je broj veza?

Odgovor Ako je broj ~vorova n=10, tada je ukupni broj veza:

ukupni broj veza = 452

9102

1)n(n=

⋅=

U sutini, sa 10 ~vorova, maksimalni broj veza koji se mo`e simultano koristiti je samo 5 (jednu vezu ~ini par predajnik - prijemnik). Prema tome, sa 45 veza faktor predimenzionisanja iznosi 9.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-10

Test pitanje 6.16

Podaci se prenose asinhrono sa 50bps-a. Ako se ignoriu ograni~enja koja se odnose na broj bitova koji se prenose izme|u start i stop bitova, proceniti maksimalan broj bitova koji se mo`e pouzdano primiti kada je takt prijemnika 52 Hz?

Odgovor treba da da ~italac

Test pitanje 6.17

Podaci se predaju asinhrono u obliku kratkih blokova. Jedan blok ~ini : start bit, sedam informacionih bitova, bit parnosti i stop bit. Trajanje svakog bita je 9,09ms sa izuzetkom stop bita koji traje dvaput du`e. Odrediti:

(a) Bitsku brzinu.

(b) Baud-ovu brzinu.

Odgovor treba da dâ ~italac.

Test pitanje 6.18

Signalna brzina modema pri 16-nivovskoj QAM je 1200baud-a. Izra~unaj brzinu prenosa podataka u bps.

Odgovor treba da dâ ~italac

Zadatak 6.3

8-bitni mikroprocesor mo`e da adresira 64kB memorijsko adresni prostor i 256-bajtni U/I prostor. Projektant se odlu~io da koristi izdvojeni U/I adresni prostor za pristup U/I ure|ajima.

(a) Rad sa koliko ulaznih i koliko izlaznih portova mo`e da podr`ava CPU?

(b) Pretpostavimo da se svaki U/I port mo`e koristiti kao ulazni i kao izlazni. Koliko U/I portova je mogue implementirati?

(c) Neka je potrebno samo 8 U/I portova. Pokazati kako je najjednostavnije realizovati U/I adresni dekoder.

(d) Pretpostavimo da je ukupno potrebno 16 U/I portova. Pokazati kako treba izabrati adrese portova tako da je dekodiranje U/I adresa mogue samo sa dva oktalna dekodera 74LS138 a da se pri tome ne koriste logi~ka kola tipa AND i OR, invertori i dr.

Odgovor a) ukupni broj ulaznih i izlaznih portova mo`e biti 256.

b) maksimalno je mogue implementirati 256 portova.

c) adresa porta je 8-bitna. Najjednostavnije dekodiranje je sledee:

A7 A6 A5 A4 A3 A2 A1 A0 selekcija U/I ure|aja

6. Programabilne jedinice, tehnike U/I prenosa

6-11

0 0 0 0 0 0 0 1 adresira sa prvi ure|aj

0 0 0 0 0 0 1 0 adresira sa drugi ure|aj

0 0 0 0 0 1 0 0 adresira sa trei ure|aj

0 0 0 0 1 0 0 0 adresira sa ~etvrti ure|aj

0 0 0 1 0 0 0 0 adresira sa peti ure|aj

0 0 1 0 0 0 0 0 adresira sa esti ure|aj

0 1 0 0 0 0 0 0 adresira sa sedmi ure|aj

1 0 0 0 0 0 0 0 adresira sa osmi ure|aj

d) jedno od reenja

A Y0B Y1C Y2

E1E2 Y7E3

A0A1A2

A5A6A7

.

.

.

A Y0B Y1C Y2

E1E2 Y7E3

A0A1A2

A5A7A6

.

.

.

74LS138 74LS138

Test pitanje 6.19

CPU-u je dodeljen 4MB adresni prostor za pristup memoriji i U/I ure|ajima. Sistem se koristi kod aplikacija gde kapacitet memorije ne premauje 2MB. (a) kako podeliti adresni prostor izme|u memorije i U/I tako da razdvajanje memorijskog od U/I

prostora, sa aspekta instalirane logike dekodera adrese, bude jednostavno. (b) Pretpostavimo da su potrebni posebni ~ip selekt signali za svaku memoriju kapaciteta 256kB.

Poka`i kako e se generisati ~ip selekt signali memorije. Odgovor a)

.

.

.

0

2MB

4MB

memorijskiprostor

U/I prostor

A Y0B Y1C Y2dekoder3÷8E1E2 Y7E3

A19A20A21

A22

+5V

0-255kB256-511kB512-767kB

1.791MB-2.047MB

Osam ~ip selekt signala

Test pitanje 6.20

Projektanti Intelovih procesora doga|aj nazivaju prekid. Saglasno toj notaciji izvore prekida dele na sledee tri kategorije :

(1) softverski prekidi (software interrupts)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-12

(2) hardverski prekidi (hardware interrupts) (3) izuzeci (exceptions).

Uka`i na osnovne osobine svih kategorija prekida u realnom na~inu rada za mikroprocesore i386 i navie. Odgovor (1) Softverski prekidi - iniciraju se instrukcijom INT. Na primer, instrukcija INT 10h inicira izvrenje prekida ~iji je heksadecimalni broj 10. Na~in izvo|enja prekida u realnom na~inu rada za mikroprocesor i386 prikazan je na slici 6.8 (ilustracije radi prikazan je prekid 1). Generisanje softverskih prekida sinhrono je u odnosu na tekue programsko izvrenje. Kod i386 u adresnom prostoru u realnom na~inu rada, prvih 1024 bajtova je rezervisano za vektorsku tabelu prekida. Tabela sadr`i vektore prekida za svaki od 256 moguih prekida. Kod procesora 8086 pozicija ove tabele je unapred odre|ena od strane hardvera (smetena je na po~etku adresnog prostora od adrese 0 do 1kB). Kod i386 njen po~etak (bazna adresa) odre|ena je sadr`ajem registra IDTR (Interrupt Descriptor Table Register). Kao to se vidi sa slike 6.9 IDTR ~uva baznu adresu i granicu deskriptor tabele. Nakon reseta sistema IDTR se puni na vrednost 0000h za bazu i 03FFh za granicu. Uz pomo instrukcija LIDT (Load IDTR) i SIDT (Store IDTR) mogue je promeniti vrednost baze i granice u registru IDTR (slika 6.9) i na taj na~in pomerati poziciju tabele, u realnom adresnom prostoru, na razli~ita mesta. Kao to je prikazano na slici 6.8 svaki vektor prekida u realnom na~inu rada ~ine ~etiri bajta kojim se definie adresa skoka na rutinu za obradu prekida, tj. definie format segment : ofset. Kada se javi prekid i386 po automatizmu izvodi sledeu proceduru: (a) smeta EFLAGS, CS i EIP u magacin ( kod 16-bitnog na~ina rada smeta se samo CS i IP)

prekid 255...prekid 2

prekid 1

prekid 0

obraanje po~etnojlokacije prekidne(uslu`ne) rutine

EIP 255 CS 255

...

.........

EIP 2 CS 2

EIP 1 CS 1

EIP 0 CS 0

EFLAGS

EIP

CS

i 386program za obradu prekida

magacin

tabela vektorskih prekida

memorija

pribavljanje iz vektorsketabele smetanje u registre

punjenje umagacin

ulazna ta~ka (EIP)

CS

Slika 6.8 : Prekidi u realnom na~inu rada kod i386

(b) resetuje markere uslova registra EFLAGS koji se odnose na prekid i trap,

(c) adresira vektor prekida u vektorskoj tabeli prekida koji odgovara broju prekida, i puni EIP (ili IP u 16-bitnom na~inu rada) i CS iz tabele.

(d) par CS:EIP vektora prekida odre|uje ulaznu ta~ku rutine za obradu prekida,

6. Programabilne jedinice, tehnike U/I prenosa

6-13

(e) vri se obrada specificirana rutinom za obradu prekida,

(f) povratak tekuem programu obavlja se instrukcijom IRET.

(2) Hardverski prekidi - ovi prekidi se iniciraju od strane hardverskih komponenti kao to su kruti-disk, tastatura i dr. Postoje sledea dva osnovna tipa hardverskih prekida :

(a) nemaskirajui prekidi (NMI - non maskable interrupts)

(b) maskirajui prekidi (maskable interrupt) brane se ili dozvoljavaju postavljanjem markera IE. U realnom na~inu rada to se izvodi izvrenjem instrukcija CLI i STI.

Hardverski prekidi (NMI i IRQ) nasuprot softverskim prekidima su asinhroni u odnosu na izvrenje programa. Ovo ~ini detekciju programskih greaka veoma tekom jer se ove greke javljaju u sprezi sa hardverski iniciranim prekidima.

(3) Izuzeci - iniciraju se unutar procesora. Generisanje izuzetka odgovara onom koje je sli~no softverskom prekidu. To zna~i da je broj prekidnog vektora odre|en od strane samog procesora. Izuzeci se mogu svrstati u sledee grupe : greke (faults); trapovi; i aborti.

Osnovne osobine ovih tipova izuzetaka su sledee:

(a) Greke - inicira izvrenje izuzetka pre zavretka instrukcije. Vrednost koja se puni u EIP pokazuje na prvu instrukciju tog izuzetka. Tipi~an primer je segment nije prisutan. Mikroprocesor i386 ima mogunost da napuni deo segmenta i pokua novi pristup.

(b) Trap - inicira izuzetak nakon zavretka instrukcije. Trapovi su korisni kada je instrukcija izvrena korektno, ali je potrebno prekinuti izvrenje programa. Tipi~ni primeri su prekidne ta~ke kod debagovanja programa.

TSS selektor bazna adresa TSS-a granica TSS-a

LDT selektor bazna adresa LDT-a granica LDT-a

bazna adresa IDT-a granica IDT-a

bazna adresa GDT-a granica GDT-a

TR

IDTR

GDTR

15 0 31 0 19 0

Slika 6.9 : Registri za upravljanje memorijom kod i 386

(c) aborti - nasuprot grekama i trapovima, aborti ne ukazuju uvek na adresu greke. Zbog toga obnavljanje redosleda izvrenja programa nakon aborta nije uvek mogue. U sutini aborti se samo koriste da uka`u na seriozne greke kao to su hardverske ili nekorektne sistemske tabele.

Najvei broj izuzetaka koji se javlja kod i386 va`i za zatieni na~in rada. U realnom na~inu rada koriste se sledei izuzeci:

deljenje sa nulom - izuzetak 0 korak-po-korak - izuzetak 1 prekidna ta~ka - izuzetak 3 preba~aj sa INT0 - izuzetak 4 granica - izuzetak 5 neva`ei opkod - izuzetak 6 koprocesor nije prisutan - izuzetak 7 IDT suvie mala - izuzetak 8 izuzetak magacina - izuzetak 12 greka zatite opteg tipa - izuzetak 13 greka u radu koprocesora - izuzetak 16

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-14

Test pitanje 6.21

Da li se za flopi disketu mo`e kazati da je prenosivi volume? Odgovor Flopi disketa jeste prenosivi volume. Test pitanje 6.22

Koliko je prose~ni kapacitet krutog (hard) diska vei od kapaciteta flopi diskete ? Odgovor - Ako je prose~ni kapacitet krutog diska reda 8GB-a, flopi 1,44MB tada je njihov odnos:

8 101 44

5 103

3⋅≅ ⋅

,

Test pitanje 6.23

Kakav je odnos kontroler↔drajv kod inteligentnih drajvova kakvi su IDE, SCSI ili ESDI?

Odgovor - Kontroler je deo drajva tako da drajv i kontroler formirju jednu jedinstvenu celinu. Zbog toga umesto da se kontroler ubacuje u slot-magistrale, u slot-magistrale se ubacuje host adapter. Zadatak 6.4

Za mikrora~unarski sistem zasnovan na procesoru 80x86 sa slike 6.10 napisati program za konverziju ulazne temperature zadate u stepenima Celzijusovim i odgovarajuu izlaznu temperaturu u stepenima Fahrenheitovim. Konverzija temperature vri se na osnovu sledee formule: 0F=1.8* 0C +32

Neka se ulazna temperatura meri u opsegu od -500C do +500C. Podaci o temperaturi u Celsiusovim stepenima kodirani kao ASCII znaci prihvataju se sa 8-bitnih ulaznih portova ~ije su adrese 60h, 61h, i 62h, u sledeem formatu: znak + ili - sa porta 60h, temperatura o deseti~noj vrednosti sa porta 61h, a temperatura o jedini~nim vrednostima sa porta 62h.

Prikaz rezultata se vri na trocifarskom 7-segmentnom displeju u sledeem formatu: znak + ≡ blanko ili - na izlaznom portu ~ija je adresa 80h, deseti~na vrednost temperature na portu ~ija je adresa 81h, a jedini~na vrednost na portu ~ija je adresa 82h.

Rezultat u 0F koji se izra~unava na osnovu relacije (1) zaokru`iti prema najbli`oj celobrojnoj vrednosti. Podatke o temperaturi prihvatati sa ulaznih portova i nakon obrade upisivati u izlazne portove svake sekunde. Na ulaznom pinu INTR procesor prihvata zahteve za prekid svakih 10ms. Izgled 7-segmentnog displeja i odgovarajui komandni bajt prikazani su na slici 6.11.

Program za konverziju temperature koji uklju~uje aktivnosti: brojanje vremenskog intervala do 1s, prihvatanje ulaznih podataka o temperaturi, obrada podataka, i pobuda displeja napisati kao prekidni.

6. Programabilne jedinice, tehnike U/I prenosa

6-15

ROM RAM

ulazni portovi

60h, 61h, 62hizlazni portovi80h, 81h, 82h

satnimehanizam

80x86

INTR

10ms

sistemska magistrala

Slika 6.10 : Mikrora~unarski sistem

f

a

b

g

c

e

d

t

t g f e d c b a

b) komandni bajt

* t - se odnosi na prikaz decimalne ta~ke

a) segmentidispleja

Slika 6.11: Raspored segmenata kod 7-segmentnog displeja i odgovarajui komandni bajt

Test pitanje 6.24

TV monitor ima vertikalnu rezoluciju od 400 linija. Monitor se koristi za prikaz znakova u formatu 5*7. Koliko redova (vrsta) znakova je mogue prikazati na ekranu CRT-a? Usvojimo da je razmak izme|u redova tri analizatorske linije.

Odgovor Za prikaz svakog reda potrebno je 7+3=10 analizatorskih linija (uklju~ujui i razmak izme|u redova). Prema tome ukupno je mogue prikazati 400/10=40 redova znakova.

Test pitanje 6.25

Kod klasi~nog TV monitora odredi horizontalnu rezoluciju koja odgovara rezoluciji od 80 znakova po redu. Usvojimo da razmak izme|u znakova u redu iznosi jedna ta~ka (pixel).

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-16

Odgovor U horizontalnom pravcu, svakom znaku je potrebno pet ta~aka za njegovo formiranje i jedna ta~ka za razmak, ~to ukupno ~ini 6 ta~aka. Za prikaz 80 znakova potreban broj ta~kica po analizatorskoj liniji iznosi 6*80=480. Prema tome rezolucija TV monitora ( iz ovog i prethodnog zadatka) iznosi 480*400 pixela. Ukupni broj znakova koji se mogu prikazati ( u formatu 7*5) iznosi 40*80=3200.

Test pitanje 6.26

Identifukuj osnovne gradivne blokove jedinice za napajanje.

Odgovor

u

tu

tu

tu

t

u

tu

t

zatita od prenapona

transformator

ispravlja~

filtar

regulator

220V AC, 50 Hz

Test pitanje 6.27

Nacrtaj talasne dijagrame interfejs kola sa slike 6.12 u karakteristi~nim ta~kama markiranim simbolom '*'. Kolo sa slike 6.12 se koristi za generisanje pobudnih taktnih impulsa kod nekog mikrora~unara.

6. Programabilne jedinice, tehnike U/I prenosa

6-17

16 MHz

4 Mhz

*

****

***

*oscilator broja~ modula 16

dekoder2:4

8 MHz

2 MHz 1 MHz

F 1 F 2 F 3 F 4

Slika 6.12 : Blok dijagram interfejs kola za generisanje taktnih impulsa

Odgovor

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1616 MHz

8 MHz

4 MHz

2 MHz

1 MHz

F 1

F 2

F 3

F 4

Slika 6.13 : Talasni dijagrami

Test pitanje 6.28

U kom na~inu rada (Mode) je definisan da radi i kako su konfigurisani U/I portovi A, B i C ~ipa PIA 8255A nakon to je u njegov upravlja~ki registar upisana vrednost 82h?

Odgovor Funkcija bitova upravlja~ke re~i ~ipa 8255A je prikazana na slici 6.14.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-18

D7 D6 D5 D4 D3 D2 D1 D0

port C (ni`i)1 - ulaz0 - izlaz

port B1 - ulaz0 - izlaz

selekcija Mode0 - Mode 01 - Mode 1

grupa B

port C (vii)1 - ulaz0 - izlaz

port A1 - ulaz0 - izlaz

selekcija Mode00 - Mode 001 - Mode 11x - Mode 2

grupa A

Mode set flag1 - aktivan

Slika 6.14: Funkcija bitova upravlja~ke re~i kod 8255A

Binarni sadr`aj upravlja~kog registra je :

Na~in rada portova ~ipa 8255 je sledei:

D7=1 bira se Mode tj. na~in rada za portove: D0=0 - ni`a ~etiri bita PORT C su izlazi D1=1 - PORT B je ulazni D2=0 - Za grupu B izabran je Mode 0 D3=0 - via ~etiri bita PORT C su izlazi D4=0 - PORT A je izlazni D6D5=00 - za grupu A izabran je Mode 0

8

4

4

8

PA7-PA0

PC7-PC4

PC3-PC0

PB7-PB08255A

D7-D0

grupa AMode 0

grupa BMode 0

Slika 6.15 Na~in konfigurisanja 8255A nakon upisa upravlja~ke re~i 82h.

1 0 0 0 0 0 1 0

D7 D6 D5 D4 D3 D2 D1 D0

6. Programabilne jedinice, tehnike U/I prenosa

6-19

Test pitanje 6.29

Na Slici 6.16 prikazan je na~in povezivanja grupe od osam programibilnih perifernih interfejs kola tipa PIA 8255. Kako se pristupa PORT-u C kola PIA 14?

CS 0

D0-D7

A0 8255A

A1

RD

WR

2

4

6

8

10

1214

A0 00

A1

A2

E1 8205

E2

E3

07

Ka ostalimperiferijama na

parnimadresama

D0-D7

A3

A4

A5

A0

WR

RD

A2

A1

Mag. podat. D0-D7

Adr mag. A0-A15

Upr. mag.

Port B

Port A

Port C

IO/M

Slika 6.16 Na~in povezivanja osam PIA 8255A

Odgovor Da bi se dozvolio rad PIA 14 potrebno je da dekoder 8205 postavi izlaz 07 na logi~ku 0. Shodno na~inu povezivanja potrebno je da A0=0 (dozvoljava se rad dekoderu 8205) a adrese A4A5A3=111. Port C PIA 14 se selektuje pri A2A1=10 (pristup PORT-u C). Ostale adrese nisu od va`nosti.

Test pitanje 6.30

Neka je na slici 6.16 (prethodno test pitanje) PIA 14 konfigurisana tako da je PORT A izlazni a PORT-ovi B i C kao ulazni. Svi portovi su postavljeni za MODE 0. Napisati programsku sekvencu koja prihvata stanje sa ulaznih portova B i C, odre|uje razliku C-B, i upisuje razliku na izlazni PORT A.

Odgovor Shodno Slici 6.16, adrese triju U/I portova PIA 14 su:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-20

PORT A = 00111000 = 38h

PORT B = 00111010 = 3Ah

PORT C = 00111100 = 3Ch

Portovi B i C se mogu ~itati sledeom sekvencom

In AL,3Ah ; ~itanje PORT-a B

Mov BL,AL ; privremeno ~uvanje u BL In AL,3Ch ; ~itanje PORT-a C Sub AL,BL ; formiranje razlike Out 38h,Al ; upis u PORT A

Test pitanje 6.31

Koji U/I port sa slike 6.17 se bira kada je memorijska adresa 00402h.

CS 0

D0-D7

A0 8255A

A1

RD

WR

2

4

6

8

10

1214

A0 00

A1

A2

E1 8205

E2

E3

07

Ka ostalimperiferijama na

parnimadresama

D0-D7

A10

A14

A3

A4

A5

A0

WR

RD

A2

A1

Mag. podat. D0-D7

Adr mag. A0-A15

Upr. mag.

Port B

Port A

Port C

Slika 6.17 Na~in povezivanja osam PIA 8255A koristei memorijsko preslikane U/I portove

Odgovor Memorijska adresa 00402h ima sledei binarni oblik:

A19...A1A0 = 0000 0000 0100 0000 0011

Kod ove adrese bitovi A14=0, A10=1, A0=0 to zna~i da je rad dekodera 8205 dozvoljen. S obzirom da je selektorski kd A5A4A3 = 000, bie aktivan izlaz O0 tj. bira se PIA 0.

6. Programabilne jedinice, tehnike U/I prenosa

6-21

Adresni ulazi koji se dovode na ulaze za selekciju portova PIA su A2A1 = 01, a to zna~i da se pristupa PORT-u B. Prema tome adresom 00402h selelktuje se PORT B koji pripada ~ipu PIA 0.

Test pitanje 6.32

Napisati sekvencu instrukcija potrebnu za inicijalizaciju upravlja~kog registra PIA 0 strukture sa slike 6.17, tako da PORT A bude izlazni, a PORT-ovi B i C ulazni. Svi portovi su inicijalizirani u Mode 0.

Odgovor Na osnovu sadr`aja slike 6.17 odredjujemo da je memorijska adresa upravlja~kog registra PIA 0 Adr_Con_Reg_PIA_0 = 00406h, a sadr`aj upravlja~ke re~i 8Bh. S obzirom da je PIA 0 memorijsko-preslikana za inicijalizaciju ove periferije koristi se instrukcija Mov na sledei na~in:

Mov AX,0h ; kreira se segment podataka Mov DS,AX ; na 00000h Mov AL,8Bh ; upravlja~ki bajt u AL Mov [406h],AL ; upis upravlja~kog bajta u PIA 0 Test pitanje 6.33 Neka je PIA 0 sa slike 6.17 konfigurisana kao u prethodnom primeru. Napisati programsku sekvencu kojom se ~ita sadr`aj PORT-ova B i C, nakon toga se nad njihovim sadr`ajem sa vri AND operacija a rezultat dobijene operacije upisuje u PORT A. Odgovor Sa sl. 2 vidimo da su adrese triju U/I portova kod PIA 0 sledee :

PORT A = 00400h PORT B = 00402h PORT C = 00404h Sada je potrebno postaviti segment podataka na vrednost 00000h i pro~itati podatke sa PORT-ova B i C.

Mov AX,0h ; kreiraj segment podataka Mov DS,AX ; na 00000h Mov BL,[402h] ; ~itanje PORT-a B Mov AL,[404h] ; ~itanje PORT-a C And AL,BL ; AND operacija nad podacima PORT-ova B i C Mov [400h],AL ; upis u PORT A

Zadatak 6.5

Tri ure|aja A, B i C povezana su preko sistemske magistrale na procesor. U/I prenos za sva tri ure|aja ostvaruje se prekidnom tehnikom. Gnje`|enje za ure|aje A i B nije dozvoljeno, ali se zahtevi za prekid generisani od strane C-a mogu prihvatati bilo da se opslu`uje A ili B. Uka`i na na~ine kako se mo`e ovo ostvariti za svaki od sledea dva slu~aja:

a) procesor ima jednu INTR liniju i nema mogunost vektorskog prekida.

b) procesor ima dve dostupne linije preko kojih prihvata zahteve za prekid, INTR1 i INTR2, pri ~emu INTR1 ima vii prioritet.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-22

Specificiraj za svaki od slu~aja (a) i (b) kada se i kako prekidi brane i dozvoljavaju.

Zadatak 6.6

Industrijsko postrojenje koristi vei broj senzora kojim se nadgleda temperatura, pritisak, vla`nost i dr. Izlazi senzora su tipa ON/OFF to zna~i da se aktiviraju kada parametar koji se meri pre|e odre|enu granicu. Formirati grupu od osam senzora i povezati ih preko odgovarajue interfejs logike na magistralu ra~unara.

(a) Izvri projektovanje odgovarajue interfejs logike tako da se stanje svih osam senzora mo`e simultano ~itati kao jedinstveni bajt na adresi 1770208. Usvojiti da je magistrala sinhrona i da va`i vremenski dijagram sa slike 6.18.

(b) Za slu~aj da je magistrala asinhrona a prenos podataka je regulisan handshake signalima (sl. 6.19) ponovi problem pod (a).

T

T3T2T1takt

CPU-a

adrese

takt magi-strale

READ

magistrala podatakava`ei podaci

slika 6.18 : Magistralni ciklus ~itanje kod sinhrone magistrale

ciklus magistrale

t0 t1 t2 t3 t4

adrese +upravlja~ki signali

Ready

Accept

podaci

Slika 6.19 : Magistralni ciklus ~itanje kod asinhrone magistrale kada je prenos regulisan handshake signalima.

Napomena : Signal Ready postavlja CPU u trenutku t1 ~ime obavetava U/I ure|aj da su adrese va`ee. U/I ure|aj, prihvata signal Ready u trenutku t2, prethodno je dekodirao adrese i tip ciklusa (tj. ~itanje), i postavlja Accept na logi~ku 1. U trenutku t2 U/I ure|aj aktivira svoje izlazne bafere i definie stanje na magistrali podataka. U trenutku t3

6. Programabilne jedinice, tehnike U/I prenosa

6-23

CPU prihvata signal Accept koji mu ukazuje da su signali na magistrali za podatke va`ei. Nakon toga CPU prihvata podatke i upisuje ih u svoj izlazni bafer (tipa DBR). U trenutku t4 CPU deaktivira signale na adresnoj i upravlja~koj magistrali. Nakon to je detektovao prerlaz sa 1 na 0 koji se odnosi na stanje signala Ready, trenutak t5, U/I interfejs deaktivira signal Accept kao i svoj izlazni bafer (magistrala podataka prelazi u tree stanje).

Zadatak 6.7

Izvri projektovanje odgovarajueg interfejsa preko koga se povezuje sedmo-segmentni displej kao izlazni ure|aj na:

(a) sinhronoj magistrali

(b) asinhronoj magistrali koja koristi handshake signale.

Talasni dijagrami koj va`e za operaciju upis kod sinhrone i asinhrone magistrale prikazani su na slici 6.20 i slici 6.21, respektivno.

T

T3T2T1takt

CPU-a

adrese

takt magi-strale

Write

podaci

Slika 6.20 : Magistralni ciklus Upis kod sinhrone magistrale

ciklus magistrale

t0

adrese +upravlja~ki signali

Accept

Ready

podaci

t1 t2 t3 t4 t5

Slika 6.21: Magistralni ciklus Upis kod asinhrone magistrale kada je prenos regulisan handshake signalima (Ready i Accept).

Test pitanje 6.34

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-24

Neka je data LED kod koje je Vf=2V pri If=10mA. LED se pobu|uje preko TTL invertora kako je to prikazano na sl. 6.22. Odredi vrednost serijskog otpornika R ako je napon zasienja Vce na izlazu invertora 0,3V.

Vcc=+5V

R

ulaz

TTLinvertor

LED

Slika 6.22 : LED koji se pobu|uje preko TTL invertora

Odgovor Vrednost otpornika se odre|uje na osnovu relacije:

R=(Vcc-Vf-Vce)/ If

zamenom vrednosti dobiemo:

R=(5-2-0,3)/ 0,01=270Ω

LED se aktivira samo kada je ulaz TTL invertora na visoko. Pod tim uslovom izlaz invertora deluje kao strujni ponor. Kada je ulaz invertora na nisko, njegov izlaz se nalazi na aproksimativno 3,5V pa je LED u neprovodnom stanju.

Zadatak 6.8

Vreme trajanja odgovarajuih aktivnosti koje prate prihvatanje i obradu zahteva za prekid prikazani su na slici 6.23. Trajanje taktnog intervala iznosi 10ns.

aktivnost trajanje u taktnim intervalima • zavretak najdu`e instrukcije

50 (t2)

• aktiviranje CPU-ovog ulaza INTR nakon to je spoljni ure|aj aktivirao IRQ

2 (t1)

• aktiviranje INTA i prihvatanje vektor broja

16 (t3)

• smetanje sadr`aja CPU-ovih registara u magacin

60 (t4)

• obrada vektor broja od strane CPU-a i pribavljanje po~etne adrese prekidne rutine iz vektor tabele

52 (t5)

• vreme potrebno da CPU u prekidnoj rutini ispita status U/I ure|aja kod tehnike "polling"

40 (t6)

Slika 6.23 : Aktivnosti koje prate obradu prekida

Napomena: (ti) se odnosi na vreme trajanja i-tog taktnog intervala, tj. ti=n*tcp, gde je n broj taktnih intervala, tcp=10ns

Ukupno je na sistem povezano osam U/I ure|aja koji mogu generisati zahtev za prekid.

6. Programabilne jedinice, tehnike U/I prenosa

6-25

a) Neka se svi zahtevi za prekid prihvataju preko jedinstvene linije (sl. 6.24) a nakon prihvatanja zahteva za prekid sistem koristi tehniku "polling" da bi odredio koji je uredjaj inicirao zahtev za prekid.

IRQ8IRQ2

+VCC

IRQ1

CPU

INTR

Slika 6.24 : Prihvatanje zahteva za prekid preko jedinstvene linije

Odredi vreme odziva u najgorem slu~aju, onog ure|aja koji ima najni`i prioritet opslu`ivanja. Usvojiti da ne postoje zahtevi za prekid koji su se javili a nisu uslu`eni (pending interrupts).

b) Odrediti u najgorem slu~aju, vreme odziva na zahtev za prekid onog ure|aja ~iji je prioritet opslu`ivanja najvii ako se zahtevi za prekid prihvataju preko kodera prioriteta (sl. 6.25). Usvojiti da ne postoje zahtevi za prekid koji su se javili a nisu uslu`eni.

vektorbroj

INTR

INTA

koder

prioriteta .

.

.

CPU

IRQ1

IRQ2

IRQ8

Slika 6.25 : Predaja vektor broja preko bloka koder prioriteta

c) U kom se opsegu nalazi vreme odziva opslu`ivanja zahteva za prekid ure|aja sa najviim i najni`im prioritetom kod tehnike vektorskog prekida ako verovatnoa instrukcija koja se tekue mo`e izvriti za 20, 10 ili 6 taktnih intervala, iznosi 20, 30 i 50 procenata respektivno.

Odgovor a) Scenario doga|aja prihvatanja i opslu`ivanja zahteva za prekid kod tehnike polling mo`e se objasniti shodno sl. 6.26.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-26

50 taktnihintervala

(t2)

mikroop.

instrukcijakoja setekue

opslu`uje

INTR 123

40 taktnih

intervala(t6)

smetanje CPU-ovihregistara u magacin

status U/I

ure|aja sa najviimprioritetom

status U/I

ure|aja sa predzadnjimprioritetom

opslu`i ure|aj sanajviim prioritetom

opslu`i ure|aj sapredzadnjim prioritetom

opslu`i ure|aj sanajni`im prioritetom

izbavljanje CPU-ovihregistara iz magacina

ne postoji

zahtev

postoji zahtev

postoji zahtev

najni`i prioritet

prihvatanje zahteva zaprekid

40 taktnih

intervala(t6)

60 taktnihintervala (t4)

U/I ure|ajIRQ

program koji seprekida

2 taktnaintervala

(t1)

Slika 6.26 : Scenario doga|aja kod "polled" tehnike

Vreme opslu`ivanja U/I ure|aja sa najni`im prioritetom u najgorem slu~aju iznosi:

Tup=t1+t2+t4+7t6=(2+50+60+7*40)*10ns

Tup=392*10ns=3920ns=3,92µs

Najgori slu~aj zna~i neposredno pre zavretka t1 po~inje izvrenje najdu`e instrukcije koja traja t2

b) Scenario doga|aja do po~etka opslu`ivanja U/I ure|aja sa najviim prioritetom koji je generisao zahtev za prekid u obliku vremenskog dijagrama prikazan je na slici 6.27.

t1 t2 t3 t4 t5

Slika 6.27 : Vremenski redosled doga|aja kod vektorskog prekida

Tuv=t1+t2+t3+t4+t5=2+50+16+60+52=180ns

Treba istai da je kod vektorske tehnike za slu~aj kada ne postoji drugi zahtev za prekid vreme opslu`ivanja U/I ure|aja sa najni`im i najviim prioritetom identi~no, tj. Tuv=180ns.

6. Programabilne jedinice, tehnike U/I prenosa

6-27

c) Ve smo konstatovali da je trenutak opslu`ivanja U/I ure|aja sa najviim ili najni`im prioritetom, kada na postoje drugi zahtevi za prekid kod vektorske tehnike identi~an. Analizirajui sliku 4 zaklju~ujemo da se jedino mo`e menjati interval t2. Prose~no vreme odziva bie:

Tuvp=t1+t3+t4+T5+0.2*20+0.3*10+0.5*6=130+4+3+3=141ns

Najkrae vreme odziva bie:

Tuvmin=130+6=136ns

Najdu`e vreme odziva

Tuvmax=130+20=150ns

Shodno prethodnom, vreme odziva se nalazi u opsegu od 136ns do 150ns.

Zadatak 6.9

Od trenutka generisanja zahteva za prekid IRQ, od strane U/I ure|aja, do po~etka izvrenja prve instrukcije prekidne rutine pro|e vreme od 30µs. Prose~no, prekidna rutina se izvrava za 150µs. U sutini, ~isti programski kd za opslu`ivanje U/I ure|aja se izvrava za 135µs a ostalih 15µs je re`ijsko vreme koje uklju~uje smetanje sadr`aja CPU-ovih registara u magacin (operacija Push) i izbavljanje sadr`aja CPU-ovih registara iz magacina (operacija Pop).

a) Odredi u procentima ukupno neproduktivno vreme koje se troi na opslu`ivanje ure|aja.

b) Ako se kod nekog realnog sistema prekidi javljaju 750 puta u sekundi odrediti koji se deo CPU-ovog vremena troi na opslu`ivanje ure|aja.

Odgovor

a) Scenario doga|aja kod vektorskog prekida je sledei:

gde su:

• t1 - period od trenutka kada se aktivira IRQ do trenutka kada INTR postane tako|e aktivan.

• t2 - period potreban da zavri izvrenje tekue instrukcije

• t3 - period od aktiviranja INTA do prihvatanja vektor broja.

• t4 - re`ijsko vreme Push i Pop operacija

• tob - vreme obrade prekida - ~isti programski kd

Usvojimo da je t1+t2=t3=15µs. To zna~i da se CPU aktivira na obradu zahteva za prekid nakon 15µs od trenutka generisanja zahteva za prekid IRQ. Ukupno CPU je zauzet na obradu prekida:

TCPU=t3+t4/2+tob+t4/2=15+7.5+135+7.5=165µs.

Neproduktivno vreme je 30µs (uklju~uje 53+t4/2+t4/2), i iznosi u procentima :

k=30/165=0.19⇒19%

b) Ako se u toku 1s javi se 750 prekida tada je za opslu`ivanje U/I ure|aja CPU ukupno zauzet TΣ=750*TCPU=123,720ms

30µs 7.5µs 135µs 7.5µs

t1 t2 t3 t4/2 tob t4/2

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-28

Zadatak 6.10

Ako se vri prenos bloka podataka koji se ne mo`e prekidati tada se u zna~ajnoj meri produ`ava vreme odziva sistema na prekid. Prvi razlog mo`e biti instrukcija tipa Movs (move string) kojom se vri prenos bloka podataka iz skupa uzastopnih memorijskih (ili U/I) lokacija u drugu memorijsku (ili U/I) oblast. Drugi razlog mo`e biti ako se zahtev za prekid ne prihvata sve dok DMA kontroler ne prepusti pravo upravljanja nad magistralom CPU-u. Zbog navedena dva razloga kada je odziv sistema na prekid sa aspekta aplikacije kriti~an neophodno je ograni~iti maksimalnu du`inu bloka podataka koji e se bez prekidanja prenositi.

Neka je u sistem ugra|en DMA kontroler koji mo`e prenositi podatke brzinom od 20MB/s, pri ~emu se DMA prenos ne mo`e prekidati. Neka tako|e u svom repertoaru CPU ima ugra|enu instrukciju Movs koju koristi da bi popunio 128-bajtni U/I bafer ure|aja. CPU se taktuje frekvencijom 50MHz.

a) Za koliki vremenski period prenos bloka podataka koji vri instrukcija Movs povea vreme odziva sistema na prekid?

b) DMA kontroler prenosi blok podataka veli~ine 256 bajtova. Za koliki vremenski period prenos bloka podataka poveava vreme odziva sistema na prekid?

c) Neka se zahtev za prekid mora prihvatiti najdu`e u okviru 10µs. Na koju se maksimalnu du`inu mora ograni~iti blok podataka ako se koristi: (i) DMA prenos; i (ii) Movs instrukcija. Ignorisati vreme potrebno da se zavri tekua instrukcija, prihvati vektor broj, pribavi po~etna adresa prekidne rutine i smeta/izbavi sadr`aj CPU-ovih ragistra u/iz magacina.

Napomena: Usvojiti da je perioda sistemskog takta 20ns. Instrukcijom Movs se prenosi 16-bitni podatak. Movs se izvrava za period od 15 taktnih intervala.

Odgovor a) Vreme odziva sistema na zahtev za prekid u najgorem slu~aju jednako je vremenu koje je potrebno da se prenese ceo blok podataka pomou instrukcije Movs

T1=(128/2)*15*20ns=19.2µs

b) kada je prenos tipa DMA, vreme odziva sistema T2

T2256

1sBajtova1020 6

=⋅

T2= 8.121020

2566 =

⋅µs

c) imajui u vidu da su vremena T1 i T2 vea od 10µs prihvatljiva bi bila ona reenja koja bi zbog jednostavnije realizacije koristila prenose blokova dva puta manjeg obima, tj. 64B i 128B. U tom slu~aju imali bi T1'=9.6µs a T2'=6.4µs.

Zadatak 6.11

Jedna od klju~nih karakteristika DMA kontrolera je brzina sa kojom kontroler mo`e da prenosi podatke ka/iz memorije. U sutini stvarna DMA brzina zavisi ipak i od brzine memorije. Naime ~esto je potrebno usporiti rad DMA kontrolera tako da se njegova brzina rada uskladi sa brzinom rada memorije. U principu, rad DMA kontrolera mo`e se usporiti na jedan od sledea dva na~ina: (i) kada se smanji njegova taktna u~estanost; i (ii) kada se ubace stanja ~ekanja. Jedan tipi~an DMA kontroler je integrisano kolo 8237A nazvan DMAC. Na sli~an na~in kao i CPU iz serije 80x86 ciklusi ~itanja i upisa DMAC-a sastoje se iz ~etiri stanja, a trajanje svakog stanja ekvivalentno je

6. Programabilne jedinice, tehnike U/I prenosa

6-29

periodu od jednog taktnog intervala. DMAC 8237A uzorkuje svoj ulaz READY u toku stanja T3 i ubacuje stanje ~ekanja ako je ulaz READY na nisko. Sve dok se READY ne postavi na visoko vri se ubacivanje stanja ~ekanja.

a) Usvojimo da je memorija br`a od DMAC-a 8237A. Koja je maksimalna mogua brzina DMA prenosa podataka ako se DMAC taktuje frekvencijom 4MHz?

b) Kada se DMAC 8237A taktuje frekvencijom od 4MHz, tada kontroler obezbedjuje generisanje Read Strobe impulsa irine 250ns. Za slu~aj kada memorija zahteva da ovaj impuls minimalno traje 350ns, koliko stanja ~ekanja je potrebno ubaciti u toku svakog DMA ciklusa ~itanja?

Odgovor a) Vreme trajanja jednog DMA ciklusa(traje ~etiri taktna intervala) pri taktnoj pobudi DMAC-a od 4MHz iznosi

TDMA=4*250=1µs

To zna~i da je brzina prenosa 1MB/s

b) Kada je vreme pristupa memoriji 350ns a trajanje jednog taktnog intervala 250ns tada je potrebno ubaciti jedno stanje ~ekanja, tako da DMA ciklus sada traje;

T'DMA=5*250=1,25µs

Brzina prenosa podataka sada iznosi (1/1.25)MB/s ≈ 0.8MB/s

Zadatak 6.12

Usvojimo da su DMAC-u potrebna tri taktna intervala po DMA ciklusu. U toku DMA ciklusa DMAC prenosi informaciju od jednog bajta izme|u memorije i U/I ure|aja. Neka taktna frekvencija DMAC-a bude 5MHz. Koliko dugo traje prenos jednog bajta? Koja se maksimalna brzina prenosa mo`e ostvariti? Usvojimo da memorija nije dovoljno brza i da je potrebno ubacivati dva stanja ~ekanja po DMA ciklusu. Koja je stvarna brzina prenosa u tom slu~aju?

Odgovor Trajanje taktnog intervala DMAC-a iznosi 200ns. Prenos jednog bajta se obavlja za 3*200=600ns.

Maksimalna brzina prenosa koja se mo`e postii iznosi (1/0.6)MB/s=1.6MB/s

Ako je memorijski ciklus ~itanja ili upisa du`i od 600ns potrebno je ubacivati stanja ~ekanja, to se ostvaruje manipulisanjem stanja na liniji READY. Drugim re~ima potrebno je usporiti DMA cikluse. Na primer, ubacivanje dva stanja ~ekanja dovee da se DMA ciklus produ`i na (3+2)*200=1000ns=1µs. Kao rezultat brzina prenosa podataka redukovae se na 1MB/s.

Zadatak 6.13

Neka ukupno vreme trajanja memorijskog ciklusa ~itanja ili upis bude 750ns, a DMAC-u su potrebna tri taktna intervala po DMA ciklusu. Do koje vrednosti treba sniziti taktnu u~estanost DMA kontrolera tako da se ne uti~e na brzinu prenosa koja odgovara vremenu trajanja memorijskog ciklusa od 750ns.

Odgovor

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-30

Sve dok je DMA ciklus du`i od 750ns nema potrebe za ubacivanjem stanja ~ekanja. Period od 750ns odgovara taktnom periodu od 750/3=250ns, tj. taktnoj frekvenciji od 4MHz.

Zadatak 6.14

DMA kontroler opslu`uje ~etiri telekomunikaciona ulazna kanala (jedan po DMA kanalu). Brzina prenosa po telekomunikacionom kanalu je 64kb/s. U kom re`imu rada treba da radi DMAC: burst mode ili kra|a ciklusa (cycle stealing mode)? Koju emu prioriteta opslu`ivanja treba koristiti za opslu`ivanje DMA kanala?

Odgovor U konkretnom slu~aju U/I ure|aji su sami komunikacioni kanali. Brzina prenosa od 64kb/s odgovara brzini od 8kB/s. To zna~i da se po svakom kanalu prima jedan bajt na svakih 125µs. Burst mode je neprihvatljivo reenje jer podaci pristi`u neprekidno pa kada DMAC zauzme magistralu CPU nee imati anse da je koristi. Zbog toga reenje koje se zasniva na kra|i ciklusa je prihvatljivo. U toku vremenskog perioda od 125µs DMAC treba da izvri prenos od ~etiri bajta. ^ak i ako usvojimo da je za prenos jednog bajta potrebno vreme od 2µs, CPU-u ostaje puno vremena da obavi druge aktivnosti, tj. 125-2*4=117µs

Imajui u vidu da se po svim kanalima prenose podaci istom brzinom, potrebno je koristiti emu koja koristi da svim kanalima pru`a istu ansu u toku opslu`ivanja. Ovo zna~i da je najbolje koristiti selekciju koja se zasniva na emi sa rotirajuim prioritetom.

Test pitanje 6.35

Koje ulazno-izlazne instrukcije se koriste kod mikroprocesora 80x86 sa aspekta formata i obima podataka koji se prenosi.

Odgovor Instrukcije In i Ins

Format In dest, source funkcija

(1) In AL,#p8 8-bitni podatak se unosi u AL preko porta p8 ~ija je adresa 8-bitna

(2) In AX,#p8 16-bitni podatak se unosi u AX preko porta p8 ~ija je adresa 8-bitna

(3) In EAX,#p8 32-bitni podatak se unosi u EAX preko porta p8 ~ija je adresa 8-bitna

(4) In AL,DX 8-bitni podatak se unosi u AL preko porta ~iju adresu definie sadr`aj registra DX

(5) In AX,DX 16-bitni podatak se unosi u AX preko porta ~iju adresu definie sadr`aj registra DX

(6) In EAX,DX 32-bitni podatak se unosi u EAX preko porta ~iju adresu definie sadr`aj registra DX

(7) Insb ES:[DI]= [DX] ;DI = DI + 1 prenos bajta

(8) Insw ES:[DI] = [DX] ; DI = DI + 2 prenos re~i

(9) Insd ES:[DI] = [DX] ; DI = DI + 4 prenos duple re~i

(10) Ins POD1 ES:[DI] = [DX] ; DI = DI + 1 ako je POD1 bajt

6. Programabilne jedinice, tehnike U/I prenosa

6-31

(11) Ins POD2 ES:[DI] = [DX] ; DI = DI + 2 ako je POD2 re~

(12) Ins POD3 ES:[DI] = [DX] ; DI = DI + 4 ako je POD3 dupla re~

Napomena: Sve instrukcije tipa Ins (formati (7) do (12)) dostupne su samo kod mikroprocesora 80386/80486/Pentium/Pentium Pro,..

Po analogiji postoje sledee izlazne instrukcije:

format Out dest, source funkcije

(1) Out #p8,AL (AL) → port ~ija je 8-bitna adresa definisana portom p8

(2) Out #p8,AX (AX) →port ~ija je 8-bitna adresa definisana portom p8

(3) Out #p8,EAX (EAX) → port ~ija je 8-bitna adresa definisana portom p8

(4) Out DX,AL (AL) → port ~iju 16-bitnu adresu definie sadr`aj registra DX

(5) Out DX,AX (AX) → port ~iju 16-bitnu adresu definie sadr`aj registra DX

(6) Out DX,EAL (EAL) → port ~iju 16-bitnu adresu definie sadr`aj registra DX

(7) Outsb [DX] = DS:[SI]; SI = SI + 1 prenos bajta

(8) Outsw [DX] = DS:[SI]; SI = SI + 2 prenos re~i

(9) Outsd [DX] = DS:[SI]; SI = SI + 4 prenos duple re~i

(10) Outs POD1 [DX] = DS:[SI]; SI = SI + 1 ako je POD1 bajt

(11) Outs POD2 [DX] = DS:[SI]; SI = SI + 2 ako je POD2 re~

(12) Outs POD3 [DX] = DS:[SI]; SI = SI + 4 ako je POD3 dupla re~

Napomena: [DX] ukazuje da se u DX ~uva adresa ulazno-izlaznog uredjaja. Sve instrukcije Outs (od formata (7) do (12)) dostupne su samo kod mikroprocesora 80386/80486/Pentium/Pentium Pro,...

Test pitanje 6.36

Kod mikrora~unarskog sistema zasnovan na procesoru 8088 port adresa 22h koristi se kao ulazni port za prihvatanje podataka o izmerenoj temperaturi. Napisati sekvencu na asemblerskom jeziku koja kontinualno prihvata podatke sa port adrese 22h i kada temperatura dostigne 120oC upisati u registar BH ASCII kd znaka Y i pozvati potprogram ALARM.

Odgovor :

PONOVI: In AL,22h ; pro~itaj podatak o temperaturi sa porta # 22 h

Cmp AL,120 ; da li je tempratura 120oC? JNZ PONOVI ; ako nije, ~itaj ponovo

Mov BH,'Y' ; temperatura = 120oC, napuni Y u BH

Call ALARM ; pozovi potprogram ALARM

:

Test pitanje

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-32

Nacrtati logiku instrukcije IN AL,81h koristei NAND kola i invertore kao i 74LS244.

Test pitanje

Nacrtati logiku instrukcije OUT 16h,AL koristei NAND kola i invertore, kao i 74LS373.

Test pitanje

Projektovati logiku instrukcije MOV [0100],AL kod memorijsko-preslikanog U/I prostora, koristei AND kola, invertore kao i le~ 74LS373. Usvojiti da je DS=B800h.

Test pitanje 6.37

Integralno kolo 74LS244 predstavlja tro-stati~ki bafer koji se uobi~ajeno koristi kao ulazni bafer kod mikrora~unarskih sistema. Struktura kola prikazana je na sl. 6.28. Upravlja~ki ulaz G1 kontrolie ulazne drajvere za bitove D0-D3, a G2 bitove D4-D7. Pokazati kako izgleda logika sistema zasnovana na 74LS244 koja se koristi za realizaciju operacije ulaz uz pomo sledeih instrukcija:

a) In AL,5Fh b) In AL,9Fh

Napomena: Mikrora~unarski sistem je zasnovan na centralno procesorskoj jedinici Intel 8088.

74LS244

D0

D4

D3

D7

D0

D3

D4

D7

G1 G2

Slika 6.28 : Struktura kola 74LS244

Odgovor

6. Programabilne jedinice, tehnike U/I prenosa

6-33

a) In AL,5Fh

74LS244

DO

D4

D3

D7A0A1

A2

A3

A4

A5

A6

A7

IOR

sistemska adresna iupravlja~ka magistrala

stanje prekida~a

ka linijama D0-D7sistemske magistrale

b) In AL,9Fh

A0

A1

A2

A3

A4

A5

A6

A7

IOR

74LS244

D0

D7

D0

D7

G1 G2

sistemska adresnai upravlja~ka

magistrala

stanjeprekida~a

ka linijama D0-D7sistemske magistrala

Test pitanje 6.38

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-34

Integrisano kolo 74LS373 se koristi kao izlazni 8-bitni le~ ~iji se izlazi mogu postaviti u stanje visoke impedanse(sl. 6.29)

D0

D7 Q7

Q0

CP

D

D

CP

Q

Q

G OE

Slika 6.29 : Struktura ~ipa 74 LS 373

Usponskom ivicom upravlja~kog sitgnala Cp (takt) koji se dovodi na ulaz G pamti se informacija prisutna na ulazima D0 - D7 u D flip-flopove, a OE =0 dozvoljava rad tro-stati~kim izlaznim baferima. Pokazati kako izgleda logika sistema zasnovana na kolu 74LS373 koja se koristi za realizaciju operacije izlaz kod instrukcije Out 99h,AL, za slu~aj da je mikrora~unarski sistem zasnovan na procesoru Intel 8088. Neka su izlazi kola 74LS373 uvek aktivirani (dozvoljeni) Odgovor

A0A1

A2

A3

A4

A5

A6

A7

D0

D7

G

Q7

Q0

74LS373

D Q

Cp

p

Cp

p

D Q

IOW

sistemska, adresna iupravlja~kamagistrala

sistemskamagistrala

podataka

ka izlaznom ure|aju(npr. LED)

OE

Slika 6.30: Logika izlaznog sistema za instrukciju Out 99h,AL Test pitanje 6.39

6. Programabilne jedinice, tehnike U/I prenosa

6-35

Integrisano kolo PIA 8255A konfigurisano je kako je to prikazano na sl. 6.31.

Odrediti:

a) koje su adrese dodeljene portovima A, B i C

b) sadr`aj upravlja~kog bajta za konfiguraciju sa sl. 6.31

c) programirati PIA da prihvata podatke sa porta A i predaje podatke portovima B i C.

D0-D7

WR

RD

A0

A1

CS

A2

A3

A4

A5

A6

A7

D0-D7

IOW

IOR

A0

A1

A

B

CL

CH

PA0-PA7

PB0-PB7

PC0-PC3

PC4-PC7

8255A

Slika 6.31 : Konfiguracija PIA 8255 A

Odgovor a)

CS A1 A0 adresa port

0101 00 0 0 50 h port A

0101 00 0 1 51 h port B

0101 00 1 0 52 h port C

0101 00 0 1 53 h komandni port

b) sadr`aj upravlja~ke re~i

D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 1 0 0 0 0 = 90h

c) jedna od verzija programa za rad sa 8255A bila bi

Mov AL,90h ; upravlja~ka re~ u AL

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-36

Out 53h,AL ; upis upravlja~ke re~i

In AL,50h ; ~itanje porta A

Out 51h,AL ; slanje podatka na port B

Out 52h,AL ; slanje podatka na port C Korienjem direktive EQU mogue je program napisati na sledei na~in

PORTA EQU 50h PORTB EQU 51h PORTC EQU 52h KOM_REG EQU 53h : Mov AL, 90h Out KOM_REG,AL In AL, PORTA Out PORTB, AL Out PORTC, AL

Test pitanje 6.40

Na Slici 6.32 prikazana je konfiguracija PIA 8255A.

Odrediti:

a) adrese portova

b) sadr`aj komandne re~i

c) programsku sekvencu kojom se ~ita sadr`aj sa porta B i predaje portu A a nakon toga ~ita sadr`aj sa porta CL a predaje portu CH.

Odgovor a)

CS A1 A0 adresa port

0111 11 0 0 7Ch port A

0111 11 0 1 7Dh port B

0111 11 1 0 7Eh port C

0111 11 1 1 7Fh komandni port

b) sadr`aj upravlja~ke re~i

D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 0 0 1 1 = 83h

c) programska sekvenca bie oblika

Mov AL,83h ; PA = PCH = izlazni, PB = PCL ulazni

6. Programabilne jedinice, tehnike U/I prenosa

6-37

Out 7Fh,AL ; upis upravlja~ke re~i

In AL,7Dh ; ~itanje porta B Out 7Ch,AL ; upis u port A In AL,7Eh ; ~itanje porta C

And AL,0Fh ; maskiraj MS bitove

Rol AL,1 ; rotiraj ~etiri bit pozicije

Rol AL,1 Rol AL,1 Rol AL,1 Out 7Eh,AL ; upis u PCL

Sekvenca od ~etiri instrukcija Rol AL, 1 se mo`e zameniti sa

Mov CL,4 ; CL je broja~ = 4

Rol AL,CL ; rotiraj ~etiri puta

D0-D7

WR

RD

A0

A1

CS

A2

A3

A4

A5

A6

A7

D0-D7

IOW

IOR

A0

A1

A

B

CL

CH

PA0-PA7

PB0-PB7

PC0-PC3

PC4-PC7

8255A

Slika 6.32 : Konfigurisanje 8255

Test pitanje

Koje su prednosti kod korienja 8255A u odnosu na 74LS373 i 74LS244?

Test pitanje 6.41

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-38

Port C integrisanog kola 8255 A ima osobinu da se stanje njegovih izlaznih bitova PC0 - PC7 mo`e nezavisno definisati upisom upravlja~ke re~i ~iji je sadr`aj definisan na sl. 6.33a)

D0-D7

WR

RD

A0

A1

CS

A2A3A4A5A6

A7

D0-D7

IOW

IOR

A0

A1

8255A

PC2

PC4

PC6

0 x x x bit selekcija S/R

D7 D6 D5 D4 D3 D2 D1 D0

ne koriste se,obi~no su

postavljeni na 0

000-bit 0

001-bit 1

010-bit 2

011-bit 3

100-bit 4

101-bit 5

Set=1

Reset=0BSR

na~in rada

a) Sadr`aj upravlja~ke re~i uBSR (Bit Set-Reset) na~inu

rada

b) Konfigurisanje PIA

Slika 6.33: PIA 8255 u BSR na~inu rada

Napisati nezavisne programske sekvence kojima se: a) na izlazu PC4 generie povorka pravougaonih impulsa trajanja 50ms sa faktorom popune 50%. b) postavlja PC2 na visoko c) na izlazu PC6 generie kontinualna povorka pravougaonih impulsa, trajanja 75ms, ~iji je faktor popune 66%. Odgovor a)

PON: Mov AL,00001001b ; upravlja~ki bajt (PC4 = 1)

Out 93h,AL ; postavi PC4 = 1

Call KASNJENJE ; pozovi potprogram koji unosi kanjenje od 25 ms

Mov AL,00001000b ; upravlja~ki bajt (PC4 = 0)

Out 93h,AL ; postavi PC4 = 0 Call KASNJENJE ; pozovi potprogram koji unosi kanjenje od 25ms

JMP PON ; bezuslovni skok na PON

Napomena: Na na~in kako se kreira potprogram KASNJENJE ukazaemo kasnije .

b) Mov AL,00000101 ; upravlja~ki bajt (PC2 = 1)

Out 93h,AL ; postavi PC2 = 1

6. Programabilne jedinice, tehnike U/I prenosa

6-39

c)

PON: Mov AL,00001101 ; upravlja~ki bajt (PC6 = 1) Out 93h,AL ; postavi PC6 = 1 Call KASNJENJE ; pozovi dvaput potprogram , (25+25)ms=50ms visoko

Call KASNJENJE ; KASNJENJE za faktor popune 66%

Mov AL,00001100b ; upravlja~ka re~ (PC6 = 0) Out 93h,AL ; postavi PC6 = 0

Call KASNJENJE ; unesi kanjenje (33% nisko) JMP PON ; vrti se u petlji

Zadatak 6.15

Na sl. 6.34 prikazan je na~in povezivanja PIA 8255A i tampa~a. Napisati program za tampanje sledeih poruka: "Zdravo. Kako ste?", "Ja sam dobro. Kako ste Vi", "$". ASCII znak '$' ukazuje na kraj poruke.

Napomena: Integrisano kolo 8255A radi u Mode1, ima globalnu adresu 30xh, gde je x = 0,...3.

[TAMPA^8255A

PA0-PA7

PC7

PC6

OBF

D0-D7

STROBE

ACK

Slika 6.34 : Na~in povezivanja tampa~a preko PIA 8255A

Odgovor ; segment podataka (deo koji se odnosi na ovaj zadatak)

PODACI DB "Zdravo. Kako ste?",CR,LF DB "Ja sam dobro. Kako ste VI?",CR,LF,"$" PA EQU 300h ; adresa porta A, B, C i komandnog

PB EQU 301h ; rergistra PC EQU 302h KOM_R EQU 303h LF EQU 0Ah ; ASCII kod za Line Feed

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-40

CR EQU 0Dh ; ASCII kod za Carriage Return ; kôdni segment (deo koji se odnosi na ovaj zadatak)

Mov AL,10100000b ; PA izlazni port u Mode1 Mov DX,KOM_R ; DX=303 adresa upravlja~ke re~i

Out DX,AL ; upis upravlja~ke re~i

Mov AL,00001101b ; PC6=1 za INTEA Out DX,AL ; koristi BSR Mode Mov SI,OFFSET PODACI ; SI pokazuje na PODACI

PONOVI: Mov AH,[SI] ; dobavi podatak Cmp AH,'$' ; da li je kraj?

JZ KRAJ ; idi na kraj

Mov DX,PC ; DX = 302 adresa porta C VRATI: In AL,DX ; pribavi statusni bajt za port C

And AL,08 ; da li je INTR na visoko?

JZ VRATI ; ako nije testiraj ponovo

Mov DX,PA ; ako jeste DX=300 adresa porta A

Mov AL,AH ; adresiraj i

Out DX,AL ; predaj tampa~u znak

Inc SI ; inkrementiraj pokaziva~ podataka

JMP PONOVI ; granaj se na PONOVI KRAJ: ---- ; vrati se na DOS

Test pitanje 6.42

Sa aspekta prenosa podataka koja osnovna razlika postoji izmedju instrukcija In i Out sa jedne strane i Ins i Outs sa druge?

Odgovor Direktne ili indirektne In i Out instrukcije zahtevaju da se svi podaci prenose preko akumulatora. Kod ulazno-izlaznih instrukcija koje manipuliu sa nizovima podataka Ins i Outs, podaci se prenose direktno ka ili iz memorije.

Test pitanje 6.43

Koristei Outsb instrukciju napisati programsku sekvencu kojom se vri prenos bloka podataka veli~ine 4kB lociran u segmentu podataka S_POD po~ev od lokacije VRH ka port adresi disk jedinice 47h.

Odgovor Mov AX,S_POD ; dobavi adresu segmenta i smesti

6. Programabilne jedinice, tehnike U/I prenosa

6-41

Mov DS,AX ; je u DS Lea SI,VRH ; ofset adresa podataka u SI

Cld ; obrii smer, postavi auto-inkrement

Mov DX,47h ; DX pokazuje na U/I port Mov CX,1000h ; CX broja~ bajtova (4k) Rep Outsb U paru sa prefiksom Rep, ulazno-izlazne instrukcije su veoma mone. U konkretnom slu~aju instrukcijom Rep Outsb prenosi se bajt iz izvorne memorijske lokacije na koju pokazuje par DS : SI u odredinu U/I lokaciju na koju pokazuje registar DX, zatim se inkrementira SI kako bi pokazao na narednu memorijsku lokaciju, a dekrementira broja~ bajtova CX. Instrujkcija se ponavlja sve dok se ne dobije da je CX = 0.

Test pitanje 6.44

Mikroprocesori 386 i 486 imaju 32-bitnu magistralu, to zna~i da u jednom magistralnom ciklusu mogu da pristupaju do ~etiri bajta odjednom. Da li postoje adresne linije A0 i A1 i kako procesor identifikuje bajtove u okviru granice od ~etiri bajta.

Odgovor Umesto signala A0 i A1 mikroprocesori 386 i 486 generiu signale /BE3, /BE2, /BE1 i /BE0. Sledea tabela pokazuje koji skup linija magistrale podataka je aktivan za svaki od BEx (Byte Enable) signal.

/BE3 /BE2 /BE1 /BE0 Magistrala podataka

1 1 1 0 D0 - D7

1 1 0 1 D8 - D15

1 0 1 1 D16 - D23

0 1 1 1 D24 - D31

Napomena: /BEi predstavljaju komplement signala BEi, i=0,...,3

Test pitanje

Zato je U/I dekodiranje kod memorijsko-preslikane eme skuplje u odnosu na izdvojene?

Test pitanje 6.45

Kojim portovima pristupaju mikroprocesori 386 i 486 u toku izvrenja sledeih instrukcija: In AL,0 ; In AL, 1 ; In AL,2 ; In AL, 3 ; In AX,0 ; In AX,2 i In EAX,0.

Odgovor /BE3 /BE2 /BE1 /BE0 Instrukcija Pristup portovima

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-42

1 1 1 0 In AL, 0 0

1 1 0 1 In AL, 1 1

1 0 1 1 In AL, 2 2

0 1 1 1 In AL, 3 3

1 1 0 0 In AX, 0 0 i 1

0 0 1 1 In AX, 2 2 i 3

0 0 0 0 In EAX, 0 0, 1, 2 i 3

Napomena: /BEi predstavljaju komplement signala BE i, i=0,...,3 Test pitanje 6.46

Na sl. 6.35 prikazana je logika koja se kod mikroprocesora 386/486 koristi za prihvatanje podataka sa 16-bitnog ulaznog porta. Tro-stati~ki baferi IC3 i IC4 se koriste da postave ulazne podatke na linijama magistrale podataka D0 - D15. Objasniti princip rada eme sa sl. 6.35 Napomena: Signali dati u zagradama odnose se na mikroprocesor 8086. Test pitanje 6.47

Opii promene koje je potrebno sprovesti kod U/I port interfejsa sa sl. 6.35 da bi se kolo koristilo kod mikroprocesora Pentium.

Odgovor Potrebna je samo jedna izmena: Adresna linija A2 koja ne postoji kod Pentiuma treba da se odstrani sa ulaza u kolo IC1. Naglasimo da ova promena uizrokuje da IC1 dekodira osam uzastopnih portova od 0-7 (umesto ~etiri kao u prethodnom slu~aju). Svaki od ovih portova se mo`e selektovati preko osam bajt selekt signala /BE0 - /BE7.

Zadatak ~itaoca je da nacrta kona~no reenje interfejsa.

Test pitanje 6.48

Izvrenjem bilo koje od sledeih instrukcija: In AL,0h; In AL,1h; In AX,0h; In AL,DX; In AX,DX; Dati odgovor na pitanje: preko kojih se portova sa sl. 6.35 prihvataju podaci izvrenjem odgovarajuih instrukcija.

Odgovor In AL,0h ; S0 - S7 → AL preko D0 - D7 In AL,1h ; S8 - S15 → AL preko D8 - D15 In AX,0h ; S0 - S15 → AX preko D0 - D15 In AL,DX ; if DX = 0000h then S0 - S7 → AL ; if DX = 0001h then S8 - S15 → AL In AL,DX ; if DX = 0000h then S0 - S15 → AX

6. Programabilne jedinice, tehnike U/I prenosa

6-43

+5V

1KΩ

X= IC3

D15

D14

D13

D12

D11

D10

D9

D8

S15

S14

S13

S12

S11

S10

S9

S8

BE1IN1(BHE)

IC2a

IC2bSEL0-3IN0-3

IC2d

IN0

IC4BE0

IOR

IC2(A0)

W/R(RD)

M/I0

A15

A14

A13A12

A11

A10A9A8A7A6A5

A4

A3

A2

(A1)

S7

S6

S5

S4

S3

S2

S1

S0 D0

D1

D2

D3

D4

D5

D6

D7

Napomena: Svaki ulaz kolaIC3 markiran sa x povezanje preko otpornika od 1kΩ

na +5V

Slika 6.35 : Povezivanje 16-bitnog porta kod 80x86

Test pitanje 6.49

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-44

Napisati programsku sekvencu (potprogram) za ~itanje ulaznog porta sa sl. 6.35 i proveru da lli su prekida~i S13, S11, S3 ili S2 postavljeni u stanje otvoreno. Ako je uslov ispunjen, tj. bilo koji prekida~ postavljen u stanje otvoreno, postavi marker uslova CF na 1, a ako nije postavi CF na 0.

Odgovor Kada je prekida~ Si postavljen u stanje otvoreno naponski nivo na odgovarajuem ulazu zbog prika~enog otpornika navie od 1kΩ odgovarae nivou logi~ke 1. Proveru izvriemo instrukcijom Test AX,280Ch ~ije izvrenje generisae rezultat razli~it od nule ako je najmanje jedan od testiranih bitova postavljen na stanje logi~ke 1. Potprogram kreiraemo kao PUBLIC da bi kasnije mogli ovu rutinu da linkujemo sa drugim pozivnim programom.

; ovaj potprogram testira da li su bitovi 13, 11, 3 i 2 16-bitnog ulaznog porta postavljeni na visoko

; ulazi: statusna informacija sa U_PORT

; izlazi: CF = 1 if condition true, else CF = 0

; izvrenjem ovog potprograma menja se stanje AX i CF

PUBLIC PROG_1 U_PORT EQU 0h ; ulazni port podataka

S_PROG SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:S_PROG PROG_1 PROC NEAR Clc ; postavi CF = 0

In AX,U_PORT ; pribavi podatke sa porta

Test AX,0010100000001100b ; testiraj ulazne podatke

JZ NEMA ; nema bitova na logi~koj 1

Stc ; najmanje jedan bit na visoko

NEMA: Ret PROG_1 Endp S_PROG Ends End

Test pitanje 6.50

Napisati program koji testira da li je bilo koji od prekida~a S13, S11, S3 illi S2 ulaznog porta sa sl. 6.35 postavljen u stanje otvoreno. Ako je uslov ispunjen upii 0FFh u Port 0 sa sl. 6.36, a ako uslov nije ispunjen upii 00 u ovaj port. Program testiranja treba da se izvrava beskona~no dugo.

Napomena: Za memorisanje podatka koristi se le~.

6. Programabilne jedinice, tehnike U/I prenosa

6-45

D0

D1D2D3D4

D5

D6D7

IC 3

1D

2D

3D

4D5D

6D

7D8D

1Q2Q3Q

4Q5Q

6Q

7Q

8Q

DATA0DATA1

DATA2DATA3

DATA4

DATA5

DATA6

DATA7

IC2c

OUT0BE0

OUT0-3

IC2b

SEL0-3

M/IO

W/R

IC2a

IOW

IC1

Clock OE

(Sa sl. 6)

Izlaz Port-a 0

Slika 6.36 : Na~in sprezanja 8-bitnog izlaznog porta kod 80x86

Odgovor ; ovaj program poziva rutinu PROG_1

; ako su prekida~i 13, 11, 3 ili 2 otvoreni, na izlazni port I_PORT

; se upisuje FFh, ako uslov nije ispunjen upisuje se 00

EXTRN PROG_1 : NEAR I_PORT EQU 0 ; izlazni port

S_PROG SEGMENT 'CODE' ASSUME CS:S_PROG POC: Mov BL,0FFh ; za otvorene prekida~e kd je FF

Call PROG_1 ; testiraj stanje prekida~a JC POSTAVI ; uslov ispunjen Mov BL,0 ; uslov nije ispunjen kd je 00 POSTAVI: Mov AL,BL ; kd u AL

Out I_PORT,AL ; upis u port JMP POC ; ponovo testiraj S_PROG Ends

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-46

End POC Test pitanje 6.51

Kada se izvrava instrukcija In AL,01h, preko kojih od linija mikroprocesor 80486 prihvata podatke sa magistrale podataka?

a) D0 - D7

b) D8 - D15

c) D16 - D24

d) D24 - D32

Odgovor Preko linija D0 - D7

Test pitanje 6.52

Uka`i na na~ine kako se kod PC maina pristupa U/I portovima od strane asemblera i C-a.

Odgovor Kod PC maina zasnovanih na mikroprocesoru 80x86 svi va`niji C kompajleri koriste usluge funkcija radi pristupa U/I portovima. Pristup 8-bitnim portovima se vri shodno sledeoj tabeli

asembler za 80x86 Microsoft-ov C Borlandov C

Out port #, AL outp (port #, byte) outportb (port #, byte)

Out DX, AL outp (port #, byte) outportb (port #, byte)

In AL, port # inp (port #) import b (port #)

In AL, DX inp (port #) inport b (port #)

Napomena: Kod oba kompilatora Borland i Microsoft, port # je neozna~ena celobrojna vrednost za port adrese od 0000h do 0FFFFh, a byte je neozna~eni znak (karakter) ~ija se vrednost nalazi u granicama od 00h do 0FFh. Za inp podatak koji se prihvata je neozna~eni karakter ~ija se vrednost nalazi u opsegu od 00h do 0FFh.

Zadatak 6.16

Kreirati program na C-u koji se koristi za:

(a) konfigurisanje svih portova ~ipa 8255A kao izlazne

(b) upisivanje prvo 55h a zatim 0AAh u portove A i B.

Napomena: Upis vrednosti 0AAh izvriti nakon to korisnik pritisne bilo koju dirku na tastaturi. Usvojiti da je bazna U/I adresa kola 8255A 300h.

Odgovor // konfigurisati PA & PB kola 8255A kao izlazne; upisuje se u oba porta

// prvo 55h a zatim 0AAh; adresa porta A je 300h

6. Programabilne jedinice, tehnike U/I prenosa

6-47

# include < conio.h> // outp( ) i inp ( ) su deo ove biblioteke

# include <stdio.h>

main ( )

outp (0x 303, 0x 80); // upravlja~ka re~ za 8255

outp (0x 300, 0x 55); // upis 55h u port A

outp (0x 301, 0x 55); // upis 55h u port B

printf ("\n pritisni bilo koju dirku za predaju AAh na portovima A i B\n");

getch ( ); // testiraj da li je dirka pritisnuta i prihvati je

outp (0x 300, 0x aa); // predaj podatke portovima A i B

outp (0x 301, 0x aa);

return (0);

Napomena: Kod br`ih PC maina zasnovanih na procesorima Pentium i Pentium Pro potrebno je koristiti funkciju delay izmedju dve outp ( ) funkcije, kao na primer

outp (0x 303, 0x 80);

delay (1);

output (0x 300, 0x 55); Ovim se obezbedjuje dad ~ip 8255A uspostavi svoje stanje pre nego to mu se ponovo pristupa. Ista pravila va`e i za funkcije inp ( ) iza koje sledi outp ( ) i obratno.

Zadatak 6.17

Napisati program na programskom jeziku C koji e za ~ip 8255A:

a) Konfigurisati PA kao ulazni a PB i PC kao izlazne portove

b) prihvatiti podatak sa porta A i upisati ga u portove B i C sa kanjenjem.

Odgovor // konfigurii 8255A sa PA = ulazni a PB & PC = izlazni

// pribavi podatak sa PA i predaj ga portovima PB i PC

// adresa porta A je 300h

# include < conio.h>

# include <stdio.h>

main

insigned char ul_p;

outp (0x 303, 0x 90); // upis upravlja~ke re~i

ul_p = inp (0x 300) ; // ~itaj port A

outp (0x 301, ul_p); // predaj podatak portu B

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-48

delay (1) // kanjenje

outp (0x 302, ul_p); // predaj podatak portu C

return (0);

Test pitanje 6.53

[ta programer treba da zna kada manipulie prekidima pri programiranju u C-u? Odgovor I pored toga to je C vii programski jezik, kada manipulie sa prekidima programer veoma dobro treba da poznaje sve detalje asemblera. Sa druge strane programeri koji koriste C/C ++ a ne znaju dobro sve tajne asemblerskog jezika procesora 80x86 ali `ele da piu programe koristei DOS-ove funkcijske pozive Int 21h i BIOS-ove prekide mogu koristiti pomo koju pru`a kompilator. Pomo se sastoji u tome da se vri poziv funkcija int86 i intdos. Funkcija int86 se koristi za poziv bilo kog PC prekida, a funkcija intdos za poziv Int 21h. Test pitanje 6.54

Objasniti ulogu funkcije int86 i strukture union Odgovor Da bi koristili int86 potrebno je prvo postaviti u interne registre procesora odredjene vrednosti a zatim pozvati int86. Nakon povratka iz int86 ponovo se pristupa registrima. Sa aspekta korienja int86 je sli~an asemblerskoj instrukciji "Int # n". Da bi se pristupilo registrima procesora, 80x86 treba da koristi union strukturu REGS koja je definisana od strane C kompajlera u sledeem formatu

union REGS regin, regout;

Na sl. 6.37 prikazani su detalji koji se odnose na na~in korienja union REGS struktura.

16-bitni 8-bitni C jezik asemblerski jezik C jezik asemblerski jezik regin.x.ax AX regin.h.al AL regin.h.ah AH regin.x.bx BX regin.h.bl BL regin.h.bh BH regin.x.cx CX regin.h.cl CL regin.h.ch CH regin.x.dx DX regin.h.dl DL regin.h.dh DH regin.x.si SI regin.x.di DI regin.x.cflag CY

Slika 6.37 : REGS union elementi i asemblerski ekvivalenti

Test pitanje 6.55

Na uporedni na~in prikazati kako se vri punjenje registra i poziv prekida kod C-a i asemblerskog jezika.

Odgovor

6. Programabilne jedinice, tehnike U/I prenosa

6-49

Sledei programski kd na jedan uporedan na~in prikazuje punjenje registara i poziv prekida kod C-a i asemblerskog jezika

/* C jezik Asemblerski jezik

union REGS regin, regout;

regin.h.ah = 0x 43; /* Mov AH,43h ; H = 43h */ regin.x.dx = 0x 1384 ; /* Mov DX,1384h ; DX = 1384h */ regin.x.si = 0x 4130; /* Mov SI,4130h ; SI = 4130h */ int86 (interrupt #, &regin, &regout); /* Int # */

U konkretnom slu~aju interrupt # je vrednost od 00 - 255, a &regin i &regout su adrese promenljivih REGS. Nakon povratka iz funkcije int86 pristup sadr`aju registara se vri na sledei na~in.

rezultat11 = regout.h.ah; /* Mov rezultat1,AH; rezultat1→ AH */ rezultat12 = regout.x.bx; /* Mov rezultat2,BX; rezultat2→ BX */

Test pitanje 6.56

Ukazati na na~in korienja C-ove funkcije int86

Odgovor Na~in korienja int86 funkcije sagledaemo kroz nekoliko ilustrativnih primera.

Primer 1

Odnosi se na korienje funkcije int86 radi brisanja sadr`aja na ekranu monitora. Ekvivalentna akcija mo`e se ostvariti pozivom funkcije Int 10h.

/* kako se koriste 16-bitni registri

# include <dos.h> /* int86 je deo ove biblioteke */

main ( )

union REGS regin, regout;

regin.x.ax = 0x600 ; /* Mov AX, 0600 h */

regin.h.bh = 0x07 ; /* Mov BH, 07h */

regin.x.cx = 0 ; /* Mov CX, 0 */

regin.x.dx = 0x184Fh ; /* Mov DX, 184Fh */

int 86(0x10, &regin, &regout) /* Int 10h */

Mogue je koristiti 8-bitne i 16-bitne registre na sledei na~in

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-50

/* kako se koriste 8-bitni registri */

# include <dos.h> /* int86 je deo ove biblioteke */

main ( )

union REGS regin, regout;

regin.h.ah = 6 ; /* Mov AH, 6 */

regin.h.al = 0 ; /* Mov AL, 0 */

regin.h.bh = 07 ; /* Mov BH, 7 */

regin.x.cx = 0 ; /* Mov CX, 0 */

regin.h.dl = 0x4F ; /* Mov DL, 4Fh */

regin.h.dh = 0x18; /* Mov DH, 18h */

int 86 (0x10, &regin, &regout) /* Int 10h */

Primer 2

Ovaj primer pokazuje kako se koristi int86 sa Int 12h da bi se odredio obim konvencionalne memorije koja je instalirana kod PC maine

Nakon izvrenja obim konvencionalne memorije se ~uva u AX.

# include < stdio.h>

# include < dos.h>

main ( )

unsigned int konv_mem;

union REGS regin, regout;

int 86 (0x12, &regin, &regout);

konv_mem = regout.x.ax;

printf ("Ova PC maina ima % d kB konvencionalne memorije \n", konv_mem);

Primer 3

Uka`imo sada kako se koristi funkcija int86 da bi se obavile sledee funkcije:

(a) zapamti tekuu poziciju kursora,

(b) postavi kursor na poziciji vrsta = 12 i kolona = 8,

(c) prika`e poruku "Moj delijo" koristei funkciju printf

# include <stdio.h>

6. Programabilne jedinice, tehnike U/I prenosa

6-51

# indluce <dos.h>

main ( )

unsigned char pret_vrsta;

usigned char pret_kol;

union REGS regin, regout;

regin.h.ah = 3; /* Mov AH, 3 ; opcija 3 od Int 10h */

regin.h.bh = 0; /* Mov BH, 0 ; stranica 0 */

int 86 (0x10, &regin, & regout); /* Int 10h */

pret_vrsta = regout.h.dh /* Mov pret_vrsta, DH ; sa~uvaj vrstu */

pret_kol = regout.h.dl /* Mov pret_kol, DL ; sa~uvaj kolonu */

printf ("Kursor je bio na vrsti =%d, koloni = % \n", pret_vrsta, pret_kol);

regin.h.ah = 2; /* Mov AH, 2 ; opcija 2 od Int 10 h */

regin.h.bh = 0 ; /* Mov BH, 0 ; stranica 0 */

regin h.dl = 8; /* Mov DL, 8 ; lokacija kolone */

regin.h.dh = 12; /* Mov DH, 12 ; lokacija vrste */

int 86 (0x10, &regin, &regout); /* Int 10h */

printf ("Moj delijo \n");

Test pitanje 6.57

Kako se iz C-a pozivaju DOS-ove funkcije?

Odgovor Uobi~ajeno za poziv DOS-ovih funkcija koristi se funkcija intdos. (Alternativno za poziv Int 21h mo`e da se koristi i int86). Format intdos je sledei

intdos(&regin, &regout); /* koristi se samo za Int 21h */

Sledei primer pokazuje kako se koristi intdos

Pomou Int 21h opcije 2Ah prika`i na ekranu video displeja sledeu informaciju dd = mm - yy (dan, mesec, godina)

(a) koristei funkciju intdos

(b) koristei funkciju int86

Nakon povratka iz Int 21h, u DL se ~uva dan, u DH mesec, a u CX godina

(a) program koji koristi intdos

# include <stdio.h>

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-52

# indluce <dos.h>

main ( )

unsigned int godina;

usigned char mesec;

usigned char dan;

union REGS regin, regout;

regin.h.ah = 0x2A;

intdos (&regin, &regout);

dan = regout.h.dl;

mesec = regout.h.dh;

godina = regout.x.cx;

printf ("Dananji datum je % d - % d - % d \n", dan, mesec, godina);

b) u ovom programu mogue je zameniti intdos iskaz sa int86 (0x21, &regin, &regout)

Test pitanje 6.58

Kako se pomou C-ovih funkcija int86 i intdos pristupa segmnetnim registrima mikroprocesora 80x86?

Odgovor Pomou obe funkcije int86 i intdos mogue je pristupati registrima AX, BX, CX, DX, SI i DI, ali ne i segmentnim registrima CS, DS, SS i ES. U odredjenim situacijama postoji potreba da se pristupi i segmentnim registrima. U takvim situacijama treba koristiti int86x umesto int86 i intdosx umesto intdos. Kod korienja int86x i intdosx potrebno je preneti argumente SREG. Formati funkcija int86x i intdosx su sledei

int86x (interrupt #, &regin, &regout, &regseg);

ingdosx (&regin, &regout, &regseg);

struct SREGS regseg;

Funkcije int86x i intdosx omoguavaju pristup samo registrima ES i DS a ne i registrima CS i SS. Sadr`aji registra SS i CS se ne mogu menjati jer to mo`e dovesti do naruavanja integriteta sistema.

Primer 1

Ovaj primer pokazuje kako se koristi Int 21h opcija 35h, da bi se dobavio par CS:IP iz prekidne vektor tabele za Int 10h.

6. Programabilne jedinice, tehnike U/I prenosa

6-53

Kod Int 21h opcija 35 u registrima AH i AL treba smestiti sledee vrednosti AH = 35 i AL = broj prekida. Nakon povratka u ES se ~uva vrednost kdnog segmenta (CS), a u BX pokaziva~ instrukcije (IP), tj. obe vrednosti se uzimaju iz vektor tabele.

# include <stdio.h>

# indluce <dos.h>

main ( )

unsigned int ip_vred;

unsigned int cs_vred;

union REGS regin, regout;

struct SREGS regseg;

regin.h.ah = 0x35; */ Mov AH, 35 h */

regin.h.al = Ox 10; */ Mov AL, 10 h */

int 86x (0x21, & regin, & regout, & regseg); / * alternativno intdos x (& regin, l& regout, & regseg) */

ipvred = regout.x.bx; /* Mov ipvred, BX */

csvred = regseg.es; /* Mov csvred, ES */

printf("CS : IP od Int 10 h je % X : % X \n", csvred, ipvred);

Test pitanje 6.59

Kako se pristupa CF markeru kod int86 i intdos funkcije?

Odgovor Nakon povratka iz velikog broja fujnkcija prekida neophodno je ispitati vrednost markera CF. Funkcije int86, intdos, int86x i intdosx omoguavaju da se ispita samo stanje markera CF a ne i ostalih. Da bi pristupili CF bitu potrebno je napisati

if (regout.x.cflag)

Struktura 8-bitnih, 16-bitnih i segmentnih registara je oblika

union REGS

struct WORDREGS

unsigned int ax;

unsigned int bx;

unsigned int cx;

unsigned int dx;

unsigned int si;

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-54

unsigned int di;

unsigned int cflag;

x;

struct BYTEREGS

unsigned char al, ah;

unsigned char bl, bh;

unsigned char cl, ch;

unsigned char fl, fh;

h;

*inregs;

union REGS *outregs;

struct SREGS

unsigned int es;

unsigned int cs;

unsigned int ss;

unsigned int ds;

*sregs;

Test pitanje 6.60

Kako se vri kombinovanje C-a i asemblera i provera markera CF?

Odgovor Najvei broj primena prekida kod PC maine koristi marker CF da uka`e na specijalne uslove kao to su greke. Na primer, funkcije AH = 3Ch i AH = 3Dh kod Int 21h manipuliu sa fajlovima i koriste marker CF da bi ukazali na odredjeni uslov. Ako `elimo sa druge strane da proverimo stanje i ostalih markera kao to je recimo ZF kako bi ustanovili da li su ispunjeni odredjeni uslovi tada je to jedino mogue uraditi kombinovanjem iskaza na C-u i asembleru. Ovakav na~in rada je poznat kao in-line asembliranje i prikazan je na sledeem programskom segmentu. To zna~i da se bilo koja instrukcija procesora x86 mo`e koristiti od strane programa na C-u ako ispred nje stoji prefiks "asm".

Primer 6 // korienje in-line asembliranja radi provere ZF markera

# include <stdio.h>

# indluce <conio.h>

main ( )

unsigned char vrsta = 10;

unsigned char kolona = 10; // obim podatka tipa bajt

6. Programabilne jedinice, tehnike U/I prenosa

6-55

unsigned int brojac = 5;

cirsc();

asm Mov CX, brojac // CX = brojac

Ponovi : asm Mov AH, 2 // AH = 02 od Int 10h

asm Mov BH, 0 // stranica 0

asm Mov DH, vrsta // napuni vrsta i kolona

asm Mov DL, kolona

asm Int 10h // postavi kursor

asm Push CX

printf ("Ovo je test");

vrsta ++;

kolona ++;

asm Pop CX // obnovi broja~

asm Dec CX //dekrementiraj broja~

asm JNZ Ponovi //idi na Ponovi ako ZF nije high getch ( )

Funkcija kbhit je C ekvivalenat za Int 16h. Sledea programska sekvenca prikazuje na~in njenog korienja.

/* generisanje tona sve dok se ne pritisne dirka */

# include <stdio.h>

# include <conio.h>

main ( )

clrscr ( );

printf ("Da bi zaustavio ton pritisni bilo koje dugme \n";

while (!kbhit( )) // produ`i sve dok se ne pritisne dirka //

printf ("%C", 0x07); // predaj ASCII znak za generisanja tona monitoru//

Test pitanje 6.61

Na~in povezivanja 8-bitnog DA konvertora sa portom A integrisanog kola 8255A prikazan je na sl. 6.38. Globalna adresa kola 8255 je 300h.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-56

Iref=2mA

Iout

R

+Vout=0-10V

A8-A1

DA konvertor

8255

PA0-PA7CPU-u

Slika 6.38 : Povezivanje DA konvertora i ~ipa 8255

Digitalni ulazi DA konvertora se konvertuju u struju Iout koja je definisana sledeom relacijom

D7 D6 D5 D1 D0

Iout = Iref

+++++

256D0

128D1...

8D5

4D6

2D7

gde je D0 LSB a D7 MSB. Iref se obi~no postavi na 2mA.

a) Ako usvojimo da je R = 5k, a Iref = 2mA odrediti Vout za sledee binarne ulaze:

(1) 10011001

(2) 11001000

Odgovor a) Iout = 2mA (153/256) = 1.195mA i

Vout = 1.195mA * 5k = 5.975V

b) Iout = 2mA (200/256) = 1.562mA

Vout = 1.562mA * 5k = 7.8125V

Test pitanje

Pokazati kako izgleda dekodersko kolo za 8255A ako `elimo da adresa Porta A bude 68h. Za implementaciju dekodera koristiti NAND kola i invertore.

Test pitanje

Ako je upravlja~ka re~ 91h, nazna~iti koji port kod 8255A je ulazni a koji izlazni

Test pitanje

Koja se od sledeih port adresa ne mo`e dodeliti Portu A kod 8255A, i zato?

(a) 32h ; (b) 45h ; (c) 89h ; i (d) BAh.

Zadatak 6.18

6. Programabilne jedinice, tehnike U/I prenosa

6-57

Kolo prikazano na sl. 6.38 koristi se za generisanje sinusnog talasnog oblika ~iji se izlaz skokovito menja u koracima od po 30o. Napon na izlazu DA konvertora definisan je sledeom relacijom

Vout = 5 V + (5 * sin θ)

a) Odrediti koje decimalne vrednosti treba dovesti na ulaz DA konvertora za svaku generisanu izlaznu vrednot u koracima od 30o,

b) proveriti vrednosti za uglove od 30o i 60o

c) napisati programsku sekvencu za generisanje sinusnog napona.

Odgovor a)

Vout ugao

stepeni sin θ 5 V + (5 V * sin θ)

decimalna vrednost koja se predaje DAC-u

0 0 5 128

30 0,5 7,5 192

60 0,866 9,33 238

90 1,00 10 255

120 0,866 9,33 238

150 0,5 7,5 192

180 0 5 128

210 -0,5 2,5 64

240 -0,866 0,669 17

270 -1,0 0 0

300 -0,866 0,669 17

330 -0,5 2,5 64

360 0 5 128

Slika 6.39 : Decimalne vrednosti koje treba dovesti na ulaz DAC-a

b)

(1) Vout = 5V + (5 * sin θ)

= 5V + 5 * sin 30

= 5V + 5 * 0,5V = 7,5V

Maksimalnom izlaznom naponu od 10V odgovaraju 256 koraka, a to zna~i da naponu od 1V odgovaraju 25,6 koraka.

Numeri~ka vrednost na ulazu DA konvertora = 7,5 * 25,6 = 192 decimalno

(2) Vout = 5V + (5 * sin 60)

= 5V + 5 * 0,866V

= 9,33V

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-58

Numeri~ka vrednost na ulazu DA konvertora = 9,33 * 25,6 = 238 decimalno

c) Programska sekvenca bila bi oblika

; segment podataka

TABELA DB 128,192,238,255,238,192,128,64,17,0,17,64,128 ; kodni segment

Mov AL,80h ; svi portovi izlazni

Mov DX,303h Mov DX,AL Ponovi: Mov CX,12 ; CX = broja~ Mov BX,OFFSET TABELA Mov DX,300h ; adresa porta A Novi: Mov AL,[BX] Out DX,AL Inc BX Call Kasnjenje ; stabilizacija izlaza DA konvertora

Loop Novi JMP Ponovi

Zadatak 6.19

Kolo prikazano na sl. 6.38 koristi se za generisanje sinusnog talasnog oblika. Koristei vrednosti sa slike 6.39 iz prethodnog zadatka izra~unati vrednoti amplitude sinusnog signala u opsegu od 0o - 360o u inkrementima od po 1o.

Program napisati na jeziku C.

Odgovor # include <conio.h>

# include <stdio.h>

# include <math.h>

main ( )

out (0x303, 0x80); // konfigurii 8255 izlazni//

unsigned char V1 // V1 podatak obima bajt //

float Vout, amplituda;

int a;

printf ("\n Pritisni bilo koju dirku da bi napustio program \n").

do

6. Programabilne jedinice, tehnike U/I prenosa

6-59

for (a = 0; a< 360; a++) // za puni opseg od 360 stepeni//

Vout = 5.0 + (5.0 < sin((3.14 * a)/180)); // amplituda napona //

amplituda = Vout * 25.6 // vrednost koja se predaje DAC-u

V1 = (char) amplituda; // u~ini je obima bajt //

delay (1);

outp(0x301, V1); //izlaz na port A //

while (!kbhit ( )); // pritisni bilo koju dirku za stop //

return (0);

Test pitanje 6.62

Pin CS integrisanog kola 8253/54 (Programibilni tajmer/interval broja~) se aktivira binarnom adresom A7-A2 = 100101.

a) odredi adrese portova koje su dodeljene ovom kolu

b) odredi kako je konfigurisano kolo 8253/54 ako je upravlja~ki registar programiran na sledei na~in

Mov AL,00110110 Out 97h,AL

Odgovor a) Adresiranje portova 8253/54 se vri shodno sledej tabeli

/CS A1 A0 Port

0 0 0 Broja~ 0

0 0 1 Broja~ 1

0 1 0 Broja~ 2

0 1 1 upravlja~ki registar

1 X X ~ip nije selektovan

Na osnovu tabele imaemo sledeu situaciju

CS A1 A0 Port Adresa porta (hex)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-60

1001 01 0 0 Broja~ 0 94

1001 01 0 1 Broja~ 1 95

1001 01 1 0 Broja~ 2 96

1001 01 1 1 upravlja~ki registar 97

b) Format upravlja~ke re~i kola 8253/54 je oblika:

SC1 SC0 RL1 RL0 M2 M1 M0 BCD0 - binarni broja~ (16-bitova)1 - BCD (4 dekade)

000 -mode 0001 - mode 1X10 - mode 2

X11 - mode 3100 - mode 4101 - mode 5

00 - operacija le~ovanja01 - ~itaj/puni LS deo broja~a samo10 - ~itaj/puni MS deo broja~a samo11 - ~itaj/puni LS deo broja~a prvo, zatim MS deo broja~a

00 - selekcija Broja~a 001 - selekcija Broja~a 110 - selekcija Broja~a 211 - ilegalna

D7 D6 D5 D4 D3 D2 D1 D0

Uporedjivanjem sadr`aja upravlja~ke re~i 0011 0110 sa specificiranim formatom zaklju~ujemo:

• pristupa se Broja~u 0 jer su SC bitovi 00

• bitovi RL koji su postavljeni na 11 ukazuju da se prvo vri pristup LS delu a zatim MS delu broja~a.

• bitovi M ukazuju da je selektovan mode 3 (generator pravougaonih impulsa)

• izabrano je binarno brojanje

Test pitanje 6.63

Koristei port adrese iz prethodnog test pitanja programirati kolo programiraj ~ip 8253/54 tako da:

(a) Broja~ 0 radi kao binarni u mode 3 (generator pravougaonih impulsa) a deli CLK0 sa 4282 (BCD)

(b) Broja~ 2 radi kao binarni broja~ u mode 3, a deli CLK2 sa C26Ah

6. Programabilne jedinice, tehnike U/I prenosa

6-61

(c) odredi frekvencije OUT0 i OUT2 za slul~aj (a) i (b) ako je CLK0=1.2MHz, a CLK2=1.8MHz.

(d) programirati Broja~ 1 da deli CLK1 sa 10000 u mode3 koristei BCD brojanje.

Odgovor (a) da bi programirali Broja~ 0 u mode3 upravlja~ka re~ treba da je 00110111, a sekvenca

Mov AL,37h ; Broja~ 0, mode 3, BCD

Out 97h,AL ; upis upravlja~ke re~i Mov AX,4282 ; punjenje modula brojanja Out 94h,AL ; predaja LS bajta Mov AL,AH Out 94h,AL ; punjenje MS bajta

b) za Broja~ 2 imaemo

Mov AL,B6h ; Broja~ 2, mode3, binarni

Out 97h,AL ; upravlja~ka re~ - upis Mov AX,C26Ah ; moduo brojanja

Out 96h,AL ; upis LS bajta Mov AL,AH Out 96h,AL ; upis MS bajta

(c) frekvencija na ulazu CLK0 je 1.2MHz kada se ova frekvencija podeli sa 4282, na izlazu OUT0 se dobija signal frekvencije 280Hz.

CLK2 je 1.8MHz, kada se ova frekvencija podeli sa 49770 (C26Ah = 49770) dobija se da je frekvencija na izlazu OUT2 jednaka 36Hz.

(d) odgovarajua sekvenca kojom se programira Broja~ 1 je oblika

Mov AL,77h ; Broja~ 1, mode3, BCD

Out 97h,AL ; upis upravlja~ke re~i

Mov AL,99 ; moduo brojanja 9999 Out 95h,AL ; umesto 10000 Out 95h,AL

Test pitanje 6.64

IBM PC maina koristi integrisano kolo 74LS138 kao dekoder adresa za pin CS kola 8253 (programibilni broja~/interval tajmer) kako je prikazano na sl. 8. Odrediti adrese portova programibilnog broja~a/interval tajmera.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-62

74LS138 8253/54

A

B

C Y2

G1

G2 B

G2 A

CS

A0

A1

A0

A1

A5

A6

A7

A8

A9

AEN

Slika 6.40 : Generisanje CS signala za 8253/54

Odgovor binarna adresa

AEN A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

heksadecimalna

adresa

funkcija

1 0 0 0 1 0 X X X 0 0 40 Broja~ 0

1 0 0 0 1 0 X X X 0 1 41 Broja~ 1

1 0 0 0 1 0 X X X 1 0 42 Broja~ 2

1 0 0 0 1 0 X X X 1 1 43 upravlja~ki registar

Test pitanje 6.65

Neka je kod kola 8253/54 GATE1=1, CLK1=1MHz a moduo brojanja N=1000. Kakav je talasni oblik impulsa na izlazu OUT1 ako je Broja~ 1 programiran u mode 0.

Odgovor

1000*1µs=1ms

WR

GATE=1OUT1

Test pitanje 6.66

U prethodnom test pitanju usvojito da GATE 1 postane 0 za period od 400µs. Odrediti vreme trajanja impulsa na izlazu OUT1.

6. Programabilne jedinice, tehnike U/I prenosa

6-63

Odgovor

OUT1

1400µs

WR

400µsGATE1

Test pitanje 6.67

a) Ako je kod kola 8253/54 CLK1=1MHz, a N=500 kako izgleda impuls na izlazu OUT1 ako je Broja~ 1 programiran u mode1.

b) Usvojiti da se nakon 150 taktnih intervala GATE1 retrigeruje. Kakav e biti talasni oblik na izlazu OUT1?

Odgovor a) Izlaz OUT1 se postavi na nisko samo kada GATE1 prelazi sa 0 na 1.

500µs

WR

GATE1

b)

GATE1

OUT1

650µs

150µs 500µs

WR

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-64

Test pitanje 6.68

Ako je kod kola 8253/54 CLK2=1MHz, GATE2=1, i N=750, kakav je talasni oblik na izlazu OUT2 kada je Broja~ 2 programiran u mode2?

Odgovor

GATE2=1

OUT2750µs N N

1µs

WR

Test pitanje 6.69

Ako je kod kola 8253/54 CLK2=1MHz, GATE2=1, N=1000, kakav se talasni oblik napona dobija na izlazu OUT2 kada je Broja~ 2 programiran u mode 3.

Odgovor

1000µs 1000µs

500µs500µsGATE2=1

OUT2

WR

Test pitanje 6.70

Ako je kod kola 8253/54 CLK0=1MHz, GATE0=1, N=600, kakav e biti talasni oblik napona na izlazu OUT0 kada je Broja~ 0 programiran u mode 4.

Odgovor

GATE0=1

OUT0600µs

1µs

WR

6. Programabilne jedinice, tehnike U/I prenosa

6-65

Test pitanje 6.71

Ako je kod kola CLK1=1MHz, N=400, kakav se talasni oblik napona dobija na izlazu OUT1 kada je Broja~ 1 programiran u mode5.

Odgovor Brojanje po~inje kada GATE1 prelazi sa 0 na 1.

GATE1=1

OUT1

400µsWR

Test pitanje 6.72

Neka se u prethodnom test pitanju GATE1 retrigeruje nakon 150 impulsa. Kakav e biti talasni oblik signala na izlazu OUT1.

Odgovor

550µs

150µs

WR

GATE1=1

OUT1

Test pitanje 6.73

Bit parnosti je redundatni bit provere koji se dodaje podatku ili nizu bitova tako da ukupan broj logi~kih jedinica u nizu podataka uklju~ujui i bit parnosti bude paran ili neparan. Predajna i prijemna stanica moraju prethodno da se dogovore koji e tip parnosti da koriste, parnu ili neparnu parnost. Kao to je prikazano na sl. 6.41, parnost se mo`e realizovati kao vertikalna (VRC - Vertical Redundancy Check) ili longitudinalna (LRC - Longitudinal Redundancy Check).

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-66

b0 b0 b0 b0 b0 b0 b0 p0

b1 b1 b1 b1 b1 b1 b1 p1

b2 b2 b2 b2 b2 b2 b2 p2

b3 b3 b3 b3 b3 b3 b3 p3

b4 b4 b4 b4 b4 b4 b4 p4

b5 b5 b5 b5 b5 b5 b5 p5

b6 b6 b6 b6 b6 b6 b6 p6

b7 b7 b7 b7 b7 b7 b7 p7

P P P P P P P

Slika 6.41 VRC i LRC

U kojim situacijama je bolje koristiti VRC, a u kojim LRC?

Odgovor VRC je standardna tehnika koja se naj~ee koristi za proveru greaka kod asinhronog serijskog prenosa podataka. Osnovna karakteristika pridru`ivanja poruci dodatnog bita za proveru parnosti je jednostavnost dodatnog hardvera. Kada se koristi sa ASCII kodiranim podacima, bit parnosti postaje osmi bit podatka, tako da u zavisnosti od tipa odabrane parnosti broj jedinica mo`e biti paran ili neparan.

Ilustracije radi usvojimo da su ASCII znaci D1h, 36h i E5h kodirani sa bitom parne parnosti na MSB poziciji. Ako je u toku prenosa dolo do greke tada se greka u konkretnom slu~aju detektuje samo kod bajta E5h (broj jedica je neparan). Ali treba uo~iti da je nemogue otkriti koji je bit pogrean.

Pomou VRC tehnike mogue je detektovati neparan broj bitova greaka. Na primer ako se bajt podatka D1h primi kao D2h njegova parnost ostae nepromenjena, i pored toga to su dva bita pogrena. Shodno prethodnom sagledavanju VRC tehnika je dobra za primenu u onim okru`enjima gde pojava veeg broja greaka je malo verovatna. Tipi~no su to primene gde se veza izmedju dva ra~unara realizuje pomou upredenih provodnika ili irmovanog kabla.

Analize greaka koje se javljaju kod prenosa na velika rastojanja, posebno preko modema i komutiranih telefonskih mre`a ukazuju da se greke javljaju u paketima (burst). Na primer uklju~enje i isklju~enje svetla mo`e da uzrokuje indukovanje smetnji na prenosnom putu u trajanju od nekoliko ms. Na primer pri brzini prenosa od 30 kbps, za period od 2ms prenose se od 50 do 60 bitova. To zna~i da e izvor smetnji burst tipa imati za efekat da se 5 do 6 znakova prenese nekorektno. Iz tog razloga za detekciju veeg broja bit greaka koristi se redundantni znak za proveru - bloka ili checksum. Znak za proveru bloka (BCC - block - check character) mo`e da se izra~una kao LRC znak parnosti, ili da se izra~una kao dvoji~ni komplement svih prethodnih bajtova u bloku podataka. Sledea programska sekvenca napisana na asemblerskom jeziku mikroprocesora 80x86 se koristi za izra~unavanje a zatim pridru`ivanje BCC-a bloku od 255 podataka. Nakon toga blok podataka koga ~ine 256 bajtova se mo`e prenositi serijski ili paralelno.

bitovi parnosti

provera

parnosti

1blok podataka

bit parnosti

6. Programabilne jedinice, tehnike U/I prenosa

6-67

; funkcija: pridru`ivanje BCC bajta bloku podataka

; ulazi: adresa bloka se predaju registarskom paru DS : SI

; izlazi : BCC se dodaje (sabira) bloku podataka kao zadnji bajt

; menjaju se: markeri, CX, SI, AL, BL

Vel_bloka EQU 255 CODE SEGMENT BAJT ASSUME CS : CODE BCC PROC NEAR Cld ; autoinkrement Mov CX, Vel_bloka ; CX je broja~ Mov BL, 0 ; suma u BL

SUMA : Lodsb ; dobavi jedan bajt

Add BL, AL ; akumuliraj sumu

Loop SUMA ; do until CX = 0 Neg BL ; formiraj dvoji~ni komplement

Mov [SI], BL ; pridru`i BCC Ret BCC Endp CODE Ends End

Pored mogunosti da detektuje greke na veem broju bit pozicija, postoji i druga prednost korienja BCC-a.

Na primer, ako je blok podataka obima 255 bajtova, tada je potreban samo jedan dodatni bajt redundantnosti ili 0,4%. Kod korienja VRC tehnike svakom bajtu je bio potreban po jedan dodatni bit, to rezultira prekora~enju od 12,5%. Zbog toga BCC na jedan efikasniji na~in detektuje vei broj bit greaka a da pri tome ne degradira u zna~ajnijoj meri brzinu prenosa po kanalu. Ipak BCC nije savrena tehnika. Kada se detektuje greka, ceo blok podataka je neophodno ponovo preneti. Naglasimo da se kod VRC-a u slu~aju detekcije greke prenosi samo jedan bajt.

U principu, paran broj bit promena u horizontalnom i vertikalnom smeru na istoj bit poziciji ostaje nedetektovan.

Test pitanje 6.74

Objasni princip rada cikli~no redundantne tehnike (CRC - Cycle Redundancy Checks).

Odgovor Jedna od naj~ee korienih metoda za proveru greaka kod serijsko sinhronog prenosa podataka u komunikacijama predstavlja CRC. Ovaj metod se takodje podjednako uspeno koristi i za proveru greaka memorisanih podataka na diskovima.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-68

Nasuprot checksum metode koja je bajtovski orijentisana CRC se koristi za otkrivanje greaka u nizu bitova. ^esto kombinacija obe metode uspeno se koristi za proveru greaka kod prenosa blokova podataka. Kod CRC metoda dva bajta koja nazivamo CRC bajta pridru`uju se nizu podataka i predaju zajedno sa podacima. Na prijemnoj strani, hardverskim ili softverskim sredstvima, testiraju se u cilju provere integriteta podataka kako podaci tako i CRC bajtovi.

CRC bajtovi se odredjuju (izra~unavaju) koristei se sledeom formulom

G(x)

x*M(x) n

Polinom M(x) odgovara (predstavlja) niz podataka. M(x) se mno`i sa xn gde n odgovara broju bitova u nizu. Proizvod ova dva ~lana deli se polinomom koga nazivamo polinom generator. Kao rezultat deljenja se dobija koli~nik Q(x), i ostatak, R(x). Ostatak formira CRC bajtove.

Da bi ukazali na ovaj problem neto detaljnije odredimo CRC bajt za niz podataka 4D92h koristei delitelj x16+x15+x2+1.

Niz podataka 4D92h = 0100 1101 1001 0010. Kao prvo vri se rotiranje svih bitova tako da se dobija povorka bitova 0100 1001 1011 0010. M(x) se izra~unava koristei ove bitove kao koeficijente polinoma.

M(0100 1001 1011 0010) =

0x15+1x14+0x13+0x12+1x11+0x10+0x9+1x8+1x7+0x6+1x5+1x4+0x3+0x2+1x1+0x0

Ako se zanemare ~lanovi ~iji su koeficijenti nula dobiemo:

M(x)=x14+x11+x8+x7+x5+x4+x1

Sada ako se pomno`i M(x) sa x16 imajui u vidu da je podatak niz od 16 bitova, dobiemo

M(x)*xn = (x14+x11+x8+x7+x5+x4+x1)*x16

= x30+x27+x24+x23+x21+x20+x17

Prema tome deljenik za na slu~aj bie polinom x30+x27+x24+x23+x21+x20+x17. Ovaj polinom se deli generator polinomom G(x). Za G(x) koristiemo G(x)=x16+x15+x2+1 koji se naziva bisink protokol generator. Ilustracije radi kod SDLC protokola koristi se generator polinom G(x)=x16+x12+x5+1. Uo~imo da oba generator polinoma po~inju sa x16. Ova ~injenica obezbedjuje da e ostatak biti manji od x16 i kao takav se mo`e predstaviti sa 16 bitova, ili dva bajta.

Postupak deljenja polinomom je sledei:

x xxxxxxxxxxxx1xxx

58121314

1720212324273021516+++++

+++++++++

141617202123242729

14162930

xxxxxxxxx xxxx

+++++++++++

1314151617202123242728

13152829

xxxxxxxxxxx xxxx

+++++++++++++

121315161720212324

12142728

xxxxxxxxx xxxx

+++++++++++

81012131516172021

8102324

xxxxxxxxx xxxx

+++++++++++

6. Programabilne jedinice, tehnike U/I prenosa

6-69

578101213151617

572021

xxxxxxxxx xxxx

+++++++++++

xxxxxxxxx x xxx

357810121315

31617

+++++++++++

Prema toma kao ostatak deljenja se dobija polinom R(x)=x15+x13+x12+x10+x8+x7+x5+x3+x. Ako ovaj polinom predstavimo kao niz koeficijenatga dobiemo

R(x)=1x15+0x14+1x13+1x12+0x11+1x10+0x9+1x8+1x7+0x6+1x5+0x4+1x3+0x2+1x1+0x0

tj. napisano u obliku niza nula i jedinica bie

1011 0101 1010 1010

Rotiranjem ovih bitova (prvi na zadnje, drugi na predzadnje,..., zadnji na prvo mesto) dobiemo niz bitova 0101 0101 1010 1101 a to je 55ADh, i to odgovara CRC bajtovima.

Kada prihvati serijski niz podataka plus CRC bajtove i obavi deljenje sa G(x), ostatak e biti nula za slu~aj da nije dolo do greke u prenosu podataka.

Test pitanje 6.75

Kod CRC metoda blok podataka se zamilja kao serijski niz podataka. Bitovi n-to bitnog bloka smatraju se koeficijenti karakteristi~nog polinoma, poznatog kao M(x). M(x) se formira kao

M(x)=bn+bn-1x+bn-2x2+...+b1x

n-1+b0xn

gde je b0 bit ~ija je tezina najmanje zna~ajna (LSB), a bn bit ~ija je tezina najzna~ajnija (MSB).

Odredi polinom M(x) za sledei 16-bitni niz podataka 26F0h.

Odgovor Podatak 26F0h ima odgovarajuu binarnu formu

0010 0110 1111 0000

Ako ovaj niz napiemo kao M(x) imaemo

M(x)=0+0x1+1x2+0x3+0x4+1x5+1x6+0x7+1x8+1x9+1x10+1x11+0x12+0x13+0x14+0x15

Eliminisanjem ~lanova ~ija je vrednost 0 dobiemo:

M(x)=x2+x5+x6+x8+x9+x10+x11

Ovaj polinom je jedinstven jer predstavlja podatak kao 16-bitni blok. Ako se jedna ili vei broj bit pozicija promeni promenie se i vrednost polinoma. CRC se odredjuje sledeom jedna~inom:

R(x)Q(x)G(x)

x*M(x)CRCn

+==

gde je G(x) polinom generator, a za bisink protokol G(x) je dat u obliku:

G(x)=x16+x15+x2+1

Dok se kod SDLC-a koristi sledei polinom generator:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-70

G(x)=x16+x13+x5+1

Nakon to se obavi deljenje kao rezultat se dobija koli~nik Q(x) i ostatak R(x). Sutina CRC tehnike se sastoji u sledeem: Za dati niz podataka izra~unava se R(x) i tada se ostatak pridru`i bloku podataka. Kada se na prijemnoj strani R(x) ponovo izra~unava, ostatak treba da bude R(x) = 0. Treba naglasiti da kako je G(x) stepena 16, ostatak R(x) ne sme biti vieg reda od 15, pa se zbog toga predstavlja pomou dva bajta, nezavisno od toga kolika je du`ina bloka podataka koji se prenosi.

Test pitanje 6.76

Odredi CRC bajtove za blok podataka 26F0h koristei polinom generator G(x)=x16+x15+x2+1

Odgovor

1xxx

xxxxxxxG(x)

x*M(x)21516

1821222425262716

+++++++++

=

Napomena: Vidi prethodno test pitanje koje se odnosi na odredjivanje M(x).

Ostatak R(x) iznosi :

R(x)=x15+x13+x9+x8+x6+x4+x3+x+1

Kada se izrazi u binarnoj formi (napomenimo da koeficijent uz najvii stepen postoje LSB) dobiemo :

1101 1010 1100 0101 = DAC5h

Aritmeti~ki potupak za odredjivanje ostatka je sledei :

xxx

xxxxxxxxxxx

6911

1821222425262721516++

+++++++++

11131821222425

11132627

xxxxxxx xxxx++++++

+++

913182122

9112425

xxxxx xxxx

+++++++

6891318

682122

xxxxx xxxx++++

+++

246891317

241718

xxxxxxx xxxx

+++++++++

xxxxxxxxx

x xxx2346891316

31617

+++++++++++

1xxxxxxx xR(x)

1xxx346891315

21516

++++++++=+++

6. Programabilne jedinice, tehnike U/I prenosa

6-71

Test pitanje 6.77

Koja je klju~na razlika izme|u: instrukcija grananja, instrukcija za poziv procedura i programskih prekida?

Test pitanje 6.78

Nabrojati pet primera koji se odnose na spoljni prekid i pet primera koji se odnose na interne prekide. Koja je razlika izme|u softverskih prekida i poziva procedura?

Test pitanje 6.79

Ra~unar se odaziva na zahtev za prekid smetanjem u magacin sadr`aja PC-a i tekueg sadr`aja PSW-a. Nakon toga ra~unar iz memorije sa lokacije koja je definisana prekidnom vektorskom adresom IVAD ~ita novi sadr`aj registra PS. Prva adresa uslu`ne progamske rutine se pribavlja iz memorije sa lokacije IVAD+1.

(a) Ukazati na sekvencu mikrooperacija koje implementiraju povratak iz prekidne rutine (return from interrupt).

Zadatak 6.20

Kada je ulaz bafera B1 sa sl. 6.42 na visoko, da bi logika korektno radila potrebno je da bude ispunjen uslov I1=15 µA. Kolika u tom slu~aju treba da je vrednost otpornika R1? Dati komentar u vezi izbora otpornika R1.

74LSxxx

I1

R1

S0

B1

Vcc=+5V

Slika 6.42 : Na~in povezivanja ulaza bafera 74LSxxx

Odgovor Ako je R1 suvie veliki, a prekida~ S0 otvoren, vrednost ulaznog napona nee biti dovoljna da se stanje na ulazu kola 74LSxxx interpretira kao logi~ka 1. Na primer, za R1=220kΩ, imaemo ulazni napon od ( )5 15 10 220 10 1 76 3− ⋅ ⋅ =− * , V . Za drajvere iz familije 74LS ova vrednost je

neprihvatljiva kao nivo visoko. Sa druge strane, ako je R1 suvie mali a prekida~ S0 zatvoren, poveava se disipacija. Za slu~aj R1=100Ω imaemo struju koja te~e kroz otpornik od 5/0.1=50mA, to e rezultirati disipaciji od 0,052*100=0,25W. Da bi dobili dovoljno visok ulazni napon, recimo 3,5V, R1 ne sme da premai (5-3,5)/15=0,1MΩ ili 100kΩ. Ako izaberemo R1=10kΩ ovaj uslov bie sigurno zadovoljen. Pri R1=10kΩ kada je S0 zatvoren imaemo struju od 0,5mA.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-72

Test pitanje 6.80

Na slici 6.43a) prikazan je jedan klasi~an na~in povezivanja dvo-polo`ajnog prekida~a S sa jednim izlaznim priklju~kom preko TTL invertora, IT, na ulaz mikroprocesora. Signal Z na izlazu invertora IT je binarni. Do treperenja mehani~kih kontakata prekida~a S dolazi uvek kada se prekida~ prebacuje iz stanja ON u OFF i obrnuto. Kada se na izlazu invertora Z prika~i osciloskop tada se vidi talasni oblik prikazan na slici 6.43b). Objasniti zato se treperenje dirke na ekranu osciloskopa ne vidi kada se prekida~ S prebacuje u stanje OFF.

Odgovor Kada ulaz TTL-kola 'visi' (nije povezan na masu ili napajanje) tada se on interpretira od strane TTL kola kao visoko. Pri prebacivanju prekida~a iz stanja OFF u ON prekida~ treperi izme|u mase i otvoreno, a to se interpretira od strane TTL invertora kao 1 i 0. Zbog toga se na izlazu Z javlja viestruki prelaz iz 0 u 1 i obrnuto.

Pri prebacivanju prekida~a iz ON u OFF prekida~ treperi izme|u +Vcc i otvoreno, ali se oba stanja od strane TTL kola interpretiraju kao logi~ka jedinice. Zbog toga je izlaz Z stalno na nisko.

+Vcc

S

OFF

ON

TTLinvertor

Z

(ka mikro-procesoru)

prebacivanjeprekida~a ustanje ON

prebacivanjeprekida~a ustanje OFF

0

1

t

IT

Izlaz Z

a) kolo prekida~a b) ponaanje izlaza Z

slika 6.43 : Povezivanje prekida~a preko TTL invertora na ulaz mikroprocesora

Test pitanje 6.81

Odrediti fizi~ke i logi~ke adrese koje se u vektorskoj tabeli pridru`uju prekidnim vektorima: (a) INT 12h; i (b) INT 8h

Odgovor (a) Fizi~ke adrese za INT 12h su 00048h-00048h jer 4*12h=48h. Ovo zna~i da se u lokacijama fizi~ke memorije 48h, 49h, 4Ah i 4Bh ~uvaju vrednosti za CS i IP koje pripadaju prekidno uslu`noj rutini (Interrupt Service Routine - ISR) 12h. Logi~ka adresa je 0000:0048-0000:004Bh.

(b) Za INT 8h tra`i 8*4=32=20h. Zbog toga u memorijskim lokacijama ~ije su adrese 00020h, 00021h, 00022h i 00023h a pripadaju prekidnoj vektor tabeli ~uvaju vrednost CS:IP za INT 8h ISR.

Logi~ka adresa je 0000:0020h-0000:0023h.

Test pitanje 6.82

6. Programabilne jedinice, tehnike U/I prenosa

6-73

Objasniti funkciju INT 00

Odgovor Ovaj prekid pripada kategoriji prekida poznatih kao uslovne ili izuzetne prekide (conditional or exseption interrupts), a poziva se od strane mikroprocesora uvek kada postoje uslovi (izuzeci) koje CPU ne mo`e da rei, tj. da manipulie njima. Jedna od takvih situacija je pokuaj deljenja sa brojem nula. Imajui u vidu da se kao rezultat deljenja brojem nula dobija nedefinisana vrednost a CPU nije u stanju da interpretira ovakav rezultat, on automatski poziva ISR za obradu greke kod deljenja. Prekidna tabela kod mikroprocesora 80x86 sadr`i 256 prekida. Intel je rezervisao INT 0 za obradu ovog tipa greke. INT 0 se poziva od strane mikroprocesora uvek kada se pokua deljenje sa brojem nula. Kod PC maina kada se pozove ova rutina na ekranu se ispisuje poruka “DIVIDE ERROR”. Tipi~no se to javlja ako se pokua sa izvrenjem sledee programske sekvence.

MOV AL,46 ; AL=46

SUB CL,CL ; CL=0

DIV CL ; 46/0=nedefinisan rezultat

INT 0 se takodje javlja ako je koli~nik suvie veliki ali bi mogao da se smesti u registar u slu~aju kada se izvrava instrukcija DIV. Klasi~an takav primer je slede~i

MOV AX,0FFFFh ; AX=FFFFh

MOV BL,2 ; BL=2

DIV BL ; 65535/2=32767, ova vrednost je vea od 255 to je

; maksimalna vrednost koja mo`e da se ~uva u AL.

Test pitanje 6.83

Za datu ISR, logi~ka adresa je F000: FF53, da li je fizi~ka adresa FFF53h?

Odgovor Kada je logi~ka adresa F000: FF53 to zna~i da je CS=F000h a IP=FF53h. Pomeranje ulevo segmentnog registra za jednu heksadecimalnu cifru i sabiranjem sa ofsetom dobija se fizi~ka adresa FFF53h.

Test pitanje 6.84

Kada se javi prekid supspenduje se normalna obrada sve dok se ne izvri ISR. Normalnoj obradi se vraamo kada procesiranje ISR-a zavri. Prikazati grafi~ki koje sve aktivnosti prate prelazak sa normalne obrade na obradu ISR-a ponovni povratak na normalnu obradu.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-74

1 2 3

5

4

6

7

8

normalnaobrada

javio sezahtevza prekid

zavravasetekuainstrukcija

Pushu magacinPSW,CS,IP(EIP)

Branch to ISR

izvrenje ISR

Pop iz magacinaIP(EIP),CS,PSW

nastavaknormalneobrade

Test pitanje 6.85

Odrediti brzinu prenosa podataka u bps i brzinu prenosa znakova (karaktera) za asinhroni serijski prenos sa sl. 6.44.

3,33ms

1 1 011 0 11

0

1

2 stop

bita1 bajt

1 znak

startbit

Slika 6.44: Standarni asinhroni prenos podataka

Napomena: Bajt koji se prenosi ima vrednost 7Bh.

Odgovor Jedan bit se prenosi za period od, 3,33ms, pa je shodno tome bitska brzina prenosa 1/3,33ms=300 bita/s

S obzirom da postoje 11 bitova po znaku, za prenos jednog bajta je potrebno vreme od 11*3,33ms=36,63ms.

Brzina prenosa znakova iznosi

1/36,63ms=27,3 znakova/s

6. Programabilne jedinice, tehnike U/I prenosa

6-75

Test pitanje 6.86

Modemi standarno prenose podatke preko telefonske mre`e brzinom od 9600,14400 i 28800 bps-a. Ako se fajl veli~ine 2MB prenosi sa jednog ra~unara na drugi preko modema, odrediti vreme prenosa fajla kada se jedan znak prenosi u sledeem formatu: jedan start bit, jedan stop bit i osam bitova podataka pri sledeim bitskim brzinama: (a) 9600 bps; (b) 28800 bps

Odgovor Svaki bajt se prenosi sa 10 bitova. Shodno tome brzine prenosa znakova bie 960 znakova/s i 2880 znakova/s, respektivno.

Vreme prenosa celog fajla bie:

(a) 1048576 znakova * 1s / 960 znakova=1092s=18min i 12s.

(b) 1048576 znakova * 1s / 2880 znakova=364s=6 min i 4s.

Test pitanje 6.87

[ta predstavlja makro i kako se koristi?

Odgovor Postoje aplikacije kod programiranja na asemblerskom jeziku kod kojih grupa instrukcija obavlja neki zadatak koji se ~esto koristi. Na primer, INT 21h funkcija 09h namenjena za prikaz niza podataka, a funkcija 0Ah ~esto se koristi za prihvatanje podataka sa tastature, u okviru istog programa. Sa ciljem da se smanji vreme koje je potrebno da se kreiraju ove programske sekvence kao i da se smanji broj greaka u programu, uvodi se koncept rada sa makroima. Makro omoguava programeru da zadatak (skup programskih linija koje obavljaju specifi~an zadatak) napie samo jedanput i da se taj zadatak pozove kod god se javi potreba za njegovim izvrenjem.

Makro se definie na sledei na~in:

ime MACRO fik_par 1, fik_par 2,..., fik_par N ...... telo makroa

.............. ENDM Direktiva MACRO ukazuje na po~etak definicije makroa, a direktiva ENDM signalizira kraj. Izmedju ovih direktiva nalazi se telo makroa. Ime makroa je jedinstveno i mora da potuje konvencije asemblerskog jezika. Fiktivni parametri (fik_par i, i=1,...,N) su imena, ili parametri, ili ~ak registri, koji se pozivaju od strane tela makroa. Nakon to je makro kreiran, on se poziva po imenu a odgovarajue vrednosti se zamenjuju umesto fiktivnih parametara.

Ilustraciije radi, prikaz niza podataka koristei funkciju 09h od INT 21h, ~esto se koristi kod razli~itih aplikacija. Makro koji obavlja ovaj tip usluge se definie na sledei na~in:

NIZ MACRO POD1 MOV AH,09h MOV DX,OFFSET POD1 INT 21h ENDM Uo~imo da se fiktivni argumenat POD1 poziva u telu makroa. Ako usvojima da je PORUKA definisana u segmentu podataka, tada poziv makroa u kôdnom segmentu imae sledei oblik:

; ****** segment podataka *******

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-76

. . PORUKA DB ’Kako se vi zovete’,’$’ . . ; ****** kraj segmenta podataka *****

; ****** kodni segment ******

. . . NIZ PORUKA . . . ; ****** kraj kodnog segmenta ******

Instrukcija ’NIZ PORUKA’ poziva makro. Asembler, na mestu poziva makroa, ubacuje sledei kôd (vidi se iz .LST fajla):

1 MOV AH,09h 1 MOV DX,OFFSET PORUKA 1 INT 21h Labela 1 ukazuje da kôd pripada makrou. Kod ranijih verzija MASM-a ubacivanje znaka (+) ozna~avalo je liniju makroa.

Postoje sledea dva tipa komentara kod makroa:

(1) ako komentaru prethodi ’;’ kao kod programa na asemblerskom jeziku, ovaj komentar e se pojaviti u fajlu sa ekstenzijom .LST.

(2) ako komentaru prethodi ’;;’ ovaj komentar se nee pojaviti u .LST fajlu kod asembliranja programa.

Zadatak 6.21

Kreirati makro definicije radi: (a) postavljanja kursora na proizvoljnu poziciju na ekranu; (b)prikazivanje niza; i (c) brisanje ekrana.

Odgovor ;***********

KURSOR MACRO VRSTA,KOLONA ; ovaj makro postavlja kursor na lokaciji vrste, kolone

;; koristi se BIOS INT 10h funkcija 02

MOV AH,02 ; postavi funkciju KURSOR

MOV BH,00 ; stranica 00

MOV DH,VRSTA ; pozicija vrste (linije)

MOV DL,KOLONA ; pozicija kolone

INT 10h ENDM ;*****************

PRIKAZ MACRO NIZ

6. Programabilne jedinice, tehnike U/I prenosa

6-77

; ovaj makro prikazuje niz podataka

;; DX=adresa niza, koristi se funkcija 09 od INT 21h

MOV AH,09 ; funkcija za prikaz niza

MOV DX,OFFSET NIZ ; DX=ofset adresa podataka

INT 21h ; poziv prekida

ENDM ;*****************

BRISEKR MACRO ; ovaj makro brie ekran

;; koristi opciju O6 od INT 10h

MOV AX,0600h ; funkcija brisanja ekrana

MOV BH,07 ; normalni atribut

MOV CX,0 ; od vrste = 00, kolone = 00 MOV DX,184Fh ; do kolone=18h, kolone=4 h

INT 10h ; pozovi prekid

ENDM Zadatak 6.22

Koristei makro definicije iz prethodnog zadatka kreirati program koji e obrisati ekran a zatim na svaku od sledeih lokacija ekrana prikazati sledee poruke:

vrsta 2 kolona 4 ’zovem se’

vrsta 7 kolona 24 ’Sima Rus’

vrsta 12 kolona 44 ’kako se’

vrsta 19 kolona 64 ’vi zovete?’

Odgovor TITLE PROG1 PAGE 60,132 ; ***********************

BRISEKR MACRO MOV AX,0600h MOV BH,07h MOV CX,0 MOV DX,184Fh INT 10h ENDM ; ***********************

KURSOR MACRO VRSTA, KOLONA MOV AH,02 MOV BH,00

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-78

MOV DH,VRSTA MOV DL,KOLONA INT 10h ENDM ;*************************

PRIKAZ MACRO NIZ MOV AH,09 MOV DX,OFFSET NIZ INT 21h ENDM ; ****************************

SMAG SEGMENT DB 64 DUP(?) SMAG ENDS ; ***************************

SPOD SEGMENT PORUKA1 DB ’zovem se’, ’$’ PORUKA2 DB ’Sima Rus’, ’$’ PORUKA3 DB ’kao se’, ’$’ PORUKA4 DB ’Vi zovete’, ’$’ SPOD ENDS ; *****************************

PROGS SEGMENT GLAVNI PROC FAR ASSUME CS:PROGS, DS:SPOD, SS:SMAG MOV AX,SPOD MOV DS,A .LALL ; direktiva za listanje svih instrukcija i komentara

BRISEKR ; poziv makroa za brisanje ekrana

KURSOR 2,4 ; postavi kursor na vrsti 2, kolona 4

PRIKAZ PORUKA1 ; poziv makroa za prikaz

.XALL ; direktiva za llistanje delove makroa koji generiu opkôdove

KURSOR 7,24 ; postavi kursor na vrsti 7, kolona 24

PRIKAZ PORUKA2 ; poziv makroa za prikaz

.SALL ; direktiva koja brani generisanje komentara

KURSOR 12,44 ; postavi kursor na vrsti 12, kolona 44

PORIKAZ PORUKA3 ; poziv markoa za prikaz

6. Programabilne jedinice, tehnike U/I prenosa

6-79

KURSOR 19,64 ; postavi kursor na vrsti 19, kolona 64

PRIKAZ PORUKA4 ; poziv makroa za prikaz

MOV AH,4Ch INT 21h : povratak u DOS GLAVNI ENDP PROGS ENDS END GLAVNI Test pitanje 6.88

[ta su to LOCAL direktive i kako se one koriste kod makroa?

Odgovor Ovaj problem egzistira kada je u telu makroa definisana labela ili ime. Ilustracije radi, ako se makro umetne vie od jednom, u programu dolazi do opasnosti da labela bude vie puta zamenjena, tj da se grananje na instrukciju ispred koje stoji labela, vri nezavisno od toga na kom je mestu u programu umetnut makro. Da do ovoga ne dodje labele moraju da se deklariu kao LOCAL. To zna~i da, kod pisanja makroa, moraju da se potuju sledea pravila:

(1) Sve labele i labele polja moraju se deklarisati kao LOCAL

(2) LOCAL direktiva mora da bude u liniji koja neposredno sledi direktivu MACRO. [ta vie da bude i ispred polja komentara.

(3) Deklaracija svih labela ili imena kod LOCAL direktive mo`e biti izvedeno kao:

LOCAL ime1,ime2,ime3 ili kao:

LOCAL ime1 LOCAL ime2 LOCAL ime3 Da bi ukazali na ovaj program neto detaljnije analizirasemo sledei programski zadatak: (a) Kreirati makro MNOZI koji se koristi za mno`enje dve re~i koristei tehniku uzastopnih sabiranja, i smetanje rezultata na lokaciji REZULTAT; (b) Kreirati program koji mno`i (1) 4130*142, (2) 2160*386, (3) 612*482 a poziva makro definisan u stavci (a).

(a) Jedno od moguih reenja imalo bi oblik:

MNOZI MACRO VRED1,VRED2,REZULTAT LOCAL PONOVI ; ovaj makro izra~unava REZULTAT = VRED1 * VRED2

;; mno`enje se vri uzastopnim sabiranjem

;; vrednosti VRED1 i VRED2 su podaci tipa re~, a REZULTAT je dupla re~

MOV BX,VRED1 ; BX = mno`enik

MOV CX,VRED2 ; CX = mno`itelj

SUB AX,AX ; AX = 0

MOV DX,AX ; DX = 0

PONOVI: ADD AX,BX ;AX = AX+BX

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-80

ADC DX,00 ; DX = DX+00+CY

LOOP PONOVI ; go to PONOVI if CX≠0 MOV REZULTAT,AX ; smesti LS deo rezultata

MOV REZULTAT+2,DX ; smesti MS deo rezultata

ENDM (b) Struktura programa imae sledei oblik:

TITLE PROG2 PAGE 60,132 ; ***************************

MNOZI MACRO VRED1,VRED2,REZULTAT LOCAL PONOVI ; ovaj makro izra~unava REZULTAT =VRED1*VRED2

;; mno`enje se vri uzastopnim sabiranjem

;; VRED1, VRED2 su podaci tipa re~, a REZULTAT je dupla re~

MOV BX,VRED1 ; BX = mno`enik

MOV CX,VRED2 ; CX = mno`itelj

SUB AX,AX ;AX = 0

MOV DX,AX ; DX = 0

PONOVI: ADD AX,BX ;AX = AX+BX

ADC DX,00 ; DX = DX+00+CY

LOOP PONOVI ; go to PONOVI if CX≠O

MOV REZULTAT,AX ; smesti LS deo rezultata

MOV REZULTA+2,DX ; smesti MS deo rezultata ENDM

; ***************************

SPOD SEGMENT DB 64 DUP(?) SPOD ENDS ; *****************************

SPOD SEGMENT REZULTAT1 DW 2DUP(?) REZULTAT2 DW 2DUP(?) REZULTAT3 DW 2DUP(?) SPOD ENDS ; ***************************** SPROG SEGMENT GLAVNI PROC FAR

6. Programabilne jedinice, tehnike U/I prenosa

6-81

ASSUME CS: SPROG,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DS,AX MNOZI 4130,142,REZULTAT1 MNOZI 2160,386,REZULTAT2 MNOZI 612,482,REZULTAT3 MOV AH,4Ch INT 21h ; povratak na DOS

GLAVNI ENDP SPROG ENDS END GLAVNI Test pitanje 6.89

Pretpostavimo da postoji nekoliko makroa koji se koriste od strane veeg broja programa. Da li se takvi makroi moraju prepisivati svaki put?

Odgovor Odgovor bi glasio ne, pod uslovom da se koristi direktiva INCLUDE. Direktiva INCLUDE omoguava programeru da napie makro, da ga sa~uva kao fajl, i zatim da pozajmi taj makro bilo kom drugom fajlu. Pretpostavimo da su sledei veoma ~esto korieni makroi kreirani (napisani) i nakon toga zapameni pod fajl-imenom’MOJ MAKRO1.MAC’.

;******************

BRISEKR MACRO ; makro za brisanje ekrana

MOV AX,0600h MOV BH,07 MOV CX,0000 MOV DX,184Fh INT 10h ENDM ;******************

PRIKAZ MACRO NIZ ; makro za prikaz niza

MOV AH,09 MOV DX,OFFSET NIZ INT 21h ENDM ;******************

REGMAG MACRO ; makro za smetaj registara umagacin

PUSH AX PUSH BX PUSH CX

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-82

PUSH DX PUSH DI PUSH SI PUSH BP PUSHF ENDM ;******************

IZBMAG MACRO ; marko za izbavljanje sadr`aja registra iz magacina

POP F POP BP POP SI POP DI POP DX POP CX POP BX POP AX ENDM Usvojimo da su svi poomenuti makroi smeteni na disku pod fajl-imenom ’MOJ MAKRO1.MAC’, tada uz pomo direktive INCLUDE mogue ih je preneti ka bilo kom fajlu koji ima ekstenziju .asm a program mo`e zatim da ih poziva koliko god puta se za to javi potreba. Kada fajl sadr`i sve makroe, makroi se listaju na po~etku fajla sa ekstenzijom .lst i oni se umetaju (~ine) kao deo programa. Da bi ukazali na ovaj problem neto detaljnije, analizirajmo sledeu programsku sekvencu. Programska sekvenca koja sledi poziva makroe za brisanje ekrana, postavljanje kursora i prikazivanje niza. Ovi makroi su zapameni pod fajl imenom ’MOJ MAKRO2.MAC’.

;******************

TITLE PROG3 PAGE 60,132 INCLUDE MOJMAKRO2.MAC ; ***************************

SMAG SEGMENT DB 64 DUP(?) SMAG ENDS ; ***************************

SPOD SEGMENT PORUKA1 DB ’Stvarno se mogu pozivati’,’$’ SPOD ENDS ; *****************************

SKOD SEGMENT GLAVNI PROC FAR

6. Programabilne jedinice, tehnike U/I prenosa

6-83

ASSUME CS:SKOD,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DS,AX BRISEKR ; poziv makroa za brisanje ekrana

PRIKAZ PORUKA1 ; poziv makroa za prikaz

INT 21h ; povratak na DOS

GLAVNI ENDP SKOD ENDS END GLAVNI Test pitanje 6.90

Pored tastature mi je sigurno jedan od ulaznih uredjaja koji se naj~ee koristi. Funkcija mia pridru`ene su INT 33 h. Ukazati na osnovne karakteristike rada sa miom.

Odgovor Kao prvo, originalna IBM PC DOS verzija ne podr`ava rad sa miom. Zbog toga, prekid INT 33h, koji prati mi, nije deo BIOS-a ili DOS-a. To je u suprotnosti sa INT 21h i INT 10h koji su DOS- i BIOS-prekidi, respektivno. INT 33h je deo pokreta~kog programa (softverskog drajvera) koji se instalira kada se vri proces boot-ovanja PC maine.

A. Detekcija prisustva mia

Kod novijih verzija PC maina drajver za mi instaliran je od strane proizvodja~a, ali starije generacije maina nemaju mi. Zbog ovoga, prvi zadatak bilo kog INT 33h programa odnosi se na detekciju prisustva mia i broja tastera koji mi podr`ava. Ovaj zadatak ze izvrava od strane INT 33h funkcija AH=0. Nakon povratka iz INT 33h, ako je AX=0, tada rad sa miom nije podr`an. Ako je AX=FFFFh, rad sa miom se podr`ava, dok e broj tastera, sa kojima mi mo`e da radi, biti smeten u BX. I pored toga to kod najveeg broja mieva imamo samo dva tastera, desni i levi, postoje i mievi koji imaju srednji taster. Sagledajmo, sada, sledei programski kôd:

MOV AX,0 ; opcija inicijalizacije mia

INT 33h CMP AX,0 ; provera da li je AX=0 nakon povratka iy INT 33h

JE IZLAZ ; go to IZLAZ if AX=0 a to zna~i da mi nije instaliran

MOV BROJTAS,BX ; mi postoji, broj tastera = BX

... IZLAZ: Uka`imo na neke od osobenosti INT 33h:

(1) Kod INT 21h i INT 10h, za selekciju funkcije se koristi registar AH. Kod INT 33h za selekciju funkcija koristi se registar AL, a AH se postavlja na 0.

(2) Kod kodiranja, INT 33h obavezno koristiti “h” (ili “H”) koje ukazuje na heksadecimalno kodiranje. Ako nema “h”, kompilator e dodeliti decimalnu vrednost, a da nesrea bude vea 3310 = 2116, tako da umesto INT 33h pozvae se INT 21h.

B. Terminologija mia

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-84

Pokaziva~ mia (mouse pointer ili cursor) je simbol (naj~ee strelica) koji, na ekranu, pokazuje poziciju mia. U grafi~kom na~inu rada, pokaziva~ mia se prikazuje kao strelica, a u tekstualnom na~inu kao blok koji blinka. I pored toga to se objektivno pomeranje mia vri u santimetrima, pomeranje se ipak izra`ava (meri) u jedinicama koje se nazivaju mickeys. Jedinica mickey ukazuje na osetljivost mia. Na primer, mi koji mo`e pomerati kursor 40 jedinica na svaki santimetar ima osetljivost od 40 mickeys (ili 200 mickeys/in~; 1 in~=2,5 cm) Postoje mievi i sa dvostruko veom osetljivou.

C. Prikaz i skrivanje pozicije kursora

Funkcijsa AX=01 od INT 33h se koristi za prikazivanje pozicije kursora mia. Nakon izvrenja sledee sekvence, prikazuje se pokaziva~ mia.

MOV AX,01 INT 33h Kao to smo ve naglasili, u grafi~kom re`imu video prikaza, pozicija mia se prikazuje strelicom, a u tekstualnom re`imu rada na poziciji kursora mia vidi se pravougaonik. U tekstualnom na~inu rada blok koji pokazuje na poziciju kursora ima komplementarnu boju u odnosu na boju pozadine. Najbolji na~in da se sakrije (u~ini nevidljivom) pozicija kursora mia, kada je on vidljiv, je da se pozove funkcija AX=02 od INT 33h.

Sledea programska sekvenca prikazuje jedan koristan na~in za manipulisanje sadr`ajem prikaza. Aktivnosti koje se obavljaju su sledee:

(a) koristei INT 10h opciju 0F, pribaviti tekui video na~in rada i sa~uvati ga u BL.

(b) postaviti video na~in rada kod VGA grafike koristei opciju AH=10 h od INT 10h

(c) inicijalizovati mi sa AX=0, INT 33h

(d) u~initi mi vidljivim

(e) koristiti INT 21h opciju AH = 01 da bi se detektovao pritisak dirke sa tastature

(f) ako je pritisnuta bilo koja dirka tastature, vratiti po~etni re`im video prikaza.

MOV AH,0Fh ; dobavi tekui video na~in rada

INT 10h MOV BL,AL ; sa~uvaj ga

MOV AH,0 ; postavi video na~in (re`im) rada

MOV AL,10h ; na VGA grafiku

INT 10h MOV AX,0 ; inicijalizacija mia

INT 33h MOV AX,01 ; u~ini poziciju kursora mia vidljivom

INT 33h MOV AH,01 ; sa~ekaj na pritisak dirke tastature

INT 21h MOV AX,2 ; kada je dirka pritisnuta

INT 33h ; u~ini mi nevidljiv

MOV AX,0

6. Programabilne jedinice, tehnike U/I prenosa

6-85

MOV AL,BL ; vrati po~etni re`im video prikaza INT 10h D. Video rezolucija u odnosu na rezoluciju mia u tekstualnom re`imu prikaza

U tekstualnom re`imu rada video ekran je podeljen na 640*200 piksela. Ovo zna~i da, u (tekstualnom mode-u) mogue je prikazivati 80*25 znakova, pri ~emu se za svaki znak koriste 8*8 piksela (pa se tako dobija da je 8*80=640 i 25*8=200). Kada je video prikaz postavljen na tekstualni re`im rada (AH=03 i INT 10h), veli~ina mia se automatski podeava na rezoluciju od 640*200. Zbog toga, u tekstualnom re`imu rada, kada program dobavlja poziciju kursora mia, vrednost koja se dobija u pikselima mora da se podeli sa 8 da bi se dobila pozicija kursora u funkciji broja znakova po horizontali, koja se nalazi u opsegu od 0 do 79, a po vertikali u opsegu od 0 do 24.

E. Video rezolucija u odnosu na rezolulciju mia u grafi~kom re`imu rada

U grafi~kom re`imu rada rezolucija mo`e biti 640*200, 640*350, 640*480 i dr. Sa promenom rezolucije, menja se i rezolucija mia shodno sledeoj tabeli:

video mode video rezolucija tip mia rezolucija broj znakova

AL=03 640*200 tekstualni 640*200 80*25 AL=0Eh 640*200 grafi~ki 640*200 80*25

AL=0Fh 640*350 grafi~ki 640*350 80*44

AL=10h 640*350 grafi~ki 640*350 80*44

AL=11 h 640*480 grafi~ki 640*480 80*60

AL=12 h 640*480 grafi~ki 640*480 80*60

F. Pribavljanje tekue pozicije kursora mia

Opcijom AX=03 od INT 33h pribavlja se tekua pozicija kursora mia. Nakon povratka, tekua koordinata X se smeta u CX, a Y u DX. U BX se ~uva status tastera mia na sledei na~in : bit D0 ukazuje na status levog tastera mia, D1 na status desnog, a D2 na srednji taster. Kada je taster pritisnut, status je jednak 1, a kada je otputen status ima vrednost nula. Vrednosti koje uzima X se nalaze u opsegu od 0 do 639, a Y - od 0 do 199 (odnosi se na rezoluciju 640*200 za grafi~ki re`im rada). Da bi se dobila pozicija u tekstualnom re`imu rada, vrednosti u CX i DX se dele sa 8.

Sa ciljem da uka`emo sa neto vie detalja na ovaj problem analiziraemo programsku sekvencu koja obavlja sledee zadatke:

(a) dobavlja tekui re`im rada video prikaza i pamti ga;

(b) postavlja novi re`im rada video prikaza;

(c) dobavlja poziciju pokaziva~a kursora, konvertuje je u poziciji znaka i neprekidno je prikazuje sve dok se ne pritisne dirka;

(d) nakon pritiska dirke, ponovo se postavlja po~etni video re`im rada i vri se povratak u DOS

TITLE PROGRAM5 Prikaz pozicije misa PAGE 60,132 KURSOR MACRO VRSTA,KOLONA MOV AH,02h MOV BH,00

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-86

MOV DH,VRSTA MOV DL,KOLONA INT 10h ENDM PRIKAZ MACRO NIZ MOV AH,09h MOV DX,OFFSET NIZ ; puni adresu niza

INT 21h ENDM .MODEL SMALL .STACK .DATA PORUKA1 DB ’Pritisni bilo koju dirku da za izlaz’,’$’ PORUKA2 DB ’Mis je lociran na’,’$’ POZ_HOR DB ?, ?,’i’,’$’ POZ_VER DB ?, ?,’$’ POCVID DB ? ; tekuci video re`im

NOVVID DB ? ; novi video re`im

.CODE GLAVNI PROC MOV AX,@DATA MOV DS,AX MOV AH,0Fh ; dobavi tekui re`im rada videa

int 10h MOV POCVID,AL ; sa~uvaj ga

MOV AX,0600h ; obrii ekran

MOV BH,07 MOV CX,0 MOV DX,184Fh INT 10h MOV AH,00h ; postavi novi video re`im

MOV AL,NOVIVID INT 10h MOV AX,0 ; inicijaliziraj mi

INT 33h MOV AX,01 INT 33h

6. Programabilne jedinice, tehnike U/I prenosa

6-87

KURSOR 20,20 PRIKAZ PORUKA1 PONOVI MOV AX,03h ; dobavi poziciju mia

INT 33h MOV AX,CX ; dobavi horizontalnu piksel poziciju

CALL KONVERZ ; konvertuj na prikaz znaka

MOV POZ_HOR,AL ; smesti LS cifru

MOV POZ_HOR+1,AH ; smesti MS cifru

MOV AX,DX ; dobavi vertikalnu piksel poziciju kursora

CALL KONVERZ ; konvertuj

MOV POZ_VER, AL ; sa~uvaj

MOV POZ_VER+1,AH KURSOR 5,20 PRIKAZ PORUKA2 PRIKAZ POZ_HOR PRIKAZ POZ_VER MOV AH,01 ; proveri da li je pritsnuta dirka

INT 16h JZ PONOVI ; ako nije pritisnuta go to PONOVI

MOV AH,02 ; u~initi mi nevidljivim

INT 33h MOV AH,0 ; obnovi po~etni re`im video prikaza

MOV AL,POCVID ; napuni po~etni re`im video prikaza

INT 10h MOV AH,4Ch ; povrtak na DOS

INT 21h GLAVNI ENDP ;******************************

; procedura za konverziju pozicije kursora u poziciju ASCII

; znakova, AX=pozicija piksera (u heksa formatu)

; pri povratkuiz procedure AX=dve ASCII cifre

KONVERZ PROC SHR AX,1 ; deli sa 8 da bi se dobila pozicija kursora misa

SHR AX,1 ; izra`ena upoziciji znaka

SHR AX,1 MOV BL,10 SUB AH,AH

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-88

DIV BL ; deli sa 10 da bi konvertovao heksa u decimalno

OR AX,3030h ; formiraj ASCI kôd

RET ; povratak sa AX=dva ASCII znaka

KONVERZ ENDP END GLAVNI G. Postavljanje pozicije pokaziva~a mia (AX=04)

Ova funkcija omoguava pozicioniranje kursora mia na bilo koju poziciju na ekranu. Pre nego to se ova funkcija pozove, novu koordinatu X treba smestiti u CX a Y u DX. Vrednosti moraju biti izra`ene u broj piksela i da se nalaze u opsegu od 0 do 639 za X i od 0 do 199 za Y, pri rezoluciji video prikaza od 640*200. Koordinata (0,0) odgovara krajnjem levom polo`aju gore. Ilustracije radi, da bi se postavio kursor na lokaciji karaktera 9. kolona, 5. vrsta (u tekstualnom re`imu rada va`i format 80*25), potrebno je da pomno`iti obe koordinate sa 8, kako bi se dobila pozicija piksela, tj. koordinate karaktera (9. kolona, 5. vrsta), postaju, sada, piksel koordinate (72. kolona, 42. linija).

H. Pribavljanje informacije o pritisnutoj dirci mia (AX=05)

Ova funkcija se koristi za pribavljanje informacije o tome koji je taster pritisnut, nakon zadnjeg poziva ove funkcije. Registri se, pri pozivu funkcije, postavljaju na sledei na~in:

AX=05

BX=0 za levi taster, = 1 za desni, = 2 za srednji

Nakon povratka, imaemo:

AX=status tastera, pri~emu bitovi imaju sledea zna~enja:

levi taster: D0= pritisnutnije 0tisnuttaster pri 1

==

desni taster D1= pritisnutnije 0tisnuttaster pri 1

==

srednji taster D2= pritisnutnije 0tisnuttaster pri 1

==

BX=broj pritiskanja tastera

CX=X horizontalna koordinata u pikselima zadnjeg pritiskanja dirke

DX=Y vertikalna koordinata u pikselima zadnjeg pritiskanja dirke

Sledea programska sekvenca prikazuje jedan od na~ina kako se koristi ova funkcija.

;****************

TITLE PROG6 Prikazuje broj pritiskanja misa ; ovaj program ~eka da se mi pritisne odredjeni broj puta i

; prikazuje taj broj kada se bilo koja dirka sa tastature pritisne

; pritisni bilo koju dirku da bi se vratio u lDOS

PAGE 60,132 KURSOR MACRO VRSTA,KOLONA MOV AH,02 h MOV BH,00 MOV DH,VRSTA

6. Programabilne jedinice, tehnike U/I prenosa

6-89

MOV DL,KOLONA INT 10h ENDM PRIKAZ MACRO NIZ MOV AH,09h MOV DX,OFFSET NIZ ; napuni adresu niza

INT 21h ENDM .MODEL SMALL .STACK .DATA PORUKA1 DB ’Pritisni levo dugme manje od 99 puta’,’$’ PORUKA2 DB ’Da se odredi koliko puta je pritisnuta bilo koja dirka’,’$’ PORUKA3 DB ’Pritisnuli ste je’,’$’ BROJ_PR DB ?. ?. ’Broj puta’,’$’ POKUKA4 DB ’Sada pritisni bilo koju dirku za izlazak u DOS’,’$’ PREVID DB ? ; tekuci video re`im rada

NOVVID DB 12h ; novi video re`im rada

.CODE MOV AX,@DATA MOV DS,AX MOV AH,0Fh ; dobavi tekui video re`im

INT 10h MOV PREVID,AL ; zapamti ga MOV AX,0600h ; obrii ekran

MOV BH,07 MOV CX,0 MOV DX,184Fh INT 10h MOV AH,00h ; postavi novi re`im videa

INT 10h MOV AX,0 ; inicijaliziraj mi

INT 33h MOV AX,01 ; prika`i poziciju mia

INT 33h KURSOR 2,1

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-90

PRIKAZ PORUKA1 KURSOR 4,1 PRIKAZ PORUKA2 MOV AH,07 ; ~ekaj na pritisak dirke

INT 21h MOV AX,05 ; dobavi broj pritiskanja mia

MOV BX,0 ; proveri da li je pritsnuta leva dirka

INT 33h MOV AX,BX ; BX= broj pritiskanja dirke

MOV BL,10 DIV BL OR AX,3030 ; konverzija u ASCII

MOV BROJ_PR,AL, ; sa~uvaj vrednost

MOV BROJ_PR+1,AH, KURSOR 10,2 PRIKAZ PORUKA3 PRIKAZ BROJ_PR KURSOR 20,2 PRIKAZ PORUKA4 MOV AH, 07 ; ~ekaj na pritiska dirke sa tastature

INT 21h MOV AH,02 ; u~ini mi nevidljivim

INT 33h MOV AH,0 ; obnovi po~etni re`im l video prikaza

MOV AL,PREVID ; postavi po~etni re`im video prikaza

INT 10h MOV AH,4Ch ; povratak na DOS

INT 21h GLAVNI ENDP END GLAVNI I. Dobavljanje informacije o otputanje dirke mia (AX=06)

Ova funkcija je ista kao i AX=05 sa izuzetkom to predaje informaciju o pritisnutom tasteru mia.

Poziv funkcije se vri pri:

AX=06

BX=0 za levi taster, 1 za desni, 2 za srednji.

Nakon povratka, imaemo sledee:

AX=status dirke, gde

6. Programabilne jedinice, tehnike U/I prenosa

6-91

levi taster: D0= pritisnutnije 0tisnuttaster pri 1

==

desni taster D1= pritisnutnije 0tisnuttaster pri 1

==

srednji taster D2= pritisnutnije 0tisnuttaster pri 1

==

BX= broj pritiskanja pri otputanju;

CX=X piksel koordinata pri zadnjem otputanju (oslobadjanju);

DX=Y piksel koordinata pri zadnjem otputanju.

J. Postavljanje horizontalne granice za pokaziva~ mia (AX=07)

Kada se mi inicijalizira koristei funkciju AX=0, kursor se mo`e pomerati po celom ekranu. Dve naredne funkcije postavljaju X i Y granice u okviru kojih se mi mo`e pomerati. Poziv funkcije se vri na sledei na~in:

AX = 07

CX = minimalna koordinata po X, u pikselima (0 - 639)

DX = maksimalna koordinata po X, u pikselima (0-639)

Treba napomenuti da CX mora da ima manju vrednost od DX, ina~e se javlja efekat swappe.

K. Postavljanje vertikalnih granica za pokaziva~ mia (AX=08)

Vertikalne granice u okviru kojih se kursor mia mo`e poomerati postavljaju se pozivom funkcije AX=08 na sledei na~in:

AX = 08

CX = minimalna koordinata po Y u pikselima (0-199)

DX = maksimalna koordinata po Y u pikselima (0-199)

Treba naglasiti da vrednost u CX mora biti manja od vrednosti u DX, ina~e se javlja efekat swappe.

L. Postavljanje oblasti prikaza gde se pokaziva~ mia ne vidi (AX = 10 h)

Ovom funkcijom se definie oblast prikaza gde se pozicija kursora mia ne vidi. Naime, ako se kursor mia pomeri na tu povrinu, on se ne vidi. Poziv ove funkcije se vri na sledei na~in:

AX = 10h

CX = gornja koordinata X, SI = donja koordinata X

DX = gornja koordinata Y DI = donja koordinata Y

M. Pribavljanje informacije o verziji drajvera mia (AX = 24 h)

Ova funkcija omoguava programeru da odredi koja je verzija pokreta~kog programa (drajvera mia) instalirana. Takodje, ona ukazuje na tip instaliranog mia. Funkcija se poziva na sledei na~in:

AX = 24h

Nakon povratka imaemo:BH = glavna verzija, BL = pod-verzija (ilustracije radi, verzije 7.20, glavna verzija je 7 a pod-verzija 20).

CH = tip mia

= 1 mi koji koristi magistralu

= 2 serijski mi

= 3 InPort mi

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-92

= 4 PS/2 mi

= 5 HP mi

CL = 0, ako je mi tipa PS/2. Za slu~aj da je serijski mi, tada brojevi izmedju 2 i 7 ukazuju na to koji se IRQ broj koristi (kao to je IRQ2, IRQ3,...).

Test pitanje 6.91

Zadnjih desetak godina LCD prikazi sve ~ee zamenjuju LED prikaze. Navesti klju~ne razloge ovakvog trenda.

Odgovor 1. Cena LCD prikaza (displeja) postaju sve ni`e.

2. Postoji mogunost da LCD prikazuju cifre, znakove (karaktere), i grafiku (semigrafi~ki simboli), nasuprot LED prikazima, koji su uglavnom ograni~eni na prikaz cifara, manjeg broja znakova i semigrafi~kih simbola.

3. Ugradnjom kontrolera za osve`avanje u sam LCD prikaz, CPU je oslobodjen od zadatka koji se odnosi na LCD osve`avanje. Kod LED prikaza ulogu osve`avanja uglavnom obavlja CPU.

4. Programiranje je jednostavno, kako za prikaz tekstualne, tako i grafi~ke informacije.

Test pitanje 6.92

Kataloki podaci koji se odnose na: (a) opis pinova LCD displeja prikazani su na Slici 6.45; (b) odgovarajue komandne kôdove - na Slici 6.46; (c) pozicije pinova razli~itih tipova LCD displeja firme Optrex - na Slici 6.47; (d) na~in povezivanja sa portom 8255A - na Slici 6.48.

Ukazati na to:

(1) kako se vri predaja komandi LCD displeju;

(2) kako se vri predaja podataka LCD displeju.

Pin Simbol

U/I Opis

1 VSS - Masa

2 VCC - +5V napajanje

3 VEE - Izvor napajanja za upravljanje kontrastom

4 RS U Selekcija registra:

- RS = 0 za selekciju registra komande instrukcije,

- RS=1 za selekciju registra podataka

5 R/W U Dozvola

6 E U 8-bitna magistrala podataka

7 DB0 I - || -

8 DB1 I - || -

9 DB2 I - || -

10 DB3 I - || -

11 DB4 I - || -

12 DB5 I - || -

6. Programabilne jedinice, tehnike U/I prenosa

6-93

13 DB6 I - || -

14 DB7 I - || -

Slika 6.45 Opis funkcija pina jednog tipa LCD displeja

Kod (heksa)

Komanda za instrukcioni registar LCD-a

1 Obrii prikaz ekrana

2 Povratak na poziciju home

4 Dekrementiraj kursor (pomeranje kursora ulevo)

6 Inkrementiraj kursor (pomeranje kursora udesno)

5 Pomeri prikaz desno

7 Pomeri prikaz levo

8 Isklju~i prikaz, isklju~i kursor

A Isklju~i prikaz, uklju~i kursor

C Uklju~i prikaz, isklju~i kursor

E Uklju~i prikaz, uklju~i kursor

F Uklju~i prikaz, blinkaj kursor

10 Pomeri poziciju kursora ulevo

14 Pomeri poziciju kursora udesno

18 Pomeri ceo prikaz ulevo

1C Pomeri ceo prikaz udesno

C0 Dovedi kursor na po~etak druge linije

38 2 linije i matrica 5x7

Slika 6.46 Opis komandnih kodova LCD displeja

1 2 13 14

14 13 2 1

14 13

2 1

DMC16106ADMC1606CDMC16117DMC16128DMC16129DMC16433DMC20434

DMC16106BDMC16207DMC16230DMC16215DMC16216

DMC20261DMC24227DMC24138DMC32132DMC32239DMC40131DMC40218

Slika 6.47 Pozicija pinova kod razli~itih LCD prikaza firme Optrex

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-94

Kolo zadekodiranje

D0 PA0

D7 PA7

WR

RD

A0 PB0A1 PB1

PB2CS RESET

D0 VCC VEE

D7 VSS

RS R/W E

D0

D7IOW

IOR

A0A1

A2A9

AEN

8255

LCD

Slika 6.48 Na~in sprezanja interfejsa 8255 sa LCD displejom

Odgovor Pre nego to uka`emo na to kako se vri predaja komandi i podataka LCD displeju, zadr`aemo se najpre na kraem opisu pinova LCD displeja.

• VCC - je pin za +5 V

• VSS - je pin za masu

• VEE - koriste se za kontrolu kontrasta LCD displeja

• RS - izbor registra.Unutar LCD displeja ima dva registra, izbor pristupa se vri na sledei na~in:

RS = 0 : pristupa se komandnom registru (komande su tipa brisanje prikaza, kursor u poziciji home i dr).

RS = 1 pristupa se registru podataka.

• R/W -(Read/Write): ovaj ulaz omoguava korisniku da upie informaciju u LCD pri R/W = 0, ili da pro~ita informaciju iz LCD-a pri R/W = 1.

• E -(Enable): koristi se od strane LCD-a za le~ovanje informacije prisutna na pnovima za podatke. Le~ovanje se vri impulsom koji se dovodi na ovaj pin. Prelaz impulsa kod le~ovanja mora biti tipa high-to-low a minimalna irina impulsa treba da je 450 ns.

• D0-D7 - 8 bitova za podatke. Koriste se za predaju informacije LCD-u ili ~itanje sadr`aja internih registara LCD-a. Pri RS = 1, u displej se mogu upisivati slova A-Z i a - z, kao i cifre 0 - -9.

Spisak komandi koji se mo`e predati LCD displeju prikazan je na Slici 6.46. Kod upisa komande RS = 0. Pre upisa komandi potrebno je da se proveri stanje markera busy koji ukazuje da li je LCD spreman da prihvati informaciju. Marker bysy predstavlja bit D7, a njegovo stanje se mo`e ~itati kada je R/W = 1 i RS = 0. Kada je D7 = 1 tada je i busy marker = 1, to zna~i da LCD obavlja neku internu operaciju i nee prihvatiti novu informaciju. Kada je D7=0, LCD je spreman da primi novu informaciju. Zbog ovoga, pre nego to se upisuje bilo kakav podatak u LCD, preporu~ljivo je da se testira stanje busy markera (busy flag - BF).

Da bi predali komandu LCD prikazu, shodno sadr`aju sa Slike 6.46, neophodno je postaviti pin RS na logi~ku nulu, a zatim generisati high-to-low impuls na E pinu i time dozvoliti interno le~ovanje podataka u LCD-u.

U sledeoj programskoj sekvenci prikazana je ta aktivnost; pri ~emu je usvojeno sledee:

(a1) Oba porta, A i B, ~ipa 8255 su konfigurisani kao izlazni

(a2) LCD pinovi podataka D0 do D7 povezani su na Port A ~ipa 8255

6. Programabilne jedinice, tehnike U/I prenosa

6-95

(a3) LCD-ov pin R/W povezan je na PB1 Porta B ~ipa 8255.

(a4) LCD-ov pin E povezan je na PB2 Porta B ~ipa 8255

MOV AL,38h ; inicijaliziraj LCD za dve linije & matri~ni prikaz znakova formata 5*7

CALL KOMAND ;upis komande u LCD

CALL ZAKASNI ; sa~ekaj pre naredne komande

MOV AL,0Eh ; predaj komandu LCD-u, o generisanju kursora CALL KOMAND ;upis komande u LCD

CALL ZAKASNI ; sa~ekaj pre naredne komande

MOV AL,01 ; obrii LCD

CALL ZAKASNI MOV AL,06 ; komanda za pomeranje kursora udesno ......

; ** mo`e da sledi bilo koja druga komanda

; procedura KOMAND je sledeeg oblika

KOMAND PROC ; procedura upisuje komandu u LCD

PUSH DX ; sa~uvaj u magacin DX

MOV DX,PORTA OUT DX,AL ; poalji kod na Port A

MOV DX,PORTB ; adresa Porta B

MOV AL,00000100B ; RS=0, R/W=0, E=1 za impuls tipa high-to-low OUT DX,AL ; generii izlaz na Portu B

NOP ; ~ekaj da impuls high-to-low

NOP ; bude Pirine najmanje 450 ns

NOP ; ovo mo`e da se izvede i kao petlja

NOP MOV AL,00000000B ; RS=0, R/W = 0, E = 0

OUT DX,AL POP DX ; obnovi sadr`aj DX-a

RET KOMAND ENDP Kada se predaje podatak LCD-u neophodno je postaviti RS= 1 i predati high-to-low impuls pinu E, ~ime se omoguava interno le~ovanje podataka u LCD-u. Sledea programska sekvenca koristi se za predaju (upis) podataka LCD-u. Izmedju dve predaje umee se kanjenje kako bi LCD bio spreman da prihvati novi podatak, pri ~emu je usvojeno sledee:

(b1) Oba porta A i B ~ipa 8255 sa Slike 4 sukonfigurisana kao izlazna

(b2) LCD pinovi podataka D0 - D7 povezani su Port A ~ipa 8255

(b3) LCD-ov pin RS povezan je na PB0 Porta B ~ipa 8255.

(b4) LCD-ov pin R/W povezan je na PB1 Porta B ~ipa 8255

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-96

(b5) LCD-ov pin E povezan je na PB2 Porta B ~ipa 8255

; ** u segmentu podataka ***

PODACI DB “ZDRAVO”

; ** deo progamske sekvence iz kodnog segmenta ***

MOV CX,6 ; predaju se 6 ASCII znakova za prikaz

MOV SI,OFFSET PODACI ; puni se ofset adresa

NAREDNI MOV AL[SI] ; dobavi znak u AL

CALL UPPOD ; poziv potprograma za upis podatka

INC SI ; uka`i na naredni

CALL ZAKASNI ; ~ekaj za naredni znak

LOOP NAREDNI ; svi podaci upisani na LCD

....

; podaci se upisuju u LCD bez da se vri provera

; markera busy, AL = znak koji se predaje LCD-u

UPPOD PROC

PUSH DX ; sa~uvaj DX u magacin

MOV DX,PORTA ; DX = adresa Porta A

OUT DX,AL ; predaja znaka ka LCD-u

MOV AL,00000101B ; RS = 1, R/W = 0, E= 1 za generisanje impulsa high-to-low

MOV DX,PORTB ; adresa Porta B

OUT DX,AL ; impuls Enable = “high” zbog impulsa high-to-low, dok je RS = 1

NOP

NOP

MOV AL,0000000lB ; RS = 1, R/W = 0, E = 0 za impuls high-to-low

OUT DX,AL

POP DX

RET

UPPOD ENDP

U prethodnoj proceduri ne testira se stanje markera busy. Treba naglasiti da proizvodja~ LCD displeja u svojim katalokim podacima preporu~uje da se busy marker testira pre nego to se preda novi podatak. Programski kod kod koga je obezbedjeno testiranje markera busy ima sledei oblik:

UPISP PROC ; upis ASCII podatka u LCD

PUSH DX ; sa~uvaj DX

MOV AH,AL ; sa~uvaj podatak koji se alje ka LCD-u

MOV AL,90h ; definii Port A=ulazni, Port B=izlazni

MOV DX,KPORT ; DX=adresa komandnog porta 8255

OUT DX,AL ; upis u komandni Port 8255

6. Programabilne jedinice, tehnike U/I prenosa

6-97

MOV AL,00000110B ; RS=0 je ~itanje busy markera komanda, R/W = 1 i E = 1

MOV DX,PORTB ; adresa Porta B

OUT DX,AL ; upis u Port B

MOV DX,PORTA ; adresa Porta A

PONOVI IN AL,DX ; ~itaj busy marker (D7)

ROL AL,1 ; smesti busy marker u CF

JC PONOVI ; if CF = 1 LCD nije spreman, go to PONOVI

MOV AL,80h ; Port A = izlazni definicija komandne re~i

MOV DX,KPORT ; DX = aredsa upravlja~kog porta 8255

OUT DX,AL ;upis upravlja~ke re~i u 8255

MOV AL,AH ;dobavi znak koga treba poslati na LCD

MOV AL,00000101B ; RS = 1 jer je upis podatka, R/lW = 0,

; E = 1 za impuls high-to-low

MOV DX,PORTB ; adresa porta B

OUT DX,AL ; E = 1 za high-to-low impuls

NOP ; dok je RS = 1

NOP

MOV AL,00000001B ; RS = 1, R/W = 0, E = 0 za impuls high-to-low

OUT DX,AL ; za Port B

POP DX ; obnosi DX

RET

UPISP ENDP

Kod LCD-a podatak je mogue upisati na bilo koju lokaciju. Adresa lokacije i na~in pristupa definisan je na sledei na~in:

RS R/W

D7

D6 D5 D4 D3 D2 D1 D0

0 0 1 A A A A A A A

gde se za liniju 1 adresa: AAA AAAA nalazi u opsegu od 000 0000 do 010 0111, za liniju 2: AAA AAAA = 100 0000 do 110 0111. (Za vie detalja videti Sliku 6.49)

D7

D6 D5 D4

D3

D2

D1

D0

linija 1 (min) 1 0 0 0 0 0 0 0

linija 1 (max) 1 0 1 0 0 1 1 1

linija 2 (min) 1 1 0 0 0 0 0 0

linija 2 (max) 1 1 1 0 0 1 1 1

Slika 6.49 Adresiranje LCD-a

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-98

Vie adrese mogu dostii vrednost do 010 0111 za LCD sa 40 znakova, ili do vrednosti 010 011 za LCD-ove sa 20 znakova. Na osnovu prethodne diskusije mogue je odrediti adrese pozicije kursora za LCD razli~itih formata kako je to prikazano na Slici 6.50

16*2 LCD

80 81 82 83 84 85 86 do 8F C0 C1 C2 C3 C4 C5 C6 do CF

20*1 LCD

80 81 82 83 do 93

20*2 LCD

80 81 82 83 do 93 C0 C1 C2 C3 do D3

20*4 LCD

80 81 82 83 do 93 C0 C1 C2 C3 do D3 94 95 96 97 do A7 D4 D5 D6 D7 do E7

40*2 LCD

80 81 82 83 do A7 C0 C1 C2 C3 do E7

Napomena sve adrese su date kao heksadecimalne

Slika 6.50 Adrese kursora za razli~ite LCD prikaze

Ilustracije radi, na Slici 6.51 dati su vremenski dijagrami signala koji se odnose na pobudu LCD-a, a na Slici 6.52 lista svih instrukcija koje podr`avaju LCD-ovi firme Optrex Corporation.

Data

tDSWtH

tAS tPWH tAH

E

R/W

RS

tPWH = Enable pulse width = 450 ns (minimum)tDSW = Data set up time = 195 ns (minimum)tH = Data hold time = 10 ns (minimum)tAS = Set up time prior to E (going high) for both RS and R/W = 140 ns (minimum)tAH = Hold time after E has come down for both RS and R/W = 10 ns (minimum

Slika 6.51 Vremenski dijagrami karakteristi~nih signala LCD-ova firme Optrex Corporation

6. Programabilne jedinice, tehnike U/I prenosa

6-99

Code Intruction

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Description Execution Time (max)

Clear Display 0 0 0 0 0 0 0 0 0 1 Clears entire display and sets DD RAM address 0 in adress counter

1.64 ms

Return Home 0 0 0 0 0 0 0 0 1 -- Sets DD RAM address counter. Also returns display being shifted to original position. DD RAM contents remain unchanged.

1.64 ms

Entry Mode Set 0 0 0 0 0 0 0 1 1/D

S Sets cursor move direction and specifies shift of display. These operations are performed during data write and read.

40 µs

Display ON/OFF Control

0 0 0 0 0 0 1 D C B Sets ON/OFF od entire display (D), cursor ON/OFF (C). and blink of cursor position character (b).

40 µs

Cursor or Display Shift

0 0 0 0 0 1 S/C

R/L

-- -- Moves cursor and shifts display without changing DD RAM contents.

40 µs

Function Set 0 0 0 0 1 DL N F -- -- Sets interface data length (DL), number of display lines (L) and character font (F).

40 µs

Set CG RAM Adress

0 0 0 1 AGC Sets CGRAM address. CG RAM data is sent and received after this setting.

40 µs

Set DD RAM Address

0 0 1 ADD Sets DD RAM address. DD RAM data is sent ind received after this setting.

40 µs

Read Busy Flag & Address

0 1 BF AC Reads Busy flag (BF) indicating internal operation is being performed and reads address counter contents.

40 µs

Write Data to CG or DD RAM

1 0 Write Data Writes data into DD RAM or CG RAM

40 µs

Read Data from CG or DD RAM

1 1 Read Data Reads data into DD RAM or CG RAM

40 µs

Notes: 1. Execution times are maximum times when fcp or fosc is 250 kHz. 2. Execution time changes when frequency changes. Ex: when fcp or fosc is 270KHz; 40µs*250/270 = 37µs 3. Abbrevations: DD RAM Display data RAM CG RAM Character generator RAM ACC CG RAM address ADD DD RAM Address, coresponds to cursor address AC Address counter used for both DD and CG RAM address 1/D=1 Increment 1/D=0 Decrement S=1 Accompanies display shift S/C=1 Display shift

Zbirka zadataka iz Mikroprocesora i mikrora~unara

6-100

S/C=0 Cursor move R/L=1 Shift to the right R/L=0 Shift to the left DL=1 8 bits, DL=0:4 bits N=1 1 lines, N=0:1 line F=1 5*10 dots, F=0: 5*7 dots BF=1 Internally operating BF=0 Can accept instruction

Slika 6.52 Lista instrukcija LCD-ova firme Optrex Corporation

Dodatak A

A-1

A. APPENDIX: ASSEMBLER DIRECTIVES AND NAMING RULES

ö õ

SECTION A.1: 80x86 ASSEMBLER DIRECTIVES This section consists of two parts. The first part describes some of the most widely used directives in 80x86 Assembly language programming. In the second part Assembly language rules and restrictions for names and labels are discussed and a list of reserved words is provided.

Directives, or as they are sometimes called, pseudo-ops or pseudo-instructions, are used by the assembler to help it translate Assembly language programs into machine language. Unlike the microprocessor's instructions, directives do not generate any opcode; therefore, no memory locations are occupied by directives in the final ready-to-run (exe) version of the assemblly program. To summarize, directives give directions to the assembler program to tell it how to generate the machine code; instructions are assembled into machine code to give directions to the CPU at execution time. The following are descriptions of the some of the most widely used directives for the 80x86 assembler. They are given in alphabetical order for ease of reference.

ASSUME The ASSUME directive is used by the assembler to associate a given segment's name with a segment register. This is needed for instructions that must compute an address by combining an offset with a segment register. One ASSUME directive can be used to associate all the segment registers. For example: ASSUME CS:name1,DS:name2,SS:name3,ES:name4. where name1, name2, and so on, are the names of the segments. The same result can be achieved by having one ASSUME for each register:

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-2

ASSUME CS:name1 ASSUME DS:name2 ASSUME SS:name3 ASSUME ES:nothing

ASSUME nothing The key word "nothing" can be used to cancel a previous ASSUME directive.

DB (Define Byte) The DB directive is used to allocate memory in byte-sized increments. Look at the following examples:

DATA1 DB 23 DATA2 DB 45,97h,10000011b DATA3 DB 'The planet Earth' In DATA1 a single byte is defined with initial value 23, DATA2 consists of several values in decimal (45), hex (97H), and binary (10000011B), Finally, in DATA3, the DB directive is used to define ASCII characters. The DB directive is normally used to define ASCII data. In all the examples above, the address location for each value is assigned by the assembler. We can assigned a specific offset address by the use of the ORG directive.

DD (Define Doubleword) To allocate memory in 4-byte (32-bit) increments, the DD directive is used. Since word-sized operands are 16 bits wide (2 bytes) in 80x86 assemblers, a doubleword is 4 bytes. VALUE1 DD 4563F57H RESULT DD ? ; RESERVE 4-BYTE LOCATION DAT4 DD 25000000 It must be noted that the valules defined using the DD directive are placed in memory by the assembler in low byte to low address and high byte to high address order. This convention is referred to as little endian. For example, asssuming that offset address 0020 is assigned to VALUE1 in the example above, each byte will reside in memory as follows:

DS:20=(57)

DS:21=(3F)

DS:22=(56)

DS:23=(04)

DQ (Define Quadword) To allocate memory in 8-byte increments, the DQ directive is used. In the 80x86 a word is defined as 2 bytes; therefore, a quadword is 8 bytes. DAT_64B DQ 5677DD4EE4FF45AH DAT8 DQ 10000000000000

DT (Define Tenbytes) To allocate packed BCD data, 10 bytes at a time, the DT directive is used. This is widely used for memory allocation associated with BCD numbers.

Dodatak A

A-3

DATA DT 39997765419974 Notice there is no H for the hexadecimal identifier following the number. This is a characteristic particular to the DT directive. In the case of other directives (DB, DW, DD, DQ), if there is no H at the end of the number, it is assumed to be in decimal and will be converted to hex by the assembler. Remember that the little endian convention is used to place the bytes in memory, with the least significant byte going to the low address and the most significant byte to the high address. DT can also be used to allocated decimal data if "d" is placed after the number. DATA DT 6553d ; stores hex FFFF in a 10-byte location

DUP (Duplicate) The DUP directive can be used to duplicate a set of data a certain number of times instead of having to write it over and over. DATA1 DB 20 DUP(99) ; DUPLICATE 99 20 TIMES DATA2 DW 6 DUP(5555H) ; DUPLICATE 5555H 6 TIMES DATA3 DB 10 DUP(?) ; RESERVE 10 BYTES DATA4 DB 5 DUP(5 DUP(0)) ; 25 BYTES INITIALIZED TO ZERO DATA5 DB 10 DUP(00,FFH) ; 20 BYTES ALTERNATE 00, FF

DW (Define Word) To allocate memory in 2-byte (16-bit) increments, the DW dirctive is used. In the 80x86 family, a word is defined as 16 bits. DATAW_1 DW 5000 DATAW_2 DW 7F6Bh Again in terms of placing the bytes in memory the little endian convention is used with the least significant byte giong to the low address and the most significant byte going to the high address.

END Every program must have an entry point. To identify that entry point the assembler relies on the END directive. The label for the entry and end point must match. HERE: MOV AX,DATASEG ;ENTRY POINT OF THE PROGRAM . . . END HERE ; EXIT POINT OF THE PROGRAM

If there are several modules, only one of them can have the entry point, and the name of that entry point must be the same as the name put for the END directive as shown below: ; from the main program:

EXTRN PROG1:NEAR ....

MAIN_PRO: MOV AX,DATASG ; THE ENTRY POINT MOV DS,AX .... CALL PROG1 .... END MAIN_PRO ;THE EXIT POINT ; from the module PROG1: PUBLIC PROG1 PROG1 PROC ... RET ; RETURN TO THE MAIN MODULE PROG1 ENDP END ; NO LABELIS GIVEN

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-4

- Notice the following points about the above code:

1. The entry point must be identified by a name. In the example above the entry point is identified by the name MAIN_PRO.

2. The exit point must be identified by the same name given to the entry p oint, MAIN_PRO.

3. Since a given program can have only one entry point and exit point, all modules called (either from main or from the submodules) must have directive END with nothing after it.

ENDP (see the PROC directive)

ENDS (see the SEGMENT and STRUCT directives)

EQU (Equate) To assign a fixed value to a name, one uses the EQU directive. The assembler will replace each occurrence of the name with the value assigned to it. FOX_VALU EQU 1200 PORT_A EQU 60H COUNT EQU 100 MASK_1 EQU 00001111B Unlike data directives such as DB, DW, and so on, EQU does not assign any memory storage: therefore, it can be defined at any time at any place, and can even be used within the code segment.

EVEN The EVEN directive forces memory allocation to start at an even addr ess. This is useful due to the fact that in 8086, 286,, and 386SX microprocessors, accessing a 2-byte operand located at an odd address takes extra time. The use of the EVEN directive directs the assembler to assign an even address to the variable. ORG 0020H DATA_1 DB 34H EVEN DATA_2 DW 7F5BH The following shows the contents of memory locations: DS:0020 = (34) DS:0021 = (?) DS:0022 = (5B) DS:0023 = (7F)

EXTRN (External) The EXTRN directive is used to indicate that certain variables and names used in m odule are defined by another module. In the absence of the EXTRN directive, the assembler would search for the definition and give an error when it couldn’t find it. The format of this directive is:

EXTRN name1:typea [,name2:typeb]

where type will be NEAR or FAR if name refers to a procedure, or will be BYTE, WORD, DWORD, QWORD, TBYTE if name refers to a data variable.

;from the main program:

EXTRN PROG1:NEAR

PUBLIC DATA1

. . .

Dodatak A

A-5

MAIN_PRO MOV AX,DATASG ; THE ENTRY POINT

MOV DS,AX

. . .

CALL PROG1

. . .

END MAIN_PRO ; THE EXIT POINT

; PROG1 is located in a different file:

EXTRN DATA1:WORD

PUBLIC PROG1

PROG1 PROC

. . .

MOV BX,DATA1

. . .

RET

PROG1 ENDP

END

Notice that EXTRN directive is used in the main procedure to identify PROG1 as a NEAR procedure. This is needed because PROG1 is not defined in that module. Correspondingly, PROG1 is defined as PUBLIC in the module where it is defined. EXTRN is used in the PROG1 module to declare that operand DATA1, of size WORD, has been defined in another module. Correspondingly, DATA1 is declared as PUBLIC in the calling module.

GROUP The GROUP directive causes the named segments to be linked into the same 64k bytes. This can be used to combine segments of the same type, or different classes of segments. An example follows:

SMALL_SYS GROUP DTSEG,STSEG,CDSEG

The ASSUME directive must be changed to make the segment registers point to the group:

ASSUME CS:SMALL_SYS,DS:SMALL_SYS,SS:SMALL_SYS

The group will be listed in the list file, as shown below:

Name Lenght Align Combine Class

SMALL_SYS GROUP

STSEG 0040 PARA NONE

DTSEG 0024 PARA NONE

CDSEG 005A PARA NONE

INCLUDE When there is a group of macros written and saved in a separate file, the INCLUDE directive can be used to bring them into another file.In the program listing (.Ist file), these macros will be identified by the symbol “C” (or “+” in some versions of MASM) before each instruction to indicate that they are copied to the present file by the INCLUDE directive.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-6

LABEL The LABEL directive allows a given variable or name to be referred to by multiple names.This is often used for multiple definition of the same variable or name. The format of the LABEL directive is name LABEL type where type may be BYTE, WORD, DWORD, QWORD. For example, a variable name DATA1 is defined as a word and also needs to be accessed as 2 bytes, as shown in the following: DATA_B LABEL BYTE DATA1 DW 25F6H MOV AX,DATA1 ;AX=25F6H MOV BL,DATA_B ;BL-F6H MOV BH,DATA_B+1 ;BH=25H

The following shows the LABEL directive being used to allow accessing a 32-bit data item in 16-bit portions. DATA_16 LABEL WORD DATDD_4 DD 4387983FH .... MOV AX,DATA_16 ;AX=983FH MOV DX,DATA_16+2 ;DX=4387H

The following shows its use in a JMP instruction to go to a different code segment ... JMP PROG_A PROG_A LABEL FAR INITI: MOV AL,12H OUT PORT,AL In the program above the address assigned to the names “PROG_A” and “INITI” are exactly the same. The same function can be achieved by the following.

JMP FAR PTR INITI

LENGHT The LENGTH operator returns the number of items defined by a DUP operand. See the SIZE directive for an example.

OFFSET To access the offset address assigned to a variable or a name, one uses the OFFSET directive. For example, the OFFSET directive was used in the following example to get the offset address assigned by the assembler to the variable DATA1: ORG 5600H DATA1 DW 2345H ... MOV SI,OFFSET DATA1 ; SI=OFFSET OF DATA1 = 5600H

Notice that this has the same result as “LEA SI.DATA1”

ORG (Origin) The ORG directive is used to assign an offset address for a variable or name. For example, to force variable DATA1 to be located starting from offset address 0020, one would write ORG 0020H DATA1 DW 41F2H This ensures the offset addresses of 0020 and 0021 with contents 0020H = (F2) and 0021H = (41).

PAGE

Dodatak A

A-7

The PAGE directive is used to make the “.Ist” file print in a specific format. The formaat of the PAGE directive is PAGE [lines],[columns] The default listing (meaning that no PAGE directive is coded) will have 66 lines per page with a maximum of 80 characters per line.This can be changed to 60 and 132 with the directive “PAGE 60, 132”. The range for number of lines is 10 to 255 and for columns is 60 to 132. A PAGE directive with no number will generate a page break.

PROC and ENDP (Procedure and End Procedure) Often, a group of Assembly language instructions will be combined into a procedure so that it can be called by another module. The PROC and ENDP directives are used to indicate the beginning and end of the procedure.For a given procedure the name assigned to PROC and ENDP must be exactly the same. name1 PROC [attribute] .... name1 ENDP There are two choices fo the attrribute of the PROC: NEAR or FAR. If no attribute is given, the default is NEAR. When a NEAR procedure is called, only IP is saved since CS of the called procedure is the same as the calling program. If a FAR procedure is called, both IP and CS are saved since the code segment of the called procedure is different from the calling program.

PTR (Pointer) The PTR directive is used to specify the size of the operand. Among the options for size are BYTE, WORD, DWORD, and QWORD. This directive is used in many different ways, the most common of which are explained below.

1.PTR can be used to allow an override of a previously defined data directive. DATA1 DB 23H,7FH,99H,0B2H DATA2 DW 67F1H DATA3 DD 22229999H ... MOV AX,WORD PTR DATA1 ; AX=7F23 MOV BX,WORD PTR DATA1+2 ;BX, B299H

Although DATA1 was initially defined as DB, it can be accessed using the WORD PTR directive. MOV AL,BYTE PTR DATA2 ;AL=F1H

In the above code, notice that DATA2 was defined as WORD but it was accessed as BYTE with the help of BYTE PTR. If this had been coded as “MOV AL,DATA2”, it would generate an error since the sizes of the operands do not match. MOV AX,WORD PTR DATA3 ; AX=9999H MOV DX,WORD PTR DATA3+2 ;DX,2222H

DATA3 was defined as a 4-byte operand but registers are only 2 bytes wide. The WORD PTR directive solved that poroblem.

2. The PTR directive can be used to specify the size of a directive in order to help the assembler translate the instruction. INC [DI] ; will cause an error

This instruction was meant to increment the contents of the memory location(s ) pointed at by [DI]. How does the assembler know whether it is a byte operand, word operand, or doubleword operand? Since it does not know, it will generate an error. To correct that, use the PTR directive to specify the size of the operand as shown next. INC BYTE PTR [SI] ; increment a byte pointed by SI or

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-8

INC WORD PTR [SI] ; increment a word pointed by SI or INC DWORD PTR [SI] ; increment a doubleword pointed by SI

3. The PTR directive can be used to specify the distance of a jump. The options for the distance are FAR and NEAR. JMP FAR PTR INTI ; ensures that it will be a 5-byte instruction INTI MOV AX,1200 See the LABEL directive to find out how it can be used to achieve the same result.

PUBLIC To inform the assembler that a name or symbol will be referenced by other modules, it is marked by the PUBLIC directive. If a module is referencing a variable outside itself, that variable must be declared as EXTRN. Correspondingly, in the module where the variable is defined, that variable must be declar ed as PUBLIC in order to allow it to be referenced by other modules. See the EXTRN directive for examples of the use of toth EXTRN and PUBLIC.

SEG (Segment Address) The SEG operator is used to access the address of the segment where the name has been defin ed. DATA1 DW 2341H ... MOV AX,SEG DATA1 ;AX =SEGMENT ADDRESS OF DATA1

This is in contrast to the OFFSET directive, which accesses the offset address instead of the segment.

SEGMENT and ENDS In full segment definition these two directives are used to indicate the beginning and the end of the segment. They must have the same name for a given segment definition. See the following example: DATSEG SEGMENT DATA1 DB 2FH DATA2 DW 1200 DATA3 DD 99999999H DATSEG ENDS There are several option associated with the SEGMENT directive, as follows: name1 SEGMENT [align][combine][class] name 1 ENDS ALIGNMENT: When several assembled modules are linked togother, this indicates where the segment is to begin. There are many options, including PARA (paragraph = 16 bytes), WORD, and BYTE. If PARA is chosen, the segment starts at a hex address divisible by 10h, PARA is the default alignment. In this alignment, if a segment for a module finished at 00024H, the next segment will start at address 00030H, leaving from 00025 to 0002F unused. If WORD is chosen, the segment is forced to start at a word boundary. In BYTE alignment, the segment starts at the next byte and no memory is wasted.There is also the PAGE option, which aligns segments along the 100H (256) byte boundary. While all these options are supportes by many assemblers, such as MASM and TASM, there is another option supported only by assemblers that allow system development. This option is AT. The AT option allows the program to assign a physical address. For example, to burn a program int ROM startilng at physical address F0000, code ROM_CODE SEGMENT AT F000H

Due to the fact that option AT allows the programmer to specify a physical address that conflicts with DOS’s memory management responsibility, many assemblers such as MASM will not allow option AT.

COMBINE TYPE: This option is used to merge together all the similar segment to create one large segment. Among the options widely used are PUBLIC and STACK. PUBLIC is widely used in code segment

Dodatak A

A-9

definitions when linking more than one module. This will consolidate all the code segments of the various modules into one large code segment. If there is only one data segment and that belongs to the main module, there is no need to define it as PUBLIC since no other module has any data segment to combie with. However, if other modules have their own data segments it is recommended that they be made PUBLIC to create a single data segment when they are linked. In the absence of that, the llinker would assume that each segment is private and they would not be combined with other similar segment (codes with codes and data with data). Since there is only one stack segment, which belongs to the main module, there is no need to define it as PUBLIC. The STACK option is used only with the stack segment definition and indicates to the linker that it should combine the user’s defined stack with the system stack to create a single stack for the entire program. This is the stack that is used at run time (when the CPU is actually ex ecuting the program).

CLASS NAME: Indicates to the linker that all segments of the same class should be placed next to each other by the LINKER. Four class names commonly used are “CODE”, “DATA”, “STACK”, and “EXTRA”. When this attribute is used in the segment definition, it must be enclosed in single apostrophes in order to be recognized by the linker.

SHORT In a direct jump such as “JMP POINT_A”, the ssembler has to choose either the 2 -byte or 3-byte format. In the 2-bylte format, one byte is the opcode and the second byte is the signed number displacement value added to the IP of the instruction immediately following the JMP. This displacement can be anywhere between -128 and + 127. A negative number indicates a backward JMP and a positive number a forward JMP. In the 3-bylte format the first byte is the opcode and the next two bytes are for the signed number displacement value, which can range from -32,768 to 32,767. When assembling a program, the assembler makes two passes through the program. Certain tasks are done in the first pass and orhers are left to the second pass to complete. In the first pass the assembler choses the 3 -bylte code for the JMP. After the first pass is complete, it will know the target address and fill it in during the second pass. If the target address indicates a short jump (less than 128) bytes away, it fills the last byte with NOP. To inform the assembler that the target address is no more than 128 bytes away, the SHORT directive can be used. Using the SHORT directive makes sure that the JMP is a 2-byte instructin and not 3-byte with 1 byte as NOP code. The 2-byte JMP requires 1 byte less memory and is executed faster.

SIZE The size opeator returns the total number of bytes occupied by a name. The three directives LENGTH, SIZE, and TYPE are somewhat related.Below is a description of each one using the following set of data defined in a data segment.: DATA1 DQ ? DATA2 DW ? DATA3 DB 20 DUP (?) DATA4 DW 100 DUP (?) DATA5 DD 10 DUP (?) TYPE allows one to know the storage allocation directive for a given variable by providing the number of bytes according to the following table: bytes

1 DB

2 DW

4 DD

8 DQ

10 DT

For example, MOV BX,TYPE DATA2 ; BX=2

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-10

MOV DX,TYPE DATA1 ; DX=8 MOV AX,TYPE DATA3 ; AX=1 MOV CX,TYPE DATA5 ; CX=4

When a DUP is used to define the number of entries for a given variable, the LENGTH directive can be used to get that number. MOV CX,LENGTH DATA4 ; CX = 64H (100 DECIMAL) MOV AX,LENGTH DATA3 ; AX = 14H (20 DECIMAL) MOV DX,LENGTH DATA5 ; DX = 0A (10 DECIMAL)

If the defined variable does not have any DUP in it, the LENGTH is assumed to be 1. MOV BX,LENGTH DATA1 ; BX = 1

SIZE is used to determine the total number of bytes allocated for a variable that has been defined with the DUP directive. In reallity the SIZE directive basically provides the product of the TYPE times LENGTH. MOV DX,SIZE DATA4 ; DX = C8H = 200 (100 * 2 = 200) MOV CX,SIZE DATA5 ; CX = 28H = 40 (4 * 10 = 40)

STRUC (Structure) The STRUC directive indicates the beginning of a structure definition. It ends with an ENDS directive, whose label matches the STRUC label. Althuogh the same mnemonic END is used for end of segment and end of structurre, the assembler knows which is meant by the context. A structure is a collection of dat sa types that can be accessed either collectively by the structure name or individually by the labels of the data types within the structure. A structure type must first be defined and then variables in the data segment may be allocated as that structure type. Looking at the following example, the data directives between STRUC and ENDS declare what structure ASC_AREA looks like. No memory is allocated for such a structure definition. Immediately below the structure definition is the label ASC_INPUT, which is declared to be of type ASC_AREA. Memory is allocated for the variable ASC_INPUT. Notice in the code segment that ASC_INPUT can be accessed either in its entirety or by its component parts. It is accessed as a whole unit in “MOV DX,OFFSET ASC_INPUT”. Its component parts are accessed by the variable name followed by a period, then the component’s name. For example, “MOV BL,ASC_INPUT.ACT_LEN” accesses the actual length field of ASC_INPUT. ;from the data segment: ASC_AREA STRUC ; defines struc for string input MAX_LEN DB 6 ; maximum length of input string ACT_LEN DB ? ; actual length of input string ASC_NUM DB 6 DUP(?) ; input string ASC_AREA ENDS ; end struc definition ASC_INPUT ASC_AREA <> ; allocates memory for struc ; from the code segment: GET_ASC: MOV AH,0AH MOV DX,OFFSET ASC_INPUT INT 2H ... MOV SI,OFFSET ASC_INPUT.ASC_NUM ; SI points to ASCII num MOV BL,ASC_INPUT.ACT_LEN ; BL holds string length ...

TITLE The TITLE directive instructs the assembler to print the title of the program on top of each page of the “.lst” file. What comes after the TITLE pseudo-instruction is up to the programmer, but it is common practice to put the name of the program as stored on the disk right after the TITLE pseudo -instruction and then a brief description of the function of the program. Whatever is placed after the TITLE pseudo -instruction cannot be more than 60 ASCII characters (letters, numbers, spaces, punctuation).

Dodatak A

A-11

TYPE The TYPE operator returns the number of bytes reserved for the named data object. See the SIZE directive for examples of its use.

SECTIN A.2: RULES FOR LABELS AND RESERVED NAMES Labels in 80x86 Assembly language for MASM 5.1 and higher must follow these rules:

1. Names can be composed of:

alphabetic characters: A - Z and a - z

digits: 0 - 9

special characters. “?” “.” “@”” “_” “$”

2. Names must begin with an alphabetic or special character. Names cannot begin with a digit.

3. Names can be up to 31 characters long.

4. The special character “.” can only be used as the first character.

5. Uppercase and lowercase are treated the same. “NAME1” is treated the same as “Name1” and “name1”.

Assembly language programs have five types of labels of names: 1. Code labels, which give symbolic names to instructions so that oth er instructins (such as jumps) may refer to them

2. Procedure labels, which assign a name to a procedure

3. Segment labels, which assign a name to a segment

4. Data labels, which give names to data items

5. Labels created with the LABEL directive

Code labels These labels will be followed by a colon and have the type NEAR. This enables other instructions within the code segment to refer to the instruction. The labels can be on the same line as the instruction: ADD_LP: ADD AL,[BX] ; label is on same line as the instruction

... ...

LOOP ADD_LP or on a line by themselves: ADD_LP: ; label is on a line by itself

ADD AL,[BX] ; ADD_LP refers to this instruction ...

.... LOOP ADD_LP

Procedure labels These labels assign a symbolic name to a procedure.The l abel can be NEAR or FAR. When using full segment definition, the default type is NEAR. When using simplified segment definition, the type will be NEAR for compact or small models but will be FAR for medium, large,and huge models. For more information on procedures, see PROC in Section A.1.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-12

Segment labels These labels give symbolic names to segments. The name must be the same in the SEGMENT and ENDS directives.See SEGMENT in Section A.1 for more information. Example: DAT_SG SEGMENT SUM DW ? DAT_SG ENDS

Data labels These labels give symbolic names to data items. This allows them to be accessed by instructions.Directives DB, DW, DD, DQ, and DT are used to allocate data. Examples: DATA1 DB 43H DATA2 DB F2H SUM DW ?

Labels defined with the LABEL directive The LABEL directive can be used to redefine a label. See LABEL in Section A.1 for more information.

Reserved Names The following is a list of reserved words in 80x86 Assembly language programming. These words cannot be used as user-defined labels or variable names. Register Names:

AH AL AX BH BL BP BX CH CL CS CX DH

DI DL DS DX ES SI SP SS

Instructions:

AAA AAD AAM AAS ADC ADD

AND CALL CBW CLC CLD CLI

CMC CMP CMPS CWD DAA DAS

DEC DIV ESC HLT IDIV IMUL

IN INC INT INTO IRET JA

JAE JB JBE JCXZ JE JG

JGE JL JLE JMP JNA JNAE

JNB JNBE JNE JNG JNGE JNL

JNLE JNO JNP JNS JNZ JO

JP JPE JPO JS JZ LAHF

LDS LEA LES LOCK LODS LOOP

LOOPE LOOPNE LOOPNZ LOOPZ MOV MOVS

MUL NEG NIL NOP NOT OR

OUT POP POPF PUSH PUSHF RCL

RCR REP REPE REPNE REPNZ REPZ

RET ROL ROR SAHF SAL SAR

SBB SCAS SHL SHR STC STD

Dodatak A

A-13

STI STOS SUB TEST WAIT XCHG

XLAT XOR

Assembler operators and directives

$ * + - . / = ? [ ]

ALIGN ASSUME BYTE COMM COMMENT DB

DD DF DOSSEG DQ DS DT

DW DWORD DUP ELSE END ENDIF

ENDM ENDS EQ EQU EVEN EXITM

EXTRN FAR FWORD GE GROUP GT

HIGH IF IFB IFDEF IFDIF IFE

IFIDN IFNB IFNDEF IF1 IF2 INCLUDE

INCLUDELIB

IRP IRPC LABEL LE LENGTH

LINE LOCAL LOW LT MACRO MASK

MOD NAME NE NEAR NOTHING OFFSET

ORG PAGE PROC PTR PUBLIC PURGE

QWORD RECORD REPT REPTRD SEG SEGMENT

SHORT SIZE STACK STRUC SUBTTL TBYTE

THIS TITLE TYPE WIDTH WORD

.186 .286 .286P .287 .386 .386P

.387 .8086 .8087 .ALPHA .CODE .CONST

.CREF .DATA .DATA? .ERR .ERR1 .ERR2

.ERRB .ERRDEF .ERRDIF .ERRE .ERRIDN .ERRNB

.ERRNDEF .ERRNZ .FARDATA .FARDATA? .LALL .LFCOND

.LIST .MODEL %OUT .RADIX .SALL .SEQ

.SFCOND .STACK .TECOND .TYPE .XALL .XCREF

.XLIST

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-14

A.3 The instruction set

The instruction set summary contains a complete alphabetical listing of the entire 8086 --Pentium Pro instruction set.

Each instruction entry lists the mnemonic opcode plus a brief description of the purpose of the instruction. Also listed is the binary machine language coding of each instruction, plus any other data required to form the instruction, such as the displacement or immediate data. Listed to the right of each binary machine language version of the instruction are the flag bits and any change that might occur for the instruction. The flags are described in the following manner: a blank indicates no effect or change, a ? indicates a change with an unpredictable outcome, a * indicates a change with a predictable outcome, a 1 indicates that the flag is set, and a 0 indicates that the flag is cleared. If the flag bits ODITSZAPC are not illustrated with an instruction does not modify any of these flags. Before the instruction listing begins, some information about the bit settings in binary machine language versions of the instructions is presented. Table A-1 lists the modifier bits, coded as oo in the instruction listings. Table A-2 lists the memory-addressing modes available using a register field coding of mmm. This table applies to all versions of the microprocessor as long as the operating mode is 16 -bits.

Table A-3 lists the register selections provided by the rrr field in an instruction. This table includes the register selections for 8-, 16-, and 32-bit registers.

'TABLE A-1 The modifier bits, coded as oo in the instruction listing

oo Function

00 If mmm = 110, then a displacement follows the opcode; otherwise, no displacement is used

01 An 8-bit signed displacement follows the opcode

10 A 16-bit signed displacement follows the opcode (unless it is a 32 -bit displacement)

11 mmm specifies a register instead of an addressing mode

TABLE A-2 The 16-bit register/memory (mmm) field description

mmm Function

000 DS:[BX+SI]

001 DS:[BX+DI]

010 SS:[BP+SI]

011 SS:[BP+DI]

100 DS:[SI]

101 DS:[DI]

110 SS:[BP]

111 DS:[BX]

TABLE A-3 The register field (rrr) assignment

Dodatak A

A-15

Rrr W=0 W=1 (16-bit) W=1 (32-bit)

000 AL AX EAX

001 CL CX ECX

010 DL DX EDX

011 BL BX EBX

100 AH SP ESP

101 CH BP EBP

110 DH SI ESI

111 BH DI EDI

Table A-4 lists the segment register bit assignment (rrr) found with the MOV, PUSH, and POP instructions. When the 80386-Pentium Pro are used, some of the definitions provided in Tables A-1 through A-3 change. Refer to Tables A-5 and A-6 for these changes as they apply to the 80386-Pentium Pro microprocessors.

TABLE A-4 Register field assignments (rrr) for the segment registers

rrr Segment Register

000 ES

001 CS

010 SS

011 DS

100 FS

101 GS

TABLE A-5 Index register specified with rrr for the advanced addressing mode found in the 80386-Pentium Pro microprocessors

rrr Index Register

000 DS:[EAX]

001 DS:[ECX]

010 DS:[EDX]

011 DS:[EBX]

100 No index (see Table A-6)

101 SS:[EBP]

110 DS:[ESI]

111 DS:[EDI]

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-16

TABLE A-6 Possible combinations of oo, mmm, and rrr for the 80386-Pentium Pro microprocessors using 32-bit addressing

oo mmm rrr (base in scaled index byte) Addressing Mode

00 000 - DS:[EAX]

00 001 - DS:[ECX]

00 010 - DS:[EDX]

00 011 - DS:[EBX]

00 100 000 DS:[EAX+scaled index]

00 100 001 DS:[ECX+scaled index]

00 100 010 DS:[EDX+scaled index)

00 100 011 DS:[EBX+scaled index]

00 100 100 SS:[ESP+scaled index]

00 100 101 DS:[disp32+scaled index]

00 100 110 DS:[ESI+scaled index]

00 100 111 DS:[EDI+scaled index]

00 101 - DS:disp32

00 110 - DS:[ESI]

00 111 - DS:[EDI]

01 000 - DS:[EAX+disp8]

01 001 - DS:[ECX+disp8]

01 010 - DS:[EDX+disp8]

01 011 - DS:[EBX+disp8]

01 100 000 DS:[EAX+scaled index+disp8]

01 100 001 DS:[ECX+scaled index+disp8]

01 100 010 DS:[EDX+scaled index+disp8]

01 100 011 DS:[EBX+scaled index+disp8]

01 100 100 SS:[ESP+scaled index+disp8]

01 100 101 SS:[EBP+scaled index+disp8]

01 100 110 DS:[ESI+scaled index+disp8]

01 100 111 DS:[EDI+scaled index+disp8]

01 101 - SS:[EBP+disp8]

01 110 - DS:[ESI+disp8]

01 111 - DS:[EDI+disp8]

10 000 - DS:[EAX+disp32]

10 001 - DS:[ECX+disp32]

10 010 - DS:[EDX+disp32]

10 011 - DS:[EBX+disp32]

10 100 000 DS:[EAX+scaled lndex+d19p32]

10 100 001 DS:[ECX+scaled index+disp32]

10 100 010 DS:[EDX+scaled index+disp32]

10 100 011 DS:[EBX+scaled index+disp32]

Dodatak A

A-17

10 100 100 SS:[ESP+scaled index+disp32]

10 100 101 SS:[EBP+scaled index+disp32]

10 100 110 DS:[ESI+scaled index+disp32]

10 100 111 DS:[EDI+scaled index+disp32)

10 101 SS:[EBP+disp32]

10 110 DS:[ESI+disp32]

10 111 DS:[EDI+disp32]

Notes: disp8=8-bit displacement and disp32=32-bit displacement.

In order to use the scaled index addressing modes listed in Table A-6, code oo and mmm in the second byte of the opcode. The scaled index byte is usually the third byte and contains three fields. The leftmost 2 -bits determine the scaling factor (00 = *1, 01 = *2, 10 = *4, or 11 – *8) The next three bits toward the right contain the scaled index register number (this is obtained from Table A-5). The rightmost 3-bits are from the rrr field listed in Table A-6 .For example, the MOV AL,[EBX+2*ECX] instruction has a scaled index byte of 01 001 011 where 01 = *2, 001= ECX, and 011 = EBX.

Some instructions are prefixed to change the default segment or to override the mode. Table A -7 lists the segment and instruction mode override prefixes with append at the beginning of an instruction if they are used to form the instruction. For example, the MOV AL,ES:[BX] instruction uses the extra segment because of the override prefix ES:. In the 8086 and 8088 microprocessors the effective address calculation requires additional clocks that are added to the times in the instruction set summary. These additional times are listed in Table A-8. No such times are added to the 80286-Pentium Pro. Note that Intel has not released clock times for the Pentium Pro.

TABLE A7 Override prefixes

Prefix Eye Purpose

26H ES: segment override prefix

2EH CS: segment override prefix

36H SS: segment override prefix

3EH DS: segment override prefix

64H FS: segment override prefix

65H GS: segment override prefix

66H Operand size instruction mode override

67H Register size instruction mode override

TABLE A8 Effective address calculations for the 8086 and 8088 microprocessors

Type Clocks Example Instruction

Base or index 5 MOV CL,[DI]

Displacement 3 MOV AL,DATA1

Base plus index 7 MOV AL,[BP+SI]

Displacement plus base or index 9 MOV DH.[DI+20H]

Base plus index plus displacement 11 MOV CL,[BX+DI+2]

Segment override ea + 2 MOV AL,ED:[DI]

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-18

AAA ASCII adjust AL after addition

00110111 0 D I T S Z A P C

? ? ? * ? *

Example Microprocessor Clocks

8086 8

8088 8

80286 3

80386 4

80486 3

Pentium 3

AAA

Pentium Pro

AAD ASCII adjust AX before division

11010101 00001010 0 D I T S Z A P C

? * * ? * ?

Example Microprocessor Clocks

8086 60

8088 60

80286 14

80386 19

80486 14

Pentium 10

AAD

Pentium Pro

AAM ASCII adjust AX after multiplication

11010100 00001010 0 D I T S Z A P C

? * * ? * ?

Example Microprocessor Clocks

8086 83

8088 83

80286 16

80386 17

80486 15

Pentium 18

AAM

Pentium Pro

Dodatak A

A-19

AAS ASCII adjust AL after subtraction

00111111 O D I T S Z A P C

? ? ? * ? *

Example Microprocessor Clocks

8086 8

8088 8

80286 3

80386 4

80486 3

Pentium 3

AAS

Pentium Pro

ADC Addition with carry

00111111 O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 3

80386 3

80486 1

Pentium 1 or 3

ADC reg,reg

ADC AX,BX

ADC AL,BL

ADC EAX,EBX

ADC CX,SI

ADC ESI,EDI

Pentiurn Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 7

80486 3

Pentium 1 or3

ADC mem,reg

ADC DATAY,AL

ADC LIST,SI

ADC DATA2[D1],CL

ADC [EAX],BL

ADC [EBX+2*ECX],EDX

Pentium Pro

8086 9+ea

8088 13+ea

80286 7

80386 6

80486 2

Pentium 1 or2

ADC reg,mem

ADC BL,DATA1

ADC SI,LIST1

ADC CL,DATA2[SI]

ADC CX,[ESI]

ADC ESI,[2*ECX]

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-20

100000sw oo010mmm disp data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1 or 3

ADC reg,imm

ADC CX,3

ADC DI,1AH

ADC DL,34H

ADC EAX,12345

ADC CX,1234H

Pentium Pro

Microprocessor Clocks

8086 17+ea

8088 23+ea

80286 7

80386 7

80486 3

Pentium 1 or 3

ADC mem,imm

ADC DATA4,33

ADC LIST,'A'

ADC DATA3[DI],2

ADC BYTE PTR[EBX],3

ADC WORD PTR[DI],669H

Pentium Pro

Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

ADC acc,imm

ADC AX,3

ADC AL,1AH

ADC AH,34H

ADC EAX,2

ADC AL,'Z'

Pentium Pro

ADD Addition

000000dw oorrrmmm disp O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 3

80386 3

80486 1

Pentium 1 or 3

ADD reg,reg

ADD AX,BX

ADD AL,BL

ADD EAX,EBX

ADD CX,SI

ADD ESI,EDI

Pentiurn Pro

Dodatak A

A-21

8086 16 + ea

8088 24 + ea

80286 7

80386 7

80486 3

Pentium 1 or3

ADD mem,reg

ADD DATAY,AL

ADC LIST,SI

ADD DATA2[DI],CL

ADD [EAX],BL

ADD [EBX+2*ECX],EDX

Pentium Pro

8086 9+ea

8088 13+ea

80286 7

80386 6

80486 2

Pentium 1 or2

ADD reg,mem

ADD BL,DATA2

ADD SI,LIST3

ADD CL,DATA2[DI]

ADD CX,[EDI]

ADD ESI,[ECX+200H]

Pentium Pro

100000sw oo000mmm disp data

Format Examples Microprocessor

Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1 or 3

ADD reg,imm

ADD CX,3

ADD DI,1AH

ADD DL,34H

ADD EAX,1345H

ADD CX,1834H

Pentium Pro

8086 17+ea

8088 23+ea

80286 7

80386 7

80486 3

Pentium 1 or 3

ADD mem,imm

ADD DATA4,33

ADD LIST,'A'

ADD DATA3[DI],2

ADD BYTE PTR[EBX],3

ADD WORD PTR[DI],669H

Pentium Pro

8086 4

8088 4

80286 3

80386 2

80486 1

ADC acc,imm ADD AX,3

ADD AL,1AH

ADD AH,34H

ADD EAX,2

ADD AL,'Z'

Pentium 1

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-22

AND Logical AND

001000dw oorrrmmm disp O D I T S Z A P C

0 * * ? * 0

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 3

80486 1

Pentium 1 or 3

AND reg,reg

AND CX,BX

AND DL,BL

AND ECX,EBX

AND BP,SI

AND EDX,EDI

Pentiurn Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 7

80486 3

Pentium 1 or3

AND mem,reg

AND BIT,AL

ANC LIST,DI

AND DATAZ[BX],CL

AND [EAX],BL

AND [ESI+2*ECX],EDX

Pentium Pro

8086 9+ea

8088 13+ea

80286 7

80386 6

80486 2

Pentium 1 or2

AND reg,mem

AND BL,DATAW

AND SI,LIST

AND CL,DATAQ[SI]

AND CX,[EAX]

AND ESI,[ECX+43H]

Pentium Pro

100000sw oo100mmm disp data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1 or 3

AND reg,imm

AND BP,1

AND DI,10H

AND DL,34H

AND EBP,1345H

AND SP,1834H

Pentium Pro

Dodatak A

A-23

AND mem,imm

AND DATA4,33 8086 17+ea

AND LIST,'A' 8088 23+ea

AND DATA3[DI],2 80286 7

AND BYTE PTR[EBX],3 80386 7

AND DWORD PTR[DI],66H 80486 3

Pentium 1 or 3

Pentium Pro

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

AND acc,imm

AND AX,3

AND AL,1AH

AND AH,34H

AND EAX,2

AND AL,'r'

Pentium Pro

ARPL Adjust requested privilege level

01100011 oorrrmmm disp O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 10

80386 20

80486 9

Pentium 7

ARPL reg,reg

ARPL AX,BX

ARPL BX.SI

ARPL AX,DX

ARPL BX,AX

ARPL SI,DI

Pentiurn Pro

8086 -

8088 -

80286 11

80386 21

80486 19

Pentium 7

ARPL mem,reg

ARPL DATAY,AX

ARPL LIST,DI

ARPL DATA3[DI],CX

ARPL [EBX],AX

ARPL [EDX+4*ECX],BP

Pentium Pro

BOUND Check array against boundary

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-24

01100010 oorrrmmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 13

80386 10

80486 7

Pentium 8

BOUND reg,mem

BOUND AX,BETS

BOUND BP,LISTG BOUND CX,DATAX

BOUND BX,[DI]

BOUND SI,[BX+2]

Pentium Pro

BSF Bit scan forward

00001111 10111100 oorrrmmm disp O D I T S Z A P C

? ? * ? ? ?

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 10+3n

80486 6--42

Pentium 6--42

BSF reg,reg

BSF AX,BX

BSF BX.SI

BSF EAX,EDX

BSF EBX,EAX

BSF SI,DI

Pentium Pro

8086 -

8088

80286

80386 10+3n

80486 7--43

Pentium 6--43

BSF reg,mem

BSF AX,DATAY

BSF SI,LIST

BSF CX,DATA3[DI]

BSF EAX,[EBX] BSF EBP,[EDX+4*ECX]

Pentium Pro

BSR Bit scan reverse

00001111 10111101 oorrrmmm disp O D I T S Z A P C

? ? * ? ? ?

Format Examples Microprocessor Clocks

Dodatak A

A-25

8086 -

8088 -

80286 -

80386 10+3n

80486 6--103

Pentium 7--71

BSR reg,reg

BSR AX,BX

BSR BX,SI

BSR EAX,EDX

BSR EBX,EAX

BSR SI,DI

Pentium Pro

8086 -

8088 -

80286 -

80386 10+3n

80486 7--104

Pentium 7--72

BSR reg,mem

BSR AX,DATAY

BSR SI,LIST

BSR CX,DATA3[DI]

BSR EAX,[EBXI BSR EBP,[EDX+4*ECX]

Pentium Pro

BSWAP Byte swap

00001111 11001rrr

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 1

Pentium 1

BSWAP reg32

BSWAP EAX

BSWAP EBX

BSWAP EDX

BSWAP ECX

BSWAP ESI

Pentium Pro

BT Bit test

00001111 10111010ool00mmm disp data

O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 3

Pentium 4

BT reg,imm8

BT AX,2

BT CX,4

BT BP,10H

BT CX,8

BT BX,2

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-26

8086 -

8088 -

80286 -

80386 6

80486 3

Pentium 4

BT mem,imm8

BT DATA1,2

BT LIST,2

BT DATA2[DII,3

BT [EAX],1

BT FROG,6

Pentium Pro

8086 -

8088 -

80286 -

80386 3

80486 3

Pentium 4 or 9

BT reg,reg

BT AX,CX

BT CX,DX

BT BP,AX

BT SI,CX

BT EAX,EBX

Pentium Pro

8086 -

8088

80286 -

80386 12

80486 8

Pentium 4 or 9

Pentium Pro

BT mem,reg

BT DATA4,AX

BT LIST,BX

BT DATA3[DI],CX

BT [EBX],DX

BT [DI],DI

BTC Bit test and complement

00001111 10111010oo11mmm disp data

O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 6

Pentium 7 or 8

BTC reg,imm8

BTC AX,2

BTC CX,4

BTC BP,10H

BTC CX,8

BTC BX,2

Pentium Pro

Dodatak A

A-27

8086 -

8088 -

80286 -

80386 7 or 8

80486 8

Pentium 8

BTC mem,imm8

BTC DATA1,2 BTC LIST,2

BTC DATA2[DII,3

BTC [EAX],1

BTC FROG,6

Pentium Pro

00001111 10111011 disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 6

Pentium 7 or 13

BTC reg,reg

BTC AX,CX

BTC CX,DX

BTC BP,AX

BTC SI,CX

BTC EAX,EBX

Pentium Pro

8086 -

8088 -

80286 -

80386 13

80486 13

Pentium 7 or 13

Pentium Pro

BTC mem,reg

BTC DATA4,AX

BTC LIST,BX

BTC DATA3[DI],CX

BTC [EBX],DX

BTC [DI],DI

BTR Bit test and reset

00001111 10111010oo110mmm disp data

O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 6

Pentium 7 or 8

BTR reg,imm8

BTR AX,2

BTR CX,4

BTR BP,10H

BTR CX,8

BTR BX,2

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-28

8086 -

8088 -

80286 -

80386 8

80486 8

Pentium 7 or 8

BTR mem,imm8

BTR DATA1,2

BTR LIST,2

BTR DATA2[DI],3

BTR [EAX],1

BTR FROG,6

Pentium Pro

00001111 10110011 disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 6

Pentium 7 or 13

BTR reg,reg

BTR AX,CX

BTR CX,DX

BTR BP,AX

BTR SI,CX

BTR EAX,EBX

Pentium Pro

8086 -

8088 -

80286 -

80386 13

80486 13

Pentium 7 or 13

Pentium Pro

BTR mem,reg

BTR DATA4,AX

BTR LIST,BX

BTR DATA3[DI],CX

BTR [EBX],DX

BTR [DI],DI

BTS Bit test and set

00001111 10111010oo101mmm disp data

O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 6

Pentium 7 or 8

BTS reg,imm8

BTS AX,2

BTS CX,4

BTS BP,10H

BTS CX,8

BTS BX,2

Pentium Pro

Dodatak A

A-29

8086 -

8088 -

80286 -

80386 8

80486 8

Pentium 7 or 8

BTS mem,imm8

BTS DATA1,2

BTS LIST,2

BTS DATA2[DI],3

BTS [EAX],1

BTS FROG,6

Pentium Pro

00001111 10101011 disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 6

Pentium 7 or 13

BTS reg,reg

BTS AX,CX

BTS CX,DX

BTS BP,AX

BTS SI,CX

BTS EAX,EBX

Pentium Pro

8086 -

8088 -

80286 -

80386 13

80486 13

Pentium 7 or 13

Pentium Pro

BTS mem,reg

BTS DATA4,AX

BTS LIST,BX

BTS DATA3[DI],CX

BTS [EBX],DX

BTS [DI],DI

CALL Call procedure (subroutine)

11101000 disp

Format Examples Microprocessor Clocks

8086 19

8088 23

80286 7

80386 3

80486 3

Pentium 1

CALL label

(near)

CALL FOR_FUN

CALL HOME

CALL ET

CALL WAITING

CALL SOMEONE

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-30

10011010 disp

Format Examples Microprocessor Clocks

8086 28

8088 36

80286 13

80386 17

80486 18

Pentium 4

CALL label

(far)

CALL FAR PTR DATES

CALL WHAT

CALL WHERE

CALLFARCE

CALL WHOM

Pentium Pro

11111111 oo010mmm

Format Examples Microprocessor Clocks

8086 16

8088 20

80286 7

80386 7

80486 5

Pentium 2

CALL reg

(near)

CALL AX

CALLBX

CALL CX

CALL DI

CALL SI

Pentium Pro

8086 21 + ea

8088 29 + ea

80286 11

80386 10

80486 5

Pentium 2

CALL mem

(near)

CALL ADDRESS CALL NEAR PTR [DI]

CALL DATA1

CALL FROG

CALL ME_NOW

Pentium Pro

11111111 oo011mmm

Format Examples Microprocessor Clocks

8086 16

8088 20

80286 7

80386 7

80486 5

Pentium 2

Pentium Pro

CALL MEM

(far)

CALL FAR_LIST[SI]

CALL FROM_HERE

CALL TO_THERE

CALL SIXX

CALL OCT

Dodatak A

A-31

CBW Convert byte to word (AL -> AX)

10011000

Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 3

80486 3

Pentium 3

CBW

Pentium Pro

CDQ Convert doubleword to quadword

(EAX ==>EDX:EAX)

1101010000001010

Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 2

80486 2

Pentium 2

CDQ

Pentium Pro

CLC Clear carry flag

11111000 O D I T S Z A P C

0

Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 2

80486 2

Pentium 2

CLC

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-32

CLD Clear direction flag

11111100 O D I T S Z A P C

0

Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 2

80486 2

Pentium 2

CLC

Pentium Pro

CLI Clear interupt flag

11111010 O D I T S Z A P C

0

Example Microprocessor Clocks

8086 2

8088 2

80286 3

80386 3

80486 5

Pentium 7

CLI

Pentium Pro

CLTS Clear task switched flag (CR0)

00001111 00000110

Example Microprocessor Clocks

8086 -

8088 -

80286 2

80386 5

80486 7

Pentium 10

CLTS

Pentium Pro

Dodatak A

A-33

CMC Complement carry flag

10011000 O D I T S Z A P C

*

Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 2

80486 2

Pentium 2

CMC

Pentium Pro

CMOVcondition Conditional move

000011110100cccc oorrrmmrn

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 -

Pentium -

CMOVcc reg,mem

CMOVNZ AX,FROG

CMOVC EAX,[EDI]

CMOVNC BX,DATA1

CMOVP EBX,WAITING

CMOVNE DI,[SI] Pentium Pro

Condition

Codes Mnemonic Flag Description

0000 CMOVO O=1 Move if overflow

0001 CMOVNO O=0 Move If no overflow

0010 CMOVB C = 1 Move if below

0011 CMOVAE C=0 Move if above or equal

0100 CMOVE Z=1 Move if equal/zero

0101 CMOVNE Z=0 Move if not equal/zero

0110 CMOVBE C=1 + Z=1

Move if below or equal

0111 CMOVA C=O•Z=0 Move if above

1000 CMOVS S=1 Move if sign

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-34

1001 CMOVNS S=0 Move if no sign

1010 CMOVP P=1 Move if parity

1011 CMOVNP P=0 Move if no parity

1100 CMOVL S*0 Move if less than

1101 CMOVGE S=0 Move if greater then or equal

1110 CMOVLE Z=1 + S=0

Move if less than or equal

1111 CMOVG Z=0+S=0 Move If greater than

CMP Compare

0011l0dw oorrrmmm disp O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1 or 2

CMP reg,reg

CMP AX,BX

CMP AL,BL

CMP EAX,EBX

CMP CX,SI

CMP ESI,EDI

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 7

80386 6

80486 2

Pentium 1 or 2

CMP mem,reg

CMP DATAY,AL

CMP LIST,SI CMP DATA6[DI],CL

CMP [EAXI,CL CMP [EDX+4*ECX],EBX

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 6

80386 6

80486 2

Pentium 1 or2

Pentium Pro

CMP reg,mem

CMP BL,DATA2

CMP SI,LIST3 CMP CL,DATA2[DI]

CMP CX,[EDI] CMP ESI,[ECX+200H]

100000sw oo111 mmm disp data

Dodatak A

A-35

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1 or2

CMP reg,imm

CMP CX,3

CMP DI, 1 AH

CMP DL,34H

CMP EDX,1345H

CMP CX,1834H

Pentium Pro

8086 10 + ea

8088 14 + ea

80286 6

80386

80486 2

Pentium 1 or2

CMP mem,imm

CMP DATAS,3

CMP BYTE PTR[EDI],1AH

CMP DADDY,34H

CMP LIST,'A'

CMP TOAD,1834H

Pentium Pro

0001111w data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

Pentium Pro

CMP acc,imm

CMP AX,3

CMP AL,1AH

CMP AH,34H

CMP EAX,1345H

CMP AL,'Y'

CMPS Compare strings

1010011w O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 32

8088 30

80286 8

80386 10

80486 8

CMPSB

CMPSW

CMPSD

CMPSB CMPSW CMPSD CMPSB DATAl,DATA2 REPE CMPSB REPNE CMPSW

Pentium 5

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-36

Pentium Pro

CMPXCHG Compare and exchange

00001111 1100011 oo rrr mmm O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 6

Pentium 6

CMPXCHG reg,reg

CMPXCHG EAX,EBX

CMPXCHG ECX,EDX

Pentium Pro

00001111 1011000w 11rrrrrr

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 7

Pentium 6

Pentium Pro

CMPXCHG mem,reg

CMPXCHG DATAD,EAX

CMPXCHG DATA2,ECX

CMPXCHG Compare and exchange

00001111 1011000w 11rrrrrr O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 -

CMPXCHG8B mem64

CMPXCHG8B DATA3

Pentium 10

Dodatak A

A-37

Pentium Pro

CPUID CPU identification code

00001111 10100010

Example Microprocessor Clocks

8086

8088

80286

80386

80486 -

Pentium 14

CPUID

Pentium Pro

CWD Convert word to doubleword (AX-->DX:AX)

10011000

Example Microprocessor Clocks

8086 5

8088 5

80286 2

80386 2

80486 3

Pentium 2

CWD

Pentium Pro

CWDE Convert word to extended doubleword (AX-->EAX)

10011000

Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 3

CWDE

Pentium 3

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-38

Pentium Pro

DAA Decimal adjust AL after addition

00100111 O D I T S Z A P C

? * * * * *

Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 4

80486 2

Pentium 3

DAA

Pentium Pro

DAS Decimal adjust AL after subtraction

00101111 O D I T S Z A P C

? * * * * *

Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 4

80486 2

Pentium 3

DAS

Pentium Pro

DEC Decrement

1111111w oo001mmm disp O D I T S Z A P C

? * * * * *

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

DEC reg8

DEC BL

DEC BH

DEC CL

DEC DH

DEC AH

Pentium 1 or3

Dodatak A

A-39

Pentium Pro

8086 15 + ea

8088 23 + ea

80286 7

80386 6

80486 3

Pentium 1 or 3

DEC mem

DEC DATAY

DEC LIST

DEC DATA6[DI] DEC BYTE PTR [BX]

DEC WORD PTR[EBX]

Pentium Pro

01001rrr

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1

DEC regl6

DEC reg32

DEC CX

DEC DI

DEC EDX

DEC ECX

DEC BP

Pentium Pro

DIV Divide

1111011w oo110mmm disp O D I T S Z A P C

? ? ? ? ? ?

Format Examples Microprocessor Clocks

8086 162

8088 162

80286 22

80386 38

80486 40

Pentium 17-41

DIV reg

DIV BL

DIV BH

DIV ECX

DIV DH

DIV CX

Pentium Pro

8086 168

8088 176

80286 25

80386 41

80486 40

DIV mem

DIV DATAY

DIV LIST

DIV DATA6[DI] DIV BYTE PTR [BX]

DIV WORD PTR[EBXI

Pentium 17--41

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-40

Pentium Pro

ENTER Create a stack frame

11001000 data

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 11

80386 10

80486 14

Pentium 11

ENTER imm,0

ENTER 4,0

ENTER 8,0

ENTER 100,0

ENTER 200,0

ENTER 1024,0

Pentium Pro

8086 -

8088 -

80286 12

80386 15

80486 17

Pentium 15

ENTER imm,l

ENTER 4,1

ENTER 10,1

Pentium Pro

8086 -

8088 -

80286 12

80386 15

80486 17

Pentium 15 + 2n

Pentium Pro

ENTER imm,imm

ENTER 3,6

ENTER 100,3

ESC Escape (obsolete see coprocessor)

HLT Halt

11110100

Example Microprocessor Clocks

Dodatak A

A-41

8086 2

8088 2

80286 2

80386 5

80486 4

Pentium varies

HLT

Pentium Pro

IDIV Integer (signed) division

111011w oo111mmm disp O D I T S Z A P C

? ? ? ? ? ?

Format Examples Microprocessor Clocks

8086 184

8088 184

80286 25

80386 43

80486 43

Pentium 22-46

IDIV reg

IDIV BL

IDIV BH

IDIV ECX

IDIV DH

I DIV CX

Pentium Pro

8086 190

8088 194

80286 28

80386 46

80486 44

Pentium 22-46

IDIV mem

IDIV DATAY

IDIV LIST

IDIV DATA6[DI]

IDIV BYTE PTR [BX]

IDIV WORD PTR [EBX]

Pentium Pro

IMUL Integer (signed) multiplication

1111011w oo101mmm disp O D I T S Z A P C

* ? ? ? ? *

Format Examples Microprocessor Clocks

8086 154

8088 154

80286 21

80386 38

IMUL reg

IMUL BL

IMUL CX

IMULECX

IMUL DH

IMUL AL 80486 42

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-42

Pentium 10-11

Pentium Pro

8086 160

8088 164

80286 24

80486 42

Pentium 10-11

IMUL mem

IMUL DATAY

IMUL LIST

IMUL DATA6[DI]

IMUL WORD PTR [EBX]

Pentium Pro

011010s1 oorrmmm disp data

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 21

80386 38

80486 42

Pentium 10

IMUL reg,imm

IMUL CX,16

IMUL DI, 100

IMUL EDX,20

Pentium Pro

8086 -

8088 -

80286 21

80386 38

80486 42

Pentium 10

IMUL reg,reg,imm

IMUL DX,AX,2

IMUL CX,DX,3

IMUL BX,AX,33

Pentium Pro

8086 -

8088

80286 24

80386 38

80486 42

Pentium 10

IMUL reg,mem,imm

IMUL CX,DATAY,99

Pentium Pro

00001111 10101111 oorrmmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

IMUL reg,reg

IMUL CX,DX

IMUL DI,BX

IMUL EDX,EBX 80286 -

Dodatak A

A-43

80386 38

80486 42

Pentium 10

Pentium Pro

8086 -

8088

80286 -

80386 41

80486 42

Pentium 10

IMUL reg,mem

IMUL DX,DATAY

IMUL CX,LIST

IMUL ECX,DATA6[DI]

Pentium Pro

IN Input data from port

1110010w port#

Format Examples Microprocessor Clocks

8086 10

8088 14

80286 5

80386 12

80486 14

Pentium 7

IN acc,pt

IN AL,12H

IN AX,12H

IN AL,0FFH

IN AX,0A0H

IN EAX,10H

Pentium Pro

1110110w

Format Examples Microprocessor Clocks

8086 8

8088 12

80286 5

80386 13

80486 14

Pentium 7

IN acc,DX

IN AL,DX

IN AX,DX

IN EAX,DX

Pentium Pro

INC Increment

1111111w oo000mmm disp O D I T S Z A P C

* * * * *

Format Examples Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-44

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1 or3

INC reg8

INC BL

INC BH

INC AL

INC AH

INC DH

Pentium Pro

8086 15 + ea

8088 23 + ea

80286 7

80386 6

80486 3

Pentium 1 or 3

INC mem

INC DATA3

INC LIST

INC COUNT

INC BYTE PTR [DI]

INC WORD PTR [ECX]

Pentium Pro

INC regl6 INC CX 8086 3

8088 3

80286

80386 2

80486 1

Pentium 1

INC reg32

INC DX

INC BP

INC ECX

INC ESP

Pentium Pro

INS Input string from port

0110110w

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 5

80386 15

80486 17

Pentium 9

INSB

INSW

INSD

INSB

INSW

INSD

INS DATA2

REP INSB

Pentium Pro

INT Interrupt

11001101 type

Dodatak A

A-45

Format Examples Microprocessor Clocks

8086 51

8088 71

80286 23

80386 37

80486 30

Pentium 16-82

INT type

INT 12H

INT 15H

INT 21 H

INT 2FH

INT 10H

Pentium Pro

INT 3 Interrupt 3

11001100

Example Microprocessor Clocks

8086 52

8088 72

80286 23

80386 33

80486 26

Pentium 1

INT 3

Pentium Pro

INTO Interrupt on overflow

11001110

Example Microprocessor Clocks

8086 53

8088 73

80286 24

80386 35

80486 28

Pentium 13~56

INTO

Pentium Pro

INVD invalidate data cache

00001111 00001000

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-46

Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 4

Pentium 15

INVD

Pentium Pro

IRET/IRETD Return from interrupt

11001101 data O D I T S Z A P C

* * * * * * * * *

Format Examples Microprocessor Clocks

8086 32

8088 44

80286 17

80386 22

80486 15

Pentium 8-27

IRET

IRETD

IRET

IRETD

IRET 100

Pentium Pro

Jcondition Conditional jump

0111cccc disp

Format Examples Microprocessor Clocks

8086 16/4

8088 16/4

80286 7/3

80386 7/3

80486 3/1

Pentium 1

Jcnd label

(8-bit disp)

JA ABOVE

JB BELOW

JG GREATER

JE EQUAL

JZ ZERO

Pentium Pro

000011111000 cccc disp

Format Examples Microprocessor Clocks

Dodatak A

A-47

8086 -

8088 -

80286 -

80386 7/3

80486 3/1

Pentium 1

Jcnd label

(16-bit disp)

JNE NOT_MORE

JLE LESS_OR_SO

Pentium Pro

Codes Mnemonic Flag Description

0000 JO O=1 Jump if overflow

0001 JNO O=0 Jump if no overflow

0010 JB/NAE C=1 Jump if below

0011 JAE/JNB C=0 Jump if above or equal

0100 JE/JZ Z=1 Jump if equal/zero

0101 JNE/JNZ Z=1 Jump if not equal/zero

0110 JBE/JNA C=1+Z=1 Jump if below or equal

0111 JA/JNBE C=O*Z=0 Jump if above

1000 JS S = 1 Jump if sign

1001 JNS S=0 Jump if no sign

1010 JP/JPE P = 1 Jump If parity

1011 JNP/JPO P=0 Jump if no parity

1100 JL/JNGE S*0 Jump if less than

1101 JGE/JNL S=0 Jump if greater than or equal

1110 JLE/JNG Z = 1 + S - O Jump if less than or equal

1111 JG/JNLE Z=0+S=O Jump if greater than

JCXZ/JECXZ Jump if CX (ECX) equals zero

11100011

Format Examples Microprocessor Clocks

8086 18/6

8088 18/6

80286 8/4

80386 9/5

80486 8/5

Pentium 6/5

JCXZ label

JECXZ label

JCXZ ABOVE

JCXZ BELOW

JECXZ GREATER

JECXZ EQUAL

JCXZ NEXT

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-48

Jmp Jump

11101011 disp

Format Examples Microprocessor Clocks

8086 15

8088 15

80286 7

80386 7

80486 3

Pentium 1

JMP label

(short)

JMP SHORT UP

JMP SHORT DOWN

JMP SHORT OVER

JMP SHORT CIRCUIT

JMP SHORT JOKE

Pentium Pro

11101001 disp

Format Examples Microprocessor Clocks

8086 15

8088 15

80286 7

80386 7

80486 3

Pentium 1

JMP label

(near)

JMP VERS

JMP FROG

JMP UNDER

JMP NEAR PTR OVER

Pentium Pro

11101011 disp

Format Examples Microprocessor Clocks

8086 15

8088 15

80286 11

80386 12

80486 17

Pentium 3

JMP label

(far)

JMP NOT_MORE

JMP UNDER

JMP AGAIN

JMP FAR PTR THERE

Pentium Pro

11111111 oo100mmm

Format Examples Microprocessor Clocks

8086 11

8088 11

80286 7

JMP reg

(near)

JMP AX

JMP EAX

JMP CX

JMP DX 80386 7

Dodatak A

A-49

80486 3

Pentium 2

Pentium Pro

8086 18 + ea

8088 18 + ea

80286 11

80386 10

80486 5

Pentium 4

JMP mem

(near)

JMP VERS

JMP FROG

JMP CS:UNDER

JMP DATAI[DI+2]

Pentium Pro

11111111 oo101mmm

Format Examples Microprocessor Clocks

8086 24 + ea

8088 24 + ea

1280286 15

80386 12

80486 13

Pentium 4

JMP mem

(far)

JMP WAY_OFF

JMP TABLE

JMPUP

JMP OUT_OF_HERE

Pentium Pro

LAHF Load AH from flags

10011111

Example Microprocessor Clocks

8086 4

8088 4

80286 2

80386 2

80486 3

Pentium 2

LAHF

Pentium Pro

LAR Load access rights byte

00001111 00000010 oorrrmmm disp O D I T S Z A P C

*

Format Examples Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-50

8086 -

8088 -

80286 14

80386 15

80486 11

Pentium 8

LAR reg,reg

LAR AX,BX

LAR CX,DX

LAR ECX,EDX

Pentium Pro

8086 -

8088 -

80286 16

80386 16

80486 11

Pentium 8

LAR reg,mem

LAR CX,DATA1

LAR AX,LIST3

LAR ECX,TOAD

Pentium Pro

LEA Load effective address

10001101 oorrrmmm disp

Format Examples Microprocessor Clocks

8086 2 + ea

8088 2 + ea

80286 3

80386 2

80486 2

Pentium 1

LEA reg,mem

LEA DI,DATA3

LEA SI,LIST2

LEA BX,ARRAY_PTR

LEA CX,PNTR

Pentium Pro

LEAVE Leave high-level procedure

11001001

Example Microprocessor Clocks

-

-

5

4

LEAVE

8086

8088

80286

80386

80486 5

Dodatak A

A-51

3

Pentium

Pentium Pro

LES Load far pointer to ES and register

11000100 oorrrmmrn

Format Examples Microprocessor Clocks

8086 16 + ea

8088 24 + ea

80286 7

80386 7

80486 6

Pentium 4

LES reg,mem

LES DI,DATA3

LES SI,LIST2

LES BX,ARRAY_PTR

LES CX,PNTR

Pentium Pro

LFS Load far pointer to FS and register

00001111 10110100oorrrmmmdisp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 7

80486 6

Pentium 4

LFS reg,mem

LFS DI,DATA3

LFS SI,LIST2

LFS BX,ARRAY_PTR

LFS CX,PNTR

Pentium Pro

LGDT Load global descriptor table

0000111100000001 oo010mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 11

80386 11

80486 11

LGDT mem64

LGDT DESCRIP

LGDT TABLED

Pentium 6

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-52

Pentium Pro

LGS Load far pointer to GS and register

00001111 10110101 oorrrmmm disp

Format Examples Microprocessor Clocks

8086

8088

80286 -

80386 7

80486 6

Pentium 4

LGS reg,mem

LGS DI,DATA3

LGS SI,LIST2

LGS BX,ARRAY PTR

LGS CX,PNTR

Pentium Pro

LIDT Load interrupt descriptor table

00001111 00000001 oo011 mmm disp

Format Examples Microprocessor Clocks

8086

8088 -

80286 12

80386 11

80486 11

Pentium 6

LIDT mem64 LIDT DATA3

LIDT LIST2

Pentium Pro

LLDT Load local descriptor table

00001111 00000000 oo010mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 17

80386 20

80486 11

Pentium 9

LLDT reg LLDT BX

LLDT DX

LLDT CX

Pentium Pro

Dodatak A

A-53

8086 -

8088 -

80286 19

80386 24

80486 11

Pentium

LLDT mem LLDT DATA1

LLDT LIST3

LLDT TOAD

Pentiurn Pro

LMSW Load machine status word (80286 only)

00001111 00000001 oo110mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 3

80386 10

80486 2

Pentium 8

LMSW reg LMSW BX

LMSW DX

LMSW CX

Pentium Pro

8086 -

8088 -

80286 6

80386 13

80486 3

Pentium 8

LMSW mem LMSW DATA1

LMSW LIST3

LMSW TOAD

Pentium Pro

LOCK Lock the bus

11110000

Format Examples Microprocessor Clocks

8086 2

8088 3

80286 0

80386 0

LOCK:inst LOCK:XCHG AX,BX

LOCK:ADD AL,3

80486 1

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-54

Pentium 1

Pentium Pro

LODS Load string operand

10101low

Format Examples Microprocessor Clocks

8086 12

8088 15

80286 5

80386 5

80486 5

Pentium 2

LODSB

LODSW

LODSD

LODSB

LODSW

LODSD

LODS DATA3

Pentium Pro

LOOP/LOOPD Loop until CX=0 or ECX=0

11100010 disp

Format Examples Microprocessor Clocks

8086 17/5

8088 17/5

80286 8/4

80386 11

80486 7/6

Pentium 5/6

LOOP label

LOOPD label

LOOP NEXT

LOOP BACK

LOOPD LOOPS

Pentium Pro

LOOPE/LOOPED Loop while equal

11100001 disp

Format Examples Microprocessor Clocks

8086 18/6

8088 18/6

80286 8/4

80386 11

LOOPE label

LOOPED label

LOOPZ label

LOOPZD label

LOOPE AGAIN

LOOPED UNTIL

LOOPZ ZORRO

LOOPZD WOW

80486 9/6

Dodatak A

A-55

Pentium 7/8

Pentium Pro

LOOPNE/LOOPNED Loop while not equal

11100000 disp

Format Examples Microprocessor Clocks

8086 19/5

8088 19/5

80286 8/4

80386 11

80486 9/6

Pentium 7/8

LOOPNE label

LOOPNED label

LOOPNZ label

LOOPNZD label

LOOPNE FORWARD

LOOPNED UPS

LOOPNZ TRY_AGAIN

LOOPNZO WOO

Pentium Pro

LSL Load segment limit

00001111 00000011 oorrrmmm disp O D I T S Z A P C

*

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 14

80386 25

80486 10

Pentium 8

LSL reg,reg

LSL AX,BX

LSL CX,BX

LSL EDX,EAX

Pentium Pro

8086

8088

80286 16

80386 26

80486 10

Pentium 8

LSL reg,mem LSL AX,LIMIT

LSL EAX,NUM

Pentium Pro

LSS Load far pointer to SS and register

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-56

00001111 10110010 oorrrmmm disp

Format Examples Microprocessor Clocks

8086

8088

80286

80386 7

80486 6

Pentium 4

LSS reg,mem LSS DI,DATA1

LSS SP,STACK_TOP

LSS CX,ARRAY

Pentium Pro

LTR Load task register

00001111 00000000 oo001mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 17

80386 23

80486 20

Pentium 10

LTR reg LTR AX

LTR CX

LTR DX

Pentium Pro

8086 -

8088 -

80286 19

80386 27

80486 0

Pentium 10

LTR mem16 LTR TASK

LTR NUM

Pentium Pro

MOVE Move data

100010dw oorrrmmm disp

Format Examples Microprocessor Clocks

8086 2 MOV reg.reg MOV CL,CH

MOV BH,CL 8088 2

Dodatak A

A-57

80286 2

80386 2

80486 1

Pentium 1

MOV CX,DX

MOV EAX,EBP

MOV ESP,ESI

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 3

80386 2

80486 1

Pentium 1

MOV mem,reg MOV DATA7,DL

MOV NUMB,CX

MOV TEMP,EBX

MOV FECXI,BL

MOV [DI],DH

Pentium Pro

8086 10 + ea

8088 12 + ea

80286 5

80386 4

80486 1

Pentium 1

MOV reg,mem MOV DL,DATA8

MOV DX,NUMB

MOV EBX,TEMP+3

MOV CH,TEMP[EDI]

MOV CL,DATA2 Penlium Pro

1100011woo000mmm disp data

Format Examples Microprocessor Clocks

8086 10 + ca

8088 14 + ea

80286 3

80386 2

80486 1

Pentium 1

MOV mem,imm

MOV DATAF,23H

MOV LIST,12H

MOV BYTE PTR [DI],2

MOV NUMB,234H

MOV DWORD PTR[ECX],1

Pentium Pro

1011wrrr data

Format Examples Microprocessor Clocks

8086 4

8088 4

80288 3

80386 2

80486 1

MOV reg,imm MOV BX,22H

MOV CX, 12H

MOV CL,2 MOV ECX,123456H

MOV DI,100

Pentium 1

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-58

Pentium Pro

101000dw disp

Format Examples Microprocessor Clocks

8086 10

8088 14

80286 3

80386 2

80486 1

Pentium 1

MOV mem,acc MOV DATAF,AL

MOV LIST,AX

MOV NUMB,EAX

Pentiurn Pro

8086 10

8088 14

80286

80386 4

80486 1

Pentium 1

MOV acc,mem MOV AL,DATAE

MOV AX,LIST

MOV EAX,LUTE

Pentium Pro

10001ld0 oosssmmm disp

8086 2

8088 2

80286 2

80386 2

80486 1

Pentium 1

MOV seg,reg MOV SS,AX

MOV DS,DX

MOV ES,CX

MOV FS,BX

MOV GS,AX

Pentium Pro

8086 8 + ea

8088 12 + ea

80286 2

80386 2

80486 1

Pentium 2 or 3

MOV seg,mem MOV SS,STACK-TOP

MOV DS,DATAS

MOV ES,TEMP1

Pentium Pro

8086 2

8088 2

80286 2

MOV reg,seg MOV BX,DS

MOV CX,FS

MOV CX,ES

80386 2

Dodatak A

A-59

80486 1

Pentium 1

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 3

80386 2

80486 1

Pentium 1

MOV mem,seg MOV DATA2,CS

MOV TEMP,DS

MOV NUMB1,SS

MOV TEMP2,GS

Pentium Pro

00001111 001000d0 11rrrmmm

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 6

80486 4

Pentium 4

MOV reg,cr MOV EBX,CRO

MOV ECX,CR2

MOV EBX,CR3

Pentium Pro

8086 -

8088 -

80286 -

80366 10

80486 4

Pentium 12--46

MOV cr.reg MOV CRO,EAX

MOV CR1,EBX

MOV CR3,EDX

Pentium Pro

00001111 001000d1 11rrrmmm

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 22

80486 10

Pentium 11

MOV reg,dr MOV EBX,DR6

MOV ECX,DR7

MOV EBX,DR1

Pentium Pro

MOV dr,reg MOV DR0,EAX 8086 -

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-60

8088 -

80286 -

80386 22

80486 11

Pentium 11

MOV DR1,EBX

MOV DR3,EDX

Pentium Pro

00001111 001001do 11rrrmmm

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 12

80486 4

Pentium 11

MOV reg,tr MOV EBX,TR6

MOV ECX,TR7

Pentium Pro

8086 -

8088 -

80286 -

80386 12

80486 6

Pentium 11

MOV tr, reg MOV TR6,EAX

MOV TR7,EBX

Pentium Pro

MOVS Move string data

1010010w

Format Examples Microprocessor Clocks

8086 18

8088 26

80286 5

80386 7

80486 7

Pentium 4

MOVSB

MOVSW

MOVSD

MOVSB

MOVSW

MOVSD

MOVS DATAl,DATA2

Pentium Pro

MOVSX Move with sign extend

Dodatak A

A-61

00001111 1011111w oorrrmmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 3

Pentium 3

MOVSX reg,reg

MOVSX BX,AL

MOVSX EAX,DX

Pentium Pro

8086 -

8088 -

80286 -

80386 6

80486 3

Pentium 3

MOVSX reg,mem MOVSX AX,DATA34 MOVSX EAX,NUMB

Pentium Pro

MOVZX Move with zero extend

00001111 1011011w oorrrmmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 3

Pentium 3

MOVZX reg,reg

MOVZX BX,AL

MOVZX EAX,DX

Pentium Pro

8086 -

8088 -

80286 -

80386 6

80486 3

Pentium 3

MOVZX reg,mem MOVZX AX,DATA34

MOVZX EAX,NUMB

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-62

MUL Multiply

111101lw 00100MMM disp O D I T S Z A P C

* ? ? ? ? *

Format Examples Microprocessor Clocks

8086 118

8088 143

80286 21

80388 38

80486 42

Pentium 10 or 11

MUL reg MUL BL

MUL CX

MUL EDX

Pentium Pro

8086 139

8088 143

80286 24

80386 41

80486 42

Pentium 11

MUL mem MUL DATA9

MUL WORD PTR [ESI]

Pentium Pro

NEG Negate

111101lw oool1mmm disp O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1 or3

NEG reg NEG BL

NEG CX

NEG EDI

Pentium Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 6

NEG mem

NEG DATA9

NEG WORD PTR [ESI]

80486 3

Dodatak A

A-63

Pentium 1 or3

Pentium Pro

NOP No operation

10010000

Example Microprocessor Clocks

8086 3

8088 3

80286 3

80386 3

80486 3

Pentium 1

NOP

Pentium Pro

NOT One's complement

111101lw oo010mmm disp

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1 or3

NOT reg

NOT BL

NOT CX

NOT EDI

Pentium Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 6

80486 3

Pentium 1 or3

Pentium Pro

NOT mem

NOT DATA9 NOT WORD PTR [ESI]

OR Inclusive-OR

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-64

000010dw oorrrmmm disp O D I T S Z A P C

0 * * ? * 0

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1 or 2

OR reg,reg

OR AX,BX

OR AL,BL

OR EAX,EBX

OR CX,SI

OR ESI,EDI

Pentium Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 7

80486 3

Pentium 1 or3

OR mem,reg

OR DATAY,AL

OR LIST,ST OR DATA2[D1],CL

OR [EAX],BL

OR [EBX+2*ECX],EDX

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 7

80386 6

80486 2

Pentium 1 or3

OR reg,mem

OR BL,DATA1

OR SI,LIST1 OR CL,DATA2[SI]

OR CX,[ESI]

OR ESI,[2*ECX]

Pentium Pro

100000sw o000lmmm disp data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1or 3

OR reg,imm

OR CX,3

OR D1,1AH

OR DL,34H

OR EDX,1345H

OR CX, 1834H

Pentium Pro

8086 17 + ea

8088 25 + ea

OR mem,imm OR DATAS,3 OR BYTE PTR[EDI],1AH OR DADDY,34H 80286 7

Dodatak A

A-65

80386 7

80486 3

Pentium 1 or3

OR LIST,'A' OR TOAD,1834H

Pentium Pro

0000110w data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

OR acc,imm OR AX,3

OR AL. 1AH

OR AH,34H

OR EAX, 1345H

OR AL,'Y'

Pentium Pro

OUT Output data to port

111001lw port#

Format Examples Microprocessor Clocks

8086 10

8088 14

80286 3

80386 10

80486 10

Pentium 12--26

OUT pt,acc OUT 12H,AL

OUT 12H,AX

OUT 0FFH,AL

OUT 0A0H,AX

OUT 10H,EAX

Pentium Pro

1110111w

Format Examples Microprocessor Clocks

8086 8

8088 12

80286 3

80386 1 1

80486 10

Pentium 12--26

OUT DX,acc OUT DX,AL

OUT DX,AX

OUT DX,EAX

Pentium Pro

OUTS Output string to port

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-66

0110111w

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 5

80386 14

80486 10

Pentium 13--27

OUTSB

OUTSW

OUTSD

OUTSB

OUTSW

OUTSD

OUTS DATA2

REP OUTSB

Pentium Pro

POP pop data from stack

01011rrr

Format Examples Microprocessor Clocks

8086 8

8088 12

80286 5

80386 4

80486 1

Pentium 1

POP reg POP CX

POP AX

POP EDI

Pentium Pro

10001111 oo000mmm disp

Format Examples Microprocessor Clocks

8086 17 + ea

8088 25 + ea

80286 5

80386 5

80486 4

Pentium 3

POP mem POP DATA1

POP LISTS

POP NUMBS

Pentium Pro

00sss111

Format Examples Microprocessor Clocks

8086 -

8088 -

POP seg POP FS

POP GS

80286 -

Dodatak A

A-67

80386 7

80486 3

Pentium 3

Pentium Pro

POPA/POPAD Pop all registers from stack

01100001

Example Microprocessor Clocks

8086 -

8088 -

80286 19

80386 24

80486 9

Pentium 5

POPA

POPAD

Pentium Pro

POPF/POPFD Pop flags from stack

10010000 O D I T S Z A P C

* * * * * * * * *

Example Microprocessor Clocks

8086 8

8088 12

80286 5

80386 5

80486 6

Pentium 4 or 6

POPF

POPFD

Pentium Pro

PUSH Push data onto stack

01010rrr

Format Examples Microprocessor Clocks

8086 11

8088 15

PUSH reg PUSH CX

PUSH AX

PUSH EDI 80286 3

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-68

80386 2

80486 1

Pentium 1

Pentium Pro

11111111 oo111mmm disp

Format Examples Microprocessor Clocks

8086 16 + ea

8088 24 + ea

80286 5

80386 5

80486 4

Pentium 1 or 2

PUSH mem PUSH DATA1

PUSH LISTS

PUSH NUMBS

Pentium Pro

00ss110

Format Examples Microprocessor Clocks

8086 10

8088 14

80286 3

80386 2

80486 3

Pentium 1

PUSH seg PUSH ES

PUSH CS

PUSH DS

Pentium Pro

00001111 l0sss000

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 2

80486 3

Pentium 1

PUSH seg PUSH fS

PUSH GS

Pentium Pro

011010s0 data

Format Examples Microprocessor Clocks

8086 -

8088 -

PUSH imm

PUSH 2000H PUSH 53220 PUSHW 1 OH PUSH’,’ 80286 3

Dodatak A

A-69

80386 2

80486 1

Pentium 1

PUSHD 100000H

Pentium Pro

PUSHA/PUSHAD Push all registers onto stack

01110000

Example Microprocessor Clocks

8086 -

8088 -

80286 17

80386 18

80486 11

Pentium 5

PUSHA

PUSHAD

Pentium Pro

PUSHF/PUSHFD Push flags onto stack

10011100

Example Microprocessor Clocks

8086 10

8088 14

80286 3

80386 4

80486 3

Pentium 3 or 4

PUSHF

PUSHFD

Pentiurn Pro

RLC/RCR/ROL/ROR Rotate

1101000w 00mmmm disp O D I T S Z A P C

* *

TTT=000=ROL, TTT=00l=ROR, TTT=010=RCL, and TTT=011=RCR

Format Examples Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-70

8086 2

8088 2

80286 2

80386 3

80486 3

Pentium 1 or 3

ROL reg, 1

ROR reg, 1

ROL CL, 1

ROL DX,1

ROR CH,1

ROR SI,1

Pentium Pro

8086 2

8088 2

80286 2

80386 9

80486 3

Pentium 1 or 3

RCL reg, 1

RCR reg,1

RCL CL,1

RCL SI,l

RCR AH,1

RCR EBX,1

Pentium Pro

8086 5 + ea

8088 23 + ea

80286 7

80386 7

80486 4

Pentium 1 or 3

ROL mem,1

ROR mem, 1

ROL DATAY,1

ROL LIST, 1 ROR DATA2[DI],1

ROR BYTE PTR [EAX],1

Pentium Pro

8086 15 + ea

8088 23 + ea

80286 7

80386 10

80486 4

Pentium 1 or 3

RCL mem,1

RCR mem,1

RCL DATA1,1

RCL LIST,1

RCR DATA2[SI],l RCR WORD PTR [ESI],1

Pentium Pro

110100lw ooTTTmmm disp

Format Examples Microprocessor Clocks

8086 8 + 4n

8088 8 + 4n

80286 5 + n

80386 3

80486 3

ROL reg,CL

ROR reg,CL

ROL CH,CL

ROL DX,CL

ROR AL,CL

ROR ESI,CL

Pentium 4

Dodatak A

A-71

Pentium Pro

8086 8 + 4n

8088 8 + 4n

80286 5+n

80386 9

80486 3

Pentium 7-27

RCL reg,CL

RCR reg,CL

RCL CH,CL

RCL SI,CL

RCR AH,CL

RCR EBX,CL

Pentium Pro

8086 20 + 4n

8088 28 + 4n

80286 8+n

80386 7

80486 4

Pentium 4

ROL mem,CL

ROR mem,CL

ROL DATAY,CL

ROL LIST,CL

ROR DATA2[D1],CL

ROR BYTE PTR [EAX],CL

Pentium Pro

8086 20 + 4n

8088 28 + 4n

80286 8+n

80386 10

80486 9

Pentium 9-26

RCL mem,CL

RCR mem,CL

RCL DATAL,CL

RCL LIST,CL

RCR DATA2[SI],CL

RCR WORD PTR [ESI],CL

Pentium Pro

1100000w ooTTTmmm disp data

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 5 + n

80386 3

80486 2

Pentium. 1 or 3

ROL reg,imm

ROR reg,imm

ROL CH,4

ROL DX,5

ROR AL,2

ROR ESI, 14

Pentium Pro

8086 -

8088 -

80286 5 + n

80386 9

RCL reg,imm

RCR reg,imm

RCL CL,2

RCL SI,l 2

RCR AH,5

RCR EBX,18

80486 8

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-72

Pentium 8-27

Pentium Pro

8086 -

8088 -

80286 8 + n

80386 7

80486 4

Pentium 1 or3

ROL mem,imm

ROR mem,imm

ROL DATAY,4

ROL LIST,3

ROR DATA2[DI],7

ROR BYTE PTR [EAX], 11

Pentium Pro

8086 -

8088 -

80286 8+n

80386 10

80486 9

Pentium 8-27

RCL mem,imm

RCR mem,imm

RCL DATA1,5

RCL LIST,3

RCR DATA2[SI],9

RCR WORD PTR [ESI],8

Pentium Pro

RDMSR Read model specific register

00001111 00110010

Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 -

Pentium 20-24

RDMSR

Pentium Pro

REP Repeat prefix

11110011 1010010w

Format Examples Microprocessor Clocks

8086 9 + 17n

8088 9 + 25n

REP MOVS REP MOVSB REP MOVSW REP MOVSD REP MOVS 80286 5 + 4n

Dodatak A

A-73

80386 8+ 4n

80486 12 + 3n

Pentium 13 + n

DATAl,DATA2

Pentium Pro

11110011 1010101w

Format Examples Microprocessor Clocks

8086 9 + l0n

8088 9 + 14n

80286 4 + 3n

80386 5+ 5n

80486 7+ 4n

Pentium 9 + n

REP STOS REP STOSB

REP STOSW

REP STOSD

REP STOS ARRAY

Pentium Pro

11110011 0110110w

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 5 + 4n

80386 12 + 5n

80486 17 + 5n

Pentium 25+3n

REP INS REP INSB

REP INSW

REP INSD

REP INS ARRAY

Pentum Pro

11110011 0110111w

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 5 + 4n

80386 12 + 5n

80486 17 + 5n

Pentium 25 + 4n

REP OUTS

REP OUTSB

REP OUTSW

REP OUTSD REP OUTS ARRAY

Pentium Pro

REPE/REPNE Repeat conditional

11110011 1010011w

Format Examples Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-74

8086 9 + 22n

8088 9 + 30n

80286 5 + 9n

80386 5 + 9n

80486 7 +7n

Pentium 9 + 4n

REPE CMPS

REPE CMPSB

REPE CMPSW

REPE CMPSD REPE CMPS DATAl,DATA2

Pentium Pro

11110011 1010111w

Format Examples Microprocessor Clocks

8086 9 + 15n

8088 9 + 19n

80286 5 + 8n

80386 5+ 8n

80486 7+ 5n

Pentium 9 + 4n

REPE SCAS

REPE SCASB

REPE SCASW

REPE SCASD

REPE SCAS ARRAY

Pentium Pro

11110010 1010011w

Format Examples Microprocessor Clocks

8086 9 + 22n

8088 9 + 30n

80286 5 + 9n

80386 5+ 9n

80486 7+ 7n

Pentium 8 + 4n

REPNE CMPS REPNE CMPSB

REPNE CMPSW

REPNE CMPSD

REPNE CMPS ARRAY,LIST

Pentium Pro

11110010 101011w

Format Examples Microprocessor Clocks

8086 9 + 15n

8088 9 + 19n

80286 5 + 8n

80386 5 +8n

80486 7+ 5n

Pentium 9 + 4n

REPNE SCAS REPNE SCASB

REPNE SCASW

REPNE SCASD

REPNE SCAS ARRAY

Pentium Pro

RET Return from procedure

Dodatak A

A-75

11000011

Example Microprocessor Clocks

8086 16

8088 20

80286 11

80386 10

80486 5

Pentium 2

RET (near)

Pentium Pro

11000010 data

Format Examples Microprocessor Clocks

8086 20

8088 24

80286 11

80386 10

80486 5

Pentium 3

RET imm

(near)

RET 4

RET 100H

Pentium Pro

11001011

Format Examples Microprocessor Clocks

8086 26

8088 34

80286 15

80386 18

80486 13

Pentium 4-23

RET

(far)

Pentium Pro

11001010 data

Format Examples Microprocessor Clocks

8086 25

8088 33

80286 11

80386 10

80486 5

RET imm

(far)

RET 4

RET 100H

Pentium 4-23

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-76

Pentium Pro

RSM Resume from system management mode

00001111 10101010 O D I T S Z A P C

* * * * * * * * *

Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 -

Pentium 83

RSM

Pentium Pro

SAHF Store AH into flags

10011110 O D I T S Z A P C

* * * * *

Example Microprocessor Clocks

8086 4

8088 4

80286 2

80386 3

80486

Pentium 2

SAHF

Pentium Pro

SAL/SAR/SHL/SHR Shift

1101000w ooTTTmmm disp O D I T S Z A P C

* * * ? * *

TTT = 100 SHL/SAL, TTT = 101=SHR, and TTT= 111= SAR

Format Examples Microprocessor Clocks

8086 2

8088 2

80286 2

80386 3

SAL reg,1

SHL reg,1

SHR reg,1

SAR reg, 1

SAL CL, 1

SHL DX,1

SAR CH, 1

SHR SI,l

80486 3

Dodatak A

A-77

Pentium 1or 3

Pentium Pro

8086 15 + ea

8088 23 + ca

80286 7

80386 7

80486 4

Pentium 1 or3

SAL mem, 1

SHL mem,1

SHR mem,1

BAR mem,1

SAL DATA1,1 SHL BYTE PTR[DI],l

SAR NUMB, 1

SHR WORD PTR[EDI],1

Pentium Pro

1101001w oommm disp

Format Examples Microprocessor Clocks

8086 8 + 4n

8088 8 + 4n

80286 5+n

80386 3

80486 3

Pentium 4

SAL reg,CL

SHL reg,CL

BAR reg,CL

SHR reg,CL

SAL CH,CL 8086

SHL DX,CL

BAR AL,CL

SHR ESI,CL

Pentium Pro

8086 20 + 4n

8088 28 + 4n

80286 8+n

80386 7

80486 4

Pentium 4

SAL mem,CL

SHL mem,CL

SAR mem,CL

SHR mem,CL

SAL DATAU,CL

SHL BYTE PTR[ESI],CL

SAR NUMB,CL

SHR TEMP,CL

Pentium Pro

1101001w oommm disp

Format Examples Microprocessor Clocks

8086 8 + 4n

8088 8 + 4n

80286 5+n

80386 3

80486 3

Pentium 4

SAL reg,CL

SHL reg,CL

BAR reg,CL

SHR reg,CL

SAL CH,CL SHL DX,CL

BAR AL,CL

SHR ESI,CL

Pentium Pro

1100000w oommmm disp data

Format Examples Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-78

8086 -

8088 -

80286 5+n

80386 3

80486 2

Pentium 1 or 3

SAL reg,imm

SHL reg,imm

SAR reg,imm

SHR reg,imm

SAL CH,4

SHL DX,10

SAR AL,2

SHR ESI,23

Pentium Pro

8086 -

8088 -

80286 8+n

80386 7

80486 4

Pentium 1 or 3

SAL mem,imm

SHL mem,imm

SAR mem.imm

SHR mem,imm

SAL DATAU,3 SHL BYTE PTR[ESI],15

SAR NUMB,3

SHR TEMP,5

Pentium Pro

SBB Subtract with borrow

000110dw oorrrmmm disp O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1 or2

SBB reg,reg SBB CL,DL

SBB AX,DX

SBB CH,CL

SBB EAX,EBX

SBB ESI,EDI

Pentium Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 6

80486 3

Pentium 1 or3

SBB mem,reg SBB DATAJ,CL

SBB BYTES,CX

SBB NUMBS,ECX

SBB [EAX],CX

Pentium Pro

8086 9 + ea

8088 13 + ea

SBB reg,mem SBB CL,DATAL SBB CX,BYTES SBB ECX,NUMBS SBB DX,[EBX+EDI]

80286 7

Dodatak A

A-79

80386 7

80486 2

Pentium 1 or2

Pentium Pro

100000sw oool1mmm disp data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1or 3

SBB reg,imm. SBB CX,3

SBB DI,1AH

SBB DL,34H

SBB EDX, 1345H

SBB CX,1834H

Pentium Pro

100000sw oool1mmm disp data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1or 3

SBB reg,imm. SBB CX,3

SBB DI,1AH

SBB DL,34H

SBB EDX, 1345H

SBB CX,1834H

Pentium Pro

8086 17 + ea

8088 25 + ea

80286 7

80386 7

80486 3

Pentium 1 or3

SBB mem,imm SBB DATAS,3

SBB BYTE PTR[EDI],1AH

SBB OADDY,34H

SBB LIST,'A'

SBB TOAD, 1834H Pentium Pro

0001110w data

Format Examples Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

SBB acc,imm SBB AX,3

SBB AL. 1 AH

SBB AH,34H

SBB EAX, 1 345H

80486 1

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-80

Pentium 1 SBB AL,'Y'

Pentium Pro

SCAS Scan string

1010111w O D I T S Z A P C

* * * * * *

Format Examples Microprocessor Clocks

8086 15

8088 19

80286 7

80386 7

80486 6

Pentium 4

SCASB

SCASW

SCASD

SCASB

SCASW

SCASD

SCAS DATAF

REP SCASB

Pentium Pro

SETcondition Conditional set

00001111 1001cccc oo000mrnm

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 4

80486 3

Pentium 1 or 2

SETcnd reg8

SETA BL

SETB CH

SETG DL

SETE BH

SETZ AL

Pentium Pro

8086 -

8088 -

80286 -

80386 5

80486 3

Pentium 1 or 2

SETcnd mem8

SETE DATAK SETAE LESS_OR_SO

Pentium Pro

Condition

Codes Mnemonic Flag Description

Dodatak A

A-81

0000 SETO O = 1 set if overflow

0001 SETNO O=0 Set if no overflow

0010 SETB/SETAE C=1 Set if below

0011 SETAE/SETNB C=0 Set if above or equal

0100 SETE/SETZ Z=1 Set if equal/zero

0101 SETNE/SETNZ Z=0 Set if not equal/zero

0110 SETBE/SETNA C =1 + Z= 1 Set if below or equal

0111 SETA/SETNBE C=0•Z=0 Set if above

1000 SETS S=1 Set if sign

1001 SETNS S=0 Set if no sign

1010 SETP/SETPE P=1 Set if parity

1011 SETNP/SETPO P=0 Set if no parity

1100 SETL/SETNGE S•O Set if less than

1101 SETGE/SETNL S=0 Set K greater than or equal

1110 SETLE/SETNG Z = 1 + S • O

Set it less than or equal

1111 SETG/SETNLE Z=0+S=O Set if greater than

SGDT/SIDT/SLDT Store descriptor table registers

00001111 00000001 oo000mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 11

80386 9

80486 10

Pentium 4

SGDT mem

SGDT MEMORY

SGDT GLOBAL

Pentium Pro

00001111 00000001 00001mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 12

80386 9

SIDT mem SIDT DATAS

SIDT INTERRUPT

80486 10

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-82

Pentium 4

Pentium Pro

00001111 00000000 oo0000mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 2

80386 2

80486 2

Pentium 2

SLDT reg SLDT CX

SLDT OX

Pentium Pro

8086 -

8088 -

80286 3

80386 2

80486 3

Pentium 2

SLDT mem SLDT NUMBS

SLDT LOCALS

Pentium Pro

SHLD/SHRD Double precision shift

00001111 10100100 oorrrmmm disp data

O D I T S Z A P C

? * * ? * *

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 2

Pentium 4

SHLD reg,reg,imm

SHLD AX,CX, 10

SHLO DX,BX,8

SHLD CX,DX,2

Pentium Pro

8086 -

8088 -

80286 -

80386 7

80486 3

SHLD mem,reg,imm

SHLD DATAQ,CX,8

Pentium 4

Dodatak A

A-83

Pentium Pro

00001111 10101100 oorrrmmrn disp data

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 2

Pentium 4

SHRD reg,reg,imm

SHRD CX,DX,2

Pentium Pro

8086 -

8088 -

80286 -

80386 7

80486 2

Pentium 4

SHRD mem,reg,imm

SHRD DATAZ,DX,4

Pentium Pro

000011111 0100101 oorrrrnrnm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 -

80386 3

80486 3

Pentium 4 or 5

SHLD reg,reg,CL

SHLD BX,DX,CL

Pentium Pro

8086 -

8088 -

80286 -

80386 7

80486 3

Pentium 4 or 5

SHLD mem.reg,CL

SHLD DATAZ,DX,CL

Pentium Pro

000011111 0101101 oorrrmmm disp

Format Examples Microprocessor Clocks

SHRD SHRD 8086 -

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-84

8088 -

80286 -

80386 3

80486 3

Pentium 4 or 5

reg,reg,CL AX,DX,CL

Pentium Pro

8086 -

8088 -

80286 -

80386 7

80486 3

Pentium 4 or 5

SHRD mem,reg,CL

SHRD DATAZ,DX,CL

Pentium Pro

SMSW Store machine status word (80286)

00001111 00000001 oo100mmm disp

Format Examples Microprocessor Clocks

8086 -

8088 -

80286 2

80386 10

80486 2

Pentium 4

SMSW reg SMSW AX

SMSW DX

SMSW BP

Pentium Pro

8086 -

8088 -

80286 3

80386 3

80486 3

Pentium 4

SMSW mem SMSW DATAQ

Pentium Pro

STC Set carry flag

11111001 O D I T S Z A P C

Dodatak A

A-85

*

Format Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 2

80486 2

Pentium 2

STC STC

Pentium Pro

STD Set direction flag

11111101 O D I T S Z A P C

1

Format Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 2

80486 2

Pentium 2

STD STD

Pentium Pro

STI Set interrupt flag

11111011 O D I T S Z A P C

1

Format Example Microprocessor Clocks

8086 2

8088 2

80286 2

80386 3

80486 5

Pentium 7

STI STI

Pentium Pro

STOS Store string data

1010101w

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-86

Format Example Microprocessor Clocks

8086 11

8088 15

80286 3

80386 40

80486 5

Pentium 3

STOSB

STOSW

STOSD

STOSB

STOSW

STOSD STOS DATA_LIST

REP STOSB

Pentium Pro

STR Store task register

00001111 00000000 oo001mmm disp

Format Example Microprocessor Clocks

8086 -

8088 -

80286 2

80386 2

80486 2

Pentium 2

STR reg STR AX

STR DX

STR BP

Pentium Pro

8086 -

8088 -

80286 2

80386 2

80486 2

Pentium 2

STR mem STR DATA3

Pendum Pro

SUB Subtract

00010ldw oorrrmmm disp O D I T S Z A P C

* * * * * *

Format Example Microprocessor Clocks

8086 3

8088 3

SUB reg,reg SUB CL,DL

SUB AX,DX

SUB CH,CL 80286 2

Dodatak A

A-87

80386 2

80486 1

Pentium 1 or 2

SUB EAX,EBX

SUB ESI,EDI

Pentium Pro

8086 16 + ea

8088 24 + ea

80286 7

80386 6

80486 3

Pentium 1 or3

SUB mem,reg SUB DATAJ,CL

SUB BYTES,CX

SUB NUMBS,ECX

SUB [EAX],CX

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 7

80386 7

80486 2

Pentium 1 or 2

SUB reg,mem SUB CL,DATAL

SUB CX,BYTES

SUB ECX,NUMBS

SUB DX,[EBX+EDI]

Pentium Pro

100000sw 00101mmm disp data

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1 or 3

SUB reg,imm SUB CX,3

SUB DI,1AH

SUB DL,34H

SUB EDX,1345H

SUB CX,1834H

Pentium Pro

8086 17 + ea

8088 25 + ea

80286 7

80386 7

80486 3

Pentium 1 or 3

SUB mem,imm SUB DATAS,3

SUB BYTE PTR[EDI],1AH

SUB OADDY,34H

SUB LIST,'A'

SUB TOAD,1834H Pentium Pro

0010110w data

Format Example Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-88

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

SUB acc,imm SUB AL,3

SUB AX,1AH

SUB EAX,34H

Pentium Pro

TEST Test operands (logical compare)

1000001w oorrrmmm disp O D I T S Z A P C

0 * * ? * 0

Format Example Microprocessor Clocks

8086 5

8088 5

80286 2

80386 2

80486 1

Pentium 1 or 2

TEST reg,reg TEST CL,DL

TEST BX,DX

TEST DH,CL

TEST EBP,EBX

TEST EAX,EDI

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 6

80386 5

80486 2

Pentium 1 or2

TEST mem,reg

reg,mem

TEST DATAJ,CL

TEST BYTES,CX TEST NUMBS,ECX

TEST[EAX],CX

TEST CL,POPS

Pentium Pro

1111011sw oo000mmm disp data

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1 or2

TEST reg,imm TEST BX,3

TEST DI, 1 AH

TEST DH,44H TEST EDX,1AB345H

TEST SI,1834H

Pentium Pro

TEST mem,imm TEST DATAS,3 8086 11 +ea

Dodatak A

A-89

8088 11 +ea

80286 6

80386 5

80486 2

Pentium 1 or2

TEST BYTE PTR[EDI],1AH TEST DADDY,34H TEST LIST,'A' TEST TOAD,1834H

Pentium Pro

1010100w data

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

TEST acc,imm TEST AL,3

TEST AX, 1AH

TEST EAX,34H

Pentium Pro

VERR/VERW Verify read/write

00001111 00000000 oo100mmm disp O D I T S Z A P C

*

Format Example Microprocessor Clocks

8086 -

8088 -

80286 14

80386 10

80486 11

Pentium 7

VERR reg VERR CX

VERR DX

VERR DI

Pentium Pro

8086 -

8088 -

80286 16

80386 11

80486 11

Pentium 7

VERR mem VERR DATAJ

VERR TESTB

Pentium Pro

00001111 00000000 ool01rnmm disp

Format Example Microprocessor Clocks

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-90

8086 -

8088 -

80286 14

80386 15

80486 11

Pentium 7

VERW reg VERW CX

VERW DX

VERW DI

Pentium Pro

8086 -

8088 -

80286 16

80386 16

80486 11

Pentium 7

VERW mem VERW DATAJ

VERW TESTB

Pentium Pro

WAIT Wait for coprocessor

10011011

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 6

80486 6

Pentium 1

WAIT

FWAIT

WAIT

FWAIT

Pentium Pro

WBINVD Write-back cache invalidate data cache

00001111 00001001

Format Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

WBINVD WBINVD

80486 5

Dodatak A

A-91

Pentium 2000+

Pentium Pro

WRMSR Write to model specific register

00001111 00110000

Format Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 -

Pentium 30-45

WRMSR WRMSR

Pentium Pro

XADD Exchange and add

00001111 1100000w 11rrrrrr O D I T S Z A P C

* * * * * *

Format Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

80486 3

Pentium 3or4

XADD reg,reg XADD EBX,ECX

XADD EDX,EAX

XADD EDI,EBP

Pentium Pro

00001111 1100000w oorrrmmm disp

Format Example Microprocessor Clocks

8086 -

8088 -

80286 -

80386 -

M80486 4

Pentium 3 or 4

XADD mem.reg XADD DATA5,ECX

XADD [EBX],EAX

XADD [ECX+4],EBP

Pentium Pro

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-92

XCHG Exchange

100001lw oorrrmmm

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 3

80486 3

Pentium 3

XCHG reg,reg XCHG CL,DL

XCHG BX,DX

XCHG DH,CL

XCHG EBP,EBX

XCHG EAX,EDI

Pentium Pro

8086 17 + ea

8088 25 + ea

80286 5

80386 5

80486 5

Pentium 3

XCHG mem,reg

reg,mern

XCHG DATAJ,CL XCHG BYTES,CX

XCHG NUMBS,ECX

XCHG [EAX],CX

XCHG CL,POPS

Pentium Pro

10010reg

Format Example Microprocessor Clocks

8086 3

8088 3

80286 3

80386 3

80486 3

Pentium 2

XCHG acc,reg

reg.acc

XCHG BX,AX

XCHG AX,DI

XCHG DH,AL

XCHG EDX,EAX

XCHG SI,AX

Pentium Pro

XLAT Translate

11010111

Format Example Microprocessor Clocks

8086 11

8088 11

80286 5

XLAT XLAT

80386 3

Dodatak A

A-93

80486 4

Pentium 4

Pentium Pro

XOR Exclusive-OR

000110dw oorrrmmm disp O D I T S Z A P C

0 * * ? * 0

Format Example Microprocessor Clocks

8086 3

8088 3

80286 2

80386 2

80486 1

Pentium 1or 2

XOR reg,reg XOR CL,DL

XOR AX,DX

XOR CH,CL

XOR EAX,EBX

XOR ESI,EDI

Pentium Pro

8086 16 + aa

8088 24 + ea

80286 7

80386 6

80486 3

Pentium 1 or 3

XOR mem,reg XOR DATAJ,CL

XOR BYTES,CX

XOR NUMBS,ECX

XOR [EAX],CX

Pentium Pro

8086 9 + ea

8088 13 + ea

80286 7

80386 7

80486 2

Pentium 1 or2

XOR reg,mem

XOR CL,DATAL

XOR CX,BYTES XOR ECX,NUMBS

XOR DX,[EBX+EDI]

Pentium Pro

100000sw oo110mmm disp data

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

XOR reg,imm XOR CX,3

XOR DI,1AH

XOR DL,34H

XOR EDX,1345H

80486 1

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-94

Pentium 1or 3 XOR CX,1834H

Pentium Pro

8086 17 + ea

8088 25 + ea

80286 7

80386 7

80486 3

Pentium 1 or3

XOR mem.imm

XOR DATAS,3 XOR BYTE PTR[EDI],1AH

XOR DADDY,34H

XOR LIST,'A'

XORTOAD,1834H Pentium Pro

0010101w data

Format Example Microprocessor Clocks

8086 4

8088 4

80286 3

80386 2

80486 1

Pentium 1

XOR acc,imm

XOR AL,3

XOR AX,1AH

XOR EAX,34H

Pentium Pro

A.4 The instruction set of the arithmetic coprocessor

F2XM1 2ST-1

11011001 11110000

Example Clocks

F2XM1 8087 310-630

80287 310-630

80387 211-476

80486/7 140-279

Pentium 13-57

FABS Absolute value of ST

11011001 11100001

Example Clocks

FABS 8087 10-17

80287 10-17

80387 22

Dodatak A

A-95

80486/7 3

Pentium 1

FADD/FADDP/FIADD Addition

11011000 oo000mmm disp 32-bit memory (FADD)

11011100 oo000mmm disp 64-bit memory (FADD)

11011d00 11000rrr FADD ST,ST(rrr)

11011110 11000rrr FADDP SR,ST (rrr)

11011110 oo000mmm disp 16-bit memory (FIADD)

11011010 oo000mmm disp 32-bit memory (FIADD)

Format Examples Clocks

FADD FADD DATA 8087 70-143

FADDP FADD ST,ST(1) 80287 70-143

FIADD FADDP 80387 23-72

FIADD NUMBER 80486/7 8-20

FADD ST,ST(3)

FADDP ST,ST(2)

FADD ST(2),ST

Pentium 1-7

FCLEX/FNCLEX Clear errors

11011011 11100010

Example Clocks

FCLEX 8087 2-8

FNCLEX 80287 2-8

80387 11

80486/7 7

Pentium 9

FCOM/FCOMP/FCOMPP/FICOM/FICOMP Compare

11011000 oo010mmm disp 32-bit memory (FCOM)

11011100 oo010mmm disp 64-bit memory (FCOM)

11011000 11010rrr FCOM ST(rrr)

11011000 oo011 mmm disp 32-bit memory (FCOMP)

11011100 oo011 mmm disp 64-bit memory (FCOMP)

11011000 11011 rrr FCOMP ST (rrr)

11011110 11011001 FCOMPP

11011110 oo010mmm disp 16-bit memory (FICOM)

11011010 oo010mmm disp 32-bit memory (FICOM)

11011110 oo011mmm disp 16-bit memory (FICOMP)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-96

11011010 oo011mmm disp 32-bit memory (FICOMP)

Format Examples Closks

FCOM FCOM ST(2) 8087 40-93

FCOMP FCOMP, DATA 80187 40-93

FCOMPP FCOMPP 80387 24-63

FICOM FICOM NUMBER 80486/7 15-20

FICOMP FICOMP DATA3 Pentium 1-8

FCOS Cosine of ST

11011001 111111111

Example Clocks

FCOS 8087 -

80287 -

80387 123-772

80486/7 193-279

Pentium 18-124

FDECSTP Decrement stack pointer

11011001 11110110

Example Clocks

FDECSTP 8087 6-12

80287 6-12

80387 22

80486/7 3

Pentium 1

FDISI/FNDISI Disable interrupts

11011011 11100001

(Ignored on the 80287, 80387, 80486/7, and Pentium)

Example Clocks

FDISI 8087 2-8

FNDISI 80287 -

80387 -

80486/7 -

Pentium -

FDIV/FDIMP/FIDIV Division

11011000 oo010mmm disp 32-bit memory (FDIV)

11011100 oo100mmm disp 64-bit memory (FDIV)

11011d00 11111rrr FDIV ST,ST(rrr)

Dodatak A

A-97

11011110 11111rrr FDIVP ST,ST(rrr)

11011110 oo110mmm disp 16-bit memory (FIDIV)

11011010 oo110mmm disp 32-bit memory (FIDIV)

Format Examples Clocks

FDIV FDIV DATA 8087 191-243

FDIVP FDIV ST,ST(3) 80287 191-243

FIDIV FDIVP 80387 88-140

FIDIV NUMBER 80486/7 9-89

FDIV ST,ST(5)

FDIIVP ST,ST(2)

FDIV ST(2), ST

Pentium 39-42

FDIVR/FDIVRP/FIDIVR Division reversed

11011000 oo111mmm disp 32-bit memory (FDIVR)

11011100 oo111mmm disp 64-bit memory (FDIVR)

11011d00 11110rrr FDIVR ST,ST(rrr)

11011110 11110rrr FDIVP ST,ST(rrr)

11011110 oo111mmm disp 16-bit memory (FIDIVR)

11011010 oo111mmm disp 32-bit memory (FIDIVR)

Format Examples Clocks

FDIVR FDIVR DATA 8087 191-243

FDIVRP FDIVR ST,ST(3) 80287 191-243

FIDIVR FDIVRP 80387 88-140

FIDIVR NUMBER 80486/7 9-89

FDIVR ST,ST(5)

FDIIVRP ST,ST(2)

FDIVR ST(2), ST

Pentium 39-42

FENI/FNENI Disable interrupts

11011011 11100000

(Ignored on the 80287, 80387, 80486/7, and Pentium)

Example Clocks

FENI 8087 2-8

FNENI 80287 -

80387 -

80486/7 -

Pentium -

FFREE Free register

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-98

11011101 11000rrr

Format Examples Clocks

FFREE FFREE 8087 9-16

FFREE ST(1) 80287 9-16

FFREE ST(2) 80387 18

80486/8 3

Pentium 1

FINCSTP Increment stack poionter

11011101 11110111

Example Clocks

FINCSTP 8087 6-12

80287 6-12

80387 21

80486/8 3

Pentium 1

FINIT/FNINIT Initialize coprocessor

11011101 11110110

Example Clocks

FINIT 8087 2-8

FNINIT 80287 2-8

80387 33

80486/8 17

Pentium 1

FLD/FILD/FBLD Load data to ST(0)

11011001 oo000mmm disp 32-bit memory (FLD)

11011101 oo000mmm disp 64-bit memory (FLD)

11011011 oo101mmm disp 80-bit memory (FLD)

11011111 oo000mmm disp 16-bit memory (FILD)

11011011 oo000mmm disp 32-bit memory (FILD)

11011111 oo101mmm disp 64-bit memory (FILD)

11011111 oo100mmm disp 80-bit memory (FBLD)

Format Examples Clocks

FLD FLD DATA 8087 17-310

FILD FILD DATA1 82087 17-310

FBLD FBLD DEC_DATA 83087 14-275

Dodatak A

A-99

80486/7 3-103

Pentium 1-3

FLD1 Load +1.0 to ST(0)

11011101 11101000

Example Clocks

FLD1 8087 15-21

80287 15-21

80387 24

80486/7 4

Pentium 2

FLDZ Load +0.0 to ST(0)

11011001 11101110

Examples Clocks

FLDZ 8087 11-17

80287 11-17

80387 20

80486/7 4

Pentium 2

FLDPI Load to ST(0)

11011001 11101011

Examples Clocks

FLDPI 8087 16-22

80287 16-22

80387 40

80486/7 8

Pentium 3-5

FLDL2E Load log2 e to ST(0)

11011001 11101010

Examples Clocks

FLDL2E 8087 15-21

80287 15-21

80387 40

80486/7 8

Pentium 3-5

FLDL2T Load log2 10 to ST(0)

11011001 11101001

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-100

Examples Clocks

FLDL2T 8087 16-22

80287 16-22

80387 40

80486/7 8

Pentium 3-5

FLDLG2 Load log10 2 to ST(0)

11011001 11101000

Examples Clocks

FLDG2 8087 18-24

80287 18-24

80387 41

80486/7 8

Pentium 3-5

FLDLN2 Load loge 2 to ST(0)

11011001 11101101

Example Clocks

FLDLN2 8087 17-23

80287 17-23

80387 41

80486/7 8

Pentium 3-5

FLDCW Load control register

11011001 oo101mmm disp

Format Examples Clocks

FLDCW FLDCW DATA 8087 7-14

FLDCW STATUS 80287 7-14

80387 19

80486/7 4

Pentium 7

FLDENV Load environment

11011001 oo100mmm disp

Format Examples Clocks

FLDENV FLENV ENVIRON 8087 35-45

FLDENV DATA 80287 25-45

80387 71

Dodatak A

A-101

80486/7 34-44

Pentium 32-37

FMUL/FMULP/FIMUL Multiplication

11011000 oo001 mmm disp 32-bit memory (FMUL)

11011100 oo001 mmm disp 64-bit memory (FMUL)

11011d00 11001rrr FMUL ST,ST(rrr)

11011110 11001rrr FMULP ST,ST (rrr)

11011110 oo001 mmm disp 16-bit memory (FIMUL)

11011010 oo001 mmm disp 32-bit memory (FIMUL)

Format Examples Clocks

FMUL FMUL DATA 8087 110-168

FMULP FMUL ST,ST(2) 80287 110-168

FIMUL FMUL ST(2), ST 80387 29-82

FMULP 80486/7 11-27

FIMUL DATA3 Pentium 1-7

FNOP No operation

11011001 11010000

Examples Clocks

FNOP 8087 10-16

80287 10-16

80387 12

80486/7 3

Pentium 1

FPATAN Partial arctangent of ST(0)

11011001 11110011

Examples Clocks

FPATAN 8087 250-800

80287 250-800

80387 314-487

80486/7 218-303

Pentium 17-173

FPREM Partial remainder

11011001 11111000

Examples Clocks

FPREM 8087 15-190

80287 15-190

80387 74-155

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-102

80486/7 70-138

Pentium 16-64

FPREM1 Partial remainder(IEEE)

11011001 11110101

Examples Clocks

FPREM1 8087 -

80287 -

80387 95-185

80486/7 72-167

Pentium 20-70

FPTAN Partial tangent of ST(0)

11011001 11110010

Examples Clocks

FPTAN 8087 30-450

80287 30-450

80387 191-497

80486/7 200-273

Pentium 17-173

FRNDINT Round ST(0) to an integer

11011001 11111100

Examples Clocks

FRNDINT 8087 16-50

80287 16-50

80387 66-80

80486/7 21-30

Pentium 9-20

FRSTOR Restore state

11011101 oo110 mmm disp

Format Examples Clocks

FRSTOR FRSTOR DATA 8087 197-207

FRSTOR STATE 80287 197-207

FRSTOR MACHINE 80387 308

80486/7 120-131

Pentium 70-95

FSAVE/FNSAVE Save machine state

11011101 oo110 mmm disp

Dodatak A

A-103

Format Examples Clocks

FSAVE FSAVE STATE 8087 197-207

FNSAVE FNSAVE STATUS 80287 197-207

FSAVE MACHINE 80387 375

80486/7 143-154

Pentium 124-151

FSCALE Scale ST(0) by ST(1)

11011001 11111101

Examples Clocks

FSCALE 8087 32-38

80287 32-38

80387 67-86

80486/7 30-32

Pentium 20-31

FSETPM Set protected mode

11011011 11100100

Examples Clocks

FSETPM 8087 -

80287 2-18

80387 12

80486/7 -

Pentium -

FSIN Sine of ST(0)

11011001 11111110

Examples Clocks

FSINN 8087 -

80287 -

80387 122-771

80486/7 193-279

Pentium 16-126

FSINCOS Find sine and cosine of ST(0)

11011001 11111011

Examples Clocks

FSINCOS 8087 -

80287 -

80387 194-809

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-104

80486/7 243-329

Pentium 17-137

FSQRT Square root of ST(0)

11011001 11111010

Examples Clocks

FSQRT 8087 180-186

80287 180-186

80387 122-129

80486/7 83-87

Pentium 70

FST/FSTP/FIST/FISTP/FBSTP Store

11011001 oo010 mmm disp 32-bit memory (FST)

11011101 oo010 mmm disp 32-bit memory (FST)

11011101 11010 rrr FST ST(rrr)

11011011 oo011 mmm disp 32-bit memory (FSTP)

11011011 oo011 mmm disp 64-bit memory (FSTP)

11011101 oo111 mmm disp 32-bit memory (FSTP)

11011111 11001 rrr FSTP ST(rrr)

11011001 oo010 mmm disp 16-bit memory (FIST)

11011011 oo010 mmm disp 32-bit memory (FIST)

11011111 oo011 mmm disp 16-bit memory (FISTP)

11011011 oo011 mmm disp 32-bit memory (FISTP)

11011111 oo111 mmm disp 64-bit memory (FISTP)

11011111 oo110 mmm disp 80-bit memory (FBSTP)

Format Examples Clocks

FST FST DATA 8087 15-540

FSTP FST ST(3) 80287 15-540

FIST FST 80387 11-534

FISIT FSTP 80486/7 3-176

FBSTP FIST DATA2 Pentium 1-3

FBSTP DATA6

FISTP DATA8

FSTCW/FNSTCW Store control register

11011001 oo111 mmm disp

Format Examples Clocks

FSTCW FSTCW CONTROL 8087 12-18

Dodatak A

A-105

FNSTCW FNSTCW STATUS 80287 12-18

FSTCW MACHINE 80387 15

80486/7 3

Pentium 2

FSTENV/FNSTENV Store environment

11011001 oo110 mmm disp

Format Examples Clocks

FSTENV FSTENV CONTROL 8087 40-50

FNSTENV FNSTENV STATUS 80287 40-50

FSTENV MACHINE 80387 103-104

80486/7 58-67

Pentium 48-50

FSTSW/FNSTSW Store status register

11011101 oo111 mmm disp

Format Examples Clocks

FSTSW FSTSW CONTROL 8087 12-18

FNSTSW FNSTSW STATUS 80287 12-18

FSTSW MACHINE 80387 15

FSTSW AX 80486/7 3

Pentium 2-5

FSUB/FSUBP/FISUB Subtraction

11011000 oo100 mmm disp 32-bit memory (FSUB)

11011100 oo100 mmm disp 64-bit memory (FSUB)

11011d00 11101 rrr FSUB ST,ST(rrr)

11011110 11101 rrr FSUBP ST,ST(rrr)

11011110 oo100 mmm disp 16-bit memory (FISUB)

11011010 oo100 mmm disp 32-bit memory (FISUB)

Format Examples Clocks

FSUB FSUB DATA 8087 70-143

FSUBP FSUB ST,ST(2) 80287 70-143

FISUB FSUB ST(2), ST 80387 29-82

FSUBP DATA3 80486/7 8-35

FSUBP Pentium 1-7

FSUBR/FSUBRP/FISUBR Reverse subtraction

11011000 oo101 mmm disp 32-bit memory (FSUBR)

11011100 oo101 mmm disp 64-bit memory (FSUBR)

11011d00 11100 rrr FSUBR ST,ST (rrr)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-106

11011110 11100 rrr FSUBRP ST,ST(rrr)

11011110 oo101 mmm disp 16-bit memory (FISUBR)

11011110 oo101 mmm disp 32-bit memory (FISUBR)

Format Examples Clocks

FSUBR FSUBR DATA 8087 70-143

FSUBRP FSUBR ST, ST(2) 80287 70-143

FISUBR FSUBR ST(2), ST 80387 29-82

FSUBRP 80486/7 8-35

FISUBR DATA3 Pentium 1-7

FTST Compare ST(0) with + 0.0

11011001 11100100

Examples Clocks

FTST 8087 38-48

80287 38-48

80387 28

80486/7 4

Pentium 1-4

FUCOM/FUCOMP/FUCOMPP Unordered compare

11011101 11100 rrr FUCOM ST,ST(rrr)

11011101 11101 rrr FUCOMP ST,ST(rrr)

11011101 11101001 FUCOMPP

Format Examples Clocks

FUCOM FUCOM ST,ST(2) 8087 -

FUCOMP FUCOM 80287 -

FUCOMPP FUCOMP ST, ST(3) 80387 24-26

FUCOMP 80486/7 4-5

FUCOMPP Pentium 1-4

FWAIT Wait

10011011

Examples Clocks

FWAIT 8087 4

80287 3

80387 6

80486/7 1-3

Pentium 1-3

FXAM Examine ST(0)

11011001 11100101

Dodatak A

A-107

Examples Clocks

FXAM 8087 12-23

80287 12-23

80387 30-38

80486/7 8

Pentium 21

FXCH Exchange ST(0) with another register

11011001 111001 rrr FXCH ST, ST(rrr)

Format Examples Clocks

FXCH FXCH ST,ST(1) 8087 10-15

FXCH 80287 10-15

FXCH ST,ST(4) 80387 18

80486/7 4

Pentium 1

FXTRACT Extract components of ST(0)

10011011 11110100

Examples Clocks

FXTRACT 8087 27-55

80287 27-55

80387 70-76

80486/7 16-20

Pentium 13

FYL2X ST(1) x log/2 ST(0)

11011001 11110001

Examples Clocks

8087 900-1100

80287 900-1100

80387 120-538

80486/7 196-329

FYL2X

Pentium 22-111

FXL2XP1 ST(1) * log2 [ST(0) + 1.0]

11011001 11111001

Examples Clocks

8087 700-1000

80287 700-1000

80387 257-547

FXL2XP1

80486/7 171-326

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-108

Pentium 22-103

Pregled instrukcija mikroprocesora iz familije 80x86

U tekstu koji sledi dat je evolutivni pregled instrukcija mikroprocesora 80x86 po~ev od 8086 do Pentium-a. Skup instrukcija ~ini est glavnih grupa instrukcija.

1. Instrukcije za prenos podataka

Instrukcije iz ove grupe se koriste za kopiranje podataka izmedju registara, memorije i spoljnjeg sveta. Takodje, neke od instrukcija manipuliu magacinom, dok se druge mogu koristiti za promenu vrednosti markera uslova.

Instrukcije za prenos podataka su:

IN Input byte or word from port

LAHF Load AH from flags

LDS Load pointer using data segment

LEA Load effective address

LES Load pointer using extra segment

MOV Move to/from register/memory

OUT Output byte or word to port

POP Pop word off stack

POPF Pop flags off stack

PUSH Push word onto stack

PUSHF Push flags onto stack

SAHF Store AH into flags

XCHG Exchange byte or word

CLAT Translate byte

Dodatne 80286 instrukcije:

INS Input string from port

OUTS Ouput string to port

POPA Pop all registers

PUSHA Push all registers

Dodatak A

A-109

Dodatne 80386 instrukcije:

LFS Load pointer using FS

LGS Load pointer using GS

LSS Load pointer using SS

MOVSX Move with sign extended

MOVZX Move with zero extended

POPAD Pop all double (32-bit) registers

POPD Pop double register

POPFD Pop double flag register

PUSHAD Push all double registers

PUSHD Push double register

PUSHFD Push double flag register

Nova 80486 instrukcija:

BSWAP Byte swap

Nova Pentium instrukcija:

MOV Move to/from control register

2. Aritmeti~ke instrukcije

Skoro sve instrukcije iz ove grupe manipuliu nad podacima tipa bajt ili re~. Pored operacija sabiranja i oduzimanja, postoje i instrukcije za mno`enje i deljenje. Operacije sabiranja i oduzimanja se mogu izvravati nad binarnim i BCD operandima.

Aritmeti~ke instrukcije su:

AAA ASCII adjust for addition

AAD ASCII adjust for division

AAM ASCII adjust for multiply

AAS ASCII adjust for subtraction

ADC Add byte or word plus carry

ADD Add byte or word

CBW Convert byte or word

CMP Compare byte or word

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-110

CWD Convert word to double-word

DAA Decimal adjust for addition

DAS Decimal adjust for subtraction

DEC Decrement byte or word by one

DIV Divide byte or word (unsigned)

IDIV Integer divide byte or word

IMUL Integer multiply byte or word

INC Increment byte or word by one

MUL Multiply byte or word (unsigned)

NEG Negate byte or word

SBB Subtract byte or word and carry

SUB Subtract byte or word

Dodatne 80386 instrukcije:

DCQ Convert double word to quad word

CWDE Convert word to dobule word

Dodatne 80486 instrukcije:

CMPXCHG Compare and exchange

XADD Exchange and add

Nova Pentium instrukcija:

CMPXCHG8B Compare and exchange 8 bytes

3. Instrukcije koje manipuliu sa bitovima

Instrukcije koje su u stanju da obavljaju logi~ke operacije, operacije pomeranja i rotiranja, pripadaju ovoj grupi. Veliki broj Bulovih operacija (AND, OR, NOT, ...) pripadaju logi~kim instrukcijama. Ove, kao i instrukcije pomeranja i rotiranja, operiu nad bajtovima ili re~ima. Kod mikroprocesora 80386 pa navie, postoje instrukcije koje manipuliu nad sadr`ajem jedinstvenog bita.

Instrukcije koje manipuliu sa bitovima su:

AND Logical AND of byte or word

OR Logical OR of byte or word

Dodatak A

A-111

RCL Rotate left through carry byte or word

ROL Rotate left byte or word

ROR Rotate right byte or word

SAL Arithmetic shift left byte or word

SAR Arithmetic shift right byte or word

SHR Logical shift right byte or word

SHL Logical shift left byte or word

TEST Test byte or word

XOR Logical exclusive-OR of byte or word

Dodatne 80386 instrukcije:

BSF Bit scan forward

BSR Bit scan reverse

BT Bit test

BTC Bit test and complement

BTR Bit test and reset

BTS Bit test and set

SHLD Shift left double precision

SHRD Shift right double precision

SETcc Set byte on condition

4. Instrukcije za manipulaciju sa nizovima

Komande koje izdaje korisnik kao i odgovarajui odzivi, naj~ee se kodiraju kao niz ASCII znakova koji se mogu procesirati korektnim izborom instrukcija koje manipuliu sa nizovima.

Instrukcije koje manipuliu sa nizovima su:

CMPS Compare byte or word string

LODS Load byte or word string

MOVS Move byte or word string

MOVSB(MOVSW) Move byte string(word string)

REP Repeat

REPE (REPZ) Repeat while equal (zero)

REPNE (REPNZ) Repeat while not equal (not zero)

SCAS Scan byte or word string

SSTOS Store byte or word string

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-112

5. Instrukcije za upravljanje tokom programa

U ovu grupu spadaju sve instrukcije tipa jump, loop, call, interrupt call. Najvei deo instrukcija tipa jump su uslovne instrukcije grananja koje testiraju postavljenost (stanje) markera uslova.

Programsko-upravlja~ke instrukcije su:

CALL Call procedure (subroutine)

INT Interrupt

INTO Interrupt if overflow

IRET Return from interrupt

JA (JNBE) Jump if above (not below nor equal)

JAE (JNB) Jump if above or equal (not below)

JB (JNAE) Jump if below (not above nor equal)

JBE (JNA) Jump if below or equal (not above)

JC Jump if carry set

JCXZ Jump if CX equals zero

JE (JZ) Jump if equal (zero)

JG (JNLE) Jump if greater (not less nor equal)

JGE (JNL) Jump if greater or equal (not less)

JL (JNGE) Jump if less (not greater nor equal)

JLE (JNG) Jump if less or equal (not greater)

JMP Unconditional jump

JNC Jump if no carry

JNE (JNZ) Jump if not equal (not zero)

JNO Jump if no overflow

JNP (JPO) Jump if no parity (parity odd)

JNS Jump if no sign

JO Jump if overlow

JP (JPE) Jump if no parity (parity even)

JS Jump if sign

LOOP Loop unconditional

LOOP (LOOPZ) Loop if equal (zero)

LOOPNE (LOOPNZ)

Loop if not equal (not zero)

RET Return from procedure (subroutine)

Dodatak A

A-113

Dodatne 80286 instrukcije:

BOUND Check index against array bounds

ENTER Enter a procedure

LEAVE Leave a proceure

Dodatne 80386 instrukcije:

IRETD Interrupt return

JECXZ Jump if ECX is zero

6. Instrukcije za upravljanje radom procesora

Instrukcije iz ove grupe imaju efekat na rad procesora. Vei broj instrukcija iz ove grupe manipulie sa markerima.

Instrukcije za upravljanje radom procesora su:

CLC Clear carry flag

CLD Clear direction flag

CLI Clear interrupt enable flag

CMC Complement carry flag

ESC Escape to external processor

HLT Halt processor

LOCK Lock bus during next instruction

NOP No operation

STC Set carry flag

STD Set direction flag

STI Set interrupt enable flag

WAIT Wait for TEST pin activity

Dodatne 80286 instrukcije (samo za zatieni na~in rada):

ARPL Adjust requested privilege level

CLTS Clear task switched flag

LAR Load access rights

LGDT Load global descriptor table

LIDT Load interrupt descriptor table

Zbirka zadataka iz Mikroprocesora i mikrora~unara

A-114

LLDT Load Local descriptor table

LMSW Load machine status word

LSL Load segment limit

LTR Load task register

SGDT Store global descriptor table

SIDT Store interrupt descriptor table

SLDT Store local descriptor table

SMSW Store machine status word

STR Store task register

VERR Verify segment for reading

VERW Verify segment for writing

Dodatne 80486 instrukcije:

INVD Invalidate cache

INVLPG Invalidate TLB entry

WBINVD Write back and invalidate cache

Nove Pentium instrukcije:

CPUID CPU identification

RDMSR Read from model-specific register

RDTSC Read from time stamp counter

RSM Resume from system management mode

WRMSR Write to model-specific register

Dodatak B

B-1

B. DODATAK: OSNOVA DOS -a

ö õ

Sekcija B.1 -- UVOD U DOS

Jedan od programa koje ra~unar izvrava je master, ili glavni program. ovaj program nam obezbe|uje uslove da se i drugi programi mogu bez velikih problema izvravati. Uobi~ajeno, master program nazivamo operativni sistem. Kada se govori o peresonalnim ra~unarima, poznatiji operativni sistemi su MS-DOS (ili PC-DOS), ), OS-2, Windows, Linux i dr. Operativni sistem uobi~ajeno se mo`e: (a) nalaziti na jednom od flopi disk jedinica, (b) nalaziti na hard (krutom) disku - ova verzija je rezidentna, (c) memorisati u ROM prostor ra~unara - rezidentna verzija, (d) napuniti preko lokalne ra~unarske mre`e (LAN). Svaki put kada se ra~unar uklju~i na napajanje, ili se resetuje, operativni sistem se ~ita sa diska (flopi ili krutog), ROM-a, ili LAN-a i smeta u memoriju. Ova operacija se naziva boot-ovanje sistema. U daljem tekstu ograni~iemo se na objanjenja koja se odnose na operativni sistem DOS. (Napomenimo da je DOS od poznatijih, iroko apliciranih, operativnih sistema jedan od najjednostavnijih pa je sa ta~ke gledita edukacije, to se po~etnika ti~e, najopravdanije prvo njega izu~avati). Nakon punjenja u memoriju, DOS koristi usluge fajla CONFIG.SYS. Ovaj fajl specificira razli~ite pokreta~ke programe (drajvere), koji se pune u memoriju i na taj na~in u~estvuju u konfigurisanju maine. Ilustracije radi na Slici B.1 prikazana je lista CONFIG.SYS fajla kod DOS-ove verzije 5.0 Prva ~etiri iskaza u CONFIG.SYS fajla sa Slike B.1 postavljaju broj fajlova, bafera, magacina i fajl upravlja~kih blokova potrebnih za izvrenje razli~itih programa. Vrednosti na koje se oni postavljaju treba da su u skladu sa potrebama programa i mogu se menjati u zavisnosti od potreba. Komanda SHELL specificira koji interpreter komandi (komandni procesor) koristi DOS. U konkretnom slu~aju kao interpreter komandi se koristi program COMMAND.COM. Prekida~ (switch) E:256 odredjuje da obim (bloka) okru`enja bude 256 bajtova, a prekida~/P ukazuje da se COMMAND.COM permanentno nalazi u memoriji. Za slu~aj da COMMAND.COM nije permanentan u memoriji, uvek kada se DOS vrati na komandni prompt, on se mora sa diska puniti u memoriju. Ovakav re`im rada i pored toga to oslobadja odredjeni iznos memorije ima sledee ozbiljne nedostatke: (a) dovodi do stalnog obraanja disku - disk je mehani~ka jedinica koja se ~esto kvari; i (b) produ`ava vreme potrebno za povratak na DOS prompt -usporava rad sistema. U primeru sa Slike B.1 prvi DEVICE (drajver) koji se puni u memoriju je HIMEM.SYS (high MEMory driver). Pokreta~ki program (driver) je program koji upravlja radom nekog uredjaja ili

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-2

program koji mora biti prisutan u memoriji ra~unara. Program HIMEM.SYS obezbedjuje da se memorija ra~unara obima 1 MB proiri za iznos 66520 bajtova, tj. na 1 MB + 65519 B. Iznos od 65520 bajtova koji se nalazi u opsegu od adrese 10 0000 h do 10 FFFF naziva se expanded memory ili alternativno HMA (High Memory Area). HMA ~uva najvei deo programa DOS-ovih verzija 5.0 ili 6.2.

REM DOS VERSION 5.0 CONFIG.SYS FILE REM FILES=30 BUFFERS=30 STACKS=64,128 FCBS=48 SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:256 /P

DEVICE=C:\DOS\HIMEM.SYS

DOS=HIGH, UMB

DEVICE=C:\DOS\EMM386.EXE I=C800-EFFF NOEMS

DEVICEHIGH SIZE=1EB0 C:\LASERLIB\SONY_CDU.SYS

DEVICEHIGH SIZE=0190 C:\DOS\SETVER.EXE

DEVICEHIGH SIZE=3150 C:\MOUSE1\MOUSE.SYS

LASTDRIVE=F

Slika B.1 CONFIG.SYS fajl kod DOS verzije 5.0

Naredna komanda DOS = HIGH, UMB, ukazuje ra~unaru da napuni DOS u vii deo memorije (HIGH) i obezbedi korienje blokova koji su locirani u viem delu memorije (UMB - Upper Memory Blocks). Korienje blokova koji su locirani u viem delu memorije dostupno je samo kod procesora 80386/80486/Pentium/Pentium-Pro uz pomo programa EMM386.EXE (Extended Memory Manager). EMM386.EXE je pokreta~ki program koji emulira HMA memorijsku oblast u XMA memorijsku oblast (XMA-eXtended Memory Area), a takodje, obezbedjuje uslove za rad sa extended memorijskim sistemom. Prekida~ I=C800-EFFF ukazuje programu EMM386.EXE da koristi memoriju po~ev od lokacije C8000h-EFFFFh kao vii deo memorije ili kao blokove locirane u viem delu memorije (UMB). Punjenjem pokreta~kih programa u viem delu memorije oslobadja se vie prostora u TPA oblau za potrebe aplikacionih programa. Ali pre korienja prekikda~a I=C800-EFFF moramo biti sigurni da u ovoj memorijskoj oblasti ra~unar nema instaliranu neku ROM/RAM oblast koju ve koristi. NOEMS ukazuje programu EMM386.EXE da ne uklju~i HMA oblast. Danas najvei broj ra~unara ne koristi HMA oblast. Komanda DEVICEHIGH puni pokreta~ke programe i programe u blokove locirane u viem delu memorije koji su dodeljeni od strane EMM386.EXE. U konkretnom slu~aju sa Slike B.1, po~ev od lokacije C8000h instalirana su tri pokreta~ka programa (drajvera). Prvi se odnosi na pokretanje SONY CDROM drajva, drugi puni program nazvan SETVER, a trei puni pokreta~ki program MOUSE. Zadnji iskaz u CONFIG.SYS fajlu sa Slike B.1 je iskaz LASTDRIVE. Ovaj iskaz ukazuje DOS-u koji je zadnji disk uredjaj povezan na ra~unarski sistem. U konkretnom slu~aju (Slika B.1) to je disk F. Mogue je, takodje, koristei COFIGF.SYS fajl, napuniti i druge pokreta~ke programe u

Dodatak B

B-3

memoriju. Tipi~ni takvi drajveri su PRINT.SYS, ANSI.SYS. Uobi~ajeno je da pokreta~ki programi imaju pridru`enu DOS ekstenziju SYS. Uvek kada DOS startuje sa radom, interpreter komandi, COMMAND.COM, proverava da li postoji inicijalna instrukcija za njega. Naime, proverava da li postoji instaliran specijalni batch fajl koji se naziva AUTOEXEC.BAT. Ako DOS ne pronadje fajl sa tim imenom, on poziva svoje dve, po definiciji ugradjene, komande DATE i TIME. Kada se fajl AUTOEXEC.BAT pronadje tada se u okviru start-up procedure, izvravaju samo one komande koje su sastavni deo batch fajla. To zna~i da DOS po automatizmu, u okviru start-up rutine, ne izvrava DATE i TIME programe. Za slu~aj da `elimo postaviti datum i vreme, tada programi DATE i TIME moraju biti uklju~eni u AUTOEXEC.BAT fajl. Na Slici B.2 prikazan je jedan tipi~an AUTOEXEC.BAT fajl koji va`i za verzije DOS-a 5.0 ili 6.0. Naravno da su varijacije AUTOEXEC.BAT fajla mogue. Ono to je klju~no da se zna je sledee: AUTOEXEC.BAT fajl sadr`i komande koje se izvravaju nakon uklju~enja sistema na napajanje. Obi~no su to one komande koje nakon uklju~enja treba uvek ukucavati preko tastature sa ciljem da se sistem pokrene. Izvrenjem AUTOEXEC.BAT tedi se kako vreme, tako i napor projektanta da se obavi ta aktivnost.

PATH C:\DOS; C:\MASM\BIN; C:\MASM\BINB\; C:\UTILITY PATH C:\WS; C:\LASERLIB SET BLASTER=A220 I7 D1 T3 SET INCLUDE=C:\MASM\INCLUDE\

SET HELPFILES=C:\MASM\HELP\*.HLP SET INIT C:\MASM\INIT\ SET ASMEX=C:\MASM\SAMPLES\ SET TMP=C:\MASM\TMP SET SOUND=C:\SB LOADHIGH C:\LASERLIB\MSCDEX.EXE /D:SONY_001 /L:F /M:10 LOADHIGH C:\LASERLIB\LLTSR.EXE ALT-Q LOADHIGH C:\DOS\FASTOPEN C:=256 LOADHIGH C:\DOS\DOSKEY /BUFSIZE=1024 LOADHIGH C:\LASERLIB\PRINTF.COM DOSKEY GO=DOSSHELL DOSSHELL

Slika B.2 Struktura jednog tipi~nog AUTOEXEC.BAT fajla

Uvek kada se u komandnoj liniji otkuca ime programa tada iskaz PATH specificira putokaze (puteve pretra`ivanja). Na primer, ako se u komandnoj liniji otkuca MILE1 maina prvo pretra`uje C:\DOS, nakon toga root direktorijum C:\, zatim C:\MASM\BIN, i tako dalje sve dok se ne pronadje program pod imenom MILE1. Ako se program pod tim imenom ne pronadje, tada interpreter komandi COMMAND.COM obavetava korisnika da taj program nije pronadjen. Prvom konadom SET postavlja se okru`enje za karticu sound blaster. Druga postavlja INCLUDE za put C:\MASM\INCLUDE. Uka`imo da su kodovi SET iskaza smeteni (memorisani) u DOS-om prostoru okru`enja. Ovaj prostor se rezervie u CONFIG.SYS fajlu uz pomo iskaza SHELL.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-4

Kada obim okru`enja postane suvie veliki tada je potrebno promeniti iskaz SHELL kako bi se okru`enju dodelilo bie prostora. LOADHIGH ili LH smeta programe u blokovima lociranim u viem delu memorije definisanih od strane EMM386.EXE programa. (Va`i za ra~unare kod kojih je instalirana CPU 386, 486, Pentium ili Pentium Pro). Zadnja komanda u fajlu EUTOEXEC.BAT, sa Slike B.2, je DOSSHELL Program DOSSHELL je u sutini program tipa meni koji postoji kod MSDOS verzija 5.0 ili 6.x. ^esto se zadnje dve komande sa Slike B.2 zamenjuju sledeim

DOSKEY GO = C:\ WINDOWS\WIN /3 GO Program DOSKEY definie makro naredbu za re~ GO. U konkretnom slu~aju re~ GO se dodeljuje nizu znakova C:\WINDOWS\WIN /3. To zna~i da e program COMMAND.COM uvek interpretirati re~ GO na taj na~in to e izvriti taj program uvek kada se preko tastature nakon pojave DOS prompt-a otkuca re~ GO. Zadnja komanda nakon toga izvrava Windows. Drugim re~ima nakon izvrenja fajlova CONFIG.SYS i AUTOEXEC.BAT, ime programa koje je u AUTOEXEC.BAT kao zadnje prikazuje po~inje da se izvrava. U slu~aju sa Slike B.2 to je DOSSHELL program, a sa Slike B.3 izvrie se Windows.

Pogled na DOS

Na Slici B.3 prikazan je pogled na MS DOS sistem. Da bi ovaj model mogli efikasnije da koristimo neophodno je poznavati mnogo vie detalja o korienju: (a) BIOS-a i DOS-a kod izvrenja U/I-a; (b) kako DOS puni i izvrava programe u memoriju; i (c) ta se smeta u memoriju PC-a u toku izvrenja programa. Kada se MS-DOS PC maina uklju~i na napajanje, ona automatski po~inje da izvrava kod sa fiksne memorijske lokacije. Prvo se pune registri procesora CS i IP na vrednosti FFFFh i 0000h respektivno to dovodi da se prvo pristupa fizi~koj adresi FFFF0h. Lokacija FFFF:0000 se nalazi u ROM-u, a program smeten u memoriji po~ev od te lokacije ~ini skup rutina koje testiraju integritet razli~itih hardverskih celina sistema. Ova aktivnost je poznata kao power-on-self-test (POST), tj. korak 1 na Slici B.4.

Dodatak B

B-5

SYSINIT

ROM BIOS

Power On Self Test (POST)

ROM bootstrap

Video memorija i drugi ROM-ovi

Disk bootstrap

COMMAND.COM(rezidentni)

Drajveri uredjajakoji se instaliraju

File Control Blocks (FCB)

Disk baferi

MD-DOS kernel

SYSINIT(relocirajui)

DOS-BIOS interfejs

BIOS oblastpodataka

Vektori prekida Vektori prekida

BIOS oblastpodataka

DOS-BIOS interfejs

MD-DOS kernel

Disk baferi

FCBs

Drajveri uredjajakoji se instaliraju

COMMAND COM (rezidentni)

Video memorija i drugi ROM-ovi

COMMAND COM (rezidentni)

IO.SYS

boot sector

MSDOS.SYS

ROMBIOS

3

6

Preklapa se satranzijentnim delomCOMMAND.COM

2

6

Vrh memorijeVrh memorije

0

400H

600H

A0000H

0

400H

600H

A0000H

Memorija

boot drajv

1

5

4

Slika B.3 Ukupni pogled na MS-DOS sistem sa aspekta programa i U/I uredjaja

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-6

ROM BIOS(osnovni U/Isistem)

video memorija

prostor zakorisni~kiprogram

operativnisistem

(MS DOS)

CPU

serijski port

tampa~

disk

tastatura

prikaz

periferije0

640k

1024k

Slika B.4 MS DOS-ov boot proces i kona~ni izgled memorije Nakon uspenog zavretka POST-a po~inje izvrenje ROM bootstrap rutine. (Bootstrap rutina je mala programska celina kojom se puni program velikog obima u RAM. Ova rutina kopira sektor 1 na pisti 0 (track 0), koga nazivamo boot sektor, sa flopi disk drajva A (ili hard disk drajva C za slu~aj da je drajv A prazan) u RAM prostor i prelazi (jump) na izvrenje ovog programa (korak 2 na Slici B.4).). Boot sektor ~uva informaciju o MS-DOS-ovom fajl sistemu koji se nalazi na tom drajvu, a takodje sadr`i jo jedan bootstrap program. Ovim bootstrap programom pretra`uje se informacija o fajlovima poznatim kao IO.SYS i MSDOS.SYS. Ako se ovi fajlovi ne pronadju na disketi/disku tada se na ekranu displeja ispisuje poruka

Non-System disk or disk error Replace and strike any key when ready

Ako se fajlovi MSDOS.SYS i IO.SYS pronadju, tada se oni pune u memoriju, a nakon punjenja, upravljanje se prenosi modulu IO.SYS (korak 3 na Slici B.4). Kod IO.SYS-a ~ine dve celine: SYSINIT i DOS BIOS (Uo~imo sa Slike B.4 da postoji i deo BIOS-a koji je smeten u ROM prostoru). DOS BIOS ~ine pokreta~ki programi uredjaja (device drivers), tj. programi koji obezbedjuju standardni mehanizam za komuniciranje sa hardverskim uredjajima kao to su tastatura, ekran (CON), serijski portovi (COM1 i COM2) i disk drajvovi. Kod SYSINIT modula, kao to i samo ime ukazuje, obavlja inicijalizaciju MS-DOS kernela (jezgra). Naime, postavljaju se na po~etne vrednosti kako interne tabele, tako i radne oblasti. Ove tabele i oblasti koristi MS-DOS u toku izvrenja raznih zadataka. Kao prvo, kopira se (smeta) MS-DOS kernel (korak 4 na Slici B.4). Zatim se postavljaju interne tabele, koje se koriste od strane MS-DOS-a i obavlja ostala inicijalizacija sistema. Nakon sprovedene inicijalizacije MS DOS i U/I fajl servisi postaju dostupni modulu SYSINIT. Modul SYSINIT koristi DOS fajl usluge da bi otvorio i procesirao sadr`aj CONFIG.SYS fajla. Kao to su ve napomenuli, fajl CONFIG.SYS sadr`i specifikaciju svih instaliranih pokreta~kih programa (to su pokreta~ki programi onih uredjaja koji su instalirani u sistem pri kupovini ili dodatnoj instalaciji). Pomou komandi BUFFERS= i FILES=, modul SYSINIT dodeljuje memoriju za potrebe ke-bafera (koriste se kod prenosa podataka sa/ka disku) i potreba internih fajl upravlja~kih blokova. Nakon toga pune se pokreta~ki programi, specificirani iskazom DEVICE =, zatvara CONFIG.SYS fajl i dozvoljava rad uredjajima tipa konzola (CON:), tampa~ (PRN:) i pomoni (AUX:). U daljem toku, SYSINIT puni i izvrava MS-DOS-ov interpreter komandi COMMAND.COM (koraci 5 i 6 na Slici B.4). Treba naglasiti da je pomou iskaza SHELL = <name> u CONFIG.SYS fajlu mogue specificirati i neki drugi interpreter komandi. Izgled memorijske mape nakon ove

Dodatak B

B-7

aktivnosti bie kao onaj na Slici B.4. Kao to se vidi sa Slike B.program COMMAND.COM ~ine dve celine, tranzijentni i rezidentni deo. Sastavni deo programa COMMAND.COM je inicijalizaciona sekcija koja izvrava komande prisutne u AUTOEXEC.BAT - fajlu. Memorija koja se koristi od strane tranzijentnog dela COMMAND.COM programa oslobadja se kod punjenja i izvravanja korisni~kih programa. Rezidentni deo programa COMMAND.COM ponovo puni tranzientni deo nakon zavretka korisni~kog programa.

Mapa memorije kod MS-DOS-a

Godine1981, kada se prvi put pojavio, operativni sistem DOS je bio projektovan da se izvrava na IBM PC maini zasnovanoj na mikroprocesoru 8088 koji ima 20-bitnu adresnu magistralu, pa je zbog toga memorija bila ograni~ena na prostor obima 1MB. Kao to se vidi sa Slike B.5 projektanti IBM-a su podelili adresni prostor veli~ine 1MB na nekoliko specifi~nih blokova.

BIOS RAM

ne koristi se

ROM krutog diska

ne koristi se

bafer prikaza

memorijakorisnika

okru`enje

command.com

DOS

1 MB

384 kB specijalna memorija(sistemska oblast)

640 kB korisni~ka memorija(tranzijentna oblast)

Slika B.5 Memorijska mapa mikroprocesora 8086 koji izvrava MS-DOS

Ukupni prostor od 1MB, globalno posmatrano, je bio podeljen na dva dela, i to: (a) 640MB RAM-a korisni~ka memorija; i (b) 384kB rezervisana za ROM funkcije- upravlja~ki programi za video sistem, kontroler krutog (~vrstog) diska, i osnovni ulazno/izlazni sistem (BIOS). U trenutku kada se prva PC maina pojavila na tr`itu (1981 god) adresni prostor od 640kB RAM-a izgledao je kao suvie veliki. Naime svi dotadanji 8-bitni ra~unari imali su 16-bitnu adresnu magistralu, a shodno tome i memorijski prostor ograni~en na 64kB. Napredak tehnologije je uslovio da se dananje PC maine zasnivaju na procesorima tipa 386, 486, Pentium i Pentium Pro, kod kojih je adresna magistrala 32 bitna (a kod nekih i 36-bitna). U poredjenju sa 8088 ovi procesori mogu da adresiraju vei memorijski prostor za 65536 puta. No nezavisno od toga, da bi sa~uvali kompatibilnost sa prethodnim verzijama DOS-a, ovi veoma moni procesori su uslovljeni da rade u Realnom na~inu rada (Real Mode), kod kojih je memorija ograni~ena na prostor od 1MB. Naravno da je memorijska mapa dananjih PC maina (Slika B.6) zasnovana pre svega na procesorima 80386 - Pentium Pro pretrpela izmene u odnosu na prvobitnu sa Slike B.1. Kod personalnih ra~unara tipa IBM PC XT (zasnovani na 8088) oblast XMA ne postoji. Memorija do 1MB se obi~no naziva realna, iz razloga to su Intelovi mikroprocesori projektovani da rade u ovoj oblasti u realnom na~inu rada. Personalni ra~unari zasnovani na 80286 do Pentium Pro sadr`e sve tri oblasti (TPA, sistemska i XMA). Ove maine se ~esto nazivaju maine klase AT.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-8

XMA

HMA

sistemska oblast(386 kB)

TPA(640 kB)

1MB+66520B

1MB

640 kB

0

1MBrealna

UMA (Upper Memory Area)

konvencionalna

15MB kod 80286 ili 80386SX31MB kod 80386 SL/SLC63MB kod 80386 EX4095MB kod 80386DX, 80486 i Pentium64GB kod Pentium Pro

Slika B.6 Memorijska mapa kod dananjih PC maina Napomena: HMA - High Memory Area; XMA - Extended Memory Area; ^esto se memorija od 0-640kB naziva konvencionalna a od 640kB - 1MB UMA; termin TPA se odnosi na Transient Program Area

MS-DOS funkcije i BIOS servisi

Jedna od najva`nijih osobina bilo kog operativnog sistema predstavlja softverska podrka koju on nudi korisnicima koji razvijaju programe. Na primer, skoro kod svih programa koji se izvravaju na PC maini postoji potreba za unos podataka preko tastature. Jedan od na~ina da se prihvataju podaci sa ulaza je da se napie program koji e ~itati podatke sa U/I-og porta na kome je povezana tastatura. S obzirom da su programi ovakvog tipa, i sli~ni njima, potrebni skoro kod svakog ra~unarskog sistema logi~ki se namee pitanje: zato ih ne ugraditi u operativni sistem kakav je DOS. U sutini oni bi trebalo da su deo BIOS-ovih (Basic Input Output System) servisa. Danas veliki broj programa za PC maine je da se izvrava pod MS-DOS operativnim sistemom. Sastavni deo ovog operativnog sistema su DOS-ove funkcije i BIOS-ovi pozivi. To su potprogrami, koji se mogu pozivati od strane aplikacionog softvera, a koriste se za pristup hardveru PC maine. Namera je da se utedi programerima vreme i da se usmere njihovi napori na kreiranju efikasnijih aplikacionih programa, a ne da se oni zamaraju detaljima koji se odnose na upravljanje ulazom-izlazom. Sa druge strane obezbedjujui standardni skup ulazno/izlaznih rutina, ovim potprogramima se obezbedjuje softverska kompatibilnost izmedju ra~unara sa razli~itom hardverskom konfiguracijom. U tekstu koji sledi ukazaemo na to: 1. Kako je struktuiran MS-DOS i objasniti uloge BOIS-a i MS-DOS kernela. 2. Objasniti razliku izmedju hardverskih i softverskih prekida 3. Ukazati na listu standardnih vektorskih prekida kod ra~unarskog sistema zasnovanog na mikroprocesoru 80x86 koji radi pod MS-DOS-om.

Struktura MS-DOS-a

BIOS (Basic Input/Output System) - kako je to prikazano na Slici B.7, BIOS-ove rutine su najprimitivnije, jer direktno "komuniciraju" sa hardverom sistema.

Dodatak B

B-9

aplikacioni programi komandni procesorCOMMAND.COM

MS-DOS kernel (MSDOS.SYS)

BIOS (ROM plus IO.SYS)

hardver sistema

Slika B.7 Nivovska organizacija ra~unarskog sistema koji izvrava aplikacione programe pod MS-DOS okru`enjem.

Ovo zna~i da je BIOS hardversko specifi~an, tj. da bi se napisala BIOS-ova rutina, mora da se zna ta~na adresa porta kao i konfiguraciju upravlja~kih bitova za svaku ulazno/izlazni uredjaj instaliran u ra~unaru. Obi~no BIOS se isporu~uje zajedno sa ra~unarom i smeten je na jednom ili dva ROM ~ipa lociranih na glavnoj plo~i ra~unara. U najveem broju slu~ajeva kôd smesten u ROM-u je neizmenjiv (mo`e se samo ~itati). Ipak danas sve vei broj proizvodja~a ugradjuje fle memorije za BIOS. Ovaj tip ROM-a se mo`e selektivno reprogramirati a da se ~ip ne izvadi iz sistemske plo~e. Ova mogunost obezbedjuje korisniku da nadgradi BIOS, ali ~esto puta i da napravi neku ozbiljniju greku koja mo`e da narui integritet sistema. Kod ra~unara koji imaju instalirano MS-DOS, BIOS se u sutini sastoji iz dva dela. Prvi rezidentni deo, o kome smo govorili nalazi se u ROM-u, a drugi nerezidentni deo se puni u RAM kada se ra~unar boot-uje. Deo koji se boot-uje je u sutini fajl IO.SYS. Ovaj fajl predstavlja proirenje rezidentnog BIOS-a i dozvoljava (omoguava) prenos podataka izmedju viih nivoa DOS-a i hardvera sistema. Pored toga IO.SYS obezbedjuje (pru`a mogunost) nadgradnje (dodavanje) novih rutina BIOS-u. MS-DOS kernel - izmedju BIOS-a i aplikacionog softvera vieg nivoa (Slika B.7) nalazi se MS-DOS kernel. On se puni u RAM kada se sistem boot-uje pomou fajla MSDOS.SYS. Nasuprot BIOS-u, kernel obezbedjuje hardversko-nezavisne funkcije. Na primer, funkcija 39 se koristi za kreiranje subdirektorijuma na disku. Da bi koristio ovu funkciju korisnik koristi registar DX koji pokazuje na ime direktorijuma (smeteno kao niz znakova u memoriji), puni registar AH sa 39 (broj funkcije), a zatim izvrava softverski prekid Int 21h. MS-DOS-ova funkcija 39 vodi brigu o svim detaljima: Poziva razli~ite BIOS-ove rutine koje aktiviraju disk drajv, lociraju dostupnost sektora na disku, i upisuju podatke. To zna~i da je kernel projektovan da pru`i (obezbedi) funkcije vieg nivoa u poredjenju sa BIOS-om. Imajui u vidu da je MS-DOS kernel hardversko nezavisaan, korisnici mogu bezbedno (bez opasnosti) da kreiraju ove pozive u njihovom softveru a da ne vode brigu o ulazno/izlazno adresnoj kompatibilnosti. U sutini kernel je taj koji obezbedjuje da se isti program izvrava na ra~unarima koji imaju ugradjeno razli~ite disk drajvove, razli~ite video kartice, razli~ite tastature, i td.

Prekidi kod 80x86

Prekidi su dogadjaji koji uzrokuju da procesor suspenduje svoj tekui zadatak i preda upravljanje novom programu koji se naziva prekidno uslu`na rutina (ISR-interrupt service routine). Kod ra~unara zasnovanih na procesorima 80x86 postoje tri izvora prekida: (1) procesorski prekidi; (2) softverski prekidi; i (3) hardverski prekidi. Svaki prekid mora da preda odgovarajui broj ili vektor koji se koristi od strane procesora kao pokaziva~ da iz vektorske tabele prekida (IVT -interrupt vector table) odredi po~etnu adresu prekidno uslu`ne rutine. Kako je to prikazano na Slici B.8 (vektorska tabela prekida), IVT ukupno sadr`i 256 razli~itih vektora (00-FF). Svaki ulaz IVT-a pokazuje na lokaciju odgovrajue ISR. Naravno, kada procesor startuje sa radom ova tabela je

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-10

prazna. Zbog toga punjenje IVT-a sa odgovarajuim adresama potprograma je jedna od prvih operacija koju procesor mora da obavi. Pre nego to preda upravljanje ISR-u procesor mora da obavi jedan veoma va`an zadatak: Da sa~uva tekuu programsku adresu i markere uslova u magacin. Zatim predaje upravljanje ISR-u. Kada ISR zavri, ova rutina koristi instrukciju IRET (return from interrupt) koja omoguava da se obnovi stanje markera kao i da se iz magacina "vrati" stara adresa programa. Na ovaj na~in procesor mo`e da nastavi sa izvrenjem prekinutog programa sa onog mesta gde je i stao.

Pointer to ISR 254

Pointer to ISR 255

Pointer to ISR 4 Overflow

Pointer to ISR 3 Breakpoint

Pointer to ISR 2 NMI

Pointer to ISR 1 Single-Step

Pointer to ISR 0 Divide Error

Interrupt vector table (IVT)

1K (real mode)

2K (protected mode)

4 bytes (real mode) or8 bytes (protected mode)

5

4

2

0

1

3

6

FE

FF

Interrupt vector (type number)

Address 00000000-000003FF

Procesor

Real Mode

Protected Mode

Pointer Size

4 bytes

8 bytes

IVT Location

Anywhere in Physical Memory

Slika B.8 Vektorska tabela prekida ~uva pokaziva~e na ISR za svaki od 256 moguih prekida Veliki broj vektora kod IVT-a je rezervisan za potrebe samog procesora, drugi su rezervisani za MS-DOS kernel i BIOS, i td. Na Slici B.9 prikazana je lista vektor brojeva, njihov opis, i inicijator. Uo~imo ,da u zavisnosti od procesora, neki prekidi su dostupni a drugi nisu. Na primer, prekid 11, provera poravnjanja (allignment check), javlja se kod procesora 486 pa navie. Neki od prekida imaju dve funkcije, kao na primer broj 5. Procesorski prekidi (tipovi 0 - 12) -ove prekide generie sam procesor, obi~no kao odziv na neki uslov koji je uzro~nik greke. Na primer, prekid tipa 0 javlja se kada se pokua deljenje sa nulom. Prekid 0D - greka usled opte zatite - je drugi primer. Ovaj prekid e se generisati uvek kada

Dodatak B

B-11

program koji se izvrava u zatienom na~inu rada pokua da pristupi podacima ili kodu kojima je dodeljen vii nivo privilegije. Softverski prekidi - svi prekidi koje generie procesor nisu rezultat neke greke. Na primer prekidi tipa 3 i 4 su softverski prekidi. To su specijalne instrukcije procesora 80x86 koje iniciraju izvrenje ISR-a. Opti oblik instrukcije koja inicira softverski prekid je :

Int broj

Jedna od glavnih prednosti softverskih prekida je ta to oni omoguavaju aplikacionom softveru pristup potprogramima bez poznavanja apsolutnih adresa ovih potprograma.

Na primer, programer ne mora da zna apsolutnu adresu ISR-a koja se odnosi na prekidnu ta~ku (breakpoint). On jednostavno ubacuje u program instrukciju INT 3.

Na sli~an na~in, softverski prekidi obezbedjuju pristup BIOS-u i MS-DOS kernelu. Kao to se vidi sa Slici B.9 prekidi od 10 - 1A se koriste od strane BIOS-a (postoje neka preklapanja sa procesorom), dok prekidi 20 - 3F se koriste od strane MS-DOS kernela. Veliki broj ovih prekida ima svoje subservise ili subfunkcije.

Na Slici B.10 izlistana su 22 subservisa koja su karakteristi~na (prate) prekid 10 - BIOS-ovi video servisi obi~no ovim subservisima i funkcijama pristupa na sledei na~in: Pre izvrenja instrukcije Int broj u registar AH se puni broj servisa ili funkcije. Na primer, da bi ispisali jedan znak na video ekranu, koristei tekui video na~in prikaza, potrebno je napisati sledeu sekvencu (kôd)

Mov AH, 0Ah ; BIOS-ov servis 10 u registar AH

Mov AL, ZNAK ; ASCII kod za znak koji e se prikazivati u AL Int 10h ; poziv BIOS -ove prekidne rutine Hardverski prekidi - inicirani su od strane spoljnih uredjaja. Procesor 80x86 ima rezervisano dva pina za ovu namenu. Prvi se naziva NMI a drugi INTR. Uloga ovih pinova je sledea: NMI (nonmaskable interrupt) - usponskom ivicom signala na ovom pinu generie se prekid tipa 2 i prenosi upravljanje na odgovrajuu prekidnu rutinu (ISR). Ovaj prekid je nemaskirajui, a to zna~i da se ne mo`e blokirati. Kod PC-maina ovaj prekid se koristi da prekine rad sistema (shut the system down) kada se kod ~itanja memorije javi greka parnosti u prenosu podataka (~itanje ili upis u memoriju). Drugi pin za prekid je INTR. Ovaj pin omouguava spoljnom hardveru da aktivira bilo koji od 256 tipova vektora. Tehnika rada je sledea: Kada procesor potvrdi da je prihvatio zahtev za prekid preko magistrale podataka predaje mu se broj prekida. Sa ovim jedinstvenim ulaznim pinom, izgleda kao da je procesor ograni~en na prihvatanje samo jednog zahteva za prekid. Ipak, korienjem programibilnog kontrolera prekida kakav je ~ip 8259 mogue je sa jednim 8259 prihvatiti do 8 zahteva za prekid a do 64 ulaza sa osam ~ipova 8259. PC maina koristi ovu tehniku za prihvatanje 16 zahteva za prekid preko linija IRQ0 - IRQ15 (koriste se dva ~ipa 8259).

BIOS i DOS programiranje na asemblerskom jeziku

Postoje izuzetno korisni BIOS-ovi i DOS-ovi potprogrami koji su dostupni preko izvrenjem instrukcije Int. Format ove instrukcije je sledei

Int n ; broj prekida n se nalazi u opsegu od OO do FF

Ovo zna~i da ukupno postoje 256 prekida. Od svih prekida najpoznatiji su Int 10h i Int 21h. Svaki od ovih prekida mo`e da obavi vei broj funkcija. Lista raspolo`ivih funkcija data je na u prilogu na kraju ovog teksta Va`no je zapamtiti sledee: Pre nego to se zahteva usluga (servis) Int 10h ili Int 21h, u zavisnosti od funkcije koju `elimo da obavimo, potrebno je napuniti specifi~ne vrednosti u odredjene

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-12

registre. Izbor funkcija koju obavlja Int 21h ili Int 10h zavisi od vrednosti koja se upisuje u registar AH.

Interrupt Vector

Number Description CPU BIOS MS-DOS PC 0 Divide error all 1 Single-step all 2 Non-maskable interrupt(NMI) all 3 Breakpoint all 4 Interrupt on overflow all 5 Bound 286 Print screen

6 Invalid op-code 286 7 Coprocesor not available 286,386 7 Device not available 486 8 Double fault 286 Timer IRQ0

9 Coprocessor segment overrun 286,386 IRQ1 Reserved 486 Keyboard

A Invalid task state segment 386 Video IRQ2

B Segment not present 386 Serial port 2 IRQ3

C Stack fault 386 Serial port 1 IRQ4

D General protection fault 286 Second parallel port IRQ5

E Page fault 386 Floppy disk IRQ6

F Reserved X First parallel port IRQ7

10 Coprocessor error 286 Video services X

11 Alignment check 486 Equipment list service X

12 Machine check Pentium Memory size service X

13 Disk services X 14 Communications services X 15 System services X 16 Standard keyboard services X 17 Printer services X 18 Activate ROM BASIC X 19 Activate bootstrap start-up routine X 1A Time and data service X

1B-1F PC hardware specific X 20 Program terminate X 21 General MS-DOS services X 22 Terminate address X 23 Control-C handler X 24 Critical error handler address X 25 Absolute disk read X 26 Absolute disk write X 27 Terminate and stay resident X 28 MS-DOS idle interrupt X

29-2E MS-DOS internal use X 2F Multiplex interrupt X

30-3F MS-DOS internal use X

Dodatak B

B-13

40-FF PC hardware specific IRQ8-15

Slika B.9 Vektorska tabela kod 80x86

Interrupt Subservice Description 10H 0 Set video mode 1 Set cursor size 2 Set cursor position 3 Read cursor position 4 Read light-pen position 5 Set active display page 6 Scroll window up 7 Scroll window down 8 Read character and attribute 9 Write character and attribute 0A Write character 0B Set 4-color palette 0C Write pixel 0D Read pixel 0E Write character in teletype mode 0F Get current video mode 10 Color palette interface 11 Character generator interface 12 Alternate select 13 Write character string 14 (PC-convertible onli) 15 (PC-convertible onli) 1A Read/write display combination page 1B Return functionality state information 1C Save/restore video state

Slika B.10 BIOS-ovi video servisi

Programiranje koristei BIOS-ov Int 10 h

Kod svih PC maina potprogrami (tj. ISR) Int 10h se ~uvaju u ROM BIOS-u a koriste se za komuniciranje sa ekranom ra~unara. Najvei deo manipulacija sa tesktualnim ili grafi~kim prikazom slike na ekranu monitora se obavlja preko Int 10h. Postoji vei broj funkcija koje su pridru`ene Int 10h. Karakteristi~ne su one koje menjaju boju znaka (karaktera), boju pozadine, briu sadr`aj slike na ekranu, menjaju lokaciju kursora i dr. Ove opcije se biraju upisom specifi~ne vrednosti u registar AH. Prikaz teksta na ekranu monitora : prikaz tekstualne informacije na ekranu monitora PC maine organizovan je kako je to prikazano na Slici B.11 u 80 kolona*25 vrsta. Ovaj prikaz je identi~an nezavisno od toga da li su monitori crno beli ili kolor. Kada se PC maina uklju~i na napajanje monitor se inicijalno (by default) postavi u tekstualni re`im rada.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-14

00,00 00,79

centar ekrana12,39

24,00 24,79

00,00 00,4F

centar ekrana0C,27

18,00 18,4F

decimalni heksadecimalni

Slika B.11 Lokacija kursora (vrsta, kolona) Brisanje ekrana koristei Int 10h funkciju 06h - veoma ~esto pre nego to se vri prikaz potrebno je obrisati podatke na ekranu. Da bi obavili ovu aktivnost koristi se Int 10h i potrebno je postaviti registre na sledee vrednosti AH = 06, AL = 00, BH = 07, CX =0000, DH = 24 i DL = 79. Programska sekvenca brisanja imae oblik

Mov AH, 06 ; AH = 06 bira se funkcija kru`enja

Mov AL, 00 ; AL = 00 cele stranice

Mov BH, 07 ; BH = 07 za standardne atribute

Mov CH, 00 ; CH = 00 vrednost vrste po~etne ta~ke

Mov CL, 00 ; CL = 00 vrednost kolone po~etne ta~ke

Mov DH, 24 ; DH = 24 vrednost vrste krajnje ta~ke

Mov DL, 79 ; DL = 79 vrednost kolone krajnje ta~ke

Int 10h ; poziv prekida

U sutini opcija AH = 06 prekida Int 10h naziva se funkcija "scroll window up". Efikasnije kodiranje ima sledei oblik:

Mov AX, 0600h ; "scroll" ceo ekran

Mov BH, 07 ; standardni atribut

Mov CX, 0000 ; po~etak 00, 00

Mov DX, 184Fh ; kraj na 24, 79 (heksa = 18,4 F)

Int 10h Postavljanje kursora na specifi~nu lokaciju: Int 10h funkcija 02 - pomou Int 10h funkcije AH = 02 pozicionira se kursor na bilo koju lokaciju. @eljena pozicija kursora se identifikuje pomou vrednosti vrste = DH i vrednosti kolone = DL. Nakon izvrenja Int 10h (ili Int 21h) vrednosti registara ostaju nepromenjene. Sekvenca koja e postaviti kursor na poziciju vrste=15=0Fh i kolone=25=19h je oblika:

Mov AH, 02 ; postavi poziciju kursora

Mov BH, 00 ; stranica 0

Mov DL, 25 ; pozicija kolone

Mov DH, 15 ; pozicija vrste

Int 10h ; poziv prekida Int 10h

Dodatak B

B-15

Programska sekvenca koja e: (1) obrisati sadr`aj ekrana, i (2) postaviti kursor na sredini bie oblika

; brisanje ekrana

Mov AX, 06000h Mov BH, 07 Mov CX, 0000 Mov DX, 184Fh Int 10h

; postavljanje kursora na centar ekrana

Mov AH, 02 Mov BH, 00 Mov DL, 39 ; pozicija centralne kolone

Mov DH, 12 ; pozicija centralne vrste

Int 10h Odredjivanje tekue pozicije kursora pomou Int 10 h funkcije 03 - u tekstualnom na~inu rada ~esto se javlja potreba za odredjivanjem lokacije kursora. Sekvenca kojom se obavlja ova aktivnost oblika je :

Mov AH, 03 ; opcija 03

Mov BH, 00 ; stranica 00

Int 10h Nakon izvrenja ove sekvence DH = tekua vrsta, DL = tekua kolona, a u CX bie smetene informacije o obliku kursora. U tekstualnom na~inu rada, stranica 00 se bira kao tekue vidljiva stranica. Promena video "mode" - prvo treba naglasiti da nezavisno od tipa adaptera (MDA, CGA, EGA, MCGA, ili VGA) koji se koristi svi to se ti~e rada su navie kompatibilni. Na primer VGA emulira sve funkcije MCGA, EGA, CGA i MDA. Na sli~an na~in EGA emulira funkcije CGA i MDA, i td. Zbog ovoga mora da postoji na~in za promenu video "mode" na `eljeni "mode". Da bi uradili ovo, treba koristiti Int 10h sa AH = 00 i AL = video-"mode". Lista video-"mode"-ova je oblika kao na Slici B.12. Atribut bajt kod monohromatskih monitora - svakom znaku (karakteru) koji se prikazuje na ekranu pridru`uje se atribut. Atribut pru`a informaciju kolima za procesiranje video signala o boji i intenzitetu znaka (foreground) kao i o pozadini (background). Atribut bajt svakog znaka kod monohromatskog monitora je ograni~en a definicija bitova ima oblik kao na Slici B.13.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-16

Char Text/ Max Buffer AL Pixels Characters Box Graph Colors Aadapter Pages Start OHH 320x200 40x25 8x8 text 16* CGA 8 B8000h 320x350 40x25 8x14 text 16* EGA 8 B8000h 360x400 40x25 9x16 text 16* VGA 8 B8000h 320x400 40x25 8x16 text 16* MCGA 8 B8000h 01H 320x200 40x25 8x8 text 16 CGA 8 B8000h 320x350 40x25 8x14 text 16 EGA 8 B8000h 360x400 40x25 9x16 text 16 VGA 8 B8000h 320x400 40x25 8x16 text 16 MCGA 8 B8000h 02H 640x200 80x25 8x8 text 16* CGA 8 B8000h 640x350 80x25 8x14 text 16* EGA 8 B8000h 720x400 80x25 9x16 text 16* VGA 8 B8000h 640x400 80x25 8x16 text 16* MCGA 8 B8000h 03H 640x200 80x25 8x8 text 16 CGA 8 B8000h 640x350 80x25 8x14 text 16 EGA 8 B8000h 720x400 80x25 9x16 text 16 VGA 8 B8000h 640x400 80x25 8x16 text 16 MCGA 8 B8000h 04H 320x200 40x25 8x8 graph 4 CGA 1 B8000h 320x200 40x25 8x8 graph 4 EGA 1 B8000h 320x200 40x25 8x8 graph 4 VGA 1 B8000h 320x200 40x25 8x8 graph 4 MCGA 1 B8000h 05H 320x200 40x25 8x8 graph 4* CGA 1 B8000h 320x200 40x25 8x8 graph 4* EGA 1 B8000h 320x200 40x25 8x8 graph 4* VGA 1 B8000h 320x200 40x25 8x8 graph 4* MCGA 1 B8000h 06H 640x200 80x25 8x8 graph 2 CGA 1 B8000h 640x200 80x25 8x8 graph 2 EGA 1 B8000h 640x200 80x25 8x8 graph 2 VGA 1 B8000h 640x200 80x25 8x8 graph 2 MCGA 1 B8000h 07H 720x350 80x25 9x14 text mono MDA 8 B0000h 720x350 80x25 9x14 text mono EGA 4 B0000h 720x400 80x25 9x16 text mono VGA 8 B0000h 09H reserved 0AH reserved 0BH reserved 0CH reserved 0DH 320x200 40x25 8x8 graph 16 EGA 2/4 A0000H 320x200 40x25 8x8 graph 16 VGA 8 A0000H 0EH 640x200 80x25 8x8 graph 16 EGA 1/2 A0000H 640x200 80x25 8x8 graph 16 VGA 4 A0000H 0FH 640x350 80x25 9x14 graph mono EGA 1 A0000H 640x350 80x25 8x14 graph mono VGA 2 A0000H 10H 640x350 80x25 8x14 graph 4 EGA 1/2 A0000H 640x350 80x25 8x14 graph 16 VGA 2 A0000H 11H 640x480 80x30 8x16 graph 2 VGA 1 A0000H 640x480 80x30 8x16 graph 2 MCGA 1 A0000H 12H 640x480 80x30 8x16 graph 16 VGA 1 A0000H 13H 320x200 40x25 8x8 graph 256 VGA 1 A0000H 320x200 40x25 8x8 graph 256 MCGA 1 A0000H

Slika B.12 Video-"mode"-lista

Dodatak B

B-17

D7 D6 D5 D4 D3 D2 D1 D0

intenzitet znaka (foreground)

0=normalni intenzitet1=poja~ani intenzitet

intenzitet pozadine (background)

0=bez blinkanja1-sa blinkanjem

Slika B.13 Atribut bajt kod monohromatskog monitora

Neke mogue varijacije atributa su: Binarna vrednost heksadecimalna vrednost rezultat

0000 0000 00 belo-na- belo (nema prikaz) 0000 0111 07 belo-na-crno (normalni intgenzitet) 0000 1111 0F belo-na-crno(poja~an intenzitet) 1000 0111 87 belo-nacrno sa blinkanjem 0111 0111 77 crno-nacrno (nema prikaz) 0111 0000 70 crno-na-belo 1111 0000 F0 crno-na-belo sa blinkanjem

Atribut bajt kod CGA tekstualni "mode" - s obzirom da je rad kola za precisiranje video signala kod svih kolor monitora navie kompatibilan, za objanjenje manipulisanja sa bojama koristiemo CGA "mode" koji je zajedni~ki "sadr`ilac" za sve kolor monitore. Definicija bitova atribut bajta kod kolor monitora koji radi u CGA tekstualni "mode" prikazana je na Slici B.14.

D3D7 D6 D5 D4 D2 D1 D0

boja znaka (foreground)

intenzitet

boja pozadine

blinkanje

(blinkanje i intenzitet se odnose samona “foreground”)

B R G B I R G B

Slika B.14 Atribut bajt kod CGA

Analizirajui Sliku B.14 mo`e se zaklju~iti sledee: (a) kombinovanjem primarnih boja R, G i B pozadina mo`e bitri obojena u jednoj od osam boja (b) kominovanjem primarnih boja R, G i B sa bitom za intenzitet I tekstualna informacija koja se prikaxuje se mo`e prikazati u 16 razli~itih boja (definicija 16 moguih boja prikazana je na Slici B.13).

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-18

I R G B boja 0 0 0 0 crna 0 0 0 1 plava 0 0 1 0 zelena 0 0 1 1 cijan 0 1 0 0 crvena 0 1 0 1 magenta 0 1 1 0 braon 0 1 1 1 bela 1 0 0 0 siva 1 0 0 1 svetlo plava 1 0 1 0 svetlo zelena 1 0 1 1 svetlo cijan 1 1 0 0 svetlo crvena 1 1 0 1 svetlo magenta 1 1 1 0 `uta 1 1 1 1 jako bela

Slika B.15: 16 moguih boja

Ilustracije radi, programska sekvenca kojom se ispisuju po celom ekranu karakteri 20h (ASCII blanko) koristei jako belo na plavoj pozadini za CGA "mode" imae oblik Mov SH,00 ; postavi opciju mode

Mov AL, 03 ; CGA kolor tekstualni mode formata 80 * 25

Int 10h Mov AH, 09 ; opcija prikaza

Mov BH, 00 ; stranica 0

Mov AL, 20h ; ASCII kod za blanko

Mov CX, 800h ; ponovi 800h puta

Mov BL, 1Fh ; jako belo na plavo

Int 10h Direktni pristup memoriji ekrana za tekstujalni prikaz - I pored toga to se ne preporu~uje, "hrabriji" programeri se ~esto odlu~uju za direktni pristup video-memoriji ekrana u tekstualnom na~inu rada. Da bi pokazali kako se to radi analiziraemo VGA 25*80 tekstualni "mode". Memorija ekrana po~inje od lokacije B800:0000. Znak koji se prikazuje na poziciji 00,00 (Slika B.11) je smeten u memorijskim lokacijama B800:0000 i B800:0001. Naredni karakter bie smeten na lokacijama B800:0002 i B800:0003, itd. Ovo zna~i da svaki znak (karakter) zauzima prostor od dve memorijske lokacije. Prvi predstavlja ASCII kodirani znak koji se prikazuje, a drugi se odnosi na atribut bajt kojim se opisuje boja znaka, boja pozadine i da li znak blinka ili ne. Analiziraemo sada jednu kratku programsku sekvencu kojom se smekta ASCII kod blanko (20h) na svim pozicijama tekue stranice ekrana i atribut kojim se definie beo znak, crna pozadina, bez blinkanja. Sekvenca je oblika

CODE SEGMENT brisanje ; po~etak kodnog segmenta

ASUME CS : CODE MAIN PROC FAR ; po~etak procedure MAIN

ced ; izbor autokrementalnai na~in rada

Dodatak B

B-19

Mov AX, 0B800h ; adresa segmenta memorije prikaza

Mov ES, AX Mov DI, 0 ; ofset adresa memorije prikaza

Mov CX, 25*80 ; CX = broja~ karaktera

Mov AX, 0720h ; napuni karakter i boju

Rep Stosw ; ponovi Stosw 2000 puta

Mov AX, 4C00h ; izlaz na DOS

Int 21h MAIN Endp CODE Ends End MAIN Vie detalja o naredbi Int 21h je dato u okviru prekida Int 21h (tekst koji sledi).

DOS funkcijski poziv Int 21 h

Pored BIOS-ih servisa kakav je Int 10h koji se ~uva u ROM-u, i DOS mo`e da obezbedi usluge koje su obi~na slo`enije od BIOS-ih. Pristup DOS-im funkcijskim pozivima ostvaruje se na identi~an na~in kao i kod BIOS-a - softrverskim prekidima. Int 21h je tipi~an funkcijski poziv DOS-a koji obavlja izuzetno korisne funkcije. Delimi~na lista ovih opcija prikazana je u prilogu na kraju teksta. U tekstu koji sledi ukazaemo samo na neke od njih. Int 21h opcija 09 : predaja niza podataka monitoru Int 21h se mo`e koristiti za predaju skupa ASCII podataka ka monitoru. Ova aktivnost se obavlja na sledei na~in: Postavlja se AH = 09 a DX = ofset adresa ASCII podataka koji se prikazuju. Zatim se poziva Int 21h. Kraj teksta koji se prikazuje markiran je znakom '$'. Jedna tipi~na programska sekvenca ima oblik

ASCII_TEKST DB "Test koji se prikazuje", '$' Mov AH, 09 ; opcija 09 prikaz niza podataka

Mov DX,OFFSET ASCII_TEKST;DS:DX par segmenta i ofset adresa podataka

Int 21h ; poziv prekida

Int 21 h opcija 02 : predaja jednog podatka monitoru

Postoje slu~ajevi kada postoji potreba da se preda samo jedan podatak monitoru. Da bi se obavilo to neophodno je postaviti AH = 02 a DL = podatak koji se prikazuje, a zatim se poziva Int 21 h. Sekvenca kojom se vri prikaz slova 'M' ima oblik Mov AH, 02 ; izbor opcije 02 prikaz jednog karaktera Mov DL, 'M' ; DL = karakter koji se prikazuje Int 21h ; poziv prekida Int 21 h opcija 01 : unos jednog znaka sa ehom Ova funkcija ~eka da se znak primi sa tastature a zatim ga predaje monitoru ~ime ostvaruje subjektivni oseaj eha prema korisniku. Nakon izvrenja prekida, ulazni karakter se nalazi u AL. Sekvenca je oblika:

Mov AH, 01 ; opcija 01 - unos jednog podatka

Int 21 h ; nakon prekida AL = uneti ASCII znak

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-20

Sledea programska sekvenca kombinuje Int 10h sa Int 21h. Program obavlja sledee aktivnosti : (1) brie ekran; (2) postavlja kursor na centar ekrana, i (3) po~evi od te ta~ke ispisuje poruku "Ovaj tekst predstavlja rutinu za prikaz".

TITLE PROG_D Program za prikaz PAGE 60, 132

; segment magacina

SMAG SEGMENT DB 64 DUP (?) SMAG Ends

; segment podataka

SPOD SEGMENT PORUKA DB 'Ovaj tekst predstavlja rutinu za prikaz','S' SPOD Ends

; kodni segment

SKOD SEGMENT GLAVNI PROC FAR ASSUME CS : SKOD, DS : SPOD, SS : SMAG Mov AX, SPOD Mov DS, AX Call BRISANJE ; obrii ekran

Call KURSOR ; postavi poziciju kursora

Call PRIKAZ ; prika`i poruku

Mov AH, 4Ch Int 21h ; povratak na DOS

GLAVNI Endp ; ovaj potprogram brie ekran

BRISANJE PROC Mov AX, 0600h ; "scroll" funkcija za ekran

Mov BH, 07 ; normalni atribut

Mov CX, 0000 ; brii od vrste=00,i kolone=00

Mov DX, 184Fh ; do vrste=18 h, i kolone=4Fh

Int 10h ; pozivi prekid za brisanje

Ret BRISANJE Endp

; ovaj 'potprogram' se koristi za postavljanje kursora na centar enrana

KURSOR PROC Mov AX, 02 ; postavi funkciju kursora Mov BH, 00 ; stranica 00

Dodatak B

B-21

Mov DX, 12 ; centralna vrsta Mov DL, 39 ; centralna kolona

Int 10h ; pozivi prekid da postavi kursor

Ret KURSOR Endp

; ovaj potprogram prikazuje niz na ekranu

PRIKAZ PROC Mov AH, 09 ; funkcija prikaza

Mov DX, OFFSET PORUKA ; DX pokazuje na izlazni bafer

Int 21h ; pozovi prekid-prikaz poruke

Ret PRIKAZ Endp SKOD Ends END GLAVNI Int 21 h opcija 0A h : ulaz niza podataka sa tastature Opcija 0Ah od Int 21h obezbedjuje da se prihvate podaci sa tastature i smeste u unapred definisanu oblast memorije u segmentu podataka. Da bi obavitili ovo neophodno je da : AH=0Ah, DX=ofset adresa na koji se smeta niz podataka. Oblast gde se smetaju podaci naziva se baferska oblast. DOS zahteva da oblast bafera bude definisana u segmentu podataka a da pri bajt specificira obim bafera. DOS e smetati broj karaktera koji se prihvataju preko tastature u drugom bajtu u podatak koji se prihvata preko tastature se smeta u baferu po~ev od treeg bajta. Sledea programska sekvenca prihvatie do 6 karaktera sa tastature, uklju~ujui i "carriage return" dirku. [est lokacija je rezervisano u baferu i one su popunjene sa FFh.

ORG 0010h PODACI DB 6,?,6 DUP (FF) ; 0010h = 06, 0-012h do 0017h =FF

Mov AH, 0Ah ; opcija unos niza preko Int 21h

Mov DX, OFFSET PODACI ; napuni ofset adresu u bafer

Int 21h ; pozovi prekid 21h

Sadr`aj memorije na ofset adrese 0010 h pre poziva Int 21h je ofset adresa sadr`aj 0010 06 0011 00 0012 FF 0013 FF 0014 FF 0015 FF 0016 FF 0017 FF Kada se program izvrava on ~eka da se primi informacija sa tastature. Pod uslovom da smo otkucali "ELEF"<RETURN>, sadr`aj memorije po~ev od ofset lokacije 0010 h bie

0010 06 ; obim bafera 0011 04 ; otkucana su ~etiri karaktera 0012 45 ; ASCII kod E 0013 4C ; ASCII kod L

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-22

0014 45 : ASCII kod E 0015 46 ; ASCII kod F 0016 0D ; ASCII kod CR (carriage return) 0017 FF

Interesantno je sagledati kako se od strane DOS-a pristupa broja~u karaktera, tj. drugom bajtu. Jedan od na~ina je sledei

Mov AH,0Ah Mov DX,OFFSET PODACI Int 21h ; nakon to je podatak sa tastature prihvaen, pribavi se ; vrednost broja~a na sledei na~in

Mov BX, OFFSET PODACI Sub CH, CH ; Ch = 00

Mov CL, BX + 1 ; kopiraj broja~ u CL

Da bi locirali karakter CR, tj. vrednost 0Dh, u nizu i zamenili je sa, recimo 00h, potrebno je izvriti sledeu sekvencu

Mov SI, CX Mov BYTE PTR BX+SI+2,00 Aktuelno uneti podatak se memorie na lokaciju BX + 2.

Unos veeg broja podataka od obima bafera

Analizirajmo sada to e se desiti ako se unese vei broj karaktera od est (5 znakova + CR = 6). Unos poruke "ELEF se nalazi u Niu" <RETURN> uzrokovae da ra~unar generie tonski signal a sadr`aj bafera blie sledei:

ofset adresa sadr`aj 0010 06 0011 05 0012 45 0013 4C 0014 45 0015 46 0016 20 ; blanko 0017 OD ; ASCII kod za CR

Lokacija 0016 ~uva ASCII 20h za blanko karakter koji se u izvornom tekstu nalazi izmedju 'ELEF' i 'se nalazi u Niu'. Interesantno je sagledati ta e se desiti ako se aktivira samo dirka CR, kao u sledeem primeru

ORG 20h POD_2 DB 5, ?, 5 DUP (FF) Sadr`aj memorije nakon izvrenja sekvence bie:

ofset adresa sadr`aj 0020 05 0021 00 0022 0D

Dodatak B

B-23

0023 FF 0024 FF 0025 FF 0026 FF Stvarni broj karaktera koji je unet iznosi 0 i on se nalazi na lokaciji 0021. Treba ukazati da svaki podatak koji se unosi preko tastature prikazuje se na ekranu, tj. koristi se princip eho. Program koga emo analizirati obavlja sledee aktivnosti: (a) brie ekran; (b) postavlja kursor na po~etak tree linije od vrha ekrana, (c) prihvata poruku "Studiram na ELEF-u", (d) konvertuje mala slova poruke u velika, (e) prikazuje rezultat konvertovane poruke u narednoj liniji.

TITLE PROG2 Student Mika page 60,132

; segment magacina

SMAG SEGMENT DB 100 DUP((?) SMAG Ends

; segment podataka

SPOD SEGMENT BAFFER DB 19,?,19 DUP(?) ;bafer podataka sa tastature

ORG 18h OB_POD DB CR,LF,19 DUP(?),'$'; oblast gde se smetaju podaci nakon konverzije

SPOD Ends CR EQU 0Dh LF EQU 0Ah

; kodni segment

PSEG SEGMENT GLAVNI PROC FAR ASSUME CS : PSEG, DS : SPOD; SS : SMAG Mov AX, SPOD Mov DS, AX Call OBRISI : obrii ekran

Call KURSOR : postavi poziciju kursora

Call PRIHVAT ; upii niz u bafer

Call KONVER ; konverziju niza u velika slova

Call PRIKAZ ; prika`i oblast podataka

Mov AH, 4Dh Int 21h ; povratak na DOS

GLAVNI Endp ; potprogram za brisanje ekrana

OBRISI PROC

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-24

Mov AX, 0600 ; funcija "scroll" ekrana

Mov BH, 07 ; standardni atribut

Mov CX, 0000 ; vrsta = 00, kolona = 00

Mov DX,184Fh ; do vrste 18h, kolone 4Fh

Int 10h Ret OBRISI Endp

; ovaj potprogram postavlja kursor na po~etak tree vrste

KURSOR PROC Mov AX,06 ; funcija postavi kursora

Mov BH,00 ; stranica 00

Mov DL,01 ; kolona 1

Mov DH,03 ; vrsta 3

Int 10h ; pozovi funciju postavi kursora

Ret KURSOR Endp

; ovaj potprogram prikazuje niz na ekranu

PRIKAZ PROC Mov AH,09 ; funkcija prikaz niza

Mov DX,OFFSET OB_POD ; DX pokazuje na bafer

Int 21h ; poziv prekida~a prikaz

Ret PRIKAZ Endp

; ovaj potprogram smeta podatke sa tastature u bafer

PRIHVAT PROC Mov AH,0Ah ; funkcija unos niza

Mov DX, OFFSET BAFER ; DX pokazxuje na bafer

Int 21h ; poziv prekida

Ret PRIHVATI Endp

; ovaj potprogram konvertuje mala slova u velika

KONVER PROC Mov BX,OFFSET BAFER Mov CL,BX + 1 ; dobavi broj karaktera

Sub CH, CH ; CX=ukupan broj karaktera

Mov DI, CX ; indeks bafera

Mov BYTE PTR BX+DI +2, 20h ; zameni CR sa blanko

Mov SI,OFFSET OB_POD+2 ; adresa niza

Ponovi: Mov AL, BX + 2 ; dobavi otkucani podatak

Dodatak B

B-25

Cmp 61h ; provera da li je 'a'

JB Naredni ; ako je manji, idi na Naredni

Cmp AL, 7A h ; proveri sa 'Z'

JA Naredni ; ako je iznad ili na Naredni

And AL,11011111b ; konvertuj ga u veliko slovo

Naredni Mov SI,AL ; smesti u oblast podataka

Inc Si ; inkrementiraj broja~a

Inc BI Loop Ponovi ; broja~ petlje = 0

Ret KONVER Endp PSEG Ends End GLAVNI

Korienje CR i LF

U prethodnoj programskoj sekvenci pomou EQU iskaza CR (carriage return) je bio dodeljen ASCII kôd 0Dh, a LF (line fead) ASCII kôd 0Ah. Rezultat konverzije je bio sledei: Prikaz konvertovanog teksta je bio u novi red zahvaljujui tome to su poruci prethodili karakteri CR i LF. Za slu~aj da ne postoji CR, tekst bi se prikazivao od one pozicije korsora koja se tekue zatekne pa nadalje. U slu~aju da ima CR a nema LF, konvertovani niz bi se prikazivao u istoj liniji i to od po~etka tako da bi se preko starih karaktera kucali novi (konvetovani), tj. stari tekst bi bio zamenjen novim. Kombinacija CR i LF dovodi do pozicioniranja kursora na po~etak novog reda (u konkretnom slu~aju je to ~etvrti red). Programska sekvenca koja sledi prikazuje ime i prezime korisnika. Prezime mo`e biti duga~ko maksimalno 8 slova. Nakon unoenja prezimena program prikazuje njegovu du`inu na ekranu. Ova sekvenca prikazuje veliki broj funkcija koje su do sada bile analizirane.

TITLE PROG_3 citaj ime i prezime i prika`i du`inu PAGE 60, 32 ; segment magacina SMAG SEGMENT DB 100 DUP (?) SMAG Ends ; segment podataka SPOD SEGMENT PORUKA1 DB 'Vase prezime?''$' ORG 20 h BAFFER1 DB 9, ?, 9 DUP (0) ORG 30h PODUKA 2 DB, CR,LF, ' Broj slova u vaem imenu je:','$' SPOD Ends VRSTA EQU 08

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-26

KOLONA EQU 05 CR EQU 0D h ; CR = 0Dh LF EQU 0A h ; LF = 0Ah

; segment programa

PSEG SEGMENT GLAVNI PROC FAC ASSUME CS : PSEG, DS : SPOD, SS : SMAG Mov AX,SPOD Mov DSAX Call OBRISI Call KURSOR Mov AH,09 ; prika`i PROMPT

Mov DX,OFFSET PORUKA 1 Int 21h Mov AH,0Ah ; prihvati ime sa tastature

Mov DX,OFFSET BAFER1 InT 21h Mov BX,OFFSET BAFER1 ; odredi broj slova u prezimenu

Mov CL,BX + 1 ; dobavi broj slova u CL

Or CL, 30h ; kodiraj ih kao ASCII

Mov PORUKA2 + 40, CL ; smesti na kraju niza

Mov AH,09 ; prika`i drugu poruku

Mov DX, OFFSET PORUKA 2 Int 21h Mov AH, 4Ch Int 21h ; povratak na DOS

GLAVNI Endp ; procedura za brisanje

BRISANJE PROC ; obrii ekran

Mov AX, 0600h Mov BH, 07 Mov CX, 0000 Mov DX, 184Fh Int 10h Ret OBRISI Endp

; procedura kursor

KURSOR PROC ; postavi kursor na poziciju

Mov AH,02

Dodatak B

B-27

Mov BH,00 Mov DL,KOLONA Mov DH,VRSTA Int 10h Ret KURSOR Endp PSEG Ends End GLAVNI

BIOS Int 16H - programiranje tastature

Int 16 h je BIOS-ov prekid koji se isklju~ivo koristi za tastaturu. Provera da li je pritisnuta dirka - da bi proveriti da li neka dirka pritisnuta koristi se Int 16h funkcija AH = 01 na sledei na~in

Mov AH,01 ; proveri pritisnutu dirku

Int 16h ; pozovi Int 16h

Nakon povratka ZF = 0 ako nije pritisnuta dirka, a ZF = 1 ako je bilo koja dirka pritisnuta. Koja je dirka pritisnuta - ~esto je potrebno da saznamo ne samo da li je neka dirka pritisnuta nego i kod te dirke. Da bi obavili to odmah nakon Int 16h, funkcija AH = 01, treba koristiti Int 16h funkciju 00 h, tj.

Mov AH,00 ; dobavi kôd pritisnute dirke

Int 16h Nakon povratka u AL se nalazi kod pritisnute ASCII dirke. Sledea programska sekvenca prikazuje na~in korienja Int 16h.

TITLE PROG4 Korienje prekida Int 16 h ; ovaj program generie tonski signal uvek nakon to se

; pritisne bilo koja dirka

.MODEL SMALL .STACK .DATA PORUKA DB 'Pritisni bilo koju dirku da bi ukinuo ton ','$' .CODE GLAVNI PROC Mov AX,DATA Mov DS,AX Mov AH,09 Mov DX,OFFSET PORUKA ; prika`i poruku

Int 21h PONOVI Mov AH,02 ; alji ka monitoru jedan znak

Moy DL,07 ; predaj znak tonskog signala

Int 21h

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-28

Moy AH,01 ; proveri pritisnutu dirku

Int 16h JZ PONOVI ; ako nije pritisnuta vrati se u petlju

Mov AH, 4Ch ; ako je pritisnuta bilo koja dirka vrati se na DOS

Int 21h GLAVNI Endp End

Dodatak B

B-29

Section B.2 DOS INTERRUPT 21H AND 33H LISTING

This appendix lists many of the DOS 21H interrupts, which are used primarily for iNput, output, and file and memory management. In addition, this appendix covers some functions of INT 33 H, the mouse handLing interrupt. As was mentioned in Chapter 6, this interrupt is not a part of DOS or BIOS, but is part of the mouse driver software.

Section B.2.1 DOS 21H INTERRUPTS

First, before covering the DOS 21H interrupts, a few notes are given about file management under DOS. There are two commonly used ways to access files in DOS. One is through what is called a file handle, the other is through an FCB, or file control block. These terms are defined in detail below. Function calls 0FH through 28H use FCBs to access files. Function calls 39 H through 62 H use file handles. Handle calls are more powerful and easier to use. However, FCB calls maintain compatibillity down to DOS version 1.10 FCB calls have the furher lilmitation that they reference only the files in the current directory, wheras handle calls reference any file in any directory. FCB calls use the file control block to perorm any function on a file. Handle calls use an ASCIIZ string (defined below) to open, create, delete or rename a file, and use a file handle for I/O requests. There are some terms used in the interrupt listing that will be unfamiliar to many readers. DOS manuals provide complete coverage of the details of file managment, but a few key terms are defined below.

ASCIIZ string

This is a string composes of any combination of ASCII characters and terminated with one byte of binary zeros (00H). It is frequently used in DOS 21 H interrupt calls to specify a filename or path. The following is an example of an ASCIIZ string that was defined in the data segment of a program: NAME_1 DB ’C:\PROGRAMS/SYSTEM_A\PROGRAM5.ASM’,0

Directory

DOS keeps track of where files are located by means of a directory. Each disk can be partitioned into one or more directories. The directory lists each file in that directory, the number of bytes in the file, the date and time the file was created, and other information that DOS needs to access that file. The familiar DOS command “DIR” lists the directory of the current drive to the monitor.

DTA Disk transfer area

This is essentially a buffer area that DOS will use to hold data for reads or writes performed with FCB function calls. This area can be set up by your program anywhere in the data segment. Function call 1AH tells DOS the location of the DTA. Only one DTA can be active at a time.

FAT File allocation table

Each disk has a file allocation table that gives information about the clulsters on a disk. Each disk is divided into sectors, which are grouped into clulsters. The size of sectors and clusters varies among the different disk types. For each cluster in the disk, the FAT has a code indicating whether the cluster is being used by a file, is available, is reserved, or has been marked as a bad clulster. DOS this information in storing and retrieving files.

FCB File control block

One FCB is associated with each open file. It is composed of 37 bytes of data that give information about a file, such as drive, filename and extension, size of the file in bytes, and date and time it was

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-30

created. It also stores the current block and record numbers, which serve as pointers ilnto a file when it is being read or written to. DOS INT 21H function calls 0FH through 28H use FCBs to access files. Function 0FH is used to open a file, 16H to create a new file. Function calls 14H - 28H perform read/write functions on the file, and 16H is used to close the file. Typically, the filename information is set up with function call 29H (Parse File- name), and then the address of the FCB is placed in DS:DX and is used to access the file.

File handle

DOS function calls 3CH through 62H use file handles. When a file or device is created or opened with one of these calls, its file handle is returned. The file handle is used thereafter to refer to that file for input, closing the file, and so on. DOS has a few predefined file handles that can be used by any Assembly language program. These do not need to be opened before they are used: Handle value Refers to 0000 standard input device (typicallly, the keyboard) 0001 standard output device (typically, the monitor) 0002 standard error output device (typically, the monitor) 0003 standard auxiliary device (AUX1) 0004 standard printer device (PTR1)

PSP Program segment prefix

The PSP is a 256-byte area of memory reserved by DOS for each program. It provides an area to store chared information between the program and DOS. AH Function of INT 21H 00 Terminate the program Additional Call Register Result Registers CS = segment address of None

PSP (program segment prefix) Note: Files should be closed previously or data may be lost.

01 Keyboard input with echo Additional Call Registers Result Registers None AL = input character

Note: Checks for ctri-break. 02 Output character to monitor

Additional Call Register Result Registers DL = character to be displayed None

03 Asynchronous input from auxiliary device (serial device)

Additional Call Registers Result Registers None AL = input character

Dodatak B

B-31

AH Function of INT 21H 04 Asynchronous character output

Additional Call Registers Result Registers DL = charactet to be output None

05 Output character to printer

Additional Call Registers Result Registers DL = character to be printed None

06 Console I/O

Additional Call Registers Result Registers DL = OFFH if input AL = 0H if no character available or character to be = character that was input, if input successful displayed, if output

Note: if input, ZF is cleared and AL will have the character. ZF is set if input and no character was available.

07 Keyboard input without echo

Additional Call Registers Result Registers None AL = input character

Note: Does not check for ctrl-break. 08 Keyboard input without echo

Additional Call Registers Result Registers None AL= input character

Note: Checks for ctrl-break. 09 String output Additional Call Registers Result Registers

DS:DX = string address None Note: Displays characters beginning at address until a “$” (ASCII 36) is encountered.

0A String input Additional Call Registers Result Registers

DS:DX = address at which to store string None Note: Specify the maximum size of the string in byte 1 of the buffer. DOS will place the actual size of the string in byte 2. The string begins in byte 3.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-32

AH Function of INT 21H 0B Get keyboard status Additional Call Registers Result Registers

None AL= 00 if no character waiting = CFFH if character waiting

Note: Checks for ctrl-break. 0C Reset input buffer and call keyboard input function Additional Call Registers Result Registers

AL = keyboard function number None 01H, 06H, 07H, 08H or OAH Note: This function waits until a character is typed in.

0D Reset disk Additional Call Registers Result Registers

None None

Note: Flushes DOS file buffers but does not close files. 0E Set default drive Additional Call Registers Result Registers DL = code for drive AL = number of logical drives

(0=A, 1=B, 2=C, etc.) in system 0F Open file Additional Call Registers Result Registers DS:DX = address of FCB AL = 00 if succesful

= 0FFH if file not found

Note: Searches current directory for file. If found, FCB is filled. 10 Close file Additional Call Registers Result Registers DS:DX = address of FCB AL = 00 if successful

= 0FFH if file not found

Note: Flushes all buffers. Also updates directory if file has been modified. AH Function of INT 21H

Dodatak B

B-33

11 Search for first matching filename Additional Call Registers Result Registers DS:DX = address of FCB AL = 00 if match is found

`= 0FFH if no match found

Note: File names can contain wildcards “?” and “”. 12 Search for next match

Additional Call Registers Result Registers DS:DX = address of FCB AL = 00 if match is found

= 0FFH if no match found

Note: This call should be used only if previous call to 11H has been successful. 13 Delete file(s)

Additional Call Registers Result Registers DS:DX = address of FCB AL = 00 if file(s)deleted

= 0FFH if no files deleted

Note: Deletes all files in current directory matching filename, provided that they are not read-only. Files should be closed before deleting.

14 Sequential read

Additional Call Registers Result Registers DS:DX = address of operand FCB AL = 00H if read successful

= 01H if end of file and no date is read = 02H if DTA is too smail to hold the record. = 03H if partial recortd read and end of file is reached

Note: The file pointer, block pointer, and FCB record pointer are updated automatically by DOS

15 Sequential write

Additional Call Registers Result Registers DS:DX = address of operand FCB AL = 00H if write successful

= 01H if diskis ful = 02H if DTA is too small to hold the record.

Note: The file pointer, block pointer, and FCB record pointer are updated automatically by DOS. The record may not be written physically until a cluster is full or the file is closed.

AH Function of INT 21H

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-34

16 Crate/open a file

Additional Call Registers Result Registers DS:DX = address of unopened FCB AL = 00H if successful

= 0FFH if unsuccessful

Note: If the file already exists, it will be truncated to length 0. 17 Rename file(s)

Additional Call Registers Result Registers DS:DX = address of FCB AL = 00H if file(s) renamed

= 0FF if file not found or new name already exists.

Note: The old name is in the name position of the FCB: the new name is at the size (offset 16H) position.

18 Reserved 19 Get default drive Additional Call Registers Result Registers

None AL = 0H fore drive A = 1H for drive B = 2H for drive C

1A Specify DTA (disk transfer address)

Additional Call Registers Result Registers DS:DX = DTA None Note: Only one DTA can be current at a time. This function must be called before FCB reads, writes, and directory searches.

1B Get FAT (file allocation table) for default drive Additional Call Registers Result Registers None AL = number of sectors per cluster

CX = number of bytes per sector DX = number of cluster per disk DS:BX FAT id

1C Get FAT (file allocation table) for any drive Additional Call Registers Result Registers

DL = drive code AL = number of sectors per cluster 0 for A; 1 for B; 2 for C CX = number of bytes per sector DX = number of cluster per disk

DS:BX FAT id AH Function of INT 21H

Dodatak B

B-35

1D Reserved 1E Reserved 1F Reserved 20 Reserved 21 Random read

Additional Call Registers Result Registers DS:DX = address of operand FCB AL = 00H if read successful

= 01H if end of file and no data read = 02H if DTA too smail for record. = 03H if end fo file and partial read.

Note: Reads record pointed at by current block and record fields into DTA 22 Random write

Additional Call Registers Result Registers DS:DX = address of operand FCB AL = 00H if write successful

= 01H if disk is full = 02H if DTA too small for record

Note: Writes from DTA to record pointed at by current block and record fields. 23 Get file size

Additional Call Registers Result Registers DS:DX = address of unopened FCB AL = 00H if file found, number of records is

set in FCB random-record field (offset 0021 H) = 0FFH if no match found

Note: The FCB should contain the record size before the interrupt.

24 Set random record field

Additional Call Registers Result Registers DS:DX = address of opened FCB None Note: This sets the random-record field (offset 0021H) in the FCB. It is used prior to switching from sequential to random processing.

AH Funcion of INT 21H

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-36

25 Set interrupt vector

Additional Call Registers Result Registers DS:DX = interrupt handler addr. None AL = machine interrupt number

Note: This is used to change the way thesystem handles interrupts.

26 Create a new PSP (program segment prefix)

Additional Call Registers Result Registers DX = segment addr. of new PSP None Note: DOS versions 2.0 and higher recommend not using this service, but using service 4B (exec).

27 Random block read Additional Call Registers Result Registers DS:DX = address of opened FCB AL = 00H if read successful CX = number records to be read = 01H if end of file and no data read = 02H if DTA too smail for block = 03H if EOF and partial block read CX = number of records actually read

Note: Set the FCB random record and record size fields prior to the interrupt. DOS will update the random record, current block, and current record fields after the read.

28 Random block write Additional Call Registers Result Registers DS:DX = address of opened FCB AL = 00H if read successful CX = number records to be write = 01H if disk is full = 02H if DTA too smail for block = 03H if EOF and partial block read CX = number of records actually written

Note: Set the FCB random record and record size fields prior to the interrupt. DOS will update the random record, current block and current record fields after the write. If CX = 0 prior to the interrupt, nothing is written to the file and the file is truncated or extended to the length computed by the random record and redord size fields.

AH Function of INT 21H 29 Parse filename

Dodatak B

B-37

Additional Call Registers Result Registers DS:SI = address of command line DS:SI = address of first char after ES:DI = address of FCB ES:DI = address of first byte of AL = parsing flags in bits 0-3 formatted unopened FCB Bit 0 = 1 if leading separators AL = 00H if no wildcards were in are to be ignored: otherwise filename of extension no scan-off takes place = 01H if wildcard found Bit 1 = 1 if drive ID in FCB = 0FFH if drive specifier is invalid will be changed only if drive was specified in command line Bit 2 = 1 if filename will be changed only if filename was specified in command line Bit 3 = 1 if extension will be changed only if extension was specified in command line

Note: The command line is parsed for a filename, then an unopened FCB is created at DS:SI. The command should not be used if path names are specified.

2A Get system date Additional Call Registers Result Registers None CX = year (1980-2099) DH = month (1-12) DL = day (1-31) AL = day of week code (0 = Sunday,..., 6 = Saturday) 2B Set system date Additional Call Registers Result Registers CX = year (1980-2099) AL = 00H if date set DH = month (1-12) = 0FFH if date not valid DL = day (1-31) 2C Get system time Additional Call Registers Result Registers None CH = hour (0..23) CL = minute (0..59) DH = second (0..59) DL = hundredth of second (0..99)

Note: The format returned can be used in calculations but can be converted to a printable format.

AH Function of INT 21H 2D Set system time

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-38

Additional Call Registers Result Registers CH = hour (0..23) AL = 00H if time set CL = minute = 0FFH if time invalid DH = second DL = hundredth of second 2E Set/reset verify switch Additional Call Registers Result Registers AL = 0 to turn verify off None = 1 to turn verify on

Note: If verify is on. DOS will perform a verify every time data is written to disk. An interrupt call to 54H gets the setting of the verify switch.

2F Get DTA (disk transfer area) Additional Call Registers Result Registers None ES:BX = address of DTA 30 Get system time Additional Call Registers Result Registers None AL = major version number (0,2,3,etc.) AH = minor version number 31 Terminate process and stay resident (KEEP process) Additional Call Registers Result Registers AL = binary return code None DX = memory size in paragraphs

Note: This interrupt call terminates the current process and attempt to place the memory size in paragraphs in the initial allocation block, but does not release any other allocation blocks. The return code in AL can be retrieved by the parent process using interrupt 21 call 4DH.

32 Reserved 33 Ctrl-break control Additional Call Registers Result Registers AL = 00 to get state of ctrl-break check DL = 00 if ctrl-break check off = 01 to modify state of ctrl-break check = 01 if ctrl-break check on DL = 00 to turn check off = 01 to turn check on

Note: When ctrl-break check is set to off, DOS minimizes the times it checks for ctrl-break input. When it is set to on, DOS checks for ctrl-break on most operations.

AH Function of INT 21H 34 Reserved

Dodatak B

B-39

35 Get interrupt vector address Additional Call Registers Result Registers AL = interrupt number ES:BX = address of interrupt handler 36 Get free disk space Additional Call Registers Result Registers DL = drive code AX = FFFFH if drive code invalid (0 = default, = sectors per cluster if valid 1 = A, 2 = B, etc.) BX = number of available clusters CX = bytes per sector DX = total clusters per drive 37 Reserved 38 Country dependent information Additional Call Registers Result Registers DS:DX = address of 32-byte None block of memory AL = function code 39 Create subdirectory (MKDIR) Additional Call Registers Result Registers DS:DX = address of ASCIIZ path Carry flag = 0 if successful name of new subdirectory = 1 if failed = 5 if access denied AX = 3 if path not found 3A Remove subdirectory (RMDIR) Additional Call Registers Result Registers DS:DX = address of ASCIIZ path Carry flag = 0 if successful name of new subdirectory = 1 if failed AX = 3 if path not found = 5 if directory not empty = 15 if drive invalid

Note: The current directory cannot be removed. AH Function of INT 21H 3B Change the current subdirectory (CHDIR)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-40

Additional Call Registers Result Registers DS:DX = address of ASCIIZ path Carry flag = 0 if successful name of new subdirectory = 1 if failed AX = 3 if path not found 3C Create a file Additional Call Registers Result Registers DS:DX = address of ASCIIZ path Carry flag = 0 if successful and file name = 1 if failed CX = file attribute AX = handle if successful = 3 if path not found = 5 if access denied

Note: Creates a new file if filename does not exist, otherwise truncates the file to lenght zero. Opens the file for reading or writing. A 16-bit handle will be returned in AX if the create was successful.

3D Open file Additional Call Registers Result Registers DS:DX = address of ASCIIZ path Carry flag = 0 if successful and file name = 1 if failed AL = mode flags (see below) AX = 16-bit handle if successful = 1 if function number invalid = 2 if file not found = 3 if path not found = 4 if handle not available = 5 if access denied = 0CH if access code invalid AL mode flag summary: 7 6 5 4 3 2 1 0 (bits) Result 0 0 0 open for read 0 0 1 open for write 0 1 0 open for read/write 0 reserved 0 0 0 give other compatible access 0 0 1 read/write access denied to others 0 1 0 write access denied to others 0 1 1 read access denied to others 1 0 0 give full access to tohers 0 file inherited by child process 1 file private to current process AH Function of INT 21H 3E Close file

Dodatak B

B-41

Additional Call Registers Result Registers BX = file handle Carry flag = 0 if successful = 1 if failed AX = 6 if invalid handle or file not open

Note: All internal buffers are flushed before the file is closed. 3F Read from file or device Additional Call Registers Result Registers DS:DX = buffer address Carry flag = 0 if successful BX = file handle = 1 if failed CX = number of bytes to read AX = number of bytes actually read, = 5 if access denied = 6 if file not open or invalid handle

Note: When reading from the standard device (keyboard), at most one line of text will be read, regardless of the value of CX.

40 Write to fiile or device Additional Call Registers Result Registers DS:DX = buffer address Carry flag = 0 if successful BX = file handle = 1 if failed CX = number of bytes to write AX = number of bytes actually written if successful = 5 if access denied = 6 if file not open or invalid handle

Note: If the carry flag is clear and AX is less than CX, a partital record was written or a disk full or other error was encountered.

41 Delete file (UNLINK) Additional Call Registers Result Registers DS:DX = address of ASCIIZ file specification Carry flag = 0 if successful = 1 if failed AX = 2 if file not found = 5 if access denied

Note: This function cannot be used to delete a file that is read-only. First, change the file's attribute to 0 by using interrupt 21 call 43H, then delete the file. No wildcard characters can be used in the filename. This function works by deleting the directory entry for the file.

AH Function of INT 21H 42 Move file pointer (LSEEK)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-42

Additional Call Registers Result Registers BX = file handle Carry flag = 0 if successful CX:DX = offset = 1 if fail AL = 0 to move pointer offset AX = 1 if invalid function number bytes from start of file = 6 if file not open or invalid handle = 1 to move pointer offset DX:AX = absolute offset from start of bytes from current location file if successful = 2 to move pointer offset bytes from end-of-file

Note: To determine file size, call with AL =2 and offset = 0. 43 Get or set file mode (CHMOD) Additional Call Registers Result Registers DS:DX = address of ASCIIZ Carry flag = 0 if successful file specifier = 1 if fail AL = 0H to get attribute CX = current attribute if set = 1H to set attribute AX = 1 if invalid function number CX = attribute if setting = 2 if file not found = attribute codes if = 3 if file does not exist or path not found getting (see below) = 5 if attribute cannot be changed 7 6 5 4 3 2 1 0 attribute code bits 0 reserved 0 reserved x archive 0 directory (do not set with 43H; use extended kFCB) 0 volume-label (do not set with 43H; use ext. FCB) x system x read-only AH Function of INT 21H 44 I/O device control (IOCTL)

Dodatak B

B-43

Additional Call Registers Result Registers AL = 00H to get device info AX = number of bytes = 01H to set device info transferred if CF = 0 = 02H char read device to buffer otherwise = error code = 03H char write buffer to device = 04H block read device to buffer = 05H block write buffer to device = 06H check input status = 07H check output status = 08H test if block device changeable = 09H test if drive local or remote = 0AH test if handle local or remote = 0BH to change sharing retry count = 0CH char device I/O control = 0DH block device I/O control = 0EH get map for logical drive = 0FH set map for logical drive DS:DX = data buffer BX = file handle; CX = number of bytes 45 Duplicate a file handle (DUP) Additional Call Registers Result Registers BX = opened file handle Carry flag = 0 if successful = 1 if fail AX = returned handle if successful = 4 if no handle available = 6 if handle invalid or not open

Note: The two handles will work in tandem; for example, if the file pointer of one handle is moved, the other will also be moved.

46 Force a duplicate of a handle (FORCCDUP) Additional Call Registers Result Registers BX = first file handle Carry flag = 0 if successful CX = second file handle = 1 if fail AX = 4 if no handle available = 6 if handle invalid or not open

Note: If the file referenced by CX is open, it will be closed first. The second file handle will be forced to point identically to the first file handle. The two handles will work in tandem; for example, if the file pointer of one handle is moved, the other will also be moved.

AH Function of INT 21H 47 Get current directory

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-44

Additional Call Registers Result Registers DL = drive code Carry flag = 0 if successful (0 = default, 1 = A,...) = 1 if fail DS:SI = address of 64-byte buffer DS:SI = ASCIIZ path specifier AX = 0FH if drive specifier invalid

Note: The returned pathname does not include drive information or the leading "\". 48 Allocate memory Additional Call Registers Result Registers Carry flag = 0 if successful BX = number paragraphs = 1 if fail AX = points to block if successful = 7 if memory control blocks destroyed = 8 if insufficient memory BX = sixe of largest block available if failed 49 Free allocate memory Additional Call Registers Result Registers ES = segment address of block Carry flag = 0 if successful being released = 1 if fail AX =7 memory control blocks destroyed = 9 if invalid memory block address in ES

Note: Frees memory allocated by 48H. 4A Modify memory allocation (SETBLOCK) Additional Call Registers Result Registers ES = segment adddress of block Carry flag = 0 if successful BX = requested new block size = 1 if fail in paragraphs BX = max available block size in failed AX = if memory control blocks destroyed = 9 if invalid memory block address in ES

Note: Dynamically reduces or expands the memory allocated by a previous call to interrupt 21 function 48H.

AH Function of INT 21H 4B Load and/or execute program (EXEC)

Dodatak B

B-45

Additional Call Registers Result Registers DS:DX = address of ASCIIZ path AX = error code if CF not zero and filename to load ES:BX = address of parameter block AL = 0 to load and execute = 3 to load, not execute 4C Terminate a proces (EXIT) Additional Call Registers Result Registers AL = binary return code None

Note: Terminates a process, returning control to parent process or to DOS. A return code can be passed back in AL.

4D Ger return code of a Subprocess (WAIT) Additional Call Registers Result Registers None AL = return code AH = 00 if normal termination = 01 if terminated by ctrl-break = 02 if terminated by critical device error = 03 if terminated by call to interrupt 21

function 31H

Note: Returns the code sent via interrupt 21 function 4CH. The code can be returned only once.

4E Search for first match (FIND FIRST) Additional Call Registers Result Registers DS:DX = address of ASCIIZ Carry flag = 0 if successful file specification = 1 if failed CX = attribute to use in search AX = error code

Note: The filename should contain one or more wildcard characters. Befor this call, a previous call to interrupt 21 function 1AH must set the address of the DTA. If a matching filename is found, the current DTA will be filled in as follows: Bytes 0 - 20 reserved by DOS for use on subsequent search calls 21 : attribute found 22-23 : file time 24-25 : file date 26-27 : file size (least significant word) 28-29 : file size (most significant word) 30-42 : ASCIIZ file specification

AH Function of INT 21H 4F Search for next filename match (FIND NEXT)

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-46

Additional Call Registers Result Registers None Carry flag = 0 if successful = 1 if failed AX = error code

Note: The current DTA must be filled in by a previous interrupt 21 4EH of 4FH call. The DTA will be filled in as outlined on interrupt 21 function 4E.

50 Reserved 51 Reserved 52 Reserved 53 Reserved 54 Get verify state Additional Call Registers Result Registers None AL = 00 if verify OFF = 01 if ventfy ON

Note: The state of the verify flag is changed via interrupt 21 function 2EH. 55 Reserved 56 Rename file Additional Call Registers Result Registers DS:DX = address of old ASCIIZ Carry flag = 0 if successful filename specification = 1 if failed ES:DI = address of new ASCIIZ AX = 2 if file not foun filename specification = 3 if path or file not foun = 5 if access denied = 11H if different device in new name

Note: If a drive specification is used, it must be the same in the old and new filename specifications. However, the directory name may be different, allowing a move and rename in one operation.

AH Function of INT 21H 57 Get/set file date and time

Dodatak B

B-47

Additional Call Registers Result Registers AL = 00 to get Carry flag = 0 if successful = 01 to set = 1 if failed BX = file handle CX = time if getting CX = time if setting DX = date if getting DX = date if setting AX = 1 if function code invalid = 6 if handle invalid

Note: The file must be open before the interrupt. The format of date and time is: TIME: DATE: Bits 0BH-0FH hours (0-23) Bits 09H-0FH year (rel.1980) 05H-0AH minutes (0-59) 05H-08H month (0-12) 00H-04H number of 2- 00H-04H day (0-31) second increments (0-29)

58 Get/set allocation strategy Additional Call Registers Result Registers AL = 00 to get strategy Carry flag = 0 if successful = 01 to set strategy = 1 if failed BX = strategy if setting AX = strategy if getting 00 if first fit = error code if setting 01 if best fit 02 if last fit 59 Get extended error information Additional Call Registers Result Registers BX = 00 AX = extended error code (see Table B.1) BH = error class BL = suggested remedy CH = error locus

Warning! This function destroys the contents of registers CL, DX, SI, DI, BP, DS, and ES. Error codes will change with future version of DOS.

5A Create temporary file Additional Call Registers Result Registers DS:DX = address of ASCIIZ path Carry flag = 0 if successful CX = file attribute = 1 if failed (00 if normal, 01 if read-only, AX = handle if successful 02 if hidden, 04 if system) = error code if failed DS:DX = address of ASCIIZ path specification if successful

Note: Filies created with this interrupt function are nod delted when the program terminates.

AH AL Function of INT 21H 5B Create new file Additional Call Registers Result Registers

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-48

DS:DX = address of ASCIIZ Carry flag = 0 if successful file specification = 1 if failed CX = file attribute AX = handle if successful 00 if normal = error code if failed 01 if read-only 02 if hidden 04 if system

Note: This function works similarly to interrupt 21 function 3CH; however, this function fails if the file already exists, whereas function 3CH truncates the file to length zero.

5C Control record access Additional Call Registers Result Registers AL = 00 to lock, = 01 to unlock Carry flag = 0 if successful BX = file handle = 1 if failed CX:DX = region offset AX = error code SI:DI = region length

Note: Locks or unlocks records in systems that support muitatsking or networking. 5D Reserved 5E 00 Get machine name Additional Call Registers Result Registers DS:DX = address of buffer Carry flag = 0 if successful = 1 if failed CH = 0 if name undefined = 0 if name defined CL = NETBIOS number if successful DS:DX = address of identifier if successful AX = error code

Note: Returns a 15-byte ASCIIZ string computer identifier.

5E 02 Set printer setup Additional Call Registers Result Registers BX = redirection list index Carry flag = 0 if successful CX = setup strength length = 1 if failed DS:DX = address of setup string AX = error code

Note: This function specifies a string that will precede all files sent to the network printer form the local node in a LAN. Microsoft Networks must be running in order to use this function.

AH AL Function of INT 21H 5E 03 Get printer setup Additional Call Registers Result Registers BX = redirection list index Carry flag = 0 if successful

Dodatak B

B-49

ES:DI = address of buffer = 1 if failed AX = error code CX = length of setup string ES:DI = setup string if successful 5F 02 Get redirection list Additional Call Registers Result Registers BX = redirection list index Carry flag = 0 if successful = 1 if failed DS:SI = address of 16- byte BH = device status flag device name buffer bit 1 = 0 if valid device ES:DI = address of 128-byte = 1 in invalid device network name buffer BL = device type CX = parameter value DS:SI = addr. ASCIIZ local device name ES:DI = addr. ASCIIZ network name AX = error flag 5F 03 Redirect device Additional Call Registers Result Registers BL = device type Carry flag = 0 if successful 03 printer = 1 if failed 04 drive AX = error code CX = caller value DS:SI = address of ASCIIZ local device name ES:DI = address of ASCIIZ network name

Note: Used when operating under a LAN, this function allows you to add devices to the network redirection list.

5F 04 Cancel redirection Additional Call Registers Result Registers DS:SI = address of ASCIIZ Carry flag = 0 if successful local device name = 1 if failed AX = error code

Note: Used when operating under a LAN, this function allows you to delete devices from the network radirection list.

60 Reserved AH AL Function of INT 21H 61 Reserved 62 Get PSP (program segment prefix) address

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-50

Additional Call Registers Result Registers None BX = address of PSP

Dodatak B

B-51

A summary of th IBM error codes Table B.16: Extended Error Code Information Code Error 1 invalid function number 2 file not found 3 path not found 4 too many open files 5 access denied 6 invalid handle 7 memory control blocks destroyed 8 insuifficient memory 9 invalid memory block address 10 invalid environment 11 invalid format 12 invalid access code 13 invalid data 14 unknown unit 15 invalid disk drive 16 attempt to remove current directory 17 not same device 18 no more files 19 attempt to write on write-protected diskette 20 unknown unit 21 drive not ready 22 unknown command 23 data error (CRC) 24 bad request structure length 25 seek error 26 unknown media type 27 sector not found 28 printer out of paper 29 write fault 30 read fault 31 general failure 32 sharing violation 33 lock violation 34 invalid disk change 35 FCB unavailable 36 sharing buffer overflow 37-49 reserved 50 network request not supported 51 remote computer not listening 52 duplicate name on network 53 network name not found 54 network busy 55 network device no longer exists 56 net BIOS command limit exceeded 57 network adapter hardware error 58 incorrect response from network 59 unexpected network error 60 incompatible remote adapter 61 print queue full 62 not enough space for print file 63 print file was deleted 64 network name not found 65 access denied

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-52

66 network device typoe incorrect 67 network name not found 68 network name limit exceeded 69 net BIOS session limit exceeded 70 temporarily paused 71 network request not accepted 72 print or disk redirection is paused 73-79 reserved 80 file exists 81 reserved 82 cannot make directory entry 83 fail on INT 24 84 too many redirections 85 duplicate redirection 86 invalid password 87 invalid parameter 88 network device fault

Reprinted by permission from "IBM Disk Operating System Technical Reference" c. 1987 by International Business Machines Corporation.

Dodatak B

B-53

SECTION B.2: MOUSE INTERRUPTS 33H Mouse interrupts are covered in Chapter 6. The following is a partial list of commonly used functions of the mouse handler interrupt, 33H. This interrupt is loaded into the system with the mouse interrupt handler, which is loaded upos reading the "device=" directive in the CONFIG.SYS file. AH Function of INT 33H 00 Initialize the mouse

Additional Call Registers Result Registers None AX = 0H if mouse not available = FFFFH if mouse avasilable BX = number of mouse buttons

Note: This function is called only once to initialize the mouse. If mouse support is present, AX = FFFFH and the mouse driver is intialized, the mouse pointer is set to the center of the screen and concealed.

01 Display mouse pointer Additional Call Registers Result Registers None None

Note: This function displays the mouse pointer and cancels any excusion area. 02 Condeal mouse pointer Additional Call Registers Result Registers None None

Note: This function hides the mouse pointer but the mouse driver monitors its position. Most programs issue this command before they terminate.

03 Get mouse location and button status

Additional Call Registers Result Registers None BX = mouse button status bit 0 - left button bit 1 - right button bit 2 - center button = 0 if up; = 1 if down CX = horizontal position DX = vertical position

Note: The horizontal and vertical coordinates are returned in pixels.

AH Function of INT 33H

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-54

04 Set mouse pointer location

Additional Call Registers Result Registers CX = horizontal position None DX = vertical position

Note: The horizontal and vertical coordinates are in pixels. Will display the mouse pointer only within set limits; will not display in exclusion areas.

05 Get button press information Additional Call Registers Result Registers BX = button: 0 for left; AX = button status 1 for right; 2 for center bit 0 - left button bit 1 - right button bit 2 - center button = 0 if up: = 1 if down BX = button press count CX = horizontal position DX = vertical position

Note: This returns the status of all buttons as well as the number of presses for the button indicated in BX when called. The poisition of the mouse pointer is given in pixels and represents the position at the last button press.

06 Get button release information Additional Call Registers Result Registers BX = button: 0 for left; AX = button status 1 for right; 2 for center bit 0 - left button bit 1 - right button bit 2 - center button = 0 if up: = 1 if down BX = button release count CX = horizontal position DX = vertical position

Note: This returns the status of all buttons as well as the number of presses for the button indicated in BX when called. The poisition of the mouse pointer is given in pixels and represents the position at the last button release.

07 Set horizontal limits for mouse pointer Additional Call Registers Result Registers CX = minimum horizontal position None DX = maximum horizontal position

Note: This sets the horizontal limits (in pixels) for the mouse pointer. After this call, the mouse will be displayed within these limits.

AH Function of INT 33H

Dodatak B

B-55

08 Set vertical limits for mouse pointer Additional Call Registers Result Registers CX = minimum vertical position None DX = maximum vertical position

Note: This sets the vertical limits (in pixels) for the mouse pointer. After this call, the mouse will be displayed within these limits.

10 Set mouse pointer exclusion area Additional Call Registers Result Registers CX = upper left horizontal coordinate None DX = upper left vertical coordinate SI = lower right horizontal coordinate DI = lower right vertical coordinate

Note: This defines an area in which the mouse pointer will not display. An exclusion area can be cancelled by calling functions 00 or 01.

24 Get mouse information Additional Call Registers Result Registers None BH = major version BL = minor version CH = mouse type CL = IRQ number

Note: This returns the version number (e.g., version 7.5: BH = 7, BL = 5). Mouse type: 1 for bus; 2 for serial; 3 for InPort; 4 for PS/2; 5 for HP; IRQ = 0 for PS/2; otherwise = 2, 3, 4, 5 or 7.

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-56

SECTION B.3: BIOS INTERRUPTS

This section covers the most commonly used BIOS interrupts. INT 10H is used extensivbely for graphics programming. INT 11H returns the equipment configuration and INT 12H returns the memory size. INT 14H is used for asynchronous communication. Two functions of INT 15H are included: one to initiate a wait and another to return extended memory size. INT 16H is used for the keyboard and INT 17H for the printer. INT 1AH handles the timer and RTC.

SECTION B.3.1: INT 10H VIDEO FUNCTION CALLS

AH Function 00 Set video mode Additional Call Registers Result Registers AL = video mode None

See Table B.2 for a list of available video modes and their definition. 01 Set cursor type Additional Call Registers Result Registers CH = beginning line of cursor None (bits 0 - 4) CL = ending line of cursor (bits 0 - 4)

Note: All other bits should be set to zero. The blinking of the cursor is hardware controlled. 02 Set cursor position Additional Call Registers Result Registers BH = page number None DH = row DL = column

Note: When using graphics modes, BH must be set to zero. Text coordinates of the upper left-hand corner will be (0.0).

03H Read cursor position and size Additional Call Registers Result Registers BH = page number CH = beginning line of cursor CL = ending line of cursor DH = row DL = column

Note: When using graphics modes, BH must be set to zero. AH Function

Dodatak B

B-57

04H Read light pen position Additional Call Registers Result Registers None AH = 0 if light pen not triggered = 1 if light pen triggered BX = pixel column CH = pixel row (modes 04H - 06H) CX = pixel row (modes 0DG - 13H) DH = character row DL = character column 05H Select active display page Additional Call Registers Result Registers AL = page number None (see Table E-1 below)

Table B.3: Display Pages for Different Modes and Adapters

Mode Pages Adapters 00H 0-7 CGA EGA MCGA VGA 01H 0-7 CGA EGA MCGA VGA 02H 0-3 CGA 0-7 EGA MCGA VGA 03H 0-3 CGA 0-7 EGA MCGA VGA 07H 0-7 EGA VGA 0DH 0-7 EGA VGA 0EH 0-3 EGA VGA 0FH 0-1 EGA VGA 10H 0-1 EGA VGA

All other mode-adapter combinations support only one page.

06 Scroll window up Additional Call Registers Result Registers AL = number of lines to scroll None BH = display attribute CH = y coordinate of top left CL = x coordinate of top left DH = y coordinate of lower right DL = x coordinate of lower right

Note: If AL = 0, the entrire window is blank. Otherwise, the screen will be scrolled upward by the number of lines in AL. Lines scrolling off the top of the screen are lost, blank lines are scrolled in at the bottom according to the attribute in BH.

AH Function

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-58

07 Scroll window down Additional Call Registers Result Registers AL = number of lines to scroll None BH = display sttribute CH = y coordinate of top left CL = x coordinate of top left DH = y coordinate of lower right DL = x coordinate of lower right

Note: If AL = 0, the entrire window is blank. Otherwise, the screen will be scrolled down by the number of lines in AL. Lines scrolling off the bottom of the screen are lost, blank lines are scrolled in at the top according to the attribute in BH.

08 Read character and attribute at cursor position Additional Call Registers Result Registers BH = display page AH = attribute byte AL = ASCII character code 09 Write character and attribute at cursor position Additional Call Registers Result Registers AL = ASCII character code None BH = display page BH = attribute CX = number of characters to write

Note: Does not update cursor position. Use interrupt 10 Function 2 to set cursor position. 0A Write character at cursor position Additional Call Registers Result Registers AL = ASCII character code None BH = display page BL = graphic color CX = number of characters to write

Note: Write character(s) using existing video attribute. Does not update cursor position. Use interrupt 10 Function 2 to set cursor position.

AH Function

Dodatak B

B-59

0B Set color palette Additional Call Registers Result Registers BH = 00H to set border or None background colors = 01H to set palette BL = palette/color

Note: If BH = 00H and in text mode, this function will set the border color only. If BH = 00H and in graphics mode, this function will set background and border colors. If BH = 01H, this function will select the palette. In 320 x 200 four-color graphics, palettes 0 and 1 are available.

Pixel Colors for Palettes 0 and 1 Pixel Palette 0 Palette 1 0 background background 1 green cyan 2 red magenta 3 brown/yellow white

0C Write pixel Additional Call Registers Result Registers AL = pixel value None CX = pixel column DX = pixel row BH = page

Note: Coordinates and pixel value depend on the current video mode. Setting bit 7 of AL causes the pixel value in AL to be XORed with the current value of the pixel.

0D Read pixel Additional Call Registers Result Registers CX = pixel column AL = pixel value DX = pixel row BH = page 0E TTY character output Additional Call Registers Result Registers AL = character None BH = page BL = foreground color

Note: Writes character to the display and updates cursor position. TTY mode indicates minimal character processing. ASCII codes for bell, backspace, linefeed, and carriage return are translated into the appropriate action.

AH AL Function 0F Get video mode

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-60

Additional Call Registers Result Registers None AH = width of screen in characters AL = video mode BH = active display page

Note: See Table B.2 for a list of possible video modes. 10 00 SubFunction 00H: set palette register to color correspondence Additional Call Registers Result Registers AL = 00H None BH = color CL = palette register (00H to 0FH) 10 01 SubFunction 01H: set border color Additional Call Registers Result Registers AL = 01H None BH = border color 10 02 SubFunction 02H: set palette and border Additional Call Registers Result Registers AL = 02H None ES:DX = address of color list 13 Write String Additional Call Registers Result Registers AL = write mode None = 00H, attribute in BL,cursor not moved = 01H, attribute in BL. cursor moved = 02H, attributes follow char, cursor

not moved = 03H, attributes follow char, cursor moved ES:BP = address of string CX = character count DH = initial row position DL = intial column position BH = page

Note: For AL = 00 and 01, the string consists of characters only, which will all be displayed with the attribute in BL. For AL = 02 and 03, the data is stored with the attributes (char, attrib, char, attrib, and so on).

Table B.2: Video Modes and Their Definition char text/ Max Buffer AL Pisels Characters box graph Colors Adapter pages start 00H 320x200 40 x 25 8x8 text 16* CGA 8 B8000h 320x350 40 x 25 8x14 text 16* EGA 8 B8000h

Dodatak B

B-61

360x400 40 x 25 9x16 text 16* VGA 8 B8000h 320x400 40 x 25 8x16 text 16* MCGA 8 B8000h 01H 320x200 40 x 25 8x8 text 16 CGA 8 B8000h 320x350 40 x 25 8x14 text 16 EGA 8 B8000h 360x400 40 x 25 9x16 text 16 VGA 8 B8000h 320x400 40 x 25 8x16 text 16 MCGA 8 B8000h 02H 640x200 80 x 25 8x8 text 16* CGA 8 B8000h 640x350 80 x 25 8x14 text 16* EGA 8 B8000h 720x400 80 x 25 9x16 text 16* VGA 8 B8000h 640x400 80 x 25 8x16 text 16* MCGA 8 B8000h 03H 640x200 80 x 25 8x8 text 16 CGA 8 B8000h 640x350 80 x 25 8x14 text 16 EGA 8 B8000h 720x400 80 x 25 9x16 text 16 VGA 8 B8000h 640x400 80 x 25 8x16 text 16 MCGA 8 B8000h 04H 320x200 40 x 25 8x8 graph 4 CGA 4 B8000h 320x200 40 x 25 8x8 graph 4 EGA 1 B8000h 320x200 40 x 25 8x8 graph 4 VGA 1 B8000h 320x200 40 x 25 8x8 graph 4 MCGA 1 B8000h 05H 320x200 40 x 25 8x8 graph 4* CGA 1 B8000h 320x200 40 x 25 8x8 graph 4* EGA 1 B8000h 320x200 40 x 25 8x8 graph 4* VGA 1 B8000h 320x200 40 x 25 8x8 graph 4* MCGA 1 B8000h 06H 640x200 80 x 25 8x8 graph 2 CGA 1 B8000h 640x200 80 x 25 8x8 graph 2 EGA 1 B8000h 640x200 80 x 25 8x8 graph 2 VGA 1 B8000h 640x200 80 x 25 8x8 graph 2 MCGA 1 B8000h 07H 720x350 80 x 25 9x14 text mono MDA 8 B8000h 720x350 80 x 25 9x14 text mono EGA 4 B8000h 720x400 80 x 25 9x16 text mono VGA 8 B8000h 08H reserved 09H reserved 0AH reserved 0BH reserved 0CH reserved 0DH 320x200 40 x 25 8x8 graph 16 EGA 2/4 A0000h 320x200 40 x 25 8x8 graph 16 VGA 8 A0000h 0EH 640x200 80 x 25 8x8 graph 16 EGA 1/2 A0000h 640x200 80 x 25 8x8 graph 16 VGA 4 A0000h 0EH 640x350 80 x 25 9x14 graph mono EGA 1 A0000h 640x350 80 x 25 8x14 graph mono VGA 2 A0000h 10H 640x350 80 x 25 8x8 graph 4 EGA 1/2 A0000h 640x350 80 x 25 8x14 graph 16 VGA 2 A0000h 11H 640x480 80 x 30 8x16 graph 2 VGA 1 A0000h 640x480 80 x 30 8x16 graph 2 MCGA 1 A0000h 12H 640x480 80 x 30 8x16 graph 16 VGA 1 A0000h 13H 320x200 40 x 25 8x8 graph 256 VGA 1 A0000h 320x200 40 x 25 8x8 graph 256 MCGA 1 A0000h

* - color burst off

SECTION B.3.2: -- INT 11H - EQUIPMENT DETERMINATION

Get equipment configuration

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-62

Call Registers Result Registers None AX = equipment coee (see below)

Note: BIOS data area 40:10 is set during POST according to the equipment code word, which shows the optional equipment that is attached to the systsem.

Equipment Code Word

d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0

floppy disk drive installedmath coprocessor installedpointing device installednot usedinitial video mode (see below)floppy drives (see below)not usednumber RS-232 cardsnot usedintermal modern installednumber printers installed

Initial Video Mode Number of Floppy Drives 00 = Reserved 00 = 1 drive 01 = 40x25 color 01 = 2 drives 10 = 80x25 color 11 = 80x25 monochrome

SECTION B.3.3: -- INT 12H - MEMORY SIZE DETERMINATION

Get Conventional Memory Size Call Registers Result Registers None AX = memory size (kB)

Note: Returns amount of conventional memory available to DOS and application programs.

SECTION B.3.4 -- INT 14H - ASYNCHRONOUS COMMUNICATION

AH Function

Dodatak B

B-63

00 Initialize COM Port Additional Call Registers Result Registers AL = parameter (see below) AH = port status (see below) DX = port number (0 if COM1. AL = modem status (see below0 1 if COM2, etc.)

Note 1: The parameter byte in AL is defined as follows.

7 6 5 4 3 2 1 0 Indicates x x x Baud rate (000=110, 001=150, 010=300, 011=600, 100=1200, 101=2400, 110=4800, 111=9600) x x Parity (01=odd, 11=even, x0=none) x Stop bits (0=1, 1=2) x x Word length (10=7 bits, 11=8 bits) Note 2: The port status returned in AH is defined as follows: 7 6 5 4 3 2 1 0 Indicates 1 Timed-out 1 Transmit shift register empty 1 Transmit holding register empty 1 Break detected 1 Framing error detected 1 Party error detected 1 Overrun error detected

1 Received data ready

Note 3: The modem status returned in AL is defined as follows: 7 6 5 4 3 2 1 0 Indicates 1 Received line signal detect 1 Ring indicator 1 DSR (data set ready) 1 CTS (clear to send) 1 Change in receive line signal detect 1 Trailing edge ring indicator 1 Change in DSR status 1 Change in CTS status

AH Function 01 Write character to COM Port

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-64

Additional Call Registers Result Registers AL = character AH bit 7 = 0 if successful, 1 if not DX = port number (0 if COM1, AH bits 0 - 6 = status if successful 1 if COM2, etc.) AL = character

Note: The status byte in AH, bits 0 - 6, after the call is as follows:

7 6 5 4 3 2 1 0 Indicates 1 Transmit shift register empty 1 Transmit holding register empty 1 Break detected 1 Framing error detected 1 Party error detected 1 Overrun error detected 1 Received data ready

02 Read character from COM Port Additional Call Registers Result Registers DX = port number (0 if COM1, AH bit 7 = 0 iv successful, 1 if not AH bits 0 - 6 = status if successful 1 if COM2, etc.) AL = character read

Note: The status byte in AH, bits 1 - 4, after the call is as follows:

4 3 2 1 Indicates 1 Break detected 1 Framing error detected 1 Party error detected 1 Overrun error detected

03 Read COM Port Status Additional Call Registers Result Registers DX = port number (0 if COM1, AH = port status 1 if COM2, etc.) AL = modem status

Note: The port status and modem status returned in AH and AL are the same format as INT 14H function 00H, described above.

AH Function 04 Extended Initialize COM Port

Additional Call Registers Result Registers AL = 00H (break), 01H (no break) AH = port status (see function AH=0)

Dodatak B

B-65

DX = port number (0 if COM1, AL = modem status (see function AH=0) 1 if COM2, etc.) BH = parity = 00H none = 01H odd = 02H even = 03H stick parity odd = 04H stick parity even BL = stop bits = 00H (one stop bit) = 01H (1,5 bits for 5-bit word) = 01H (2 bits for > 5-bit word) CH = word length = 00H 5-bit = 01H 6-bit = 02H 7-bit = 03H 8-bit CL = baud rate = 00H 110 baud = 01H 150 baud = 02H 300 baud = 03H 600 baud = 04H 1200 baud = 05H 2400 baud = 06H 4800 baud = 07H 9600 baud = 08H 19200 baud 05 Extended COM Port Control

Additional Call Registers Result Registers AL = 00H (read control register) If read subfunction, = 01H (write to control register) BL = modem control register DX = port number (0 if COM1, If write subfunction, 1 if COM2, etc.) AL = modem status BL = Modem control register AH = line status bits 7 - 5 reserved bit 4: loop bit 3: out2 bit 2: out1 bit 1: RTS bit 0: DTR

Note: Subfunction AL = 00H returns the modem control register contents in BL. Subfunction AL = 01H writes the contents of BL into the modem control register and returns modem and line status register contents in AL and AH.

SECTION B.3.5: -- INT 15H - SYSTEM SERVICES

AH Function 86 Wait

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-66

Additional Call Registers Result Registers CX:DX time to wait in ms CF = 0 for successful wait = 1 if wait not performed

Note: The duration of the wait always be a multiple of 976 microseconds. 88 Extended memory size determination Additional Call Registers Result Registers None AX = extended memory (kB)

Note: Returns the amount of installed extended memory in kB, that is, the memory beginning at address 100000H, as determined by the POST. If DOS memory management is in control. 0 will be returned in AX even if you have extended memory.

SECTION B.3.6: -- INT 16H - KEYBOARD

AH Function 00 Keyboard read Additional Call Registers Result Registers None AH = key scan code AL = ASCII char

Note: Reads one character from the keyboard buffer and updates the head pointer. 01 Get keyboard status Additional Call Registers Result Registers None If no key waiting, ZF = 1. If key waiting, ZF = 0, AH = key scan code, AL = ASCII char.

Note: If a key is waiting, the scan code and character are returned in AH and AL, but the head pointer of the keyboard buffer is not updated.

AH Function 02 Get shift status Additional Call Registers Result Registers None AL = status byte

Dodatak B

B-67

bit 7: Insert pressed bit 6: Caps Lock pressed bit 5: Num Lock pressed bit 4: Scroll Lock pressed bit 3: Alt pressed bit 2: Ctrl pressed bit 1: Left Shift pressed bit 0: Right Shift pressed

Note: The keyboard status byte returned in AL indicates whether certain keys have been pressed. If the bit = 1, the key has been pressed.

03 Set typematic rate Additional Call Registers Result Registers AL = 05H None BH = repeat delay (see below) BL = repeat rate (see below)

Note: Sets the rate at which repeated keystrokes are accepted. The delay value in BH can be 00H (for 250), 01H (for 500), 02H (for 750), or 03H (for 1000). All values are in milliseconds. The repeat rate in BL represents the number of characters per second. Options are: 00H: 30.0 0BH: 10.9 16H: 4.3 01H: 26.7 0CH: 10.0 17H: 4.0 02H: 24.0 0DH: 9.2 18H: 3.7 03H: 21.8 0EH: 8.6 19H: 3.3 04H: 20.0 0FH: 8.0 1AH: 3.0 05H: 18.5 10H: 7.5 1BH: 2.7 06H: 17.1 11H: 6.7 1DH: 2.5 07H: 16.0 12H: 6.0 1DH: 2.3 08H: 15.0 13H: 5.5 1EH: 2.1 09H: 13.3 14H: 5.0 1EH: 2.0 0AH: 12.0 15H: 4.6 20H to FFH - reserved

10 Extended keyboard read Additional Call Registers Result Registers None AH = key scan code AL = ASCII char

Note: Used in place of INT 16H function 00H to allow program to detect F11, F12, and other keys of the extended keyborad. After the read, the head pointer of the keyboard buffer is updated.

AH Functrion 11 Extended keyboard status Additional Call Registers Result Registers None If no key waiting,

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-68

ZF = 1. If key waiting, ZF = 0, AH = key scan code, AL = ASCII char.

Note: This function is used instead of INT 16H function 01H so that programs can detect keys of the extended keyboard such as F11 and F12. If a key is waiting, the scan code and character are returned in AH and AL, but the head pointer of the keyboard buffer is not updated.

12 Extended shift status Additional Call Registers Result Registers None AL = shift status bit 7: Insert locked bit 6: Caps Lock locked bit 5: Num Lock locked bit 4: Scroll Lock locked bit 3: Alt pressed bit 2: Ctrl pressed bit 1: Left Shift pressed bit 0: Right Shift pressed AH = extended shift status bit 7: SysRq pressed bit 6: Caps Lock pressed bit 5: Num Lock pressed bit 4: Scroll Lock pressed bit 3: Right Alt pressed bit 2: Right Ctrl pressed bit 1: Left Alt pressed bit 0: Left Ctrl pressed

Note: The keyboard status byte returned in AL and AH indicate whether certain keys have been pressed. If the bit = 1, the key has been pressed.

SECTION B.3.6 -- INT 17H - PRINTER

AH Function

Dodatak B

B-69

00 Print charactrer Additional Call Registers Result Registers AL = character to print AL = status DX = printer (0 for LPT1, bit 7: printer not busy 1 for LPT2, 2 for LPT3) bit 6: printer acknowledge bit 5: out of paper bit 4: printer selected bit 3: I/O error bits 2-1: reserved bit 0: printer timed-out 01 Initilize port Additional Call Registers Result Registers AL = status (see function 00h) DX = printer (0 for LPT1, 1 for LPT2, 2 for LPT3) 02 Read status Additional Call Registers Result Registers AL = status (see function 00h) DX = printer (0 for LPT1, 1 for LPT2, 2 for LPT3)

SECTION B.3.7 -- INT 1AH TIMER AND REAL-TIME CLOCK SERVICES

AH Function 00 Read system-timer time counter Additional Call Registers Result Registers None CX = high portion of count DX = low portion of count AL = 0 if 24 hours has not passed sincew last read > 0 if 24 has passed since last read

Note: This function returns the number of ticks since midnight. A second is about 18.2 ticks. When the number of tivcks indicates that 24 hours has-passed, AL is incremented and the tick count is reset to zero. Calling this function resets AL so that whether 24 hours has passed can only be determined once a day.

AH Function 01 Set system-timer time conter Additional Call Registers Result Registers

Zbirka zadataka iz Mikroprocesora i mikrora~unara

B-70

CX = high portion of tick count None DX = low portion of tick count

Note: Calling this function will cause the timer overflow flag to be reset. 02 Read real-time clock time Additional Call Registers Result Registers None CH = hours CL = minutes DH = seconds DL = 01 for daylight savings option = 00 for no option CF = 0 if clock operating, otherwise = 1

Note: Hours, minutes, and seconds are returned in BCD format. This function is used to get the time in the CMOS time/date chip.

03 Set real-time clock time Additional Call Registers Result Registers CH = hours None CL = minutes DH = seconds DL = 01 for daylight savings option = 00 for no option

Note: Nours, minutes, and seconds are in BCD format. This function is used to set the time in the CMOPS time/date chip.

04 Read real-time clock date Additional Call Registers Result Registers None CH = century (19 od 20) CL = year DH = month DL = day CF = 0 if clock operating, otherwise = 1

Note: Century, year, month and day are in BCD format. This function is used to get the time in the CMOS time/date chip.

AH Function 05 Set real-time clock date Additional Call Registers Result Registers

Dodatak B

B-71

CH = century (19 od 20) None CL = year DH = month DL = day

Note: Century, year, month and day are in BCD format. This function is used to set the date in the CMOS time/date chip.

Dodatak C

Skup instrukcija mikropocesora MIPS

Name Register number Usage Preserved on call?

$zero 0 the constant value 0 n.a. $v0-$v1 2-3 values for results and expression

evalution no

$a0-$a3 4-7 arguments yes $t0-$t7 8-15 temporaries no $s0-$s7 16-23 saved yes $t8-$t9 24-15 more tempporaries no $gp 28 global pointer yes $sp 29 stack pointer yes $fp 30 frame pointer yes $ra 31 return address yes Figure 3.13. MIPS register convention. Register 1, called $at, is reserved for the assembler (see section 3.9), and registers 26-27, called $k0-$k1, are reserved for the operationg system. MIPS operands

Name Example Comments 32 registers $s0-$s7, $t0-$t9, $gp, Fast locations for data, In MIPS, data must be in

Zbirka zadataka iz Mikroprocesorskih sistema

$fp, $zero, $sp, $ra, $at, Hi, Lo

registers to perform arithmetic. MIPS register $zero always equals 0. Register $at is reserved for the assumbler to handle large constants. Hi and Lo contain the results of multiply and divide.

230 memory words

Memory [0], Memory [4], ..., Memory [4294967292]

Accessed only by data transfer instructions. MIPS uses byte addresses, so sequential words differ by 4. Memory holds data structures, such as arrays, and spilled registers, such as those saved on procedure calls.

MIPS assembly language Category Instruction Example Meaning Comments

add add $sl, $s2, $s3 $s1 = $s2 + $s3 Three operands; overflow detected

subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Three operands; overflow detected

add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 + constant; overflow detected add unsigned addu $s1, $s2, $s3 $s1 = $s2 + $s3 Three operands; overflow

undetected subtract unsigned subu $sl, $s2, $s3 $s1 = $s2 - $s3 Three operands; overflow

undetected add immediate unsigned

addiu $s1, $s2, 100 $s1 = $s2 + 100 + constant; overflow undetected

move from coporocessor register

mfc0 $s1, $epc $s1 = $epc Used to copy Exception PC plus other special registers

multiply mult $s2, $s3 Hi, Lo = $s2 * $s3 64-bit signed product in Hi, Lo multiply unsigned multu $s2, $s3 Hi, Lo = $s2 * $s3 64-bit unsigned product in Hi,

Lo divide div $s2, $s3 Lo = $s2/ $s3,

Hi = $s2 mod $s3 Lo = quotient, Hi = remainder

divide unsigned divu $s2, $s3 Lo = $s2/ $s3, Hi = $s2 mod $s3

Unsigned quotient and remainder

move from Hi mfhi $s1 $s1 = Hi Used to get copy of Hi

Arithmetic

move from Lo mflo $s1 $s1 = Lo Used to get copy of Lo and and $s1, $s2, $s3 $s1 = $s2 & $s3 Three reg. operands; logical

AND or or $s1, $s2, $s3 $s1 = $s2 ! $s3 Three reg. operands; logical OR and immediate andi $s1, $s2, 100 $s1 = $s2 & 100 Logical AND reg. constant or ori $s1, $s2, 100 $s1 = $s2 ! 100 Logical OR reg. constant shiftr left logical sll $s1, $s2, 10 $s1 = $s2 << 10 Shift left by constant

Logical

shift right logical srl $s1, $s2, 10 $s1 = $s2 >> 10 Shift right by constant load word lw $s1, 100($s2) $s1 = Memory

[$s2+100] Word from memory to register

store word sw $s1, 100($s2) Memory [$s2+100]= $s1

Word from register to memory

Dodatak C

load byte unsigned lbu $s1, 100($s2) $s1 = Memory [$s2+100]

Byte from memory to register

store byte sb $s1, 100($s2) Memory [$s2+100]= $s1

Byte from register to memory

Data transfer

load upper immediate

lui $s1, 100 $s1 = 100*216 Loads constant in upper 16 bits

branch on equal beq $s1, $s2, 25 if ($s1 ==$s2) go to PC + 4 + 100

Equal test; PC relative branch

branch on not equal bne $s1, $s2, 25 if ($s1!=$s2) go to PC + 4 + 100

Not equal test; PC relative

set on less than slt $s1, $s2, $s3 if($s2< $s3) $s1 = 1; else $s1 = 0

Compare less than; two's complement

set less than immediate

slti $s1, $s2, 100 if ($s2< 100) $s1 = 1; else $s1 = 0

Compare < constant; two's complement

set less than unsigned

sltu $s1, $s2, $s3 if($s2< $s3) $s1 = 1; else $s1 = 0

Compare less than; natural numbers

Conditional branch

set less than unsigned immediate

sltiu $s1, $s2, 100 if($s2< 100) $s1 = 1; else $s1 = 0

Compare < constant; natural numbers

jump j 2500 go to 10000 Jump to target address jump register jr $ra go to $ra For switch, procedure return

Unconditi-onal jump jump and link jal 2500 $ra =PC+4; go to

10000 For procedure call

Main MIPS assembly language instruction set. The floating-point instructions are shown in Figure 4.47 on page 291. Appendix A gives the full MIPS assembly language instructgion set. MIPS machine Language Example Name Format 6 bits 5 bits 5 bits 5 bits 5 bits 6

bits Coments

add R 0 2 3 1 0 32 add $1, $2, $3 sub R 0 2 3 1 0 34 sub $1, $2, $3 addi I 8 2 1 100 addi $1, $2,100 addu R 0 2 3 1 0 33 addu $1, $2, $3 subu R 0 2 3 1 0 35 subu $1, $2, $3 addiu I 9 2 1 100 addiu $1,$2,100 mfc0 R 16 0 1 14 0 0 mfc0 $1, $epc mult R 0 2 3 0 0 24 mult $2, $3 multu R 0 2 3 0 0 25 multu $2, $3 div R 0 2 3 0 0 26 div $2, $3 divu R 0 2 3 0 0 27 divu $2, $3 mfhi R 0 0 0 1 0 16 mfhi $1 mflo R 0 0 0 1 0 18 mflo $1 and R 0 2 3 1 0 36 and $1, $2, $3 or R 0 2 3 1 0 37 or $1, $2, $3 andi I 12 2 1 100 andi $1, $2,100

Zbirka zadataka iz Mikroprocesorskih sistema

ori I 13 2 1 100 ori $1, $2,100 sll R 0 0 2 1 10 0 sll $1, $2, 10 srl R 0 0 2 1 10 2 srl $1, $2, 10 lw I 35 2 1 100 lw $1,100($2) sw I 43 2 1 100 sw $1,100($2) lui I 15 0 1 100 lui $1,100 beq I 4 1 2 25 beq $1,$2,100 bne I 5 1 2 25 bne $1,$2,100 slt R 0 2 3 1 0 42 slt $1, $2, $3 slti I 10 2 1 100 slti $1,$2,100 sltu R 0 2 3 1 0 43 sltu $1, $2, $3 sltiu I 11 2 1 100 sltiu $1,$2,100 j J 2 2500 j 10000 jr R 0 31 0 0 0 8 jr $31 jal J 3 2500 jal 10000 MIPS Instruction formats

Name Flelds Comments Field size 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits All MIPS instructions 32 bits R-format op rs rt rd shamt funct Arithemetic instruction format I-Format op rs rt address/immediate Arithemetic instruction format J-Format op target address Jump instruction format Main MIPS machine language, Formats and examples are shown, with values in each field: op and funct fields form the opcode (each 6 bits), rs field gives a source register (5 bits), rt is also normally a source register (5 bits), rd is the destination register (5 bits), and shamt supplies the shift amount (5 bits). The field values are all in decimal. Floating-point machine language instructions are shown in Figure 4.47 on page 291. Appendix A gives the full MIPS machine language. MIPS floating-point operands Name Example Comments 32 floating point registers

$f0, $f1, $f2..., $f31, MIPS floating -point registers are used in pairs for double precision numbers.

230 memory words Memory [0], Memory [4], ...., Memory [4294967292]

Accessed only by data transfer instructions. MIPS uses byte addresses, so sequential words differ by 4. Memory holds data structures, such as arrays, and spilled registers, such as those saved on procedure calls.

MIPS floating-point assembly language

Category Instruction Example Meaning Comments FP add single add.s $f2, $f4, $f6 $f2 = $f4 + $f6 FP add (single precision)

Dodatak C

FP subtract single sub.s $f2, $f4, $f6 $f2 = $f4 - $f6 FP sub (single precision) FP multiply single mul.s $f2, $f4, $f6 $f2 = $f4 * $f6 FP. multiply(single

precision) FP divide single div.s $f2, $f4, $f6 $f2 = $f4 / $f6 FP divide (single precision) FP add double add.d $f2, $f4, $f6 $f2 = $f4 + $f6 FP add (double precision) FP subtract double sub.d $f2, $f4, $f6 $f2 = $f4 - $f6 FP sub (double precision) FP multiply double mul.d $f2, $f4, $f6 $f2 = $f4 * $f6 FP multiply (double

precision) FP divide double div.d $f2, $f4, $f6 $f2 = $f4 / $f6 FP divide (double

precision) load word copr.1 lwc1 $f1, 100($s2) $f1 = Memory

[$s2+100] 32-bit data to FP register

Data transfer store word copr.1 swc1 $f1,100($s2) Memory[$s2+100]

=$f1 32-bit data to memory

branch on FP true bclt 25 if(cond==1) go to PC+4+100

PC relative branch if FP cond.

branch on FP false bclf 25 if(cond==0) go to PC+4+100

PC relative branch if not cond.

FP compare single (eq.ne.lt.le.gt.ge)

c.lt.s $f2, $f4 if($f2 < $f4) cond=1; else cond = 0

FP compare less than single precision

Conditional branch

FP compare double c.lt.d $f2, $f4 if($f2 <$f4) (eq.ne.lt.le.gt.ge) cond=1; else cond = 0

FP compare less than single precision

MIPS floating-point machine language Name Format Example Comments add.s R 17 16 6 4 2 0 add.s $f2, $f4 $f6 sub.s R 17 16 6 4 2 1 sub.s $f2, $f4 $f6 mul.s R 17 16 6 4 2 2 mul.s $f2, $f4 $f6 div.s R 17 16 6 4 2 3 div.s $f2, $f4 $f6 add.d R 17 17 6 4 2 0 add.d $f2, $f4 $f6 sub.d R 17 17 6 4 2 1 sub.d $f2, $f4 $f6 mul.d R 17 17 6 4 2 2 mul.d $f2, $f4 $f6 div.d R 17 17 6 4 2 3 div.d $f2, $f4 $f6 lwc1 I 49 20 2 100 lwc1 $f2, 100($s4) swc1 I 57 20 2 100 swc1 $f2, 100($s4) bc1t I 17 8 1 25 bc1t 25 bc1f I 17 8 0 25 bc1f 25 c.lt.s R 17 16 4 2 0 60 c.lt.s $f2, $f4 c.lt.d R 17 17 4 2 0 60 c.lt.d $f2, $f4 Field size

6 bits

5 bits

5 bits

5 bits

5 bits

6 bits

All MIPS instruction 32 bits

Figure 4.47 MIPS floating-point architecture revealed thus far. See Appendix A, section A.10, on page a-49, for more detail.

Arithmetic and Logical Instructions

Zbirka zadataka iz Mikroprocesorskih sistema

Absolute value abs rdest, rsrc pseudoinstruction Put the absolute value of register rsrc in register rdest. Addition (with overflow)

add rd, rs, rt 0 rs rt rd 0 0x20 6 5 5 5 5 6 Addition (without overflow) addu rd, rs, rt 0 rs rt rd 0 0x21 6 5 5 5 5 6 Put the sum of registers rs and rt into register rd. Addition immediate (without overflow) addi rt, rs, imm 8 rs rt imm 6 5 5 16 Addition immediate (without overflow) addi rt, rs, imm 9 rs rt imm 6 5 5 16 Put the sum of register rs and sign-extended immediate into register rt. AND and rd, rs, rt 0 rs rt rd 0 0x24 6 5 5 5 5 6 Put the logical AND of registers rs and rt into register rd. AND immediate andi rd, rs, imm

0xc rs rt imm 6 5 5 16

Put the logical AND of register rs and the zero-extended immediate into register rt. Divide (with overflow) div rs, rt 0 rs rt 0 0x1a 6 5 5 10 6 Divide (without overflow) divu rs, rt 0 rs rt 0 0x1b 6 5 5 10 6 Divide register rs by register rt. Leave the quotient in register lo and the remainder in register hi. Note that if a operands is negative, the remainder is unspecified by the MIPS architecture and depends on the convention of the machine on which SPIM is run. Divide (with overflow)

Dodatak C div rdest, rsrcl, src2 pseudoinstruction Divide (without overflow) divu rdest, rsrcl, src2 pseudoinstruction Put the quotient of register rsrc1 and src2 into register rdest. Multiply mult rs, rt 0 rs rt 0 0x18 6 5 5 10 6 Unsigned multiply multu rs, rt 0 rs rt 0 0x19 6 5 5 10 6 Multiply register rs and rt. Leave the low-order word of the product in register lo and the high-order word in register hi. Multiply (without overflow) mul rdest, rsrcl, src2 pseudoinstruction Multiply (with overflow) mulo rdest, rsrcl, src2 pseudoinstruction Unsigned multiply (with overflow) mulou rdest, rsrcl, src2 pseudoinstruction Put the product of register rsrc1 and src2 into register rdest. Negate value (with overflow) neg rdst, rsrc pseudoinstructrion Negate value (without overflow) negu rdst, rsrc pseudoinstruction Put the negative of register rsrc into register rdst. NOR nor rd, rs, rt 0 rs rt rd 0 0x27 6 5 5 5 5 6 Put the logical NOR of registers rs and rt into register rd. NOT not rdest, rsrc pseudoinstruction Put the bitwise logical negation of register rsrc into register rdest. OR or rd, rs, rt 0 rs rt rd 0 0x25

Zbirka zadataka iz Mikroprocesorskih sistema 6 5 5 5 5 6 Put the logical OR of registers rs and rd into register rt. OR immediate ori rt, rs, imm 0xd rs rt imm 6 5 5 16 Put the logical OR of register rs and zero-extended immediate into register rt. Remainder rem rdest, rsrc1, rsrc2 pseudoinstruction Unsigned remainder remu rdest, rsrc1, rsrc2 pseudoinstruction Put the remainder od register rsrc1 divided by register rsrc2 into register rdest. Note that if an operand is negative, the remainder is unspecified by the MIPS architecture and depends on the convention of the machine on which SPIM is run. Shift left logical sll rd, rt, shamt 0 rs rt rd shamt 0 6 5 5 5 5 6 Shift left logical variable sllv rd, rt, rs 0 rs rt rd 0 4 6 5 5 5 5 6 Shift right arithmetic sra rd, rt, shamt 0 Rs Rt Rd shamt 3 6 5 5 5 5 6 Shift right arithmetic variable srav rd, rt, rs 0 rs rt rd 0 7 6 5 5 5 5 6 Shift right logical sra rd, rt, shamt 0 rs rt rd shamt 2 6 5 5 5 5 6 Shift right logical variable srlv rd, rt, rs 0 rs rt rd 0 6 6 5 5 5 5 6 Shift register rt left (right) by the distance indicated by immediate shamt or the register rs and put the result in register rd.

Dodatak C Rotate left rol rdest, rsrc1, rsrc2 pseudoinstruction Rotate right ror rdest, rsrc1, rsrc2 pseudoinstruction Rotate register rsrc1 left(right) by the distance indicated by rsrc2 and put the result in register rdest. Subtract (with overflow) sub rd, rs, rt 0 rs rt rd 0 0x22 6 5 5 5 5 6 Subtract (without overflow) subu rd, rs, rt 0 rs rt rd 0 0x23 6 5 5 5 5 6 . Put the difference of register rs and rt into register rd. Exclusive OR xor rd, rs, rt 0 rs rt rd 0 0x26 6 5 5 5 5 6 Put the logical XOR of registers rs and rt into register rd. XOR immedliate xori rt, rs, imm 0xe rs rt imm 6 5 5 16 Put the logical XOR of registers rs and the zero-extended immediate into register rt. Constant-Manipulating Instructions Load upper Immedliate lui rt, imm 0xf rs rt imm 6 5 5 16 Load the lower halfword of the immediate imm into the upper halfword of registers rt. The lower bits of the register are set to 0. Load Immediate li rdest, imm pseudoinstruction Move the immediate imm into register rdest. Comparison Instructions Set less than slt rd, rs, rt 0 rs rt rd 0 0x2a 6 5 5 5 5 6 Set less than unsigned

Zbirka zadataka iz Mikroprocesorskih sistema sltu rd, rs, rt 0 rs rt rd 0 0x2b 6 5 5 5 5 6 Set register rd to 1 if register rs is less than rt, and to 0 otherwise. Set less than Immediate slti rd, rs, imm 0xa rs rd imm 6 5 5 16 Set less than unsigned Immediate sltiu rd, rs, imm 0xb rs rd imm 6 5 5 16 Set register rd to 1 if register rs is less than the sign-extended immediate, and to 0 otherwise. Set equal seq rdest, rsrc1, rsrc2 pseudoinstruction Set register rdest to 1 if register rsrc1 equals rsrc2, and to 0 otherwise. Set greater than equal sge rdest, rsrc1, rsrc2 pseudoinstruction Set greater than equal unsigned sgeu rdest, rsrc1, rsrc2 pseudoinstruction Set register rdest to 1 if register rsrc1 is greater than or equal to rsrc2, and to 0 otherwise. Set greater than sgt rdest, rsrc1, rsrc2 pseudoinstruction Set greater than unsigned sgtu rdest, rsrc1, rsrc2 pseudoinstruction Set register rdest to 1 if register rsrc1 is greater than rsrc2, and to 0 otherwise. Set less than equal sle rdest, rsrc1, rsrc2 pseudoinstruction Set less than equal unsigned sleu rdest, rsrc1, rsrc2 pseudoinstruction Set register rdest to 1 if register rsrc1 is less than or equal to rsrc2, and to 0 otherwise. Set not equal sne rdest, rsrc1, rsrc2 pseudoinstruction Set register rdest to 1 if register rsrc1 is not equal to rsrc2, and to 0 otherwise. Branch Instructions

Dodatak C Branch instructions use a signed 16-bit instruction offset field; hence they can jump 2**15 - 1 instructions (not bytes) forward or 2**15 instructions backwards. The jump instruction contains a 26-bit address field. In the descriptions below, the offsets are not specified. Instead, the instructins branch to a label. This is the form used in most assembly language programs because the distance between instructions is difficult to calculate when pseudoinstructions expand into several real instructions. Branch Instruction b label pseudoinstruction Unconditionally branch to the instruction at the label. Branch coprocessor z true bczt label 0x1z 8 1 Offset 6 5 5 16 Branch coprocessor z false bczf label 0x1z 8 0 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if z's condition flag is true (false). z is 0, 1, 2, or 3. The floating-point unit is z = 1. Branch on equal beq rs, rt, label 4 rs rt Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs equals rt. Branch on greater than equal zero bgez rs, label 1 rs 1 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is greater than or equal to 0. Branch on greater than equal zero and link bgezal rs, label 1 rs 0x11 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is greater than or equal to 0. Save the address of the next instruction in register 31. Branch on greater than zero bgtz rs, label 7 rs 0 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is greater than 0. Branch on less than equal zero blez rs, label 6 rs 0 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is less than or equal to 0.

Zbirka zadataka iz Mikroprocesorskih sistema Branch on less than equal link bltzal rs, label 1 rs 0x10 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is less than 0. Save the address of the next instruction in register 31. Branch on less than zero bltz rs, label 1 rs 0 Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is less than 0. Branch on not equal bne rs, label 5 rs rt Offset 6 5 5 16 Conditionally branch the number of instructions specified by the offset if register rs is not equal to rt. Branch on equal zero beqz rsrc, label pseudoinstruction Conditionally branch to the instructions at the label if rsrc1 equals 0. Branch on greater than equal bge rsrc1, rsrc2, label pseudoinstruction Branch on greater the equal unsigned bgeu rsrc1, rsrc2, label pseudoinstruction Conditionally branch to the instruction at the label if register rsrc1 is greater than or equal to rsrc2. Branch on greater than bgt rsrc1, rsrc2, label pseudoinstruction Branch on greater then unsigned bgtu rsrc1, rsrc2, label pseudoinstruction Conditionally branch to the instruction at the label if register rsrc1 is greater than rsrc2. Branch on less than equal ble rsrc1, rsrc2, label pseudoinstruction Branch on less then equal unsigned bleu rsrc1, rsrc2, label pseudoinstruction Conditionally branch to the instruction at the label if register rsrc1 is less than or equal to rsrc2. Branch on less than blt rsrc1, rsrc2, label pseudoinstruction

Dodatak C Branch on less than unsigned bltu rsrc1, rsrc2, label pseudoinstruction Conditionally branch to the instruction at the label if register rsrc1 is less than rsrc2. Branch on not equal zero bnez rsrc, label pseudoinstruction Conditionally branch to the instruction at the label if register rsrc is not equal to 0. Jump Instructions Jump J target

2 target 6 26

Unconditionally jump to the instruction at target. Jump and link jal target 3 target 6 26 Unconditionally jump to the instruction at target. Save the address of the next instruction in register rd. Jump and link register jalr rs, rd 0 rs 0 rd 0 9 6 5 5 5 5 6 Unconditionally jump to the instruction whose address is in register rs. Save the address of the next instruction in register rd (which defaults to 31). Jump register jr rs 0x0 rs 0 0x8 6 5 16 5 Unconditionally jump to the instruction whose address is in register rs. Load address la rdest, address pseudoinstruction Load computed address-not the contents of the location-into register rdest. Load byte lb rt, address 0x20 rs rt Offset 6 5 5 16 Load unsigned byte lbu rt, address 0x24 rs rt Offset 6 5 5 16

Zbirka zadataka iz Mikroprocesorskih sistema Load the byte at address into register rt. The byte is sign-extended by lb, but not by lbu. Load halfword lh rt, address 0x21 rs rt Offset 6 5 5 16 Load unsigned halfword lhu rt, address 0x25 rs rt Offset 6 5 5 16 Load the 16-bit quantity (halfword) at address into register rt. The halfword is sign-extended by lh, but not by lhu. Load word lw rt, address 0x23 rs rt Offset 6 5 5 16 Load the 32-bit quantity (word) at address into register rt. Load word coprocessor lwcz rt, address 0x3z rs rt Offset 6 5 5 16 Load the word at address into register rt of coprocessor z (0-3). The floating-point unit is z = 1. Load word left lwl rt, address 0x22 rs rt Offset 6 5 5 16 Load word right lwr rt, address 0x23 rs rt Offset 6 5 5 16 Load the left (right) bytes from the word at the possibly unaligned address into register rt. Load doubleword ld rdest, address pseudoinstruction Load the 64-bit quantity at address into register rdest and rdest + 1. Unaligned load halfword ulh rdest, address pseudoinstruction . Unsigned load halfword unaligned ulhu rdest, address pseudoinstruction Load the 16-bit quantity (halfword) at the possibly unaligned address into register rdest. The halfword is sign-extended by ulh, but not ulhu.

Dodatak C Unsigned load word ulw rdest, address pseudoinstruction Load the 32-bit quantity (word) at the possibly unaligned address into register rdest. Store Instructions Store byte sb rt, address 0x28 rs rt Offset 6 5 5 16 Store the low byte from register rt at address. Store halfword sh rt, address 0x29 rs rt Offset 6 5 5 16 Store the low halfword from register rt at address. Store word sw rt, address 0x2b rs rt Offset 6 5 5 16 Store the word from register rt at address. Store word coprocessor swcz rt, address 0x3(1-z) rs rt Offset 6 5 5 16 Store the word from register rt of coprocessor z at address. The floating point unit is z = 1. Store word left swl rt, address 0x2a rs rt Offset 6 5 5 16 Store word right swr rt, address 0x2e rs rt Offset 6 5 5 16 Store the left (right) bytes from register rt at the possibly unaligned address. Store doubleword sd rsrc, address pseudoinstruction Store the 64-bit quantity in registers rsrc and rsrc + 1 address. Unaligned store halfword ush rsrc, address pseudoinstruction Store the low halfword from register rsrc at the possibly unaligned address.

Zbirka zadataka iz Mikroprocesorskih sistema Unaligned store word usw rsrc, address pseudoinstruction Store the word from register rsrc at the possibly unaligned address. Data Movement Instructions Move move rdest, rsrc pseudoinstruction Move register rsrc to rdest. Move from hi mfhi rd 0 0 rd 0 0x10 6 10 5 5 6 Move from lo mflo rd 0 0 rd 0 0x12 6 10 5 5 6 The multiply and divide unit produces its result in two additional registers, hi and lo. These instructions move values to and from these registers. The multiply, divide, and remainder pseudoinstructions that make this unit appear to operate on the general registers move the result after the computation finishes. Move the hi (lo) register to register rd. Move to hi mthi 0 rs 0 0x11 6 5 15 6 Move to lo mtlo 0 rs 0 0x13 6 5 15 6 Move register rs to the hi (lo) register . Move from coprocessor z mfcz rt, rd 0x1z 0 rt rd 0 6 5 5 5 11 Coprocessors have their own register sets. These instructions move values between these registers and the CPU's registers. Move coprocessor z's register rd to CPU register rt. The floating-point unit is coprocessor z = 1. Move double from coprocessor 1 mfcl, d redest, frsrc1 pseudoinstruction Move floating-point registers frsrc1 and frsrc1 + 1 to CPU registers rdest and rdest + 1. Move to coprocessor z mtcz rt, rd 0x1z 4 rt rd 0

Dodatak C 6 5 5 5 11 Move CPU register rt to coprocessor z's register rd. Floating-Point Instructions The MIPS has a floating-point coprocessor (numbered 1) that operates on single precision (32-bit) and double precision (64-bit) floating-point numbers. This coprocessor has its own registers, which are numbered $f0-$f31. Because these registers are only 32 bits wide, two of them are required to hold doubles, so only floating-point registers with even number can hold double precision values. Values are moved in or out of these registers one word (32 bits) at a time by lwc1, swc1, mtc1, and mfc1 instrucrtions described above or by the l.s, l.d, s.s, and s.d pseudoinstructions described below. The flag set by floating-point comparison operations is read by the CPU with its bclt and bclf instructions. In the actual instructions below, bits 21-26 are 0 for single precision and 1 for double precision. In the pseudoinstructions below, fdest is a floating-pooint register (e.g., $f2). Floating-point absolute value double abs.d fd, fs 0x11 1 0 fs fd 5 6 5 5 5 5 6 Floating-point absolute value single abs.s fd, fs 0x11 0 0 fs fd 5 6 5 5 5 5 6 Compute the absolute value of the floating-point double (single) in register fs and put it in register fd. Floating-point addition double add.d fd, fs, ft 0x11 1 ft fs fd 0 6 5 5 5 5 6 Floating-point addition single add.s fd, fs, ft 0x11 0 ft fs fd 0 6 5 5 5 5 6 Compute the sum of the floating-point double (single) in register fs and ft and put it in register fd. Compare equal double c.eq.d fs, ft 0x11 1 ft fs fd FC 2 6 5 5 5 5 2 4 Compare equal single c.eq.s fs, ft 0x11 0 ft fs fd FC 2 6 5 5 5 5 2 4 Compare the floating-point double in register fs against the one in ft and set the floating-point condition flag true if they are equal. Use the bclt or bclf instructions to test the value of this flag. Compare less than equal double c.le.d fs, ft 0x11 1 ft fs fd FC 2

Zbirka zadataka iz Mikroprocesorskih sistema 6 5 5 5 5 2 4 Compare less than equal single c.le.s fs, ft 0x11 0 ft fs fd FC 2 6 5 5 5 5 2 4 Compute the floating-point double in register fs against the one in ft and set the floating-point condition flag true if the first is less than or equal to the second. Use the bclt or bclf instructions to test the value of this flag. Compare less than double c.lt.d fs, ft

0x11 1 ft fs 0 FC 0xc 6 5 5 5 5 2 4

Compare less than single c.lt.s fs, ft

0x11 0 ft fs 0 FC 0xc 6 5 5 5 5 2 4

Compute the floating-point double in register fs against the one in ft and set the condition flag true if the first is less than the second. Use the bclt or bclf instructions to test the value of this flag. Convert single to double cvt.d.s fd, fs 0x11 1 0 fs fd 0x21 6 5 5 5 5 6 Convert integer to double cvt.d.w fd, fs 0x11 0 0 fs fd 0x21 6 5 5 5 5 6 Convert the single precisioion floating-point number or integer in register fs to a double precision number and put it in register fd. Convert double to single cvt.s.d fd, fs 0x11 1 0 fs fd 0x20 6 5 5 5 5 6 Convert integer to single cvt.s.w fd, fs 0x11 0 0 fs fd 0x20 6 5 5 5 5 6 Convert the double precisioion floating-point number or integer in register fs to a single precision number and put it in register fd. Convert double to integer cvt.w.d fd, fs 0x11 1 0 fs fd 0x24 6 5 5 5 5 6 Convert single to integer cvt.w.s fd, fs 0x11 0 0 fs fd 0x24

Dodatak C 6 5 5 5 5 6 Convert the double or single precisioion floating-point number in register fs to an integer and put it in register fd. Floating-point divide double div.d fd, fs, ft 0x11 1 ft fs fd 3 6 5 5 5 5 6 Floating-point divide signle div.s fd, fs, ft 0x11 0 ft fs fd 3 6 5 5 5 5 6 Compute the quotient of the floating-point doubles (singles) in registers fs and ft and put it in register fd. Load floating-point double l.d fdest, address pseudoinstruction Load floating-point single l.s fdest, address pseudoinstruction Load the floating-point double (single) at address into register fdest. Move floating-point double mov.d fd, fs 0x11 1 0 fs fd 6 6 5 5 5 5 6 Move floating-point single mov.s fd, fs 0x11 0 0 fs fd 6 6 5 5 5 5 6 Move the floating-point double (single) from register fs to register fd. Floating-point multiply double mul.d fd, fs, ft 0x11 1 ft fs fd 2 6 5 5 5 5 6 Floating-point multiply single mul.s fd, fs, ft 0x11 0 ft fs fd 2 6 5 5 5 5 6 Compute the product of the floating-point dobule (single) in registers fs and ft and put it in register fd. Negate double neg.d fd, fs 0x11 1 ft fs fd 7 6 5 5 5 5 6 Negate single

Zbirka zadataka iz Mikroprocesorskih sistema neg.s fd, fs 0x11 0 ft fs fd 7 6 5 5 5 5 6 Negate the floating-point double (single) in register fs and put it in register fd. Store floating-point double s.d fdest, address pseudoinstruction Store floating-point single s.s fdest, address pseudoinstgruction Store the floating-point double (single) in register fdest at address. Floating-point subtract double sub.d fd, fs, ft 0x11 1 ft fs fd 1 6 5 5 5 5 6 Floating-point subtract single sub.s fd, fs, ft 0x11 0 ft fs fd 1 6 5 5 5 5 6 Compute the difference of the floating-point double (single) in registers fs and ft and put it in register fd. Exception and Interrupt Instructions Return from exception rfe 0x10 1 0 0x20 6 1 19 6 Restore the Status register System call syscall 0 0 0xc 6 20 6 Register $v0 contains the number of the system call. Break break 0 code 0xd 6 20 6 Cause exception code. Exception 1 is reserved for the debugger. No operation nop 0 0 0 0 0 0 6 5 5 5 5 6 Do nothing.

DODATAK D

D-1

D. Dodatak

APPENDIX D: ASCII CODES

Ctrl Dec Hex Ch Code Dec Hex Ch Dec Hex Ch Dec He

x Ch

^@ 0 00 NUL 32 20 64 40 @ 96 60 ^A 1 01 SOH 33 21 ! 65 41 A 97 61 a ^B 2 02 STX 34 22 " 66 42 B 98 62 b ^C 3 03 ♥ ETX 35 33 # 67 43 C 99 63 c ^D 4 04 ♦ EOT 36 24 $ 68 44 D 100 64 d ^E 5 05 ♣ ENQ 37 25 % 69 45 E 101 65 e ^F 6 06 • ACK 38 26 & 70 46 F 102 66 f ^G 7 07 BEL 39 27 ' 71 47 G 103 67 g ^H 8 08 BS 40 28 ( 72 48 H 104 68 h ^I 9 09 HT 41 29 ) 73 49 I 105 69 i ^J 10 0A LF 42 2A * 74 4a J 106 6A j ^K 11 0B VT 43 2B + 75 4B K 107 6B k ^L 12 0C FF 44 2C ' 76 4C L 108 6C l ^M 13 0D CR 45 2D - 77 4D M 109 6D m ^N 14 0E SO 46 2E . 78 4E N 110 6E n ^0 15 0F SI 47 2F / 79 4F O 111 6F o ^P 16 10 DLE 48 30 0 80 50 P 112 70 p ^Q 17 11 DCL 49 31 1 81 51 Q 113 71 q ^R 18 12 DC2 50 32 2 82 52 R 114 72 r ^S 19 13 DC3 51 33 3 83 53 S 115 73 s ^T 20 14 DC4 42 34 4 84 54 T 116 74 t ^U 21 15 NAK 53 35 5 85 55 U 117 75 u ^V 22 15 SYN 54 36 6 86 56 V 118 76 v ^W 23 17 ERB 55 37 7 87 57 W 119 77 w ^X 24 18 ↑ CAN 56 38 8 88 58 X 120 78 x ^Y 25 19 ↓ EM 57 39 9 89 59 Y 121 79 y vZ 26 1A → SUB 58 3A : 90 5A Z 122 7A z ^[ 27 1B ← ESC 59 3B ; 91 5B 123 7B ^\ 28 1C FS 60 3C < 92 5C 124 7C | ^] 29 1D ↔ GS 61 3D = 93 5D 125 7D ^^ 30 1E s RS 62 3E > 94 5E 126 7E ~ ^_ 31 1F t US 63 3F ? 95 5F _ 127 7F

Zadatak 1

Na slici 1a) prikazan je skup instrukcija, a na slici 1b) organizacija akumulatorski-zasnovane centralno procesorske jedinice. Tip aktivnost asemblerski format komentar

AC:= M(X) LD X Load X iz M u AC

M(X):=AC ST X Store sadr`aj AC-a u M kao X

DR:=AC MOV DR,AC kopiraj sadr`aj AC u DR

prenos podataka

AC:=DR MOV AC,DR kopiraj sadr`aj DR u AC

AC:=AC+DR ADD Add DR sa AC

AC:=AC-DR SUB Sub DR od AC

AC:=AD and DR AND And DR sa AC

obrada podataka

AC:=not AC NOT komplementiraj sadr`aj AC-a

PC:=M(adr) BRA adr Jump na instrukciju ~ija je adresa adr

upravljanje tokom programa if AC=0 then

PC:=M(adr) BZ adr Jump na instrukciju

~ija je adresa adr ako je AC=0

a) skup instrukcija

Sekvencijalna upravlja~ka logika

IR IR IR

Upravlja~ki signali

Upravlja~ka jedinica CPU-a

Magistrala

DR DR

ALU

ProcesnajedinicaCPU-a

Ka M iU/I uredjajima

b)organizacija centralno procesorske jedinice

Slika 1: Akumulatorsko zasnovana centralna procesorska jedinica

Definisati: (1) dijagram toka rada akumulatorske zasnovane CPU (2) ako je upravljanje izvedeno kao direktno (hardwired) koristei tehniku “one hot”, projektovati logiku upravlja~ke jedinice.

Odgovor 1) Da bi se mogla projektovati upravlja~ka jedinica neophodno je prvo da se izvri identifikacija relevantnih upravlja~kih akcija (mikroopercija) na osnovu kojih hardver maine procesira instrukcije. Dijagram toka ( flowchart) koji opisuje ponaanje CPU-a prikazan je na slilci 2.

DR:=AC AC:=DR M(AR):=DR AC:=DR AC:=AC+DR AC:=AC-DR AC=ACandDR AC:=not.AC PC:=DR(ADR)

DR:=M(AR) DR:=AC

AR:=DR(X) AR:=DR(X)

AC=0?

neda

MOV AC,DRMOV DR,AC ADD SUB AND NOT BZ adrBRA adrSTXLDX

S0

S0

S1

S2

S3

S5 S5

S5S5

S5 S7 S6 S5 S8 S9 S10 S11 S12

PC:=PC+1 IR:=DR(OP)

DR:=M(AR)

AR:=PC

CPUaktivan

Kraj

Po~etak

ne

da

Dekodiranje IR-a

Slika 2 Dijagram toka akumulatorski zasnovane CPU

Mikrooperacije koje su prezentirane na dijagramu toka implicitno odredjuju upravlja~ke ta~ke kod interne strukture CPU-a. Na slici 3b) prikazan je pogodan skup upravlja~kih signala CPU-a i definisane su uloge ovih upravlja~kih signala, a na slici 3a) prikazane su pozicije (lokacije delovanja) odgovarajuih upravlja~kih ta~aka. Upravlja~ke linije se mogu svrstati u sledee tri osnovne grupe: • izbor funkcije c2, c9, c10, c11, c12 • upravljanje memorijom c1, c8 • usmeravanje podataka c0, c3, c4, c5, c6, c7

Sekvencijalna upravlja~ka logika

Upravlja~ki signali

IR AR PC

C4

C2

C3

C0

C5

Memorija iU/I podsistem

ALU

DR AC

C6C7C9C10C11C12

(a)

C8

C1

Magistrala

Upravlja~ki signali upravlja operacijomc0 AR:=PCc1 DR:=M(AR)c2 PC:=PC+1c3 PC:=DR(ADR)c4 IR:=DR(OP)c5 AR:=DR(ADR)c6 DR:=(AC)c7 AC:=DRc8 M(AR):=DRc9 AC:=AC+DRc10 AC:=AC-DRc11 AC:=AC and DRc12 AC:=not AC

(b)

Slika 3 Definisanje upravlja~kih ta~ka i upravlja~kih signala kod akumulatorski zasnovane CPU

2) Globalna organizacija upravlja~ke jedinice sa direktnim upravljanjem koja implementira dijagram toka sa slike 2 data je na slici 4. Usvojeno je da se opkod instrukcije koji se ~uva u registru IR dekodira u 10 signala, jedan po instrukciji. Svih deset izlaza dekodera (LD, ST,...,BZ), kao i signali Po~etak i status AC = 0 se dovode na ulaz sekvencijalne upravlja~ke logike koja na ovom izlazu generie upravlja~ke signale c0:c12. Blok sekvencijalna upravlja~ka logika je izveden kao kona~ni automat (FSM) koja ima 12 primarnih ulaza i 13 primarnih izlaza. Broj internih stanja FSM-a se mo`e odrediti na osnovu slike 2. Ako se svakom razli~itom bloku dodeli razli~ito stanje tada postoje ukupno 13 stanja, ozna~enih na dijagramu toka kao S0:S12. Implementacija maine koja ima 13 razli~itih stanja klasi~nom one-hot metodom je direktna. Potrebno je ugraditi 13 flip-flopova.

Kona~ni automat

IR

LD ST BZ

Dekoder

Statusni signal (AC=0)

Po~etak COC1C2

C12

Upravlja~ki signali

Instrukcioni registar

4

Slika 4 Organizacija upravlja~ke jedinice kod akumulatorski zasnovanog CPU-a

Broj stanja kona~nog automata definisan dijagramom toka sa slike 2 se mo`e redukovati, a da se pri tome i dalje sa~uva jednostavnost one-hot metoda. Naime najvei broj stanja S4:S12 prikazan na slici 2 a koji va`i za fazu izvrenja instrukcije se mo`e prepoznati od strane (karakteristi~an je i za) opkôd signale LD i ST koji su primarni ulazi FSM-a. To zna~i da je mogue izvriti grupisanje stanja tako da se dobije manji skup a da su pri tome izlazne akcije (upravlja~ki signali koje oni aktiviraju) odredjene od strane primarnih ulaza FSM-a kao i njegovih stanja. Drugim re~ima, mogue je zameniti stanja faze izvrenja pomou tri stanja S4*, S5* i S6* koja se od strane instrukcija Load i Store izvravaju u sekvenci, ali koja se za ostale instrukcije redukuju na jedno stanje S4*. Mogue je takodje redukovati fazu pribavljanja instrukcije na sekvencu od tri stanja ako ase S0 i S1 kombinuju u jedno stanje S1* tako da, FSM obavlja akciju AR:=PC nezavisno od toga da li je aktivan ili neaktivan. Ponaanje ovakve maine se mo`e opisati STG-om (state transition graph) koji je prikazan na slici 5. Na ovom grafu prikazani su samo signali koji direktno uti~u illi na kojima se direktno uti~e od strane stanja. Ilustracije radi STG ukazuje da ako smo u stanju S5*, tada se vri prelaz u stanje S6* (pri) kada je izlaz c1 = 1 (jedini aktivan izlaz) ako je tekua instrukcija tipa LD. Ovaj dogodjaj je ozna~en kao LD/c1 a prelaz sa S5* na S6* usmerenim potegom. Ako je tekua instrukcija ST, tada samo c6 postaje aktivan to je ozna~eno kao ST/c6. Ne postoje drugi tipovi instrukcija koji dozvoljavaju da FSM predje u stanje S6*. Kada je prelaz iz stanja Si u Sj automatski, a to zna~i da je prelaz nezavisan od primarnih ulaznih signala, kod prezentacije STG-a koristi se oznaka Ø/Oj.

S3

S4*

S5*

S2

S1*

S6*

Po~etak/co

Po~etak/c0

Æ/C1

Æ/C2+C4

(LD or ST)/c5

LD/c1;ST/c6

MOV/c6;MOV/c7;ADD/c9;SUB/c10;AND/c11;NOT/c12;BRA/c3;BZ and (AC = 0)/c3

BZ and (AC = 0)/ Æ

Slika 5 STG kod akumulatorsko-zasnovane CPU

Kona~ni automat se mo`e implementirati pomou est D flip-flopova, pri ~emu izlaz Di i-tog flip flopa ~ini hot promenljivu stanja Si tj. Si*. Na osnovu slike 5 izvodi se sledei skup logi~kih jedna~ina: D1*=D1⋅ etak~Po +D4⋅(MOV1+MOV2+ADD+SUB+AND+NOT+BRA+BZ)+D6 D2*=D1⋅Po~etak D3*=D2

D4*=D3

D5*=D4⋅(LD+ST) D6*=D5

Jedna~ine koje se odnose na definsanja stanja izlaznih signala se takodje izvode shodno prezentaciji datoj na slici 5. c0=D1 c1=D2+D5⋅LD c2=c4=D3 c3=D4⋅(BRA+BZ⋅(AC=0)) c5=D4⋅(LD+ST) c6=D4⋅MOV1+D5⋅ST c7=D4⋅MOV2+D6⋅LD c8=D6⋅ST c9=D4⋅ADD c10=D4⋅SUB c11=D4⋅AND c12=D4⋅NOT Na osnovu prethodnih jedna~ina mo`e se sintetizovati logika upravlja~ke jedinice koja je prikazana na slici 6.

Slika 6 One-hot implementacija upravlja~ke jedinice CPU-a shodno STG-u sa slike 5.

Test pitanje 1

Osnovne dve klju~ne karakteristike velikog broja ranijih ra~unara su bile sledee: 1) mali skup instrukcija, ali arhitekture nisu bile tipa Load/Store, tj. pristup memoriji nije bio ograni~en da se obavlja samo od strane ove dve instrukcije. 2) mali broj internih registara, tj znatno manji u odnosu na RISC procesore. Skup instrukcija za ovakav tip CPU-a prikazan je na slici 7 a njegova organizacija na slici 1b) Tip aktivnost asemblerski format komentar

AC:= M(X) LD X Puni X iz memorije u AC prenos podataka

M(X):=AC ST X Smeta sadr`aj AC-a u M kao X

AC:=AC+M(X) ADD X Sabira X sa AC

AC:=AC-M(X) SUB X Oduzima X od AC

AC:=AC and M(X)

AND X AND X sa AC

obrada podataka

AC:=not AC NOT komplementiraj sadr`aj AC-a

PC:=M(adr) BRA adr Jump na instrukciju ~ija je adresa adr

upravljanje tokom programa if AC=0 then

PC:=M(adr) BZ adr Jump na instrukciju ~ija je adresa

adr ako je AC+0

Slika 7 Modifikovani skup instrukcija akumulatorski zasnovane maine sa Slike 1b)

Instrukcije za obradu podataka sada se obraaju u glavnoj memoriji M, a registar DR nije vie vidljiv od strane programa (on se ipak i dalje koristi za pristup memoriji). Konstruisati dijagram toka modifikovane maine sli~an onom prikazanom na slici 2.

Odgovor Dijagram toka modifikovane maine prikazan je na slici 8. Izmene u dijagramu toka sa slike 8 u odnosu na onaj sa slike 2 sastoje se u sledeem:

i) kod faze izvrenja instrukcija ADD,SUB i AND dodat je korak koji se odnosi na pristup memoriji (trajanja dva taktna intervala).

ii) ne postoje vie instrukcija tipa MOV.

AC:=DR M(AR):=DR AC:=AC+DR AC:=AC-DR AC=ACandDR AC:=not.AC PC:=DR(ADR)

AC=0?

neda

ST XLD X ADD X SUB X AND X NOT BZ adrBRA adr

PC:=PC+1 IR:=DR(OP)

DR:=M(AR)

AR:=PC

CPUaktivan

Kraj

Po~etak

ne

da

Dekodiranje IR-a

DR:=M(AR)

AR:=DR(X)

DR:=AC

AR:=DR(X)

DR:=M(AR)

AR:=DR(X)

DR:=M(AR)

AR:=DR(X)

DR:=M(AR)

AR:=DR(X)

Slika 8 Dijagram toka modifikovane akumulatorsko-zasnovane CPU

Zadatak 2

Neka je akumulatorski zasnovana CPU sa slike 1 proirena na taj na~in da u svom repertoaru sadr`i i sledee instrukcije:

a) pomeranje ulevo - LSH, koja implementira operaciju AC:=AC[n-2:0].0

b) sabiranje sa prenosom - ADC kojom se izra~unava AC+DR+CY, gde je CY novi marker prenosa koji se setuje (resetuje) uvek kada se kao rezultat aritmeti~ke instrukcije javi (ne javi) prenos.

c) preskakanje jedne instrukcije ako postoji prenos (skip-on-carry) - SKC uzrokuje da CPU presko~i izvrenje naredne instrukcije samo ako je CY=1.

1) Pokazati promene koje je potrebno u~initi na dijagramu toka sa slike 2 kako bi mogle da se inkorporiraju nove instrukcije.

2) Specificirati minimalni skup novih upravlja~kih signala koje treba dodati u listi sa Slike 3b) kako bi se podr`avao rad ove tri nove instrukcije.

Odgovor Neophodne modifikacije prkazane su na slici 9. Marker prenosa CY se tretira kao jednobitno proirenje kod pomeranja sadr`aja akumulatora ulevo. Prethodne instrukcije ADD i SUB moraju se modifikovati tako da postavljaju izlazni prenos u marker bit CY. Za implementaciju instrukcija ADC i LSH potrebna su dva nova upravlja~ka signala c13 koji e dovoditi CY kao ulaz u ALU, kod operacije sabiranja, i c14 koji e dozvoljavati pomeranje ulevo sadr`aja akumulatora AC, koji sada treba da bude izveden kao pomera~ki registar sa paralelnim upisom i paralelnim ~itanjem. Instrukcija SKC se mo`e implementirati ako se PC inkrementira sa sadr`ajem CY. Za SKC se koristi stari upravlja~ki signal c2.

CY.AC:=AC+DR CY.AC:=AC-DR CY.AC:=AC+DR +CY AC:=AC(n-2:0).0 PC:=PC+1

CY=17

Ne

Da

SKCADD SUB ADC LSH

Deklodiranje IR-a

Slika 9 Promene u dijagramu toka modifikovanog CPU-a.

Zadatak 3

Razmotrimo akumulatorski-zasnovanu CPU definisanu na slikama 1-4 (Zadatak 1). Neka upravlja~ka jedinica CPU-a mora da ima 13 internih stanja S0:S12 definisanih na slici 2 a implementirana je kao Moore-ov automat koristei one-hot metodu pomou D flip-flopova i NAND kola. Dodeliti hot promenljivu Di stanju Si i odrediti potpuni skup jedna~ina FSM-a koje se odnose na naredno-stanje i izlaze u formi suma-proizvoda (SOP-sum-of-products). Odrediti broj NAND kola (uklju~ujui i invertore) potrebnih da se realizuje FSM ako usvojimo da je za D flip-flop potrebno pet NAND kola.

Odgovor

Da bi reili problem usvojiemo sledee: a) Signal Po~etak ukazivae da je CPU aktivan; b) Kada registar IR sadr`i opkôd INST, uslov INST, koji odgovara izlazu dekodera instrukcija, je istinit (True); c) Instrukcije MOV DR,AC i MOV AC,DR imaju opkôdove MOV1 i MOV2, respektivno.

Logi~ke jedna~ine koje se odnose na naredno-stanje FSM-a se mogu direktno napisati na osnovu sadr`aja slike 2:

D0+=D0⋅ etak~Po +D3⋅BZ⋅AC+D5+D6⋅MOV1+D7+D8+D9+D10+D11+D12 D1+=D0⋅Po~etak D2+=D1+D4⋅LDX D3+=D2⋅ LDX D4+=D3⋅LDX+D3⋅STX D5+=D4⋅LDX+D3⋅MOV2 D6+=D4⋅STX+D3⋅MOV1 D7+=D6⋅STX D8+=D3⋅ADD D9+=D3⋅SUB D10+=D3⋅AND D11+=D3⋅NOT D12+=D3⋅BRA+D3⋅BZ⋅ AC Usvojiemo da su upravlja~ki signali sa slike 3b) svi izlazni signali generisani od strane FSM-a, i da je svaki od njih aktivan kada se udje u odgovarajue stanje na dijagramu toka. Na primer c0 upravlja izvrenjem operacije AR:=PC, tj akcija pridru`ena stanju S1. Logi~ke jedna~ine koje se odnose na izlaze FSM-a su sledee

c0=D1 c4=D3 c8=D7 c12=D11 c1=D2 c5=D4 c9=D8 c2=D3 c6=D6 c10=D9 c3=D12 c7=D5 c11=D10 Da bi procenili broj NAND kola usvojiemo da D flip-flopovi koji predstavljaju Si generiu Di samo u pravoj, a ne u komplementarnoj, formi. Svaka od jedna~ina SOP tipa (D0

+,....,D12+) oblika je

P1+P2+...+Pk, a u zahtevanoj SOP (NAND-NAND) implementaciji zahteva k+1 NAND kolo, ~iji se fan-in nalazi u opsegu od jedan (invertor) do deset. Ukupan broj logi~kih kola da bi implementirali jedna~ine koje se odnose na D0

+....,D12+ iznosi 40. Na izlazima D flip-flopova nije potrebno povezivati

dodatna logi~ksa kola. Imajui u vidu da je ukupan broj stanja 13, a da konkretno reenje FSM-a tipa one-hot zahteva 13 flip-flopova, imaemo 13*5=65 NAND kola za realizaciju izlaza automata. Ukupan broj NAND kola koje treba ugraditi u automat jednak je 40+65=105.

Test pitanje

Postoje dva tipa upravlja~kih jedinica koje se koriste kod digitalnih sistema, jedna je za programibilne sisteme a druga za neprogramibilne sisteme. Ukazati na njihove osnovne razlike.

Odgovor Kod programibilnog sistema deo ulaza procesora ~ini sekvenca instrukcija. Svaka instrukcija specificira: operaciju koju sistem treba da obavi, koji operandi se koriste od strane te operacije, gde treba smestiti rezultate operacije, i u odredjenim situacijama, koju instrukciju izvriti kao narednu. Kod programibilnih sistema, instrukcije su obi~no smetene u memoriji, koja mo`e biti RAM ili ROM tipa. Da bi izvrio sekvencu instrukcija neophodno je adresirati memoriju u kojoj se nalaze (~uvaju) instrukcije. Adresu generie registar nazvan programski broja~ PC. Kao to i samo ime asocira PC ima ugradjenu logiku koja obezbedjuje funkciju brojanja. ^esto u sekvenci instrukcija se javlja potreba za promenom redosleda izvrenja operacija. U tom cilju koriste se odluke koje se zasnivaju na stanju

statusne informacije, pa je i to razlog da PC pored inkrementiranja treba da ima i ugradjenu mogunost paralelnog punjenja. To zna~i da kod programibilnih sistema upravlja~ka jedinica sadr`i: PC, logiku za odlu~ivanje, i logiku za interpretaciju instrukcija. Izvrenje instrukcije podrazumeva aktiviranje neophodne sekvence mikrooperacija u stazi podataka koja je potrebna da bi se obavila operacija specificirana od strane instrukcije.

Kod neprogramibilnih sistema upravlja~ka jedinica nije zadu`ena za pribavljanje instrukcije iz memorije, a takodje nije zadu`ena za sekvenciranje izvrenja ovih instrukcija. Ne postoji PC ili sli~an registar kod ovakvih sistema. Umesto toga, upravlja~ka jedinica definie koje operacije treba da se obave, a sekvenca ovih operacija odredjena je samo na osnovu ulaza u tu mainu i stanja statusnih bitova te maine.

Tipi~an primer programibilnog digitalnog sistema je ra~unar koji ima ugradjen, recimo, mikroprocesor kao CPU, a neprogramibilni digitalni sistem se obi~no realizuje kao kona~ni automat, tj. maina sa kona~nim brojem stanja - FSM, kakav je bo automat za prodaju tetrapak sokova ~iji smo rad analizirali.

Test pitanje

[ta je to ASM (Algorithmic State Machine) dijagram

Odgovor Zadatak koji se odnosi na obradu podataka kod digitalnih sistema, mo`e se definisati operacijama tipa registarski prenos, koji je kontrolisan od strane mehanizma za sekvenciranje. Ovaj tip zadatka mo`e se specificirati kao hardverski algoritam koga ~ini kona~ni broj proceduralnih koraka pomou kojih se obavlja obrada podataka. Najizazovniji i najkreativniji deo digitalnog sistema odnosi se na formulaciju hardverskih algoritama pomou kojih se posti`u `eljeni ciljevi. Hardverski algoritam se mo`e koristiti kao baza definisanje, kako staze-podataka, tako i upravlja~ke jedinice sistema.

Dijagram toka (stanja) je pogodno sredstvo za specifikaciju sekvence proceduralnih koraka i puteva odluke kod staze podataka. Realno posmatrano veoma je teko opisivati slo`enije neprogramibilne digitalne sisteme, kakvi su FSM-ovi, pomou dijagrama stanja, jer se pomou dijagrama ne sagledava tako dobro sve ono to se `eli predstaviti, tj. da se mo`e nedvosmisleno predstaviti korektno definisana sekvenca akcija (koraka) koja na osnovu ulaznih podataka generie `eljenu sekvencu (izlaznih) akcija. Drguim re~ima, nedostatak dijagrama stanja je da on ne mo`e jednozna~no da obuhvati sve ono to se `eli ostvariti kompleksnim (slo`enim) dijagramom toka, tako da je izuzetkom opisa jednostavnih FSM-ova, za slo`enija tehni~ka reenja dijgrami toka ne nude prihvatljiva reenja. Dijagram toka hardverskog algoritma mora da poseduje specijalne karakteristike koje ga bli`e (~vre) povezuju sa hardverom koji implementira taj algoritam. Od skoro projektanti hardvera koriste alternativne prezentacije za opis ponaanja hardvera. Jedna od takvih prezentacija, koja ima grafi~ku formu, je ASM dijagram. (ASM dijagram definie algoritme za hardver digitalnog tipa, pri ~emu je pojam kona~ni automat u ovom kontekstu korien kao pojam za sekvencijalno kolo).

ASM dijagram veoma podsea na konvencionalni dijagram toka, ali je njegova interpretacija neto druga~ija. Naime, kod konvencionalnog dijagrama toka proceduralni koraci i putevi odluke se opisuju tako da se ne sagledava uticaj vremenske komponente, tj. trenutak kada se odredjeni dogadjaj javio. Nasuprot tome ASM dijagram se razlikuje po tome to: pravi razliku izmedju dogadjaja, tj. uzima u obzir sekvencu dogadjaja, kao i vremenski odnos izmedju stanja. Ovo je veoma va`an aspekt koji se odnosi na projektovanje upravlja~ke jedinice kao i akcije koje se deavaju u toku tih stanja kao odziv na pobudne taktne impulse.

Nakon formulacije ASM dijagrama FSM-a lako je izvriti konverziju u dijagram stanja ili tabelu stanja. FSM model kod koga su svakom stanju dodeljeni iskazi nazivamo FSMD (FSM with

Datapath). Za FSMD ka`emo da u potpunosti mo`e da specificira ponaanje bilo kog digitalnog sistema.

Test pitanje

Kakvu notaciju koristi ASM?

Odgovor Kao to je prikazano na slici 1 ASM dijagram mo`e da predstavi FSMD pomou sledee ~etiri osnovne komponente (elemenata):

a) blok stanja (state box)

b) blok odluke (decision block),

c) izlazni blok (output box ili condition box)

d) ASM blok

Napomena: Ovo zna~i da ASM dijagram ~ine elementi a), b) i c).

kodstanja

imestanja

Lista iskaza

ulaz >> 2

X=max (t1,t2)

S6 220

Blokstanja

UslovFT

Broja~=001

broja~=broja~ +1suma=suma + X(i)

ASM blok

Izlazni blok

uslovnaizlazna lista

01

FT

T F

suma=0

uplata<200

novac=kasa

Slika 1 ASM dijagrami

Blok-stanje - ozna~ava stanje u ASM dijagramu. Blok stanje, u stazi podataka, ~ini skup bezuslovnih dodela promenljivim i izlaznim portovima. Za svaku kombinaciju ulaza postoji jedinstveni i

nedvosmisleni izlazni put iz ASM-a. Blok-stanje se identifikuje simboli~kim imenom koje se nalazi na gornjem levom kraju, binarno kodiranim stanjem na gornjem desnom kraju, i izlaznom listom signala. Izlazna lista je opisana signalima koji se potvrdjuju uvek kada se udje u to stanje. Signali mogu izra`avati rad kola u pozitivnoj ili negativnoj logici pa je zbog toga uobi~ajeno da ispred signala stoji prefiks “L.” ili “H.” koji ukazuje da li je signal aktivan kao nisko ili visoko. Mogue je takodje specificirati da li se signal potvrdjuje odmah (I), ili sa zakanjenjem (bez specijalnog prefiksa) sve dok ne naidje naredni taktni interval. Signal se ne pominje u izlaznoj listi ako ostaje nepotvrdjen. U trenutku kada se ASM prvi put crta kôd stanja nije poznat nego se on kasnije dodaje u toku procesa dodele stanja.

Blok-odluke - opisuje uslov pod kojim e FSMD, u stazi-podataka, obaviti specifi~ne akcije i selektovati naredno stanje. Uslovi se odnose na spoljne upravlja~ke ulaze ili statusne signale. Svaki blok-odluke karakteriu dva izlazna puta. Po prvom se vri grananje kada je uslov istinit (T-True), a po drugom kada je neistinit (F-False). Uobi~ajeno, na grani True, put se ozna~ava sa 1, a na grani False sa 0. Redosled po kome se blokovi-odluke kaskadno povezuju nema uticaj na odredjivanje narednog ASM bloka. Na slici 2a) i 2b) prikazani su funkcionalno ekvivalentni ASM blokovi. Kao to se vidi sa slike 2, u stanje S2 se ulazi kada su oba uslova U1 i U2 istiniti (T) ina~e se ulazi u S3.

U1

U2

001S1

1

1

0

0

S3S2

M2

M1

001S1

1

1

0

0

S3S2b)a)

Slika 2 Funkcionalno ekvivalentni ASM blokovi

Napomena: Blok-stanje je ozna~eno zaokru`enim simboli~kim imenom, kao na primer Sx

Izlazni-blok - opisuje kakve se dodele vre promenljivim ili izlazu. Dodela se vri pod specificiranim uslovima jednog ili veeg broja blokova-odluke.

ASM-blok - slo`ena struktura koju ~ine jedan blok-stanje, serijsko-paralelna mre`a blokova odluke i izlazni-blokovi. ASM-blok, kao celilna, se zaokru`uje isprekidanim linijama, a ima jedan ulazni i vie izlaznih puteva.

U optem slu~aju, ASM-dijagram ~ini vei broj medjusobno povezanih ASM-blokova, tako uredjeni da svaki izlazni put iz ASM bloka se povezuje na po jedan blok-stanja. Svaki ASM-blok opisuje operacije koje se izvravaju u toku jednog stanja.

Kada se FSMD specificira pomou ASM-dijagrama moraju se potovati sledea dva pravila:

1) Za svako stanje i skup uslova dijagram mora da definie jedinstveno naredno stanje.

2) Svaki put definisan mre`om uslovnih-blokova mora da vodi ka drugom stanju.

Na slici 3 prikazana su dva ASM dijagrama kod kojih se ne potuju prvila (1) i (2). Tako na primer, kod dijagrama sa slike 3a) ne potuje se pravilo (1), jer kada je Uslov_2 istinit, oba stanja S2 i S3 se specificiraju kao naredna. Na sli~an na~in, kod dijagrama sa slike 3b) ne potuje se pravilo (2), jer put definisan kada je Uslov_1 jednak T i Uslov_2 jednak F kreira petlju koja uklju~uje ova dva uslova umesto da vodi ka drugom stanju.

Uslov_2Uslov_1

S3S2

S1

1020

ASM-blok

Uslov_1

Uslov_2

S1ASM blok

S3S2

0 1

10

a) naredno-stanje nije dobro definisano

b) izlazni put nije dobro definisan

Slika 3 Nekorektno izvedeni ASM dijagram

ASM dijagram digitalnog logi~kog kola koje se koristi za proveru parnosti (broji broj jedinica u serijskoj ulaznoj povorci) prikazan je na slici 4a). Dijagram ~ine dva stanja Parno i Neparno, kodirana sa 0 i 1, respektivno. Ulaz je bit X, a izlaz bit Z, koji je potvrdjen kada je FSM u stanju Neparno. Na osnovu ASM dijagrama mo`e se izvesti tabela stanja-prelaza kao to je prikazano na slici 4a).

H . Z

X

X

Parno

T

TF

1

F

0

Neparno

a) ASM dijagram kola za proveru parnosti

ulaz X tekue stanje naredno stanje ulaz Z

F Parno Parno nije potvrdjen

T Parno Neparno nije potvrdjen

F Neparno Neparno potvrdjen

T Neparno Parno potvrdjen

b) tabela stanja- prelaza

Slika 4 ASM dijagram i tabela stanja-prelaza kola za proveru parnosti

Ilustracije radi, ASM dijagram FSM-a za prodaju tetrapak sokova prikazan je na slici 5

1d

01

50p

50p

50p

Op

1,5d

1d

1d

50p

reset

101d00

F

T

T

T

T

T

F

F

F

F

F

F

Op

H.Oslobodi

11

Slika 5 ASM dijagram automata za prodavanje sokova

ASM dijgram se uglavnom koristi kada se projektovanje vri ru~no. Savremeno projektovanje uglavnom podrazumeva korienje nekog CAD sredstva pomou koga se vri konverzija specifikacije dizajna u hardver. Zbog toga, umesto preko dijagrama toka FSM-ovi se naj~ee opisuju pomou jezika za opis hardvera (HDL-hardware description language). HDL opis se zatim kompajllira u implementaciju kona~nog automata koja koristi odabrane logi~ke module.

Zadatak

Nacrtati ASM-ov dijagram za sekvencijalno kolo koje e generisati izlaz Z=1 uvek kada se u ulaznoj serijskoj povorci prepozna oblik 101. Smatrati da povorku ~ini neprekidni niz bitova i da je preklapanje oblika dozvoljeno.

Odgovor ASM-ov dijagram je prikazan na slici 6. Inicijalno, kolo je u stanju S0 (000) i ~eka na prijem ulaznog bita x. Ako je x=1 kolo e postaviti izlaz na 0 i ostati u stanju S0. Uo~imo da ASM-ov blok-stanja S0 ~ine i blok-odluke ulaza x i izlazni-blok izlaza z. ASM-ov dijagram ~ine dva dodatna bloka kojima se pridru`uju stanja S1 i S2.

X

Z=0 Z=0

X

Z=0 Z=0

X

Z=0 Z=0

S2

S0 000

0

01

01

001

010S2

Slika 6 ASM dijagram za prepoznavanje serijskog bit oblika 101

Zadatak

Logika kojom se selektuje koji e se od sadr`aja registara R1 ili R2 upisati u registar R3 prikazana je na slici 1

R1

R2

S0

MUX

1

n

n

n

R0

L

set & load

Slika 1. Korienje multipleksera kod selekcije dva registra

Projektovati logiku koja e obavljati istu funkciju kao ona na slici 1 ali umesto multipleksera koristi trostati~ke bafere i dekoder.

Zadatak 1

Konvencionalna struktura staze podataka koja sve operacije obavlja za jedan taktni interval prikazana je na slici 1. Propagaciona kanjenja gradivnih blokova takodje su prikazana na slici 1.

(a) Odrediti minimalno vreme potrebno da se izvri jedna operacija

(b) Ako se staza podataka sa slike 1 u~ini proto~nom, kako je to prikazano na slici 2, odrediti maksimalnu radnu frekvenciju sa kojom se mo`e taktovati sistem.

RF polje

MUX B

Fukcionalna jedinica

MUX B 1ns

4ns

1ns

3ns

3ns

Cp

Slika 1 Konvencionalna staza podataka

Da bi se izvrila jedna mikrooperacija potrebno je ukupno vreme od 3+1+4+1+3=12 ns 12 ns ⇒83,3 MHz

WBOF

OFEX

EXWB

RF polje

MUX B

1ns

1ns

4ns

1ns

1ns

3ns

3ns

Cp

Fukcionalna jedinica

MUX D

Slika 2 Proto~no organizovana staza podataka

Trajanje jedne mikrooperacije odredjeno je u ovom slu~aju od najdu`eg kanjenja koje iznosi 1+1+3=5 ns 5ns =200MHz

Napomena: Odgovor predstavlja rafirani deo

Zadatak

Stazu podataka ~ine pet gradivnih blokova, A do E, medjusobno povezanih u petlji na sli~an na~in kako je to prikazano na slici 1. Maksimalno kanjenje svakog od gradivnih blokova je TA=3ns, TB=3ns, TC =4ns, TD=6ns i TE=5ns.

(a) Kojom se najviom radnom frekvencijom mo`e taktovati staza podataka?

(b) Staza podataka se modifikuje u trostepenu proto~nu. Na koji na~in treba kombinovati gradivne blokove u stepene, i kojom se najviom radnom frekvencijom trostepena staza podataka mo`e taktovati?

(c) Ponoviti korak (b) kada se staza podataka modifikuje u ~etvorostepenu proto~nu.

Zadatak

Blok dijagram trostepene proto~no organizovane staze podataka prikazan je na slici 3.

EXWB

D_podaciDadrese

RF polje(ovaj blok je isti blokkao i onaj na vrhuslike)

OFEX

RF polje

A-podaci B-podaci

MUX B

A B

Funkcionalna jedinica

Slika 3 Blok dijagram trostepene proto~no organizovane staze podataka

Funkcija upravlja~kih signala definisana je na potpuno identi~an na~in kao na slici 3.75c), a za propagacioona kanjenja signala kroz gradivne blokove i izbora frekvencije taktovanja sistema va`e specifikacije definisane na slici 2 (zadatak 1).

Za sekvencu mikrooperacije sa slike 3 odrediti ukupno vreme izvrenja.

Mikrooperacija DA AA BA MB FS MD RW

R1←R2-R3 001 010 011 0 00101 0 1

R4←sl R6 100 110 000 0 10001 0 1

R7←R7+1 111 111 000 0 00001 0 1

R1←R0+2 001 000 000 1 00010 0 1

Izlaz podataka←R3 000 000 011 0 00000 0 0

R4←Ulaz podataka 100 000 000 0 00000 1 1

R5←0 101 000 000 0 01100 0 1

Slika 3 Sekvenca mikrooperacija

Odgovor Stanje upravlja~kih signala za sekvencu mikrooperacija sa slike 3 dato je istoj slici i predstavlja njen osen~ani deo. (Treba naglasiti da je stanje upravlja~kih signala definisano kao kod konvencionalne staze podataka).

Proto~no izvrenje sekvence mikrooperacije prikazano je na slici 4.

Taktni intervali

1 2 3 4 5 6 7 8 9

1. R←R2-R3 OF EX WB

2. R4←sl R6 OF EX WB

3. R7←R7+1 OF EX WB

4. R1←R0+2 OF EX WB

5. Izlaz podataka←R3 OF EX WB

6. R4 ←Ulaz podataka OF EX WB

7. R5←0 OF EX WB

mikrooperacija

Slika 4 Proto~no izvrenje mikrooperacija sa Slike 3

Kao to se vidi sa slike 4 celokupna sekvenca se izvrava za 9 taktnih intervala, tj. za 9*5=45ns, u odnosu na 7*15=105ns kod konvencionalne staze podataka. To zna~i da se sekvenca mikrooperacije kod proto~no organizovane staze podataka izvrava 2,3 puta br`e u odnosu na izvrenje kod konvencionalne staze podataka.

Zadatak

Konvencionalna mikroprogramski upravljana CPU je preprojektovana kao mikroprocesor na ~ipu. Tekue CPU ima jedinstvenu 256*80-bitnu upravlja~ku memoriju i koristi horizontalni format instrukcije koji ima jedno 8-bitno polje koje se odnosi na branch adresu. Analize pokazuju da kod dvo-nivovske organizacije upravlja~ke jedinice za implementaciju skupa instrukcija potrebno je samo 64 300-bitnih nanoinstrukcija. Ako ukupni kapacitet upravlja~ke memorije ima presudni uticaj na cenu, da li novi dizajn treba da ima dvo-ili jedno-nivovsko upravljanje?

Odgovor Neka model organizacije dvo-nivovske upravlja~ke memorije ima formu kao na slici 1.

µPC

µPM

nPC

nPM

µIR nIR

Upravlja~ki signali

Od IR-a

Slika 1 Dvo-nivovska organizacija upravlja~ke jedinice

Napomena:IR-instrukcioni registar; µPC-mikroprogramski broja~; µPM-mikroprogramska memorija; µIR-mikroinstrukcini registar; nPC-nanoprogramski broja~, nPM-nanoprogramska memorija; nIR-nanoinstrukcioni registar

Kapacitet upravlja~ke memorije, S1, kod konvencionalnog jedno-nivovskog upravljanja je 256*80=20480 bitova. Kod dvo-nivovskog upravljanja, kapacitet nanoprogramske memorije S2n je 64*300=19200 bitova, dok kapacitet mikroprogramske memorije, S2m, iznosi 256*(8+6)=3584 bitova. (8 bitova po mikrore~i je rezervisano za adresno polje, a 6 bitova za adresiranje nanomemorije). Shodno prethodnom, ukupni kapacitet memorije dizajna koji koristi dvo-nivovsko upravljanje iznosi S2=S2m+S2n=19200+3584=22784 bitova. Kako je S2>S1 treba usvojiti jedno-nivovsko upravljanje.

Test pitanje

Prikazati blok emu jezgra mikroprogramski zasnovane upravlja~ke jedinice i ukratko ubjasniti princip njenog rada.

Odgovor

Logika generatoranaredne adrese

Upravlja~ko adresniregistar

Mikroprogramerska memorija

Poadaci

Upravlja~ki registar

Adrese (mikro programske)

sekvencer

Upravlja~ki signali od IR-a

Statusni signali odstaze podataka(selekcija adrese)

mikroinstrukcije

Upravlja~ki signali staze podataka (interni)

Spoljni upravlja~ki signali

Informacija onarednoj adresi

Slika 1 Organizacija jezgra mikroprogramski zasnovane upravlja~ke jedinice

Shodno strukturi prikazanoj na slici 1 ~italac treba da da odgovor koji se odnosi na objanjenje principa rada.

Zadatak

Blok ema ra~unara koga karakterie direktno upravljanje i koji pribavlja i izvrava svaku instrukciju za jedan taktni interval (ciklus) prikazana je na slici 1, a va`ei formati instrukcija na slici 2.

Adrese memorija gde susmetene instrukcije (IM)

PC

Dekoder instrukcija

D B A M F M R M A A A B S D W W

Upravlja~ki signali

Blok za proirenje nulama

D

RF polje

A B

1 0MUX B

Funkcionalna jedinica

F

BAFS

V

C

N

Z

0 1MUX D

Memorija ukojoj se ~uvaju podaci

podaci(izlazni)

adresepodaci ulazni

MD

MW

MB

BAAA

DA

RW

ulaz konstante

Mag. D

Mag. BMag. A

Memorija adrese

Podaci izlazni

Podaci ulazni

Slika 1 Blok ema ra~unara koji izvrava sve instrukcije za jedan taktni interval

15 9 8 6 5 3 2 0

opkod odredini izvorini izvorini

registar registar A registar B

(DR) (SA) (SB)

a) registarski

15 9 6 5 3 2 0

opkod odredini izvorini izvorini

registar registar A operand

(DR) (SA) (OP)

b) neposredni

Slika 2 Dvo-instrukcioni format Napomena: Formatom instrukcija, neposredni operand OP se mo`e specificirati na vrednost koja se nalazi u opsegu od 0002 do 1112. Blok za proirenje nulama (ZF) formira 16-bitni operand kao neozna~enu vrednost, na taj na~in to od bit pozicija BIT3 do BIT15 dopisuje nule. Tako na primer, ako operand OP ima, od strane instrukcije, specificiranu vrednost

1112 tada se vreednost operanda na izlazu bloka ZF, ozna~en kao ulaz-konstante, proiruje na sledeu 16-bitnu vrednost 0000 0000 0000 01112.

a)Za kolo sa slike 1 i format instrukcija prikazan na slici 2, projektovati logiku dekoder-instrukcija i definisati format upravlja~ke re~i.

b) Definisati opkôd polje, funkciju i stanje upravlja~kih bitova MB, MD, RW i MW za sledeih est instrukcija: ADDI,LD,ST,INC,NOT i ADD.

c) Neka je (R3)=500, M[500]=81 i M[502]=413. Kreirati programsku sekvencu za izra~unavanje vrednosti Y=413-(81+4). Vrednost Y smestiti na lokaciju M[504] .

d) Ako su propagaciona kanjenja kroz odgovarajue gradivne blokove sa slike 1 sledea:

tPC=1ns ; a`uriranje vrednosti PC-a

tIM= 4ns ; vreme pristupa memoriji gde se ~uvaju instrukcije

tRFR= 3ns ; vreme pristupa RF polju radi ~itanja

tMXB= 1ns ; vreme propagacije signala kroz MUXB

tFU, tMD = 4ns ; vreme propagacije signala kroz FU, ili vreme pristupa memoriji podataka

tMXD = 1ns ; vreme propagacije signala kroz MUXD

tRFW = 3ns ; vreme pristupa RF polju radi upisa

Odrediti propagaciono kanjenje signala unajgorem slu~aju kao i maksimalnu radnu taktnu frekvenciju sistema sa slike 1.

Odgovor a) Na~in dekodiranja instrukcije i odgovarajua logika dekodera prikazani su na Slici 3.

18 - 16

DA

15 - 13

AA

12 - 10

BA

9

MB

8 - 4

FS

2

MD

1

RW

0

MW

Opkod

15 14 13 -9

DR

8 - 6

SA

5 - 3

SB

2 - 0

Instrukcija

5 3 3 3

5

Bit 13

Upravlja~ka re~

Slika 3 Dekodiranje instrukcije

Tablica istine dekodera instrukcija prikazana je na slici 4.

bitovi instrukcije bitovi upravlja~ke re~i Bit 15 Bit 14 Bit 13 MB MD RW MW

kategorije operacije

0 0 0 0 0 1 0 funkcija ALU koja koristi registre 0 0 1 0 0 1 0 funkcija Pomera~a koja koristi registre 0 1 0 0 1 0 1 upis u memoriju kada se koriste registri 0 1 1 0 1 1 0 ~itanje memorije kada se koriste registri 1 0 0 1 0 1 0 operacija ALU-a koja koristi registre 1 0 1 1 0 1 0 funkcija Pomera~a koja koristi registre 1 1 0 1 1 0 1 upis memoriju kada se koristi konstanta 1 1 1 1 1 1 0 ~itanje memorije kada se koristi konstanta

Slika 4 Tablica istine dekodera-instrukcija Napomena: Treba uo~iti da se Bit13 koristi za upravljanje upisom u memoriju, a istovremeno predstavlja i prvi bit FS polja upravlja~ke re~i. Dvostruka uloga ovog bita sigurno unosi ograni~enja koje se odnose na rad funkcionalne-jedinice FU.

Op. kôd Simboli~ko ime

format Opis funkcija MB MD RW MW

1000010 ADI neposredni saberi neposredni operand R[DR]←R[SA]+zf I(2:0) 1 0 1 0

0110000 LD registarski napuni registar sadr`ajem memorijske lokacije

R[DR] ←M[R[SA]] 0 1 1 0

0100000 ST registarski smesti sadr`aj registra u memorijsku lokaciju

M[R[SA]] ←R[SB] 0 1 0 1

0000001 INC registarski inkrementiraj registar R[DR] ←R[SA]+1 0 0 1 0

0001110 NOT registarski komplementiraj registar R[DR] ←R[SA]

0 0 1 0

0000010 ADD registarski saberi registre R[DR] ←R[SA]+R[SB] 0 0 1 0

Slika 5 Definisanje opkôd polja i upravlja~kih bitova MB, MD, RW i MW kod instrukcija ADDI, LD, ST, INC, NOT i ADD

Napomena: Skraenica Zf se odnosi na proirenje nulama neposrednog operanda, OP, koji u neposrednom formatu instrukcija na slici 2 zauzima bit pozicije BIT2 do BIT0. tj I(2:O).

LD R1,[R3] ; M[500] → R1, tj (R1) =81

ADDI R1,R1,#4 ; R1+4→R1, tj (R1) =81+4=85 NOT R1,R1 ; komplementiraj R1

INC R1,R1 ; (R1)= -85, dvoji~ni komplement INC R3,R3 INC R3,R3 ; (R3)=502

LD R2,R3 ; M[502] → R2, tj (R2)=413 ADD R2,R2,R1 ; (R2)=413-85=328 INC R3,R3 INC R3,R3 ; (R3)=504 ST [R3],R2 ; R2 → M[504] Napomena: Par instrukcija INC R3,R3, INC R3,R3 (koji se u ovoj programskoj sekvenci javlja dvaput) mo`e se zameniti jedinstvenom instrukcijom ADDI R3,R3#2.

Put signala ~ije je kanjenje najvee prikazan je na Slici 6

-

PC

IM

RFpolje

MUX B

FU ili DM

MUX D

RF polje (upis)

3ns

1ns

4ns

1ns

3ns

4ns

1ns

Slika 6 Propagaciono kanjenje signala, u najgorem slu~aju, kroz sistem prikazan na Slici 1

Kao to se vidi sa Slike 6 ukupno propagaciono kanjenje iznosi 17ns, to ograni~ava maksimalnu radnu taktnu frekvenciju na 58,8 MHz.

Zadatak

Registri RF polja kod strukture sa slike 1 inicijalizovani su na vrednosti koje su jednake njihovim indeksima (R0=0, R1=1, R2=2,..., R7=7).

Za sledeu sekvencu instrukcija

ADD R0,R1,R2 ADD R3,R3,R4 ADD R5,R5,R6 ADD R0,R0,R3 ADD R0,R0,R5 ADD R0,R0,R7 ST R7,R0

odrediti:

(a) binarni sadr`aj svakog polja upravlja~ke re~i shodno formatu sa slike 3.

(b) promenu sadr`aja odgovarajueg registra od strane instrukcije

Zadatak

Skup instrukcija ra~unara sa slike 1 proiren je sa pet novih instrukcija pomou kojih se vri prenos podataka izmedju registara RF polja.

(a) Popuniti odgovarajua polja prikazana na slici 7a) (Na~in kodiranja odgovarajuih polja sa slike 7a) definisan je na slici 3.75). Ako se odgovarajue polje ne koristi ostaviti ga praznim.

(b) Popuniti odgovarajua polja prikazana na slici 7b) (Kod popunjavanja imati u vidu slike 3 i 4). Ako se odgovarajue polje ne koristi dodeliti mu vrednost 0.

instrukcija tipa registarski prenos DA AA BA MB FS MD RW MW

R0←R6⊕R7

R7←M[R6]

R6←R6+2

R7←sl R7

R6←R7

a)

instrukcija tipa registarski prenos opkôd DR SA SB ili operand

R0←R6⊕R7

R7←M[R6]

R6←R6+2

R7←sl R7

R6←R7

b)

Slika 7 Nove instrukcije kod ra~unara sa slike 1

Test pitanje

Blok ema mikroprogramski upravljenog ra~unara kod koga se svaka instrukcija izvrava za vei broj taktnih intervala (multiple-cycle microprogrammed computer) prikazana je na slici 8, a odgovarajui format mikroinstrukcione re~i na slici 9. Ukazati na osnovne razlike izmedju ra~unara koji ima implementirano direktno upravljanje, a sve instrukcije izvrava za jedan taktni interval (blok ema sa slike 1) i ra~unara sa slike 8.

PC

Blok za proirenje nulama

D 9*16 DA RF polje

A BA

1 0MUXB

Funkcionalna jedinica (FU)

F

BAFS

V

C

N

Z

0 1MUX D

Memorija M

podaci(izlazni)

adresepodaci ulazni

MD

MW

MB

TB||SBTA||SA

TD||DA'

RW

ulazkonstante

Mag. D

Mag. BMag. A

Memorijaadrese

Podaci izlazni

Podaci ulazni

AA

0 1MUX M

MM

IRopkôd DA' SA SB

0 1MUX C

MM

CAR

Mikroprogramska memorija256*s8

7 6 5 4 3 2 1 0MUX S

PI

N M I P T T T M F M R M MA S C I D A B B S D W M W

upravljanjesekvencijominstrukcija

upravljanje stazom podataka

mikroprogramsko upravljanje

staza podataka

8

333

708

MS

Z C N C V C 10

Slika 8 Blok ema mikroprogramski upravljanog ra~unara

27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

NA MS MC IL PI TD TA TB MB FS MD RW MM MW

Slika 9 Format mikroinstrukcije

Odgovor Uporedjujui sliku 1 sa slikom 8 mo`emo zaklju~iti da su na slici 8 izvedene sledee klju~ne modifikacije.

(1) Izdvojene memorije za instrukcije i podatke (slika 1) zamenjene su jedinstvenom memorijom M (slika 8).

(2) Da bi se pristupilo instrukcijama izlaz PC-a preko multipleksera MUX M se dovodi na adresne ulaze memorije M. Selektorski ulaz MUX M-a je MM.

(3) RF polje je proireno sa 8 na 9 registara. Registri R0-R7 su vidljivi programeru. Registar R8 se koristi za privremeno ~uvanje podataka i nije vidljiv programeru. Da bi se adresirao R8, RF polju sa slike 8 je dodat jo po jedan bit na adresnim ulazima sa leve i desne strane. Adresni ulazi SA, SB i DA’ se kombinuju sa novim jednobitnim upravlja~kim signalima TA, TB i TD, respektivno, pa se na taj na~in formiraju signali TA≡SA, TB≡SB i TD≡DA’. Ove kombinacije su na slici 8 simboli~ki prikazane kao ~etvoro-adresni ulazi. Na slici 10 prikazana je specifikacija upravlja~kih signala koje smo do sada pomenuli.

(4) Instrukcioni registar IR puni se samo kada se iz memorije ~ita instrukcija. Signal IL (instruction load enable) omoguava punjenje IR-a.

(5) Programski broja~, PC, se inkrementira samo kada se instrukcija pribavlja iz memorije. Signal PI (increment enable signal) obezbedjuje da se vrednost programskog broja~a inkrementira.

TD TA TB MB FS MD RW MM MW

selekcija sel. sel. sel.

kôd

funkcija kôd sel. funkcija sel. funkcija

kôd

R[DR] R[SA] R[SB] registar 0 F=A 00000 FnUt nema

upis -NW

adrese nema

upis -NW

0

RS RS RS konstanta 1 F=A+1 00001 Data In upis -WR PC upis -WR 1

F=A+B 00010

F=A+B+1 00011

F=A+/B 00100

F=A+/B+1 00101

F=A-1 00110

F=A 00111

F=A∧B 01000

F=A∨B 01010

F=A⊕B 01100

F=/A 01110

F=A 10000

F=sl A 10010

F=sr A 10100

F=0 10110

Slika 10 Definicija upravlja~kih signala staze podataka kod ra~unara sa slike 8

(6) Treba uo~iti da polja DA, AA i SA nisu deo formata mikroinstrukcije sa slike 9 nego se direktno vode sa izlaza DA’, SA i SB registra IR na ulaze RF polja. Na ovaj na~in smanjuje se broj bitova u formatu mikroinstrukcije (Slika 9).

(7) MC je selektorski signal multipleksera MUX C.

(8) MS su selektorski signali multipleksera MUX S. Ako je rezultantna vrednost MUX S jednaka 1 tada se CAR (content addressable register) puni, ina~e se inkrementira. Tako na primer, ako je MS=0102, tada naredna adresa zavisie od vrednosti bita za prenos C (carry bit). Ako je C=1 tada je izlaz MUX S-a jednak 1 pa e naredna upravlja~ka adresa sa izlaza MUX C-a biti napunjena u CAR. Ako je C=0 tada je izlaz MUX S jednak je 0, pa naredna upravlja~ka adresa bie CAR+1. Na slici 11 prikazan je sadr`aj upravlja~ke informacije polja MS, MC, IL i PI.

MS MC IL PI

akcija simboli~ko ozna~avanje

kôd selekcija simbol.

ozn.

akcija simbol.

ozn.

akcija simbol.

ozn.

kôd

Increment CAR CNT 000 NA NXA No Load NLI No Load NLP 0

Load CAR NXT 001 Opcode OPC Load Instr. LDI Increment PC INP 1

If C=1, load CAR;

else increment CAR

BC 010

If V=1, load CAR; BV 011

else increment CAR

If Z=1, load CAR;

else increment CAR

BZ 100

If N=1, load CAR;

else increment CAR

BN 101

If C=0, load CAR;

else increment CAR

BNC 110

If Z=0, load CAR;

else increment CAR

BNZ 111

Slika 11 Definicija polja MS, MC, IL i PI formata mikroinstrukcija sa slike 9

Test pitanje

Za mikroprogramski upravljanu mainu prikazanu na slici 8 nacrtati ASM dijagram koji opisuje na~in realizacije prenosa informacije (podataka) izmedju registara kao i na~in sekvenciranja mikroinstrukcija potreban da se implementiraju faze pribavljanja i izvrenja sledeih insstrukcija: ADI,LD,ST,INC,NOT,ADD,....

Odgovor ASM dijagram je prikazan na slici 12. Kao to se vidi sa slike 12 procesiranje svake instrukcije ~ine dva koraka, pribavljanje, IF, i izvrenje instrukcije EX. U toku faze pribavljanja naredbe sadr`aj PC-a odredjuje memorijsku lokaciju iz koje se ~ita instrukcija a zatim smeta u IR. U istom taktnom intervalu PC se inkrementira i priprema za pribavljanje naredne instrukcije. Nakon stanja IF maina prelazi u stanje EX0, prvu aktivnost faze izvrenja instrukcije.

U toku EX0 sedam MS bitova registra IR se puni u CAR. Ova akcija uzrokuje da CAR mo`e da adresira 27, ili 128 razli~itih lokacija, od 0 do 127, u zavisnosti od vrednosti opkôda koji je smeten u IR. Ovih 128 razli~itih adresa predstavljaju po~etne adrese za 128 potencijalnih mikroprograma, po jedna mikroinstrukcija za izvrenje svake od instrukcija koja se specificira opkôdom. Efekat punjenja registra CAR prikazan je na slici 12.

IR=0000000?10

R (DR)<-R(SA)+zf IR (2:0)

EX0 IF

ADI

11000000

00000000

IR=0000001?10

R (DR)<-M(R(SA))

LD 00000001

IR=0000010?10

M (R (SA))<-R(SB)

ST 00000010

IR=0000011?10

R (DR)<-R(SA)+1

INC 00000011

IR=0000100?10

R(DR)<-R(SA)

NOT 00000100

R (DR)<-R(SA)+R (SB)

ADD 00000101IR=0000101?

10

IR=0000110?10

IR=0000111?10

IR <- M (PC)PC <- PC + 1

11000001

Slika 12 ASM dijagram mikroprogramski upravljane maine

Instrukciji ADI je dodeljen opkôd 000 00002, instrukciji LD opkôd 00000012,itd.

Simboli~ki mikroprogram zasnovan na ASM dijagramu prikazan je na slici 13. Simboli~ka imena (polja) u mikroinstrukcionoj re~i su identi~na kao ona na slici 10 i slici 11. Veliki broj ulaza na slici 13 je nepopunjen, iz prostog razloga to resursi koji se upravljaju ne koriste se od strane te mikroinstrukcije. Simboli~ki mikroprogram sa slike 13 preveden je u binarni mikroprogram na slici 14. U ovoj tabeli CAR adrese zadate kao binarne na slici 12 zamenjuju imena stanja u prve dve kolone. Nepopunjena polja na slici 13, na slici 14 se popunjavaju nulama

Opkôd NXT

ADD

MS MC IL PI TD TA TB MB FS MD RW MM MW

IF EXO CNT - LDI INP - - - - - - NW PC NW

EX0 - NXT OPC NLI NLP - - - - - - NW - NW

ADI IF NXT NXA NLI NLP DR SA - konstanta F=A+B FnUt WR - NW

LD IF NXT NXA NLI NLP DR SA - - - Data WR MA NW

ST IF NXT NXA NLI NLP - SA SB registar - - NW MA WR

INC IF NXT NXA NLI NLP DR SA - - F+A+1 FnUt WR - NW

NOT IF NXT NXA NLI NLP DR SA - - F=/A FnUt WR - NW

ADD IF NXT NXA NLI NLP DR SA SB registar F=A+B FnUt WR - NW

Slika 13 Simboli~ki mikroprogram faze pribavljanja i izvrenja za est instrukcija

adresa NXT ADD

MS MC IL PI TD TA TB MB FS MD RW MM MW

192 193 000 0 1 1 0 0 0 0 00000 0 0 1 0 193 000 001 1 0 0 0 0 0 0 00000 0 0 0 0 000 192 001 0 0 0 0 0 0 1 00010 0 1 0 0 001 192 001 0 0 0 0 0 0 0 00000 1 1 0 0 002 192 001 0 0 0 0 0 0 0 00000 0 0 0 1 003 192 001 0 0 0 0 0 0 0 00001 0 1 0 0 004 192 001 0 0 0 0 0 0 0 01110 0 1 0 0 005 192 001 0 0 0 0 0 0 0 00010 0 1 0 0

Slika 14 Binarni mikroprogram faze pribaljanja i izvrenja za est instrukcija

Treba naglasiti da se svaka instrukcija maine sa slike 9 izvrava za tri taktna intervala. Uo~imo da se kod maine sa slike 1 svaka instrukcija izvravala za jedan taktni ilnterval.

Test pitanje

Skup instrukcija maine sa slike 8 proiren je sa sledee dve instrukcije:

(1) LRI - Load register indirect ~iji je opkôd 000 0110. Kod ove instrukcije sadr`aj registra specificiran SA poljem adresira re~ u memoriji. Ova re~ predstavlja indirektnu adresu i koristi se za adresiranje re~i u memoriji koja se puni u regitar DR. Efekat ove instrukcije se mo`e predstaviti kao

R[DR] ← M[M[R[SA]]]

(2) SRM - Shift right multiple ~iji je opkôd 000 0111. Kod ove instrukcije sadr`aj registra DR se pomera udesno za broj bit pozicija specificiran trobitnim OP poljem. Registar R8 se koristi za ~uvanje broja pozicija koje treba pomerati. Iznos pomeranja mo`e biti od 0 do 7 bit pozicija.

Nacrtati ASM dijagrame za LRI i SRM instrukcije.

Odgovor ASM dijagrami karakteristi~ni za fazu izvrenja instrukcija LRI i SRM prikazani su na slikama 15 i 16, respektivno.

IR=0000110?

R8 <- M (R (SA))

LRI0 00000110

R (DR) ← M (R8)

LRI1 100001110

Ka fazi IF

10

od koraka EX0

Slika 15 ASM dijagram instrukcije LRI

R8 <- zf IR (2:0)

SRM1 00000111

R (DR) ← sr R (SA)

SRM2 100001111Napomena: SA = DR

Ka fazi IF

Ka fazi IF

IR=0000111?10

od koraka EX0

zf IR (2:0)=0?1

R8 <- R8 - 1

SRM3 100001000

R8 = 0?1

0

0

Slika 16 ASM dijagram instrukcije SRM

Vreme izvrenja instrukcije SRM, u zavisanosti od iznosa pomeranja, menja se u granicsama od 3 do 23 taktna intervala.

Zadatak

a) Da li arhitektura sa slike 1 mo`e da se u~ini proto~nom? Ako mo`e prikazati blok dijagram proto~ne maine.

b) Pokazati kako izgleda izvrenje sekvence

for i=1 to 7 do R(i) = R(i) + 1;

c) Pokazati kako proto~na maina izvrava sledeu sekvencu instrukcija

1 ADD R1,R0,R1 2 ADD R3,R2,R3 3 ADD R5,R4,R5 4 ADD R7,R6,R7 5 ADD R3,R1,R3 6 ADD R7,R5,R7 7 ADD R7,R3,R7 Odgovor Blok ema proto~no organizovane maine prikazana je na slici 17

RF poljeisto kao gore

D podaciRW

D

Podaci izlazni

Podaci ulazni

Memorija podatakaista kao gore

Ulaz podataka Adresa

MUX D

Memorijapodataka

podaci(izlazni)

adresaBA

Funkcionalna jedinica

F

FS

V

C

N

Z

Izlaz adresa

5

Adresamemorija za instrukcije instrukcije

PC

Dekoder instrukcija

Blok za proirenje nulama (ZF)

RF polje

Apod. B

MUX B MB

BAAA

Podatak BPodatak A

IF

DOFIR

IF

Stepen 4

Stepen 3

Stepen 2

Stepen 1

AA BA MB

EX------ WB

DOF------EX

MW

RWMDDA

FS

WB

MWPodatak I

Podatak F

MD

Slika 17 Blok dijagram proto~no organizovanog ra~unara

Proto~no izvrenje sekvence instrukcija

1 LDI R1,1 2 LDI R2,2 3 LDI R3,3 4 LDI R4,4 5 LDI R5,5 6 LDI R6,6 7 LDI R7,7 prikazano je na slici 18

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

1 2 3 4 5 6 7 8 9 10

1

2

3

4

5

6

7

taktni interval

instrukcija

Slika 18 Proto~no izvrenje sekvence for i=1 to 7 do R(i)=R(i)+1

c) Kompilator e detektovati zavisnosti po podacima izmedju instrukcija i modifikovae programsku sekvencu na sledei na~in, tj. da bi reio problem hazarda po podacima ubacivae operacije tipa NOP.

1 ADD R1,R0,R1 2 ADD R3,R2,R3 3 ADD R5,R4,R5 4 ADD R7,R6,R7 5 ADD R3,R1,R3 6 NOP 7 ADD R7,R5,R7 8 NOP 9 NOP

10 ADD R7,R3,R7 Proto~no izvrenje modifikovane sekvence imae oblik kao onaj na slici 19.

1 2 3 4 5 6 7 8 9 10 11 12 13

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WB

IF DOF EX WBR3,R7

R5,R7

R1,R3

1

2

3

4

5

6

7

8

9

10

instrukcija

taktni interval

Slika 19 Modifikovana sekvenca