You are on page 1of 12

DIZAJN CENTRALNE PROCESORSKE JEDINICE (CPU)

Namena ovog kratkog prikaza računara i CPU je da se pokaže povezanost


programske naredbe (instrukcije) i digitalnih električnih signala u elektronskim kolima
koja tu instrukciju izvršavaju.

1. Digitalni računar

Biće dat kratak pregled osnovnih pojmova i koncepta digitalnog računara sa


ciljem da se definiše uloga centralne procesorske jedinice (CPU).
Blok-šema digitalnog računara je pokazana na slici 1.

Ulazno
CPU Primarna Sekundarna izlazni Periferije
memorija memorija interfejs

BUS

Sl.1

Centralna procesorska jedinica CPU je sklop čije se funkcionisanje odvija po


mašinskoj instrukciji koju CPU dobije. Mašinska instrukcija je binarno kodovani sadržaj
koji je zapamćen u glavnoj memoriji organizovanoj po recima. Mašinska instrukcija
definiše poslove koje CPU treba da obavi i podatke nad kojima se poslovi obavljaju. Ti
podaci se zovu operandi. Skup svih različitih mašinskih instrukcija čini instrukcijski set
jednog CPU-a.
Mašinska instrukcija ima format koji obuhvata operaciono polje i adresno polje,
slika 2. Ako se usvoji da se kao sledeća instrukcija, izvršava naredna zapisana instrukcija,

Operaciono Adresno polje


polje
OPERACIONI ADRESA ADRESA ADRESA ADRESA ZA
KOD PRVOG DRUGOG NA KOJOJ JE SLEDECU
INSTRUKCIJE OPERANDA OPERANDA REZULTAT INSTRUKCIJU
(opisuje posao (opisuje mesto (opisuje mesto gde (opisuje mesto (definise koja se
koji se obavlja po gde je zapamcen je zapamcen drugi gde se pamti instrukcija izvrsava kao
instrukciji) prvi operand) operand) rezultat) naredna)
Sl.2

1
otpada četvrto adresno polje. Treće adresno polje se ukida ako se dogovori da se rezultat
primene instrukcije pamti na lokaciji gde je bio prvi operand. Tako se dobija format
instrukcije za dvoadresni računar. Prvo adresno polje moze da se ukine ako se fiksira
lokacija u kojoj se nalazi prvi operand odnosno rezultat. Ta fiksirana unapred poznata
lokacija se zove akumulator i predstavlja jedan od registara koji se nalaze unutar CPU-a.
Uvođenjem akumulatora, dobija se koncept jednoadresnog kompjutera ili
ACUMULATOR TYPE COMPUTER. Koncept jednog registra unutar CPU-a je oštro
limitirajući i zato se pored akumulatora, uvode dodatni registri unutar CPU. Time se
dobija jednoipoadresni kompjuter ili REGISTER FILE TYPE COMPUTER kod koga
operandi leže u vise CPU registara koji se kraće i jednostavnije adresiraju (kratka adresa)
u odnosu na adresiranje po glavnoj memoriji (puna adresa), Slika 3.

Operaciono polje Adresno polje


Sl.3

