02cpu Handout
02cpu Handout
La CPU
Arquitectura de Computadores
Curso 2023–2024
Objetivos
A
TC
Arquitectura de ejemplo
MIPS64
• Primera de 64 bits
• Evolución de MIPS 32 bits
• Compatible
• Muy parecida a ARMv8 (dispositivos móviles)
RISC
• Instrucciones sencillas de tamaño fijo
• Pocos modos de direccionamiento
• Gran número de registros
A
TC
MIPS64
ISA (carga/almacenamiento)
• Ancho de la CPU
• ancho de los operandos: 64 bits
• Espacio de memoria (m)
• líneas en el bus de direcciones (64) ⇒ m = 264
• Memoria direccionable al byte
• byte, media palabra, palabra, doble palabra
• solo instrucciones de carga/almacenamiento
• Conjunto de registros (64 bits)
• 32 enteros: r1-r31 (r0= 0)
• 32 reales en coma flotante de precisión doble: f0-f31
A
TC
Tipos de datos
Reales (IEEE-754)
• Precisión simple: 32 bits
• Precisión doble: 64 bits
A
TC
Tipos de datos
Carga de byte sin signo
lbu r4, 100(r0)
63 32 31 16 15 8 7 0
0 0 0 ... 0 0 0 1 .. X
byte
media palabra
palabra
doble palabra
A
TC
Tipos de datos
Carga de byte con signo
lb r4, 100(r0)
63 32 31 16 15 8 7 0
1 1 1 ... 1 1 1 1 .. X
byte
media palabra
palabra
doble palabra
A
TC
Accesos alineados
Memoria
Alineado a 32 bits ...
00...1100 A3
00...1101 10
00...1110 9A
00...1111 BF
00...0000 A4
00...0001 5A
No alineado a 32 bits
00...0010 79
No permitido 00...0011 F3
00...0100 FF
00...0101 B3
00...0110 19
00...0111 CD
...
A
TC
Juego de instrucciones
• Aritméticas
• Lógicas
• Carga/Almacenamiento
• Saltos incondicionales
• Saltos condicionales
• Desplazamientos
• Copia/Conversiones
A
TC
Modos de direccionamiento
Modos
• Inmediato: daddi r4, r8, -2
• Registro: dadd r2, r18, r3
• Base más desplazamiento: ld r6, 100(r3)
A
TC
Codificación
tipo I op rs rd inmediato
tipo J op inmediato
A
TC
Ejecución de instrucciones
Condiciones
• Instrucciones en memoria
CPU • PC apunta a la siguiente
instruccion
Unidad
de control
Fichero Repetir
registros
PC
• Búsqueda de instrucción
• Incrementar PC
• Decodificar la instrucción
SR
• Búsqueda de operandos
ZCOS
• Ejecución de la instrucción
• (carga/almacenamiento)
Acceso a memoria
• Almacenar los resultados
A
TC
Ejemplo
C MIPS64 C. máquina
if (a == b) lw r21, 0x1534(r0) 8C151534h
a = 0; bne r21, r10, skip 15550001h
xor r10, r10, r10 014A5026h
skip:
A
TC
Ejemplo
CPU
Memoria
F. registros
R0 = 0000 0000 U. control
... 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2000 ...
8C
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2000
2000 ...
8C
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
1.- Búsqueda de instrucción 200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2004
2000 ...
8C
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
2.- Incrementar PC (+4) 200A 50
lw r21, 0x1534(r0) 2000 + 4 200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000 lw r21, 0x1534(r0)
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2004
2000 ...
8C
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
3.- Decodificar la instrucción 200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000 lw r21, 0x1534(r0)
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2004
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
4.- Búsqueda de operandos 200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000 lw r21, 0x1534(r0)
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2004
2000 ...
8C
SR 2001 15
R0+0x1534 2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
5.- Ejecución de la instrucción 200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000 lw r21, 0x1534(r0)
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC leer 1537 0A
... ...
2004
2000 ...
8C
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
6.- Acceso a memoria 200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Ejemplo
CPU
Memoria
F. registros U. control
R0 = 0000 0000 lw r21, 0x1534(r0)
... 8C15 1534 1534 ...
00
R10 = 0000 000A
1535 00
...
R21 = xxxx xxxx 1536 00
... PC 1537 0A
... ...
2004
2000 ...
8C
SR 2001 15
2002 15
ZCOS 2003 34
2004 15
2005 55
2006 00
2007 01
2008 01
2009 4A
7.- Almacenar los resultados 200A 50
lw r21, 0x1534(r0)
200B 26
bne r21, r10, skip
xor r10, r10, r10 200C 04
skip: 200D 00
200E 00
200F 00
...
A
TC
Microarquitectura
Simplificación
A
TC
Requisitos
Idea básica
Replicar hardware
• ejecutar todas las instrucciones con CPI = 1
Fases comunes
• Buscar el código de instrucción
• Decodificar la instrucción
A
TC
Unidades funcionales
Elementos constructivos del camino de datos
• Registro PC
• Memoria de instrucciones/datos
• Fichero de registros
• ALU
• Más: sumadores, desplazadores, multiplexores
Read #1 5
Read #2 5
RegWrite M 64
... Read data 1 Z
64 u
D
Reg 0
Q x Input #1
0 C 64
Write
D Q ALU Result
register 5 1 Reg 1
Deco C
...
30 Q Input #2
...
...
31 64 M 64
Read data 2 4
...
D Q u ALU ctrl
Write Reg n − 1
C 64 x
data 64
D Q
Reg n
C
A
TC
Búsqueda del código de instrucción
Add
4
PC Address
Instruction
Instruction
memory
A
TC
Instrucciones tipo R
31 26 25 21 20 16 15 11 10 6 5 0
A
TC
Ejecución de instrucciones de tipo R
31 26 25 21 20 16 15 11 10 6 5 0
Instruction [25:21] Z
Read #1
Read
32 Instruction [20:16] data 1 ALU
Instruction Read #2
Result
Register
Instruction [15:11] file Read
Write
register data 2
4
Write ALU ctrl
data
RegWrite
A
TC
Datapath para instrucciones tipo R
Add
4
Instruction [25:21] Z
PC Address Read #1
Read
32 Instruction [20:16] data 1 ALU
Instruction Read #2
Result
Register
Instruction Instruction [15:11] file Read
Write
memory register data 2
4
Write ALU ctrl
data
RegWrite
A
TC
Instrucciones carga/almacenamiento
31 26 25 21 20 16 15 0
tipo I op rs rd inmediato
A
TC
Ejec. instr. carga/almacenamiento
31 26 25 21 20 16 15 0
tipo I op rs rd inmediato
Instruction [25:21] Z
Read #1
MemRead
Read
32 Instruction [20:16] data 1 ALU
Read #2 Read
Result Address
Register data
file Read
Write
register data 2 Data
4 memory
Write ALU ctrl
data Write
data
RegWrite
MemWrite
Instruction [15:0] 16 64
Sign
extend
A
TC
Datapath inst. R y carga/almac.
31 26 25 21 20 16 15 11 10 6 5 0
31 26 25 21 20 16 15 0
tipo I op rs rd inmediato
Add
4
Instruction [25:21] Z
Read #1
MemRead
Read MemToReg
PC Address
Instruction [20:16] data 1 ALU
Read #2 ALUSrc Read 1
Register Result Address M
Instruction 0 data
M file Read 0 u
Write x
u data 2 M Data
Inst. Inst. [15:11] register 0
x u 4 memory
memory 1 x
Write ALU ctrl
RegDst 1 Write
data
data
RegWrite
MemWrite
Instruction [15:0] 16 64
Sign
extend
A
TC
Ejec. de la instrucción beq Rs1,Rs2,inm_16
31 26 25 21 20 16 15 0
tipo I op rs rd inmediato
New PC
0
M
PC + 4 u
Add
x
Result
1
Shift
left 2 PCSrc
Instruction [25:21] Z
Read #1
Read
32 data 1 ALU Branch
Instruction [20:16]
Inst. Read #2
Register Result
file Read
Write
register data 2
4
Write ALU ctrl
data
RegWrite
Instruction [15:0] 16 64
Sign
extend
A
TC
Camino de datos: Tipo R, carga/alm.,
beq
0
M
Add Add u
x
4
Result
1
Shift
left 2
PCSrc
Z
Instruction [25:21]
Read #1
MemRead
Read MemToReg
PC Address
Instruction [20:16] data 1 ALU
Read #2 ALUSrc Read 1
Register Result Address M
Instruction 0 data
M file Read 0 u
Write x
u data 2 M Data
Inst. Inst. [15:11] register 0
x u 4 memory
memory 1 x
Write ALU ctrl
RegDst 1 Write
data
data
RegWrite
MemWrite
Instruction [15:0] 16 64
Sign
extend
A
TC
Ejec. de la instrucción j inm_26
31 26 25 0
tipo J op inmediato
New PC
Jump
A
TC
Camino de datos completo
A
TC
Ejemplo
dadd r2, r3, r6
Instruction [25:21]
Read #1 Z
Read
PC Address
Instruction [20:16] data 1 ALU
Read #2 Read 1
Register Result Address M
Instruction 0 data
M file Read 0 u
Write x
u data 2 M Data
Inst. Inst. [15:11] register 0
x u 4 memory
memory 1 x
Write
1 Write
data
data
2
Instruction [15:0] 16 64
Sign
extend ALU
control
Instruction [5:0]
A
TC
Monociclo
Inconvenientes
TCPU = Instrucciones del programa × CPI × T
• Diseño sencillo
• CPI = 1
• Ciclo largo
• Imposible optimizar las instrucciones comunes
A
TC
Mejoras de rendimiento
T. CPU
TCPU usuario TCPU sistema
A
TC
Mejoras de rendimiento
Segmentación ⇒ CPI=1 y ↓ T
A
TC
CPI
A
TC
Segmentación de instrucciones
(pipeline)
Símil
Tarea = Hacer la colada
1 Lavar
2 Secar
3 Planchar
4 Colocar
Clave
Dividir la ejecución de las instrucciones en etapas que funcionan en
paralelo
• transparente al software
• muy usada hoy en día
A
TC
Símil
• No segmentada
18:00 19:00 20:00 21:00 22:00 23:00 00:00
A
B
C
• Segmentada
18:00 19:00 20:00 21:00 22:00 23:00 00:00
A
B
C
A
TC
Pipeline
Crucial: Etapas en paralelo
• tiempos distintos
• etapas rápidas esperan por lentas
• balanceo de las etapas
• se mejora productividad, no el tiempo de respuesta
Etapas
1 IF: carga código instrucción + incremento de PC
2 ID: decodificación de instrucción + lectura registros
3 EX: ejecución + cálculo de direcciones efectivas
4 MEM: acceso a memoria
5 WB: escritura diferida de registros
Número de etapas
• duración de etapas = 1 ciclo
• ↑ número etapas ⇒ ↓ duración ciclo
• imposible incrementar indefinidamente (muro energía, balanceo,
control)
A
TC
Ejecución de instrucciones
Monociclo
Ciclo de reloj 1 2
Segmentada
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10
A
TC
La segmentación de instrucciones
Caso ideal
Aceleración = número de etapas
• aumenta la complejidad de la unidad de control de la CPU
• riesgos de la segmentación ⇒ ↑ CPI medio
• muro de energía
• típicamente entre 10 y 20 etapas
A
TC
Camino de datos identificando etapas
Instruction fetch (IF) Instruction decode (ID) Execute (EX) Memory access (MEM) Write back (WB)
Instruction [15:0] 16 64
Sign
extend
A
TC
Camino de datos segmentado
Registros de segmentación
• independizar etapas
• cauce avanza de registro de segmentación al siguiente
IF/ID ID/EX EX/MEM MEM/WB
Add Add
4
36 Result
Shift Shift
left 2 left 2
26 28 64
Z
0
M Read #1
Read
1u PC Address
data 1 ALU
x
Read #2 Read 1
Register Result Address M
2 Instruction 0 data
M file Read 0 u
Write x
u data 2 M Data
Instruction register 0
x u memory
memory 1 x
Write
1 Write
data
data
16 64
Sign
extend
A
TC
Camino segmentado con señales de
control
Sin riesgos
PCSrc
ID/EX
WB EX/MEM
Instruction
Control M WB MEM/WB
IF/ID EX M WB
36
Add Add
4
Result
Shift Shift
left 2 left 2 Branch
26 28
1 RegWrite Z
MemToReg
0
M Read #1
Read MemRead
1u PC Address
data 1 ALU
x
Read #2 ALUSrc Read 1
Register Result Address M
2 Instruction data
file Read 0 u
Jump 2 Write x
data 2 M Data
Instruction register 0
u 4 memory
memory x
Write
1 Write
data
data
Instruction [20:16] 0
M 2 ALUOp
u
Instruction [15:11]
x
1
ALUSrc
A
TC
Ejemplo
dadd r3, r5, r8
PCSrc
ID/EX
WB EX/MEM
Instruction
Control M WB MEM/WB
IF/ID EX M WB
36
Add Add
4
Result
Shift Shift
left 2 left 2 Branch
26 28
1 RegWrite Z
MemToReg
0
M Read #1
Read MemRead
1u PC Address
data 1 ALU
x
Read #2 ALUSrc Read 1
Register Result Address M
2 Instruction data
file Read 0 u
Jump 2 Write x
data 2 M Data
Instruction register 0
u 4 memory
memory x
Write
1 Write
data
data
Instruction [20:16] 0
M 2 ALUOp
u
Instruction [15:11]
x
1
ALUSrc
A
TC
Ejemplo
andi r1, r7, 8 dadd r3, r5, r8
PCSrc
ID/EX
WB EX/MEM
Instruction
Control M WB MEM/WB
IF/ID EX M WB
36
Add Add
4
Result
Shift Shift
left 2 left 2 Branch
26 28
1 RegWrite Z
MemToReg
0
M Read #1
Read MemRead
1u PC Address
data 1 ALU
x
Read #2 ALUSrc Read 1
Register Result Address M
2 Instruction data
file Read 0 u
Jump 2 Write x
data 2 M Data
Instruction register 0
u 4 memory
memory x
Write
1 Write
data
data
Instruction [20:16] 0
M 2 ALUOp
u
Instruction [15:11]
x
1
ALUSrc
A
TC
Ejemplo
or r2, r9, r17 andi r1, r7, 8 dadd r3, r5, r8
PCSrc
ID/EX
WB EX/MEM
Instruction
Control M WB MEM/WB
IF/ID EX M WB
36
Add Add
4
Result
Shift Shift
left 2 left 2 Branch
26 28
1 RegWrite Z
MemToReg
0
M Read #1
Read MemRead
1u PC Address
data 1 ALU
x
Read #2 ALUSrc Read 1
Register Result Address M
2 Instruction data
file Read 0 u
Jump 2 Write x
data 2 M Data
Instruction register 0
u 4 memory
memory x
Write
1 Write
data
data
Instruction [20:16] 0
M 2 ALUOp
u
Instruction [15:11]
x
1
ALUSrc
A
TC
Ejemplo
xor r3, r5, r8 or r2, r9, r17 andi r1, r7, 8 dadd r3, r5, r8
PCSrc
ID/EX
WB EX/MEM
Instruction
Control M WB MEM/WB
IF/ID EX M WB
36
Add Add
4
Result
Shift Shift
left 2 left 2 Branch
26 28
1 RegWrite Z
MemToReg
0
M Read #1
Read MemRead
1u PC Address
data 1 ALU
x
Read #2 ALUSrc Read 1
Register Result Address M
2 Instruction data
file Read 0 u
Jump 2 Write x
data 2 M Data
Instruction register 0
u 4 memory
memory x
Write
1 Write
data
data
Instruction [20:16] 0
M 2 ALUOp
u
Instruction [15:11]
x
1
ALUSrc
A
TC
Riesgos de la segmentación
Riesgos
Fuerza la detención del cauce
• En la práctica: introducir nop
Tipos
• Estructurales
• Dependencia de datos
• Control (dependencia sobre PC)
A
TC
Riesgos estructurales
Definición
Dos etapas requieren el mismo hardware
• Imposibles en la microarquitectura MIPS64
A
TC
Riesgos por dependencia de datos
Dependencia de datos
• RAW: Read After Write
• WAR: Write After Read
• WAW: Write After Write
Entre instrucciones del cauce segmentado ⇒ riesgos por
dependencias de datos
Ejemplo RAW
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10
A
TC
Riesgos por dependencia de datos
Ejemplo WAR
Ciclo de reloj 1 2 3 4 5 6 7
Ejemplo WAW
Ciclo de reloj 1 2 3 4 5 6 7
A
TC
Riesgos de control
Definición
Cambio en el flujo del programa
• Vaciar el pipeline
• Costoso
• Dependencia de datos sobre PC
Ejemplo
beq r0, r3, loop
daddi r1, r0, 1
and r3, r2, r4
xor r8, r8, r8
loop: dsub r3, r1, r2
A
TC
Riesgos de control
No tomado
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12
Tomado
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12
A
TC
Riesgos de control
Salto incondicional
Ciclo de reloj 1 2 3 4 5 6 7
j loop IF ID EX MEM WB
A
TC
Operaciones multiciclo
Operaciones complejas
Etapa EX compleja
• Multiplicaciones, divisiones, punto flotante ...
8 Alargar ciclo de reloj
4 Solución: varios ciclos en EX
EX
mult./div. enteros
IF ID EX (5 ciclos) MEM WB
punto flotante
EX (7 ciclos)
A
TC
Operaciones multiciclo
A
TC
Operaciones multiciclo
Problema
Aparecen riesgos estructurales
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A
TC
Operaciones multiciclo
Mejora
Segmentar unidades EX complejas
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12 13
dmul r8, r9, r10 IF ID EX1 EX2 EX3 EX4 EX5 MEM WB
A
TC
Excepciones
Excepciones precisas
Hardware se encarga
• Lidiar con instrucciones a medio ejecutar
• Comportamiento esperado como no segmentado
A
TC
Excepciones
Ocurrencia
En cualquier momento y varias al mismo tiempo
Ciclo de reloj 1 2 3 4 5 6
¡Excepción!
ld r7, 120(r0) IF ID EX MEM WB
Procesar en orden
• Todas en la etapa WB
A
TC
Excepciones
Solución
• Ejecución fuera de orden
• Deben terminar en orden (MEM y WB)
A
TC
Excepciones
Ejemplo
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12
A
TC
Mejoras en la segmentación
Idealmente CPI = 1
• Detenciones por riesgos aumentan CPI
• MIPS64: solo RAW y control
Posibles mejoras
• ↓ T ⇒ ↑ Profundidad de segmentación
• ↓ CPI ⇒ ↓ Detenciones
• Reducir riesgos de datos
• Reducir riesgos de control
A
TC
Reducción detenciones datos
Dependencias
• RAW: dependencia verdadera
• WAR: antidependencia
• WAW: dependencia de salida
Estrategias
• Planificación de instrucciones
Reduce detenciones
• Rutas de reenvío
• Renombrado de registros → Elimina dependencias
A
TC
Planificación de instrucciones
HW y SW
Reordenar instrucciones
• Reducir detenciones
• Sin cambiar semántica
• Software: recompilar para cada microarquitectura
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10
Ciclo de reloj 1 2 3 4 5 6 7 8
Forwarding
• Reducir/eliminar detenciones por dependencias de datos
• Adelantar uso de registros calculados en el cauce
• No esperar a WB
• Detenciones en la etapa EX en lugar de ID
Situaciones
• Escritura sin carga y lectura consecutivas
• Escritura sin carga y lectura separadas 1 instrucción
• Escritura de carga y lectura consecutivas
• Escritura de carga y lectura separadas 1 instrucción
A
TC
Rutas de reenvío
Escritura y lectura consecutivas
Sin forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10
Con forwarding
Ciclo de reloj 1 2 3 4 5 6 7
A
TC
Rutas de reenvío
Escritura y lectura separadas 1 instrucción
Sin forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8 9
Con forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8
A
TC
Rutas de reenvío
Escritura y lectura separadas 2 instrucciones
No necesario forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8 9
Escribe r2
dadd r2, r3, r4 IF ID EX MEM WB
A
TC
Rutas de reenvío
Carga y lectura consecutivas
Sin forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8 9
Con forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8 9
A
TC
Rutas de reenvío
Carga y lectura separadas 1 instrucción
Sin forwarding
Ciclo de reloj 1 2 3 4 5 6 7 8
Con forwarding
Ciclo de reloj 1 2 3 4 5 6 7
A
TC
Rutas de reenvío
Mejora del rendimiento con detenciones en la etapa EX
Detención en la etapa ID
Ciclo de reloj 1 2 3 4 5 6 7 8 9
Detención en la etapa EX
Ciclo de reloj 1 2 3 4 5 6 7 8 9
A
TC
Rutas de reenvío
Activación de múltiples rutas reenvío
A
TC
Reciclado de registros
Dependencias RAW
• Semántica del programa
• Dependencias verdaderas
A
TC
Reciclado de registros
Ejemplo
Con reciclado
a = 1; (1) ori r5, r0, 1 ; r5 <- a 1
b = 3 * a; (2) ori r6, r0, 3 ; r6 <- 3
RAW RAW 2
c = 7; (3) dmul r4, r6, r5 ; r4 <- b
d = 6; (4) ori r4, r0, 7 ; r4 <- c 3 WAW
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A
TC
Reciclado de registros
Ejemplo
Sin reciclado
a = 1; (1) ori r5, r0, 1 ; r5 <- a 1
b = 3 * a; (2) ori r6, r0, 3 ; r6 <- 3
RAW RAW 2
c = 7; (3) dmul r4, r6, r5 ; r4 <- b
d = 6; (4) ori r7, r0, 7 ; r7 <- c 3
(5) ori r8, r0, 6 ; r8 <- d 5
4
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12 13
A
TC
Renombrado de registros
Ideal
• Disponer de muchos registros
8 Problema: muchos bits en el código de instrucción
Solución
• Separar registros arquitectónicos de físicos
• Arquitectónicos ⇒ simbólicos
• Gran número de registros físicos
• Tabla de renombrado: mapeo inicial por defecto
A
TC
Renombrado de registros
Tabla renombrado
• Asociación registro físico - arquitectónico
• Estado registro físico
• Asociado y en uso
• Asociado y en desuso
• Disponible
Funcionamiento
1 Arranque: mapeo por defecto y en desuso (r6→rr6)
2 Etapa ID: identificar registros arquitectónicos
• Renombrar registro destino
• Incrementar contador de registros origen
• r0 no se renombra
3 Etapa WB: decrementar contador uso
• Liberar registros físicos
A
TC
Renombrado de registros
Ejemplo
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11 12 13
A
TC
Reducción detenciones control
Se producen
• Saltos condicionales (MEM) e incondicionales (ID)
• Excepciones (WB)
Estrategias
• Evaluación agresiva de saltos
• Predicción de saltos
A
TC
Evaluación agresiva de saltos
Idea
• Adelantar evaluación salto
• Etapa ID
8 Puede alargar duración del ciclo
8 Nuevas rutas de reenvío
Ciclo de reloj 1 2 3 4 5 6 7 8 9
A
TC
Evaluación agresiva de saltos
PCSrc
IF/ID ID/EX
Add Add
4
Result
Shift
left 2
Shift
left 2
1 RegWrite
Branch
0
M Read #1
Read
1u PC Address
data 1
x
Read #2
2 Register
=
Instruction
file Read
2 Write
register data 2
Instruction
Jump
memory
Write
data
Instruction [20:16]
Instruction [15:11]
A
TC
Evaluación agresiva de saltos
Ruta reenvío
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11
A
TC
Predicción de saltos
Objetivo
Reducir penalización por riesgos de control
• No necesaria participacion del compilador (pero aconsejable)
Ejecución especulativa
Por una de las dos ramas (salto/no salto)
• Acierto ⇒ no hay detención
• Fallo ⇒ deshacer trabajo (registros/memoria)
A
TC
Predicción de saltos
Ejemplo
A
TC
Predicción de saltos
Ejemplo
Siempre no tomado
• Baja efectividad (≈33 %)
• Predicción estática
• Posible: colaborar con el compilador para especular o no
Ejemplo
.....
ori r1, r0, 100 ; r1 = 100
startf:
daddi r1, r1, -1 ; r1 = r1-1
bnez r1, startf ; jump to startf if r1 is not zero
endf:
.....
A
TC
Predicción de saltos
A
TC
Predicción de saltos
Estados
BHT
T T T 0111010... 1100010... 10
00 01 10 11
N N N
1010101... 0111011... 11
N
A
TC
Predicción de saltos
Ejemplo
BHT
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10 11
Dirección Destino Historial
Fallo de BHT: predice no tomado (01)
0 : ori r1, r0, 1 IF ID EX MEM WB
Fallo de BHT
8 : daddi r1, r1, -1 IF IF ID EX MEM WB 4 16 00
4 16 00
12 : j -3 IF ID EX MEM WB Escritura
12 4 11
Acierto de BHT: predice no tomado (00)
16 : ld r3, 80(r8) IF 4 16 00
12 4 11
4 : beq r1, r0, 2 IF ID EX MEM WB
4 16 01
Pred. incorrecta | inc. historial
8 : daddi r1, r1, -1 IF 12 4 11
A
TC
Profundidad segmentación
Típicamente: 10 a 20 etapas
A
TC
Mejoras de rendimiento
CPU segmentada
• Nº instrucciones: fijo por la ISA
• CPI ≥ 1
• T limitado por muro de potencia
A
TC
Tipos de paralelismo
A
TC
Emisión múltiple
Requisitos
Ancho de emisión
Número instrucciones simultáneas por etapa
• Mínimo para todas las etapas
• Algunas etapas mayor ancho
Planificación de instrucciones
• Decidir qué cauce usar (HW y/o SW)
• Resolver dependencias cruzadas
A
TC
Emisión múltiple
Micrarquitecturas
Superescalar
• Planificación dinámica (CPU)
• CPU resuelve riesgos
• Conveniente apoyo del compilador pero no imprescindible
A
TC
Paralelismo a nivel de instrucción (ILP)
ILP
Independencia entre instrucciones
• Riesgos control minimizables (predicción)
• Riesgos RAW inevitables
• Límite máximo paralelismo (muro ILP)
A
TC
Paralelismo a nivel de instrucción (ILP)
1 1 2
RAW en r1
3
2
WAW en r2
4 5
3
WAR en r7
4
RAW en r7
A
TC
CPU superescalar
Lectura (IF)
Buffer de decodificación
Decodificación (ID)
En orden
Buffer de distribución
Distribución (DT)
Estaciones de reserva
Fuera de orden
Carga/almacen. Enteros ×2
Saltos Multiplicación y
2 ciclos 1 ciclo
1 ciclo división enteros
Punto flotante
5 ciclos Ejecución (EX)
5 ciclos
Buffer de reordenación
En orden
Retirada (RT)
A
TC
CPU superescalar
Ciclo de reloj 1 2 3 4 5 6 7 8 9 10
ld r10, 240(r2) IF ID DT EX EX RT
A
TC
Seguridad
Ejecución especulativa
Revertir los efectos de las instrucciones
• Prediccón de saltos (fallo)
• Ejecución OoO (excepción)
Problema
Deja huellas
• Puede ser utilizado para leer cualquier posición de memoria
• Utilizando canales laterales
• Ejemplos: Spectre, Meltdown
A
TC
Construcción de procesador
Resumen
Ritmo exponencial:
• Aumento potencia computacional
• Reducción de costes
A
TC
Mejora tecnología fabricación
Unidad de
Registros
control
ALU E/S
Opción 1: misma funcionalidad,
misma frecuencia y reducción
del tamaño (mejora el consumo)
Registros
(mejora el rendimiento) control
ALU E/S
ALU E/S
Opción 3: incremento de la
funcionalidad y mismo tamaño Unidad de
Registros
(mejora el rendimiento si se control
FPU
aprovecha la nueva funcionalidad)
ALU E/S Caché
L2
Caché L1
GPU A
TC
Power wall
TCPU = Nº instrucciones × CPI × T
103
Frecuencia (MHz)
102
101
100
Solución
Añadir más núcleos
• Cambio de paradigma de programación
• Memory wall
• Brick wall = Power wall + ILP wall + Memory wall
A
TC
Taxonomía de Flynn
A
TC
Paralelismo a nivel de hilo
Hilo
Unidad mínima que un S.O. puede planificar
• un proceso puede tener varios hilos (al menos uno)
Implicaciones
• Paralelismo a nivel de instrucción mejora la ejecución de
cualquier programa
• transparente al programador
• Programador debe implicarse para aprovechar paralelismo a
nivel de hilo (TLP)
• creación de hilos, sincronización, etc.
A
TC
Sistemas multinúcleo
Los computadores actuales son MIMD con memoria compartida
(Shared Memory Multiprocessors)
Memoria Entrada/
principal salida
Desventajas
Utilización baja de los recursos
• uso de CPU ⇒ interfaces de E/S desocupados
• E/S ⇒ CPU desocupada
Ejemplo 3 tareas
τ1 τ2 τ3
Tiempo CPU
E/S
A
TC
S.O. Multitarea
Varias tareas ejecutando simultáneamente
• ejecución paralela real o aparente ⇒ varias CPU
• conmutación entre tareas (cambio de contexto)
• memoria contiene código y datos de varios programas + S.O.
• interfaces compartidos entre las tareas
• S.O. ⇒ gestor de los recursos
4 mayor utilización de los recursos
τ3
E/S
τ2
τ1
Tiempo CPU
A
TC
Definición de SO multitarea
Proporciona interfaz común a las aplicaciones (API)
Aplicación Aplicación
API
S.O.
Software
Hardware
CPU Memoria
Periféricos
A
TC
Multitarea
Definición
Capacidad para ejecutar varias tareas “simultáneamente”
• Problema: los recursos son únicos
Solución
El S.O. gestiona los recursos y los comparte entre tareas
Sistema operativo
¿? ¿? ¿? ¿? ¿?
A
TC
Mecanismos de transferencia
¿Y si no se producen?
A
TC
Soporte MIPS64 a los SO multitarea
Niveles de privilegio
Ejecución de instrucciones privilegiadas
• Usuario: UM=1, ERL=EXL=0
• Supervisor: UM=0, ERL=EXL=1
A
TC
Virtualización
Definición
Ejecutar varios SO sobre máquina física
• Diferentes SO
• Reducción de costes y energía
• Portabilidad ⇒ fácil administración
• Aislamiento ⇒ seguridad
Hipervisor
Programa más privilegiado que el SO
• Gestor de recursos físicos entre máquinas virtuales
A
TC
Hipervisor
SO invitado SO invitado
Windows Linux Win Win
app app
SO Windows SO Linux SO Windows Máquina Máquina
virtual A virtual B
Hardware Hardware
A
TC
Virtualización
Actualmente
CPU proporciona soporte
• No es necesaria la traducción binaria
• Paravirtualización es opcional
A
TC
Virtualización: soporte x86 (VT-x)
Modo VMX
Sistema operativo A Sistema operativo B
(VMX non-root) (VMX non-root)
VM exit VM entry
VM entry VM exit
Nuevas instrucciones
Rendimiento ≈ Máquina física
• VMLAUNCH ⇒ inicia VM
• VMRESUME ⇒ restaura VM
A
TC