ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2

15
ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1

description

ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2. Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1. Resumen. Cache de emplazamiento directo con bloque de varias palabras Tasa de fallos vs. Tamaño de bloque Tratamiento de los aciertos de cache - PowerPoint PPT Presentation

Transcript of ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2

ISI374 – Arquitectura de ComputadoresClase 20: Jerarquía de memoria Pt.2

Departamento de Ingeniería de SistemasUniversidad de Antioquia

2010-1

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

2

Resumen

Cache de emplazamiento directo con bloque de varias palabras Tasa de fallos vs. Tamaño de bloque Tratamiento de los aciertos de cache

Políticas de escritura» Escritura directa (Write through)» Post-escritura (Write back)

Tratamiento de los fallos de cache Ubicar en escritura (Write allocation) No ubicar en escritura (No write allocation)

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Ejemplo de cache de emplazamiento directo para el MIPS Bloques de una palabra

(= 4 Bytes) Tamaño de cache: 1K

palabras (= 4 KB) (K = 210 = 1024)

Byte offset: señala el byte específico dentro del bloque

Index: identifica el bloque de la cache

Tag: bits restantes que sirven para diferenciar las direcciones de memoria que mapean en la misma posición

3

¿Qué tipo de localidad se aprovecha?

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Cache de emplazamiento directo con bloque de varias palabras Intrinsity FastMATH (Procesador MIPS embebido)

Bloques de 16 palabras (= 64 Bytes = 512 bits) Tamaño de cache: 256 bloques (= 16 KB)

¿Qué tipo de localidad se aprovecha?

4

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Cache de emplazamiento directo con bloque de varias palabras

Ejercicio Memoria cache con 64 bloques, 16 bytes/bloque. Espacio de direcciones de 32 bits. ¿A cuál entrada de la cache mapeará la dirección 1200?