Operaciono polje sadrži operacioni kod instrukcije, koji definiše poslove koje
CPU treba da izvrši. Adresno polje sadrži neki sistem zapisivanja adrese na kojoj se
nalazi operand. Sistem zapisivanja adrese se označava kao način adresiranja. Različiti
načini adresiranja se koriste da bi se postigla optimizacija brzine rada i potrošnje
memorije računara.
Prema poslu koji obavljaju (operacionom kodu), postoji vise vrsta (grupa)
instrukcija:
- transfer (load/store) instrukcije za smeštanje/uzimanje podataka iz memorije,
- aritmetičko/logičke instrukcije za (+,-,x,:)/(AND,OR,NOT,…) operacije,
- šift i rotiranje instrukcije koje pomeraju sadržaj sa gubitkom bita ili kružno bez
gubitka bita,
- Džamp/brenč (jump/branch) instrukcije koje menjaju sekvencu instrukcija koje se
izvršavaju jedna za drugom uvodeći preskakanje delova programskog koda
zavisno od ispunjenja zadatih uslova (uslovni skok) ili nezavisno (bezuslovni
skok), cime se omogućuje realizacija potprograma, na primer.
- ulazno-izlazne instrukcije (input/output) koje omogućavaju unošenje/iznošenje
podataka u procesorske registre,
- kontrolne instrukcije kojima se upravlja radom CPU (STOP, WAIT,…).
Instrukcija može da ima više različitih načina adresiranja. Načini adresiranja su
detaljno opisani u stručnoj literaturi. Ovde su date samo osnovne napomene za način
adresiranja:
- IMMEDIATE ADDRESSING, u adresnom polju na slici 3 je data vrednost
operanda,
- DIRECT REGISTER ADDRESSING, u adresnom polju na slici 3 se nalazi kratka
adresa registra u kome se nalazi operand,
- APSOLUTNO ADRESIRANJE, u adresnom polju na slici 3 se nalazi adresa
lokacije u memoriji u kojoj je operand (stvarna adresa lokacije u memoriji u kojoj
se nalazi operand se zove efektivna adresa; to znaci da se kod apsolutnog
adresiranja u adresnom polju instrukcije nalazi efektivna adresa),
- INDIRECT ADDRESSING postoji u vise varijanti; suština je da se adresa
operanda nalazi u registru ili u nekoj memorijskoj lokaciji, a da se u adresnom
polju instrukcije na slici 3 nalazi adresa od registra ili od te memorijske lokacije;

2
postoji mogućnost i da se efektivna adresa izračuna sabiranjem sadržaja
adresiranog registra i nekog broja iz instrukcije u kom slučaju se govori o
indeksnom adresiranju.

Računari se u pogledu instrukcijskog seta prave po dva koncepta:


- RISC (reduced instruction set computers) računari sadrže manji broj jednostavnih
kraćih instrukcija sa manjim brojem adresnih modova nad jednim ili dva
operanda,
- CISC (complex instruction set computers) računari imaju suprotan koncept. Jedna
instrukcija sadrži niz jednostavnijih mašinskih komandi uz korišćenje različitih
načina adresiranja.
Kada korisnik treba da izvrši neki složeni posao na digitalnom računaru, potrebno
je da se složeni posao rastavi na elementarne poslove pri čemu je svaki elementarni posao
definisan (pokriven) sa jednom instrukcijom iz instrukcijskog seta. Elementarni poslovi
se ređaju u redosledu u kome treba da se sekvencijalno izvrše. Kada se ispišu instrukcije
koje pokrivaju elementarne poslove u projektovanom sekvencijalnom redosledu, dobije
se program u mašinskom jeziku (machine language program). Taj program stoji u
glavnoj memoriji, a CPU izvršava mašinski program u redosledu kako su instrukcije
napisane i redom zapamćene u memoriji.
Ispisivanje programa u mašinskom jeziku nije komforno obzirom na način kako
razmišlja ljudski um. Da bi se olakšalo manipulisanje sa mašinskim (binarnim) zapisima
instrukcija, uvedeno je simboličko obeležavanje mašinskih instrukcija sa
mnemotehničkim skraćenicama u svakom polju instrukcije (za operacioni kod, za
operande, za rezultat). Tako je dobijen asembler (assembly language). Pored mašinskih
instrukcija, asembler sadrži i instrukcije za definisanje podataka (data section) i
instrukcije koje omogućavaju da se iz programa napisanog u asembleru, prevođenjem
izvrši generisanje programa u mašinskom jeziku (assembly directives). Program u
mašinskom jeziku se zove objektni (object) kod. Program u asembleru se zove
asemblerski sors (source) kod. Posao prevođenja obavlja asembler koji je i prevodilac i
simbolički mašinski jezik.
Pisanje programa u asembleru omogućuje da se precizno dohvate i kontrolišu svi
resursi računara u cilju optimalnog izvršavanja programa (najveća brzina rada, minimalan
utrošak memorije i slično). Da bi se pisao program u asembleru za unapred izabrani CPU,
potrebno je da se nauči arhitektura konkretnog CPU-a i da se nauči njegov instrukcijski
set. U cilju ubrzavanja pisanja i testiranja programskog koda, a po cenu korišćenja
resursa računara koje nije optimalno, pišu se programi koji se nazivaju kompajleri i koji
imaju za cilj da prevedu=kompajliraju sors kod napisan u visokom programskom jeziku
(najčešće C kod) u mašinski (objektni) kod. Kompajleri se prave za svaki konkretni CPU
posebno. Deo računarske struke koji se bavi kompajlerima je posebna oblast.
Memorija sadrži mašinski program, operande i rezultate. Iz tehnoloških razloga,
glavna memorija se deli na primarnu (glavnu) memoriju kojoj se brzo pristupa nezavisno
od fizičkog mesta gde je informacija upamćena (Random Access Memory - RAM), i na
sekundarnu memoriju koja pamti veliku količinu podataka ali nema brz pristup. Da bi se
optimizovao odnos cena-performanse, koncept primarne i sekundarne memorije može da
se proširi na više nivoa, gde se procesorski registri shvataju kao prvi nivo, keš kao drugi
nivo, primarna memorija kao treći nivo, sekundarna memorija (hard disk) kao četvrti,

