Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de...

40
Arquitectura de Sistemas Paralelos (1) Gestión de memoria Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice Jerarquía de memoria Memorias cache Organización física Organización lógica • Optimización Memoria virtual • Bibliografía Arquitectura de computadores: Un enfoque cuantitativo, John L. Hennessy y David A. Patterson Organización y arquitectura de computadores, W. Stalling.

Transcript of Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de...

Page 1: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (1)

Gestión de memoria

Arquitectura de Sistemas Paralelos (2)

Gestión de memoriaÍndice y bibliografía

• Índice– Jerarquía de memoria

– Memorias cache• Organización física

• Organización lógica

• Optimización

– Memoria virtual

• Bibliografía– Arquitectura de computadores: Un enfoque cuantitativo, John L.

Hennessy y David A. Patterson

– Organización y arquitectura de computadores, W. Stalling.

Page 2: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (3)

• Necesidad de grandes cantidades de memoria rápida

• Diferentes tipos de memorias según los criterios de tamaño, velocidad y coste (tecnología)

• Principio de localidad: los programas favorecen una parte de su espacio de direcciones

Idealmente sería deseable una capacidad indefinidamente grande de memoria tal que cualquier particular…palabra estuviese inmediatamente disponible… Estamos… forzados a reconocer la posibilidad de construir una jerarquía de memorias, cada una de las cuales tenga mayor capacidad que la precedente pero que sea menos rápidamente accesible

A.W. Burks, H.H. Goldstine y J. von Neumann,

Discusión preliminar del diseño lógico de un instrumento de cálculo electrónico (1946)

Jerarquía de memoriaIntroducción

Arquitectura de Sistemas Paralelos (4)

Jerarquía de memoriaPrincipio de localidad

• Localidad temporal– Si se referencia un elemento, éste tenderá a ser

referenciado pronto (p.e. bucles)

• Localidad espacial– Si se referencia un elemento, los elementos

cercanos a él tenderán a ser referenciado pronto (p.e. tablas)

Page 3: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (5)

Jerarquía de memoriaDefinición

• Una jerarquía de memoria es una reacción natural a la localidad y tecnología

• Una jerarquía en memoria está organizada en varios niveles, cada uno más pequeño, más rápido y más caro por byte que el siguiente

• Los niveles de la jerarquía están contenidos en el siguiente: todos los datos de un nivel se encuentran también en el nivel siguiente y así sucesivamente hasta que alcancemos el extremo inferior de la jerarquía

Arquitectura de Sistemas Paralelos (6)

Jerarquía de memoriaConceptos básicos

• Nivel (level)

• Bloque o línea (block or line): mínima unidad de información que puede estar presente o no en la jerarquía de dos niveles (tamaño fijo o variable)

• Acierto/Fallo (hit/miss)

• Frecuencia de aciertos/fallos (hit rate/miss rate)

• Tiempo de acierto (hit time)

• Penalización por fallo (miss penalty)

– Tiempo de acceso (access time): tiempo para acceder a la primera palabra de un bloque en un fallo

– Tiempo de transferencia (transfer time): tiempo adicional para transferir las restantes palabras del bloque

Nivel superior

Nivel inferior

Bloques

Page 4: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (7)

Jerarquía de memoriaEjemplo

Registrosprocesador

Cache

Memoria principal

Cache de disco

Disco magnético

CD-DVD

Coste/bit (+)Capacidad (-)Velocidad (+)Frecuenciade accesos (+)

Arquitectura de Sistemas Paralelos (8)

• Tiempo medio de acceso a memoriaTiempo de acceso medio a memoria = Tiempo de acierto +

+ Frecuencia de fallos*Penalización por fallo

• Influencia de parámetros– El tamaño de bloque influye sobre:

• Penalización por fallo

→ Tiempo de acceso medio a memoria

• Frecuencia de fallos

Jerarquía de memoriaEvaluación del rendimiento

Page 5: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (9)

Evaluación del rendimientoRelación entre parámetros

Tamaño del bloque

Penalizaciónpor fallo

Tiempo de acceso

Tiempo de transferencia

Tamaño del bloque

Frecuenciapor fallo

Tamaño del bloque

Tiempo mediode acceso

Arquitectura de Sistemas Paralelos (10)

Jerarquía de memoriaCriterios para clasificar los niveles

• Ubicación de bloque¿Dónde puede ubicarse un bloque en el nivel superior?

• Identificación de bloque¿Cómo se encuentra un bloque si está en el nivel

superior?

• Sustitución de bloque¿Qué bloque debe reemplazarse en caso de fallo?

• Estrategia de escritura¿Qué ocurre en una escritura?

Page 6: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (11)

Memorias cacheIntroducción

• Representa el nivel de jerarquía de memoria entre la CPU y la memoria principal

• Se le pueden aplicar todos los conceptos vistos para la jerarquía de memoria (principio de localidad, terminología, etc.)

• Algunos datos (década del 90)

Arquitectura de Sistemas Paralelos (12)

Memorias cacheArquitecturas

• Organización física• Según su ubicación dentro o fuera del chip

procesador: internas o externas

• Según su ubicación con respecto al resto de dispositivos (configuración)

