Sunteți pe pagina 1din 37

AC17C04

Arhitectura Calculatoarelor

Curs 4: Proiectarea MIPS cu ciclu de ceas unic

E-mail: florin.oniga@cs.utcluj.ro

Web: http://users.utcluj.ro/~onigaf, seciunea Teaching/AC

1
Coninutul / obiectivul cursului
Se prezint o metod sistematic, pe pai, de proiectare a unui procesor
Se pornete de la arhitectura setului de instruciuni
Rezultatul este procesorul format din calea de date i unitatea de control
Studiul de caz din acest curs: Procesorul MIPS pe 32 de bii, cu un ciclu de ceas
pe instruciune MIPS Single-cycle

2
Faze de proiectare pentru un procesor
1. Se analizeaz setul de instruciuni la nivel RTL cerine pentru ci de date
Secvene de micro-operaii (RTL) pentru instruciunile din ISA
Expresiile RTL specific componentele i conexiunile pentru calea de date
Diagrama de procesare (vezi curs 3).

2. Se selecteaz setul de componente i disciplina semnalului de ceas


Se definete citirea/scrierea elementelor de stare, ex. FF - basculare pe front +
Calea critic n cile de date pentru definirea perioadei semnalului de ceas

3. Se asambleaz calea de date conform cerinelor


Se formeaz o cale de date iniial (ex. registre, ALU, memorii).
Daca mai multe surse sunt conectate la o destinaie, se adaug un MUX /
Magistral
Se completeaz secvena de micro-operaii pentru toate instruciunile, i se adaug
componentele i conexiunile/multiplexoarele necesare

3
Faze de proiectare pentru un procesor

4. Se identific i se definesc semnalele de comand ale componentelor n calea


de date
Pentru fiecare instruciune se stabilete valoarea semnalelor de comand (pe fiecare
tact, la multi-ciclu), necesar pentru asigurarea transferurilor corespunztoare ntre
regitri

5. Se asambleaz logica de comand / control


Proiectarea unitii de comand pe baza semnalelor de comand identificate
3 tipuri de UC
- Logic combinaional single cycle CPU (fiecare instruciune se realizeaz ntr-
un ciclu)
- Hard-Wired, secvenial: Implementare tip main de stare
- Micro-programat.

4
Proiectarea MIPS ciclu unic Pas 1
n aceast seciune se urmrete descrierea din [1], care poate fi consultat opional
pentru detalii suplimentare.

Pas de proiectare 1: selecia setului de instruciuni - Subset MIPS-lite

Se selecteaz un numr de instruciuni reprezentative


Instruction RTL Abstract Program Counter
add $rd, $rs, $rt RF[rd] RF[rs] + RF[rt] PC PC + 4
sub $rd, $rs, $rt RF[rd] RF[rs] RF[rt] PC PC + 4
ori $rt, $rs, imm RF[rt] RF[rs] | Z_Ext(imm) PC PC + 4
lw $rt, imm($rs) RF[rt] M[RF[rs] + S_Ext(imm)] PC PC + 4
sw $rt, imm($rs) M[RF[rs] + S_Ext(imm)] RF[rt] PC PC + 4
If(RF[rs] == RF[rt]) then PC PC + 4 + S_Ext(imm) <<2
beq $rt, $rs, imm
else PC PC + 4

RTL abstract definete comportamentul fiecrei instruciuni


Faze de Execuie pentru o instruciune (descriere independent de ceas!, curs
anterior):
- IF, ID (ID/OF), EX, MEM, WB
- IF i ID sunt la fel pentru toate instruciunile
5
Proiectarea MIPS ciclu unic Pas 1
Instruciuni de tip R
Generic: <op> $rd, $rs, $rt
Operaia de baz: RF[rd] RF[rs] op RF[rt]
PC la urmtoarea instruciune: PC PC + 4
OPCODE este tot timpul 0 pentru tip R

6
Proiectarea MIPS ciclu unic Pas 1
Exemplu tip R: add
add $rd, $rs, $rt
Scop: Adunarea numerelor ntregi de 32-biti cu semn. La depire (overflow) excepie
(ADDU e fr excepie).
Adresare: cu registru