Índice = (Dirección del bloque) mod (# bloques en la cache)

Dirección del bloque = 1200/16 = 75 El bloque es la unidad de transferencia entre la cache y la memoria

Índice = 75 mod 64 = 11 De hecho, a este bloque mapean todas las direcciones entre 1200 y 1215

¿Qué tipo de localidad se aprovecha?

5

Tag Index Offset03491031

4 bits6 bits22 bits

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Consideraciones sobre el tamaño de bloque

Los bloques de mayor tamaño deben reducir la tasa de fallos Gracias a la localidad espacial

Sin embargo, en una cache de tamaño fijo Bloques más grandes Pocos de ellos en la cache

» Mayor competencia por los bloques Crecimiento de la tasa de fallos» Polución: un bloque es reemplazado antes de que muchas de sus

palabras sean accedidas» La localidad espacial de las palabras dentro de un bloque disminuye

cuando el tamaño de bloque se hace muy grande» La penalización del fallo se incrementa:

El tiempo necesario para buscar un bloque en el nivel inferior suele elevarse al aumentar el tamaño del bloque

La penalización se puede reducir un poco ocultando alguna parte del tiempo de transferencia (Early restart, critical-word-first)

6

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Tasa de fallos vs. Tamaño de bloque7

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Tratamiento de los aciertos de cache

Aciertos de lectura (en I$ y D$) Esto es lo que deseamos

Aciertos de escritura (sólo en D$) Cuando se escribe un dato en la cache, en algún momento este

dato también debe ser escrito en la memoria» Consistencia entre cache y memoria

La temporización de esta escritura se controla mediante lo que se denomina política de escritura

» Escritura directa (Write through): obliga a que la cache y la memoria sean consistentes

» Post-escritura (Write back): permite que la cache y la memoria sean inconsistentes (temporalmente)

8

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Escritura directa (Write through)

Técnica más simple para mantener la consistencia: Por cada escritura en la cache, escribe también en memoria

Sin embargo, las escrituras toman mucho tiempo Ej: si CPI base = 1 (sin fallos de cache), el 10% de las instrucciones

son stores y escribir en memoria toma 100 ciclos» CPI efectivo = 1 + 0.1×100 = 11 (el rendimiento se reduce en un factor

mayor que 10)

Una solución: emplear un buffer de escritura (write buffer) Almacena los datos que esperan para ser escritos en memoria Después de escribir los datos en la cache y en el buffer de escritura,

la CPU continúa su ejecución» La CPU sólo se detiene en una escritura si el buffer está lleno

La eficiencia del buffer de escritura depende de la relación entre las tasas de generación de escrituras de la CPU y de su procesamiento por parte de la memoria

9

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Post-escritura (Write back)

En un acierto de escritura de datos, esta técnica actualiza solamente el bloque en la cache

La escritura en la cache no se refleja inmediatamente en memoria El bloque escrito en la caché se marca como dirty

» Bit dirty (sucio, modificado) Bit extra por cada bloque de cache que indica que el bloque

almacenado en la cache difiere del bloque almacenado en la memoria

Sólo cuando un bloque marcado como dirty vaya a ser reemplazado se escribe en memoria

Puede emplear también un buffer de escritura para reducir la penalización cuando ante un fallo se reemplaza un bloque modificado (dirty)

El bloque dirty (bloque a reemplazar) se almacena en el buffer mientras que el nuevo bloque se lee desde memoria

10

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Ventajas de las políticas de escritura11

Escritura directa (Write through) Un fallo de lectura nunca produce una escritura en memoria De fácil implementación La memoria tiene la copia más reciente del dato (consistencia:

multiprocesadores, I/O)

Post-escritura (Write back) Las escrituras se realizan a la velocidad de la cache Varias escrituras dentro de un bloque requieren sólo una escritura

en memoria Emplea menos ancho de banda de memoria (multiprocesadores)

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Desventajas de las políticas de escritura12

Escritura directa (Write through) La escritura es muy lenta Cada escritura requiere un acceso a memoria Emplea más ancho de banda

Post-escritura (Write back) De difícil implementación La memoria no siempre es consistente con la cache Las lecturas que resulten en reemplazo (fallos de lectura) provocan

la escritura de bloques modificados (dirties) en memoria

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Tratamiento de los fallos de cache (bloques de una palabra)

13

Fallos de lectura (en I$ y D$) Detener (stall) el pipeline, buscar el bloque en el siguiente nivel de

la jerarquía de memoria, incrustarlo en la cache y enviar la palabra solicitada al procesador. Luego, el pipeline puede reanudar su operación

Fallos de escritura (sólo en D$)

El bloque es actualizado en memoria y traído a la cache, a lo que sigue la acción de un acierto de escrituraUbicar en escritura (Write allocation)

Escribir el bloque en memoria saltándose la escritura en la cacheNo ubicar en escritura (No write allocation)

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

Combinación de las políticas de escritura14

Cualquiera de las dos técnicas de tratamiento de los fallos de escritura (ubicación en escritura y no ubicación en escritura) se puede usar con escritura directa o post-escritura). Sin embargo, lo más normal es emplear:

Write through - No write allocation (WT-NWA) En un acierto, escribe tanto en la cache como en memoria En un fallo, actualiza el bloque en memoria sin traerlo a la cache Escrituras posteriores a ese bloque tendrán que ir de cualquier manera a

memoria debido a la escritura directa (se ahorra tiempo al no traer el bloque a la cache en un fallo porque igual será inútil)

Write back - Write allocation (WB-WA) En un acierto, escribe en la cache activando el bit dirty y no actualiza la

memoria En un fallo, el bloque se escribe en memoria y es traído a la cache Escrituras posteriores a ese bloque, si el bloque originalmente produjo un

fallo, acertarán en la cache la próxima vez ajustando el bit dirty del bloque (evita accesos extras a memoria como sucedería si se usará Write through)

ISI3

74 -

Arqu

itect

ura

de C

ompu

tado

res

(201

0-1)

15

Lecturas recomendadas

Interaction policies with main memory. G. Prabhu. Department of Computer Science, Iowa State UniversityAccesible vía web: http://www.cs.iastate.edu/~prabhu/Tutorial/CACHE/interac.html

Computer organization and architecture. Designing for performance, 6th ed., Chapter 4. W. Stallings. Pearson Education

Computer organization and design. The hardware/software interface, 3rd ed., Chapter 7. D. Patterson and J. Hennessy. Morgan Kaufmann Publishers