• No se han encontrado resultados

Microarquitectura (2da parte)

N/A
N/A
Protected

Academic year: 2021

Share "Microarquitectura (2da parte)"

Copied!
36
0
0

Texto completo

(1)

Microarquitectura (2da parte)

Ing. Marcelo Doallo

Octubre 2012

(2)

Manejo del contenido de la memoria cache

Algoritmos de reemplazo del contenido de los set’s de la memoria cache:

LRU: Least Recently Used.

Se corresponde con el principio de vecindad temporal.

LFU: Last Frecuently Used Random

FIFO

(3)

Cache miss: Impacto en el Pipeline de instrucciones

Si la b ´usqueda de una instrucci ´on 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 ´on del pipeline!!

(4)

Coherencia de un cache

Una variable que est ´a en el cach ´e tambi ´en est ´a alojada en alguna direcci ´on de la DRAM

Ambos valores deben ser iguales

Cuando el procesador la modifica hay varios modos de actuar

Si el procesador realiza un miss mientras el controlador cache est ´a accediendo a la DRAM para actualizar el valor, deber ´a esperar hasta que controlador cache termine la actualizaci ´on para recibir desde este la habilitaci ´on de las l´ıneas de control para acceder a la DRAM.

(5)

Modos de actualizaci ´on de informaci ´on

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 ´ua

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 ´e el controlador cache deber ´a actualizar la copia de DRAM.

(6)

Estructura de Bus del sistema Multiprocesador con

cache

(7)

Multilevel cache

(8)

Protocolo de coherencia de cache MESI

Pensado para arquitecturas multiprocesador Cada l´ınea de cache tendr ´a un estado:

M - Modified: L´ınea presente solamente en ´este cache que

vari ´o 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 ´alido).

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 ´alida.

(9)

Interrupciones en SMP: El APIC

A partir del Procesador Pentium, Intel agreg ´o al chip del procesador un m ´odulo 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 ˜nan 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.

Si se lo habilita el procesador transforma los pines de interrupci ´on en:

PICCLK: Terminal de sincronizaci ´on con el otro procesador PICD0 y PICD1 bus de comunicaci ´on de dos l´ıneas

(10)

I/O APIC

El I/O APIC est ´a incluido en el chipset que acompa ˜na a cada procesador

Si tenemos, por ejemplo, 4 procesadores, los APICs se conectan a trav ´es de un juego de tres l´ıneas y por cada requerimiento de interrupci ´on 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

(11)

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 ´on desde alg ´un 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 ´este interrupciones peri ´odicas.

Overflow en el timer de Monitoreo de performance.

Sensor t ´ermico: 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 ´on.

(12)

Micro-Arquitectura 486

80486DX, 80486SX, 80486DX2, 80486DX4

(13)

Cache Multi Level (L1, y L2 cache)

Ejemplo pr ´actico: Procesador 80486DX. Fue el primero en introducir esta arquitecturas

(14)

Micro-Arquitectura P5

Pentium, Pentium MMX

(15)

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 ´on del 486)

V pipeline. Ejecuta solo instrucciones enteras en paralelo con el U.

Dependencia de Informaci ´on. 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 ´odigo (8 Kbytes)

(16)

Branch Prediction

Emplea Predicci ´on est ´atica de salto (es decir, asume que siempre salta).

Branch Table Buffer (BTB).

El procesador guarda en ese buffer la direcci ´on destino de una instrucci ´on de branch durante la etapa de

decodificaci ´on.

En el caso de que la predicci ´on almacenada por la Unidad de decodificaci ´on del pipeline (U o V) haya sido exacta la instrucci ´on se ejecuta sin atascos ni flushes del pipeline. Si al momento de la evaluaci ´on de la direcci ´on de salto esta no coincide con la predicci ´on 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

(17)

Micro-Arquitectura P6

Pentium Pro, Pentium II, Pentium II Xeon, Celeron, Pentium III, Pentium III Xeon

