Transcript Slide 1
Arhitektura i organizacija računara
organizacja procesora
Organizacija procesora
CPU se sastoji iz staze podataka i jedinice za upravljanje (CU).
Staza podataka se sastoji od registara i aritmetićko logičke jedinice
(ALU)
Staza podataka obavlja operacije nad podacima
CU izdaje signale stazi podataka
Unutar CPUa podaci se prenose od jednog do drugog registra i
izmedju ALU i registara.
Interni prenos podataka se obavlja preko lokalnih magistrala (bus)
preko kojih se prenose podaci, instrukcije i adrese.
Eksterno, podaci se prenose između registara i memorije i U/I
uređaja, uglavnom preko sistemske magistrale.
Interni prenos podataka između registara i ALU i registara se može
ostvariti korišćenjem različitog broja lokalnih magistrala:
Jedne
Dve
Tri
Organizacija sa jednom magistralom
CPU registri i ALU koriste jednu magistralu za prenos podataka
Pošto se po magistrali u jednom trenutku (taktnom intervalu)
može prenositi samo jedan podatak, binarne operacije
zahtevaju dva ciklusa za pribavljanje operanada za ALU
Dodatni registri mogu biti potrebni da zapamte podake za ALU
(registri A i B na slici)
Ovakva organizacija je najjednostavnija i najjeftinija, ali ima i
najlošije performanse jer se ograničava broj jednovremenih prenosa
Organizacija sa dve magistrale
Brži prenos podataka nego sa jednom magistralom
GPR (registri opšte namene) su povezani na dve magistrale
Podaci se mogu prenositi iz dva različita registra na ulaze
ALUa u istom trenutku (klok intervalu)
Može biti potreban dodatni registar da zapamti rezultat ALU
operacije ako su obe magistrale zauzete.
Moguće je da jedna magistrala bude dodeljena za prenos
podataka u registre, tj. za upis u registre (in-bus) a druga za
prenos podataka iz registara, tj. za čitanje (out-bus)
U ovom slučaju neophodni su dodatni registri na ulazu u ALU da
zapamte operand dok se drugi operand ne pribavi (pročita)
Izlaz iz ALUa može biti direktno povezan na in-bus i direktno obaviti
prenos, tj. upis, u neki od registara opšte namene
Organizacija sa dve magistrale
Organizacija sa tri magistrale
U ovom slučaju se dve magistrale koriste za prenos izvornrih operanada iz
registarkog fajla (out-bus1 i out-bus2) i posebna magistrala za prenos
podataka koji treba da se upišu registarski fajl (In-bus).
Svaka od izlaznih magistrala je povezana na jedan od ALU ulaza.
Izlaz iz ALUa je direktno povezan na In-bus
Što je više magistrala, to se više podataka u jednom klok ciklusu može preneti
Povećanje broja magistrala povećava kompleksnost hardvera.
RISC arhitektura – globalni pogled
Staza podataka tipične (hipotetička) RISC arhitektura
32 registra opšte namene
Sve instrukcije su 32-bitne
tri formata (I, R,J)
Svaka instrukcija se izvršva u najviše 5 koraka
Pribavljanje (Instruction fetch – IF)
Dekodiranje instrukcije i pribavljanje operanda (Instruction
decode – ID)
Izvršenje / izračunavanje efektivne adrese (EX)
obraćanje memoriji / okončanje grananja (MEM)
upis rezultata u registarski fajl (Write Back – WB)
I format instrukcija
I format (load, store, branch, ALU operacije sa
neposrednim operandom)
0
56
OP
10 11
Rs1
15 16
Rd
31
Immed
OP – kod operacije
Rs1 – izvorni operand za ALU
- bazni registar za generisanje memorijske adrese kod load i store
- registar čiji se sadržaj testira za slučaj barnch
Rd – polje odredišnog registra za slučaj ALU op. i load
- polje regista čiji se sadržaj pamti u mem. za slučaj store
Rd=0 za branch
Immed – neposredni operand:
• drugi operand za slučaj ALU instrukcije;
• pomeraj koji se dodaje baznom registru za slučaj load i store instrukcija
• pomeraj koji se dodaje programskom brojaču za slučaj naredbe
grananja (branch)
Primer I formata instrukcija
rd
LW
Imm Rs1
R1, 30 (R2)
SW 500(R4), R3
ADDI R1,R2,#3
BEQZ R1, ime
dejstvo
dejstvo
dejstvo
dejstvo
R1 Mem[30 +[R2]]
Mem[500+[R4]] [R3]
R1 [R2]+3
if R1=0 then PC PC+ime
R format instrukcija
R format (ALU operacije tipa registar-u registar)
0
56
OP
10 11
Rs1
15 16
Rs2
20 21
Rd
31
funkcija
OP+ funkcija – kod operacije
Rs1 – prvi izvorni operand za ALU
Rs2 – drugi izvorni operand
Rd – polje odredišnog registra
PRIMER: ADD R1,R2,R3
dejstvo R3
[R1]+[R2]
J format instrukcija
J format – jump instrukcija
0
56
OP
31
offset (pomeraj)
OP– kod operacije
offset – pomeraj koji se dodaje PC
PRIMER: JMP ime dejstvo PC PC+ime
Faze izvršenja
Svaka integer instrukcija RISC procesora se može
obaviti za najviše pet klok ciklusa:
1 Instruction fetch cycle (IF):
IR Mem[PC]
NPC PC + 4
2
Dekodiranje instrukcije i pribavljanje operanda (ID):
A Regs[Rs1];
B Regs[Rs2];
Imm ((IR16)16##IR 16..31)
sign-extended immediate field of IR
Napomena: IR (instrukcioni registar), NPC (next sequential program
counter register) A, B, Imm su privremeni registri
Faze izvršenja- nastavak
3 Execution/Effective address cycle (EX):
Memory reference:
ALU Output A + Imm;
Register-Register ALU instruction:
ALUOutput A func B;
Register-Immediate ALU instruction:
ALUOutput A op Imm;
Branch:
ALUOutput NPC + Imm;
Cond A op 0 (op je relacioni operator definisan kodm
instrukcije)
Faze izvršenja- nastavak
4 Obraćanje memoriji /okončanje grananja (MEM):
Obraćanje memoriji:
LMD Mem[ALUOutput]
Mem[ALUOutput] B;
ili
Branch:
if (cond) PC ALUOutput
else
PC
napomena: LMD (load memory data) register
NPC
Faze izvršenja- nastavak
5 Write-back cycle
(WB) – upis u registarski fajl:
Register-Register ALU instruction:
Reg[IR16..20] ALUOutput;
Register-Immediate ALU instruction:
Reg[IR11..15] ALUOutput;
Load instruction:
Reg[IR11..15] LMD;
Napomena: LMD (load memory data) register
Implementacija staze podataka
Bez obzira na razlike između instrukcija, najveći
deo posla koji treba da se obavi je isti, nezavisno
od klase instrukcija.
Za svaku instrukciju prva dva koraka su identična:
Pribavljanje instrukcije na osnovu sadržaja PC
Čitanje jednog ili dva registra korišćenjem odgovarajućih polja u
instrukciji kojima se selektuju registri.
Nakon ova dva koraka, akcije potrebne za okončanje izvršenja
instrukcija zavise od klase instrukcija.
– Na sreću, akcije su slične za sve tri klase instrukcija, nezavisno od
koda operacije
Komponente potrebne za implementaciju
procesora
sabirači i aritmetičko-logičke jedinice,
multiplekseri i demultiplekseri,
proširivači,
registri i polja registara,
memorije.
Sabirači i aritmetičko-logičke jedinice
Sabirač dva 32-bitna broja i
jednobitnog ulaznog prenosa.
Daje 32-bitni zbir i jednobitni
izlazni prenos
32
32
Aritmetičko-logička jedinica
obavlja operacije sabiranja,
oduzimanja, formiranje dvoičnog
komplementa, logičke operacije
I, ILI, NE i poređenja.
32
Generiše 32-bitni rezltat i 1-
32
32
32
bitni signal ako je rezultat 0.
Zahtevana operacija određuje
se preko ALUoperation
upravljačkih ulaza.
ALUresult32 A32 Op B32
Multiplekseri i demultiplekseri
Multiplekser preko adresnih
ulaza Adr bira ulaze
podataka (A ili B) koje
spaja sa izlazom Y
•Demultiplekser preko
adresnih ulaza Adr bira
izlaze podataka (A ili B)
koje spaja sa ulazom X.
proširivač
16
proširivač
(Sign extend)
32
Proširivač dopisuje ispred 16bitnog podatka još 16
bitova, koji predstavljaju
cifru znaka
Primeri
16-bitni podatak proširiti
znakovno
1010 1111 0101 0011
znakovno proširenje
1111 1111 1111 1111 1010 1111 0101
0011
Registri i polja registara
Registar pamti 32-bitni
registar
32
clk
32
podatak.
Upis podatka se taktuje.
Sadržaj registra stalno
raspoloživ na izlazu.
Polje registara sa 32
registra dužina po 32 bita.
RegWrite dozvola upisa.
Upis podatka preko ulaznog
porta se taktuje.
Na izlaznim portovima
podaci stalno prisutni
Primer polja sa 4 registra
Memorija
Posebna memorija za
instrukcije i podatke.
Adresa određuje
memorijsku lokaciju kojoj
se pristupa.
Upis podatka obavlja pri
dozvoli upisa i taktnom
signalu (MemWrite).
Čitanje: signal MemRead i
taktni signal
Deo staze podataka za pribavljanje instrukcije i
inkrementiranje sadržaja programskog brojača
Instruction fetch cycle (IF):
IR Mem[PC]
NPC PC + 4
Deo staze podataka potreban za implementaciju
grananja
ALUOutput NPC + Imm;
Cond A op 0 (op je relacioni
operator definisan kodm instrukcije)
Deo staze podataka potreban za implementaciju
load/store i ALU instrukcija
Izgled kompletne staze podataka
Izgled staze podataka sa označenim resursima koji se
koriste u svakoj od faza izvršenja instrukcije
[0-5]
[6-10]
[11-15]
[16-20]
[16-31]
[21-31]
Upravljačka jedinica procesora (Control Unit –CU)
U svakoj od fauza izvršenja instrukcije obavlja se niz elementarnih
aktivnosti koje nazivamo mikrooperacijama
Mikroperacija može biti prenos podataka iz jednog u drugi registar CPUa,
čitanje podatka iz memorije ili upis podatka u memoriju, elementarne operacije
nad podacima i drugo.
npr.
–
–
–
–
A Regs[Rs1];
ALUOutput A func B
LMD Mem[ALUOutput]
Mem[ALUOutput] B;
ili
Svaka mikrooperacija aktivira određene upravljačke tačke elemenata hardvera
koji učestvuje u izvršenju određenih mikrooperacija.
Funkcija upravljačke jedinice je generisanje odgovarajućih upravljačkih
signala, u odgovarajućim vremenskim trenutcima, koji su neophodni za
rad računara
Upravljački signali se mogu generisati na dva načina
hardverski (tvz. upravljačke jedinice sa direktnim upravljanjem)
upravljačka jedinica je realizovana kao sekvencijalno logičko kolo
mikroprogramski
upravljački signali se nalaze u posebnoj memoriji (mikro-programska memorija) koja
može biti realizovna kao ROM ili RAM memorija
Mikroprogramsko upravaljanje se realizuje pomoću sekvence mikroinstrukcija
Model upravljačke jedinice
hardverska implementacija
Različiti upravljački signali treba da se aktiviraju u
različitim vremenskim trenucima
kod hardverske implementacije se koristi kružni brojač koji
definiše trenutke aktiviranja pojedinih signala
Osobine hardverske implementacije
kompleksnost sekvenciranja i logike ako je veliki skup
instrukcija
otežano projektovanje i testiranje
nefleksibilan dizajn – tečko je dodati nove instrukcije
u već projektovanu CU
Kada je jedanom projektovana, male promene zahtevaju potpuni
redizajn kola
Glavna prednost je brzina rada i to je razlog što se
ova tehnika koristi za realizaciju brzih procesora
Karakteristike mikroprogramskog upravljanja
Skup upravljačkih signala zajedno sa
sekvencirajućom informacijom smešta se u memoriju
Memorija može biti ROM ili RAM tipa i naziva se
mikroprogramska memorija (microprogramme memory ili
control memory)
Mikroprogramsko upravaljanje se realizuje pomoću sekvence
mikroinstrukcija
prednosti
Izmene se izvode brže
Greške se lakše otklanjaju
Projektovanje i održavanje računara je pojednostavljeno
Koristeći mikroprogramsku emulaciju moguće je ostvariti
kompatibilnost sa drugom mašinom
Nedostatak
sporije izvršenje instrukcija
Mikroprogramsko upravljanje
Organizacija mikroprogramske memorije
Ako imamo m instrukcija u ISA, I0 do Im-1, onda
postoji m različitih mikro-programa, mp0 do mpm-1,
zapamćenih u memoriji
Svaki mikro-program ima različitu adresu u mikroprogramskoj
memoriji.
Da bi se izvršila instrukcija, mikroprogramski upravljani
procesor pristupa ovoj memoriji da bi pronašao skup
mikroinstrukcija potrebnih za implementaciju instrukcije Ii
startna adresa se dobija na osnovu koda operacije pribavljene
instrukcije (nakon okončanja faze dekodiranja instrukcije).
Izgled mikroprogramske memorije: za m instrukcija, postoji m
mikroprograma, pri čemu je svaki zapamćen na različitoj adresi
u mikroprogramskoj memoriji
Format mikroinstrukcija
polje upravljačkih signala
polje adrese sledeće mikroinstrukcije
Horizontalni format
koristi se po jedna binarna pozicija za svaki upravljački signal
mogu bitiveoma duge instrukcije, tipično 150-200 bitova
visok stepen paralelizma u radu (jednom instrukcijom se može definisati
ALU operacija, prenos ka/iz memorije, prenos između registara)
upravljački signali sa izlaza registra mikroinstrukcija direktno se
vode do upravljačkih tačaka u stazi podataka procesora
Vertikalni format (ili maksimalno kodirani format)
mikroinstrukcijom se kodira jedna operacija (akcija)
npr prenos iz registra u registar (R1R2)
obavlja operacija (R1R2+R3)
neophodno je definisati skup svih mikrooperacija i svaku kodirati
sa n bitova može se kodirati 2n mikroisntrukcija
mnogo su kraće instrukcije (12 do 32 bita)
zahteva se korišćenje dekodera
manje fleksibilno
dodavanje nove instrukcije zahteva promenu dekodera
Horizontalni format
vertikalni format
Jednostavni primer projektovanja CU
- hardverska CU
- mikroprogramska CU
Model jednsotavnog računara
IP
LP
EP
12
8
Accumulator
PC
12
12
12
LM
MAR
ALU
W
S
A
EU
8
R
LA
EA
12
12
RAM
Register B
LB
12
LD
ED
12
MDR
LI
EI
IR
4
Bus
Control
L = napuni registar
E (enable)= pošalji sadržaj
registra na magistralu (bus)
A, S ( Add, Subtract) –
sabiranje, oduzimanje
Bit znaka iz ACC za control
unit
IP = Increment PC
IP
LP
EP
ACC
PC
LA
EA
S
LM
R
W
LD
ED
MAR
ALU
RAM
B
IR
MDR
Bus
Control
A
EU
LB
LI
EI
Hardverska CU
CLK
IR
Ring Counter
T5
Opcode
T0
LDA
STA
ADD
Decoder
SUB
MBA
JMP
Control
Matrix
JN
Halt
NF
Control Signals
implementacija kružnog brojača
trenutci aktiviranja pojedinih signala
implementacija dekodera
izgled upravljačke matrice
jednačine na osnovu kojih se dobija uprvljačka
matrica
Mikroprogramska jedinica