Upload
dolien
View
216
Download
0
Embed Size (px)
Citation preview
Autor: Alejandro Furfaro - 2008 3
Tecnología de Integración
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 reemplazada en el 2007 por la de 45 nm, con la que se construyen los procesadores Core2Duo y Xeon Quad Core de Intel.Los 30 nm representan el ancho del Gate del transistor NMOS
65 nm nanotechnology
Autor: Alejandro Furfaro - 2008 4
Tecnología de Integración: EUV MET
Luz Ultravioleta
Máscara
Lentes para reducir la imagen
Oblea de metal grabado a ser expuesta
EUV MET = Extreme Ultra Violet Micro Exposure Tool
Tamaño=K1*λ*NA
K1: Factor de complejidadλ : Longitud de onda de la exposiciónNA: Apertura Numérica (tamaño) del lente
Proc
eso
de L
itogr
afía
Autor: Alejandro Furfaro - 2008 5
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.
Los chips actuales consisten en un sustrato de silicio encima del cual se crean mas de 20 capas de materiales de diferentes tipos.
É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.
Autor: Alejandro Furfaro - 2008 10
Arquitectura y Micro-Arquitectura
Arquitectura Recursos accesibles para el programador
Registros Set de instrucciones Estructuras de memoria (descriptores de segmento y de página p. ej.)
Estos recursos se mantienen y evolucionan a lo largo de los diferentes modelos de procesadores de esa arquitectura
Micro Arquitectura Implementación en el silicio de la arquitectura.
Es lo que hay detrás del set de registros y del modelo de programación
Puede ser muy simple o sumamente robusta y poderosa.
La arquitectura IA-32 se inicia con el procesador 80386 en 1985, y llega hasta el procesador Intel Core2Duo actualmente.
Esto se traduce en seis diferentes generaciones de Micro-Arquitectura para mas de 15 modelos de procesadores.
Autor: Alejandro Furfaro - 2008 11
Enfoques
CISC (Complex Instruction Set Computer)Instrucciones que realizan tareas complejas
RISC (Reduced Instruction Set Computer)Instrucciones que realizan operaciones sencillas
Autor: Alejandro Furfaro - 2008 12
Ejemplo CISC (Intel)
0xA40xF3
OpCodePrefijo
Instrucción: REP MOVS
Copia CX bytes de DS:SI, a ES:DI.
MOVS: Copia el dato en DS:SI, a ES:DI.Dependiendo de un flag, SI y DI son incrementados (+1) o decrementados (-1)REP: Prefijo. Decrementa CX y hace que se repita la operación hasta que CX llegue a 0
Autor: Alejandro Furfaro - 2008 13
Ejemplo RISC La misma instrucción implementada en una MIPS:
Asumamos que en $s3 esta el fuente, $s4 el destino y $s5 es el contador
bucle:lb $t0,0,($s3) ; t0 = mem[s3]sb $t0,0, $s4 ; mem[s4] = t0add $s3,$s3,1add $s4,$s4,1sub $s5,$s5,1be $s5,0,finj buclefin:
Autor: Alejandro Furfaro - 2008 14
Ciclo de instrucciones: Etapas
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
Búsq.Instruc. Decod Busq.
Operando Ejec Result
clock
Autor: Alejandro Furfaro - 2008 15
ResultadoUna vez en régimen ejecuta a razón de una instrucción por ciclo de clock
B u s q .I n s t . 1
D e c . F II n s t . 1
E j e c .I n s t . 1
B u s q .O p . 1
B u s q .I n s t . 2
D e c .I n s t . 2
E j e c .I n s t . 2
B u s q .O p . 2
B u s q .I n s t . 3
D e c .I n s t . 3
E j e c .I n s t . 3
B u s q .O p . 3
B u s q .I n s t . 4
D e c .I n s t . 4
E j e c .I n s t . 4
B u s q .O p . 4
B u s q .I n s t . 5
D e c .I n s t . 5
B u s q .O p . 5
B u s q .I n s t . 6
D e c .I n s t . 6
B u s q .I n s t . 7
E s c r i b .R e s . 1
E s c r i b .R e s . 2
E s c r i b .R e s . 3
Pipeline de instrucciones
Técnica que permite superponer en el tiempo la ejecución de varias instrucciones a la vez
No requiere hardware 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: Cada operación se
descompone en partes Se ejecutan en un mismo
momento diferentes partes de diferentes operaciones
Cada parte se denomina etapa (stage)
Autor: Alejandro Furfaro - 2008 16
Etapas de un pipeline
Podemos desagregar mas las micro operaciones y generar pipelines de mas etapas. Ej:
Autor: Alejandro Furfaro - 2008 18
Profundidad del pipeline. Casos concretosμArchitecture Pipeline stagesARM7TDMI(-S) 3ARM7EJ-S 5ARM810 5ARM9TDMI 5ARM1020E 6XScale PXA210/PXA250 7ARM1136J(F)-S 8ARM1156T2(F)-S 9ARM Cortex-A5 8ARM Cortex-A8 13AVR32 AP7 7AVR32 UC3 3DLX 5Intel P5 (Pentium) 5Intel P6 (Pentium Pro) 14Intel P6 (Pentium III) 10
μArchitecture Pipeline stagesIntel NetBurst (Willamette) 20Intel NetBurst (Northwood) 20Intel NetBurst (Prescott) 31Intel NetBurst (Cedar Mill) 31Intel Core 14Intel Atom 16LatticeMico32 6R4000 8StrongARM SA-110 5SuperH SH2 5SuperH SH2A 5UltraSPARC 9UltraSPARC T1 6UltraSPARC T2 8WinChip 4LC2200 32 bit 5
Autor: Alejandro Furfaro - 2008 21
Branchs versus eficiencia del pipeline
Para tratar de minimizar este impacto se implementan unidades de predicción de saltos.
CriteriosAsumir que nunca se salta
Asumir que siempre se salta
Predecir por OpCOde de las instrucciones previas.
Branch Target Buffer
Utilizar una memoria ultrarrápida con una tabla de historia de saltos.
Autor: Alejandro Furfaro - 2008 22
Predicción de saltos
Ej:JECXZ continuar
otro:
lodsd
; aqui hacemos algo con eax
stosb
loop otro
continuar:
Asumir que nunca se salta
Asumir que siempre se salta
Autor: Alejandro Furfaro - 2008 23
Branch Target Buffer Con un contador de 2 bits se implementa una máquina de
estados. Cada vez que salta incrementa. Cada vez que no salta
decrementa. En los extremos de cuenta, satura. Con los dos valores mas bajos del contador predice “No
Saltar” Con los dos mas altos predice “Saltar”
Autor: Alejandro Furfaro - 2008 24
Branch Target Buffer Algoritmo que salta una
vez cada dos. La máquina arranca
“Strongly Not Taken”
Pasa de “Strongly Not Taken” a Weakly Not Taken”, y vuelve a “Srongly Not Taken”.
No acierta nunca!! Con un buffer puede
corregir y la máquina de estados avanza entre los estados 2 y 3 y predice correctamente
Autor: Alejandro Furfaro - 2008 25
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 modelos para lograr este efecto Super pipeline Superescalar
Autor: Alejandro Furfaro - 2008 26
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
Arquitectura superescalar de dos vías. Dos Pipelines de instrucciones
Autor: Alejandro Furfaro - 2008 27
Limitaciones al modelo superescalar Dos o mas instrucciones compiten por acceso en el
mismo momento al mismo recurso: Registro. Dirección de Memoria Unidad funcional del procesador
Las instrucciones de transferencia de flujo (denominadas branch, y que son generalmente 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 - 2008 28
Cada etapa del pipeline se subdivide en su etapas de modo de procesar cada etapa varias instrucciones por cada ciclo de clock
Arquitectura super pipeline de dos vías.
Autor: Alejandro Furfaro - 2008 34
Memorias: Evolución
Pioneros:
Maurcice Wilkes con la primer memoria de tanque de mercurio para la computadora EDSAC. 2 bytes: 1947.
Visionarios…."640K debe ser suficiente para cualquiera.”Bill Gates, 1981
Autor: Alejandro Furfaro - 2008 35
Tecnología de memorias: RAM Dinámica
Almacena la información como una carga en una capacidad espuria de un transistor.
Una celda (un bit) se implementa con un solo transistor ⇒ máxima capacidad de almacenamiento por chip.
Ese transistor consume mínima energía ⇒ Muy bajo consumo. Al leer el bit, se descarga la capacidad ⇒ necesita regenerar la carga
⇒ aumenta entonces el tiempo de acceso de la celda.
CASRAS
Cd
Bit de datos de salida al bus
Buffer
Diagrama de un bit elemental de DRAM (Dynamic RAM).
Transistor
Autor: Alejandro Furfaro - 2008 36
Tecnología de memorias: RAM Estática
Almacena la información en un biestable. Una celda (un bit) se compone de seis transistores ⇒ menor
capacidad de almacenamiento por chip. 3 transistores consumen energía máxima en forma permanente y los
otros 3 consumen mínima energía ⇒ Mayor consumo La lectura es directa y no destructiva ⇒ tiempo de acceso muy bajo
Diagrama del biestable de un bit básico de SRAM (Static RAM).
Línea de BitLínea de Bit
Selección
61
2
3 4
5
Autor: Alejandro Furfaro - 2008 37
Estructura de Bus clásica
Desde fines de los años 80, los procesadores desarrollaban velocidades muy superiores a los tiempos de acceso a memoria.
En este escenario, el procesador necesita generar wait states para esperar que la memoria esté lista (“READY”) para el acceso.
¿Tiene sentido lograr altos clocks en los procesadores si no puede aprovecharlos por tener que esperar (wait) a la memoria?
Buffer deAddress
Buffer deDatos
Bus deControl
BUS DEL SISTEMA
Bus Local delBus Local delProcesadorProcesador
Memoria del Sistema
Procesador
E/S del Sistema
DA
TOS
AD
DR
ESS
CO
NTR
OL
Autor: Alejandro Furfaro - 2008 38
1100
1000
900
800
700
600
500
400
300
200
100
89 90 91 92 93 94 95 96 97 98 99 00
486 DX4100 MHz.
386 DX33 MHz
Pentium II400 MHz.
Pentium III1GHz
Memorias
Crecimiento de la velocidad de clock de las CPU versus memoria
Autor: Alejandro Furfaro - 2008 39
El problema
RAM dinámica (DRAM) Consumo mínimo. Capacidad de almacenamiento comparativamente alta. Costo por bit bajo. Tiempo de acceso alto (lento), debido al circuito de regeneración
de carga. Si construimos el banco de memoria utilizando RAM dinámica, no
aprovechamos la velocidad del procesador.
RAM estática (SRAM) Alto consumo relativo. Capacidad de almacenamiento comparativamente baja. Costo por bit alto. Tiempo de acceso bajo (es mas rápida). Si construimos el banco de memoria utilizando RAM estática, el
costo y el consumo de la computadora son altos.
Autor: Alejandro Furfaro - 2008 40
La solución: Memoria cache
Se trata de un banco de SRAM de muy alta velocidad, que contiene una copia de los datos e instrucciones que están en memoria principal
El arte consiste en que esta copia esté disponible justo cuando el procesador la necesita permitiéndole acceder a esos ítems sin recurrir a wait states.
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.
Requiere de hardware adicional que asegure que este pequeño banco de memoria cache contenga los datos e instrucciones mas frecuentemente utilizados por el procesador.
Autor: Alejandro Furfaro - 2008 41
Referencias
El tamaño del banco de memoria cache debe ser: 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
Suficientemente pequeña para no afectar el consumo ni el costo del sistema.
Se dice que se logra un hit cuando se accede a un ítem (dato o código) y éste se encuentra en la memoria cache.
En caso contrario, se dice que el resultado del acceso es un miss.
Se espera un hit rate lo mas alto posible
Cantidad total de accesos a memoriaCantidad de accesos con presencia en Memoria Cachehit rate =
Autor: Alejandro Furfaro - 2008 42
Operación de Lectura de memoria
Inicio
Busca ítem en cache
CPU envía señal de lectura
Busca ítem en cache y envía a la
CPU
Busca ítem en memoria del
sistema
Escribe ítem en el cache
Actualiza directorio cache
Envía ítem a la CPU
Fin
MissHit!!
Autor: Alejandro Furfaro - 2008 43
Estructura de Bus del sistema con cache
Memoria cache
Controlador de Memoria caché
Buffer deAddress
Buffer deDatos
BUS DEL SISTEMA
Bus Local del Bus Local del procesadorprocesador
Procesador
Bus deControl
CO
NTR
OL
DA
TOS
AD
DR
ESS
CONTROL
Bus Local del Bus Local del controlador controlador
cachecache
Autor: Alejandro Furfaro - 2008 44
Como trabaja el controlador cache
El controlador cache trabaja mediante dos principios que surgen de analizar el comportamiento de los algoritmos de software que se emplean habitualmente. Principio de vecindad temporalPrincipio de vecindad temporal: Si un ítem es referenciado, la
probabilidad de ser referenciado en el futuro inmediato es alta.
Principio de vecindad espacialPrincipio de vecindad espacial: Si un ítem es referenciado, es altamente probable que sean referenciados sus ítems vecinos.
Ejemplo: Algoritmo de convoluciónfor (i = 0 ; i < 256 ; i++ ){suma = 0.0f;for (j = 0 ; (j <= i && j < 256) ; j++)
suma += v0[i-j] * v1[j];fAux[i] = suma;
}
i, j, suma, se utilizan a menudo. Por lo tanto si se mantienen en el cache, el tiempo de acceso a estas variables por parte del procesador es óptimo.
Autor: Alejandro Furfaro - 2008 45
Estructura de memoria cache
Tag Línea
Línea
0123456789
Dirección
Ancho de palabra
Línea: Elemento mínimo de palabra de datos dentro del cache.Corresponde a un múltiplo del tamaño de la palabra de datos de memoria.Razón: Cuando se direcciona un ítem en memoria generalmente se requerirá de los ítem que lo rodean (Principio de vecindad espacial)
Autor: Alejandro Furfaro - 2008 46
Memoria Cache
Directorio de Cache
Interfaz con el
Bus Local
Control del Cache
Interfaz con el Procesador
Bus de Bus de AddressAddressdel procesador del procesador
Control del bus local del Control del bus local del controlador controlador cachecache
Bus de Bus de SnoopSnoop Arbitración del BusArbitración del Bus
Control del bus Local Control del bus Local del Procesadordel Procesador
Bus de Control de Bus de Control de la Memoria la Memoria CacheCache
Decodificaciones del bus Decodificaciones del bus local dellocal del procesador procesador
Configuración
Hardware adicional. Mantiene el cache con los datos mas frecuentemente utilizados por el procesador
Procesador
Subsistema caché Subsistema caché Memoria
SRAM ultrarrápida
(cache)
Controlador de Memoria caché
Memoria DRAM
Bus del Procesador(Bus local)
Bus del Sistema
Baja capacidad, pero ¡¡accesible a la velocidad del procesador!!
Autor: Alejandro Furfaro - 2008 47
Organización del caché: Mapeo Directo
Directorio de Caché Interno4 Gbytes de Memoria Principal
Tag
17 bits
Bit de validez del Tag
Bits de validez de las líneas
32 Kbytes(igual tamaño
Que el del cache)
Set 0
Set 1
Set 1023
Memoria CachéPag.0
Pag.217 -1
Línea
Línea
1 Línea = 4 bytes
Autor: Alejandro Furfaro - 2008 48
Selector deLínea
(1 de 8 líneas)
Bit de validez del Tag
Bits de validez de la línea0
1
1023
Directorio deCaché Interno
Nro de Set
A 15 A 14 A5 A4A 31 A 2
Tag de 17 bits (1 de las 217 páginas) Set Address (1 de 1024 sets)
Caché Address (1 de 8 KLíneas)
Organización del caché de mapeo directo
Autor: Alejandro Furfaro - 2008 49
Organización del caché: Asociativo de dos vías
Directorio de Caché Interno4 Gbytes de Memoria Principal
Tag
18 bits
Bit de validez del Tag
Bits de validez de las líneas 1
6 K
byte
s(ig
ual ta
mañ
o Q
ue e
l de
cad
a b
an
co d
el ca
che)
Set 0
Set 1
Set 511
Memoria CachéPag.0
Pag.218 -1
Línea
Línea
1 Línea = 4 bytes
Línea
Bits LRU
Bits LRU
Bits LRU
18 bits
18 bits 18 bits
18 bits
18 bits
Autor: Alejandro Furfaro - 2008 50
A13A14 A5 A4A31 A2
Tag de 18 bits (1 de las 218 páginas) Set Address (1 de 512 sets) Selector deLínea
(1 de 8 líneas)
Caché Address (1 de 4 KLíneas)
Bit de validez del Tag
Bits de validez de la línea0
1
512
Directorio deCaché Interno
Nro de Set
Organización del caché asociativo de dos vías
Autor: Alejandro Furfaro - 2008 51
Manejo del contenido
Algoritmos de reemplazo del contenido de la memoria cacheLRU: Least Recently Used.
Se corresponde con el principio de vecindad temporal.
LFU: Last Frecuently UsedRandomFIFO
Autor: Alejandro Furfaro - 2008 52
B u s q .I n s t . 1
D e c . F II n s t . 1
E j e c .I n s t . 1
B u s q .O p . 1
B u s q .I n s t . 2
D e c .I n s t . 2
E j e c .I n s t . 2
B u s q .O p . 2
B u s q .I n s t . 3
D e c .I n s t . 3
E j e c .I n s t . 3
B u s q .O p . 3
B u s q .I n s t . 4
D e c .I n s t . 4
E j e c .I n s t . 4
B u s q .O p . 4
B u s q .I n s t . 5
D e c .I n s t . 5
B u s q .O p . 5
B u s q .I n s t . 6
D e c .I n s t . 6
B u s q .I n s t . 7
E s c r i b .R e s . 1
E s c r i b .R e s . 2
E s c r i b .R e s . 3
Cache miss: Impacto en el Pipeline de instrucciones
Pipeline: permite superponer en el tiempo la ejecución de varias instrucciones a la vez.
No requiere hardware 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: Cada operación se descompone en
partes Se ejecutan en un mismo momento
diferentes partes de diferentes operaciones
Cada parte se denomina etapa (stage)
ResultadoUna vez en régimen ejecuta a razón de una instrucción por ciclo de clock
Autor: Alejandro Furfaro - 2008 53
Cache miss: Impacto en el Pipeline de instrucciones Si la búsqueda de una instrucción o de un operando en el cache
falla, entonces el procesador debe recurrir a la memoria principal. La demora en el acceso hace que el pipeline se atasque (stall) Una vez recuperado el dato de memoria principal se requieren (en
este ejemplo), 5 ciclos de reloj adicionales para recuperar el ritmo de operación del pipeline!!
Autor: Alejandro Furfaro - 2008 54
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
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.
Autor: Alejandro Furfaro - 2008 55
Estructura de Bus del sistema Multiprocesador con cache
Controlador de Memoria caché
Memoria cache
Controlador de Memoria caché
BUS DEL SISTEMA
Procesador
Bus deControl
CO
NTR
OL
DA
TOS
AD
DR
ESS
CONTROLMemoria
cache
Buffer deAddress
Buffer deDatos
Procesador
CONTROL
Buffer deAddress
Buffer deDatos
SNO
OP
BUS
CO
NTR
OL
DA
TOS
AD
DR
ESS
SNOOP BUS
Bus del cache
Bus local del controlador cache
Bus local del procesador
Autor: Alejandro Furfaro - 2008 56
Multilevel cache
CPUCache Level1
Cache Level 2
Cache controller
System Memory (DRAM)
On chip
Tamaño Cache L2 > Tamaño Cache L1Velocidad Cache L1 > Velocidad Cache L2
Autor: Alejandro Furfaro - 2008 57
Coherencia de cache
Protocolo MESI M - Modified: Línea presente solamente en éste
cache que varió respecto de su valor en memoria del sistema (dirty). Requiere write back hacia la memoria del sistema antes que otro procesador lea desde allí el dato (que ya no es válido).
E – Exclusive: Línea presente solo en esta cache, que coincide con la copia en memoria principal (clean).
S – Shared: Línea del cache presente y puede estar almacenada en los caches de otros procesadores.
I – Invalid: Línea de cache no es válida. Aplica a cache L1 de datos y L2/L3 Para cache L1 de código solo Shared e Invalid
Autor: Alejandro Furfaro - 2008 58
Implementaciones prácticas de memoria cache (1)
Intel 80486 8 Kbytes de cache L1 on chip Tamaño de línea: 16 bytes Organización asociativa de 4-vías
Pentium dos caches on-chip, uno para datos y otro para
instrucciones. Tamaño de cada cahe: 8 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 4-vías
PowerPC 601 cache on-chip de 32 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 8-vías
Autor: Alejandro Furfaro - 2008 59
PowerPC 603 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) PowerPC 604
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 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
Implementaciones prácticas de memoria cache (2)
Autor: Alejandro Furfaro - 2008 61
Antecedentes: Familia iAPx86 de Intel
Se presenta en 1978 con el Microprocesador 8086.Arquitectura de 16 bits. Intel se compromete a mantener
compatibilidad ascendente en los posteriores procesadores
En 1982 se presenta el 80286.Capacidad de direccionamiento de Memoria 16
Mbytes.Mantiene la arquitectura de 16 bitsIncorpora capacidades para implementar
Multitarea
Autor: Alejandro Furfaro - 2008 62
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.
Buses de Datos y Direcciones de 32 bits. 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 3 Modos de trabajo
Real Protegido Virtual 86
Autor: Alejandro Furfaro - 2008 63
BUS DE DESPLAZAMIENTO
SUMADOR DE 3 ENTRADAS
RGISTROSDESCRIPTORES
PLA DE LIMITES Y ATRIBUTOS
SUMADOR
CACHE DE PAGINAS
PRIORIZACION DE REQUERIMIENTOS
PLA DE CONTROL Y ATRIBUTOS
UNIDAD DE TESTEO Y
PROTECCION
DESPLAZADOR SUMADOR
MULTIPLICAR DIVIDIR
ARCHIVO DE REGISTROS
DECODIFICACION Y SECUENCIAMIENTO
ROM DE CONTROL
PREDECODIFICADOR DE INSTRUCCIONES
COLA DE HASTA 3 INSTRUCCIONES DECODIFICADAS
PREBÚSQUEDA / CHEQUEO DE LIMITES
DRVER DE DIRECCIONES
CONTROL DE PIPELINE / TAMAÑO
DEL BUS
MULTIPLEXORES / TRANSCEPTORES
COLA DE HASTA 16 BYTES DE CÓDIGO
32
32
32
32BUS DE DIRECCION EFECTIVA
BUS DE DIRECCION EFECTIVA
BUS DE CONTROL INTERNO
STATUS FLAG
STREAM DE CODIGO DE
32 BITSALU
CONTROL
CONTRO
L
CONTROL
BUS DEDICADO A LA ALU
3232
M.M.U. B.I.U.
C.P.U.
UNIDAD DE SEGMENTACION
UNIDAD DE PAGINACION
UNIDAD DE EJECUCION
UNIDAD DE DECODIFICACIONUNIDAD DE BUSQUEDA
UNIDAD DE CONTROL DEL BUS
HOLD, INTR,NMI,ERROR, BUSYRESET,HLDA
BE0 BE3A2 - A31
D0 - D31
M/IO, D/C, W/R, LOCKADS, NA, BS16READY
BUS DE BUSQUEDA DE CODIGO Y TABLA DE PAGINAS
BUS DE DIRECCIONES FISICAS
BUS
DE DIRECCIONES LINEALES
Procesador 80386DX: Diagrama Interno
Autor: Alejandro Furfaro - 2008 64
A 3 0
V c c
D 2 9
D 2 6
V s s
D 2 4
V c c
D 2 2
D 1 9
D 1 8
D 1 4
D 1 3
V s s
A 2 7
A 3 1
V s s
V c c
D 2 7
D 2 5
V c c
D 2 3
D 2 1
D 1 7
D 1 6
D 1 2
D 1 1
D 9
A 2 6
A 2 9
V c c
V s s
D 3 1
D 2 8
V c c
V s s
D 2 0
V s s
D 1 5
D 1 0
V c c
H L D A
A 2 3
A 2 4
A 2 8
V c c
D 8
D 6
A 2 1
A 2 5
D 7
D 5
D 4
A 2 0
V s s
V s s
V s s
V s s
D 3
A 1 7
A 1 8
A 1 9
D 0
D 1
D 2
A 1 6
V c c
V c c
V c c
V c c
A 1 5
V s s
V s s
C L K 2
N C
V s s
A 1 4
A 1 3
A 1 2
N C
A 1 1
A 1 0
A 9
V c c
H O L D
A 8
A 7
A 6
A 2
V c c
N C
N C
P R E Q
R E S E T
V c c
V s s
A 5
A 4
N C
V s s
N C
I N T R
N M I
V s s
V s s
N C
V s s
V c c
V s s
A 3
N C
V c c
V s s
V c c
E R R O R #
V s s
V c c
B U S Y #
V c c
B e 0 # M / I O #
R E A D Y # N A # B e 1 # B e 2 # B e 3 #
B s 1 6 #A D S #
P O N M L K J G F E D C B A
P O N M L K J G F E D C B A
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
Alimentación.20 terminales para Vcc y 21 para Vss (o tierra)
RelojCLK2
Bus de DatosD0 a D31Se pueden agrupar en bytes (D0-D7, D8-D15, D16-D23, D24-D31)
Bus de AddressA2 a A31BE0#BE1# BE2#
BE3#
80386 - Pinout
Autor: Alejandro Furfaro - 2008 65
048C
159D
2
E3
BF
8 0 3 8 6D - D0 3 1
D - D2 4 3 1
D - D1 6 2 3
D - D8 1 5
D - D0 7
B E B E0 1 B E B e2 3
C S
C S
C S
C S
A - A2 3 1
A - A2 3 1
A - A2 3 1
A - A2 3 1
A - A2 3 1
B y t e A l i n e a d oW o r d N o A l i n e a d aD o b l e W o r d N o A l i n e a d aW o r d N o A l i n e a d aB y t e N o A l i n e a d oW o r d N o A l i n e a d oD o b l e W o r d A l i n e a d a
D i r e c c i ó n0
1 - 23 - 67 - 8
9A - BC - F
80386: Manejo de Memoria organizada en bytes con 32 líneas de address
Autor: Alejandro Furfaro - 2008 66
BE3# BE2# BE1# BE0# A1 A0 = BLE# BHE# Significado
0 0 0 0 0 0 0 Dword alineada0 0 0 1 0 1 x 3 1eros bytes de dword no alineada0 0 1 0 x 0 x *0 0 1 1 1 0 0 word o 2 1 eros bytes de dword no
alineada0 1 0 0 x x x *0 1 0 1 x x x *0 1 1 0 x x x *0 1 1 1 1 1 0 byte solo o principio de una word o
dword no alineada1 0 0 0 0 0 0 3 últimos bytes de dword no alineada1 0 0 1 0 1 0 word no alineada1 0 1 0 x x x *1 0 1 1 1 0 1 Byte1 1 0 0 0 0 0 word alineada o mitad final de una
dword no alineada1 1 0 1 0 1 0 byte1 1 1 0 0 0 1 byte solo o final de una word o
dword no alineada1 1 1 1 x x x **
X100
X1XX
0X00
XX00
BE1
BE0101101
00
01
00
11
10
BE3
BE2 A1= BE1.BE0
BE1#A1
BE0#
80386 - Generación de A0 y A1 a partir de BE0-3#
Autor: Alejandro Furfaro - 2008 67
X010X1XX
0X10
X010
BE1
BE0101101
00
01
00
11
10
BE3
BE2
A0= BE1.BE0+BE2.BE0= BLE#
BLE#
A0
BE1#
BE0#
BE2#
BE0#
BHE#= BE1.BE30X000
X0XX1X00
X100
BE1
BE0101101
00
01
00
11
10
BE3
BE2
BE1#BHE#
BE3#
80386 - Generación de A0 y A1 a partir de BE0-3#
Autor: Alejandro Furfaro - 2008 68
Señales de estado del ciclo de Busciclo de bus = tiempo que transcurre para realizar una transferencia completa por el bus del sistema
W/R# : Write/Read#.M/IO# : Memoria/Input Output#. D/C# : Data/Control#.LOCK#ADS# : Address
Status.
M/IO# D/C# W/R# Tipos de ciclo de Bus Bus Inhibido
0 0 0 Reconocimiento de Interrupción Si0 0 1 - -
0 1 0 Lectura de E/S No0 1 1 Escritura de E/S No
1 0 0 Lectura de código de Memoria No1 0 1 HALT
Dirección = 2BE0# = 1BE1# = 1BE2# = 0BE3# = 1A2-A31 = 0
SHUTDOWNDirección = 0BE0# = 0BE1# = 1BE2# = 1BE3# = 1A2-A31 = 0
No
1 1 0 Lectura de datos de memoria Algunos ciclos
80386 - Pinout
Autor: Alejandro Furfaro - 2008 69
80386
MEMORIA
MEMORIA
BE1#
30
A1
BLE#
BHE#
8
8
BE0#BE3# BE2#
A2-A31
D8-D15
D0-D7CS
CS
LOGICAAUXILIAR
80386 - Pinout
Señales de estado del ciclo de Bus Marcan la finalización de un ciclo de bus, el ancho del bus de
datos para cada ciclo, y la posibilidad de adelantar durante el ciclo de bus en curso información correspondiente al ciclo de bus siguiente
Ready# BS16# : Bus Size 16. NA# : Next Address.
Arbitraje del Bus HOLD : Requerimiento del bus. HLDA : Reconocimiento de
requerimiento de bus. Señales de Interrupción.
INTR : INTerrupt Request. NMI : Non Maskable Interrupt
Autor: Alejandro Furfaro - 2008 70
CABOE#DIRSBACBA
A
4x646
B SAB
32 304
42
2
12 ó 13
32
82385
BM/IO#BD/C#
BW/R#
A lamemoria
CACHE CALEN
CT/R#
CS0#-CS3#
COEA#-COEB#
CWEA#-CWEB#
CLK2
RESET
ADS#
NA#
LOCK#
M/IO#,D/C#,W/R#
BE0#-BE3#
A2-A31
READY#
READYO#
BRDYEN#
BREADY#
BACP
BAOE#
LDSTB
DOE#
BT/R#
BHOLD
BHLDA
WBS
FLUSH
MISS#
BLOCK#
BNA#
BADS#
BBE0#-BBE3#
CLK2
RESET
ADS#
NA#
LOCK#
M/IO#,D/C#,W/R#
BE0#-BE3#
A2-A31
D0-D31D0-D31
READY#
386D X
Desdecircuito de
OSC/RESET
34
3032
READY deotro 386DX
BREADY3BA2-BA31BD0-BD31
BUS LOCAL DEL 386DX
D
Q
CPOE# 4x374
CPOE#
374
D
Q
Ejemplo: Interfaz entre la CPU 386DX y el controlador cache 82385
Autor: Alejandro Furfaro - 2008 73
Cache Multi Level (L1, y L2 cache)
Ejemplo práctico: Procesador 80486DX. Fue el primero en introducir esta arquitectura
Autor: Alejandro Furfaro - 2008 75
Procesador Pentium: Características
Arquitectura Superescalar 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. Dependencia de Recursos.
Bus externo de datos de 64 líneas Asegura la lectura de dos instrucciones a la vez ya que
ejecuta dos instrucciones a la vez Branch Prediction
Branch Target Buffer Dos Cache L1 internas: una de datos (8 Kbytes)
y otra de código (8 Kbytes)
Autor: Alejandro Furfaro - 2008 76
Procesador Pentium: Diagrama Interno
Dos pipelines de instruccionesU 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.
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
Dos Cache L1 internas: una de datos (8 Kbytes) y otra de código (8 Kbytes)
Branch Prediction
Autor: Alejandro Furfaro - 2008 77
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.
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.
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.
4 ciclos de clock de demora en V pipeline 3 ciclos de clock de demora en el U Pipeline
Autor: Alejandro Furfaro - 2008 78
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,
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 PIC’s 8259 presentes en el motherboard (siempre!! Necesario
para asegurar Compatibilidad)
Si se lo habilita el procesador transforma los pines de interrupción en:
PICCLK: Terminal de sincronización con el otro procesador
PICD0 y PICD1 bus de comunicación de dos alambres
Autor: Alejandro Furfaro - 2008 79
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
Interrupciones en SMP: El APIC
Autor: Alejandro Furfaro - 2008 81
APIC Interrupt Controller
Fuentes de interrupciones del APIC:
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.
Micro-Arquitectura P6
Pentium Pro, Pentium II, Pentium II Xeon, Celeron,
Pentium III, Pentium III Xeon
Autor: Alejandro Furfaro - 2008 83
Micro Arquitectura Three core engines
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
Bus Interface Unit
L1 DCacheL1 ICache
L2 Cache
Fetch / Decode
Unit
Dispatch /Execute
Unit
Instruction Pool
System Bus
Retire Unit
Fetch Load
Dispatch /Execute
Unit
Store
Autor: Alejandro Furfaro - 2008 84
Funcionamiento del Core
Consideremos el siguiente código genérico
r1<- mem [r0] /* instrucción 1*/
r2 <- r1 + r2 /* instrucción 2*/
r5 <- r5 + r4 /* instrucción 3*/
r6 <- r6 - r3 /* instrucción 4*/ La instrucción 1 genera un cache miss. La instrucción 2 depende del registro r1, => no puede ejecutarse hasta no cargarse r1
con el valor válido en la instrucción 1. En este punto cualquier core basado en ejecución en orden, se detiene hasta que se
obtenga el operando apuntado por [r0] desde la memoria del sistema.
Autor: Alejandro Furfaro - 2008 85
Funcionamiento del Core
Al crear una ventana de ejecución el procesador tiene visibilidad de mayor cantidad de
instrucciones.
De este modo, un procesador 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.
Además puede ejecutar en forma especulativa ambas ramas de un branch,
descartando luego de verificar la condición aquellas correspondientes a la rama que no
se debe ejecutar
Las primeras versiones eran capaces de “ver” 20 instrucciones.
Autor: Alejandro Furfaro - 2008 86
SIMD1
WIRE
SIMD0
Three core engines en detalle
ICache Next_IP
BranchTableBuffer
Microcode Instruction Sequencer
Register Alias Table
Bus Interface Unit
L2 CacheSystem Bus
Reservation Station
Port 0
Port 1
Port 2
Port 3,4
FEUIEU
JEUIEU
AGU
AGU
Retirement Register File
Memory Interface
Unit
L1 DCache
Load
Store
µop1 µop2 µop3 µop4 µop5 µop6 µop7 µop8 µop9 µop10 µop11 µop12 µop13 µop14 µop15 µop16
Re Order Buffer (Instruction Pool)
Simple Instruction
Decoder
Simple Instruction
Decoder
Complex Instruction
Decoder
Memory ReorderBuffer
EU: Execution UnitIEU = Integer EUFEU = Floating Point EUJEU = Jump EUAGU = Address Generation Unit
Autor: Alejandro Furfaro - 2008 87
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)
Instrucciones simples 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 - 2008 88
Three core engines en detalle (cont.)
Las µops se encolan en el Register Alias Table en donde las referencias a
los registros IA-32 se convierten en 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.
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. Si no se espera a que se libere el recurso y se envía
Un procesador P6 puede despachar 5 µops por los diferentes ports de ejecución.
Autor: Alejandro Furfaro - 2008 89
Three core engines en detalle (cont.)
Las µops de 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
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 asumiéndosela como
válida, y las remueve del Pool Instrucciones.
Unidad de Retiro
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 - 2008 92
Micro Arquitectura NetBurst: Diagrama
Bus Unit
Level 2 Cache
System BusSystem Bus
Memory SubsystemMemory Subsystem
Level 1 Data Cache
Excecution Units
Integer and FP Excecution UnitsInteger and FP Excecution Units
BTB/Branch Prediction
Fetch/Decode
Trace CacheMicrocode
ROM
Front EndFront End
Out-of-Order excecution
logicRetirement
Out-Of-Order EngineOut-Of-Order Engine
Branch History UpdateBranch History Update
Autor: Alejandro Furfaro - 2008 93
Micro Arquitectura NetBurst: Bloques
Front end:
Fetch/decode unit
Execution trace cache. Tamaño 12K µops.
Funciones básicas:
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 - 2008 95
Pentium IV: Diagrama detallado
Front End BTB(4K entries)
Trace Cache BTB(256 entries)
Instruction/TLB Prefetcher
Trace Cache12K µops
Quad Pumped
3.2 Gbyte/seg
BusInterface
Unit
Instruction Decoder
µops Queue
Microcode ROM
Allocator / Register Renamer
Memory µop Queue Integer / Floating Point µop Queue
Memory SchedulerFast Simple FPSlow /General FP Scheduler
Integer Register File / Bypass Network FP Register / Bypass
AGULoad
Address
AGUStore
Address
2xALUSimpleInstruc
2xALUSimpleInstruc
Slow ALU
ComplexInstruc
FPMMXSSE
SSE2
FPMove
L1 Data Cache (8Kbyte 4-way) (256 bits)
Cache L2256 Kbytes
8 vías
L2 Cache Control Unit
48 Gbytes/seg
System Bus
(256 bits)
Autor: Alejandro Furfaro - 2008 96
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
El APIC en la Micro Arquitectura NetBurst
Autor: Alejandro Furfaro - 2008 98
Tecnología Hyperthreading
Front End NetBurst(a) Búsqueda con L1 ICache Hit(b) Búsqueda con L1 ICache Miss
Autor: Alejandro Furfaro - 2008 99
Tecnología Hyperthreading
Motor de ejecución Fuera de Orden con Hyperthreading
Autor: Alejandro Furfaro - 2008 100
Tecnología Hyperthreading
Modelo de procesamiento de dos threads(a) Un procesador Hyperthreading(b) Un procesador Dual Core
Autor: Alejandro Furfaro - 2008 102
Dual Core
INSTRUCTION FETCHINSTRUCTION FETCHAND PRE-DECODEAND PRE-DECODE
INSTRUCTION QUEUEINSTRUCTION QUEUE
RETIREMENT UNITRETIREMENT UNIT(REORDER BUFFER)(REORDER BUFFER)
DECODEDECODE
RENAME / ALLOCRENAME / ALLOC
SCHEDULERSSCHEDULERS
EXECUTEEXECUTE
INSTRUCTION FETCHINSTRUCTION FETCHAND PRE-DECODEAND PRE-DECODE
INSTRUCTION QUEUEINSTRUCTION QUEUE
RETIREMENT UNITRETIREMENT UNIT(REORDER BUFFER)(REORDER BUFFER)
DECODEDECODE
RENAME / ALLOCRENAME / ALLOC
SCHEDULERSSCHEDULERS
EXECUTEEXECUTE
CORE 1CORE 1 CORE 2CORE 2
Autor: Alejandro Furfaro - 2008 108
Wide Dynamic Execution
El pipeline se reduce a 14 etapas para suavizar penalizaciones en los
saltos al vaciar los pipelines.
Cuatro vías de ejecución de Micro operaciones en paralelo por cada
core
Cuatro decodificadores. Hasta 5 decodificaciones por ciclo de clock.
(contra las tres de la μarquitectura anterior)
Microfusion
Macrofusion
ALU’s mejoradas
Autor: Alejandro Furfaro - 2008 109
Macrofusion
inc ebx
mov [esi],ebx
cmp ebx,50000
jne Target
mov eax,[esi+8]
Cola de instrucciones
DEC 0
DEC 1
DEC 2
DEC 3
Clock 1
Clock 2
Target
Autor: Alejandro Furfaro - 2008 110
Macrofusion
inc ebx
mov [esi],ebx
cmp ebx,50000
jne Target
mov eax,[esi+8]
Cola de instrucciones
DEC 0
DEC 1
DEC 2
DEC 3
cmpjne eax, [esi+4],Target
DECODE
EXECUTE
uCODEROM
MacroFusion
Target
Autor: Alejandro Furfaro - 2008 111
Microfusion
Una vez decodificadas las instrucciones se traducen en
μops.
La mayoría de las instrucciones se traducen en 1 μop.
Las instrucciones complejas se convierten en varias μops.
Las ALU ejecutan μops
Microfusion permite agrupar varias μops en una mas
compleja de modo de minimizar la cantidad de μops que
se schedularán en cada unidad de ejecución.
Autor: Alejandro Furfaro - 2008 112
Advanced Digital Media Boost
Las instrucciones SIMD de 128 bits se ejecutan
en 1 ciclo de clock (contra 2 de las
μarquitecturas anteriores).
Tres ports de ejecución para instrucciones SIMD,
en cada core.
Hasta 8 operaciones de punto flotante por ciclo
de clock en cada core
Autor: Alejandro Furfaro - 2008 113
Memory Disambiguation
En general las operaciones Load esperan a una operación store precedente, aun
cuando no tienen relación (dependencia) entre si.
A veces conviene alterar ese orden siempre que no traiga consecuencias a la lógica del
programa, si permite ganar tiempo.
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
INST 1 “STORE [X]”
DECODE/SCHEDULE
INST 2 “LOAD [Y]”
INORDER
EXECUTE
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
INST 1 “STORE [X]”
DECODE/SCHEDULE
INST 2 “LOAD [Y]”
EXECUTE STALL
Micro arquitectura Core Otras
Inst. 2 “Load”puede ejecutarse
Antes de la Inst. 1 “Store”
Inst. 2 debe Esperar a la
Inst. 1 “Store”Para completarse
OUTOF
ORDER
Autor: Alejandro Furfaro - 2008 114
Smart Cache
L2 Compartida Microarquitectura Core
L2 Independiente
Disponible Disponible Bi-DireccionalmenteBi-DireccionalmenteEn forma dinámicaEn forma dinámica
CORE 1CORE 1 CORE 2CORE 2
L1CACHE
L1CACHE
CORE 1CORE 1 CORE 2CORE 2
L1CACHE
No No CompartibleCompartible
L1CACHE
x
Se decrementa
Tráfico
Se Incrementa
Tráfico
Autor: Alejandro Furfaro - 2008 115
Consumo
Tecnología SpeedStep. Las unidades
inician su operación sub clockeadas, y
aumentan la frecuencia a medida que la
operación lo requiere (Pentium M)
Autor: Alejandro Furfaro - 2008 116
Referencias
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture.
Capítulo 2
https://www.cs.tcd.ie/Jeremy.Jones/vivio/caches/MESIHelp.htm
Organización y Arquitectura de Computadores. 5ta. Ed. William Stallins.
Capítulos 4, 12, 13, y 16