Técnicas Digitales III

Anuncio
Procesadores de 32 bits
Tecnologías, Organización y Micro
Arquitectura
Tecnología de Integración
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 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
Autor: Alejandro Furfaro - 2008
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 - 2008
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.
 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
5
Ley de Moore
Autor: Alejandro Furfaro - 2008
6
Pipeline Tecnológico: Fuente IDF2009
Autor: Alejandro Furfaro - 2008
7
Relación entre el pipeline tecnológico y las
microarquitecturas
Autor: Alejandro Furfaro - 2008
8
Organización de un computador
Conceptos generales:
Arquitectura vs. Micro-Arquitectura
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 MicroArquitectura para mas de 15 modelos de procesadores.
Autor: Alejandro Furfaro - 2008
10
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
11
Ejemplo CISC (Intel)
Prefijo
OpCode
0xF3
0xA4
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
12
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) ;
sb $t0,0, $s4 ;
add $s3,$s3,1
add $s4,$s4,1
sub $s5,$s5,1
be $s5,0,fin
j bucle
fin:
t0 = mem[s3]
mem[s4] = t0
Autor: Alejandro Furfaro - 2008
13
Ciclo de instrucciones: Etapas
clock
Búsq.
Instruc.



Decod
Busq.
Operando
Ejec
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 - 2008
14
Pipeline de instrucciones



Técnica que permite
superponer en el tiempo la
ejecución de varias
B usq. B usq.
instrucciones a la vez
In st. 1 In st. 2
No requiere hardware
adicional. Solo se necesita
D e c .F I
lograr que todas las partes
In st. 1
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)
B usq. B usq. B usq. Busq. B usq.
In st. 3 In st. 4 In st. 5 In st. 6 In st. 7
D ec.
D ec.
D ec.
D ec.
D ec.
In st. 2 In st. 3 In st. 4 In st. 5 In st. 6
B usq.
O p. 1
B usq.
O p. 2
B usq.
O p. 3
Busq.
O p. 5
E je c . E je c .
E je c .
E je c .
In st. 1 In st. 2 In st. 3 In st. 4
E s c r ib . E s c r ib . E s c r ib .
Res. 1 Res. 2 Res. 3
Resultado
Una vez en régimen ejecuta a razón de una
instrucción por ciclo de clock
Autor: Alejandro Furfaro - 2008
B usq.
O p. 4
15
Etapas de un pipeline

Podemos desagregar mas las micro operaciones
y generar pipelines de mas etapas. Ej:
Autor: Alejandro Furfaro - 2008
16
Etapas de un pipeline

Incluir el chequeo de interrupciones
Autor: Alejandro Furfaro - 2008
17
Profundidad del pipeline. Casos concretos
μArchitecture
Pipeline stages
ARM7TDMI(-S)
3
ARM7EJ-S
5
ARM810
5
ARM9TDMI
5
ARM1020E
6
XScale PXA210/PXA250
7
ARM1136J(F)-S
8
ARM1156T2(F)-S
9
ARM Cortex-A5
8
ARM Cortex-A8
13
AVR32 AP7
7
AVR32 UC3
3
DLX
5
Intel P5 (Pentium)
5
Intel P6 (Pentium Pro)
14
Intel P6 (Pentium III)
10
Autor: Alejandro Furfaro - 2008
μArchitecture
Pipeline stages
Intel NetBurst (Willamette)
20
Intel NetBurst (Northwood)
20
Intel NetBurst (Prescott)
31
Intel NetBurst (Cedar Mill)
31
Intel Core
14
Intel Atom
16
LatticeMico32
6
R4000
8
StrongARM SA-110
5
SuperH SH2
5
SuperH SH2A
5
UltraSPARC
9
UltraSPARC T1
6
UltraSPARC T2
8
WinChip
4
LC2200 32 bit
5
18
Pipeline de seis etapas
Autor: Alejandro Furfaro - 2008
19
Efecto de un branch en un Pipeline de seis
etapas
Autor: Alejandro Furfaro - 2008
20
Branchs versus eficiencia del pipeline
 Para
tratar de minimizar este impacto
se implementan unidades de
predicción de saltos.
 Criterios
 Asumir
que nunca se salta
 Asumir
