Está en la página 1de 54

• MONOCICLO

CARACTERISTICAS

• Arquitectura Harvard (RISC)


• Arquitectura libre (U.P.)
• Bus de datos 32 bits
• Bus de direcciones 32 bits
• Carga – Almacenamiento
• 32 registros (R0-R31)
• 11 Instrucciones
ESTRUCTURA

32 32
MEM. DIR MEM
DIR
DE DE
INSTRUCC. CPU DATOS
32 32
INSTR. DATOS

REGISTROS
Rs Registro fuente
Rt Otro Registro fuente
Rd Registro destino
INSTRUCCIONES
L/A AND Rs,Rt,Rd (Rs and Rt = Rd)
OR “ (Rs or Rt = Rd)
ADD “ (Rs + Rt = Rd)
SUB “ (Rs - Rt = Rd)
SLT “ (Si Rs<Rt Rd=00..01) , (SI Rs=>Rt Rd=00..00)

LW Rd,Dir(Rs) (Almacena en Rd el contenido apuntado por Dir+[Rs])

SW Dir(Rs),Rt (Almacena Rt en la mem. de datos apuntada por Dir+[Rs])

ADDI Rs,Rd,Dato (Rs + Dato = Rd)


SLTI Rs,Rd,Dato (Si Rs<Dato Rd=00..01) , (SI Rs=>Dato Rd=00..00)

BEQ Rs,Rt,Offset (Si Z=1 -> salta a PC + Offset) , (Si Z=0 ->PC=PC+1)

JMP Dir (Salta a una Dir de memoria de instrucciones)


FORMATOS
L/A C.O. Rs Rt Rd Funt
6 5 5 5 3
LW Rs Rd Dir. Mem. Datos
C.O.
6 5 5 16
SW Rs Rt Dir. Mem. Datos
C.O.

ADDI Rs Rd Dato
igual C.O.

SLTI Rs Rd Dato
C.O.

BEQ Rs Rt Offset
C.O.

JMP Dirección Mem. Inst.


C.O.
26
6
MODULOS

sum

P mem reg alu mem


C instru. datos
PUERTOS

Rs DIR L
(Rs)
Rt
DIR E MEM DATOS L
Rd REG DATOS
(Rt)
(Rd) DATOS E
DISEÑO DE LA ALU

AND - 32 puertas AND

OR - 32 puertas OR

ADD - 32 sumadores completos de (con carry) de 1 bit

SUB - 32 circuitos de complemento a 2

SLT - un circuito que compare los datos de entrada


generando una salida 0 si A>=B y 1 si A<B
DISEÑO DE LA UNIDAD DE PROCESO
UC

6
CIRCUITO AUXILIAR
32 INSTRUCCIÓN L/A 0
OP rs rt rd FUNT

ALU_op
6
CIRCUITO
U.C.
AUXILIAR

ALU_1_0 S/R
A

ALU S

B
CIRCUITO AUXILIAR
INST. OP ALU_op Operación ALU_0_1 S/R FUNT

AND 000000 00 AND 00 X 000


OR OR 01 X 001
ADD SUMA 10 0 010
SUB RESTA 10 1 011
SLT SLT 11 1 100

LW 000001 01 SUMA 10 0 XXX


SW 000010 01 SUMA 10 0 XXX
ADDI 000011 01 SUMA 10 0 XXX
SLTI 000100 11 SLT 11 1 XXX
BEQ 000101 10 RESTA 10 1 XXX
JMP 000110 XX XX X XXX

SALIDAS

ENTRADAS
Mem_Write
Reg_Write
Mem_Read

ALU_Scr
Branch
Reg_Dest
Jump

AUX

CLK 2
ALUop
Mem_Reg
UC

FUNC

AUX
Reg_Write
C.O. Unidad
de Registros
Control

XBTS AND OR JMP


C.O.

Reg_Write

CLK

Carga_Sinc

C.O. Unidad
de Registros
Control
CLK
UC

6 CLK

w
w

FUNC
3 AUX

CLK
+1
0
1
branch
suma

Mem-write Mem_read
Reg_write
UC
Rs W W R
z
Rs Dir leer
Rt

0 p Reg_dest
1 c MI 0
Rd ALU Dir esc Dato
leer
1 Rt 0
jump 1
Dato esc
0 Rd
1 Alu_scr
6H
16
Mem_reg
ext
Alu-op
32
32 26L
UNIDAD DE CONTROL
Inst jump branch Reg_des Mem_reg Reg_write ALU_scr ALUop Mem_Read Mem_wrire

AND 0 0 1 0 1 0 00 0 0
OR
ADD
SUB
SLT

LW 0 0 0 1 1 1 01 1 0
SW 0 0 X X 0 1 01 0 1
ADDI 0 0 0 0 1 1 01 0 0
SLTI 0 0 0 0 1 1 10 0 0
BEQ0 1 X X 0 0 11 0 0
JMP 1 X X X 0 X XX 0 0
OP0
UNIDAD DE CONTROL
OP1
OP2
OP3
OP4
OP5

L/A LW SW ADDI SLTI BEQ JMP


Jump

Branch

Reg_des

Mem_reg

Reg_write

Alu_scr

Alu_op1

Alu_op2
R8 = R11 X R3
SUB R8, R8,R8 cv
R8=0 R2=1 R1=0
ADDI R8, R2, 0001
SUB R1, R1, R1 si
R3=0 FIN cv
:multi
BEQ R3, R1, fin no
SUB R3, R3, R2 R3=R3-1 cv
ADD R8, R8, R11
JMP multi
R8=R11+R8 cv
:fin
JMP fin
R8 = R11 X R3
SUB R8, R8,R8 cv
R8=0 R2=1 R1=0
ADDI R8, R2, 0001
SUB R1, R1, R1 si
R3=0 FIN cv
:multi
BEQ R3, R1, fin no
SUB R3, R2, R3 R3=R3-1 cv
ADD R8, R11, R8
JMP multi
R8=R11+R8 cv
:fin
JMP fin