Format pe bii:

Urmtorul pas ?

7
Proiectarea MIPS ciclu unic Pas 1
Exemplu tip R: ADD
RTL abstract
RF[rd] RF[rs] + RF[rt], PC PC + 4

Urmtorul pas ? diagrama de procesare, vezi cursul 3.

Urmtorul pas ?

8
Proiectarea MIPS ciclu unic Pas 1
Exemplu tip R: ADD

Din analiza descrierii RTL rezult resursele necesare (atenie, n RTL nu apare explicit
aducerea instruciunii - IF, dar se consider implicit):

Resurse necesare pe faze de execuie


IF PC, Memoria de instruciuni, sumator

ID/OF Bloc de regitri, Unitatea principal de control

EX ALU, Unitatea de control ALU

MEM No operation

WB Bloc de regitri

9
Proiectarea MIPS ciclu unic Pas 1
Instruciuni de tip I: Load Word - LW
lw $rt, imm($rs)
Scop: ncarc un cuvnt de 32 de bii din memoria de date ntr-un registru

Adresare:
Resurse necesare
- cu registru
IF PC, Memoria de instruciuni, sumator
- cu baz a memoriei
ID/OF Bloc de regitri, Unit. princ. de
RTL abstract control, Extensie
- RF[rt] M[RF[rs] + S_Ext(imm)] EX ALU, Unitatea de control ALU
- PC PC + 4 MEM Memoria de date

WB Bloc de regitri

10
Proiectarea MIPS ciclu unic Pas 1
Instruciuni de tip I: Store Word - SW
sw $rt, imm($rs)
Scop: ncarc un cuvnt de 32 de bii dintr-un registru n memoria de date

Adresare:
Resurse necesare
- cu registru
IF PC, Memoria de instruciuni, sumator
- cu baz a memoriei
ID/OF Bloc de regitri, Unit. princ. de
RTL abstract control, Extensie
- M[RF[rs] + S_Ext(imm)] RF[rt] EX ALU, Unitatea de control ALU
- PC PC + 4 MEM Memoria de date

WB No operation

11
Proiectarea MIPS ciclu unic Pas 1
Instruciuni de tip I: Load Upper Immediate LUI
lui $rt, imm
Scop: ncarc o constant n jumtatea superioar a unui cuvnt / folosit mpreun cu ORI
pentru a forma constante de 32 de bii

Adresare:
- cu registru

RTL abstract
- RF[rt] imm || 0x0000
- PC PC + 4
Resurse adiionale necesare: ALU
trebuie s fac deplasare

12
Proiectarea MIPS ciclu unic Pas 1
Instruciuni de tip I: Branch on Equal BEQ
beq $rt, $rs, imm
Scop: compar doi regitri, apoi face salt condiionat relativ la PC

Adresare:
Resurse necesare
- Relativ la PC
IF PC, Memoria de instruciuni, sumator,
sumator, MUX
RTL abstract:
ID/OF Bloc de regitri, Unit. princ. de
If (RF[rs] == RF[rt]) control, Extensie
PC PC + 4 + S_Ext(imm) <<2 EX ALU, Unitatea de control ALU
else MEM Memoria de date
PC PC + 4
WB No operation
13
Proiectarea MIPS ciclu unic Pas 1
Cerine de resurse pentru instruciunile analizate pn acum
PC contorul de program
Memorii
Instruciuni i Date
Blocul de Regitri (32 x 32)
Citire R[rs], Citire R[rt]
Scrie n R[rt] sau R[rd]o singur adres de scriere=> MUX
Extensie cu semn / zero pentru cmpul address / immediate
Unitatea aritmetico-logic ALU => MUX
- Operaii cu doi regitri
- Operaii cu un registru i cu o valoare imediat extins
Pentru valoarea urmtoare a PC => MUX
- Sumator pentru PC+4
- Sumator pentru (PC+4) + Imediat extins cu semn