que siempre se salta
 Predecir
 Branch
por OpCOde de las instrucciones previas.
Target Buffer
 Utilizar
una memoria ultrarrápida con una tabla de
historia de saltos.
Autor: Alejandro Furfaro - 2008
21
Predicción de saltos
 Ej:
JECXZ continuar
Asumir que nunca se salta
otro:
lodsd
; aqui hacemos algo con eax
stosb
Asumir que
loop otro
siempre se salta
continuar:
Autor: Alejandro Furfaro - 2008
22
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
23
Branch Target Buffer
Autor: Alejandro Furfaro - 2008

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 correctamente24
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
25
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 - 2008
26
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
27
Arquitectura super pipeline 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 - 2008
28
Comparaciones
Autor: Alejandro Furfaro - 2008
29
Efecto de las Dependencias
Autor: Alejandro Furfaro - 2008
30
Casos de Pipelining en el IA-32
Autor: Alejandro Furfaro - 2008
31
Ejemplo de Super pipeline: Pentium IV
Autor: Alejandro Furfaro - 2008
32
Memoria Cache
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
34
Tecnología de memorias: RAM Dinámica
CAS
RAS
Cd
Buffer
Bit de datos de salida al bus
Transistor
Diagrama de un bit elemental de DRAM (Dynamic RAM).
 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.
Autor: Alejandro Furfaro - 2008
35
Tecnología de memorias: RAM Estática
Línea de Bit
Línea de Bit
Selección
1
3
4
2
5
6
Diagrama del biestable de un bit básico de SRAM (Static RAM).
 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
Autor: Alejandro Furfaro - 2008
36
Estructura de Bus clásica

CONTROL
DATOS
ADDRESS
Procesador
Bus de
Control
Buffer de
Datos
Buffer de
Address
Bus Local del
Procesador
BUS DEL SISTEMA
Memoria del
Sistema
Autor: Alejandro Furfaro - 2008
E/S del Sistema
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?
37
Crecimiento de la velocidad de clock de
las CPU versus memoria
1100
1000
Pentium III
1GHz
900
800
700
600
Pentium II
400 MHz.
500
400
486 DX4
100 MHz.
300
Memorias
200
386 DX
33 MHz
100
89
90
Autor: Alejandro Furfaro - 2008
91
92
93
94
95
96
97
98
99
00
38
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
39
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
40
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
hit rate =
Cantidad de accesos con presencia en Memoria Cache
Cantidad total de accesos a memoria
Autor: Alejandro Furfaro - 2008
41
Operación de Lectura de memoria
Inicio
CPU envía señal
de lectura
Hit!!
Busca ítem
en cache
Busca ítem en
cache y envía a la
CPU
Miss
Busca ítem en
memoria del
sistema
Escribe ítem en el
cache
Actualiza
directorio cache
Envía ítem a la
CPU
Fin
Autor: Alejandro Furfaro - 2008
42
Estructura de Bus del sistema con cache
Memoria
cache
CONTROL
ADDRESS
DATOS
CONTROL
Procesador
Bus Local del
procesador
Controlador de
Memoria caché
Buffer de
Datos
Buffer de
Address
Bus Local del
controlador
cache
Bus de
Control
Autor: Alejandro Furfaro - 2008
BUS DEL SISTEMA
43
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 temporal:
temporal Si un ítem es referenciado, la
probabilidad de ser referenciado en el futuro inmediato es alta.

Principio de vecindad espacial:
espacial Si un ítem es referenciado, es
altamente probable que sean referenciados sus ítems vecinos.