3
eksterni CD-ROM kao peti. Procesor je povezan sa glavnom memorijom, a sadržaj se
prebacuje iz sekundarne u primarnu memoriju da bi CPU brzo pristupao informacijama.
Menadžment memorije je deo računarske struke koji se bavi ovim poslom.
Ulazni interfejs se koristi za unošenje programa koga kreira korisnik.
Izlazni interfejs se koristi za prikaz rezultata koje je napravio izvršeni program.
Računar može da poseduje i dodatne, periferne uređaje (A/D konvertore,
tajmere i slično). Svaka periferija se u programerskom smislu vidi kao trojka registara
(DATA je registar za razmenu podataka između CPU i periferije, STATUS je registar u
koji periferija zapisuje svoj status, CONTROL je registar u koji CPU zapisuje binarni
sadržaj koji definiše konfiguraciju i funkcije periferije).
Blokovi računara razmenjuju međusobno podatke preko zajedničkih električnih
linija koje se označavaju kao magistrala (BUS). Magistrala sadrži tri grupe linija.
- DATA BUS su linije po kojima se razmenjuju podaci između blokova računara.
Prema broju električnih linija u magistrali za podatke, računari se klasifikuju kao
4-bitni, 8-bitni, 16-bitni, 32-bitni, 64-bitni.
- ADDRESS BUS su linije po kojima se postavlja adresa tako da se odredi mesto
odakle se podatak uzima ili odlaze. Broj električnih linija u adresnoj magistrali
određuje ukupan broj raspoloživih memorijskih lokacija (opseg adresa).
Programski kod, podaci, registri unutar CPU, periferije, i drugi resursi se smeštaju
u različite delove raspoloživog memorijskog prostora. Šematski prikaz korišćenja
memorijskog prostora se zove memorijska mapa.
- CONTROL BUS su linije po kojima se šalju signali za upravljanje radom delova
računara (enable, select, ready,….).

Generalno postoje dva koncepta arhitekture računara:


- Harvard arhitektura ima odvojene memorije za program i za podatke i odvojene
magistrale tako, da se simultano prenose biti instrukcije i biti podataka (operandi).
Rešenje zahteva više hardvera i daje brz rad računara i jednostavnu kontrolu.
- Fonnojmanova (Von Neuman) arhitektura drži i program i operande u istoj
memoriji i prenosi ih iz dve uzastopne operacije.
Prenos podataka po magistrali je najčešće sinhron, definisan taktom, mada postoje i
asinhrona rešenja kod kojih se prenos nadzire sa kontrolnim linijama.
Rad digitalnog računara (stored program computers) se odvija tako što se iz memorije
u CPU uzme (fetch ciklus) i izvrši (execute ciklus) prva instrukcija u programu, a zatim
druga i dalje redom ostale instrukcije.
U feč ciklusu se instrukcija prenese iz memorije u instrukcijski registar procesora
(CPU) gde se dekoduje. Imajući u vidu da dužina instrukcije često prelazi dužinu
magistrale za podatke, sledi da se prenos instrukcija mora obavljati kroz vise transfera.
U egzekjut ciklusu procesor izvršava poslove definisane sa fečovanom instrukcijom.