14
Proiectarea MIPS ciclu unic Pas 2
Pas de proiectare 2: Componentele cilor de date

PC contorul de program
- Registru 32-biti, bistabil D cu ncrcare pe front pozitiv
Memoria de instruciuni (model ROM idealizat)
- O intrare: Adres de instruciune
- O ieire: Instruciunea
- Cuvntul de memorie este selectat combinaional de adres, fr alte semnale de
control
Sumator pentru formarea urmtoarei adrese de instruciune
- Ex. 32-bit ripple carry
15
Proiectarea MIPS ciclu unic Pas 2

Bloc de Regitri, 32x32 bii


- Model didactic cu flip-flop-uri D vs. multi-acces SRAM n procesoare reale
- Dou iesiri de date, (2x 32-biti ): Read data 1 si Read data 2
- O intrare de date, 32-biti: Write data
- Multi-acces: 2 Citiri asincrone, 1 Scriere pe front (+); in aceeasi perioada de ceas
- Selectia Registrelor:
o Read register 1,2 selecteaz data pentru ieirea Read data 1,2
o Write register - adres, selecteaz registrul n care se va scrie (Write data) dac se
activeaz RegWrite i frontul pozitiv al ceasului
La citire, blocul de regitri se comport ca un bloc logic combinational
ALU - proiectat conform cerinelor

16
Proiectarea MIPS ciclu unic Pas 2

Model de Bloc de Regitri

17
Proiectarea MIPS ciclu unic Pas 2

Memoria de date (model SRAM idealizat)


- Dou intrri: Adresa i data de scris
- O ieire: Data citit, asincron, MemRead are rol de activare (poate lipsi !)
- Scrierea se face sincron cu semnalul MemWrite cu rol de activare
- Doua semnale de comand: MemRead i MemWrite

Unitatea de Extensie
- ExtOp = 1 extensie cu semn
- ExtOp = 0 extensie cu zero

18
Proiectarea MIPS ciclu unic Pas 2
Pas de proiectare 2: Disciplina semnalului de ceas

Disciplina de ceas
- Definete momentul de scriere i / sau citire pentru semnale
- Impune momentele cnd datele trebuie sa fie valide i stabile fa de ceas (Tsetup,
Thold).
Alternative de sincronizare / temporizare (momentul scrierii)
- activare pe front cresctor
- activare pe front descresctor
- activare pe dou faze (ambele fronturi)
Pentru toate elementele de stocare (ex. PC, Bloc de regitri, Memoria de date) scrierea
se face pe acelai front de ceas
- n mod uzual, aceste elemente sunt la fiecare ciclu de ceas
- Altfel, sunt necesare semnale explicite de control a scrierii
- Scrierea se face doar cnd semnalul de control este activat i apare frontul de ceas

19
Proiectarea MIPS ciclu unic Pas 3
Pas de proiectare 3: Asamblarea cilor de date

Instruction Fetch;
- PC registru 32 bii, Add Sumator 32 bii, 4 increment 4 octei pentru un cuvnt,
Memoria de instruciuni ROM
- IF: Instruction IM [PC], PC PC + 4;

20
Proiectarea MIPS ciclu unic Pas 3

Branch: if (R[rs] == R[rt]) PC (PC + 4) + S_Ext(imm) <<2


else PC PC + 4

21
Proiectarea MIPS ciclu unic Pas 3

Tip R: R[rd] R[rs] op R[rt]

Tip I Load word: R[rt] MEM[R[rs] + sign_ext(Imm16)]

Tip I Store word: MEM[ R[rs] + sign_ext(Imm16) ] R[rt]

.
.
22
Proiectarea MIPS ciclu unic Pas 3
Se asambleaz totul =>

Ci de date pentru instruciunile discutate / MIPS 32 cu ciclu de ceas unic. Sunt evideniate
semnalele de control.
23
Proiectarea MIPS ciclu unic Pas 4
Pas de proiectare 4: Specificarea comenzii

Se identific i se definesc semnalele de comand necesare pentru funcionarea


componentelor i transferul datelor
Pentru fiecare instruciune se stabilesc valorile semnalelor de comand