Ejemplo: Algoritmo de convolución
for (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
44
Estructura de memoria cache
Tag
Línea
Dirección
0
1
2
3
4
5
6
7
8
9
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
Línea
Ancho de palabra
45
Memoria Cache
Procesador
Bus del Procesador
(Bus local)
Baja capacidad, pero ¡¡accesible a la
velocidad del procesador!!
Subsistema caché
Controlador de
Memoria caché
Memoria
SRAM
ultrarrápida
(cache)
Hardware adicional. Mantiene el cache
con los datos mas frecuentemente
utilizados por el procesador
Bus del Sistema
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 - 2008
46
Organización del caché: Mapeo Directo
Bit de validez del Tag
1 Línea = 4 bytes
Línea
Tag
17 bits
Set 0
Línea
Bits de validez
de las líneas
32 Kbytes
(igual tamaño
Que el del cache)
Set 1
Pag.217 -1
Set 1023
Directorio de Caché Interno
Autor: Alejandro Furfaro - 2008
Memoria Caché
Pag.0
4 Gbytes de Memoria Principal
47
Organización del caché de mapeo directo
Caché Address (1 de 8 KLíneas)
A5 A 4
A 15 A 14
A 31
Tag de 17 bits (1 de las 217 páginas)
Set Address (1 de 1024 sets)
A2
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
Autor: Alejandro Furfaro - 2008
Directorio de
Caché Interno
48
Organización del caché: Asociativo de dos
vías
Bit de validez del Tag
Línea
Tag
Set 0
18 bits
Bits de Bits
validez LRU
de las
líneas
Bits
LRU
Línea
Línea
18 bits
18 bits
Set 1
18 bits
Bits
LRU
16 Kbytes
(igual tamaño Que el de
cada banco del cache)
18 bits
1 Línea = 4 bytes
Pag.218 -1
18 bits
Set 511
Directorio de Caché Interno
Autor: Alejandro Furfaro - 2008
Memoria Caché
Pag.0
4 Gbytes de Memoria Principal
49
Organización del caché asociativo de dos
vías
Caché Address (1 de 4 KLíneas)
A31
A5 A4
A14 A13
Tag de 18 bits (1 de las 218 páginas)
Set Address (1 de 512 sets)
A2
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
Autor: Alejandro Furfaro - 2008
Directorio de
Caché Interno
50
Manejo del contenido
 Algoritmos
de reemplazo del contenido de
la memoria cache
 LRU:

Least Recently Used.
Se corresponde con el principio de vecindad
temporal.
 LFU:
Last Frecuently Used
 Random
 FIFO
Autor: Alejandro Furfaro - 2008
51
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:



B usq. B usq. B usq. B usq. B usq. B usq. B usq.
In st. 1 In st. 2 In st. 3 In st. 4 In st. 5 In st. 6 In st. 7
D e c .F I D e c .
D ec.
D ec.
D ec.
D ec.
In st. 1 In st. 2 In st. 3 In st. 4 In st. 5 In st. 6
B usq. B usq.
Op. 1 Op. 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)
B usq.
Op. 3
B usq.
Op. 4
B usq.
Op. 5
E je c . E je c . E je c . E je c .
In st. 1 In st. 2 In st. 3 In st. 4
E s c r ib . E s c r ib . E s c r ib .
Res. 1 Res. 2 Res. 3
Resultado
Una vez en régimen ejecuta a razón de una
instrucción por ciclo de clock
Autor: Alejandro Furfaro - 2008
52
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
53
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
54
Estructura de Bus del sistema
Multiprocesador con cache
SNOOP BUS
Buffer de
Datos
ADDRESS
Memoria
CONTROL Controlador de
cache
Memoria caché
DATOS
Buffer de
Address
CONTROL
ADDRESS
Buffer de
Datos
Memoria CONTROL Controlador de
cache
Memoria caché
SNOOP BUS
Procesador
DATOS
CONTROL
Procesador
Buffer de
Address
Bus del cache
Bus de
Control
Bus local del procesador
Bus local del controlador cache
BUS DEL SISTEMA
Autor: Alejandro Furfaro - 2008
55
Multilevel cache
Cache
Level1
On chip
Cache
Level 2
Tamaño Cache L2 > Tamaño Cache L1
Velocidad Cache L1 > Velocidad Cache L2
Autor: Alejandro Furfaro - 2008
CPU
Cache
controller
System
Memory
(DRAM)
56
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
57
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
58
Implementaciones prácticas de memoria
cache (2)

PowerPC 603





PowerPC 604





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




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 - 2008
59
Micro-Arquitectura 386
80386DX, 80386SX
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 bits
 Incorpora capacidades para implementar
