You are on page 1of 64

Organizacija raunalnih sustava

Kompjuter Turingov stroj, Turing


completness
Digitalni kompjuter
= meusobno povezani sustav procesora,
memorije i I/O jedinica
Veza? Sabirnica
CPU je mozak

Pristup implementaciji proizvoda


Kalkulator i Buscom, Intel 4004
Raunalo kao univerzalni stroj
Stored program machine

MINICOMPUTER CPU sastavljen od SSI i MSI


ipova (IC)
CPU:
Kontrolna jedinica
ALU
Registri
LSI i VLSI CPU u jedan ip mikroprocesor
(mikrokopjuter)
Mikrokontroler kompjutor na ipu

Opi prikazi arhitektura

Opi prikazi arhitektura

Opi prikazi arhitektura

Kontroleri

Opi prikazi arhitektura


- PC arhitektura

Opi prikazi arhitektura


Mikrokontroler (MCU)
AVR
SoC

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

Flags (carry, zero, sign)

Memorija

RAM ( volatile, fast access)

16K -GB

Brzo pisanje i itanje (ns)

Volatile = 'zaboravna'

ROM (bootstrap)

ROM- BIOS vs OS

Adresiranje (modovi); irina sabirnice

program memory, data memory; instr/data


fetch

I/O

Terminal tipkovnica i ekran

Real time I/O

Off-the shelf; projektiranje "in-house" -->


bus interfacing
Network interface

Data Bus

Sabirnica= skup djeljenih linija za razmjenu


digitalnih rijei
Komunikacija unutar raunala CPU
memorija I/O
Koritenje dijeljenje sabirnice bitno
pojednostavnjuje oienje
Sabirnica = skup DATA linija (broj bita u
rijei), skup ADDRESS linija, skupu
CONTROL linija
Sve DATA linije (i neke druge su)
dvosmjerne (bidirectional) -->3-state driven

Data Bus

3-state: ureaji spojenu na sabirnicu mogu


ugasiti (disable) svoje bus drivers
Normalno samo jedan ureaj stavlja
podatke na sabirnicu
Svako raunalo ima tono definiran
protokol za odreivanje tko i kako stavlja
podatke na sabirnicu

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

8086 instruction set


(pojednostavljeni)
8080 8-bitni procesor, 8086 16-bitni,
80286,80386....
'srezani skup' 10 aritmetikih i 10 ostalih
Objaenjenje: prvih 6 "2-operand naredbe"
a,b = m (memorijska lokacija), r (CPU registar),
imm (immediate argument-->kodiran u
naredbu@ assembly time)

PR:
MOV
ADD
AND

count,CX
small, 0x2
AX, 0x007F

;(m,r)
;(m,imm)
;(r,imm)

Intel argument convention: prvi argument je


modificiran/zamjenjen drugim argumentom
Zadnje etiri aritmetike naredbe --> single
operand
INC count
NEG AL

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

Podatci koriteni u naredbama mogu biti:


immediate (konstanta), vrijednost u registru,
vrijednost u memoriji
Immediate se specificira po vrijednosti,
registre po imenu
Za adresiranje memorije 8086 nudi 6 modusa
adresiranja (addressing modes)
1. DIREKTNO adresa se ugradi u instrukcijski
kod prilikom asembliranja programa (at
assembly time)

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)

16 bitna "adresa" samo 64K memorije; to


znai da ovako generirana "adresa" nije
stvarna konana adresa ona je offset
(pomak)
Prava adresa: offset + 20-bitna baza
20 bitna baza= sadraj 16-bitnog segment
registra (segment register) pomaknut za 4
ulijevo (LEFT SHIFT 4 Bits)

Moemo adresirati 64Kb memorije u datom


trenutku
Lokacije segmenata memorije se nalaze u
segment registrima
Noviji procesori imaju 32-bitno adresiranje
Ignoriramo segmente jer nas u ovom trenutku
ne zanimaju
Skoro u svakom CPU imamo neki oblik
"memorijskog pridruivanja memory
mapping" (8086 segmenti su primjer)
Virtualna memorija

8086 instrukcijski skup - STOG


Stack (stog) naredbe PUSH i POP
stog je dio memorije(LIFO), nalazi se u
standardnoj RAM memoriji
SP stack pointer registar unutar CPU-a dri
lokaciju trenutnog "vrha stoga"; inc/dec za 2
(16bit), prije svakog PUSH, poslije svakog POP
PUSH je decrement, POP je increment
Stog raste prema dolje!

Stog ima centralnu ulogu kod poziva


potprograma (subroutine calls) i prekida
(interrupts)

Upravljanje tokom programa