2. Centralna procesorska jedinica – CPU

Centralna procesorska jedinica (CPU) izvršava instrukcije uzete iz programske

4
memorije računara. Blok-šema CPU je pokazana na slici 4.

Control BUS računara Data BUS računara Address BUS računara

INTERNI BUS od CPU

Instrukcijski Acumulator
registar B B

ALU
B Register
File
Kontrolna
jedinica
CU SP
Condition code register PC

CPU

Slika 4.

CPU komunicira sa ostalim delovima računara preko data busa za razmenu podataka,
address busa za selekciju lokacija u memoriji i control busa za upravljanje sa memorijom
i periferijama.
CPU poseduje interni BUS preko koga se razmenjuju podaci unutar CPU i sa
spoljnim svetom. Interni BUS može da bude singl što znači da u jednom trenutku može
da se obavi samo jedna transakcija izmedju registara unutar CPU-a. Singl interni BUS
zahteva bafer registre B u kojima se privremeno smeštaju podaci dok čekaju dalji
prenos ili obradu. Bafer registri mogu da postoje i na data linijama izmedju Data BUS-a
računara i Internog BUS-a CPU-a, kao i na adresnim linijama od programskog brojača
PC do address BUS-a računara. Može da postoji dva ili više internih BUS-ova unutar
CPU-a da bi se povećala efikasnost rada CPU-a.
Instrukcija se uzima iz memorije u toku feč ciklusa preko data BUS-a i internog BUS-
a od CPU-a i smešta se u instrukcijski registar. Kontrolna jedinica procesora (CU),
na osnovu sadržaja instrukcijskog registra, generiše interne kontrolne signale za
upravljanje unutrašnjim resursima CPU-a i kontrolne eksterne signale za control BUS
računara tako, da se zadata instrukcija izvrši.
Register file je mesto gde se nalaze operandi i mesto gde se smeštaju rezultati.
Akumulator je registar u kome se nalazi jedan od operanada i u koji se stavlja
rezultat operacije.
Programski brojač je registar u kome se nalazi adresa instrukcije koja je sledeća
na redu za izvršavanje. On se automatski inkrementira za jedan posle očitavanja tekuće
instrukcije.
Stek pointer je registar koji pokazuje adresu vrha steka u memoriji.

5
Stek je blok vezanih lokacija u memoriji u koji se po sistemu punjenja magacina
puške, smeštaju vrednosti registara CPU-a kada se prekine tok izvršavanja tekućeg
programa sa ciljem da se izvrši neka nova rutina. Svrha steka je da po okončanju
izvršenja nove rutine, CPU može da se vrati na mesto gde je stao i da nastavi izvršavanje
tekućeg programa kao da izvršavanja nove rutine nije ni bilo.
Ostali registri u register fajlu sadrže adrese memorijskih lokacija sa podacima ili
same podatke.
Aritmrtičko-logička jedinica (ALU) obavlja aritmetičke i logičke operacije nad
operandima. Rezultat operacija se smešta u akumulator, a osobine (svojstva) obavljenih
operacija se beleže u condition code register čiji se bitovi odvojeno beleže i tumače
(''zero flag''=0 kada je rezultat operacije nula, na primer).

Rad CPU se odvija kroz prenos podataka izmedju registara i sa memorijom, pod
odredjenim uslovima. Pored transfera podataka, CPU obavlja i aritmetičke i logičke
operacije. Rad CPU se koncizno opisuje simboličkim jezikom RTL (Register Transfer
Logic), čija je sintaksa ilustrovana narednim primerom.

RTL zapis Smisao operacije Uslov da se operacija