• Organización lógica• Según su estructura interna y funcionamiento:

ubicación, identificación, sustitución y escritura

• Según el tipo de información que contienen: unificadas o separadas

Page 7: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (13)

Arquitecturas de memorias cacheOrganización física

• Según su ubicación– Caches externas: No se encuentran en el interior del chip

del procesador (cache-off-chip)

– Caches internas: Se encuentran en el propio chip del proceador (cache-on-chip)

• Según la configuración– Configuración en serie (Look-Through Architecutre)

– Configuración en paralelo (Look-Aside Architecture)

Arquitectura de Sistemas Paralelos (14)

Organización física según la configuraciónConfiguración en serie

– Ventajas: Si el dato se encuentra en la cache no hay acceso a memoria y no se ocupa el bus

– Inconvenientes: La cache debe tener 2 interfaces de buses diferentes y el tiempo de acceso es mayor (igual al tiempo de acceso a cache más el tiempo de acceso a memoria principal)

Cache

CPU

DMA I/O Memoria

Bus local

Bus

Page 8: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (15)

Organización física según la configuraciónConfiguración en paralelo

– Ventajas: Sólo hay una interfaz con el bus y el tiempo de acceso es menor (igual al tiempo de acceso a memoria principal)

– Inconvenientes: El bus se ocupa en cualquier acceso a memoria, evitando que otros dispositivos puedan acceder a él

Cache DMA I/O Memoria

CPU

Bus

Arquitectura de Sistemas Paralelos (16)

Organización físicaEjemplo: Pentium II

Page 9: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (17)

Organización lógicaUbicación de bloque

• ¿Dónde puede ubicarse un bloque en una cache?– Caches de mapeado o correspondencia directa: si cada bloque

sólo tiene un lugar donde puede aparecer en la cache(dirección del bloque) MOD (número de bloques en cache)

– Caches totalmente o completamente asociativas: si cada bloque se puede colocar en cualquier parte de la cache

– Caches asociativas por conjuntos (asociativas por conjuntos de n vías): si cada bloque se puede colocar en un subconjunto restringido de lugares de la cache (conjunto). Un conjunto es un grupo de dos o más bloques de la cache

(dirección del bloque) MOD (número de conjuntos en cache)

Arquitectura de Sistemas Paralelos (18)

Ubicación de bloque

Memoria: 32 bloquesCaches: 8 bloquesTres tipos:- Completamenteasociativas

- De correspondenciadirecta

- Asociativa por conjuntos de 2 vías

Page 10: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (19)

Organización lógicaIdentificación de bloque

• ¿Cómo se encuentra un bloque si está en el nivel superior? La dirección se descompone en varios campos:– Etiqueta (tag): se utiliza para comparar la dirección requerida por la

CPU con aquellos bloques que pueden contener la información deseada (búsqueda en paralelo de etiquetas)

– Índice (index): se usa para seleccionar el conjunto en el caso de las asociativas por conjunto o el bloque en las de mapeado directo (conjuntos de una vía). No existe para las completamente asociativas

– Desplazamiento de bloque (block offset): selecciona el dato deseado dentro del bloque

• ¿Cómo se sabe que un bloque contiene información válida? Mediante el bit de válido (valid bit)

• Al calcular el coste de las caches hay que incluir el coste debido al almacenamiento de las etiquetas y el de los bits necesarios

Arquitectura de Sistemas Paralelos (20)

Identificación de bloqueSegún el tipo de cache (I)

• En caches de mapeado directo:

• En caches asociativas por conjunto:

• En caches completamente asociativas:

DesplazamientoÍndice(Bloque)

Etiqueta

DesplazamientoÍndice(Conjunto)

Etiqueta

DesplazamientoEtiqueta

Page 11: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (21)

Identificación de bloqueSegún el tipo de cache (II)

Memoria: 32 bloquesCaches: 8 bloquesTres tipos:- Completamenteasociativas

- De correspondenciadirecta

- Asociativa por conjuntos de 2 vías

Arquitectura de Sistemas Paralelos (22)

Identificación de bloqueEjemplos

• Procesador de 16 bits de datos y 24 de direcciones

• Tamaño de la cache: 8Kb

• Tamaño de la línea: 8 bytes

1. Cache completamente asociativa

2. Cache asociativa por conjuntos de 4 vías

3. Cache de mapeado directo

1

2

3

Byte:1bitPalabra: 2bits

Desplazamiento: 3bitsEtiqueta: 21bits

Byte:1bitPalabra: 2bits

Desplazamiento: 3bitsConjunto: 8bitsEtiqueta: 13bits

Byte:1bitPalabra: 2bits

Desplazamiento: 3bitsBloque: 10bitsEtiqueta: 11bits

Page 12: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (23)

Identificación de bloqueImplementación de caches de mapeado directo

Arquitectura de Sistemas Paralelos (24)

Identificación de bloqueImplementación de caches totalmente asociativas

Page 13: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (25)

Identificación de bloqueImplementación de caches asociativas por conjuntos

Arquitectura de Sistemas Paralelos (26)

Identificación de bloqueEjemplo: VAX-11/780

- Cache asociativa porconjunto de 2 vías

