You are on page 1of 21

Arhitektura računara

Ulaz/izlaz

Nikola Savanović,
nsavanovic@singidunum.ac.rs
Pojam ulaza/izlaza

• Procesor je sa svojom okolinom povezan ulazno/izlaznim uređajima


• Ulazno/izlazni (I/O) uređaji predstavljaju i interfejs između računara i
korisnika. Najpoznatiji ulazni uređaji su miš i tastatura, najpoznatiji izlazni
su monitor i štampač
• Procesor je spregnut sa ulazno/izlaznim uređajima preko kontrolera
ulazno/izlaznih uređaja. Kontroleri ulazno/izlaznih uređaja imaju određeni
broj registara. Upisivanjem vrednosti u te registre procesor zadaje
komande kontroleru, a čitanjem vrednosti iz tih registara saznaje status
kontrolera i/ili samih uređaja. Kontrolere ulazno/izlaznih uređaja ćemo
skraćeno zvati I/O kontroleri
• Postoje dva osnovna načina za pristup registrima I/O kontrolera
Veza procesora, memorije i I/O uređaja
Mem

CPU

AX BX
CX DX
ALU
IO uređaj
PC IR
Upravljacka jedinica

MAR MDR

Data bus SR
CR
Address bus

RD IO kontroler
WR
ACK
M/~IO

• Podebljane linije na skici simbolizuju postojanje većeg broja linija magistrale


Komunikacija sa registrima I/O uređaja
• Princip je gotovo identičan kao kod memorije. Razlika je samo u tome
što procesor kada želi da čita ili piše u registre I/O uređaja, osim RD,
WR, ABUS , DBUS linija koje inače postavlja, postavi i liniju M/~IO na 0.
Kada želi da komunicira sa memorijom, postavi liniju M/~IO na 1.
• Registri I/O kontrolera imaju svoje adrese, koje procesor stavlja na ABUS
kada želi da komunicira sa njima. Kada kontroler I/O uređaja registruju
da je M/~IO linija 0 i da je na ABUS adresa registra koji se nalazi u
njemu, shvata da procesor želi da komunicira sa njim. Ako je na M/~IO
liniji 1, procesor komunicira sa memorijom i I/O kontroler se ne odaziva,
čak i ako je na ABUS adresa nekog njihovog registra. Dakle, na istoj
adresi se može nalaziti i registar I/O kontrolera i memorijska lokacija.
Kome se pristupa, odlučuje sadrzaj linije M/~IO.
• Kada postoji zasebni I/O adresni prostor procesor u registre I/O
kontrolera piše naredbom OUT odr, izv (odr je adresa registra I/O
kontrolera, izv je registar iz koga se vrednost upisuje u registar I/O
kontrolera), Iz registara I/O kontrolera čita se naredbom IN odr, izv
(odr je registar procesora u koji se upisuje vrednost iz registra IO
kontrolera na adresi izv). Napomena: obično se vrednosti u
registre I/O kontrolera prenose iz registara opšte namene
procesora, pa se zato za izv parametar u OUT instrukciji uzima
registarsko direktno adresiranje. Isto važi i za odr parametar OUT
instrukcije.
Ciklus čitanja iz registra I/O uređaja
• Procesor postavi adresu registra I/O kontrolera sa koje želi da čita u registar MAR
• Procesor izbaci sadržaj registra MAR na adresnu magistralu i postavi signale RD na
1 i M/~IO na 0 (njih malo kasnije da bi sadržaj na ABUS već bio stabilan u trenutku
davanja signala za čitanje)
• Kada I/O kontroler detektuje da je postavljen signal RD i da je na liniji M/~IO nula
ispituje da li je adresa na ABUS adresa nekog od njegovih registara. Ako jeste on
shvata da procesor želi da čita podatak iz njegovog registra
• IO kontroler tada sadržaj traženog registra postavlja na DBUS, i postavlja signal ACK
(opet sa malim kašnjenjem da bi sadržaj na DBUS bio stabilan u trenutku davanja
signala ACK), koji je znak procesoru da može da čita podatak
• Kad procesor vidi ACK shvata da je podatak raspoloživ na magistrali podataka i
odatle ga smešta u registar MDR
• Kada procesor završi sa čitanjem spušta signal RD, M/~IO i signale adresne
magistrale
• Spušteni signali RD i M/~IO je znak IO kontroleru da je procesor pročitao podatak i on
tada spušta ACK i signale na magistrali podataka (svako spušta ono što je postavio).
Time je sve vraćeno u prvobitno stanje
Ciklus čitanja iz registra I/O kontrolera - signali

M/~IO

WR

RD

xxxx xxxx xxxx xxxx xxxx

ABUS

yyyy yyyy yyyy yyyy

DBUS