Multitarea
Autor: Alejandro Furfaro - 2008
61
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
62
Procesador 80386DX: Diagrama Interno
B.I.U.
M.M.U.
BUS DE DIRECCION EFECTIVA
UNIDAD DE
PAGINACION
32
SUMADOR DE 3
ENTRADAS
SUMADOR
32
RGISTROS
DESCRIPTORES
32
PLA DE LIMITES
Y ATRIBUTOS
ARCHIVO DE
REGISTROS
DE
CONTROL
UNIDAD DE DECODIFICACION
DESPLAZADOR
SUMADOR
MULTIPLICAR
DIVIDIR
BUS
DE
DES
PLA
ZAM
IEN
TO
UNIDAD DE
EJECUCION
BUS
STATUS
FLAG
ALU
CONTROL
PRIORIZACION DE
REQUERIMIENTOS
DRVER DE
DIRECCIONES
C.P.U.
CONTROL DE
PIPELINE / TAMAÑO
DEL BUS
INTERNO
MULTIPLEXORES /
TRANSCEPTORES
UNIDAD DE BUSQUEDA
PREDECODIFICADOR
DE INSTRUCCIONES
PREBÚSQUEDA /
CHEQUEO DE LIMITES
ROM DE
CONTROL
COLA DE HASTA 3
INSTRUCCIONES
DECODIFICADAS
COLA DE HASTA 16
BYTES DE CÓDIGO
STREAM DE
CODIGO DE
32 BITS
HOLD, INTR,NMI,
ERROR, BUSY
RESET,HLDA
CACHE DE PAGINAS
DECODIFICACION Y
SECUENCIAMIENTO
CONTROL
32
PLA DE CONTROL Y
ATRIBUTOS
BU
S
DE
DI
RE
CCI
ON
ES
LIN
EAL
ES
UNIDAD DE
TESTEO Y
PROTECCION
UNIDAD DE CONTROL
DEL BUS
CON
TRO
L
BUS DE DIRECCION EFECTIVA
UNIDAD DE
SEGMENTACION
BUS DE
DIRECCIONES
FISICAS
BE0 BE3
A2 - A31
M/IO, D/C,
W/R, LOCK
ADS, NA, BS16
READY
D0 - D31
32
BUS DE BUSQUEDA DE CODIGO Y
TABLA DE PAGINAS
32
BUS DEDICADO A LA ALU
Autor: Alejandro Furfaro - 2008
63
80386 - Pinout
P
1
2
5
6
7
N
M
L
K
J
G
F
E
D
C
A8
V ss
V cc
V cc A 31 A 29 A 24
V ss A 18
V cc V ss
A13 A10
A7
A5
V ss
V ss V cc A 28 A 25 V ss A 19
V cc V ss
A12 A9
A6
A4
A3
D 29 V cc V ss
A2
NC
NC
D26 D 27 D 31
V cc V ss
V cc
V ss D 25 D 28
NC
V ss
D 24 V cc V cc
N C IN T R V cc
V cc D 23 V ss
10
11
12
13
14
A
A16 A15 A14 A11
8
9
B
A30 A27 A26 A23 A21 A20 A17
3
4
O
NC
R ESET B U SY# Vss
V cc
D 19 D 17 V ss
V ss
D 18 D 16 D 15
V cc C LK2 B e0# V cc
V ss
D 13 D 11 V cc D 8
D5
Vss D 1 READY# N C N C N A # B e1# B e2# B e3#
Vss D 9 H LD A D 6
D4
D3
D2
L
K
J
N
M
D0
V ss
D 14 D 12 D 10 V cc D 7
O
2
3
4
5
6
7
8
PREQ NM I ERRO R#
D22 D 21 D 20
P
1
Autor: Alejandro Furfaro - 2008
V c c N C M /IO #
V cc V ss A D S# H O LD B s16# V ss V cc
G
F
E
D
C
B
9
10
11
12
13
14
Alimentación.
20 terminales para Vcc y
21 para Vss (o tierra)
Reloj
CLK2
Bus de Datos
D0 a D31
Se pueden agrupar en
bytes (D0-D7, D8-D15,
D16-D23, D24-D31)
Bus de Address
A2 a A31
BE0#
BE1#
BE2#
BE3#
A
64
80386: Manejo de Memoria organizada en
bytes con 32 líneas de address
0
4
8
C
A 2-A
1
5
9
D
A 2-A
2
A 2-A
E
3
B
F
A 2-A
31
D
24
-D
31
D 0-D
16
-D
31
B y te A lin e a d o
W o r d N o A l in e a d a
D o b le W o r d N o A l in e a d a
W o r d N o A l in e a d a
B y t e N o A li n e a d o
W o r d N o A l in e a d o
D o b le W o r d A l in e a d a
31
D 8-D
D
31
D i r e c c ió n
0
1 - 2
3 - 6
7 - 8
9
A - B
C - F
23
A 2-A
7
15
D 0-D
BE
80386
31
0
31
BE
1
BE
2
Be3
CS
CS
CS
CS
Autor: Alejandro Furfaro - 2008
65
80386 - Generación de A0 y A1 a partir de
BE0-3#
BE3# BE2# BE1#
BE0#
A1
A0 = BLE#
BHE#
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
0
0
x
1
0
1
0
0
0
x
x
0
0
0
0
0
1
1
1
1
0
0
1
1
0
1
0
1
x
x
x
1
x
x
x
1
x
x
x
0
1
1
1
1
1
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
0
0
x
1
0
0
1
x
0
0
0
0
x
1
0
1
1
1
1
0
1
1
0
0
0
1
0
0
1
1
1
1
1
x
x
x
Significado
Dword alineada
3 1 eros bytes de dword no alineada
*
word o 2 1 eros bytes de
dword no
alineada
*
*
*
byte solo o principio de una
word o
dword no alineada
3 últimos bytes de dword no alineada
word no alineada
*
Byte
word alineada o mitad final de una
dword no alineada
byte
byte solo o final de una
word o
dword no alineada
**
BE3
BE1
BE0
00
BE2
00
01
11
10
Autor: Alejandro Furfaro - 2008
0
X
0
0
01
11
10
0
X
0
0
1
1
X
X
X
X
0
X
A1= BE1.BE0
BE1#
BE0#
A1
66
80386 - Generación de A0 y A1 a partir de
BE0-3#
BE3
BE1
BE0
BE2
00
01
11
10
00
01
11
10
0
X
0
0
1
X
1
1
0
1
X
0
X
X
0
X
A0= BE1.BE0+BE2.BE0= BLE#
BE1#
BE0#
A0
BE2#
BE0#
BLE#
BE1
BE3
BE0
00
BE2
00
01
11
10
0
X
0
0
Autor: Alejandro Furfaro - 2008
01
11
10
0
X
0
0
0
0
X
1
X
X
1
X
BHE#= BE1.BE30
BE1#
BE3#
BHE#
67
80386 - Pinout
Señales de estado del ciclo de Bus
ciclo 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#.
M/IO#
D/C#
W/R#
0
0
0
LOCK#
0
0
1
0
1
0
ADS# : Address
0
1
1
1
0
0
Status.
1
0
1
1
Autor: Alejandro Furfaro - 2008
1
0
Tipos de ciclo de Bus
Reconocimiento de Interrupción
Bus Inhibido
-
Si
-
Lectura de E/S
Escritura de E/S
No
No
Lectura de código de Memoria
HALT
SHUTDOWN
Dirección = 2
Dirección = 0
BE0# = 1
BE0# = 0
BE1# = 1
BE1# = 1
BE2# = 0
BE2# = 1
BE3# = 1
BE3# = 1
A2-A31 = 0
A2-A31 = 0
No
Lectura de datos de memoria
No
Algunos ciclos
68
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.
8
80386