- Capacidad de datos: 8Kb- Tamaño de bloque: 8 bytes- Número de conjuntos: 512

Pasos de un acierto:1) División de la dirección2) Acceso a ambos bancos3) Comparación de etiquetas4) Multiplexación5) Envío a la CPU

Page 14: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (27)

Organización lógicaPolíticas de sustitución de bloque (I)

• ¿Qué bloque debe reemplazarse en caso de fallo? Se pueden seguir diferentes estrategias:– Aleatoria (Random): Se elige un bloque al azar

– FIFO (First Input First Out): Se sustituye el bloque que más tiempo ha estado en la cache

– LRU (Least Recently Used): Se sustituye el bloque que más tiempo ha estado en la cache sin ser referenciado

– LFU (Least Frecuently Used): Se sustituye el bloque que menos referencias ha tenido

• Se tienen en cuenta criterios de coste y eficiencia

• Los esquemas más utilizados son el aleatorio y el LRU

Arquitectura de Sistemas Paralelos (28)

Organización lógicaPolíticas de sustitución de bloque (II)

1

3

3

2

3

0

3

0

0

1

0

2

0

3

0 0

3

0

1

2

0

Bloque LRU

Dirección

Ejemplo de política LRU (cache de 4 bloques)

Comparativa de frecuencias de fallos (VAX, 16bytes/bloque)

Page 15: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (29)

Organización lógicaPolíticas de escritura (I)

• ¿Qué ocurre en una escritura? Opciones a la hora de escribir en la cache:– Escritura directa (Write through): La información se escribe en el bloque de

la cache y en el bloque de la memoria de nivel inferior– Postescritura (Copy Back): La información se escribe sólo en el bloque de la

cache. El bloque modificado de la cache se escribe en la memoria de nivel inferior sólo cuando es reemplazado

• Los bloques de las caches copy back se denominan sucios o modificados cuando la información de la cache difiere de la memoria de nivel inferior

• Para reducir la frecuencia de postescrituras en el reemplazo se usa el bit de modificación o sucio (dirty bit): si el bloque está limpio no se escribe en el nivel inferior

• Cuando una cache es write through, la CPU debe esperar la finalización de cada escritura antes de proceder con la siguiente operación. Para evitarlo se utiliza un buffer de escritura que permite al procesador continuar mientras se actualiza la memoria

Arquitectura de Sistemas Paralelos (30)

Organización lógicaPolíticas de escritura (II)

• Ventajas de las caches copy back:– En las caches copy back, las escrituras se realizan a la velocidad de la

memoria cache, y múltiples escrituras en un bloque requieren sólo una escritura en la memoria de nivel inferior

– Como cada escritura no va a memoria, la postescritura utiliza menos ancho de banda (multiprocesadores)

• Ventajas de las caches write through:– En las caches write through, los fallos de lectura no ocasionan

escrituras en el nivel inferior– Las caches write through son más fáciles de implementar– La escritura directa tiene la ventaja también de que la memoria

principal tiene la copia más reciente de los datos (coherencia de cache, multiprocesadores y E/S)

Page 16: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (31)

Organización lógicaPolíticas de escritura (III)

• ¿Qué ocurre en una escritura? Opciones cuando se produce un fallo de escritura:– Ubicar en escritura (Write allocation): El bloque se carga en la

cache y a continuación se escribe sobre él (similar a un fallo en lectura)

– No ubicar en escritura (No write allocatation): El bloque se modifica en el nivel inferior y no se carga en la cache

• Aunque cualquier política de fallo de escritura puede utilizarse con la escritura directa o con la postescritura, las caches copy backutilizan write allocation (CB-WA) y las write through usan no write allocation (WT-NWA)

Arquitectura de Sistemas Paralelos (32)

Organización lógicaCaches unificadas vs. Caches separadas

• Caches unificadas o mixtas (unified or mixed): Contienen tanto datos como instrucciones

• Caches separadas (separated): Existe una cache para datos y otra para instrucciones

Ventajas– No hay competencia entre el procesador de instrucciones y la unidad de

ejecución– Duplicación del ancho de bus (puertos separados)– Parámetros de diseño (capacidad, tamaños de bloque, asociatividad, etc.)

diferentes para instrucciones y datos (optimización)Inconvenientes

– En general la tasa de fallos global es algo mayor (próxima transparencia):• la caches de instrucciones tienen menor frecuencia de fallos que las de datos (localidad)• la separación de instrucciones y datos elimina fallos debidos a conflictos pero al dividir

también se fija el espacio de cache dedicado a cada tipo

– No se equilibra la carga de trabajo de forma automática

Page 17: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (33)

Ejemplo: Frecuencia de fallos (53% de referencias son instrucciones)– En cache unificada de 32Kb: 4.3%– En caches separadas de 16Kb: 53%*3.6%+47%*5.3%=4.4%

Caches unificadas vs. Caches separadasComparativa (I)

Comparativa de frecuencias de fallos (VAX, 16 bytes/bloque, LRU, 2 vías)

Arquitectura de Sistemas Paralelos (34)

Caches unificadas vs. Caches separadasComparativa (II)