Concept nou: unitate de comand ierarhic

Unitate de comand principal Comand local pentru ALU

24
Proiectarea MIPS ciclu unic Pas 4
Semnificaia semnalelor de control
Nume semnal Efect inactiv (0) Efect activ (1)
Cmpul rt este trimis pe adresa de scriere Cmpul rd este trimis pe adresa de scriere
RegDst Write register a blocului de regitri RF Write register a blocului de regitri RF
Registrul a crui adres se gsete pe
intrarea Write register a blocului de
RegWrite Nu are
regitri este scris cu valoarea de pe
intrarea Write data
Al doilea operand ALU vine de la ieirea Al doilea operand ALU este valoarea
ALUSrc Read data 2 a RF imediat extins cu semn
n PC se scrie valoarea de ieire din n PC se scrie valoarea de ieire din
PCSrc
sumatorul PC+4 sumatorul care calculeaz adresa de salt
Coninutul memoriei de date de la adresa
MemRead Nu are de pe intrarea Address este pus pe portul
de ieire Read data
Coninutul memoriei de date de la adresa
MemWrite Nu are de pe intrarea Address este scris cu
valoarea de pe intrarea Write data
Valoarea de pe Write data a RF vine de la Valoarea de pe Write data a RF vine de la
MemtoReg ieirea ALU ieirea memoriei de date

ALUOp defines the behavior of the ALU control


PCSrc = Branch AND Zero
25
Proiectarea MIPS ciclu unic Pas 4
Valoarea semnalelor de control pentru setul Mips-lite

Reg Reg ALU PC Mem Mem Memto ALU


Instruciune
Dst Write Src Src Read Write Reg Op
R- format 1 1 0 0 0 0 0 10
lw 0 1 1 0 1 0 1 00
sw X 0 1 0 0 1 X 00
beq X 0 0 1 0 0 X 01

Exerciiu acas: cu cile de date n fa, scriei valorile semnalelor de control pentru
ORI

26
Proiectarea MIPS ciclu unic Pas 4

Cile de date mpreun cu unitatea de control


27
Proiectarea MIPS ciclu unic Pas 4
Opcode Cmpul Operaia ALU
ALUOp Operaia
Instruciune Function dorit pt. ALU Control
LW 00 load word XXXXXX add 0010
SW 00 store word XXXXXX add 0010
Branch equal 01 branch equal XXXXXX subtract 0110
R-type 10 add 100000 add 0010
R-type 10 subtract 100010 subtract 0110
R-type 10 and 100100 and 0000
R-type 10 or 100101 or 0001
R-type 10 set on less than 101010 set on less than 0111

Controlul local pentru ALU

opcode ALUOp \
| ALUCtrl
Function /

(!) Exemplul este cu ALUOp pe 2 bii (se extinde la 3+ dac sunt necesare alte operaii
pentru instruciuni noi).

28
Proiectarea MIPS ciclu unic Pas 4

Ci de date MIPS-lite, ciclu unic de ceas, Jump inclus


29
Proiectarea MIPS ciclu unic Pas 5
Pas de proiectare 5: Implementarea unitii de comand

Proiectare UC, pe baza valorilor semnalelor de comanda

n cazul MIPS cu ciclu unic de ceas este suficient logica combinaional

30
Proiectarea MIPS ciclu unic
Perioada de ceas este limitat de calea critic:

Calea critic (Load Word) = PCs Clk-to-Q + Instruction Memorys Access Time +
Register Files Access Time + ALU to Perform a 32-bit Add + Data Memory Access Time
+ Setup Time for Register File Write + Clock Skew

MIPS cu ciclu unic: Compararea duratelor Instruciunilor

31
Proiectarea MIPS ciclu unic
Dezavantajul implementrii cu ciclu unic de ceas:
Durata ciclu ceas: Se alege conform LW => lent
Durata ciclului pentru Load/Store mult mai mare dect minimul necesar pentru restul
instruciunilor => timp pierdut prin inactivitate.

Tip procesor CPI Perioad CLK