HOLD : Requerimiento del bus.

HLDA : Reconocimiento de
requerimiento de bus.
D0-D7
MEMORIA CS
30
A2-A31
BE3# BE2# BE1# BE0#
Señales de Interrupción.
INTR : INTerrupt Request.
 NMI : Non Maskable
Autor: Alejandro Furfaro - 2008
MEMORIA CS
8
Arbitraje del Bus

D8-D15
Interrupt
A1
LOGICA
AUXILIAR
BLE#
BHE#
69
Ejemplo: Interfaz entre la CPU 386DX y el
controlador cache 82385
12
ó 13
Desde
circuito de
OSC/RESET
32
82385
A la
memoria
CACHE
4
2
2
CALEN
CLK2
CT/R#
RESET
CS0#-CS3#
CLK2
ADS#
ADS#
NA#
COEA#-COEB#
CWEA#-CWEB#
NA#
LOCK#
BE0#-BE3#
BHLDA
READYO#
WBS
BRDYEN#
FLUSH
BREADY#
MISS#
BAOE#
BNA#
LDSTB
BADS#
DOE#
BBE0#-BBE3#
BT/R#
A2-A31
D0-D31
READY#
READY de
otro 386DX
CAB
OE#
DIR
SBA
CBA
32
Autor: Alejandro Furfaro - 2008
BE0#-BE3#
BACP
BLOCK#
4
M/IO#,D/C#,W/R#
30
32
A2-A31
READY#
LOCK#
3
4
M/IO#,D/C#,W/R#
BHOLD
386D X
RESET
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
70
Micro-Arquitectura 486
80486DX, 80486SX, 80486DX2,
80486DX4
Procesador 80486: Diagrama Interno
Autor: Alejandro Furfaro - 2008
72
Cache Multi Level (L1, y L2 cache)
Ejemplo práctico: Procesador 80486DX. Fue el primero en introducir esta
arquitectura
Autor: Alejandro Furfaro - 2008
73
Micro-Arquitectura P5
Pentium, Pentium MMX
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