• Ejemplo: (75% de accesos a instrucción)a) Cache unificada de 32Kb. Penalización: 50 ciclos, Tiempo de

acierto para instrucción: 1 ciclo, para datos: 2 ciclos (un solopuerto)

b) Caches separadas de 16Kb. Penalización: 50 ciclos, Tiempo de acierto: 1 ciclo

Solución:a) Tacceso medio =75%*(1+4.3%*50)+25%*(2+4.3*50)= 3.4 ciclos

b) Tacceso medio=75%*(1+3.6%*50)+25%*(1+5.3%*50)= 2.6 ciclos

Page 18: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (35)

OptimizaciónCómo mejorar el rendimiento de las caches

• El objetivo es reducir el tiempo medio de acceso a memoria:

Tiempo de acceso medio a memoria = Tiempo de acierto +

+ Frecuencia de fallos*Penalización por fallo

• Existen tres formas de reducir el tiempo medio de acceso a memoria:– Reducir los fallos de la cache (miss rate)

– Reducir las penalizaciones por fallo (miss penalty)

– Reducir el tiempo de acceso en caso de acierto (hit time)

Arquitectura de Sistemas Paralelos (36)

OptimizaciónReducción de fallos en las caches

• Existen tres tipos de fallos en una memoria cache:– Forzosos (Compulsory): En el primer acceso a un bloque éste no

se encuentra en la cache (fallos de arranque en frío o de primera referencia)

– Capacidad (Capacity): La cache no puede contener todos los bloques necesarios durante la ejecución de un programa

– Conflicto (Conflict): Diferentes bloques deben ir necesariamente al mismo conjunto o línea cuando la estrategia es asociativa porconjuntos o de correspondencia directa (fallos de colisión)

Page 19: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (37)

Reducción de fallos en las cachesTipos de fallos (I)

Arquitectura de Sistemas Paralelos (38)

Reducción de fallos en las cachesTipos de fallos (II)

Page 20: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (39)

Reducción de fallos de la cacheTécnica: Incremento del tamaño de bloque (I)

• Incrementar el tamaño de bloque– Ventajas: Se reducen los fallos forzosos como sugiere

el principio de localidad espacial

– Inconvenientes: Aumentan los fallos por conflicto al reducirse el número de bloques de la cache y los fallos de capacidad si la cache es pequeña. La penalización por fallo aumenta al incrementarse el tiempo de transferencia del bloque

Tamaño del bloque

Penalizaciónpor fallo

Tiempo de acceso

Tiempo de transferencia

Tamaño del bloque

Frecuenciapor fallo

Arquitectura de Sistemas Paralelos (40)

Reducción de fallos de la cacheTécnica: Incremento del tamaño de bloque (II)

Page 21: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (41)

Reducción de fallos de la cacheTécnica: Incremento del tamaño de bloque (III)

Ejemplo:Tiempo de búsqueda = 40CLKTasa de transferencia= 8bytes/CLKTiempo de acierto= 1CLKa) Cache de 1Kb con línea de 16bytesb) Cache de 256Kb con línea de 256bytesSolución:a) Tiempo de acceso medio a memoria = 1+15.05%*(40+2)=7.321 ciclosb) Tiempo de acceso medio a memoria = 1+0.49%*(40+32)=1.353 ciclos

Arquitectura de Sistemas Paralelos (42)

Reducción de fallos de la cacheTécnica: Incremento de la asociatividad

• Aumentar la asociatividad– Ventajas: Se reducen los fallos por conflicto

– Inconveniente: Aumenta el tiempo de acceso medio al incrementarse el tiempo de acierto (multiplexión). También aumenta el coste debidos a los comparadores

Tiempo medio de acceso a memoria (ciclos)

Cache de mapeado directo (1Kb):tamm= 1+(0.133*50)=7.65 ciclos

Cache asociativa por conjuntos de 8 vías (128Kb):tamm= 1.14+(0.006*50)=1.44 ciclos

Page 22: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (43)

Reducción de fallos de la cacheTécnica: Cache victima (I)

• Caches víctimas: Consiste en añadir una pequeña cache totalmente asociativa (1-5 bloques) para almacenar bloques descartados por fallos de capacidad o conflicto. En caso de fallo, antes de acceder a la memoria principal se accede a esta cache. Si el bloque buscado se encuentra en ella se intercambian los bloques de ambas caches– Cache víctima de 4 bloques reduce del 20% al 95% los

fallos de conflicto en una cache de correspondencia directa de 4Kb (Jouppi 1990)

Arquitectura de Sistemas Paralelos (44)

Reducción de fallos de la cacheTécnica: Cache victima (II)

Page 23: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (45)

Reducción de fallos de la cacheTécnica: Cache pseudo-asociativa

• Caches pseudo-asociativas (o columna asociativa): Consiste en utilizar toda la capacidad de la cache para reubicar algunos bloques extra en bloques que en principio no les pertenece– Implementación: Cuando en una cache de correspondencia

directa se falla, antes de ir a buscar en la memoria principal puede intentarse en otro bloque (el correspondiente al índice pero con el bit más significativo invertido) del “pseudo conjunto”

Tiempo de acierto

