PDF transpas

Anuncio
Tema 7:
Procesadores superescalares
Arquitectura de Computadores y
Sistemas Operativos I
4º Curso Plan 96
Escuela Técnica Superior Ingenieros
Telecomunicaciones
DISCA
Tema 7:
Procesadores superescalares
1. Operaciones multiciclo
2. Dependencias
3. Gestión dinámica de instrucciones
3.1 Algoritmo de Tomasulo
4. Aumento de prestaciones
4.1 Procesadores superescalares
4.2 Procesadores VLIW
4.3 Procesadores supersegmentados
2
1. Operaciones multiciclo
• PROBLEMA:
– Instrucciones enteras complejas (mult y div)
– Instrucciones en coma flotante
Necesitan fases de ejecución mucho más largas
¿Cómo segmentar entonces?
– Aumentar periodo de reloj (penaliza otras fases)
– Más HW para mejorar fase EX (no siempre posible)
– Permitir fase de EX con varios ciclos Æ MULTICILO
DISCA–3
• Soluciones
1. Operaciones multiciclo (2)
• Múltiples operadores
– Nuevas instrucciones se ejecutan mejor en HW específico Æ
Poner operadores específicos para las operaciones.
– En la fase de ID se decide que operador se encarga de la ejecución.
– Operadores: convencionales o segmentados.
– Parámetros: tiempo de evaluación (Tev) y tasa de iniciación (IR)
• No todas las instrucciones durarán los mismo
EX
Sumador c.f.
ID
MEM
Multiplicador
Divisor
WB
DISCA–4
IF
1. Operadores multiciclo (3)
• Operadores añadidos al DLX
– Sumador/restador de coma flotante.Tev=4 IR=1por ciclo
– Multiplicador entero/coma flotante.Tev=7 IR=1 por ciclo
– Divisor entero/coma flotante. Tev=24 IR=1 por 24 ciclos
• La fase MEM está vacía en operaciones multiciclo
• Ejemplo:
add R1,R2,R3
addd F0,F2,F4
multd F6,F8,F10
multd F4,F9,F10
Divd F8,F12,F22
IF
ID
EX
ME
WB
IF
ID
A1
A2
A3
A4
ME
WB
IF
ID
M1
M2
M3
M4
M5
M6
M7
ME
WB
IF
ID
M1
M2
M3
M4
M5
M6
M7
ME
WB
IF
ID
DIV
DIV
DIV
DIV
DIV
DIV
DIV
…
1. Op. Multiciclo: DLX
EX MEM
A1 A2 A3 A4
IF
ID
WB
M1 M2 M3 M4 M5 M6 M6
DIV (24 ciclos)
DISCA–6
• Necesidad de nuevos registros entre etapas
• Multiplexor en la entrada de WB
• ¿Aparecen nuevos riesgos?
2. Dependencias: definición
• El problema:
Sin multicilo Æ pocos stall Æ CPI ≈ 1
Con multiciclo Æ muchos stall Æ CPI >> 1
– Posibilidad de solapamiento en las secuencias de
instrucciones.
– Depende de si las instrucciones son independientes.
ILP↑ Æ pocos conflictos Æ pocos stall Æ CPI ↓
DISCA–7
• Debemos conseguir bajar al máximo el CPI
• Paralelismo a nivel de instrucción (ILP)
2. Dependencias: Clasificación
• Dos instrucciones son independientes si pueden
ejecutarse simultáneamente son ningún problema
Ù SE PUEDEN REORDENAR
• Tipos de dependencias:
Estructurales. Depende del HW y del tipo de operación.
De Datos. Dependen de las operaciones y los datos.
De Nombre. Dependen de las operaciones y los datos.
De Control. Dependen de las operaciones de salto.
DISCA–8
–
–
–
–
2.1 Dependencias Estructurales
– Dos operaciones utilizan el mismo elemento de
ejecución (operador).
• No generan riesgos entre operaciones DLX no
multiciclo.
• Sólo aparecen riesgos con operaciones tipo DIV.
• En DLX: insertar ciclos de espera (retrasa todas las
operaciones).
– Escritura simultáneas en banco de registros.
• Ejemplo: MULD y ADDD
• Se puede evitar utilizando banco de registros con
más de un puerto de escritura Æ muy caro
• En DLX: dos bancos de registros (uno para enteros
y otro para coma flotante).
DISCA–9
• Dependencias estructurales.
2.1 Dependencias Estructurales
• Ventajas doble banco de registros:
– No se producen riesgos estructurales entre operaciones.
– Se duplica el número total de registros, sin complicar la
lógica de decodificación, ni aumentar el tiempo de
acceso.
– La operaciones enteras MUL y DIV tienen que tener
sus operandos en banco de reg. de coma flotante
– Son necesarias operaciones para transferir datos entre
registros.
– Se limita el número de registros de cada tipo
DISCA–10
• Inconvenientes
2.2 Dependencias Estructurales
EX MEM
WB Enteros
A1 A2 A3 A4
ID
M1 M2 M3 M4 M5 M6 M6
WB Flotantes
DIV (24 ciclos)
DISCA–11
IF
2.2 Dependencias de Datos
– i produce un resultado usado por j.
– Existe una instrucción k entre i y j y existe dependencia
de datos iÙkÙj. Esta cadena puede ser tan larga como
el propio programa
…
lp: LD F0, 0(R1)
– Ejemplo.
ADDD F4,F0,F2
SD 0(R2),F4
…
DISCA–12
• Dadas dos instrucciones i y j, j lógicamente
después de i, existe una dependencia de datos
entre ellas si:
2.3 Dependencias de Nombre
• Dos instrucciones utilizan el mismo registro o
posición de memoria (elemento). No hay flujo de
datos entre ellas.
• Dos instrucciones i y j, j lógicamente después de i,
pueden tener:
DISCA–13
– Antidependencia. La instrucción j escribe sobre un
elemento que i lee.
– Dependencia de salida. Las dos instrucciones escriben
sobre el mismo elemento.
2.4 Dependencias de Control
• Es la ordenación de las instrucciones
respecto a una instrucción de salto previa.
• TODA instrucción tiene una dependencia de
control con algún salto.
LD F0,0(R1)
ADDD F4,F0,F2
SD 0(R1),F4
LD F0,-8(R1)
ADDD F4,F0,F2
;Dep. Control
…
BEQZ R1,exit
LD F10,0(R1)
ADDD F4,F10,F2
SD 0(R1),F4
…
exit:
DISCA–14
; Dep. Nombre
2.5 Dependencias: Resumen
Dependencia
De datos
Antidependencia
De salida
De Control
Riesgos posibles
RAW
WAR
WAW
De Control
DISCA–15
• Indican la posibilidad de un riesgo.
• ILP ↓ Æ Presencia simultanea de instrucciones
dependientes en unidad segmentada Æ riesgos↑
• Riesgos↑ Æciclos paradas ↑ Æ CPI ↑
2.5 Dependencias: Conclusiones
• Objetivo: aumentar ILP Îreducir CPI
– Bloque básico: secuencia de instrucciones entre dos
instrucciones de salto.
• ¿Hay suficiente ILP en un bloque básico?
– 15% de saltos Æ6 ó 7 instrucciones por bloque
– Instrucciones dentro de un bloque pueden tener
dependencias.
– Loop-level: solapar la ejecución de iteraciones de bucles
– Gestión estática Æ el compilador reordena el código.
– Gestión dinámica Æel HW cambio el orden de ejecución
de las instrucciones.
DISCA–16
• Idea: solapar ejecución bloques básicos.
3. Gestión dinámica de
instrucciones
• El HW aumenta el ILP reordenando la ejecución de las
instrucciones:
– Las instrucciones independientes se ejecutan lo más
simultáneamente posible.
– Las instrucciones dependientes se ejecutan en orden.
ADDD F10,F0,F8
MULTD F12,F8,F14
DISCA–17
• Hasta ahora, si una instrucción se para, también se
paran todas las posteriores, aún cuando esas
instrucciones sean independientes de las que se
encuentran en la unidad.
• Ejemplo.
DIVD F0,F2,F4
3. Gestión dinámica de
instrucciones (2)
• IDEA: el HW detecta cuando una instrucción no
tiene dependencias y la ejecuta aunque haya otra
parada.
• Ventajas
– Compilador más sencillo.
– Soluciona dependencias desconocidas en compilación.
– No hay que optimizar código Æ compatibilidad binaria
– HW más complicado
DISCA–18
• Inconvenientes:
3.1 Algoritmo de Tomasulo
– Procesar las instrucciones en los operadores a la
misma velocidad con la que las suministra la
etapa ID ÆCPI ≈1
– Ejecutar simultáneamente instrucciones
independientes.
– Detectar las instrucciones dependientes y
gestionarlas correctamente.
– Permitir que las instrucciones independientes se
ejecuten antes que instrucciones dependientes
paradas.
DISCA–19
• Objetivos:
3.1 Algoritmo de Tomasulo(2)
Unidad de ejecución entera
EX MEM
ID
Load/Store Flotante
A1 A2 A3 A4
WB Flotantes
Issue
M1 M2 M3 M4 M5 M6 M6
DIV (24 ciclos)
Unidad de ejecución de coma flotante
DISCA–20
IF
WB Enteros
3.1 Algoritmo de Tomasulo(3)
• Aplicar algoritmo sólo a multiciclo
• Unidad load/store coma flotante:
– Datos de mayor tamaño.
– Detección de dependencias Æ gestión dinámica posible
– Fallos de cache no afectan unidad entera y otras
instrucciones
– Si el operador no disponible Æesperar.
– Operando no disponible Æesperar.
– Operador libre, operandos disponibles Æejecutar.
• ¿Dónde esperan las instrucciones?
DISCA–21
• Etapa ISSUE: implementación algoritmo.
3.1 Algoritmo de Tomasulo(3)
• ¿Dónde esperan las
instrucciones?
•
Ejemplo1:
DIVD F0,F2,F4
ADDD F10,F0,F8
MULTD F12,F6,F8
•
Ejemplo2:
DIVD F0,F2,F4
ADDD F10,F0,F8
ADDD F18,F2,F4
MULTD F12,F6,F10
– ¿En estapa Issue?
• NO
• SI, pero…
• Falla cuando otra instrucción
pide mismo operador
– ¿En estructura de datos?
• OK
DISCA–22
– ¿En operador?
3.1 Algoritmo de Tomasulo(4)
Memoria
COLA
DE
INSTRUCCIÓNES
Registros FP
VALOR
TAG-VALOR-DIRECCIÓN
VALOR-DIRECCIÓN
F1
F2
…
ETAPA ISSUE
BUS COMÚN
VALOR
VALOR
S/R
TAG
VALOR
VALOR
M/D
DISCA–23
TAG
3.1 Algoritmo de Tomasulo(5)
– Cola de instrucciones antes de la etapa ISSUE.
– Banco de registros coma flotante
– Operadores y estaciones de reserva. Cada entrada
contiene una instrucción en espera para su ejecución.
(Operadores virtuales)
– Tampones comunicación con memoria.
– Bus común. Se transfiere siempre dato y TAG
asociado. Todos los elementos “ven” el TAG y deciden
si necesitan coger el dato transferido.
DISCA–24
• Todos las transferencias se hacen etiquetando los
datos a transferir con un nombre (TAG).
• Elementos de la ruta de datos:
3.1 Algoritmo de Tomasulo:
Ejemplo ejecución
– VALOR o TAG
• Se espera a tener todos los
operandos y el operador.
• Ejecución.
• Escritura en BUS del TAG
de la instrucción junto con
su resultado.
• Todos los que esperan el
resultado cogen el valor
NOMBRE
VALOR ó TAG
F1
MARCA_1_ Æ 234567
F2
…
BUS COMÚN
TAG
VALOR
VALOR
M/D
MARCA_1_
234567
DISCA–25
• Las instrucciones se
marcan con un TAG.
• Se leen los operandos
Tomasulo: Ejemplo 2
MULTF F1,F2,F3
f2=12.7
f3=33.12 op_1
MULTIP.
DIVF F2,F1,F4
12.7
33.12 op_1
F1 = op_1
op_1
F4=127.12 op_2
F2 = op_2
DIVISOR
MULTIP.
F1 = op_1
ADDF F1,F2,F3
op_2
F3=33.12 op_3
12.7
33.12 op_1
op_1
127.12 op_2
SUMADOR
MULTIP.
DIVISOR
F1 = op_3
DISCA–26
F2 = op_2
4.Aumento prestaciones
• Tiempo de ejecución de un programa:
Te = I × CPI × Tclk
• Segmentación Æ CPI ≈1
• Si quiero reducir Te
DISCA–27
– Reducir el valor de CPI Æ Superescalares
– Reducir instrucciones (I) Æ VLIW
– Reducir Tclk
Æ Supersegmentados
4.1 Superescalares
• Se lanzan m instrucciones en un ciclo de reloj.
– Grado del computador: m
• Implicaciones:
–
–
–
–
Varios accesos simultáneos a memoria (IF,ME)
Decodificación de varias instrucciones
Ejecución de varias instrucciones
Accesos simultáneos al banco de registro.
– Se extrae el máximo ILP de los programas.
– Compatibles a nivel binario con proc. escalares
DISCA–28
• Gestión dinámica de instrucciones.
4.1 Superescalares (2)
• PROBLEMA: HW demasiado caro
• COMPUTADOR SUPERESCALAR NO UNIFORME
– Se imponen limitaciones en el tipo de instrucciones que se
pueden lanzar a la vez.
– Ejemplos: Comp. Superescalar de grado 2:
2 instrucciones enteras
1 entera + 1 coma flotante
1 load/store + 1 aritmética
1 salto + 1 no de salto
– Aparecen riesgos estructurales Æ No siempre es posible
lanzar m instrucciones
– Optimización del código fundamental para obtener las
máximas prestaciones Æ Compatibilidad binaria poco
eficiente
DISCA–29
•
•
•
•
4.2 Procesadores VLIW
• VLIW: Very long Instruction Word.
– Se codifican varias operaciones un una palabra.
– Se reduce el número de instrucciones a ejecutar
– El compilador es el encargado de extraer ILP.
• Las palabras tienen un campo por cada uno de los
tipos de operación que pueden se simultaneas.
Mem1
Mem2
Aritmet_CF1 Aritmet_CF2 Entera/Salto
DISCA–30
– Riesgos de datos y de control resueltos por el
compilador.
– El HW no aplica gestión dinámica.
– Ejemplo de formato de instrucción:
4.2 Procesadores VLIW(2)
• Si el compilador es malo
o el código tienen una ILP
bajo, el tamaño del código
generado es mucho
mayor.
• No hay compatibilidad
binaria.
Mem1
Mem2
LD F0,0(R1)
LD F6,-8(R1)
• Código convencional:
loop:
LD F0,0(R1)
ADDD F4,F0,F2
SD 0(R1),F4
SUB R1,R1,#8
BNEZ R1,loop
Aritmet_CF1
Aritmet_CF2
Entera/Salto
LD F10,-16(R1) LD F14,-24(R1)
LD F18,-32(R1) LD F22,-40(R1) ADDD F4,F0,F2
LD F26,-48(R1)
ADDD F8,F6,F2
ADDD F12,F10,F2 ADDD F16,F14,F2
ADDD F20,F18,F2 ADDD F24,F22,F2
SD 0(R1),F4
SD –8(R1),F8
ADDD F28,F26,F2
SD –16(R1),F12 SD –24(R1),F16
SD –32(R1),F20 SD –40(R1),F24
SUB R1,R1,#56
SD –48(R1),F4
BNEZ R1,loop
4.3 Procesadores
supersegmentados
• Se divide cada etapa en t subetapas. Se disminuye
el tiempo de ciclo manteniendo la cota máxima de
CPI.
• Necesita menos HW que superescalar.
• Menor Tclk Æ mayor sobrecarga potencial de los
registros intermedios y desfase de reloj (clock
skew).
• Se super-segmentan sólo las etapas consideradas
como cuello de botella.
• Versiones superescales-supersegmentadas.
DISCA–32
– t = grado de supersegmentación.
Ejemplos máquinas reales
Tipo
Detección
Comentarios
Reordenación
riesgos
adicionales
HW
Estática
8 etapas
Ejemplos
MIPS R4000
Pentium 4
Dinámica
HW
Estática
Ejecución en Sun UltraSparcII
orden
Sun UltraSparcIII
Dinámica
HW
Dinámica
Fuera de
IBM Power2,
orden en
PowerPC
algunas op.
Superescalar
Dinámica
HW
Dinámica y Reordenación Pentium III y 4
especulación
MIPS R10K
y
(Especulación)
especulación Athlon, Opteron
PowerPC
VLIW
Estática
SW
Estática
Sin riesgos
Trimedia, i860,
entre inst.
Transmeta Crusoe
EPIC
Estática
SW/HW
Estática
Compilador
Itanium
Itanium2
(Excepciones)
(Excepciones) marca riesgos
DISCA–33
Super
segmentado
Superescalar
(estático)
Superescalar
(Dinámico)
Siguiente
Instrucción
Estática
• J.L. Hennesy, D.A. Patterson, “Computer
Architecture: A Quantitave Approach”, 3ª edición,
Morgan Kauffmann Publishers, 2002.
• William Stallings, “Organización y Arquitectura de
Computadores”, 5ª Edición, Prentice-Hall 2000
• D.A. Patterson, J.L. Hennesy, “Estructura y diseño de
computadores: interficie circuitería/programación”,
Ed. Reverté, 2000
• M. Johnson, “Superescalar Microprocessor Design”,
Prentice-Hall, 1999
• http://www.transmeta.com/
DISCA–34
Bibliografía
Descargar