Branch Prediction


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 - 2008
75
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 - 2008
Dos pipelines de
instrucciones
U pipeline: Ejecuta
instrucciones
enteras
V pipeline. Ejecuta
o solo
de punto
flotante
instrucciones
(equivale
a laparalelo
Unidad
enteras en
decon
ejecución
el U. del
486)
Dos Cache L1
internas: una de
datos (8 Kbytes)
y otra de código
76
(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.

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
77
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
78
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 - 2008
79
Interrupciones en SMP: El APIC
Autor: Alejandro Furfaro - 2008
80
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.
Autor: Alejandro Furfaro - 2008
81
Micro-Arquitectura P6
Pentium Pro, Pentium II,
Pentium II Xeon, Celeron,
Pentium III, Pentium III Xeon
Micro Arquitectura Three core engines
System Bus
L2 Cache
Bus Interface Unit
L1 ICache
Fetch
Fetch /
Decode
Unit
Dispatch
/Execute
Unit


L1 DCache
Load


Store

Retire
Unit


Instruction
Pool
Autor: Alejandro Furfaro - 2008
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
83
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
84
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
85
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 Cache
Memory
Reorder
Buffer
Bus Interface Unit
ICache
L1 DCache
Next_IP
WIRE
Reservation
Station
Branch
Table
Buffer
Simple
Instruction
Decoder
Simple
Instruction
Decoder
Microcode
Instruction
Sequencer
Complex
Instruction
Decoder
Register
Alias Table
Port 0
SIMD0
FEU
IEU
Memory
Interface
Unit
SIMD1
Port 1
JEU
IEU
Port 2
AGU
Port 3,4
AGU
Store
Retirement
Register File
Load
Re Order Buffer (Instruction Pool)
µop1
µop2
µop3
µop4
µop5
Autor: Alejandro Furfaro - 2008
µop6
µop7
µop8
µop9
µop10 µop11 µop12 µop13 µop14 µop15 µop16
86
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
87
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
88
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
89
Pentium II y III: Ports de Ejecución
Autor: Alejandro Furfaro - 2008
90
Micro Arquitectura NetBurst
Pentium IV, Xeon,
Pentium IV HT, Pentium M
Micro Arquitectura NetBurst: Diagrama
System Bus
Level 1 Data Cache
Bus Unit
Level 2 Cache
Memory Subsystem
Fetch/
Decode
Trace Cache
Microcode
ROM
BTB/Branch Prediction
Front End
Autor: Alejandro Furfaro - 2008
Excecution Units
Integer and FP Excecution Units
Out-of-Order
excecution
logic
Retirement
Branch History Update
Out-Of-Order Engine
92
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
93
Pentium IV: Out of Order Core
Autor: Alejandro Furfaro - 2008
94
Pentium IV: Diagrama detallado
Front End BTB
(4K entries)
Trace Cache BTB
(256 entries)
Instruction/TLB
Prefetcher
System Bus
(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
FP Register / Bypass
Slow ALU
Complex
Instruc
L1 Data Cache (8Kbyte 4-way)
Autor: Alejandro Furfaro - 2008
Simple FP
FP
MMX
SSE
SSE2
Cache L2
256 Kbytes
8 vías
FP
Move
(256 bits)
L2 Cache
Control Unit
48 Gbytes/seg
95
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 - 2008
96
Tecnología Hyperthreading
Autor: Alejandro Furfaro - 2008
97
Tecnología Hyperthreading
Front End NetBurst
(a) Búsqueda con L1 ICache Hit
(b) Búsqueda con L1 ICache Miss
Autor: Alejandro Furfaro - 2008
98
Tecnología Hyperthreading
Motor de ejecución Fuera de Orden con Hyperthreading
Autor: Alejandro Furfaro - 2008
99
Tecnología Hyperthreading
Modelo de procesamiento de dos threads
(a) Un procesador Hyperthreading
(b) Un procesador Dual Core
Autor: Alejandro Furfaro - 2008
100
Microarquitectura Core
Core2Duo Core2Quad Xeon
Quad Core
Dual Core
CORE 1
CORE 2
INSTRUCTION FETCH
AND PRE-DECODE
INSTRUCTION FETCH
AND PRE-DECODE
INSTRUCTION QUEUE
INSTRUCTION QUEUE
DECODE
DECODE
RENAME / ALLOC
RENAME / ALLOC
RETIREMENT UNIT
(REORDER BUFFER)
RETIREMENT UNIT
(REORDER BUFFER)
SCHEDULERS
SCHEDULERS
EXECUTE
EXECUTE
Autor: Alejandro Furfaro - 2008
102
Diagrama de arquitectura Core
Autor: Alejandro Furfaro - 2008
103
Quad Core
Autor: Alejandro Furfaro - 2008
104
Core i7
Autor: Alejandro Furfaro - 2008
105
Diagrama de arquitectura Core
Autor: Alejandro Furfaro - 2008
106
Pipeling en Core i7
Autor: Alejandro Furfaro - 2008
107
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
108
Macrofusion
Cola de instrucciones
Target
inc ebx
DEC 0
mov [esi],ebx
DEC 1
cmp ebx,50000
DEC 2
jne Target
DEC 3
Clock 1
Clock 2
mov eax,[esi+8]
Autor: Alejandro Furfaro - 2008
109
Macrofusion
Target
Cola de instrucciones
inc ebx
DEC 0
mov [esi],ebx
DEC 1
cmp ebx,50000
DEC 2
jne Target
DEC 3
mov eax,[esi+8]
Macro
Fusion
uCODE
ROM
cmpjne eax, [esi+4],Target
DECODE
EXECUTE
Autor: Alejandro Furfaro - 2008
110
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
111
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
112
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.
Micro arquitectura Core
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
Otras
IN
ORDER
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
DECODE/SCHEDULE
DECODE/SCHEDULE
INST 2 “LOAD [Y]”
INST 2 “LOAD [Y]”
INST 1 “STORE [X]”
INST 1 “STORE [X]”
INST 2 “LOAD [Y]”
EXECUTE
INST 1 “STORE [X]”
Inst. 2 “Load”
puede ejecutarse
Antes de la
Inst. 1 “Store”
Autor: Alejandro Furfaro - 2008
OUT
OF
ORDER
INST 2 “LOAD [Y]”
STALL
EXECUTE
INST 1 “STORE [X]”
Inst. 2 debe
Esperar a la
Inst. 1 “Store”
Para completarse
113
Smart Cache
L2 Compartida Microarquitectura
Core
Se
decrementa
Tráfico
L2 Independiente
Se
Incrementa
Tráfico
Disponible
Bi-Direccionalmente
En forma dinámica
L1
CACHE
CORE 1
L1
CACHE
CORE 2
Autor: Alejandro Furfaro - 2008
x
L1
CACHE
CORE 1
No
Compartible
L1
CACHE
CORE 2
114
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
115
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/ca
ches/MESIHelp.htm
Organización y Arquitectura de
Computadores. 5ta. Ed. William Stallins.
Capítulos 4, 12, 13, y 16
Autor: Alejandro Furfaro - 2008
116
Descargar