Tiempo de pseudo-aciertoTiempo de fallo

Arquitectura de Sistemas Paralelos (46)

Reducción de fallos de la cacheTécnica: Pre-búsqueda hardware de instrucciones y datos

• Pre-búsqueda hardware de instrucciones y dato: Consiste en que cuando se accede a memoria en caso de fallo no sólo se trae el bloque solicitado sino también los consecutivos, almacenándolos en un buffer. Si en el próximo acceso el bloque se encuentra en el buffer, se cancela el acceso en curso a la cache, se lee el bloque del buffer y comienza una nueva solicitud de pre-búsqueda.– En un sistema con caches de datos e instrucciones separadas de 64Kb

asociativas de 4 vías, un buffer de 8 bloques eliminan del 50% al 70% de los fallos (Palacharna and Kessler 1994)

Page 24: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (47)

Reducción de fallos de la cacheTécnica: Pre-búsqueda controlada por el compilador (I)

• Pre-búsqueda controlada por el compilador: Otra alternativa consiste en que es el propio compilador el que inserta instrucciones de pre-búsqueda, solicitando datos cuando aún no son necesarios– Pre-búsqueda en registro: El valor se almacena en un

registro

– Pre-búsqueda en cache: El valor se almacena en la cache

Arquitectura de Sistemas Paralelos (48)

Reducción de fallos de la cacheTécnica: Pre-búsqueda controlada por el compilador (II)

for(i=0;i<3;i++)for(j=0;j<100;j++)

a[i][j]=b[j][0]*b[j+1][0];Fallos de cache = (3*100)/2 + 101 = 251

for(j=0;j<100;j++){prefetch(b[j+7][0]);prefetch(a[0][j+7]);a[0][j]=b[j][0]*b[j+1][0];}