Ciclu unic 1 ciclu lung

Multi-ciclu >1 ciclu scurt

Pipelined ~1 ciclu scurt

CPI cycle time

Performanta procesorului

32
Proiectarea MIPS ciclu unic - Posibile extensii
Conectare cu dispozitive de intrare / ieire (I/O)

Problem: definirea unor porturi pentru comunicare (in, out)


Soluie: o variant convenabil (! fr a introduce instruciuni dedicate) este I/O mapat prin
spaiul de adresare a memoriei:
o anumite adrese din memorie se rezerv pentru porturi de I/O
o scrierea, respectiv citirea de pe aceste porturi se face folosind instruciunile
standard de lucru cu memoria
o LW i SW pentru transfer de cuvnt (cu posibilitatea extinderii cu LH, SH pentru
semi-cuvnt, respectiv LB, SB pentru octet)
Pentru proiectare se rescrie descrierea RTL la LW i SW pentru a trata diferit (cum ?...if)
situaiile cnd adresa efectiv este n setul de adrese rezervate. De aici rezult
componentele suplimentare necesare (ex. decodificatoare pentru a detecta adresele).

n figura urmtoare se prezint cile de date modificate pentru a suporta dou porturi de IN
i unul de OUT.

33
Proiectarea MIPS ciclu unic - Posibile extensii

Conectare cu dispozitive
de I/O
Dispozitivele sunt mapate
prin spaiul de adresare a
memoriei:
Cele trei adrese sunt
interceptate:
- 2 IN
- 1 OUT

Semnale de control:
- MemRead
- MemWrite
- MA (n plus)

34
Proiectarea MIPS ciclu unic Mecanism ntreruperi
vezi cursul 3, descrierea din ISA a mecanismului de ntrerupere
cile de date se extind n mod corespunztor

35
Proiectarea MIPS ciclu unic
Implementarea altor instruciuni (urmrii paii de proiectare => calea de date plus controlul
pentru instruciunile implementate):
Instruciuni tipice: add, sub, and, or, lw, sw, beq, bne, j, addi, andi, ori, sll, srl, sra
Alte instruciuni (unele sunt atipice!, necesit modificri ale unor componente de baz):
BLTZ
BNE
JAL
JAL: Indiciu realizai o conexiune / cale de la ieirea sumatorului PC+4 la intrarea de
date a blocului de regitri RF, iar pe Write address a RF punei 31 (registrul unde se
va salva PC+4, vezi JAL) prin adugarea unei intrri la MUX-ul legat pe Write address
JR Jump register
JM (jump memory) formatul este similar cu LW, diferena constnd n nefolosirea
cmpului rt, astfel coninutul memoriei se va scrie n PC
SWAP two registers
Lwnew - adresare a memoriei (ca LW), care nsumeaz doi regitri pentru a obine
adresa efectiv de unde se ia un cuvnt din memoria de date. Format de tip R.
Load/Store ca LW / SW, fr offset / imm, doar adresa dat de registru
ADD3, operaie aritmetic cu 4 operanzi care adun 3 numere n loc de dou: add3
$t5, $t6, $t7, $t8 => $t5 = $t6 + $t7 + $t8
Arithmetic with memory operand
- addm $t2, 100($t3) => $t2 = $t2 + M[$t3+100]
WAI (where am I), pune locaia instruciunii, reprezentat de valoarea lui PC, ntr-un
registru specificat de cmpul rt n biii instruciunii. Variaie: salvarea lui PC+4, n loc
de PC
36
Referine

1. D. A. Patterson, J. L. Hennessy, Computer Organization and Design: The


Hardware/Software Interface, 5th edition, ed. MorganKaufmann, 2013.
2. D. A. Patterson and J. L. Hennessy, Computer Organization and Design: A
Quantitative Approach, 5th edition, ed. Morgan-Kaufmann, 2011.
3. MIPS32 Architecture for Programmers, Volume I: Introduction to the MIPS32
Architecture.
4. MIPS32 Architecture for Programmers Volume II: The MIPS32 Instruction Set.

37

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