10. Evaluaci´on de las prestaciones del subsistema de memoria. 11

advertisement
U NIDAD T EM ÁTICA 3:
MEMORIA .
ACELERACI ÓN DEL ACCESO A
10. Evaluación de las prestaciones del subsistema de memoria.
11. Mejora de las prestaciones de las antememorias.
12. Mejora de las prestaciones de la memoria principal.
10-1
T EMA 10: E VALUACI ÓN DE LAS PRESTACIONES DEL SUBSIS TEMA DE MEMORIA
1. Repaso de la jerarquı́a de memoria.
2. Repaso de la estructura y funcionamiento de las antememorias.
3. Evaluación de las prestaciones del subsistema de memoria.
Bibliografı́a:
J.L. Hennessy & D. A. Patterson. Computer Architecture: A Quantitative Approach 2a y 3a ed., Morgan Kauffman Publishers, 1996 y 2002.
Departamento de Informática de Sistemas y Computadores (DISCA)
Facultad de Informática de Valencia
10-2
1 REPASO DE LA JERARQUÍA DE MEMORIA.
1. Repaso de la jerarquı́a de memoria.
“...los programadores pretenderán acceder a cantidades ilimitadas de memoria rápida...”
→ La jerarquı́a de memoria es una solución económica a esta pretensión.
Jerarquı́a de memoria
Principio de localidad. Los programas tienden a reutilizar el c ódigo y los
datos utilizados recientemente.
“Un programa gasta el 90 % de su tiempo ejecutando s ólo el 10 % del código”
Localidad temporal: los datos accedidos recientemente serán accedidos también en el futuro próximo.
Localidad espacial: los ı́tems cuyas direcciones estan cercanas tienden a ser
referenciados conjuntamente en un intervalo de tiempo.
Coste-prestaciones de las memorias:
Cuanto más pequeñas, más rápidas.
Cuanto más rápidas, más caras.
→ Subsistema de memoria organizado en diferentes niveles:
10-3
1 REPASO DE LA JERARQUÍA DE MEMORIA.
Jerarquı́a de memoria (cont.)
Cada nivel es más pequeño, más rápido y mas caro que el nivel inferior.
Objetivo: coste cercano al nivel más barato y velocidad cercana al más rápido.
Los datos almacenados en un nivel también están almacenados en el nivel
inferior, y ası́ sucesivamente.
En cada nivel, hace falta hacer corresponder direcciones del nivel inmediatamente inferior, más grande y más lento, sobre una memoria más pequeña pero
más rápida. Tambien se realizan funciones de protecci ón.
Importancia de la jerarquı́a de memoria
Conforme los procesadores son más rápidos, el diseño de la jerarquı́a de memoria
cobra más importancia:
Creciente diferencia de velocidad entre procesador y memoria:
En 1980, los procesadores no llevaban caches.
En 2001, muchos procesadores dos niveles de cache en el propio chip.
10-4
1 REPASO DE LA JERARQUÍA DE MEMORIA.
Requisitos diferentes para computadores de sobremesa,
servidores, y empotrados
Computador de sobremesa. Un usuario, una aplicación.
Objetivo: reducir latencia.
Servidores. Múltiples usuarios, múltiples aplicaciones
Objetivos: ancho de banda, protección.
Computadores empotrados. Una aplicacion, a veces sin sistema operativo.
Memoria principal pequeña, no hay disco.
Objetivos: Tiempo-real (importante conocer las prestaciones del peor-caso).
Bajo consumo. Hardware sencillo.
Memorias cache o antememorias
“Cache: un sitio seguro para esconder o almacenar cosas”
Cache: primer nivel de la jerarquı́a de memoria.
El principio de localidad se cumple a distintos niveles. El término cache se emplea
actualmente cuando se almacena información que se reutilizará: caches de ficheros,
cache de disco, cache de nombres, etc.
Acierto: cuando el procesador encuentra en la cache el dato solicitado.
Fallo: cuando el procesador no encuentra en la cache el dato accedido.
Como consecuencia del fallo, un bloque de informaci ón de tamaño fijo que
contiene la palabra accedida se copia de la memoria principal a la cache.
Tiempo para servir un fallo. Depende de la latencia y ancho de banda de la
memoria principal.
Latencia. Tiempo necesario para recuperar la primera palabra del bloque.
Ancho de banda. Velocidad con que se sirve el resto del bloque.
Los fallos de cache se gestionan mediante hardware, y causan que el procesador se
detenga hasta que el dato esté disponible.
10-5
1 REPASO DE LA JERARQUÍA DE MEMORIA.
Memoria virtual.
No todos los objetos referenciados por un programa deben estar en memoria principal. Si soporta memoria virtual, pueden estar en el disco.
El espacio de direccionamiento se divide en bloques de igual tama ño (páginas).
En un momento dado, una página puede residir en memoria o en disco.
Si el procesador referencia un ı́tem dentro de una página que no esté en memoria
principal, se produce un fallo de página, y la página entera se transfiere desde el
disco hacia la memoria principal.
Los fallos de página se gestionan mediante software y no detienen el procesador. El
procesador cambia de contexto, ejecutando otra tarea mientras se realiza el acceso
al disco.
10-6
2 ABC DE LAS CACHE
2. Repaso de la estructura y funcionamiento de las
antememorias.
Caracterizando las cache
Cualquier nivel de la jerarquı́a de memoria puede caracterizarse respondiendo a las
preguntas siguientes:
Ubicación de un bloque. ¿Dónde se ubica un bloque en el nivel superior?
Identificación de un bloque. ¿Cómo se encuentra un bloque, si está en el nivel
superior?
Reemplazamiento. ¿Qué bloque se elimina ante un fallo?
Polı́tica ante escrituras. ¿Qué se hace ante una escritura?
10-7
2 ABC DE LAS CACHE
Ubicación de un bloque.
Correspondencia directa. Un bloque sólo puede estar almacenado en un lugar
de la cache. La correspondencia es habitualmente:
No bloque cache = No de bloque referenciado mod No bloques cache
Correspondencia totalmente asociativa. Un bloque puede almacenarse en cualquier
lugar de la cache.
Correspondencia asociativa por conjuntos. Un bloque puede almacenarse en
un conjunto restringido de lugares en la cache.
Un conjunto es un grupo de bloques en la cache. Un bloque puede almacenarse en cualquier bloque de uno de los conjuntos, seleccionado habitualmente:
No conjunto = No de bloque referenciado mod No conjuntos cache.
Si hay n bloques por conjunto, se llama asociativa de n vı́as.
Cache de m bloques en total:
• Directa es asociativa de 1 vı́a. Hay m conjuntos (de 1 bloque).
10-8
2 ABC DE LAS CACHE
• Totalmente asociativa es asociativa de m vı́as. Hay 1 conjunto (de m
bloques)
Identificación de un bloque
Cada bloque almacenado en la cache tiene asociado una etiqueta que indica su dirección.
Para saber si un bloque referenciado por el procesador se encuentra en la cache, se
compara la dirección del bloque con las almacenadas en todas las etiquetas de la
cache.
Un bit de válido indica si un bloque de la cache tiene o no informaci ón válida.
Partes de una dirección emitida por el procesador:
¿Cómo comparar?
En paralelo con todas las etiquetas válidas. Con correspondencia directa, sólo
una comparación.
No hace falta incluir la palabra dentro del bloque (offset), ya que, el bloque
está presente o ausente por completo.
El ı́ndice (index) selecciona el conjunto. No hace falta incluir el ı́ndice en la
comparación, es redundante.
El campo de etiqueta (tag) permite comprobar si el bloque está o no en la
cache.
Para un mismo tamaño de cache, al aumentar la asociatividad (aumentar el n úmero
de bloques por conjunto), se reduce el tamaño del ı́ndice y se aumenta el de la
etiqueta.
10-9
2 ABC DE LAS CACHE
Reemplazamiento
Cuando hay un fallo de bloque, el bloque referenciado debe traerse de la memoria
principal y ocupar el espacio ocupado por otro. ¿Cuál de ellos debe eliminarse?
Con correspondencia directa, es trivial. Se debe eliminar el que está almacenado en
el lugar donde se alojará el nuevo.
Con correspondencia asociativa, pueden emplearse varias estrategias:
Aleatoria. Se elije un candidato al azar. Fácil de implementar.
LRU. Menos recientemente usado. Se pretende reducir el riesgo de eliminar
información susceptible de ser utilizada en el futuro.
FIFO. Elimina el bloque más antiguo. Más fácil de implementar que LRU.
Polı́tica ante escrituras
Las operaciones de lectura mucho más frecuentes que las de escritura.
¿Acelerar la lectura de cache? → Leer el bloque al mismo tiempo que se compara
la etiqueta.
Si es un acierto, la palabra correspondiente se envı́a al procesador.
Si es un fallo, se desecha. No hay beneficio, pero tampoco perjuicio (salvo el
consumo de energı́a inútil).
Escrituras
No se puede modificar un bloque hasta que no se confirme que se trata de una
acierto.
Sólo hay que modificar una palabra (o unas pocas palabras) del bloque.
El bloque modificado deberá escribirse también en la memoria principal.
10-10
2 ABC DE LAS CACHE
Polı́tica ante escrituras (cont.)
Estrategias en caso de acierto:
Write-through. La información se almacena tanto en la cache como en la
memoria principal.
• Más fácil de implementar.
• La memoria principal siempre está actualizada.
• El procesador debe esperar a que la escritura se complete
Solución: write buffer, que permite que el procesador contin úe tan pronto el dato se ha almacenado en el buffer, solapando la ejecuci ón con la
actualización de memoria.
Write-back. La información únicamente se almacena en la cache. El bloque
modificado se escribirá en la memoria principal cuando se reemplace. Un bit
dirty indica si un bloque se ha modificado, requiriendo entonces actualizar la
memoria principal.
• Emplea menos ancho de banda de memoria que Write-through.
• Los reemplazamientos requieren escribir en la memoria.
Estrategias en caso de fallo de bloque:
Write allocate. El bloque se lleva de la memoria principal a la cache. Entonces, se llevan a cabo las acciones de escritura con acierto.
Habitual con write-back
No-write allocate. El bloque no se lleva a la cache. S ólo se modifica en el
nivel inferior.
Habitual con write-through
10-11
3 PRESTACIONES DEL SUBSISTEMA DE MEMORIA.
3. Evaluación de las prestaciones del subsistema de
memoria.
Tiempo de acceso medio
Tiempo de acceso med. = Tiempo acierto + Tasa de fallos × Penalizacion por fallo
Tacceso = T A + T F × P F .
Modificación de la ecuación del tiempo de ejecución
para incluir el comportamiento real de la cache:
Tej = Tej cpu + Textra memoria , donde Tej cpu incluye el tiempo necesario para gestionar
los aciertos de cache y Textra memoria el tiempo necesario para gestionar los fallos1 .
Tej cpu = I × CP I × T
Textra memoria = Ciclos parada memoria ×T
• Ciclos parada memoria = No de fallos × Penalización por fallo =
NF × PF
• No de fallos = Instrucciones ×
•
Fallos
Instruccion
=
Accesos
×
Instruccion
Fallos
Instruccion
Tasa de fallos.
Sustituyendo:
Accesos
Ciclos parada memoria = Instrucciones × Instruccion
× Tasa de fallos ×
× Penalización por fallo = I × AP I × T F × P F .
Por lo tanto:
Textra memoria = I × AP I × T F × P F × T
1
suponiendo que los fallos detienen al procesador
10-12
3 PRESTACIONES DEL SUBSISTEMA DE MEMORIA.
Modificación de la ecuación del tiempo de ejecución (cont.)
Pueden considerarse por separado las lecturas y escrituras:
Accesos
Ciclos parada memoria = Instrucciones × Instruccion
× Tasa de fallos ×
× Penalización por fallo =
Lecturas
× Tasa de fallos lectura ×
• Instrucciones × Instruccion
× Penalización por fallo lectura, más
Escrituras
• Instrucciones × Instruccion
× Tasa de fallos escritura ×
× Penalización por fallo escritura.
Ciclos parada memoria = (I × LP I × T F L × P F L) +
+(I × EP I × T F E × P F E)
10-13
Descargar