for(i=1;i<3;i++)for(j=0;j<100;j++){

prefetch(a[i][j+7]);a[i][j]=b[j][0]*b[j+1][0];

a[i][7] ... a[i][99] y b[7][0] ... b[99][0] pre-buscadosFallos de cache = (3*7)/2 + 8 = 19 (se evitan 232 fallos con 400 instrucciones prefetch)

Page 25: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (49)

Reducción de fallos de la cacheTécnica: Optimización del compilador

• Optimización del compilador: El compilador reordena el código de manera que por la forma en como se hacen los accesos se reducen los fallos de cache– Detectando conflictos y reordenando las instrucciones se han

reducido los fallos un 50% en una cache de correspondencia directa de 2Kb con bloques de 4 bytes y 75% en una de 8Kb (McFarling 1989)

– Técnicas: • Mejora de la localidad espacial: Mezcla de arrays e Intercambio

de bucles

• Mejora de la localidad temporal: Fusión de bucles y Bloqueado

Arquitectura de Sistemas Paralelos (50)

Reducción de la penalización por falloTécnica: Dar prioridad a los fallos de lectura sobre la escritura (I)

• Dar prioridad a los fallos de lectura sobre la escritura: En la caches WT el buffer de post-escritura mejora el rendimiento pero también complica los accesos a memoria cuando el bloque buscado se encuentra en el buffer (aún no ha sido escrito en memoria) y se produce un fallo en lectura de dicho bloque. ¿Qué hacer?

Ejemplo:

Una cache de correspondencia directa WT con buffer de post-escritura (conflicto entre las posiciones 512 y 1024) ¿El contenido de R2 y R3 es igual?

M[512] ← R3 -- escritura en buffer

R1 ← M[1024] -- fallo en lectura

R2 ←M[512] -- fallo en lectura (aún no se ha copiado el bloque)

-- El fallo en lectura debe esperar a que finalice la escritura

Page 26: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (51)

Reducción de la penalización por falloTécnica: Dar prioridad a los fallos de lectura sobre la escritura (II)

– Solución: Para evitar que los fallos en lectura esperen siempre a que el buffer se vacíe (en un buffer de cuatro palabras supone un incremento de la penalización de un 50%) se puede comprobar el contenido del buffer y si no hay conflicto permitir que el fallo en lectura continúe

– Esta técnica también permite reducir la penalización por fallo en caso de caches CB (escritura del bloque sucio)

Arquitectura de Sistemas Paralelos (52)

Reducción de la penalización por falloTécnica: Uso de Sub-bloques

• Uso de sub-bloques: – Cuando las etiquetas son demasiado grandes (ocupan mucho y su

comparación es costosa) pueden reducirse haciendo bloques más grandes pero eso aumenta la penalización por fallo (tiempo de transferencia)

– Para evitarlo pueden dividirse los bloques en sub-bloques y utilizar en vez de un bit de válido tantos como sub-bloques tengamos. Las transferencias son a nivel de sub-bloques

Caché de correspondencia directa

- Cache por bloques: 16 etiquetas16 bits de válido

- Caches con sub-bloques:4 etiquetas16 bits de válido

Page 27: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (53)

Reducción de la penalización por falloTécnica: Re-arranque rápido y primera palabra crítica

• Re-arranque rápido y primera palabra crítica: Estas técnicas se basan en el hecho de que en un momento dado la CPU sólo necesita una palabra del bloque para continuar la ejecución – Re-arranque rápido (Early restart): Consiste en no esperar

a leer todo el bloque sino que en cuanto se haya transferido la palabra solicitada enviarla a la CPU y luego continuar trayendo el bloque

– Primera palabra crítica (Critical word first): Consiste en solicitar a la memoria sólo la palabra que falló y enviarla tan pronto como llegue a la CPU. Mientras ésta continua con la ejecución, se rellena el resto de palabras del bloque

Arquitectura de Sistemas Paralelos (54)

Reducción de la penalización por falloTécnica: Caches no bloqueantes

• Caches no bloqueantes: Esta técnica se utiliza en máquinas con pipeline ( se verán en el tema de Introducción al Paralelismo). Por ejemplo, es posible continuar la búsqueda de una instrucción en la cachede instrucciones mientras se espera que se traiga un bloque fallido en la cache de datos

Page 28: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (55)

Reducción de la penalización por falloTécnica: Caches de segundo nivel (I)

• Caches de segundo nivel: Añadiendo un nivel más en la jerarquía de memoria (L1 y L2)

Rendimiento (tiempo medio de acceso a memoria, tmam)tmam=t_aciertoL1+f_falloL1*(t_aciertoL2+f_falloL2*p_falloL2)

– Frecuencia de fallos local: número de fallos en la cache dividido por el número total de accesos a esa cache (en L2 es f_ falloL2)

– Frecuencia de fallos global: número de fallos en la cache dividido por el número total de accesos a memoria generados por la CPU (en L2 es f_falloL1*f_falloL2)

Ejemplo:1000 referencias a memoria, 40 fallos en la cache L1 y 20 en la cache L2Frecuencia de fallos en L1 (tanto local como global) = 40/1000 =4%Frecuencia de fallos local para L2 = 20/40 =50%Frecuencia de fallos global para L2= 20/1000=2% (4%*50%)

Arquitectura de Sistemas Paralelos (56)

Reducción de la penalización por falloTécnica: Caches de segundo nivel (II)

Frecuencia de fallo vs.

Tamaño de cache(escalas lineal y logarítmica)

Cache de un único nivel:single cache miss rate

Cache de dos niveles:(primer nivel: 32Kb)

local miss rateglobal miss rate

Page 29: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (57)

Reducción de la penalización por falloTécnica: Caches de segundo nivel (III)

Ejemplo• ¿Cuál es el impacto de la asociatividad de la cache de segundo nivel sobre

la penalización?• Datos:

– Un grado de asociatividad 2 incrementa el tiempo de acierto en un 10% – Tiempo de acierto de L2 para cache de mapeado directo = 10 ciclos– Frecuencia de fallos local de L2 para cache de mapeado directo = 25%– Frecuencia de fallos local de L2 para cache asociativa de 2 vías = 20%– Penalización por fallo de L2 = 50 ciclos

SoluciónP_fallo1-vía-L1=10+25%*50=22,5 ciclosP_fallo2-vías-L1=10.1+20%*50=20.1 ciclos

El segundo nivel de cachedebe estar sincronizado conel primero (t_acierto=10 o 11 ciclos)

Arquitectura de Sistemas Paralelos (58)

Reducción del tiempo aciertoTécnica: caches pequeñas y simples

• Caches pequeñas y simples: Buena parte del tiempo de acierto se dedica a leer y comparar las etiquetas– Las caches pequeñas (on-chip) permiten tiempos de acierto

reducidos pero poca capacidad. Una posible solución: etiquetas on-chip y datos off-chip

– En las caches de correspondencia directa (simples) la comprobación de la etiqueta y el acceso al dato se hace a la vez

– En el primer nivel de cache se utilizan caches pequeñas y simples

Page 30: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (59)

Reducción del tiempo aciertoTécnica: Evitar la traducción de direcciones

• Evitar la traducción de direcciones durante la indexación de la cache: Consiste en almacenar direcciones virtuales ( se verá en el apartado de Memoria Virtual) en la cache, evitando así la traducción de direcciones virtuales a físicas en caso de acierto (Caches virtuales vs. Caches físicas)

Arquitectura de Sistemas Paralelos (60)

Reducción del tiempo aciertoTécnica: Escrituras en pipeline para aciertos en escritura rápidos

• Escrituras en pipeline para aciertos en escritura rápidos: Consiste en crear un pipeline ( se verán en el tema de Introducción al Paralelismo) para las operaciones de escritura, de manera que la escritura actual se hace solapada en el tiempo con la comparación de etiquetas de la escritura siguiente. Las operaciones de lectura no son parte de este pipeline pues la comparación de etiquetas y la lectura del bloque se hacen siempre en paralelo

Page 31: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (61)

Memoria virtualObjetivos

• Los objetivos de la memoria virtual son:– Permitir a los programas usar más memoria de la disponible

físicamente. Se gestiona automáticamente los dos niveles de la jerarquía de memoria representada por la memoria principal y la secundaria, liberando al programador de esta tarea (origen histórico)

... se ha inventado un sistema para hacer que la combinación de tambores de núcleos magnéticos parezca al programador como un simple nivel de almacenamiento, realizando automáticamente las transferencias precisas

Kilburn y cols. [1962]

– Compartir una misma memoria física entre diferentes procesos consu propio espacio de direcciones (sistemas multitarea). Sería muy costoso dedicar una memoria de tamaño igual al espacio total de direcciones a cada proceso. Se requiere un esquema de protección

Arquitectura de Sistemas Paralelos (62)

Memoria virtualDefiniciones (I)

• Página/Marco (page) o segmento (segment): en los términos definidos para la jerarquía de memoria es un bloque

• Fallo de página (page fault) o de dirección (address fault): en los términos definidos para la jerarquía de memoria es un fallo

• Direcciones virtuales: son las direcciones que genera la CPU

• Direcciones físicas: son las direcciones que atacan a la memoria principal

• Correspondencia de memoria (memory mapping) o traducción de direcciones (address translation): el proceso (software/hardware) para traducir las direcciones virtuales a direcciones físicas

• Niveles de la jerarquía controlados por la memoria virtual: Memoria RAM y disco duro

Page 32: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (63)

Memoria virtualDefiniciones (II)

D

C

B

A

A

B

C

D

Memoria principal

Disco

Memoria virtual

12K

8K

4K

0

Direcciones virtuales Direcciones físicas0

4K

12K

24K

28K

20K

16K

8K

Traducción de direcciones

Página

Fallo de página

Arquitectura de Sistemas Paralelos (64)

Memoria virtualDiferencias entre cache y memoria virtual (I)

• El reemplazo en los fallos de cache está controlado principalmente por hardware, mientras que el reemplazo en memoria virtual está controlador principalmente por el sistema operativo

• El tamaño de la dirección del procesador determina el tamaño de la memoria virtual, pero el tamaño de la cachees normalmente independiente de la dirección del procesador

• Además de actuar como memoria de más bajo nivel para la memoria principal en la jerarquía, la memoria secundaria se utiliza para el sistema de ficheros que normalmente no es parte del espacio de direcciones

Page 33: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (65)

Memoria virtualDiferencias entre cache y memoria virtual (II)

16-8192Mb0,0016-1MbTamaño de la memoria

0.00001-0.001%0.5-10%Frecuencia de fallo

700000-6000000 ciclos de reloj

500000-4000000 ciclos de reloj

200000-2000000 ciclos de reloj

8-100 ciclos de reloj

2-60 ciclos de reloj

2-40 ciclos de reloj

Penalización por fallo:

Tiempo de acceso

Tiempo de transferencia

40-100 ciclos de reloj1-2 ciclos de relojTiempo de acierto

4096-6553616-128 bytesTamaño de bloque

Memoria virtualPrimer nivel de cacheParámetro

Arquitectura de Sistemas Paralelos (66)

Memoria virtualPaginación vs. Segmentación (I)

• En los sistemas de memoria virtual los bloques pueden ser:– de tamaño fijo: Página (ligado al hardware)– de tamaño variable: Segmento (ligado al proceso)

• Cuando el bloque es de tamaño fijo se habla de paginación y cuando es variable de segmentación

• Lo más habitual es utilizar la paginación pues es más sencilla de implementar (direccionamiento, política de reemplazo, etc.)

• Hay soluciones híbridas: segmentación paginada en la que un segmento es un número entero de páginas (la política de reemplazo es más sencilla, pues no se necesita que la memoria sea contigua ni que los segmentos completos estén en memoria principal)

Page 34: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (67)

Memoria virtualPaginación vs. Segmentación (II)

Arquitectura de Sistemas Paralelos (68)

Paginación vs. Segmentación (III) Fragmentación

• Fragmentación externa (Segmentación)

• Fragmentación externa (Paginación)

Proceso1 Proceso1

Proceso2

Proceso1

Proceso2

Proceso3

Proceso1

Proceso3

Proceso1

Proceso3

Proceso4

Tiempo

Fragmentación externa

Solución: Compresión (muy costosa)

Marco1

Marco2

...

...Página

Fragmentación interna

Influencia del tamaño de páginaa) Pagina grande: Mayor eficiencia en la transferenciab) Página pequeña: Menor fragmentación y menor tiempo de arranque

