Download Procesador IA-32

Document related concepts
no text concepts found
Transcript
Procesadores de 32 bits
Tecnologías y Arquitectura
Tecnología de Integración
Como se llega a la
nanotecnología
Tecnología de Integración
65 nm
nanotechnology
Imágenes obtenidas con TEM (Transmission
Electron Microscope) de una cepa del virus de la
influenza, y de un transistor construido con la
tecnología de 65 nm utilizada desde este año en el
Procesador Pentium IV.
Los 30 nm representan el ancho del Gate del
transistor NMOS
Autor: Alejandro Furfaro - 2005
3
Tecnología de Integración: EUV MET
EUV MET = Extreme Ultra Violet Micro Exposure Tool
Luz Ultravioleta
Proceso de Litografía
Máscara
Autor: Alejandro Furfaro - 2005
Lentes para
reducir la imagen
Oblea de metal grabado
a ser expuesta
Tamaño=K1*λ*NA
K1: Factor de complejidad
λ: Longitud de onda de la
exposición
NA: Apertura Numérica
4
(tamaño) del lente
Proceso y componentes de la técnica de
Litografía
‰
Litografía (Lithography):
Proceso por el cual se crean patrones específicos
en un chip.
2 Los chips actuales consisten en un sustrato de
silicio encima del cual se crean mas de 20 capas
de materiales de diferentes tipos.
2 Éstos forman los transistores y las pistas que los
interconectan en una configuración particular,
formando un microprocesador, su chipset, la
memoria, o cualquier otro chip.
2
Autor: Alejandro Furfaro - 2005
5
Arquitectura IA-32
Diferentes versiones de
Micro-Arquitecturas
Arquitectura y Micro-Arquitectura
‰
Arquitectura
2
Recursos accesibles para el programador
ƒ
ƒ
ƒ
2
‰
‰
Estos recursos se mantienen y evolucionan a lo largo de los
diferentes modelos de procesadores de esa arquitectura
Microarquitectura
2
‰
Registros
Set de instrucciones
Estructuras de memoria (descriptores de segmento y de página
p. ej.)
Implementación en el silicio de la arquitectura
La arquitectura IA-32 se inicia con el procesador
80386 en 1985, y hasta ahora llega al procesador
Pentium IV Extreme Edition.
Abarca diferentes generaciones de procesadores
desde el punto de vista de la Micro-Arquitectura
Autor: Alejandro Furfaro - 2005
7
Antecedentes: Familia iAPx86 de Intel
‰
Se presenta en 1978 con el
Microprocesador 8086.
2 Arquitectura
de 16 bits.
2 Intel se compromete a mantener
compatibilidad ascendente en los
posteriores procesadores
‰
En 1982 se presenta el 80286.
2 Capacidad
de direccionamiento de
Memoria 16 Mbytes.
2 Mantiene la arquitectura de 16 bits
2 Incorpora capacidades para implementar
Multitarea
Autor: Alejandro Furfaro - 2005
8
Micro-Arquitectura 386
80386DX, 80386SX
Procesador 80386DX (1985)
‰
‰
Primer miembro de la Arquitectura IA-32 de
Intel
Características
Extiende la capacidad de los registros internos a
32 bits, manteniendo compatibilidad con los
registros de 16 bits de los procesadores iAPx86.
2 Buses de Datos y Direcciones de 32 bits.
2
ƒ
ƒ
2
Lee palabras de 32 bits en un solo ciclo de bus
Direcciona hasta 4 Gbytes de memoria física (RAM).
Unidad de Gestión de Memoria Avanzada
ƒ
ƒ
Capacidad de Direccionamiento de 4 Gbytes de memoria
Física y 64 Tbytes de Memoria Virtual.
Gestión de memoria por Segmentación y por Paginación.
Arquitectura Pipeline avanzada
2 3 Modos de trabajo
2
ƒ
Real
Protegido
ƒ
Autor: Alejandro Furfaro - 2005
10
Procesador 80386DX: Diagrama Interno
B.I.U.
M.M.U.
UNIDAD DE
TESTEO Y
PROTECCION
UNIDAD DE
EJECUCION
ARCHIVO DE
REGISTROS
PLA DE
LIMITES Y
ATRIBUTOS
BUS
DE
INTERNO
STATUS
FLAG
ALU
CONTROL
DECODIFICACION Y
SECUENCIAMIENTO
PREDECODIFICADOR
DE INSTRUCCIONES
ROM DE
CONTROL
COLA DE HASTA 3
INSTRUCCIONES
DECODIFICADAS
CONTROL
UNIDAD DE
CONTROL DEL BUS
32
PRIORIZACION DE
REQUERIMIENTOS
CACHE DE PAGINAS
PLA DE CONTROL Y
ATRIBUTOS
DRVER DE
DIRECCIONES
C.P.U.
CONTROL DE
PIPELINE / TAMAÑO
DEL BUS
CONTROL
MULTIPLEXORES /
TRANSCEPTORES
UNIDAD DE
BUSQUEDA
BE0 BE3
A2 - A31
M/IO, D/C,
W/R, LOCK
ADS, NA, BS16
READY
D0 - D31
32
PREBÚSQUEDA /
CHEQUEO DE
LIMITES
STREAM DE
CODIGO DE
32 BITS
HOLD, INTR,NMI,
ERROR, BUSY
RESET,HLDA
CONTROL
32
UNIDAD DE DECODIFICACION
DESPLAZADOR
SUMADOR
MULTIPLICAR
DIVIDIR
SUMADOR
RGISTROS
DESCRIPTORES
32
BUS DE DESPLAZAMIENTO
BUS DE DIRECCION EFECTIVA
32
BUS DE DIRECCIONES LINEALES
BUS DE DIRECCION EFECTIVA
UNIDAD DE
PAGINACION
UNIDAD DE
SEGMENTACIO
N
SUMADOR DE 3
ENTRADAS
BUS DE
DIRECCIONES
FISICAS
BUS DE BUSQUEDA DE CODIGO Y
TABLA DE PAGINAS
COLA DE HASTA 16
BYTES DE CÓDIGO
32
BUS DEDICADO A LA ALU
Autor: Alejandro Furfaro - 2005
11
80386: Manejo de Memoria organizada
en bytes con 32 líneas de address
0
4
8
C
A2-A31
1
5
9
D
A2-A31
2
Dirección
0
1-2
3-6
7-8
9
A-B
C-F
Byte Alineado
Word No Alineada
Doble Word No Alineada
Word No Alineada
Byte No Alineado
Word No Alineado
Doble Word Alineada
A2-A31
E
3
B
F
A2-A31
D0-D7
A2-A31
D8-D15
D16-D23
D24-D31
D0-D31
80386
BE0 BE1 BE2 Be3
CS
CS
CS
CS
Autor: Alejandro Furfaro - 2005
13
Ciclo de instrucciones
Búsq.
Búsq.
Instruc.
Instruc.
‰
‰
‰
Decod
Decod
Busq.
Busq.
Operando
Operando
Ejec
Ejec
Result
Result
Requiere una cantidad de hardware considerable.
En los procesadores sencillos solo una parte del
hardware se activa en un determinado momento: la
que se necesita para resolver la micro operación.
Este método es poco eficiente. En nuestro ejemplo
el procesador podrá ejecutar una instrucción cada 5
ciclos de clock
Autor: Alejandro Furfaro - 2005
18
Pipeline de instrucciones
‰
‰
‰
Técnica que permite
superponer en el tiempo
la ejecución de varias
instrucciones a la vez Busq.
No requiere hardware Inst. 1
adicional. Solo se
necesita lograr que todas
las partes del procesador
trabajen a la vez
Trabaja con el concepto
de una línea de montaje:
2
2
2
Cada operación se
descompone en partes
Se ejecutan en un
mismo momento
diferentes partes de
diferentes operaciones
Cada parte se denomina
etapa (stage)
Busq. Busq. Busq. Busq. Busq. Busq.
Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 Inst. 7
Dec.FI Dec. Dec. Dec. Dec. Dec.
Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6
Busq. Busq. Busq. Busq. Busq.
Op. 1 Op. 2 Op. 3 Op. 4 Op. 5
Ejec. Ejec. Ejec. Ejec.
Inst. 1 Inst. 2 Inst. 3 Inst. 4
Escrib. Escrib. Escrib.
Res. 1 Res. 2 Res. 3
Resultado
Una vez entrado en régimen ejecuta a razón de una
instrucción por ciclo de clock
Autor: Alejandro Furfaro - 2005
19
Memorias – Tiempo de Acceso y
consumo
Línea de Bit
Diagrama de un bit elemental
de DRAM.
Línea de Bit #
Selección
CAS
RAS
Cd
Buffer
Diagrama del biestable de un bit
básico de SRAM.
Línea de Bit
Línea de Bit #
Selección
Bit de datos de salida al bus
Diagrama del biestable de un bit
básico de SRAM con carga activa
para lograr mayor confiabilidad
Autor: Alejandro Furfaro - 2005
20
Estructura de Bus clásica
‰
Bus
Busde
de
Control
Control
Buffer
Buffer
de
de
Datos
Datos
ADDRESS
DATOS
CONTROL
Procesador
Procesador
Bus Loca del
Procesador
Buffer
Buffer
de
de
Address
Address
‰
BUS DEL SISTEMA
‰
Memoria
Memoriadel
del
Sistema
Sistema
Autor: Alejandro Furfaro - 2005
E/S
E/S del
del
Sistema
Sistema
Desde el 80386, los
procesadores
desarrollaban velocidades
de clock muy superiores a
los tiempos de acceso a
memoria.
En este esquema, si el
sistema utiliza memoria
DRAM, el procesador
necesita generar wait
states para esperar que la
memoria esté lista
(“READY”) para el acceso.
¿Que sentido tiene lograr
altos clocks en los
procesadores si no puede
aprovecharla por esperar
a la memoria?
21
El problema
‰
CAS
RAS
RAM estática (SRAM)
2
Cd
2
Buffer
2
2
Bit de datos de salida al bus
RAM dinámica
vs.
RAM Estática
Línea de Bit
‰
Línea de Bit #
RAM dinámica
2
Selección
2
Autor: Alejandro Furfaro - 2005
Consumo mínimo. (El MOSFET
normalmente está al corte)
Tiempo de acceso muy lento.
(Circuito de regeneración de
carga por lectura destructiva.
Costo por bit alto
Si usamos memoria estática, el
costo de la computadora es alto y
su consumo es inviable.
2
Alto consumo relativo (Tres
MOSFET están al corte, pero los
otros tres están saturados,
conduciendo un valor de
corriente considerable.
El tiempo de acceso es muy
rápido.
Si usamos memoria dinámica 22
La solución: Memoria cache
‰
SRAM de muy alta velocidad
El procesador la accede a 0 wait states
2 Asegurar mediante hardware adicional que en esa
memoria están los datos e instrucciones mas
frecuentemente utilizados por el procesador
2
ƒ
ƒ
Principio de vecindad espacial
Principio de vecindad temporal
Suficientemente grande para que el procesador
resuelva la mayor cantidad posible de búsquedas
de código y datos en esta memoria asegurando
una alta performance
2 Suficientemente pequeña para no afectar el
consumo ni el costo del sistema.
2
‰
Combinada con una gran cantidad de
memoria DRAM, para almacenar el resto de
códigos y datos, resuelve el problema
mediante una solución de compromiso típica.
Autor: Alejandro Furfaro - 2005
23
Memoria Cache
Procesador
Procesador
Cantidad de accesos con presencia en Memoria Cache
hitrate =
Cantidad total de accesos a memoria
Bus del Procesador
(Bus local)
Subsistema caché
Controlador
Controladorde
de
Memoria
caché
Memoria caché
Baja capacidad, pero….
Accesible al clock del procesador
Memoria
Memoria
SRAM
SRAM
ultrarrápida
ultrarrápida
(cache)
(cache)
Bus del Sistema
Hardware adicional. Mantiene el cache
con los datos mas frecuentemente
utilizados por el procesador
Control del bus local del
controlador cache
Memoria
DRAM
Interfaz
con el
Arbitración del Bus
Bus Local
Control del bus Local
del Procesador
Interfaz con
el
Procesador
Bus de Address
del procesador
Directorio
de Cache
Control del
Cache
Bus de Snoop
Bus de Control de
la Memoria Cache
Decodificaciones del bus
local del procesador
Configuración
Autor: Alejandro Furfaro - 2005
24
Estructura de Bus del sistema con cache
ADDRESS
DATOS
CONTROL
Procesador
Procesador
CONTROL
Memoria
Memoria
cache
cache
Controlador
Controladorde
de
Memoria
caché
Memoria caché
Buffer
Buffer
de
de
Datos
Datos
Bus Local del
procesador
Buffer
Buffer
de
de
Bus Local del
Address
Address controlador
cache
Bus
Busde
de
Control
Control
Autor: Alejandro Furfaro - 2005
BUS DEL SISTEMA
25
Coherencia de un cache
‰
‰
‰
Una variable que está en el caché también está alojada en
alguna dirección de la DRAM.
Ambos valores deben ser iguales
Cuando el procesador la modifica hay varios modos de actuar
2
2
2
‰
Write through: el procesador escribe en la DRAM y el controlador
cache refresca el cache con el dato actualizado
Write through buffered: el procesador actualiza la SRAM cache, y
el controlador cache luego actualiza la copia en memoria DRAM
mientras el procesador continúa ejecutando instrucciones y usando
datos de la memoria cache
Copy back: Se marcan las líneas de la memoria cache cuando el
procesador escribe en ellas. Luego en el momento de eliminar esa
línea del caché el controlador cache deberá actualizar la copia de
DRAM.
Si el procesador realiza un miss mientras el controlador cache
está accediendo a la DRAM para actualizar el valor, deberá
esperar hasta que controlador cache termine la actualización
para recibir desde este la habilitación de las líneas de control
para acceder a la DRAM.
26
Autor: Alejandro Furfaro - 2005
Estructura de Bus del sistema
Multiprocesador con cache
Memoria
Memoria
cache
cache
Controlador
Controladorde
de
Memoria
caché
Memoria caché
ADDRESS
DATOS
CONTROL
Memoria
Memoria
cache
cache
Buffer
Buffer
de
de
Datos
Datos
SNOOP BUS
CONTROL
CONTROL
Procesador
Procesador
ADDRESS
DATOS
CONTROL
Procesador
Procesador
Buffer
Buffer
de
de
Address
Address
Controlador
Controladorde
de
Memoria
caché
Memoria caché
SNOOP BUS
Buffer
Buffer
de
de
Datos
Datos
Buffer
Buffer
de
de
Address
Address
Bus del cache
Bus
Busde
de
Control
Control
Bus local del procesador
Bus local del controlador cache
BUS DEL SISTEMA
Autor: Alejandro Furfaro - 2005
27
Conexión de Snooping en un Sistema
Multi-Master, basado en 80386
A d d ress
Bu ffe r
80 3 86
80 3 85
A d d ress
SA 2- SA 3 1
S EN
SST B#
Data
SRA M
System Bus
Co n tro l
Data
Bu ffe r
BA D S#
BW /R#
BM /I O#
Otro M as ter d el
Sis tema
Autor: Alejandro Furfaro - 2005
28
Organización del caché de mapeo
directo
Bit de v alidez
del Tag
Tag de
17 bits
Bits de v alidez
de la línea
Set 0
Set 1
Tamaño de
Página = 32
Kbytes
(8 KDwords)
17
Pag.2 -1
Set 1023
Directorio de
Caché Interno
Autor: Alejandro Furfaro - 2005
Caché Externa
Pag.0
4 Gbytes de Memoria
Principal
29
Organización del caché de mapeo
directo
Caché Address (1 de 8 KLíneas)
A 15 A 14
A 31
Tag de 17 bits (1 de las 217 páginas)
A5 A4 A 2
Set Address (1 de 1024 sets) Selector de
Línea
(1 de 8 líneas)
Bit de validez del Tag
0
Nro de Set
Bits de validez de la línea
1
1023
Directorio de
Caché Interno
Autor: Alejandro Furfaro - 2005
30
Organización del caché asociativo de
dos vías
Directorio A
Bit de validez del Tag
Tag de 18 bits
Tag de 18 bits
Set 0
Bits de
validez de
la línea
Directorio B
LRU
bits
Banco A
32 bits
Banco B
32 bits
Bits de
validez de
la línea
Set 1
Tamaño de
Página = 32
Kbytes
(4 KDwords)
18
Pag.2 -1
Set 511
Directorio de
Caché Externa
Caché Interno
Autor: Alejandro Furfaro - 2005
Pag.0
4 Gbytes de Memoria
Principal
31
Organización del caché asociativo de
dos vías
Caché Address (1 de 4 KLíneas)
A 31
A
Tag de 17 bits (1 de las 218 páginas)
A
14 13
A 5A 4 A 2
Set Address (1 de 512 sets)
Selector de
Línea
(1 de 8 líneas)
Bit de validez del Tag
0
Nro de Set
Bits de validez de la línea
1
512
Directorio de
Caché Interno
Autor: Alejandro Furfaro - 2005
32
Manejo del contenido
‰
Algoritmos de reemplazo del contenido
de la memoria cache
2 LRU:
ƒ
Last Recently Used.
Se corresponde con el principio de vecindad
temporal.
2 LFU:
Last Frecuently Used
2 Random
2 FIFO
Autor: Alejandro Furfaro - 2005
33
Ejemplo: Interfaz entre la CPU 386DX y
el controlador cache 82385
12
ó 13
Desde
circuito de
OSC/RESET
32
A la
memoria
CACHE
82385
CALEN
CT/R#
4
2
2
CLK2
CLK2
CS0#-CS3#
ADS#
ADS#
NA#
COEA#-COEB#
CWEA#-CWEB#
386D X
RESET
RESET
NA#
LOCK#
LOCK#
3
4
M/IO#,D/C#,W/R#
BE0#-BE3#
M/IO#,D/C#,W/R#
BE0#-BE3#
30
32
A2-A31
A2-A31
D0-D31
BHOLD
READY#
BHLDA
READYO#
WBS
BRDYEN#
FLUSH
BREADY#
MISS#
READY#
BACP
BLOCK#
BAOE#
BNA#
LDSTB
BADS#
DOE#
BBE0#-BBE3#
BT/R#
READY de
otro 386DX
CAB
OE#
DIR
SBA
CBA
32
4
Autor: Alejandro Furfaro - 2005
A
D
4x646
CP
OE#
BUS LOCAL DEL 386DX
4x374
374
Q
B SAB
BD0-BD31
D
CP
OE#
30
Q
BA2-BA31
3
BM/IO#
BD/C#
BW/R#
BREADY
34
Implementaciones prácticas de memoria
cache (1)
‰
Intel 80486
8 Kbytes de cache L1 on chip
2 Tamaño de línea: 16 bytes
2 Organización asociativa de 4-vías
2
‰
Pentium
dos caches on-chip, uno para datos y otro para
instrucciones.
2 Tamaño de cada cahe: 8 Kbytes
2 Tamaño de línea: 32 bytes
2 Organización asociativa de 4-vías
2
‰
PowerPC 601
cache on-chip de 32 Kbytes
2 Tamaño de línea: 32 bytes
2 Organización asociativa de 8-vías
2
Autor: Alejandro Furfaro - 2005
35
Implementaciones prácticas de memoria
cache (2)
‰
PowerPC 603
2
2
2
2
‰
PowerPC 604
2
2
2
2
‰
Dos caches on-chip, una para datos y otra para
instrucciones
Tamaño de cada cache: 8 Kbytes
Tamaño de línea: 32 bytes
Organización asociativa de 2-vías (organización del cache
más simple que en el 601 pero un procesador mas fuerte)
Dos caches on-chip, una para datos y otra para
instrucciones
Tamaño de cada cache: 16 Kbytes
Tamaño de línea: 32 bytes
Organización asociativa de 4-vías
PowerPC 620
2
2
2
2
Dos caches on-chip, una para datos y otra para
instrucciones
Tamaño de cada cache: 32 Kbytes
Tamaño de línea: 64 bytes
Organización asociativa de 8-vías
Autor: Alejandro Furfaro - 2005
36
Micro-Arquitectura 486
80486DX, 80486SX,
80486DX2, 80486DX4
Procesador 80486: Diagrama Interno
Autor: Alejandro Furfaro - 2005
38
Cache Multi Level (L1, y L2 cache)
CPU
CPU
Memoria
Cache L1
Memoria
Memoria
Cache
Cache L2
L2
Memoria
Memoria
DRAM
DRAM
principal
principal
Interfaz
Interfaz con
con
el
el sistema
sistema
Arquitectura de cache
en dos niveles
Autor: Alejandro Furfaro - 2005
Ejemplo práctico: Procesador 80486DX.
Fue el primero en introducir esta
arquitectura
39
Micro-Arquitectura P5
Pentium, Pentium MMX
Arquitectura Superescalar
‰
‰
‰
‰
Arquitectura de procesamiento en la que se puede
iniciar varias instrucciones en forma simultánea y
ejecutarse en forma independiente
El pipeline permite que varias instrucciones estén
ejecutándose en un mismo momento, pero siempre
que se encuentren cada una en diferentes etapas del
pipeline
Un procesador superescalar extiende este
paralelismo permitiendo que en una etapa del
pipeline se puedan ejecutar varias instrucciones en
forma independiente en un mismo ciclo de clock
Existen dos modelo para lograr este efecto
2
2
Superpipeline
Superescalar
Autor: Alejandro Furfaro - 2005
41
Arquitectura superpipeline de dos vías.
Cada etapa del pipeline
se subdivide en su
etapas de modo de
procesar cada etapa
varias instrucciones
por cada ciclo de clock
Autor: Alejandro Furfaro - 2005
42
Arquitectura superescalar de dos vías.
Dos Pipelines de instrucciones
Al tener dos unidades
de ejecución paralelas,
se duplica la actividad
interna del procesador
alcanzando la
velocidad teórica de
dos instrucciones por
ciclo de clock
Autor: Alejandro Furfaro - 2005
43
Limitaciones al modelo superescalar
‰
Dos o mas instrucciones compiten por acceso en el
mismo momento al mismo recurso:
2
2
2
‰
‰
Registro.
Dirección de Memoria
Unidad funcional del procesador
Las instrucciones de transferencia de flujo
(denominadas branch, y que son generalemnet
saltos, o call), hacen que todas las que vienen a
continuación sean descartadas de las etapas del
pipeline en el que se ejecuta la instrucción de
transferencia de flujo.
Instrucciones con interdependencia de resultados.
Una instrucción en la que uno de los operandos es el
resultado de otra que se está ejecutando al mismo
tiempo, debe ser detenida hasta que se obtenga el
resultado mencionado.
Autor: Alejandro Furfaro - 2005
44
Procesador Pentium: Características
‰
Arquitectura Superescalar
2
Dos pipelines de instrucciones
ƒ
ƒ
U pipeline: Ejecuta instrucciones enteras o de punto
flotante (equivale a la Unidad de ejecución del 486)
V pipeline. Ejecuta solo instrucciones enteras en paralelo
con el U.
Dependencia de Información.
2 Dependencia de Recursos.
2
‰
Bus externo de datos de 64 líneas
2
‰
Branch Prediction
2
‰
Asegura la lectura de dos instrucciones a la vez
ya que ejecuta dos instrucciones a la vez
Branch Target Buffer
Dos Cache L1 internas: una de datos (8
Kbytes) y otra de código (8 Kbytes)
Autor: Alejandro Furfaro - 2005
45
Procesador Pentium: Diagrama Interno
Branch
Prediction
Bus externo de
datos de 64
líneas.
Asegura la lectura
de dos
instrucciones a la
vez para que
pueda ejecutar
dos instrucciones
a la vez
Autor: Alejandro Furfaro - 2005
Dos pipelines
de instrucciones
U pipeline: Ejecuta
instrucciones
V pipeline. Ejecuta
enteras
o de punto
solo instrucciones
flotante
enteras(equivale
en paralelo
a con
la Unidad
el U. de
ejecución del 486)
Dos Cache L1
internas: una de
datos (8 Kbytes)
y otra de código
46
(8 Kbytes)
Branch Prediction
‰
‰
Emplea Predicción estática de salto (es decir,
asume que siempre salta).
Brach Target Buffer (BTB).
El procesador guarda en ese buffer la dirección
destino de una instrucción de branch durante la
etapa de decodificación.
2 En el caso de que la predicción almacenada por la
Unidad de decodificación del pipeline (U o V) haya
sido exacta la instrucción se ejecuta sin atascos ni
flushes del pipeline.
2 Si al momento de la evaluación de la dirección de
salto esta no coincide con la predicción
almacenada en el BTB, debe buscarse el target
correcto y se flushea el contenido de los pipelines.
2
ƒ
ƒ
4 ciclos de clock de demora en V pipeline
3 ciclos de clock de demora en el U Pipeline
Autor: Alejandro Furfaro - 2005
47
Pentium MMX
‰
Modelo de Ejecución SIMD (Single
Instruction Múltiple Data).
A partir del procesador Pentium, Intel introdujo
en la arquitectura un set de recursos para el
tratamiento de señales.
2 Aplicaciones multimedia (audio, gráficos y video),
y de comunicaciones
2 Permite efectuar en una sola instrucción varias
operaciones aritméticas de cálculo
2 La mayor parte del trabajo en los algoritmos de
procesamiento de gráficos, audio, video, o filtros
digitales para telecomunicaciones, consiste en
ejecutar la misma operación sobre una extensa
lista de datos relativamente pequeños (en general
de 8 o 16 bits).
2
Autor: Alejandro Furfaro - 2005
48
Single Instruction Multiple Data SIMD
R1 X1 Op .Básica Y1 ; R2 X2 Op .Básica Y2 ;
R3 X3 Op .Básica Y3 ; R4 X4 Op .Básica Y4 ;
Autor: Alejandro Furfaro - 2005
49
MMX : Tipos de datos
7
0
N
15 7
0
High Low
byte byte
N+1
N
31
16 15
0
High word Low word
N+2
63
Autor: Alejandro Furfaro - 2005
word
Double word
N
32 31
0
High Doubleword
Low Doubleword
N+4
byte
quadword
N
50
MMX : Registros y Tipos de datos
empaquetados
Registros de la FPU
79
63
63
0
0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
Registros MMX
Autor: Alejandro Furfaro - 2005
Bytes enteros empaquetados en 64 bits
8 bytes empaquetados
Wordsenteras empaquetadas en 64 bits
4 words empaquetadas
Doble Wordsenteras empaquetadas en 64 bits
2 doble words empaquetadas
51
Algoritmos DSP
‰
Características
2 (1)
tipos de datos de poco tamaño,
2 (2) patrones de acceso secuencial a
memoria, y
2 (3) operaciones simples y recurrentes
sobre los datos de entrada.
Aritmética Saturada
‰ Aritmética de desborde
‰
Autor: Alejandro Furfaro - 2005
52
Interrupciones en SMP: El APIC
‰
‰
‰
‰
‰
A partir del Procesador Pentium, Intel agregó al chip
del procesador un módulo llamado APIC: Advanced
Programable Interrupt Controller, es decir
Controlador de Interrupciones embebido que
soporta multiprocesamiento
El APIC requiere ser específicamente habilitado.
Su utilidad se nota cuando se diseñan sistemas con
mas de un procesador (Symmetrical Multi Processor
= SMP)
En un sistema Mono Procesador, se puede trabajar
sin habilitarlo, y usar los conocidos 8259
Si se lo habilita el procesador transforma los pines
de interrupción en:
2
2
PICCLK: Terminal de sincronización con el otro procesador
PICD0 y PICD1 bus de comunicación de dos alambres
Autor: Alejandro Furfaro - 2005
53
Interrupciones en SMP: El APIC
‰
El I/O APIC está incluido en el chipset que acompaña a cada
procesador
Si tenemos, por ejemplo, 4
procesadores, los APICs se
conectan a través de un juego de
tres líneas y por cada
requerimiento de interrupción
recibido desde los dispositivos de
E/S conectados, el I/O APIC reparte
las interrupciones entre los
diferentes procesadores de acuerdo
a las condiciones de disponibilidad
obrando como balanceador de
carga
Autor: Alejandro Furfaro - 2005
54
Interrupciones en SMP: El APIC
Autor: Alejandro Furfaro - 2005
55
APIC Interrupt Controller
‰
Fuentes de interrupciones del APIC:
2
2
2
2
2
2
2
Locales: Ingresan por los pines del procesador (con el APIC
habilitado se llaman LINT0 y LINT1).
Externas: El I/O APIC externo genera cuando recibe una
interrupción desde algún dispositivo de E/S en particular.
Inter Processor Interrupts (IPIs): Son enviadas y
recibidas por un procesador para interrumpir a otro o a un
grupo de procesadores conectados al mismo bus de
sistema.
Timer del APIC: Se lo programa para enviar a éste
interrupciones periódicas
Overflow en el timer de Monitoreo de performance.
Sensor térmico. Estos procesadores se auto interrumpen
cuando su temperatura supera un valor tope determinado.
Error interno en el APIC. SI se accede a un registro
inexistente por ejemplo, el APIC se auto genera una
interrupción.
Autor: Alejandro Furfaro - 2005
56
Micro-Arquitectura P6
Pentium Pro, Pentium II,
Pentium II Xeon, Celeron,
Pentium III, Pentium III Xeon
Micro Arquitectura Three core engines
System Bus
L2
L2 Cache
Cache
Bus
Bus Interface
Interface Unit
Unit
L1
L1 ICache
ICache
Fetch
Fetch
Fetch //
Decode
Decode
Unit
Unit
Dispatch
Dispatch
/Execute
/Execute
Unit
Unit
Instruction
Instruction
Pool
Pool
Autor: Alejandro Furfaro - 2005
‰
‰
L1
L1 DCache
DCache
Load
‰
‰
Store
Retire
Retire
Unit
Unit
‰
‰
‰
Emplea Dynamic
Instruction Scheduling
Basado en una ventana
de instrucciones y no en
un pipeline superescalar.
Las instrucciones se
traducen en micro
operaciones básicas
(µops)
Las µops ingresan a un
pool (ventana) en donde
se mantienen para su
ejecución
Los tres cores tienen
plena visibilidad de esa
ventana de ejecución
Se aplica la técnica de
ejecución fuera de orden
y ejecución especulativa.
La unidad de despacho y
ejecución mantiene el
modelo superescalar y lo
combina con un super
pipeline de 20 etapas
58
Funcionamiento del Core
‰
Se tiene un código de este tipo
r1<r2 <r5 <r6 <-
‰
‰
‰
‰
‰
‰
‰
‰
mem [r0] /* instrucción 1*/
r1 + r2
/* instrucción 2*/
r5 + r4
/* instrucción 3*/
r6 - r3
/* instrucción 4*/
Instrucción 1 genera un cache miss
La instrucción 2 depende de r1. No es ejecutable hasta no completar
r1
En este punto un Pentium se detuvo hasta que se recupere el
operando apuntado por [r0] desde la memoria del sistema
Al extender la ventana de ejecución el procesador tiene visibilidad de
mayor cantidad de instrucciones.
El P6 es capaz de ejecutar fuera de orden las instrucciones 3 y 4 que
no son dependientes de la 1, mientras la unidad de interfaz con el bus
consigue el operando [r0].
La unidad de retiro no enviará al exterior los resultados fuera de
orden, sino que lo hará de acuerdo a la secuencia establecida en el
programa.
La Unidad de Retiro puede enviar 3 resultados por ciclo de clock al
exterior
De este modo agrandando tolo lo posible la ventana de ejecución el
procesador puede ejecutar fuera de orden y en forma especulativa
mayor cantidad de instrucciones ante demoras en el acceso a los
datos. Las primeras versiones eran capaces de “ver” 20 instrucciones.
Autor: Alejandro Furfaro - 2005
59
Three core engines en detalle
System Bus
EU: Execution Unit
IEU = Integer EU
FEU = Floating Point EU
JEU = Jump EU
AGU = Address Generation Unit
L2
L2 Cache
Cache
Memory
Memory
Reorder
Reorder
Buffer
Buffer
Bus
Bus Interface
Interface Unit
Unit
ICache
L1
L1 DCache
DCache
Next_IP
Reservation
Reservation
Station
Station
Branch
Branch
Table
Table
Buffer
Buffer
Simple
Simple
Instruction
Instruction
Decoder
Decoder
Simple
Simple
Instruction
Instruction
Decoder
Decoder
Microcode
Microcode
Instruction
Instruction
Sequencer
Sequencer
Complex
Complex
Instruction
Instruction
Decoder
Decoder
Register
Register
Alias Table
Alias Table
Port
Port00
Port
Port11
WIRE
WIRE
SIMD0
SIMD0
FEU
FEU
IEU
IEU
Memory
Memory
Interface
Interface
Unit
Unit
SIMD1
SIMD1
JEU
JEU
IEU
IEU
Store
Port
Port22
AGU
AGU
Port
Port3,4
3,4
AGU
AGU
Retirement
Retirement
Register
Register
File
File
Load
Re Order Buffer (Instruction Pool)
µop1
µop2
µop3
µop4
µop5
Autor: Alejandro Furfaro - 2005
µop6
µop7
µop8
µop9 µop10 µop11 µop12 µop13 µop14 µop15 µop16
60
Three core engines en detalle (cont.)
‰
‰
‰
‰
Next_IP: Índice al cache de Instrucciones basado
en el contenido que le provee el BTB
ICache, envía a la Unidad de Decodificación la línea
apuntada por Next_IP y la siguiente, (total = 16
bytes alineados)
La Unidad de Prebúsqueda rota los 16 bytes para
justificarlos a los decodificadores y les marca el
comienzo y fin de cada instrucción
Los decodificadores de Instrucción toman las
instrucciones IA-32 contenidas en los 16 bytes y las
convierten en µops (código de operación
decodificado listo para ejecutar, dos operandos
fuentes, un operando destino, y algunos bits de
estado)
2
Instrucciones simples
ƒ
ƒ
2
La mayoría se traduce en 1 µop
El resto entre 2 y 4 µops
Instrucciones complejas: Son tomadas por el Microcode
Instruction Sequencer que generará la secuencia
necesaria de µops
Autor: Alejandro Furfaro - 2005
61
Three core engines en detalle (cont.)
‰
‰
‰
Las µops se encolan en el Register Alias Table en
donde se convierten las referencias a los registros
IA-32 a referencias a registros internos de la Micro
Arquitectura P6.
Luego las µops se inyectan en el pool (o Re Order
Buffer)
La Unidad de Despacho y Ejecución las toma de este
buffer mediante el bloque denominado Reservation
Station y las deriva a sus diferentes puertos de
ejecución.
2
El criterio de selección no es el orden que ocupan en el flujo
de programa sino el estado que indican los bits
correspondientes de cada µop.
ƒ
ƒ
ƒ
Si estos bits indican que los operandos fuente de la instrucción
están listos, se chequea si el recurso necesario para ejecutar
esta µop está disponible.
Si lo está se ejecuta
Un procesador P6 puede despachar 5 µops por los diferentes
ports de ejecución. Sin embargo se despachan 3 a lo sumo.
Autor: Alejandro Furfaro - 2005
62
Three core engines en detalle (cont.)
‰
‰
Las µops de discontinuidad de flujo (branch) se
marcan en el pipeline con la dirección de caída y la
dirección que se le predice.
Cuando se ejecuta la instrucción en la JEU
2
2
‰
Si la dirección resultante coincide con la predicción
almacenada en el BTB el resultado del procesamiento
especulativo realizado en el Pool de Instrucciones se
considera válido.
Si el resultado no coincide entonces la JEU cambia el estado
de todas las operaciones de la rama que se ejecutó
especulativamente considerándola válida, y se las remueve
del Pool Instrucciones.
Unidad de Retiro
2
2
Chequea el estado de las µops en el pool (o Re Order
Buffer). En busca de ejecutadas y sin ninguna µop
precedente aún sin retirar del Pool de Instrucciones.
Una vez retirada del Pool, escribe el destino IA-32 de la
instrucción original con el resultado.
Autor: Alejandro Furfaro - 2005
63
Pentium II y III: Ports de Ejecución
Autor: Alejandro Furfaro - 2005
64
Extensiones SSE
0
127
XMM0
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
‰
‰
‰
‰
‰
Agrega tipos de datos de 128-bit empaquetando dos números de
punto flotante doble precisión
Agrega a SIMD tipos de datos enteros de 128-bit para operaciones
enteras de 16-byte, 8-word, 4-doubleword, o 2-quadword.
Agrega a SIMD soporte para aritmética sobre operandos enteros de
64-bit.
Agrega instrucciones de conversión entre tipos de datos nuevos y
existentes.
Extiende el soporte para cacheabilidad y operaciones de
ordenamiento de memoria.
Autor: Alejandro Furfaro - 2005
65
Extensiones SSE Modelo completo de
programación
127
Espacio de
Direccionamiento
De Memoria
232 -1
0
XMM0
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
Registros introducidos por
las Extensiones SSE
31
MXCSR
63
0
0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
Registros introducidos por
la Tecnología MMX
31
15
CS
SS
DS
ES
FS
GS
0
0
EAX
EBX
ECX
EDX
ESI
EDI
EBP
ESP
0
31
EFlags
Registros originales de la IA-32
Modelo de programador de Aplicaciones
Autor: Alejandro Furfaro - 2005
31
EIP
0
0
66
Micro Arquitectura NetBurst
Pentium IV, Xeon,
Pentium IV HT, Pentium M
Micro Arquitectura NetBurst: Diagrama
System Bus
Level
Level 11 Data
Data Cache
Cache
Bus
Bus Unit
Unit
Level
Level 22 Cache
Cache
Memory Subsystem
Fetch/Decode
Fetch/Decode
Trace
Trace Cache
Cache
Microcode
Microcode ROM
ROM
BTB/Branch
BTB/Branch Prediction
Prediction
Front End
Autor: Alejandro Furfaro - 2005
Excecution
Excecution Units
Units
Integer and FP Excecution Units
Out-of-Order
Out-of-Order
excecution
excecution
logic
logic
Retirement
Retirement
Branch History Update
OutOut-OfOf-Order Engine
68
Micro Arquitectura NetBurst: Bloques
‰
Front end:
2
Fetch/decode unit
Execution trace cache. Tamaño 12K µops.
2 Funciones básicas:
2
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Prebúsqueda de instrucciones para ser ejecutadas
Búsqueda de instrucciones que aún no han sido pre
buscadas
Decodificación de las instrucciones en micro-operaciones
Generación de micro código para instrucciones complejas
Envío al Trace caché de ejecución de las instrucciones
decodificadas (µops).
Predicción de saltos mediante algoritmos mas avanzados
Autor: Alejandro Furfaro - 2005
69
Pentium IV: Out of Order Core
Autor: Alejandro Furfaro - 2005
70
Pentium IV: Diagrama detallado
Front End BTB
(4K entries)
Trace Cache BTB
(256 entries)
Instruction/TLB
Prefetcher
(256 bits)
Instruction Decoder
Microcode ROM
Trace Cache
12K μops
μops Queue
Quad
Pumped
3.2 Gbyte/seg
Bus
Interface
Unit
Allocator / Register Renamer
Integer / Floating Point μop Queue
Memory μop Queue
Fast
Memory Scheduler
Slow /General FP Scheduler
Integer Register File / Bypass Network
AGU
Load
Address
AGU
Store
Address
2xALU
Simple
Instruc
2xALU
Simple
Instruc
Complex
Instruc
FP
MMX
SSE
SSE2
L1 Data Cache (8Kbyte 4-way)
Autor: Alejandro Furfaro - 2005
Simple FP
FP Register / Bypass
Slow ALU
System Bus
Cache L2
256 Kbytes
8 vías
FP
Move
(256 bits)
L2 Cache
Control Unit
48 Gbytes/seg
71
Pentium IV: Extensiones SIMD2
‰
Seis tipos de datos:
2
2
128-bit packed double-precision floating-point (dos IEEE
Standard 754 doble precisión
Valores de punto flotante empaquetados en una doble
quadword)
ƒ
ƒ
ƒ
ƒ
‰
‰
Instrucciones de soporte para estos tipos de datos
Operaciones:
2
2
2
‰
Bytes enteros empaquetados en 128 bits
Words enteras empaquetadas en 128 bits
doubleword enteras empaquetadas en 128 bits
quadword enteras empaquetadas en 128-bits
instrucciones sobre punto flotante doble precisión
empaquetados y escalares
Instrucciones enteras SIMD adicionales de 64 y 128 bits
Versiones de 128 bits de las instrucciones SIMD enteras
introducidas con la tecnología MMX
Extensiones SSE
2
Instrucciones adicionales para control de cacheabilidad y
ordenamiento de instruciones
Autor: Alejandro Furfaro - 2005
72
SSE, SSE2, SSE3: Tipos de datos
7
0
byte
N
15 7
0
High Low
byte byte
N+1
N
31
16 15
High word
63
32 31
High Doubleword
N
Low Doubleword
64 63
N+8
quadword
N
0
Low Quadword
High Quadword
Autor: Alejandro Furfaro - 2005
Double word
0
N+4
127
0
Low word
N+2
word
N
double
quadword
73
El APIC en la Micro Arquitectura
NetBurst
‰
‰
Hasta el Pentium III inclusive, los APICs de los diferentes
procesadores se interconectaban por un juego de tres
líneas: PICCLK, PICD0 y PICD1
En el caso del P IV se tiene que los APICs se circulan IPIs y
mensajes directamente a través del Bus del Sistema
Autor: Alejandro Furfaro - 2005
74
Tecnología Hyperthreading
Autor: Alejandro Furfaro - 2005
75
Tecnología Hyperthreading
Front End NetBurst
(a) Búsqueda con L1 ICache Hit
(b) Búsqueda con L1 ICache Miss
Autor: Alejandro Furfaro - 2005
76
Tecnología Hyperthreading
Motor de ejecución Fuera de Orden con Hyperthreading
Autor: Alejandro Furfaro - 2005
77
Tecnología Hyperthreading
Modelo de procesamiento de dos
threads
(a) Un procesador Hyperthreading
(b) Un procesador Dual Core
Autor: Alejandro Furfaro - 2005
78
Extensiones SS3
‰
13 instrucciones.
2 Diez
instrucciones nuevas de soporte SIMD
2 Una para acelerar el estilo de
programación de punto flotante x87 en
conversiones a enteros
2 MONITOR y MWAIT aceleran la
sincronización de threads.
Autor: Alejandro Furfaro - 2005
79