(18)

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 ´asicas (mops)

Las mops ingresan a un pool (ventana) en donde se mantienen para su ejecuci ´on

Los tres cores tienen plena visibilidad de esa ventana de ejecuci ´on

Se aplica la t ´ecnica de ejecuci ´on fuera de orden y ejecuci ´on especulativa.

La unidad de despacho y ejecuci ´on mantiene el modelo superescalar y lo combina con un super pipeline de 20 etapas

La unidad de retiro enviar ´a al exterior los resultados de acuerdo a la secuencia establecida en el programa.

(19)

Micro Arquitectura Three core engines

(20)

Funcionamiento del Core

Consideremos el siguiente c ´odigo gen ´erico r1 = mem [r0] /* instrucci ´on 1*/

r2 = r1 + r2 /* instrucci ´on 2*/ r5 = r5 + r4 /* instrucci ´on 3*/ r6 = r6 - r3 /* instrucci ´on 4*/

La instrucci ´on 1 genera un cache miss.

La instrucci ´on 2 depende del registro r1, no puede ejecutarse hasta no cargarse r1 con el valor v ´alido en la instrucci ´on 1.

En este punto cualquier core basado en ejecuci ´on en orden, se detiene hasta que se obtenga el operando apuntado por [r0] desde la memoria del sistema.

(21)

Funcionamiento del Core

Al crear una ventana de ejecuci ´on 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 ´a al exterior los resultados fuera de orden, sino que lo har ´a 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 todo lo posible la ventana de ejecuci ´on el procesador puede ejecutar fuera de orden y en forma especulativa mayor cantidad de instrucciones ante demoras en el acceso a los datos.

Adem ´as puede ejecutar en forma especulativa ambas ramas de un branch, descartando luego de verificar la condici ´on aquellas correspondientes a la rama que no se debe ejecutar.

Las primeras versiones eran capaces de analizar hasta 20 instrucciones.

(22)

Three core engines en detalle

(23)

Three core engines en detalle (cont.)

Next IP: Indice al cache de Instrucciones basado en el contenido que le provee el BTB

ICache, env´ıa a la Unidad de Decodificaci ´on la l´ınea apuntada por Next IP y la siguiente, (total = 16 bytes alineados)

La Unidad de Preb ´usqueda rota los 16 bytes para

justificarlos a los decodificadores y les marca el comienzo y fin de cada instrucci ´on

Los decodificadores de Instrucci ´on toman las instrucciones IA-32 contenidas en los 16 bytes y las convierten en mops (c ´odigo de operaci ´on decodificado listo para ejecutar, dos operandos fuentes, un operando destino, y algunos bits de estado)

Instrucciones simples (La mayor´ıa se traduce en 1 mop, el resto entre 2 y 4 mops)

Instrucciones complejas: Son tomadas por el Microcode Instruction Sequencer que generar ´a la secuencia necesaria de mops

(24)

Three core engines en detalle (cont.)

Las mops 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 mops se inyectan en el pool (o Re Order Buffer) La Unidad de Despacho y Ejecuci ´on las toma de este buffer mediante el bloque denominado Reservation Station y las deriva a sus diferentes puertos de ejecuci ´on.

El criterio de selecci ´on no es el orden que ocupan en el flujo de programa sino el estado que indican los bits correspondientes de cada mop.

Si estos bits indican que los operandos fuente de la instrucci ´on est ´an listos, se chequea si el recurso necesario para ejecutar esta mop est ´a disponible.

Si lo est ´a se ejecuta. Si no se espera a que se libere el recurso y se env´ıa

Un procesador P6 puede despachar 5 mops por los diferentes ports de ejecuci ´on.

(25)

Three core engines en detalle (cont.)

Las mops de branch se marcan en el pipeline con la direcci ´on de ca´ıda y la direcci ´on que se le precede. Cuando se ejecuta la instrucci ´on en la JEU