Page 35: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (69)

Memoria virtualUbicación de bloque en paginación

• ¿Dónde puede ubicarse un bloque en memoria principal?– Los sistemas operativos permiten que los bloques se

coloquen en cualquier parte de la memoria principal (totalmente asociativa)

– Al ser muy alta la penalización por fallo en la memoria virtual, los diseñadores de S.O. optan por reducir la frecuencia de fallos en vez de utilizar un algoritmo de ubicación más sencillo

Arquitectura de Sistemas Paralelos (70)

Memoria virtualIdentificación de bloque en paginación

• ¿Cómo se encuentra un bloque si está en memoria principal?– La dirección virtual se descompone en dos campos: número de

página virtual y desplazamiento de página

– La dirección física se obtiene concatenando simplemente la dirección física de la página con el desplazamiento de página

– Se utiliza una estructura de datos (tabla de páginas) que contiene la dirección física de la página y es indexada por la dirección virtual

Page 36: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (71)

Identificación de bloque en paginaciónCorrespondencia entre dirección virtual y física

Arquitectura de Sistemas Paralelos (72)

Memoria virtualSustitución de bloque en paginación

• ¿Qué bloque debería sustituirse en un fallo de memoria virtual?– Con objeto de minimizar los fallos de página, se intenta sustituir

