Procesadores de 32 bits Tecnologías, Organización y …afurfaro/Clases/TDIII... · 2010-07-06 ·...

116
Procesadores de 32 bits Tecnologías, Organización y Micro Arquitectura

Transcript of Procesadores de 32 bits Tecnologías, Organización y …afurfaro/Clases/TDIII... · 2010-07-06 ·...

Procesadores de 32 bits

Tecnologías, Organización y Micro Arquitectura

Tecnología de Integración

Nanotecnología

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 6

Ley de Moore

Autor: Alejandro Furfaro - 2008 7

Pipeline Tecnológico: Fuente IDF2009

Autor: Alejandro Furfaro - 2008 8

Relación entre el pipeline tecnológico y las microarquitecturas

Organización de un computador

Conceptos generales: Arquitectura vs. Micro-Arquitectura

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 17

Etapas de un pipeline

Incluir el chequeo de interrupciones

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 19

Pipeline de seis etapas

Autor: Alejandro Furfaro - 2008 20

Efecto de un branch en un Pipeline de seis etapas

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 29

Comparaciones

Autor: Alejandro Furfaro - 2008 30

Efecto de las Dependencias

Autor: Alejandro Furfaro - 2008 31

Casos de Pipelining en el IA-32

Autor: Alejandro Furfaro - 2008 32

Ejemplo de Super pipeline: Pentium IV

Memoria Cache

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)

Micro-Arquitectura 386

80386DX, 80386SX

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

Micro-Arquitectura 486

80486DX, 80486SX, 80486DX2, 80486DX4

Autor: Alejandro Furfaro - 2008 72

Procesador 80486: Diagrama Interno

Autor: Alejandro Furfaro - 2008 73

Cache Multi Level (L1, y L2 cache)

Ejemplo práctico: Procesador 80486DX. Fue el primero en introducir esta arquitectura

Micro-Arquitectura P5

Pentium, Pentium MMX

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 80

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 90

Pentium II y III: Ports de Ejecución

Micro Arquitectura NetBurst

Pentium IV, Xeon,Pentium IV HT, Pentium M

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 94

Pentium IV: Out of Order Core

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 97

Tecnología Hyperthreading

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

Microarquitectura Core

Core2Duo Core2Quad Xeon Quad 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 103

Diagrama de arquitectura Core

Autor: Alejandro Furfaro - 2008 104

Quad Core

Autor: Alejandro Furfaro - 2008 105

Core i7

Autor: Alejandro Furfaro - 2008 106

Diagrama de arquitectura Core

Autor: Alejandro Furfaro - 2008 107

Pipeling en Core i7

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