Sunteți pe pagina 1din 41

- Curs 10-

Introducere
Realizarea unei ci de date
Unitatea de control pentru procesorul MIPS care opereaz ntr-un singur ciclu de
ceas

MIPS

= Microprocessor without Interlocked Pipeline Stages


= Procesor de tipul RISC

Performanele unui procesor sunt impuse de ctre urmtorii factori:


- numrul de instruciuni din programul care se execut (n);
- durata ciclului de ceas (T);
- numarul mediu de cicluri de ceas pe instructiune (CPI).

Proiectarea procesorului (unitatea de execuie i unitatea de comand) va


determina:
- durata perioadei ceasului;
- numrul de cicluri de ceas pe instruciune.

Etapele proiectrii:

1. Se examineaz setul de instruciuni din care rezult cerinele pentru unitatea de


execuie:
- semnificaia fiecrei instruciuni este dat de transferurile ntre registre;
- unitatea de execuie trebuie s includ elementele de memorare corespunztoare:
registrele necesare setului de instruciuni (eventual mai multe);
- unitatea de execuie trebuie s asigure fiecare transfer ntre registre;
2. Se selecteaz componentele unitii de execuie i se stabilete metodologia de
sincronizare (aplicare a ceasului).
3. Se asambleaz unitatea de execuie corespunztor specificaiilor.
4. Se analizeaza implementarea fiecarei instruciuni pentru determinarea semnalelor si a
punctelor de comand, care afecteaz implementarea fiecrui transfer ntre registre.
5. Se asambleaz logica de comand.

Unitile funcionale n implementarea MIPS constau n dou tipuri diferite de


elemente logice:

elemente care opereaz asupra valorilor de date


toate
elementele combinaionale (ieirile lor depind doar de intrrile prezente la acel
moment de timp)
elemente care conin stare
au o anumit memorie intern
(aceste elemente de stare caracterizeaz complet maina).

Metodologia folosirii ceasului

Definete momentul n care semnalele pot fi citite i cnd pot fi scrise.


Metodologia de acionare pe frontul ceasului nseamn c orice valoare pstrat n
main este actualizat numai pe un front al impulsului de ceas.

Astfel, dac elementul de stare este scris la fiecare front activ al ceasului, semnalul
de control pentru scriere nu va mai fi indicat.

Toate semnalele trebuie s se propage de la elementul de stare 1, prin logica


combinaional i s stabileasc elementul de stare 2 pe perioada unui ciclu de
ceas.
6

Formatele instruciunilor procesorului MIPS


Toate instruciunile MIPS au 32 de bii. Sunt prezente trei formate diferite:

Tipul R = formatul instruciunii aritmetice

Tipul I = formatul instruciunii de transfer, ramificaie, imediat.


Tipul J = formatul instruciunii de salt

Cmpurile de operaie sunt urmtoarele:


- op: codul de operaie al instruciunii;
- rs, rt, rd: adresele registrelor surs i destinaie
- shamt: cantitatea/numrul de bii cu care se efectueaz deplasarea;
- funct: selecteaz varianta de operaie specificat de ctre op;
- adresa/imediat: deplasarea adresei(offset)/valoarea imediata;
- adresa int/target address: deplasarea pentru adresa int de salt.

Ne propunem implementarea urmtoarelor instruciuni:


Instruciuni de referire a memoriei - ncrcare/memorare
Instruciuni aritmetice i logice - add, sub, and, or i slt (set-on -less-than)
Instruciunile de ramificaie la egal i de salt

Indiferent de clasa instruciunii, primii pai de implementare a unei instruciuni


sunt la fel:
se va trimite memoriei PC-ul i se va extrage instruciunea din memorie
se citesc unul sau dou registre

vom folosi cmpurile instruciunii

pentru selectarea registrelor. Instruciunea de ncrcare a unui cuvnt din


memorie presupune citirea doar a unui registru.

Unitile funcionale i legturile dintre ele

Dac instruciunea este de tip aritmetic sau logic


Dac operaia este de ncrcare/memorare

Pentru ramificaii

rezultatul din UAL trebuie scris


ntr-un registru
rezultatul UAL va fi o adres

se folosete ieirea UAL n determinarea adresei


urmtoarei instruciuni de executat
se introduce
o logic de control
10