operacije izvrši

A←B Sadržaj registra B se upisuje u nema


registar A
T: A ← B Sadržaj registra B se upisuje u Kada je kontrolni signal
registar A T=1
TΦ: A ← B Sadržaj registra B se upisuje u Kada su kontrolni signali
registar A T=1 i Φ=1

Po uključenju napona napajanja računara, vrši se dovodjenje resursa računara na


unapred poznat početni sadržaj (položaj). Ova procedura se naziva Reset. Po resetu,
programski brojač u CPU se napuni sa sadržajem unapred poznate fiksne lokacije u
memoriji koja je ili na kraju (adresa sve jedinice) ili na početku memorijske mape (adresa
sve nule). Pomenuti sadržaj predstavlja adresu na kojoj se u memoriji nalazi prva
instrukcija programskog koda (programa).
Svaka instrukcija se realizuje u dve faze:
- feč ciklus,
- egzekjut ciklus.
U feč ciklusu instrukcija se uzima iz programske memorije i smešta u interni CPU
registar koji se zove instrukcijski registar. Proces teče tako što programski brojač
adresira lokaciju u memoriji gde se nalazi instrukcija. Kontrolna jedinica CU generiše
eksterne kontrolne signale za programsku memoriju (Address strobe, Read). Posle
odredjenog kašnjenja na data linijama računara se pojavljuju podaci očitani iz memorije
koji se smeštaju u instrukcijski registar pod kontrolom internih kontrolnih signala
generisanih od strane kontrolne jedinice procesora CU. Istovremeno se programski brojač
uvećava za jedan čime se adresira naredna lokacija u memoriji. Instrukcija je obično
sastavljena iz više memorijskih reči, pa fečovanje instrukcije teče kroz više prethodno
opisanih ciklusa. Prva memorijska reč instrukcije sadrži uputstvo za CPU o broju ciklusa.
Trajanje jednog ciklusa je odredjeno periodičnim taktom procesora (clock) ili iz njega

6
izvedenim subtaktom (subclock) veće učestanosti. Sve interne operacije CPU su inicirane
sa taktom koji je obično stabilisan sa kristalom kvarca. Fečovanje se završava kada se
poslednja memorijska reč smesti u instrukcijski registar.
Jedan ciklus fečovanja instrukcije zapisan u RTL-u ima formu:
FT1: ABUS ← PC
FT2: RD ← 1, AS ← 1, PC ← PC+1
FT3: RD ← 1, AS ← 1, IR ← DBUS
Objašnjenja:
F je kontrolni signal koji označava da je fečovanje aktivno (generiše ga CU)
T1 je prvi taktni ciklus kada se postavljaju i smiruju adresne linije (adrese)
T2 je drugi taktni ciklus kada CU postavlja eksterne kontrolne linije za čitanje memorije
(RD read, AS address strobe) i uvećava programski brojač za jedan
T3 je treći taktni interval u kome se drže nepromenjeni kontrolni signali RD i AS i vrši
presipanje sadržaja raspoloživog na DATA BUS-u u instrukcijski registar.
Jedan red u RTL zapisu se zove MIKROOPERACIJA (registarski transfer) i
obavlja se u jednom taktu ili jednom subtaktu. Operacije odvojene zarezom u jednom
registarskom transferu (RTL zapisu), odnosno mikrooperaciji se zovu ELEMENTARNE
OPERACIJE i one se izvršavaju simultano. Kod izvršavanja jedne mašinske instrukcije,
obavlja se sekvenca mikrooperacija, odnosno registarskih transfera.

