Publicado el 29 de Julio del 2019
742 visualizaciones desde el 29 de Julio del 2019
348,5 KB
45 paginas
Creado hace 6a (17/11/2017)
Fundamentos de Microprocesadores
Unidad 4. El Procesador II: Diseño y control
de la ruta de datos. Arquitectura uniciclo
Escuela Politécnica Superior ‐ UAM
Copyright © 2007 Elsevier, “Digital Design and Computer Architecture”
1
Índice
• Introducción
• Ruta de datos uniciclo
• Control uniciclo
• Añadir más instrucciones
• Parámetros temporales en la ruta uniciclo
2
Introducción
APLICACIÓN
SOFTWARE
SISTEMAS
OPERATIVOS
PROGRAMAS
DRIVERS
ARQUITECTURA
MICRO‐
ARQUITECURA
LÓGICA
CIRCUITOS
DIGITALES
CIRCUITOS
ANALÓGICOS
DISPOSITIVOS
INSTRUCCIONES
REGISTROS
CAMINO DE DATOS
CONTROLADORES
SUMADORES
MEMORIA
PUERTAS LÓGICAS
AMPLIFICADORES
FILTROS
TRANSISTORES
DIODOS
FÍSICA
ELECTRONES
• Arquitectura:
Es la visión que desde el punto de vista del
sistema
tiene
del
programador
se
computador (U3).
• Microarquitectura:
Es la implementación en hardware del
computador (U4 y U5).
Ruta de datos: bloques funcionales.
Ruta de control: señales de control internas.
3
Microarquitectura
• Hay múltiples implementaciones de la misma
arquitectura (juego de instrucciones):
– Uniciclo (U4)
• Cada instrucción se ejecuta en un ciclo de reloj
• Cada instrucción se divide en pasos cortos, cada uno de un ciclo de
– Multiciclo (U5)
reloj mucho más rápido
– Segmentado (pipelined)
• Cada instrucción se divide en pasos cortos
• Se ejecutan múltiples instrucciones a la vez, cada una en un paso
distinto
4
Microarquitectura
‐ Uniciclo (U4)
INSTR 1
‐ Multiciclo (U5)
1 2 3
INSTR 1
‐ Segmentado
INSTR 2
1 2 3 4 5
INSTR 2
1 2 3
INSTR 1
1 2 3 4 5
INSTR 2
1 2 3 4
INSTR 3
1 2 3 4 5
INSTR 4
5
Subconjunto del MIPS
• Para estudiar
inicialmente sólo un subconjunto del
instrucciones:
la microarquitectura consideramos
juego de
R‐Type: and, or, add, sub, slt
I‐Type, de memoria : lw, sw
I‐Type, de saltos: beq
• Luego añadiremos más instrucciones (addi, j(J‐Type)).
• En el laboratorio de prácticas se añadirán algunas más.
6
Índice
• Introducción
• Ruta de datos uniciclo
• Control uniciclo
• Añadir más instrucciones
• Parámetros temporales en la ruta uniciclo
7
Estado de la arquitectura
• Se puede conocer en qué situación se encuentra el
micro conociendo los valores de:
– PC
– Banco de registros (los 32 registros)
– Memoria (de código y de datos)
• Primeros elementos a considerar en la ruta de datos:
CLK
PC'
32
PC
32
32
A
RD
Instruction
Memory
32
CLK
A1
A2
WE3
RD1
RD2
32
32
A3
WD3
Register
File
5
5
5
32
CLK
WE
RD
A
Data
Memory
WD
32
32
32
8
Ruta de datos: captura lw
El análisis de la ruta de datos comienza con la instrucción:
(0x8C112000)
y los pasos para ejecutarla:
lw $s1,0x2000($0)
PASO 1: captura de instrucción (fetch)
CLK
PC'
PC
Instr
RD
A
Instruction
Memory
CLK
A1
A2
A3
WD3
WE3
RD1
RD2
Register
File
Instr <= “100011 00000 10001 0010000000000000”
=>
=>
=>
=>
“100011”
“00000”
“10001”
“0010000000000000”
op: Instr [31:26] =
rs: Instr [25:21] =
rt: Instr [20:16] =
imm: Instr [15:0] =
CLK
WE
RD
A
Data
Memory
WD
lw
$0
$s1
0x2000
9
Ruta de datos: lectura de registros lw
PASO 2: lectura de los operandos fuente del banco de registros
CLK
PC'
PC
25:21
Instr
A
RD
Instruction
Memory
CLK
A1
A2
A3
WD3
WE3
RD1
RD2
Register
File
CLK
WE
RD
A
Data
Memory
WD
A1: Instr [25:21] = “00000”; RD1 <=“0x00000000” = ($0)
lw $s1,0x2000($0)
10
Ruta de datos: dato inmediato lw
PASO 3: extensión en signo del dato inmediato
CLK
PC'
PC
A
RD
Instruction
Memory
CLK
Instr
25:21
A1
WE3
RD1
RD2
A2
A3
WD3
Register
File
CLK
WE
A
RD
Data
Memory
WD
15:0
Sign Extend
SignImm
SignImm <= 0x00002000 = Sign Extend (0x2000)
lw $s1,0x2000($0)
11
Ruta de datos: dirección lw
PASO 4: calcular la dirección para acceso a memoria de datos
sumando ([rs] + SignImm) en la ALU
CLK
Instr
25:21
A1
WE3
CLK
PC'
PC
RD
A
Instruction
Memory
A2
A3
WD3
Register
File
ALUControl2:0
010
SrcA
SrcB
Zero
ALUResult
U
L
A
RD1
RD2
CLK
WE
A
RD
Data
Memory
WD
15:0
Sign Extend
SignImm
ALUResult <=
0x00002000 = 0x00000000 + 0x00002000
lw $s1,0x2000($0)
12
Ruta de datos: leer memoria lw
PASO 5: leer el dato buscado de memoria y escribirlo en el
registro destino, rt
CLK
PC'
PC
A
RD
Instruction
Memory
RegWrite
CLK
Instr
25:21
A1
20:16
A2
A3
WD3
1
WE3
RD1
RD2
Register
File
ALUControl2:0
010
Zero
ALUResult
SrcA
SrcB
U
L
A
CLK
WE
RD
A
Data
Memory
WD
ReadData
15:0
Sign Extend
SignImm
A3: Instr [20:16] = “10001” ($s1)
$s1 <=WD3 = MEM[0x00002000]
lw $s1,0x2000($0)
13
Ruta de datos: incrementar PC
PASO 6: incrementar el PC en 4 para tener la dirección de la
próxima instrucción
CLK
PC'
PC
A
RD
Instruction
Memory
RegWrite
CLK
Instr
25:21
A1
20:16
A2
A3
WD3
1
WE3
RD1
RD2
Register
File
ALUControl2:0
010
Zero
ALUResult
SrcA
SrcB
U
L
A
CLK
WE
RD
A
Data
Memory
WD
ReadData
PCPlus4
+
4
15:0
Sign Extend
SignImm
$PC <= $PC + 4
lw $s1,0x2000($0)
Result
14
Ruta de datos: instrucción sw
Sobre esta ruta de datos, vemos qué falta para otras instrucciones:
Empezamos con sw $s1,0x2000($0) (0xAC112000)
La dirección de escritura se calculará igual que en el caso de lw
CLK
Instr
25:21
A1
WE3
CLK
PC'
PC
A
RD
Instruction
Memory
ALUControl2:0
010
SrcA
SrcB
Zero
ALUResult
U
L
A
RD1
RD2
A2
A3
WD3
Register
File
15:0
Sign Extend
SignImm
ALUResult <= 0x00002000 = 0x00000000 + 0x00002000
CLK
WE
A
RD
Data
Memory
WD
15
Ruta de datos: instrucción sw
Falta una forma de leer un segundo registro y escribirlo en memoria
CLK
PC'
PC
A
RD
Instruction
Memory
RegWrite
CLK
Instr
25:21
A1
20:16
20:16
A2
A3
WD3
0
WE3
RD1
RD2
Register
File
ALUControl2:0
010
SrcA
SrcB
U
L
A
Zero
ALUResult
WriteData
MemWrite
1
WE
RD
CLK
A
Data
Memory
WD
ReadData
PCPlus4
+
4
15:0
Sign Extend
SignImm
A2: Instr [20:16] = “10001” ($s1)
MEM[0x00002000] <= RD2 = ($s1)
sw $s1,0x2000($0)
Result
16
Ruta de datos: Instrucciones tipo-R
Ejemplo: add $s1, $t1, $t2
Leer dos registros fuente, rs y rt. Ambos son entradas de la ALU
Lo que se escribe en registro es ALUResult y no lo que viene de memoria
Se escribe en rd (en lugar de rt).
(0x012A8820)
RegWrite
RegDst
ALUSrc
1
0
ALUControl2:0
varies
SrcA
SrcB
U
L
A
Zero
ALUResult
WriteData
0
1
MemWrite
MemtoReg
0
0
1
ReadData
CLK
0
WE
RD
A
Data
Memory
WD
CLK
PC'
PC
A
RD
Instruction
Memory
CLK
Instr
25:21
A1
A2
A3
WD3
20:16
20:16
15:11
1
WE3
RD1
RD2
Register
File
0
1
WriteReg4:0
PCPlus4
+
4
15:0
Sign Extend
SignImm
A3: Instr [15:11] = “10001” ($s1) $s1 <= WD3 = ALUResult ($t1+$t2)
Result
17
Ruta de datos: instrucción beq
Se decide si se salta o no con la bandera Z
Cálculo de la dirección de salto (Branch Target Address):
BTA = (PC+4) + (Sign Extend {imm << 2})
RegWrite
RegDst
ALUSrc
x
0
ALUControl2:0
110
Branch
1
PCSrc
MemWrite
MemtoReg
CLK
PC'
PC
0
1
A
RD
Instruction
Memory
CLK
Instr
25:21
A1
A2
A3
WD3
20:16
20:16
15:11
0
WE3
RD1
RD2
Register
File
0
1
WriteReg4:0
PCPlus4
+
4
SrcA
SrcB
0
1
U
L
A
Zero
ALUResult
WriteData
15:0
Sign Extend
SignImm
<<2
PCBranch
+
x
0
1
ReadData
CLK
0
WE
RD
A
Data
Memory
WD
Result
Branch se pondrá a 1 si se está ejecutando un beq
PCSrc se pondrá a 1 si Branch=1 y la condición de salto se cumple (Z=1)
18
Ruta de datos y de control
Las señales de control se generan según cada instrucción
(Hay que decodificar opcode y funct)
CLK
PC'
PC
0
1
A
RD
Instruction
Memory
Instr
25:21
A1
WE3
RD1
RD2
MemtoReg
MemWrite
Branch
ALUControl2:0
ALUSrc
RegDst
RegWrite
Control
Unit
31:26
5:0
Op
Funct
CLK
A2
A3
WD3
20:16
20:16
15:11
Register
File
0
1
WriteReg4:0
PCSrc
SrcA
SrcB
0
1
U
L
A
Zero
ALUResult
WriteData
CLK
WE
RD
A
Data
Memory
WD
ReadData
0
1
PCPlus4
+
4
15:0
Sign Extend
SignImm
<<2
PCBranch
+
Result
19
Índice
• Introducción
• Ruta de datos uniciclo
• Control uniciclo
• Añadir más instrucciones
• Parámetros temporales en la ruta uniciclo
20
Unidad de Control
• La UC consite en la generación de dos buses de control:
ALUControl (3 bits): depende de opcode y funct
Resto (6 bits): sólo depende de opcode, no depende de funct
Control
Unit
Opcode5:0
Main
Decoder
MemtoReg
MemWrite
Branch
ALUSrc
RegDst
RegWrite
Funct5:0
ALU
Decoder
ALUControl2:0
21
Decodificador de la ALU
X
OPCODE
100011 (lw)
101011 (sw)
000100 (beq) X
000000
000000
000000
000000
000000
Funct
100000 (add)
100010 (sub)
100100 (and)
100101 (or)
101010 (slt)
ALUControl2:0
010 (Sumar)
110 (Restar)
010 (Sumar)
110 (Restar)
000 (Y lógico)
001 (O lógico)
111 (SetLessThan)
22
Ruta de control
Señal
Significado
Significado de valores
0
1
MemToReg
MemWrite
Branch
PcSrc
ALUSrc
RegDst
Decide si al banco de registros le llega un
dato de la memoria de datos o si le llega
el resultado de la ALU
Decide si se va a escribir un registro en la
memoria de datos.
Indica si se está ejecutando una
instrucción beq
Indica si hay que realizar el salto del beq.
Sólo activa cuando Branch=1 y Z=1
Decide cuál será el segundo operando de
la ALU
Indica la dirección de registro destino
RegWrite
Indica si el banco de registros debe
guardar un resultado
No
Resultado de
la ALU
No
No
No
Registro RT
[20:16]
Registro RT
[20:16]
CLK
PC'
PC
0
1
A
RD
Instruction
Memory
Sí
PCPlus4
+
4
Dato de la
memoria de
datos
Sí
Sí
Sí
MemtoReg
MemWrite
Branch
ALUControl2:0
ALUSrc
RegDst
RegWrite
Dato Inm
Control
Unit
31:26
5:0
Op
Funct
Registro RD
[15:11]
CLK
Instr
25:21
A1
A2
A3
WD3
WE3
RD1
RD2
Register
File
0
1
WriteReg4:0
20:16
20:16
Comentarios de: Unidad4. El Procesador II: Diseño y control de la ruta de datos. Arquitectura uniciclo (0)
No hay comentarios