OBS. !!!
1. Utilizm PC (contorul instruciunilor de program) pentru a oferi
memoriei de instruciuni adresa instruciunii
2. Registrele operand utilizate de instruciune sunt specificate n cmpurile
instruciunilor
3. Dup extragerea registrelor operand ele pot fi prelucrate pentru

a. Calcularea unei adrese de memorie - instr. de ncrcare/memorare


b. Calcularea unui rezultat aritmetic
c. Pentru o comparaie

11

Realizarea cii de date - determinarea instruciunii curente i trecerea


la urmtoarea instruciune

Extragem instruciunea din


memorie
Incrementm PC-ul cu 4 pentru
trecerea la instruciunea urmtoare.
Instruciunea urmtoare este
situat la o distan de 4 octei.
PC este un element de stare

12

Realizarea cii de date - instruciunile aritmetice i logice

Instruciunile de tipul
R: add, sub, and, or, slt.
Instruciunile de format
R au ca operanzi 3 registre
- 2 sunt citite i unul este
scris
UAL opereaz cu
valorile citite din registre

13

Remember !!!!
Registrele generale
din cursul 5

Write RW RA RB
enable 5 5 5

Bus W 32
CLK

32 registre
de 32 bii

Bus B
32
Bus A

RA (numr), care specific registrul general al crui coinut se


plaseaz pe busA;
RB (numr), care specific registrul general al crui coninut se
plaseaz pe busB;
RW (numr), care specific registrul general al crui coninut va
fi modificat prin forarea coninutului magistralei busW, cnd Write
Enable este pe nivel ridicat.

14

Realizarea cii de date - instruciunile aritmetice i logice (de tip R)

15

Instruciunile de ncrcare i memorare


Dac operaia este de ncrcare/memorare

rezultatul UAL va fi o adres.

Pe lng registrele generale i UAL, unitile necesare implementrii acestor


instruciuni sunt:

16

Instruciunile de ncrcare i memorare

Instruciunile sunt:
lw $t1, valoare_deplasare($t2)
sw $t1, valoare_deplasare($t2)

unitate pentru a extinde


semnul cmpului de
deplasare din instruciune

Aceste instruciuni calculeaz o adres de memorie prin adunarea registrului


de baz $t2 cu cmpul pentru deplasarea cu semn de 16 bii din instruciune.
Extinderea se face pn la o valoare de 32 de bii
cu semn. 17

Dac instruciunea este de memorare, valoarea de memorat trebuie citit din fiierul de
registre, unde ea se gasete n $t1.
Dac instruciunea este de ncrcare, valoarea citit din memorie trebuie scris n $t1
care este registrul specificat din fiierul de registre.

Calea de date pentru instruciunile de ncrcare sau memorare realizeaz un acces la un


registru, urmat de calcularea unei adrese de memorie, iar n continuare o citire sau o
scriere n memorie i o scriere n fiierul de registre, dac instruciunea este de ncrcare.

18

Instruciunea beq ( de ramificaie nentrziat)


Instruciunea este format din 2 registre care sunt comparate pentru egalitate i o
deplasare de 16 bii, folosit n calculul adresei obiectiv pentru ramificaie:
beq

$t1, $t2, offset

n vederea implementrii acestei instruciuni trebuie determinat adresa obiectiv


pentru ramificaie
PC + cmpul de deplasare al instruciunii cu semnul extins

Offset este folosit n calculul adresei obiectiv pentru ramificaie, care este relativ la
adresa instruciunii de ramificaie.
Cmpul deplasrii trebuie mutat cu 2 poziii la stnga.

19

Detalii legate de definiia instruciunilor de ramificaie!!!


Arhitectura setului de instruciuni specific faptul c baza pentru calculul
adresei de ramificaie este adresa instruciunii care urmeaz ramificaiei.
Deoarece automat se calculeaz PC+4 (adresa urmtoarei instruciuni), aceast
valoare se utilizeaz ca baz pentru calculul adresei obiectiv pentru ramificaie.
Arhitectura mai stabilete c trebuie deplasat spre stnga cu 2 bii cmpul
deplasrii din instruciune, deoarece deplasarea este la nivel de cuvnt. Aceast
deplasare spre stnga crete domeniul efectiv al cmpului deplasrii cu un factor
de 4.

20

(1)
Operanzii sunt egali

adresa obiectiv pentru


ramificaie devine noul
PC

(2)

Operanzii sunt diferii

PC-ul incrementat este