ACK
Ciklus upisa u registar I/O kontrolera
• Procesor postavi adresu na koju želi da upisuje u registar MAR a podatak koji želi da
upiše u registar MDR
• Procesor izbaci sadržaj registra MAR na adresnu magistralu, sadržaj registra MDR na
magistralu podataka i postavi signale WR i M/~IO (njih malo kasnije da bi sadržaj na
ABUS i DBUS bio stabilan)
• Kada IO kontroler detektuje da je postavljen signal WR i da je na M/~IO liniji 0, ispituje
da li je na ABUS adresa nekog od njegovih registara. Ako jeste to znači da procesor želi
da upiše vrednost u njegov registar
• I/O kontroler u svoje bafere prihvata informacije sa ABUS i DBUS linija i postavlja ACK
liniju kao znak procesoru da je preuzeo adresu i podatak i da procesor ne mora više da
ih drži na magistralama (adresnoj i magistrali podataka)
• Kada procesor vidi da je postavljen ACK shvata da je podatak upisan u prihvatne bafere
I/O kontrolera (upis u sam registar I/O kontroler može da obavi sam, CPU više ne mora
da drži informacije na magistralama jer se one nalaze u baferima memorije). Procesor
ukida signale na adresnoj i magistrali podataka i signale WR i M/~IO.
• Spušteni signali WR i M/~IO su znak I/O kontroleru da i on spusti ACK (svako spušta
ono što je postavio). Time je sve vraćeno u prvobitno stanje
Ciklus upisa u registar I/O kontrolera - signali

M/~IO

RD

WR

xxxx xxxx xxxx xxxx xxxx

ABUS

yyyy yyyy yyyy yyyy yyyy

DBUS

ACK
Komunikacija sa memorijom u prisustvu kontrolera
I/O uređaja

• Sve je potpuno isto kao i u komunikaciji sa I/O uređajima samo je sadržaj


linije M/~IO u poređenju sa prethodnim dijagramima u svakom trenutku
suprotan.
Komunikacija sa registima I/O uređaja – drugi način

• Alternativni način komunikacije je da linija M/~IO ne postoji, i da se opseg


adresa podeli između memorije i regisrtara IO kontrolera. Tada memoriju i IO
kontrolere treba napraviti tako da prepoznaju da li je adresa na ABUS iz
njihovog opsega da bi mogli da ispravnom odgovore na zahtev
• Tada se za komunikaciju koriste standardne instrukcije MOV i kaže se da je
memorijski adresni prostor deljen sa I/O adresnim prostorom
Komunikacija sa registima I/O uređaja - primer

Procesor ima razdvojeni memorijski i I/O adresni prostor. Na adresi 10h u I/O
adresnom prostoru nalazi se kontrolni registar kontrolera periferije.
Napisati segment koda koji u taj registar upisuje konstantu 1.
Potom napisati segment koda upisuje vrednost 1h u memoriju na lokaciju 10h.
Komunikacija sa registrima I/O uređaja

MOV AX, 1h
OUT 10h, AX

MOV 10h, AX
Ulaz/izlaz, registri kontrolera periferije

Svakom I/O uređaju pridružuje se I/O kontroler koji predstavlja interfejs između
procesora i I/O uređaja. I/O kontroler može da prenese informaciju do ili od I/O
uređaja.

I/O kontroler ima kontrolni, statusni i registar podataka. Ovi registri imaju adrese
u I/O adresnom prostoru i procesor komunicira sa I/O kontrolerom upisivanjem u
kontrolne registre i očitavanjem vrednosti statusnih registara. Kada procesor želi
da prenese podatak I/O uređaju ili da prihvati podatak od njega to radi preko
registra podataka njegovog I/O kontrolera.
Registri kontrolera I/O uređaja
Kontrolni registar najčešće sadrži sledeće bite:

- bit Start koji procesor setuje kada hoće da startuje I/O kontroler i resetuje kada
hoće da ga isključi
- bit Smer kojim procesor saopštava I/O kontroleru da li želi ulaz (prenos
podataka od periferije ka procesoru) ili izlaz (prenos podataka od procesora ka
perifieriji)
- bit Int kojim procesor saopštava da li I/O kontroler treba da da signal za prekid
kada obavi operaciju ulaza ili izlaza

Statusni registar najčešće sadrži bit Ready koji I/O kontroler postavlja kada obavi
operaciju.

Registar podataka služi da prihvati podatak koji se prenosi u jednom ili u drugom
smeru.
Ulaz sa periferije
• Kada mu procesor zada režim ulaza (prenos podataka od periferijskog uređaja
ka procesoru) kontroler I/O uređaja u registar podataka dovlači vrednost sa I/O
uređaja u svoj registar podataka. Kada to uradi, kontroler postavlja Ready bit u
svom statusnom registru što je znak procesoru da može da pročita vrednost.
Kada procesor očita vrednost iz registra podataka, I/O kontroler resetuje Ready
bit u svom statusnom registru i kreće da prenosi sledeći podatak sa I/O uređaja
u svoj registar podataka.

• Alternativno, ako je bit Int njegovog kontrolnog registra postavljen, I/O kontroler
će svaki put kada setuje bit Ready poslati i zahtev za prekid procesoru. Ovo je
korisno jer procesor ne mora da stoji u mestu i ispituje da li je Ready = 1 da bi
mogao izvrši sledeći prenos već to može da uradi u prekidnoj rutini.
Izlaz na periferiju