Control skupina naredbi
CPU izvrava naredbe sekvencijalno
JMP naredba prekida standardni tok programa
uzrokuje skok na navedenu naredbu
Uvjetni skokovi (conditional jumps- Jcc)
testiraju flag register
Flag registar se nalazi unutar CPU-a i njegovi
bitovi su postavljeni prema rezultatu
predhodne aritmetike naredbe
Ili se skae ili izvrava redom sljedea naredba

Pr. program kopira 100 rijei iz niza poevi od


memorijske lokacije 1000h na novu lokaciju
koja poinje 1KB (0x400) vie
MOV BX,1000H ;stavi adresu nizu u BX
MOV CL, 100 ;inicijaliziraj br.
loop: MOV AX, [BX] ;kopiraj u AX
MOV [BX+400h],AX ; na novu lokaciju
ADD BX,2
; uveaj pokaziva
DEC CL
; smanji broja
JNZ loop
; petlja
(sljedea naredba)

Komentari: sve ide kroz AX registar; 8086 ne


doputa direktne memorija-memorija
operacije
-BX je pointer
U praksi: koristili bi jednu od string move
operacija (CISC primjer)

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

Hijerarhija programskih jezika


Assembler: start-up kod za C environment, brzi
kratki potprogrami (rutine), specifine
procesorske naredbe koje ne podrava ANSI C
kompajler
C jezik: kernel operacijskog sustava, engines,
libraries, drivers, optimizirani i stabilni kod,
CGI server programi
C++: objektni C, aplikacijski programi, dobar
dio OS (osim kernela), stabilan i brz, moe
zamijeniti C u veini sluajeva

Hijerarhija programskih jezika


"Framework jezici": JAVA, .NET (C#, Visual
Basic,...) i skriptni jezici (Python,...)
- pisanje standardnih desktop aplikacija i
umreenih aplikacija
- odlina podrka za GUI
- jednostavno programiranje
- napuhan i ne toliko robustan kod
Razlika Framework - Library

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

Osnovni signali na sabirnici


Pomicanje podataka po dijeljenoj sabirnici
( speficirati: podatak, primatelja, trenutak
kada je podatak valjan)
--> minimalna sabirnica mora imati:
1. Podatkovne linije (DATA lines)
- za podatak koji e se pomaknuti
2. Adresne linije (ADDRESS lines)
- za identifikaciju I/O ureaja ili memorijske
adrese
3. STROBE linije
- govore kada e se podatak pomaknuti

Osnovni signali na sabirnici


PODATKOVNE LINIJE
- njihov broj je obino jednak broju bitova u
rijei (znai, 16 za 16-bitnu arhiterkturu)
- PC sabirnica: samo 8 ( potrebna dva
prijenosa za rije)
ADRESNE LINIJE
- njihov broj odreuje broj memorijskih
lokacija koje arhitektura moe adresirati
( obino su I/O i memorija na istoj sabirnici)

Osnovni signali na sabirnici


- PC ima 20 adresnih linija (zajednika
sabirnica za I/O i memoriju -1MB)
STROBE linije
- sinkronizacija prijenos podatka pulsevima na
'strobe' signalnim linijama
- PC ima zasebne READ i WRITE signalne linije,
puls na jednoj ili drugoj sinkronizira prijenos
- PC ima etiri takve linije jer razlikuje
itanje/pisanje memorije i I/O

Osnovni signali na sabirnici


Ovi signali na sabirnici (DATA, ADDRESS, i etiri
STROBE signala bili bi dovoljni za
najjednostavnije prijenose podataka)
- na PC-u trebamo jo AEN liniju (ADDRESS
ENABLE) kako bi razlikovali I/O prijenos
podataka od DMA (direct memory access)
prijenosa; AEN = LOW za I/O prijenos, AEN =
HIGH za DMA prijenos

Programirani I/O: podatci van


Najednostavnija metoda prijenosa podataka
na sabirnici ( eng. naziv: 'programmed I/O'),
znai da se podtaci prenose koritenjem IN ili
OUT naredbi u programu

Programirani I/O: OUT

PR. X-Y vektorski ekran (display)


aljemo X i Y koordinate (brojeve) i on
prikazuje svaku toku na ekranu
Prvo trebamo odabrati I/O adresu
- prikaz dostupnih I/O adresa za PC arhitekturu

PR. X-Y vektorski ekran (display)


Odabiremo 0x3C0 za X registar i 0x3C1 za Y
registar (8 bitni)
'hardwired' adresa
BIOS ili OS e prilikom paljenja sustava
proitati adrese spojenih kartica i dati ih na
koritenje ostalim programima (device
driverima); na PCI sabirnici adresa je odreena
geografskom lokacijom kartice

PR. X-Y vektorski ekran- driver


INIT:

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

You might also like