ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2 Departamento de...
-
Upload
basilio-lujan -
Category
Documents
-
view
3 -
download
0
Transcript of ISI374 – Arquitectura de Computadores Clase 20: Jerarquía de memoria Pt.2 Departamento de...
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