• Kada mu procesor zada režim izlaza (prenos podataka od procesora ka


periferijskom uređaju) kontroler I/O uređaja čeka da mu procesor u registar
podataka upiše vrednost. Kada je registar podataka slobodan bit Ready je 1.
Kada procesor to uradi, kontroler spušta Ready bit u svom statusnom registru
sve dok ne prenese informaciju na periferiju. Kada je prenese, I/O kontroler ima
slobodan registar podataka i u njega može da prihvati novu vrednost za prenos.
Tada on setuje Ready bit u svom statusnom registru. Kada procesor vidi da je
Ready setovan može da upiše novu vrednost.

• Alternativno ako je bit Int njegovog kontrolnog registra postavljen, I/O kontroler
će svaki put kada setuje bit Ready poslati zahtev za prekid procesoru. Ovo je
korisno jer procesor ne mora da stoji u mestu i ispituje da li je Ready = 1 da bi
mogao izvrši sledeći prenos već to može da uradi u prekidnoj rutini.
Načini komunikacije

• Kontroler periferijskog uređaja svoju spremnost procesoru objavljuje


postavljanjem bita Ready u statusnom registru, i ako je tako inicijalizovan,
signaliziranjem prekida
• Signaliziranje prekida je poželjno jer omogućava da procesor radi neki drugi
posao dok čeka ulaz sa perfierijskog uređaja koji je po pravilu mnogo sporiji od
njega
DMA kontroleri I/O uređaja
• Periferijskom uređaju se osim standardnog kontrolera može dodatno pridružiti i
složeniji uređaj – DMA kontroler
• Običan kontroler periferije je u stanju da prenese podatak iz svog registra
podataka do samog periferijskog uređaja ili u obrnutom smeru. On međutim ne
može sam da pristupi memoriji. Procesor je taj koji je dužan da podatak uzme iz
memorije i posebnom instrukcijom ga upiše u registar podataka kontrolera ili da
uzme podatak iz registra podataka kontrolera periferije i upiše ga u memoriju
• DMA kontroler je u stanju da sam direktno pristupa memoriji – otuda i naziv
Direct Memory Access kontroler
• Kao i procesor, DMA kontroler može da bude master na magistrali.Zato je
potrebno uvesti arbitraciju na magistrali, tj. obezbediti da se ne desi da DMA
kontroler i procesor pokušaju da u isto vreme pristupe magistrali
• Kada se DMA kontroler startuje zadaje mu se adresa u memoriji na koju ili sa
koje treba da vrši prenos iz ili ka periferijskom uređaju, pa DMA kontroler ima i
jedan adresni registar. Postoji i brojački registar u koji se unosi broj reči koje
treba preneti
• Kada DMA kontroler završi sa prenosom podataka on generiše prekid i u toj
prekidnoj rutini se najčešće isključuje DMA kontroler
Režimi rada DMA kontrolera

• DMA kontroler je moguće inicijalizovati da radi u burst ili u cycle stealing režimu
• Burst režim rada podrazumeva da kada se DMA kontroler pokrene i prvi put
dobije pravo pristupa magistrali, ostane u posedu prava korišćenja magistrale
sve dok ne obavi ceo prenos. Za to vreme procesor ne može da koristi
magistralu (ne može da čita instrukcije i podatke iz memorije). Zato se ovaj
režim koristi samo kada je kritično brzo preneti neke podatke sa periferije da se
ne bi gubilo vreme na arbitraciju pristupa magistrali za svaki pojedinačni prenos
• U cycle stealing režimu DMA kontroler traži dozvolu za korišćenje magistrale
svaki put kada hoće da prenese jednu reč sa periferije u memoriju. Između tih
prenosa procesor normalno pristupa magistrali. Efektivno DMA kontroler i
procesor naizmenično kontrolišu magistralu
Registri DMA kontrolera
Kontrolni registar najčešće sadrži sledeće bitove:
- bit Start koji procesor setuje kada hoće da startuje I/O kontroler i resetuje kada
hoće da ga isključi
- bit Smer kojim procesor saopštava I/O kontroleru da li želi ulaz (prenos
podataka od periferije ka procesoru) ili izlaz (prenos podataka od procesora ka
perifieriji)
- Bit Mode koji određuje da li se radi u burst ili u cycle stealing režimu
- Int bit se u praksi uvek postavlja na 1 da bi DMA kontroler generisao prekid
kada obavi prenos koji mu je zadat (ne kada prenese jednu reč, već kada obavi
ceo prenos)
Registar podataka služi da prihvati podatak koji se prenosi u jednom ili u
drugom smeru (procesor mu ne pristupa direktno), adresni registar sadrži
adresu u memoriji sa koje se ili na koju vrši prenos, a brojački registar broj reči
koje treba preneti.

Kada se radi prenos pomoću DMA kontrolera, osim DMA kontrolera potrebno je
inicijalizovati i kontroler periferije za prenos u željenom smeru

You might also like