8. Diseño del Procesador
Fundamentos de los ComputadoresGrado en Ingeniería Informática
(desde diseño multiciclo en adelante)
2
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
División del ciclo de instrucción en varias etapas o pasos Cada etapa se ejecuta en un ciclo de reloj Las etapas presentan cargas de trabajo equilibradas CPI (ciclos por instrucción) variables: instrucciones lentas y rápidas
Reutilización de las unidades funcionales Una unidad puede utilizarse más de una vez por instrucción siempre que
se haga en ciclos de reloj distintos.▫ Memoria unificada, pero un único acceso por ciclo▫ Una única ALU, pero una única operación ALU por ciclo
3
Diseño multiciclo
Diseño del procesador
4
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
Implementación multiciclo: componentes básicos
Una sola memoria para datos e instrucciones Una sola ALU en vez de 1 ALU y 2 sumadores Uso de registros temporales a la salida de las unidades funcionales
principales. Dos tipos de registros: Tipo A: Actualizan su contenido en cada instrucción (IR) Tipo B: Actualizan su contenido en cada ciclo de reloj (MDR,
A,B,ALUOut)
PC
Memory
Address
Instructionor data
Data
Instructionregister
RegistersRegister #
Data
Register #
Register #
ALUMemory
dataregister
A
B
ALUOut
5Diseño del procesador
Ruta de datos multiciclo
Compartición de unidades funcionales (reducción del hardware) uso de multiplexores
Ejecución en múltiples ciclos cada ciclo requiere un conjunto determinado de señales de control
Señales de control
Shiftleft 2
MemtoReg
IorD MemRead MemWrite
PC
Memory
MemData
Writedata
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction[15– 11]
Mux
0
1
Mux
0
1
4
ALUOpALUSrcB
RegDst RegWrite
Instruction[15–0]
Instruction [5– 0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
1 Mux
0
32
ALUcontrol
Mux
0
1ALU
resultALU
ALUSrcA
ZeroA
B
ALUOut
IRWrite
Address
Memorydata
register
6Diseño del procesador
Etapas de ejecución de las instrucciones
¿Qué operaciones realizamos en cada ciclo de reloj? Objetivo: equilibrar la carga computacional de cada etapa Minimización
del tiempo de ciclo En cada etapa se va a realizar alguna de las siguientes operaciones:
▫ Un acceso a registro▪ Actualización en cada ciclo (Registros temporales: MDR, A, B, ALUOut)▪ Actualización según una señal de escritura (PC, IR)
▫ Un acceso a memoria▫ Una operación de ALU▫ ¿Cómo se determina el tiempo de ciclo mínimo?
Todas las operaciones de un ciclo se ejecutan en paralelo Etapas o pasos de la instrucción se ejecutan en serie
7Diseño del procesador
Camino de datos multiciclo con las señales de control
Shiftleft 2
PCMux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction[15– 11]
Mux
0
1
Mux
0
1
4
Instruction[15– 0]
Signextend
3216
Instruction[25– 21]
Instruction[20– 16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op[5– 0]
Instruction[31-26]
Instruction [5– 0]
Mux
0
2
Jumpaddress [31-0]Instruction [25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
Memory
MemData
Writedata
Address
8Diseño del procesador
Etapa 1: Búsqueda del código de operación (fetch)IR = Memory[PC]PC = PC + 4
Etapa 2: Decodificación y acceso a operandosA = Reg[rs]B = Reg[rt]ALUout = PC + extensión-signo(IR[15-0]) << 2
Etapa 3: Ejecución, cálculo de dirección o terminación del salto Instrucción tipo R (and, or, add, sub,slt)
ALUOut = A op B
Referencia a memoria (lw/sw)ALUOut = A + extensión-signo(IR[15-0])
Salto (beq)if (A == B) PC = ALUOut
Bifurcación (j)PC = PC[31-28] || IR[25-0] << 2
Etapas de ejecución de las instrucciones (I)
9Diseño del procesador
Etapa 4: Acceso a memoria/fin de ejecución instrucción tipo R Referencia a memoria (lw)
MDR = Memory[ALUOut]
Referencia a memoria (sw)Memory[ALUOut] = B
Fin ejecución instrucción tipo RReg[rd] = ALUOut
Etapa 5: Fin de lectura en memoriaReg[rt] = MDR
Etapas de ejecución de las instrucciones (II)
10Diseño del procesador
Instrucción de CARGA (LW): Etapa 1
Shiftleft 2
PCMux
0
1Registers
Writeregister
Writedata
Readdata1
Readdata2
Readregister 1
Readregister 2
Instruction[15–11]
Mux
0
1
Mux
0
1
4
Instruction[15–0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorDMemRead
MemWrite
MemtoReg
PCWriteCondPCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWriteControl
Outputs
Op[5–0]
Instruction[31-26]
Instruction[5–0]
Mux
0
2
Jumpaddress [31-0]Instruction[25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
MemoryMemData
Writedata
Address
T1
ALUSrcA= 0ALUSrcB = 11ALUOp =00
MemReadALUSrcA= 0
IorD= 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource= 00
Instruction fetchInstruction decode/
Register fetch
(Op
=' JM
P')
01
Start
Memory reference FSM(Figure 5.38)
R-type FSM(Figure 5.39)
BranchFSM(Figure 5.40)
Jump FSM(Figure5.41)
11Diseño del procesador
Instrucción de CARGA (LW): Etapa 2
Shiftleft 2
PCMux
0
1Registers
Writeregister
Writedata
Readdata1
Readdata2
Readregister 1
Readregister 2
Instruction[15–11]
Mux
0
1
Mux
0
1
4
Instruction[15–0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorDMemRead
MemWrite
MemtoReg
PCWriteCondPCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWriteControl
Outputs
Op[5–0]
Instruction[31-26]
Instruction[5–0]
Mux
0
2
Jumpaddress [31-0]Instruction[25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
MemoryMemData
Writedata
Address
T2
ALUSrcA= 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA= 0
IorD= 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource= 00
Instruction fetchInstruction decode/
Register fetch
(Op
=' JM
P')
01
Start
Memory reference FSM(Figure 5.38)
R-type FSM(Figure 5.39)
BranchFSM(Figure 5.40)
Jump FSM(Figure 5.41)
12Diseño del procesador
Instrucción de CARGA (LW): Etapa 3
Shiftleft 2
PCMux
0
1Registers
Writeregister
Writedata
Readdata1
Readdata2
Readregister 1
Readregister 2
Instruction[15–11]
Mux
0
1
Mux
0
1
4
Instruction[15–0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorDMemRead
MemWrite
MemtoReg
PCWriteCondPCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWriteControl
Outputs
Op[5–0]
Instruction[31-26]
Instruction[5–0]
Mux
0
2
Jumpaddress [31-0]Instruction[25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
MemoryMemData
Writedata
Address
T3
MemWriteIorD= 1
MemReadIorD =1
ALUSrcA= 1ALUSrcB= 10ALUOp= 00
RegWriteMemtoReg = 1
RegDst = 0
Memory address computation
(Op = 'LW') or (Op = 'SW')
Memoryaccess
Write-backstep
(Op
='L
W' )
4
2
53
Fromstate 1
To state 0(Figure 5.37)
Memoryaccess
13Diseño del procesador
Instrucción de CARGA (LW): Etapa 4
Shiftleft 2
PCMux
0
1Registers
Writeregister
Writedata
Readdata1
Readdata2
Readregister 1
Readregister 2
Instruction[15–11]
Mux
0
1
Mux
0
1
4
Instruction[15–0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorDMemRead
MemWrite
MemtoReg
PCWriteCondPCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWriteControl
Outputs
Op[5–0]
Instruction[31-26]
Instruction [5–0]
Mux
0
2
Jumpaddress [31-0]Instruction[25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
MemoryMemData
Writedata
Address
T4
MemWriteIorD= 1
MemReadIorD =1
ALUSrcA= 1ALUSrcB= 10ALUOp= 00
RegWriteMemtoReg = 1
RegDst = 0
Memory address computation
(Op = 'LW') or (Op = 'SW')
Memoryaccess
Write-backstep
(Op
='L
W' )
4
2
53
Fromstate 1
To state 0(Figure 5.37)
Memoryaccess
14Diseño del procesador
Instrucción de CARGA (LW): Etapa 5
Shiftleft 2
PCMux
0
1Registers
Writeregister
Writedata
Readdata1
Readdata2
Readregister 1
Readregister 2
Instruction[15–11]
Mux
0
1
Mux
0
1
4
Instruction[15–0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorDMemRead
MemWrite
MemtoReg
PCWriteCondPCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWriteControl
Outputs
Op[5–0]
Instruction[31-26]
Instruction[5–0]
Mux
0
2
Jumpaddress [31-0]Instruction[25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
MemoryMemData
Writedata
Address
T5
MemWriteIorD= 1
MemReadIorD =1
ALUSrcA= 1ALUSrcB= 10ALUOp= 00
RegWriteMemtoReg = 1
RegDst = 0
Memory address computation
(Op = 'LW') or (Op = 'SW')
Memoryaccess
Write-backstep
(Op
='L
W' )
4
2
53
Fromstate 1
To state 0(Figure 5.37)
Memoryaccess
15Diseño del procesador
16
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
Control cableado (Máquina de estados finitos - FSM) Especificación del control mediante un diagrama de estados finitos
(representación gráfica o tabular) Máquina de estados finitos
▫ Conjunto de estados▫ Función estado siguiente
▪ Si ×Ij Sk
▫ Función salida ▪ Máquinas de Moore: Si Ok▪ Máquinas de Mealy: Si ×Ij Ok
Control microprogramado Especificación del control mediante un programa Necesaria para simplificar la especificación de una UC compleja
17
Diseño multiciclo - Diseño de la unidad control
Diseño del procesador
Ruta de datos multiciclo completo con las señales de control
Shiftleft 2
PCMux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction[15– 11]
Mux
0
1
Mux
0
1
4
Instruction[15– 0]
Signextend
3216
Instruction[25– 21]
Instruction[20– 16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op[5– 0]
Instruction[31-26]
Instruction [5– 0]
Mux
0
2
Jumpaddress [31-0]Instruction [25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
Memory
MemData
Writedata
Address
18Diseño del procesador
19
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
Representación abstracta Etapas 1 y 2 comunes a
todas las instrucciones
Diagrama de estados Etapas 1 y 2
Control cableado - FSM
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
Register fetch
(Op
='J
MP '
)
01
Start
Memory reference FSM(Figure 5.38)
R-type FSM(Figure 5.39)
Branch FSM(Figure 5.40)
Jump FSM(Figure 5.41)
Memory accessinstructions(Figure 5.38)
R-type instructions(Figure 5.39)
Branch instruction(Figure 5.40)
Jump instruction(Figure 5.41)
Instruction fetch/decode and register fetch(Figure 5.37)
Start
20Diseño del procesador
Control cableado – FSM completa
PCWritePCSource = 10
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA =1ALUSrcB = 00ALUOp= 10
RegDst = 1RegWrite
MemtoReg = 0MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
RegDst=0RegWrite
MemtoReg=1
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
register fetch
Jumpcompletion
BranchcompletionExecution
Memory addresscomputation
Memoryaccess
Memoryaccess R-type completion
Write-back step
(Op
='J
')
(Op
='L
W')
4
01
9862
753
Start
21Diseño del procesador
Control cableado – Especificación de la UC con una FSM
Entradas SalidasCódigo Operación Estado Actual Estado
Siguiente Señales de Control para el Camino de Datos
op5 op
4
op3
op2
op1
op0
s3 s2 s1 s0 ns3
ns2
ns1
ns0
pCW
rite
PCW
riteC
ond
IorD
Mem
Rea
d
Mem
Writ
e
IRW
Rite
Mem
ToR
eg
PC
Sou
rce1
PC
Sou
rce0
ALU
Op1
ALU
op0
ALU
SrcB
1
ALU
SrcB
0
ALU
SrcA
Reg
writ
e
Reg
Dst
0 x x x x x x 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0
1 lw 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 sw 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 R 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 beq 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 j 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
2 lw 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 02 sw 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 03 x x x x x x 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 04 x x x x x x 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 05 x x x x x x 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 06 x x x x x x 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 07 x x x x x x 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 18 x x x x x x 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 09 x x x x x x 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
22Diseño del procesador
Unidad de control = Lógica de control + Registro de Estado Reg. Estado: Se escribe en cada flanco de reloj y es estable durante el
ciclo
Control cableado - Implementación de la FSM
PCWrite
PCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWriteRegDst
NS3NS2NS1NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3 S2 S1 S0State register
IRWrite
MemReadMemWrite
Instruction registeropcode field
Outputs
Control logic
Inputs
Estado Siguiente
Estado Actual
23Diseño del procesador
Control cableado – Ecuaciones de implement. de la FSM
Señal Control Ecuación lógicaNS3 -> (S3'S2'S1'S0) (OP5'OP4'OP3'OP2OP1'OP0') + (S3'S2'S1'S0) (OP5'OP4'OP3'OP2'OP1OP0') =
Estado 1 (op[5:0] = 'beq') + Estado 1 (op[5:0] = 'jmp')NS2 -> Estado 1 (op[5:0] = 'R-format') + Estado 2 (op[5:0] = 'sw') + Estado 3 + Estado 6
NS1 -> Estado 1 (op[5:0] = 'lw') + Estado 1 (op[5:0] = 'sw') + Estado 1 (op[5:0] = 'R-format') +Estado 2 (op[5:0] = 'lw') + Estado 2 (op[5:0] = 'sw') + Estado 6
NS0 -> Estado 0 + Estado 1 (op[5:0] = 'jmp') + Estado 2 (op[5:0] = 'lw') + Estado 2 (op[5:0] = 'sw') + Estado 6
PCWrite -> Estado 0 + Estado 9
PCWriteCond -> Estado 8
IorD -> Estado 3 + Estado 5
MemRead -> Estado 0 + Estado 3
MemWrite -> Estado 5
IRWrite -> Estado 0
MemToReg -> Estado 4
PCSource1 -> Estado 9
PCSource0 -> Estado 8
ALUOp1 -> Estado 6
ALUOp0 -> Estado 8
ALUSrcB1 -> Estado 1 + Estado 2
ALUSrcB0 -> Estado 0 + Estado 1
ALUSrcA -> Estado 2 + Estado 6 + Estado 8
RegWrite -> Estado 4 + Estado 7
RegDst -> Estado 7
24Diseño del procesador
PCWrite
PCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWriteRegDst
NS3NS2NS1NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3 S2 S1 S0
State register
IRWrite
MemReadMemWrite
Instruction registeropcode field
Outputs
Control logic
Inputs
Tamaño:20 Kbits vs 4.25 Kbits
PCWrite
PCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWriteRegDst
NS3NS2NS1NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3 S2 S1 S0
State register
IRWrite
MemReadMemWrite
Instruction r
PCWrite
PCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWriteRegDst
NS3NS2NS1NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3 S2 S1 S0
State register
IRWrite
MemReadMemWrite
Instruction registeropcode field
Outputs
Control logic
Inputs
Tamaño:20 Kbits vs 4.25 Kbits
25
Control cableado - Implementación de FSM con ROM
Diseño unificado Tamaño: 210 × 20 = 20Kb 6 bits código de operación + 4 bits de
los estados = 210 posiciones de memoria
16 salidas de control + 4 salidas de nuevo estado = 20 bits de anchura
Diseño no unificado Tamaño: 4.25Kb ROM de señales de salida
(Tamaño = 24 × 16 = 256b)▫ 4 bits de los estados = 24 posiciones
de memoria▫ 16 salidas de control = 16 bits de
anchura ROM de nuevo estado
(Tamaño 210 × 4 = 4Kb)▫ 6 bits código de operación + 4 bits de
los estados = 210 posiciones de memoria
▫ 4 salidas de nuevo estado = 4 bits de anchura
Diseño del procesador
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
IorD
IRWrite
MemReadMemWrite
PCWritePCWriteCond
MemtoRegPCSource1
ALUOp1
ALUSrcB0ALUSrcARegWriteRegDstNS3NS2NS1NS0
ALUSrcB1ALUOp0
PCSource0
26
Control cableado - Implementación de FSM con PLA
Tamaño de la PLA#inputs × #minterms + #outputs × #minterms = (10 × 17) + (20 × 17) = 510 celdas
Diseño del procesador
27
Control cableado
Diseño del procesador
Implementar el control cableado es sencillo en este caso porque el repertorio de instrucciones es reducido (apenas 9 instrucciones)
Cuando el repertorio es completo, la implementación cableada es muy compleja porque: La MEF se compone de cientos de estados y transiciones El circuito se vuelve ininteligible
En programación, cuando ocurre algo así se utilizan técnicas de programación modular (procedimientos y funciones) para abordar el problema y hacer los programas comprensibles…. ¿Se podrán aplicar esas mismas técnicas en nuestro caso?
28
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
29
Diseño de la UC – Control microprogramado
Se definen instrucciones de control (microinstrucciones) que indican, de forma simbólica, qué señales de control deben estar activas en un determinado estado cuando se está ejecutando una instrucción.
La ejecución de una microinstrucción tiene como efecto la activación de las señales de control especificadas en la propia microinstrucción.
Las microinstrucciones también indican cuál es la siguiente microinstrucción a ejecutar, después de que termine la actual Información de secuenciamiento
Diseño del procesador
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[
5–0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
Secuenciadorexterno
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[
5–0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[
5–0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
Secuenciadorexterno
Secuenciadorexterno
30
Diseño de la UC – Control microprogramado
El control se especifica como un programa (microprograma) que está compuesto por instrucciones (microinstrucciones) que están almacenadas en una memoria (memoria de microcódigo)
Un registro (contador de microprograma) indica cuál es la siguiente microinstrucción a ejecutar.
Diseño del procesador
31
Control microprogramado – Formato de la microinstrucción
Formato de la microinstrucción. Definición de: Número de campos de la microinstrucción Significado de cada campo
En cada campo se controla el valor que toman un cierto número de señales de control Asignación de señales de control disjunta en cada campo para evitar microinstrucciones
incoherentes (Ej, que hacen que una señal tome 2 valores a la vez)
Además de los campos que controlan las señales de control existirá un campo que define el secuenciamiento de las microinstrucciones Secuencial (Ej: del estado 0 siempre se pasa al estado 1 de la MEF) Dispatch dependiendo del código de operación (Ej: en el estado 1 de la MEF se abren 4
posibilidades) Vuelta al estado inicial (Ej: al final de la ejecución de cada instrucción se vuelve siempre
al estado 0, ¡ojo porque no es lo mismo que el caso secuencial!)
Diseño del procesador
ControlALU SRC1 SRC2 Control
Registro Memoria ControlPCWrite Secuenciamiento
Nombre del campo Función del campo Valores del campoControl ALU Especifica la operación que va a realizar la ALU
durante el ciclo.addsubtFunc code
SRC1 Especifica la fuente para el primer operando dela ALU
PCA
SRC2 Especifica la fuente para el segundo operandode la ALU
B4ExtendExtShft
Control Registro Especifica el número de registro y fuente deldato que se escribe en el mismo
ReadWrite ALU (rd <- ALUout)Write MDR (rt <- MDR)
Memoria Especifica lectura o escritura y la fuente de ladirección
Read PC (IR <- M[PC])Read ALU (MDR <- M[ALUout]Write ALU (M[ALUout] <- B)
Control PCWrite Especifica la escritura del PC ALUALUOut-CondJump Address
Secuenciamiento Especifica la siguiente microinstrucción que seva a ejecutar
SeqFetchDispatch i
32
Control microprogramado – Formato de la microinstrucción
7 campos: 6 campos de control + 1 campo de secuenciamiento
Diseño del procesador
ControlALU SRC1 SRC2 Control
Registro Memoria ControlPCWrite Secuenciamiento
33
Control microprogramado – Formato de la microinstrucción
7 campos: 6 campos de control + 1 campo de secuenciamiento
Diseño del procesador
Nombre del campoControl ALU
SRC1
SRC2
Control Registro
Memoria
Control PCWrite
Secuenciamiento
Valores del campoaddsubtFunc codePCAB4ExtendExtShftReadWrite ALU (rd <- ALUout)Write MDR (rt <- MDR)Read PC (IR <- M[PC])Read ALU (MDR <- M[ALUout]Write ALU (M[ALUout] <- B)ALUALUOut-CondJump AddressSeqFetchDispatch i
PCWritePCSource=10
ALUSrcA=1ALUSrcB=00ALUOp=01PCWriteCond
PCSource=01
ALUSrcA=1ALUSrcB=00ALUOp=10
RegDst =1RegWrite
MemtoReg=0MemWriteIorD=1
MemReadIorD=1
ALUSrcA=1ALUSrcB=10ALUOp=00
RegDst=0RegWrite
MemtoReg=1
ALUSrcA=0ALUSrcB=11ALUOp=00
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOp=00
PCWritePCSource=00
InstructionfetchInstructiondecode/
register fetch
Jumpcompletion
BranchcompletionExecution
Memoryaddresscomputation
Memoryaccess
Memoryaccess R-typecompletion
Write-backstep
(Op
='J'
)
(Op
='L
W')
4
01
9862
753
Start
C o n tro l A L UA L U o p 1 A L U O p 0
O p e ra c ió n
0 0 S u m a0 1 R e s ta1 0 F u n c . c o d e
S R C 2A LU S rB 1 A LU S rcB 0
O peración
0 0 B0 1 41 0 E xtend1 1 E xtS hft
R e g is te r C o n tro lR e g W rite R e g D s t M e m T o R e g
O p e r.
1 1 0 W rite A L U1 0 1 W rite M D R
M e m o riaIR W rite M e m R e a d M em W rite Io rD
O p er.
1 1 0 0 R e a d P C0 1 0 1 R e a d A LU0 0 1 1 W rite A L U
R e g is te r C o n tro lR e g W rite R e g D s t M e m T o R e g
O p e r.
1 1 0 W rite A L U1 0 1 W rite M D R
M e m o riaIR W rite M e m R e a d M em W rite Io rD
O p er.
1 1 0 0 R e a d P C0 1 0 1 R e a d A LU0 0 1 1 W rite A L U
Control PCWritePCSrc1 PcSrc0 PCwrite PCWrtCond
Oper.
0 0 1 0 ALU0 1 0 1 ALUOut-Cond1 0 1 0 Jump address
S ecA ddrC tl1 A ddrC tl0
O peración
1 1 S eq.0 0 Fetch0 1 D ispatch11 0 D ispatch2
Control PCWritePCSrc1 PcSrc0 PCwrite PCWrtCond
Oper.
0 0 1 0 ALU0 1 0 1 ALUOut-Cond1 0 1 0 Jump address
S ecA ddrC tl1 A ddrC tl0
O peración
1 1 S eq.0 0 Fetch0 1 D ispatch11 0 D ispatch2
S R C 1A d d rS rc A
O p e ra c ió n
0 P C1 A
34
Control microprogramado– Señales asociadas a los campos y valores
Diseño del procesador
Estado Etiqueta ControlALU
SRC1 SRC2 ControlRegistros
Memoria ControlPCWrite
Secuenc.
0 Fetch Add PC 4 Read PC ALU Seq.1 Add PC Extshft Read Dispatch 12 Mem1 Add A Extend Dispatch 23 LW2 Read ALU Seq4 Write MDR Fetch5 SW2 Write ALU Fetch6 Rformat1 Func
CodA B Seq
7 Write ALU Fetch8 BEQ1 Subt A B ALUOut-
condFetch
9 JUMP1 JumpAddress
Fetch
Control ALU SRC1 SRC2 ControlRegistro Memoria Control PCWrite Sec.
Alu
op1
Alu
op0
Alu
Src
A
ALU
SrcB
1
ALU
SrcB
0
Reg
Writ
e
Reg
Dst
Mem
ToR
eg
IRW
rite
Mem
Rea
d
IorD
Mem
Writ
e
PC
Sou
rce1
PC
Sou
rce0
PC
Writ
e
PC
Writ
eCon
d
Add
rCtl1
Add
rCtl0
18 señales de control ->
35
Control microprogramado – Microprograma de la UC
Diseño del procesador
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[
5–0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
Secuenciadorexterno
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[
5–0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[
5–0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
Secuenciadorexterno
Secuenciadorexterno
36
Diseño de la UC – Control microprogramado
El estado siguiente es frecuentemente el estado actual + 1
Las señales de control están almacenadas en una memoria
Diseño del procesador
37
Control microprogramado –Secuenciador del microprograma
La lógica de selección de direcciones genera la dirección de la siguiente microinstrucción a ejecutar
State
Op
Adder
1
PLA or ROM
Mux3 2 1 0
Dispatch ROM 1Dispatch ROM 2
0
AddrCtl
Address select logic
Instruction registeropcode field
S ecA ddrC tl1 A ddrC tl0
O perac ión
1 1 S eq.0 0 Fe tch0 1 D ispa tch11 0 D ispa tch2
Dispatch ROM1Op [5:0] Nombre Valor
000000 R-Format R-Format1 (6)000010 jmp JUMP1 (9)000100 beq BEQ1 (8)100011 lw MEM1 (2)101011 sw MEM1 (2)
Dispatch ROM2Op [5:0] Nombre Valor
100011 lw LW2 (3)101011 sw SW2 (5)
State
Op
Adder
1
PLA or ROM
Mux3 2 1 0
Dispatch ROM 1Dispatch ROM 2
0
AddrCtl
Address select logic
Instruction registeropcode field
State
Op
Adder
1
PLA or ROM
Mux3 2 1 0
Dispatch ROM 1Dispatch ROM 2
0
AddrCtl
Address select logic
Instruction registeropcode field
S ecA ddrC tl1 A ddrC tl0
O perac ión
1 1 S eq.0 0 Fe tch0 1 D ispa tch11 0 D ispa tch2
Dispatch ROM1Op [5:0] Nombre Valor
000000 R-Format R-Format1 (6)000010 jmp JUMP1 (9)000100 beq BEQ1 (8)100011 lw MEM1 (2)101011 sw MEM1 (2)
Dispatch ROM2Op [5:0] Nombre Valor
100011 lw LW2 (3)101011 sw SW2 (5)
Diseño del procesador
38
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
Excepciones e interrupciones Definiciones
Eventos inesperados que cambian el flujo normal de ejecución de las instrucciones
Excepción▫ Evento que tiene su origen en el interior del procesador (desbordamiento
aritmético, instrucción ilegal, etc.) Interrupción
▫ Evento que tiene su origen en el exterior del procesador (dispositivos de entrada/salida, fallo de página, etc.)
Tipo de evento ¿Desde dónde? Terminología MIPS Petición desde dispositivo E/S Exterior Interrupción Llamada al Sistema Operativo desde el programa de usuario
Interior Excepción
Desbordamiento aritmético Interior Excepción Instrucción ilegal o no definida Interior Excepción Fallo hardware Cualquiera Excepción/interrupción
39Diseño del procesador
Las acciones básicas a realizar son: Guardar la dirección de la instrucción causante en el registro Contador de
Programa de Excepciones (EPC) Registrar la causa de la excepción en el Registro Cause Transferir el control al Sistema Operativo en alguna dirección especificada
(0xC00000000) donde se tratará la excepción (ejecución de una rutina de servicio)
Tratamiento de excepciones en MIPS
Interrupción
Rutina de serviciode la interrupción
Programa
Salto a rutina de servicio
Retorno de la rutina de servicio
40Diseño del procesador
Excepciones a implementar Desbordamiento aritmético Instrucción ilegal o no definida
Registros adicionales requeridos EPC: Registro de 32 bits para guardar la dirección de la instrucción
causante de la excepción CAUSE: Registro de 32 bits para registrar la causa de la excepción.
Utilizaremos sólo el bit menos significativo▫ bit 0 = 0 → Instrucción ilegal▫ bit 0 = 1 → Desbordamiento aritmético
Señales de control adicionales Intcause (0: instrucción ilegal - 1: desbordamiento) CauseWrite (1: escritura en el registro CAUSE - 0: no escribe) EPCWrite (1: escritura en el registro EPC - 0: no escribe) Constante: C000 0000 0000 0000 (dirección a donde se transfiere el
control cada vez que se interrumpe)
Implementación de excepciones en MIPS
41Diseño del procesador
Especificación de la UC con soporte de excepciones
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA = 1ALUSrcB = 00ALUOp = 10
RegDst = 1RegWrite
MemtoReg = 0MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 00ALUOp = 00
RegWriteMemtoReg = 1RegDst = 0
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
Register fetch
Jumpcompletion
BranchcompletionExecution
Memory addresscomputation
Memoryaccess
Memoryaccess R-type completion
Write-back step
(Op
='J '
)
( Op
='L
W')
4
01
9862
7 11 1053
Start
Overflow
Overflow
ALUSrcA = 0ALUSrcB = 01ALUOp = 01
EPCWritePCWrite
PCSource = 11
IntCause = 0CauseWrite
ALUSrcA = 0ALUSrcB = 01ALUOp = 01
EPCWritePCWrite
PCSource = 11
IntCause = 1CauseWrite
PCWritePCSource = 10
42Diseño del procesador
Ruta de datos con soporte de excepciones
Shiftleft 2
Memory
MemData
Writedata
Mux
0
1
Instruction[15–11]
Mux
0
1
4
Instruction[15–0]
Signextend
3216
Instruction[25–21]
Instruction[20–16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
Control
Outputs
Op[5–0]
Instruction[31-26]
Instruction [5–0]
Mux
0
2
Jumpaddress [31-0]Instruction [25–0] 26 28
Shiftleft 2
PC [31-28]
1
Address
EPC
CO0000 00 3
Cause
ALUOpALUSrcBALUSrcA
RegDst
PCSource
RegWrite
EPCWriteIntCauseCauseWrite
1
0
1 Mux
0
32
Mux
0
1
Mux
0
1
PC
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
ALUOut
43Diseño del procesador
11 10
ALUSrcA = 0ALUSrcB = 01ALUOp = 01
EPCWritePCWrite
PCSource = 11
IntCause = 0CauseWrite
ALUSrcA = 0ALUSrcB = 01ALUOp = 01
EPCWritePCWrite
PCSource = 11
IntCause = 1CauseWrite
Al estado 0
Ruta de datos con soporte de excepciones
44Diseño del procesador
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA = 1ALUSrcB = 00ALUOp = 10
RegDst = 1RegWrite
MemtoReg = 0MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 00ALUOp = 00
RegWriteMemtoReg = 1RegDst = 0
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
Register fetch
Jumpcompletion
BranchcompletionExecution
Memory addresscomputation
Memoryaccess
Memoryaccess R-type completion
Write-back step
(Op
='J '
)
( Op
='L
W')
4
01
9862
7 11 1053
Start
Overflow
Overflow
ALUSrcA = 0ALUSrcB = 01ALUOp = 01
EPCWritePCWrite
PCSource = 11
IntCause = 0CauseWrite
ALUSrcA = 0ALUSrcB = 01ALUOp = 01
EPCWritePCWrite
PCSource = 11
IntCause = 1CauseWrite
PCWritePCSource = 10
mfc0 $rt, $rd (move from coprocesador 0) Transfiere la información desde el registro de propósito general $rd al registro de
propósito especial $rt (0 para CAUSE, 1 para EPC) Tipo R
▫ 010000 0000 ttttt ddddd 00000000000 mtc0 $rd, $rt (move to coprocesador 0)
Transfiere la información desde el registro de propósito especial $rt (0 para CAUSE, 1 para EPC) al registro de propósito general $rd
Tipo R▫ 010000 0100 ttttt ddddd 00000000000
rfe (return from exception) Transfiere el contenido del EPC al registro contador de programa Tipo J
▫ 010000 10000000000000000000100000
45
Instrucciones para excepciones en MIPS
Diseño del procesador
46
Estructura del tema
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 Resumen y bibliografía
Diseño del procesador
47
Resumen
Para diseñar un procesador es necesario diseñar en primer lugar el repertorio de instrucciones
A continuación se diseña la ruta de datos que es capaz de ejecutar el repertorio de instrucciones
El siguiente paso es diseñar la unidad de control
El manejo de excepciones es la parte difícil del control.
Diseño del procesador
48
Bibliografía
Estructura y diseño de computadores: interficiecircuitería/programaciónCapítulo 5 David A. Patterson, John L. HennessyEditorial Reverté, 1999
Diseño del procesador
Shiftleft 2
PCMux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction[15– 11]
Mux
0
1
Mux
0
1
4
Instruction[15– 0]
Signextend
3216
Instruction[25– 21]
Instruction[20– 16]
Instruction[15–0]
Instructionregister
ALUcontrol
ALUresult
ALUZero
Memorydata
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op[5– 0]
Instruction[31-26]
Instruction [5– 0]
Mux
0
2
Jumpaddress [31-0]Instruction [25–0] 26 28
Shiftleft 2
PC [31-28]
1
1 Mux
0
32
Mux
0
1ALUOut
Memory
MemData
Writedata
Address
Añadir la instrucción lw $rd, $rt($rs) al diseño del procesador multiciclo con el control especificado como una FSM.
Ejercicio 6
PCWritePCSource = 10
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA =1ALUSrcB = 00ALUOp= 10
RegDst = 1RegWrite
MemtoReg = 0MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
RegDst =0RegWrite
MemtoReg=1
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
register fetch
Jumpcompletion
BranchcompletionExecution
Memory addresscomputation
Memoryaccess
Memoryaccess R-type completion
Write-back step
(Op
='J'
)
(Op
='L
W')
4
01
9862
753
Start
Ejercicio 6Añadir la instrucción lw $rd, $rt($rs) al diseño del procesador multiciclo con el control especificado como una FSM.