Tema3 1 Diseno Del Procesador Monociclo GII EC
Tema3 1 Diseno Del Procesador Monociclo GII EC
Tema3 1 Diseno Del Procesador Monociclo GII EC
Diseño del procesador
3.1. Diseño del procesador monociclo
Grado en Ingeniería Informática
Curso 2019 – 2020
Bibliografía
Plantear y modificar una ruta de datos para un repertorio de
instrucciones simple en un procesador básico
Especificar y modificar una unidad de control con una máquina
de estados finitos para una ruta de datos y un repertorio de
instrucciones simples
Implementar una unidad de control especificada mediante una
máquina de estados finitos
Especificar y modificar una unidad de control microprogramada
para una ruta de datos y un repertorio de instrucciones simple
Implementar una unidad de control microprogramada
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
La metodología de sincronización define cuándo pueden leerse
y escribirse las diferentes señales
Características de la metodología de sincronización por flanco
Un elemento de estado puede ser actualizado sólo en el flanco de reloj
Un elemento de estado puede ser leído y modificado en un mismo ciclo
Señales de habilitación de escritura explícitas
State State
Combinational
element element
logic
1 2
clock
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
Registros
32 registros de propósito general, de 32 bits cada uno. ($0, $1, ..., $31)
Memoria
Direccionable por bytes en modo “big endian”
Direcciones de 32 bits
Modo de direccionamiento
registro base + desplazamiento [100($1)]
Repertorio de instrucciones
longitud fija de 32 bits
3 tipos de instrucciones
▫ aritmético‐lógicas: add, sub, and, or, slt add $1, $2, $3
▫ de referencia a memoria: lw, sw lw $1, 100($2)
▫ Saltos (condicionales o no): beq, j beq $1, $2, 48
3 formatos
▫ formato R op rs rt rd shamt funct
▫ formato I op rs rt desplazamiento
▫ formato J
op dirección
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
Ciclo de instrucción
Lectura de la instrucción M[PC]
Decodificación de la instrucción y lectura de los registros
Ejecución de la instrucción
Ejecución de instrucciones: Pasos
Común
▫ Leer instrucción de la memoria con el PC
▫ Leer registros especificados en la instrucción
Similar
▫ Utilizar la ALU
Diferente
▫ Terminación de ejecución de instrucción
Lectura de la memoria de instrucciones
Actualización del PC a la siguiente instrucción
Add
4
Instruction
Memory
Read
PC Instruction
Address
Envío de los campos de código de operación y función a la
unidad de control
Lectura del banco de registro de los registros $rs y $rt
Control
Unit
Read Addr 1
Read
Register
Read Addr 2 Data 1
Instruction
File
Write Addr
Read
Data 2
Write Data
add, sub, and, or y slt
add rd, rs, rt
Ejemplo: add $8, $9, $10 $8=$9+$10
Formato tipo R
op y funct especifican la operación aritmético‐lógica
31 25 20 15 10 5 0
R-type: op rs rt rd shamt funct
Escribir en el registro $rd del banco de registros el valor que
está en la salida de la ALU
Read Addr 1
Register Read
Read Addr 2 Data 1 overflow
Instruction
File zero
ALU
Write Addr Read
Data 2
Write Data
lw y sw
lw rt, despl(rs) ó sw rt, despl(rs)
Ejemplos: lw $1, 24($2) $1= Mem[$2+24]
sw $1, 24($2) Mem[$2+24]= $1
Formato tipo I
op rs rt desplazamiento
Cálculo de la dirección de memoria
address $rs + extensión‐signo(IR[15:0])
Carga de un registro (load)
$rt M[$rs + extensión‐signo(IR[15:0])]
Almacenamiento de un registro (store)
M[$rs + extensión‐signo(IR[15:0])] $rt
RegWrite ALU control MemWrite
overflow
Read Addr 1 zero
Register Read Address
Read Addr 2 Data 1
Instruction Data
File Memory Read Data
ALU
Write Addr
Read
Data 2 Write Data
Write Data
Sign MemRead
16 Extend 32
beq rs, rt, despl
Ejemplo:
beq $1, $2, despl si ($1=$2) PC=PC+despl
Formato tipo I
op rs rt desplazamiento
Add Branch
Add target
4 Shift address
left 2
ALU control
PC
Write Data
Sign
16 Extend 32
j dirección
Ejemplo:
j 1000 PC = PC[31‐28] + 1000[27‐2]+00[1‐0]
Formato tipo J
op dirección
Reemplazo del PC por la dirección efectiva de salto
PC PC[31:28] || (IR[25:0]<<2)
Add
4
4
Jump
Instruction Shift address
Memory
left 2 28
Read
PC Instruction
Address 26
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
Diseño de un circuito que sea capaz de ejecutar todas las
instrucciones Integración de las rutas de datos individuales
Recursos hardware + multiplexores + señales de control + restricciones
de diseño
Restricción de diseño
Todas las instrucciones tardan un único ciclo de reloj
La instrucción más lenta determina el tiempo de ciclo
Ningún componente de la ruta de datos puede ser reutilizado
▫ Memorias separadas de instrucciones y datos
▫ Sumadores varios…
Add
Banco de Registros
Operación
Registro 3 MemWrite
ALU
Dirección a lectura 1 Dato
PC leer Registro leído 1
ALU Memoria de MemtoReg
lectura 2 Zero Datos
Instrucción
Registro a Dato result Dato
Escribir leído 2 M ALU
Dirección
leído
Memoria de u M
Instrucciones Dato a x u
Escribir x
Dato a
RegWrite escribir
16 32 ALUSrc
Extensión
de MemRead
signo
M
Add u
x
4 Add
Desplaz. PCSrc
izq. 2
Instrucción[25-0] 28 32
Desplaz.
izq. 2
26
M
u
PC+4 [31-28] x
M
Add u
x
4 Add result PCSrc2
ALU
Desplaz.
PCSrc1
izq. 2
Banco de Registros
Operación MemWrite
Registro 3
ALU
Dirección a leer lectura 1
PC Dato
leído 1 MemtoReg
Registro Memoria de Datos
lectura 2 Zero
Instrucción ALU
Dato result Dato
Registro ALU Dirección
a escribir leído 2 M leído
u M
Memoria de u
Dato a x
Instrucciones x
escribir
Dato a
RegWrite escribir
32 ALUSrc
16 Extensión
de MemRead
signo
Selección de la operación a realizar
Operación ALU: ALUControl
Escritura y lectura del banco de registros: RegWrite
Escritura y lectura de las memorias: MemRead, MemWrite
Selección de entradas de los multiplexores (flujo de datos)
ALUSrc, MemToReg
¿Y el número del registro destino de donde viene?
31 25 20 15 10 5 0
R-type: op rs rt rd shamt funct
31 25 20 15 0
I-Type: op rs rt address offset
31 25 0
J-type: op target address
0
Add
Add 1
4 Shift
left 2 PCSrc
ALUOp
Branch
MemRead
Instr[31-26] Control MemtoReg
Unit MemWrite
ALUSrc
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Memory Register Read Address
Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
Instr[5-0]
0
Add
Add 1
4 Shift
left 2 PCSrc
ALUOp
Branch
MemRead
Instr[31-26] Control MemtoReg
Unit MemWrite
ALUSrc
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Memory Register Read Address
Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
Instr[5-0]
0
Add
Add 1
4 Shift
left 2 PCSrc
ALUOp
Branch
MemRead
Instr[31-26] Control MemtoReg
Unit MemWrite
ALUSrc
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Memory Register Read Address
Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
Instr[5-0]
0
Add
Add 1
4 Shift
left 2 PCSrc
ALUOp
Branch
MemRead
Instr[31-26] Control MemtoReg
Unit MemWrite
ALUSrc
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Memory Register Read Address
Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
Instr[5-0]
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction Read Address
Memory Register
Instr[20-16] Read Addr 2 Data 1 zero
Data
Read
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
Instr[15-0] Sign
ALU
16 Extend 32 control
Instr[5-0]
Camino de datos con todos los multiplexores y líneas de control
necesarias (según figura del libro de texto)
PCSrc
0
Add M
u
x
4 ALU
Add result 1
RegWrite Shift
left 2
Instruction [25– 21] Read
Read register 1 Read MemWrite
PC data 1
address Instruction [20– 16] Read ALUSrc MemtoReg
Instruction register 2 Zero
0 Read ALU ALU
[31– 0] Write data 2 0 Read
M result Address 1
u register M data
Instruction Instruction [15– 11] x u M
memory Write x u
1 data Registers 1 x
Write Data 0
RegDst data memory
Instruction [15– 0] 16 Sign 32
extend ALU MemRead
control
Instruction [5– 0]
ALUOp
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
Camino de datos con la unidad principal de control y la unidad
local de control de la ALU
0
M
u
x
ALU
Add result 1
Add Shift PCSrc
RegDst left 2
4 Branch
MemRead
Instruction [31 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
a
0
a
Z ero 1
ALU R e s u lt
Result
O v e r f lo w b 0 2
b 1
Less 3
C a rry O u t
a.
CarryOut
Entradas de control
FUNCIÓN
(ALUctr)
000 AND
001 OR
010 ADD
110 SUB
111 SLT
Operaciones a realizar según la instrucción
Load (lw) y store (sw): Suma($rs + extensión‐signo(IR[15:0]))
Salto (beq): Resta($rs‐$rt)
Aritméticas (tipo R: add, sub, or, and y slt): Definida por el campo funct
Entradas de control
Cod. Op. ALUop Instrucción FUNCT Op. deseada
de la ALU (ALUctr)
LW 00 Carga XXXXXX suma 010
SW 00 Almacena XXXXXX suma 010
Branch Equal 01 salto XXXXXX resta 110
R-Type 10 suma 100000 suma 010
R-Type 10 resta 100010 resta 110
R-Type 10 AND 100100 and 000
R-Type 10 OR 100101 or 001
R-Type 10 set on less than 101010 set on less than 111
31 26 21 16 11 6 0
Instrucción Tipo R: op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
ALU
0101 or
1010 set-on-less-than
ALUOp
ALU control block
ALUOp0
ALUOp1
Operation2
F3
Operation
F2 Operation1
F (5– 0)
F1
Operation0
F0
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
Tipo I: op rs rt Inmediato16
Bits: 31-26 25-21 20-16 15-0
Tipo J: op Dirección
Bits: 31-26 26-0
PCSrc
0
Add M
u
x
4 ALU
Add result 1
RegWrite Shift
left 2
Instruction [25–21] Read
Read register 1 Read MemWrite
PC data 1
address Instruction [20–16] Read ALUSrc MemtoReg
Instruction register 2 Zero
0 Read ALU ALU
[31–0] Write data 2 0 Read
M result Address 1
u register M data
Instruction Instruction [15–11] x u M
memory Write x u
1 data Registers 1 x
Write Data 0
RegDst data memory
Instruction [15–0] 16 Sign 32
extend ALU MemRead
control
Instruction [5–0]
ALUOp
PCSrc
0
Add M
u
x
4 ALU
Add result 1
RegWrite Shift
left2
Instruction[25–21] Read
PC Read register1 Read MemWrite
address Instruction[20–16] Read data1 MemtoReg
register2 ALUSrc Zero
Instruction 0 Read
[31–0] 0 ALU ALU
M Write
register
data2
M result Address Read
data 1
Instruction Instruction[15–11] u
x Write Registers u
x
M
u
memory 1 data x
1
Write mData 0
RegDst
16 data emory
Instruction[15–0] Sign 32
extend ALU MemRead
control
Instruction[5–0]
ALUOp
add $t1,$t2,$t3
0
M
u
x
ALU
Add result 1
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [15– 0] 16 32
Sign
extend ALU
control
Instruction [5–0]
lw $t1, desplazamiento ($t2)
0
M
u
x
ALU
Add result 1
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [15– 0] 16 32
Sign
extend ALU
control
Instruction [5– 0]
sw $t1, desplazamiento($t2)
0
M
u
x
ALU
Add result 1
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
P
Instruction [25– 21] Read
C Read register 1
address Read
Instruction [20– 16] Read data 1
register 2 Zero
Instruction 0 Registers Read ALU ALU
[31–0] Write 0 Read
M data 2 result Address 1
Instruction u register M data
u M
memory Instruction [15– 11] x u
1 Write x Data x
data 1 memory 0
Write
data
Instruction [15– 0] 16 32
Sign
extend ALU
control
Instruction [5– 0]
beq $t1, $t2, desplazamiento
0
M
u
x
ALU
Add result 1
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31–26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [15–0] 16 32
Sign
extend ALU
control
Instruction [5–0]
ALUOpO
Metodología de sincronización
Diseño de un procesador MIPS R3000 reducido
Rutas de datos individuales
Diseño monociclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control de la ALU
▫ Diseño de la unidad de control
▫ Ventajas y desventajas
Diseño multiciclo
▫ Diseño de la ruta de datos
▫ Diseño de la unidad de control
▪ Control cableado
▪ Control microprogramado
Excepciones e interrupciones
Suponiendo que los tiempos de operación (latencia) de las unidades
funcionales son:
Unidad de memoria: 2 ns
ALU y sumadores: 2 ns
Registros (lectura o escritura): 1 ns
Resto de los componentes (multiplexores, acceso al PC, etc. ): 0 ns
¿Cuál de las siguientes implementaciones será más rápida?
1.‐ Una implementación en la que cada instrucción se ejecuta en un ciclo de
reloj de duración fija.
2.‐ Una implementación donde cada instrucción se ejecuta en un ciclo de reloj
pero de duración variable (solución no práctica, pero ilustrativa).
Suponer un programa compuesto por: 24% instr carga (lw), 12% instr
almacenamiento (sw), 44% instr R‐format, 18% instr saltos (beq/bne) y 2% instr
bifurcación (j).
V: Todas las instrucciones tardan un ciclo en ejecutarse
D: Aprovechamiento ineficiente del área del chip (componentes
repetidos de forma innecesaria)
D: Ciclo de reloj largo para ajustarse a la instrucción más lenta
Las instrucciones de coma flotante requerirían un tiempo de ciclo aún
más largo
Cycle 1 Cycle 2
Clk
lw sw Waste
Tema 1: Arquitectura del repertorio de instrucciones
Tema 2: Lenguaje ensamblador. Programación
Tema 3: Diseño del procesador. Técnicas de implementación
Procesador monociclo
Procesador multiciclo
Tema 4: Definición y evaluación del rendimiento de un
computador
Tema 5: Jerarquía de memoria del sistema computador. Niveles.
Influencia en el rendimiento
Tema 6: Subsistema de entrada‐salida del sistema computador