Egzekjut ciklus se sastoji od više ciklusa čitanja (read) i upisa (write) izmedju
memorije i CPU registara.
Čitanje podataka iz memorije (Execute read cycle) se odvija tako što se adresa,
koja je na neki način zabeležena u instrukciji koja leži u instrukcijskom registru, izračuna
i postavi na adresni BUS. Kontrolna jedinica CU postavi eksterne i interne kontrolne
signale tako da se posle nekog vremena na DATA BUS-u računara pojave podaci. CPU
pod komandom internih kontrolnih signala upisuje očitane podatke u akumulator.
Upis podataka u memoriju (Execute write cycle) se odvija tako što kontrolna
jedinica CU preko internih i eksternih kontrolnih signala stavi sadržaj akumulatora na
data BUS, a adresu koja je na neki način zabeležena u instrukciji koja leži u
instrukcijskom registru, izračuna i postavi na adresni BUS. CPU pod komandom
eksternih i internih kontrolnih signala upisuje podatke iz akumulatora u definisanu
lokaciju u memoriji.
Sledi primer sabiranja operanada koji se nalaze u registrima Ri i Rj sa
smeštanjem sume u registar Rj zapisan u RTL-u.

Simbolički zapis instrukcije u asembleru:


ADD Ri, Rj
Sa značenjem:''Saberi operande u registrima Ri i Rj i zapiši rezultat u Rj''

RTL zapis:
EADDRRT1 Temp1 ← Ri
EADDRRT2 Temp2 ← Rj
EADDRRT3 Temp3← Temp1+Temp2
EADDRRT4 Rj ← Temp3

7
Gde je EADDRR signal koji dozvoljava sabiranje u AL. Temp1, Temp2, Temp3 su
temporary (bafer) registri vezani za ALU. T1, T2, T3, T4 su taktni (subtaktni) intervali.

Suština rada CPU je da se na osnovu zapisa instrukcije u instrukcijskom registru,


izvrši dekodovanje instrukcije u smislu da se prepoznaju poslovi koje treba uraditi i da se
izračunaju adrese gde se nalaze operandi nad kojima se instrukcija izvršava. Ti poslovi se
realizuju preko transfera podataka izmedju registara i memorije i preko aritmetičko-
logičkih operacija pod kontrolom signala koje generiše upravljačka jedinica CU.

3. Upravljačka jedinica – CU
Upravljačka jedinica CU ima zadatak da generiše kontrolne signale potrebne za
izvršavanje instrukcija. Eksterni kontrolni signali služe za upravljanje delovima računara
izvan CPU. Interni kontrolni signali služe za upravljanje sklopovima unutar CPU.
Pomoću kontrolnih signala se upravlja resursima u cilju izvršavanja instrukcije kroz
izvršavanje sekvence mikrooperacija (niza povezanih mikrooperacija).
Upravljačka jedinica može da se realizuje sa gejtovima i brojačima sa
pomeranjem sadržaja (Random logic design).
Upravljačka jedinica može da se realizuje i mikroprogramski (Microprogrammed
design).
Mikroprogramska realizacija upravljačke jedinice se pravi tako što se mašinska
instrukcija predstavi sa sekvencom mikroinstrukcija, a svaka mikroinstrukcija se zapamti
u memoriji upravljačke jedinice sa sadržajem koji odgovara vrednostima kontrolnih
signala potrebnih za izvršenje tekuće mikroinstrukcije čija je adresa postavljena na
adresne ulaze memorije u CU. Da bi se izvršila cela instrukcija koja sadrži M
mikroinstrukcija, potrebno je da takt (subtakt) pomeri adresu na memoriji CU od prve do
M-te adrese (mikroinstrukcije) počevši od početne adrese koja odgovara instrukciji
zapisanoj u instrukcijskom registru, koja se izvršava. Time se na data izlazima memorije
pojavljuju kontrolni signali pod dejstvom takta (subtakta) ili se sadržaj na izlazu
memorije mora dodatno dekodovati da bi se dobili kontrolni signali. Sekvenca
mikroinstrukcija sa kojom se definiše jedna instrukcija se zove mikroprogram, a
memorija u upravljačkoj jedinici se zove kontrolna memorija.

4. Projekat mikroprogramskog CPU


Konkretan uvid u funkcionisanje CPU se može steći rešavanjem projektnog zadatka
za realizaciju četvorobitnog RISC CPU-a. Zadatak je postavio profesor Dušan
Petranović, Elektrotehnički fakultet Podgorica, 1994. godine.

8
9
10
11
12

You might also like