Professional Documents
Culture Documents
Organizacija Računalnih Sustava
Organizacija Računalnih Sustava
Kontroleri
to odreuje arhitekturu?
SABIRNICA BUS PROTOCOL
- master/slave
- bus arbitration
- bus clocking
VON NEUMANN-HARVARD
VON NEUMANN jedna zajednika memorija
za program i podatke
HARVARD dvije memorije; jedna za program;
jedna za podatke (Data)
Boot; Loader
CPU
Srce stroja
Words
naredbe
Instruction decoder
ALU
PC registar
Bus control
Stack pointer
CPU
Cache memory
Memorija
16K -GB
Volatile = 'zaboravna'
ROM (bootstrap)
ROM- BIOS vs OS
I/O
Data Bus
Data Bus
SAETAK
KOMPJUTER =
Cpu (mikroprocesor)
Memorija
Sabirnica
I/O
ARHITEKTURA =
Cpu + sabirnica
INSTRUKCIJSKI SKUP
Instruction set
to se zbiva u CPU-u kada izvrava naredbe-->
signali na sabirnici
Kompleksno --> smanjeni set 8086 (x86)
naredbi
Programiranje na nivou strojnogjezika(machine language)
INSTRUKCIJSKI SKUP
CPU projektiran da interpretira odreene
rijei kao naredbe i izvri potrebne operacije
(zadatke)
Strojni jezik skup binarnih naredbi, koliko
byte-a?
Svaki CPU ima svoj strojni jezik (instruction set
i kodove)
PROGRAMIRANJE
Programiranje direktno u strojnom jeziku -->
'kodiranje' naredbi u binarnim kodovima,
memorijskih lokacija,...
Koristi se program assembler
PR:
MOV
ADD
AND
count,CX
small, 0x2
AX, 0x007F
;(m,r)
;(m,imm)
;(r,imm)
ADRESIRANJE
Registri i adresiranje memorije: 8 registara
ope namjene ('general purpose'), ali veina
ima specijalnu namjenu
Registri A-D kao AX ili AH,AL ( 16 bit ,
eXtended, ili 8 bit)
BX, BP, SI, DI se mogu koristiti za adresiranje
Posebne loop naredbe (maknute) registar C
Multiply/divide i I/O naredbe koriste registre A
iD
2. INDIREKTNO
- adresa varijable se stavi u jedan od adresnih
registara (BX,BP,SI,DI)
- koristimo naredbu koja specificira adresiranje
indirektno preko registra
3. INDEKSNO (INDEX)
- kombinacija prva dva modusa
- da bi se dobila adresa varijable dodaje se
immediate (konstanta) pomak (displacement)
na vrijednost specificiranu u adresnom
registru
PR.
MOV
MOV
MOV
count, 100h
(direct)
[BX] , 100h
(indirect)
[BX+1000h],AX (indexed)
Pozivi potprograma
Subroutine calls, function calls (C jezik)
CALL naredba, slina JUMP, povratna adresa se
stavlja na stog (PUSH)
- na kraju potprograma izvravamo RET
naredbu, koja skida adresu sljedee naredbe
sa stoga (POP)
(PC program counter na stog/sa stoga)
Naredbe STI, CLI, IRET su vezane uz prekide
Primjer programa
Kada se programira u asembleru potrebno je
'runo' napraviti puno malih koraka kako bi se
izvrile u biti jednostavni zadatci (puno je lake
raditi u viem programskom jeziku kompajler
obavlja te iste korake za nas
PR: uveaj broj N za jedan, ako je jednak broju
M
Primjer programa
(C jezik)
int n,m;
if (n==m) ++n;
(Visual basic)
Dim m,n As Integer
IF m=n Then m+=1
Primjer programa
n DW 0
m DW 0
NEXT:
MOV AX, n
CMP AX, m
JNZ
NEXT
INC
n
(sljedea naredba)
Programiranje u assembleru
ASSEMBLER
source code (mnemonika) --> strojni jezik
Prije izvrenja programa program je biti uitan
u memoriju
DW naredbe --> pseudo naredbe za
assemblera
LINKER/LOADER
Izvrni program (executable, image )
Programiranje u assembleru
Programiranje je dosta 'kriptino'
Kod je uvijek manji i bri nego isti algoritam
napisan u viem programskom jeziku
Obino se u asembleru piu kratke rutine
(potprogrami) koje se onda pozivaju iz vieg
programskog jezika
Razvoj C jezika je minimizirao sluajeve u
kojima se mora korisitit assembler
SIGNALI NA SABIRNICI
Oko 50-100 signalnih linija na sabirnici u
standardnom raunalu (podatci, adrese,
upravljanje)
IBM PC/XT sabirnica (ISA Industry standard
Arhitecture)--> danas PCI
- tipina za manje raunalo sa 53 signalne linije
i 8 linija za napajanje i uzemljenje
MOV
MOV
MOV
PLOT:
MOV
OUT
MOV
OUT
INC
INC
DEC
JNZ
JMP
SI, xpointer
DI, ypointer
CX, count
AL, [SI]
3C0h, AL
AL, [DI]
3C1h, AL
SI
DI
CX
PLOT
INIT
DZ :
napii identian driver za display
kao potprogram
Adrese memorijskih lokacija na
kojima se nalaze x,y toke predaju
se kao adrese (xpoint,ypoint); Broj
toaka se predaje u varijabli count;
Napii i glavni program koji poziva
potprogram
PREKIDI (INTERRUPTS)
Kako moe vanjski ureaj javiti CPU-u da se
neto dogodilo?
1. ekati da ga prozove ( program polling)
2. Prekinuti (interrupt) CPU
Mehanizam koji omoguuje vanjskoj jedinici
da prekine (interrupt) normalan (sekvencijalni
naredbu po naredbu redom) rad CPU-a, kada
se neto treba obaviti
PREKIDI (INTERRUPTS)
PC ISA sabirnica ima 6 interrupt request linija
Oni su ulazi u sklopovlje (dio chipseta) koje
podrava prekide (8259 interrupt controller)
Da bi se dogodio prekid pripadna IRQ linija se
mora dignuti visoko
CPU zavrava naredbu, obavi osnovni
'housekeeping' (spremi STATUS REGISTAR i PC
registar na stog), i skae na pridrueni ISR
PREKIDI (INTERRUPTS)
ISR (Interrupt Service Routine), Interrupt
handler, IRQ handler, je prekidni potprogram
koji e se izvriti kada se dogodi pripadni
prekid
Slino kao da smo iz programa pozvali
potrpogram sa CALL naredbom, samo se ovaj
poziv zbiva 'hardverski' sa pojavom pripadnog
IRQ signala
PREKIDI (INTERRUPTS)
Prekid e se dogoditi samo ako su
1. Ukljueni globalni prekidi (obino pripadna
zastavica -flag u STATUS REGISTRU)
2. Ako je ukljuen prekid za dati IRQ liniju
CPU skae (JMP) na memorijsku lokaciju ISR-a,
koja je predodreena u interrupt kontroleru
(interrupt vector table); vektori se nalaze na
niskim lokacijama u memoriji
PREKIDI (INTERRUPTS)
Na svakom zapisu (vektoru) se nalazi JMP
naredba koja skae na na interrupt handler
Programski prekidima upravljamo tako da
namjetamo prekidni kontroler (chip); to
radimo pisanjem/itanjem u njegove registre
SOFTWARE INTERRUPT
INT naredba
Kada se izvri kao da se dogodio fiziki prekid
Mogunost da programer uzrokuje prekid
Kao i svaki drugi prekid, ima svoj vektor
Slui za implementaciju OS-a
SOFTWARE INTERRUPT
INT naredba
Kada se izvri kao da se dogodio fiziki prekid
Mogunost da programer uzrokuje prekid
Kao i svaki drugi prekid, ima svoj vektor
Slui za implementaciju OS-a
OS
protected mode CPU-a
organizira resurse; slui kao server user
programima
glavni dijelovi:
kernel (low level); IPC; scheduling
device drivers
memory manager
file system
OS
komunikacija sa user programima: system calls
POSIX; Win32