Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porBasilio Lujan Modificado hace 11 años
1
Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1
ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-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)
3
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 ¿Qué tipo de localidad se aprovecha?
4
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?
5
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? Tag Index Offset 3 4 9 10 31 4 bits 6 bits 22 bits
6
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)
7
Tasa de fallos vs. Tamaño de bloque
8
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)
9
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 = ×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
10
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
11
Ventajas de las políticas de escritura
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)
12
Desventajas de las políticas de escritura
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
13
Tratamiento de los fallos de cache (bloques de una palabra)
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 escritura Ubicar en escritura (Write allocation) Escribir el bloque en memoria saltándose la escritura en la cache No ubicar en escritura (No write allocation)
14
Combinación de las políticas de escritura
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)
15
Lecturas recomendadas
Interaction policies with main memory. G. Prabhu. Department of Computer Science, Iowa State University Accesible vía web: 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
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.