Si la direcci ´on resultante coincide con la predicci ´on almacenada en el BTB el resultado del procesamiento especulativo realizado en el Pool de Instrucciones se considera v ´alido.

Si el resultado no coincide entonces la JEU cambia el estado de todas las operaciones de la rama que se ejecut ´o especulativamente asumi ´endosela como v ´alida, y las remueve del Pool Instrucciones.

Unidad de Retiro

Chequea el estado de las mops en el pool (o Re Order Buffer). En busca de ejecutadas y sin ninguna mop precedente a ´un sin retirar del Pool de Instrucciones. Una vez retirada del Pool, escribe el destino IA-32 de la instrucci ´on original con el resultado.

(26)

Micro Arquitectura NetBurst

Pentium IV, Xeon, Pentium IV HT, Pentium M

(27)

Micro Arquitectura NetBurst: Diagrama

(28)

Micro Arquitectura NetBurst: Front end

Fetch/decode unit

Execution trace cache. Tama ˜no 12K mops. Funciones b ´asicas:

Preb ´usqueda de instrucciones para ser ejecutadas B ´usqueda de instrucciones que a ´un no han sido pre buscadas

Decodificaci ´on de las instrucciones en micro-operaciones Generaci ´on de micro c ´odigo para instrucciones complejas Env´ıo al Trace cach ´e de ejecuci ´on de las instrucciones decodificadas (mops)

Predicci ´on de saltos mediante algoritmos mas avanzados

(29)

Micro Arquitectura NetBurst: Out of Order Core

Pentium IV:

(30)

Wide Dynamic Execution

Cuatro v´ıas de ejecuci ´on de Micro operaciones en paralelo por cada core

Cuatro decodificadores. Hasta 5 decodificaciones por ciclo de clock. (contra las tres de la microarquitectura anterior) Microfusion

Macrofusion ALU’s mejoradas

(31)

Macrofusion

(32)

Macrofusion

(33)

Microfusion

Una vez decodificadas las instrucciones se traducen en mops.

La mayor´ıa de las instrucciones se traducen en 1 mop. Las instrucciones complejas se convierten en varias mops. Las ALU ejecutan mops

Microfusion permite agrupar varias mops en una mas compleja de modo de minimizar la cantidad de mops que se enviar ´an en cada unidad de ejecuci ´on.

(34)

Tecnolog´ıa Hyperthreading

(35)

Consumo

Tecnolog´ıa SpeedStep. Las unidades inician su operaci ´on sub clockeadas, y aumentan la frecuencia a medida que la

operaci ´on lo requiere (Pentium M)

(36)

Referencias

Intel 64 and IA-32 Architectures Software Developer’sR

Manual Volume 1: Basic Architecture. Cap´ıtulo 2

Organizaci ´on y Arquitectura de Computadores. 5ta. Ed. William Stallins.Cap´ıtulos 4, 12, 13, y 16

https://www.cs.tcd.ie/Jeremy.Jones/vivio/caches/MESIHelp.htm

Referencias

Documento similar

Primeros ecos de la Revolución griega en España: Alberto Lista y el filohelenismo liberal conservador español 369 Dimitris Miguel Morfakidis Motos.. Palabras de clausura

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

95 Los derechos de la personalidad siempre han estado en la mesa de debate, por la naturaleza de éstos. A este respecto se dice que “el hecho de ser catalogados como bienes de

La herramienta m´ as sencilla para domar al infinito es, probablemente, la inducci´ on matem´ atica , que consiste en llegar al infinito pasito a pasito, como en un efecto domin´

Preliminares Los procesos infinitos y sus paradojas ¿Cu´ antos infinitos hay?. ¿C´ omo se miden

cada recubrimiento tiene infinitos rect´ angulos, hay infinitos recubrimientos, por lo que tomar la mejor medici´ on requiere un proceso infinito.. Preliminares Los procesos infinitos

Con respecto a la asignación de la custodia, de forma específica, indicar que la modalidad de custodia compartida está más presente en el caso de divorcio de