Professional Documents
Culture Documents
31 26 21 16 11 6 0
op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
Sumador
Instrucción Reg. fuente 1
PC Dato Salida 1
Número
Memoria de 5
Reg. fuente 2
De Datos
Instrucciones
Registro Dato Salida 2
5
Reg. destino
M e m R ea d
Flanco de bajada
(Falling edge)
Flanco de subida
(Rising edge)
R e g W rit e
Dato Entrada
16 Exten. 32
Signo M e m R ea d
R e g W rit e
Dato Entrada
16 Exten. 32
Signo M e m R ea d
R e g W rit e
Dato Entrada
16 Exten. 32
Signo M e m R ea d
Control:
Bloque combinacional que
con 6 bits de la instrucción
(bits 31:26) genera las 9
señales de control
Clk
Clk-to-Q
PC Old Value New Value
Tiempo de acceso a la Memoria de Instrucciones
Rs, Rt, Rd, Old Value New Value
Op, Func
Retardo debido a la lógica de control
ALUctr Old Value New Value
Rd Rs Rt
RegWr 5 5 ALUctr Escritura en
5
el registro
busA
Rw Ra Rb
busW 32
ALU
32 Reg. Resultado
32 de 32-bit 32
Clk busB
32
Load
PC Inst Memory Reg File mux ALU Data Mem mux setup
Camino crítico
Store
PC Inst Memory Reg File mux ALU Data Mem
Branch
PC Inst Memory Reg File cmp mux
Todas: A = Reg[IR[25-21];
B = Reg[IR[20-16];
SalidaALU = PC + (extension_signo(IR[15-0]<<2);
Load: MDR =
Acc. a MEM y Fin de Reg [IR[15-11]] =
Memoria[SalidaALU] ó Store:
instrucc tipo R SalidaALU
Memoria[SalidaALU] = B
Fin lectura MEM Load: Reg [IR[20-16]] = MDR
(Op = “J” )
M e m o ry a d d r e s s
CALCULO nch FIN INSTR.
c o m p u t aEFECTIVA
DIRECCION ti o n
EJECUCION
x e c u ti o n FIN INSTR.
e tiBEQ
on JUMP le tio n
8 9
2 6
SelALUA = 1
SelALUA = 1 SelALUA = 1 EscrPC
SelALUB = 00
SelALUB = 10 SelALUB = 00 FuentePC = 10
ALUOp = 01
ALUOp = 00 ALUOp = 10 EscrPCCond
FuentePC =01
(Op = “LW”)
ACCESO
M emo A ACCESO Ar y
M em o
MEMORIA
a c ce s MEMORIA
access ESCRIBE
R - t y p e c oEN REGISTRO
3 5 7
ESCRIBE
W r ite - EN REGISTRO
4
RegDest = 0
EscrReg
MenaReg = 1
Segmentación: Perspectiva General
Planchado 20 MIN
Realizar 4 tareas
Orden de Tarea
Ejemplo de
Hennesy - Patterson
Planchado 20 MIN
Realizar 4 tareas
Orden de Tarea
2 Tt = Tp + (N-1)Ts
Ts
3
= sT s+ (N-1)Ts
Tp = (N+s-1)Ts
N-1
N
Si N >>s ⇒ Tt≈ N·Ts
VENTAJAS
La segmentación, aunque no mejora la latencia de un solo proceso,
mejora el rendimiento o productividad (throughput) de una tarea con
muchos procesos.
Varios procesos se ejecutan “en paralelo”.
RESTRICCIONES
1 2 3 4 5
Load Ifetch Reg/Dec Exec Mem Wr
Ciclo único
Load Store Sin uso
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9Ciclo 10
Clk
Multiciclo
Load Store R-type
Ifetch Reg Exec Mem Wr Ifetch Reg Exec Mem Ifetch
Add
4 Add
Add result
Shift
left 2
Instruction
Read
PC Address register 1 Read
Read data1
register 2 Zero
Instruction Registers Read ALU ALU
memory Write data2 0 result Address Read 1
register M data
u Data M
Write x u
memory x
data 1
Write 0
data
16 32
Sign
extend
Add
4 Add
Add result
Shift
left 2
Instruction
Read
PC Address register 1 Read
Read data1
register 2 Zero
Instruction Registers Read ALU ALU
memory Write data2 0 result Address Read 1
register M data
u Data M
Write x memory u
data x
1 0
Write
data
16 32
Sign
La información del extend
registro de escritura
avanza con la
instrucción
0 ID/EX
M
u WB EX/MEM
x
1
Control M WB MEM/WB
IF/ID EX M WB
Add
4 Add
Add result
RegWrite
Shift Branch
MemWrite
left 2
ALUSrc
MemtoReg
Instruction
Read
PC Address register 1 Read
Read data 1
Instruction register 2 Zero
memory Registers Read ALU ALU
Write data 2 0 result Address Read 1
register M data
u Data M
Write x memory u
data x
1 0
Write
data
Instruction
Control M WB
EX M WB
1. Riesgos estructurales:
Se intenta usar el mismo recurso de dos maneras diferentes al mismo tiempo.
El hardware impide una cierta combinación de operaciones.
3. Riesgos de control:
Se intenta tomar una decisión antes de evaluarse la condición.
Si se salta, las instrucciones posteriores no deben ejecutarse (o al menos,
no deben finalizar).
ALU
Mem
Orden de instrucción
ALU
Instr 1 Mem Reg Mem Reg
ALU
Instr 2 Mem Reg Mem Reg
ALU
Instr 3 Mem Reg Mem Reg
Conflicto de lectura
ALU
Instr 4 Mem Reg Mem Reg
en memoria
PROGRAMA
Dependencias
add r1, r2, r3 IM Reg DM Reg
problemáticas son
aquellas que necesitan
datos que hay que sub r5, r1, r6 IM Reg DM Reg
buscar “hacia atrás” en
el esquema de tiempos.
and r16, r5, r1 IM Reg DM Reg
PROGRAMA
M
u
x
ALU Data
memory M
u
M x
u
x
M EX/MEM.RegisterRd
u
x
IF/IDWrite WB
EX/MEM
M
Control u M WB
x MEM/WB
0
IF/ID EX M WB
PCWrite
M
Instruction
u
x
Registers
Instruction ALU Data
PC memory M
memory
u
M x
u
x
IF/ID.RegisterRs
IF/ID.RegisterRt
IF/ID.RegisterRt Rt M EX/MEM.RegisterRd
IF/ID.RegisterRd Rd u
x
ID/EX.RegisterRt Rs Forwarding MEM/WB.RegisterRd
Rt unit
AnticiparA
M
u
x
Registers
ALU Data
memory M
u
M x
u
x
IF/IDRegisterRs AnticiparB
IF/IDRegisterRt
IF/IDRegisterRt Rt M EX/MEM.RegisterRd
IF/IDRegisterRd Rd u
x
Rs Forwarding MEM/WB.RegisterRd
Rt unit
IF/IDRegisterRt
AnticiparB
x
And r6, r5, r1 Rs Forwarding
MEM/WB .RegisterRd
Rt unit
EX/MEM.RegistroRd ≠ 0 and M
u
x
EX/MEM.Registro.Rd = ID/EX.Registro.Rs)
ALU Data
then AnticiparA = 10 memory M
u
M x
else AnticiparA = 00 u
x
AnticiparB
if (EX/MEM.EscrReg and
EX/MEM.RegistroRd ≠ 0 and Rt
Rd
M
u
EX/MEM.RegisterRd
x
EX/MEM.Registro.Rd = ID/EX.Registro.Rt) Rs Forwarding MEM/WB.RegisterRd
Rt unit
Then AnticiparB = 10
else AnticiparB = 00
Bloquear el pipeline:
PCWrite = 0
IF/IDWrite = 0
MuxNOP = 1
Todo esto no es necesario si el
compilador / ensamblador añade un
NOP después del LOAD con riesgo
Arquitectura e Ingeniería de los Computadores 57
Riesgos de control (instrucciones de salto)
4 Shift
left 2
M
u
= x
Registers
Instruction ALU Data
PC memory memory M
u
M x
Para descartar una u
x
instrucción cambia a 0 Sign
extend
el campo de instrucción
(opcode) del registro
M
de segmentación IF/ID u
x
Forwarding
⇒ NOP unit
Bloque Básico
add r1, r2, r3
bnz r2, L1
nop
NO SI
sub r6,r7,r6
mul r2, r3, r8
………..
Bloque Secuencial Bloque Destino L1: and r2, r3, r2
andi r5,r6,inm
PROGRAMA ORIGINAL DEL BLOQUE BÁSICO SI SALTO PROBABLE, SI SALTO NO PROBABLE,
DEL BLOQUE DESTINO DEL BLOQUE SECUENCIAL
(SIN SALTO RETARDADO)
add r1, r2, r3 ........... add r1, r2, r3 add r1, r2, r3
bnz r2, L1 bnz r2, L1 bnz r2, L1 bnz r2, L1
nop add r1, r2, r3 and r2, r3, r2 sub r6,r7,r6
sub r6,r7,r6 sub r6,r7,r6 sub r6,r7,r6 .................
mul r2, r3, r8 mul r2, r3, r8 mul r2, r3, r8 mul r2, r3, r8
................. ................. .................
L1: and r2, r3, r2
andi r5,r6,inm L1: and r2, r3, r2 L1: andi r5,r6,inm L1: and r2, r3, r2
andi r5,r6,inm ….............. andi r5,r6,inm
Bloque básico Operación válida si la Operación válida siempre Operación válida siempre
instrucción no afecta a la que r2 sea modificado antes que r6 sea modificado antes
Bloque secuencial condición del salto. Siempre de ser leído en el bloque de ser leído en el bloque
se realiza trabajo útil. secuencial. (CORRECTO) destino. (INCORRECTO)
Bloque destino
Dirección
Instrucción Fetch Decod.
SEGMENTACIÓN DE INSTRUCCIONES