noul PC
Calea de date pentru ramificaie implic realizarea a 2 operaii:
1. Calcularea adresei obiectiv pentru ramificaie se realizeaz prin unitatea pentru
extinderea semnului i un sumator.
2. Compararea coninutului registrelor cu ajutorul reg. generale, prin scdere.

21

Sumatorul (2) evalueaz condiia de ramificaie.


Sumatorul (1) calculeaz adresa obiectiv pentru ramificaie, ca sum ntre PC-ul
implementat i ultimii 16 bii ai instruciunii (deplasarea ramificaiei) cu semnul
extins, deplasai spre stna cu 2 bii.

Trebuie determinat dac urmtoarea instruciune de executat este instruciunea care


urmeaz n secven sau instruciunea care se gsete la adresa obiectiv pentru ramificaie.
Instruciunea de salt
opereaz prin nlocuirea celor mai puin semnificativi 28 de bii ai
PC-ului cu cei mai puin semnificativi 26 de bii ai instruciunii deplasai spre stnga cu 2
bii
concatenm 00 la deplasarea saltului.

22

Implementarea unei singure ci de date


Instuciunile:

ncrcarea unui cuvnt (lw)


Memorarea unui cuvnt (sw)
Ramificaie la egal (beq)
Adunare (add)
Scdere (sub)
I (and)
SAU (or)
Setare la mai mic dect (slt)

Toate instruciunile se execut ntr-un


singur ciclu de ceas!!

Nici o resurs a cii de date nu poate


fi utilizat mai mult de o singur dat
la fiecare instruciune.
Pentru ca dou clase diferite de instruciuni s foloseasc n comun un
element al cii de date, trebuie s se permit conexiuni multiple la intrarea unui
element i s existe un semnal de control care s fac selecia ntre aceste intrri.

Folosirea unui multiplexor (selector de date)


23

Calea de date combinat

24

?
Care sunt diferenele dintre calea de date pentru instruciunile
aritmetice i logice i calea de date pentru instruciunile de ncrcare i
memorare?

1. A doua intrare pentru UAL este un registru (instruciunile de tip R) sau este
jumtatea inferioar, cu semnul extins, a instruciunii (dac este instruciune de tip I).
2. Valoarea pstrat n registrul de destinaie vine de la UAL ( cazul tipului R) sau
de la memorie ( cazul tipului I).

25

Controlul UAL
UAL are trei intrri de control din care sunt folosite 5:
000
001
010
110
111

I
SAU
+
setare la mai mic dect

n funcie de clasa instruciunii, UAL va trebui s efectueze una din aceste cinci
funcii:
Pentru instruciunile de ncrcare i memorare a unui cuvnt, UAL este folosit s
calculeze prin adunare adresa la memorie
Pentru ramificaie n caz de egalitate, UAL efectueaz o scdere.

26

se utilizeaz 2 bii (OpUAL) i


cei 6 bii ai codului funciunii

Modalitatea de implementare

Codul
operaiei
instruciunii
LW

OpUAL

Operaia
instruciunii

Cmpul
funciunii

Aciunea
UAL dorit

00

ncrcare
cuvnt

xxxxxx

Adunare

Intrarea
de control
UAL
010

SW

00

Memorare
cuvnt

xxxxxx

Adunare

010

Ramificaie la
egal

01

Ramificaie la
egal

xxxxxx

Scdere

110

Tip R

10

Adunare

100000

Adunare

010

Tip R

10

Scdere

100010

Scdere

110

Tip R

10

100100

000

Tip R

10

SAU

100101

Sau

001

Tip R

10

Setare la <

101010

Setare la <

111

Odat determinat acest tabel, el poate fi


transformat n hardware.

27

Proiectarea unitii principale de control

Obs: Codul operaiei pentru instruciunea de ncrcare este 35, iar pentru
memorare 43.
Biii 31-26 reprezint cmpul operaiei.

28

Calea de date i liniile de control

29

Efectul activrii semnalelor de control:


RegDst

Numrul de destinaie al registrului de scris vine din


rd (biii 15-11) (altfel vine din rt)

RegWrite

Registrul de la intrarea registrului de scris este scris cu


valoarea de la intrarea dat de de scris (Write Register).

ALUScr

Al doilea operand al UAL vine din ieirea a doua a


fiierului de registre (altfel sunt cei 16 bii inferiori ai
instr., cu semn extins).

PCScr

PC-ul este nlocuit cu ieirea sumatorului care