DIRECCION OP

0000 0000 cv xxxxxxxx 011 (sub Rs, Rt, Rd)


000000 01000 01000 01000
0000 0001 000011 01000 00010 0000 0000 0000 0001 (addi Rs,Rd,dato)
NUEVAS INSTRUCCIONES
MOV Rs,Rd
MVI Dato, Rd
MOV Dir,Rd
MOV Rs,Dir
MOVM DirFuente, DirDestino

JMP offset relativo


BEQ Rs,Rt,Dir absoluto

CMP Rs,Rt Z
BEQ Dir

XOR Rs,Rt,Rd
XCHG Rsd,Rtd

DIV R2=R3/R4
• SEGMENTADO
REGISTROS INTER_ETAPA

BI DE BO EJ AL

UC

CO

P MEM REG ALU REG


C INST DATOS MEM MEM

CLK

- PROFUNDIDAD = Número de etapas


- Dividir la unidad de proceso entre el número de etapas que se desee
- El reloj entra a los registros inter_etapa y en el PC
Ejem: AND RS,RT,RD

U.C.

P MEM REG ALU MEM REG


C INST LEER DATOS ESC

- El modelo MIPS
- Todas las istrucciones se ejecutan de Izda a dcha
CONSIDERACIONES

• Los elementos deben estar en las etapas


donde estén presentes los datos de entrada y
las señales de control

• A partir de su etapa de ubicación pueden estar


en cualquiera posterior
u.c.

CO

RS

RT RS W
RS MemReg
RD
P Mem RT MEM reg_e
c inst D reg_l DATOS
I ALUsdr RD
R RT
RD

RegDest

- Como el modelo no requiere una señal de control en la lectura de registros,


estos se pueden pasar a la etapa segunda
L/A
LW/SW
ADDI/SLTI u.c.

CO

RS

RT RS W
RS MemReg
RD
P Mem RT MEM reg_e
c inst D reg_l DATOS
I ALUsdr RD
R RT
RD

RegDest
u.c.

CO

RS

RT RS W
RS MemReg
RD
P Mem RT MEM reg_e
c inst D reg_l DATOS
I ALUsdr RD
R RT
RD

RegDest
u.c.

CO

RS

RT RS W
RS MemReg
RD
P Mem RT MEM reg_e
c inst D reg_l DATOS
I ALUsdr RD
R RT
RD

RegDest
u.c.

CO

RS

RT RS W
RS MemReg
RD
P Mem RT MEM reg_e
c inst D reg_l DATOS
I ALUsdr RD
R RT
RD

RegDest
u.c.

CO

RS

RT RS w

RD
P Mem RS MemReg
c inst D RT MEM
I ALUscr
R reg DATOS
RD

RT
RegDest
RD

- Los registros están en la etapa segunda pero se escriben en la quinta


CONSIDERACIONES
• Los saltos implican conflictos
BEQ jump
JMP

+1
CO u.c.
RS
16 32
RT
Z
P Mem brach
c inst REG
D MEM
I
R

26

6 32
Por fuera de los registros inter_etapa

UC

- Incorporación de los saltos


- En la etapa cuatro se atienden todos los saltos
IMPLEMENTACION DE LOS SALTOS

1-AND
2-LW
3-BEQ
4-JMP
5-OR
6-ADD

ADD / OR / JMP / BEQ / LW / AND (programa)

JMP BEQ (etapas)

PROBLEMA: Primero se ejecuta JMP


CONFLICTO POR
DEPENDENCA DE DATOS
METODO DE LA BURBUJA
Por fuera de los registros inter_etapa

UC
CONFLICTOS ENTRE LA ETAPA 2 Y LA ETAPA 3

• Si Rs(2) o Rt(2) = Rt(3) y Reg_Dest(3) = 0 y Reg_Write(3) = 1


• Si Rs(2) o Rt(2) = Rd(3) y Reg_Dest(3) = 1 y Reg_Write(3) = 1

CONFLICTOS ENTRE LA ETAPA 2 Y LA ETAPA 4

• Si Rs(2) o Rt(2) = Rd(4) y Reg_Write(4) = 1

CONFLICTOS ENTRE LA ETAPA 2 Y LA ETAPA 5

• Si Rs(2) o Rt(2) = Rd(5) y Reg_Write(5) = 1


C=0
C=1
udc

CO

RS

RT RS w

RD
P Mem RS MemReg
c inst D RT MEM
I ALUscr
R reg DATOS
RD

RT
RegDest
RD
clk
LOGICA DE DESVIO
Mem_read

U.C.

Rd
Mem_read

Rd

OR 3,6,4 LW 3,100(9) NOP NOP NOP


Mem_read
RS

Rd 3

AND 10,11,12 OR 3,6,4 LW 3,100(9) NOP NOP


Mem_read

Rd 3

AND 10,11,12 OR 3,6,4 BURBUJA LW 3,100(9) NOP


Mem_read

01

00

Rd 3

Rd=3

ADD 20,21,22 AND 10,11,12 OR 3,6,4 BURBUJA LW


3,100(9)
CONFLICTO POR SALTOS
CONFLICTOS
DEPENDENCIA DE DATOS

- Ejecución en desorden

SALTO INCONDICIONAL

- Resolución en el compilador

SALDO CONDICIONAL

- Buffer estadístico

También podría gustarte