la página que menos recientemente ha sido usada (LRU)– Implementación de una política LRU: Muchas máquinas

proporcionan un bit de uso o bit de referencia para cada página, que se pone a uno siempre que dicha página es accedida. El S.O. borra periódicamente los bits de uso y más tarde los registra para poder determinar qué páginas fueron accedidas durante un periodo de tiempo determinado. De esta manera, el S.O. puede seleccionar una página que se encuentre entre la menos recientemente referenciadas

Page 37: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (73)

Memoria virtualPolítica de escritura en paginación

• ¿Qué ocurre en una escritura?– La estrategia de escritura es siempre la post-escritura

(write back) debido a la gran diferencia que existe entre los tiempos de acceso en uno y otro nivel

– Los sistemas de memoria virtual incluyen un bit de modificado o sucio (dirty) para que sólo los bloques que han sido alterados desde que se cargaron sean escritos en la memoria secundaria

Arquitectura de Sistemas Paralelos (74)

Memoria virtualTabla de páginas (I)

• Permite traducir direcciones virtuales a direcciones físicas

• Está indexada por el número de página virtual y contiene la dirección física de la página. Se requiere un bit de válido para indicar que la entrada contiene un página física válida (se encuentra en memoria principal y no se produce fallo de página)

• El tamaño de la tabla de páginas es inversamente proporcional al tamaño de página

• Las tablas de páginas son habitualmente tan grandes que se almacenan en memoria principal y, con frecuencia, paginadas ellas mismas: se requiere un acceso a memoria para obtener la dirección física y otro para obtener el dato

• Bits de control: válido, uso, sucio, permiso lectura y permiso escritura

• Optimización: Jerarquía de tablas de página, técnicas hashing (tablas de páginas invertidas) y Buffer de Traducción Anticipada (TLB)

Page 38: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (75)

Memoria virtualTabla de páginas (II)

Ejemplo: Dirección virtual de 28 bits, páginas de 4Kb y 4 bytes/entrada(256Mb/4Kb)*4 = 256Kb

Arquitectura de Sistemas Paralelos (76)

Memoria virtualBuffer de traducción anticipada o TLB (I)

• De nuevo el principio de localidad: Si las referencias tienen localidad entonces la traducción de direcciones también debe tener localidad

• El buffer de traducción anticipada (translation-lookaside buffer) o TLB es una cache, habitualmente totalmente asociativa o asociativa por conjuntos, cuyas entradas contienen: en la parte de la etiqueta, el número de página virtual (o parte) y en la parte del dato, el número de página física y los bits de control

• Un tamaño de página mayor hace que más memoria pueda estar mapeada con una entrada, por lo que se reduce el numero de fallos en la TLB

• Hay TLBs unificadas y separadas (datos e instrucciones)

32-8192Tamaño TLB

0.1%-0.2%Frecuencia de fallos

10-30 ciclos de relojPenalización de fallos

1 ciclo de relojTiempo de acierto

4-8 bytes (una entrada de tabla de página)Tamaño de bloque

Valores típicos de parámetros

Page 39: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (77)

Memoria virtualBuffer de traducción anticipada o TLB (II)

Arquitectura de Sistemas Paralelos (78)

Buffer de traducción anticipada o TLB (III) Ejemplo: TLB del VAX-11/780

Tamaño de página de 512bytesEntrada de TP de 4bytesTLB de 512bytes asociativa por conjuntos de 2 víasPasos:1: Envío del índice de la

dirección virtual2: Comprobación de válido y

tipo de acceso a memoria3: Comparación de etiquetas4: Envío de la dirección física a través del multiplexor5: Combinación del número y desplazamiento de página

Page 40: Gestión de memoria - Universidad de Sevillaicaro.eii.us.es/descargas/GM.pdf · Arquitectura de Sistemas Paralelos (2) Gestión de memoria Índice y bibliografía • Índice –

Arquitectura de Sistemas Paralelos (79)

Buffer de traducción anticipada o TLB (IV)TLB y cache

• Cuando se combinan caches y memoria virtual, la dirección virtual debe ser traducida a una dirección física mediante la TLB antes de que pueda acceder a la cache (elevado tiempo de acierto)

• Una forma de reducir el tiempo de acierto es:– acceder a la cache únicamente con el desplazamiento de página (no necesita

ser traducido) y mientras se están leyendo las etiquetas de dirección de la cache, el número de página virtual es enviado a la TLB para ser traducido

– como la TLB es habitualmente más pequeña y rápida que la memoria de etiquetas de la cache, la lectura de la TLB puede hacerse de forma simultánea a la lectura de la memoria de etiquetas sin ralentizar los tiempos de acierto de la cache

– después la comparación de direcciones se realiza entre la dirección física de la TLB y la etiqueta de la cache

• Inconveniente: una cache de correspondencia directa no puede ser mayor que una página

• Otra alternativa es utilizar caches virtuales (transparencia 59)