calculeaz obiectivul pentru ramificaie (altfel calculeaz valoarea PC+4)

MemRead

Coninutul memoriei de date desemnate de adresa de


intrare este pus la ieirea Read Data

MemWrite

Coninutul memoriei de date desemnate de adresa de


intrare este nlocuit cu valoarea de la intrarea Write Data

MemtoReg

Valoarea furnizat intrrii Read Data n registru vine de la memoria de date


(altfel vine de la ALU).
30

Calea de control, cu unitatea de control

31

Stabilirea semnalelor pe liniile de control este complet determinat de


cmpul codului de operaie al instruciunii.
O instruciune de tip R scrie un registru dar niciodat nu citete sau scrie
memoria de date.
cmpurile ALUSrc i UALOp sunt stabilite pentru efectuarea calculului
adresei.

32

Execuia instruciunii de tip R


33

Execuia instruciunii de tip R


1. O instruciune este extras din memoria de instruciuni iar PC-ul este incrementat
(linie verde).
2. Dou registre $t2 i $t3 sunt citite din fiierul de registre (linie mov). Unitatea
principal de control calculeaz i pe durata acestui pas activarea impulsurilor pe
liniile de control.
3. UAL opereaz cu datele citite din fiierul de registre, utiliznd codul funciunii
pentru generarea funciunii UAL.
4. Rezultatul din UAL este scris n fiierul de registre, utiliznd biii 15-11 ai
instruciunii pentru selectarea registrului destinaie $t1.
5. Aceast implementare este combinaional . Cursul informaiei urmeaz aceast
succesiune => stabilizarea semnalelor se va face n aceast ordine.

34

Execuia instruciunii de ncrcare


35

Execuia instruciunii de ncrcare


1. O instruciune este extras din memorie de instruciuni, iar PC-ul este
incrementat (linie verde).
2. Un registru $t2 este citit din fiierul de registre (linie mov).
3. UAL calculeaz suma dintre valoarea citit din fiierul de registre i ultimii
16 bii cu semnul extins ai instruciunii (linie mov).
4. Suma din UAL este folosit ca adres pentru memoria de date (linie mov).
5. Data din unitatea de memorie este scris n fiierul de registre; registrul
destinaie este dat de biii 20-16 ai instruciunii ($t1) (linie roz).

36

Execuia instruciunii de ramificare la egal


37

Execuia instruciunii de ramificare la egal


Este asemntoare cu instruciunea R doar c ieirea UAL-ului este folosit pentru
a se stabili dac n PC se scrie PC+4 sau adresa obiectiv pentru ramificaie.
1. O instruciune este extras din memoria de instruciuni, iar PC-ul este
incrementat (linie verde).
2. Dou registre $t1 i $t2 sunt citite din fiierul de registre.
3. UAL-ul efectueaz o scdere asupra valorii de date citite din fiierul de registre.
Valoarea PC+4 este adunat cu cei mai puin semnificativi 16 bii, cu semnul
extins ai instruciunii, deplasai cu 2 poziii spre stnga. Rezultatul este adresa
obiectiv pentru ramificaie (linie mov).
4. Rezultatul ZERO din UAL este folosit pentru a decide care dintre rezultatele
sumatoarelor va fi pstrat n PC.

38

Implementarea instruciunii de salt


39

Implementarea instruciunii de salt


Codul operaiei este 2.

Calcularea PC-ului obiectiv:

cei mai semnificativi 4 bii ai PC-ului curent +4;


cmpul imediat de adres de 26 bii ai instruciunii de salt;
cei 2 bii inferiori ai unei adrese de salt sunt ntotdeauna 00

40

Folosim sau nu implementarea cu o singur perioad de ceas ?


n cazul proiectrii cu un singur ciclu de ceas, perioada ceasului trebuie s aib
aceeai durat pentru fiecare instruciune .
Un ciclu de ceas este determinat de cea mai lung cale posibil prin main.

Cazul cel mai frecvent nu are o execuie rapid.


Fiecare unitate funcional poate fi utilizat o singur dat ntr-un ciclu de ceas =>
repetarea unitilor funcionale => creterea preului implementrii.
Metode alternative :

implementarea cu mai multe cicluri


PIPELINE

Metod INEFICIENT, neutilizat n practic.


Ineficiena maxim va fi atins n cazul proiectrii unei uniti n virgul mobil
41

S-ar putea să vă placă și