Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Jerarquía de Memoria Unidad 2 Carreras: • Lic. en Sistemas • Ing. Informática Ing. Carlos A. Afranllie • Los programas comparten en la memoria tanto su código como sus datos. • Estrategia de optimización de rendimiento: posibilitar a la CPU el acceso ilimitado y rápido tanto al código como a los datos. • Inconveniente: tecnológicamente, cuanto más grandes son las memorias (más capacidad) más lentas y costosas resultan. Introducción Los programadores quieren memorias grandes y rápidas. • Problema: no existe hoy en día una memoria a la vez grande y rápida a un costo razonable. • Crearemos la ilusión de una memoria de las características deseadas combinando distintos tipos de memoria -> Jerarquía de memoria. Introducción Analogía: mesa en la biblioteca • Una buena selección de libros en la mesa (memoria pequeña y rápida). • Gran probabilidad de encontrar lo buscado sin ir a la estantería. • Visión de memoria grande (biblioteca) a la que se accede rápido (tiempo de escoger un libro de la mesa). Objetivo: detectar zonas del programa con más probabilidad de ser accedidas y llevarlas a la memoria más rápida Introducción Principio de Localidad: “En un momento concreto, los programas acceden a una parte relativamente pequeña de su espacio de direcciones.” • Localidad temporal: si se consulta un dato, seguramente será consultado próximamente. o Un libro de la mesa será consultado varias veces. • Localidad espacial: si se consulta un dato, seguramente otros datos cercanos a él serán consultados próximamente. o Traemos un libro del estante -> los libros que están próximos versarán sobre el mismo tema. Principio de Localidad • Localidad temporal de un programa. o Bucles: datos e instrucciones. for i:=1 to 1000 do a := a + 2; b := b * 3; c := c div 2; end; •Localidad espacial de un programa. o Instrucciones: ejecución secuencial. o Datos: estructuras de datos como las tablas y arrays. for i := 1 to 1000 do begin a[i] := 1; b[i] := 2; end; Principio de Localidad • El objetivo de organizar la memoria de un computador como una jerarquía de memorias es aprovechar el principio de localidad. • Consideración: las memorias más rápidas son las más caras por bit y por lo tanto suelen ser más pequeñas. Tiempos de acceso y precios de las distintas tecnologías de memoria más comunes (año 2009). • Objetivo: mucha memoria + tecnología barata + alta velocidad Conceptos Generales Tecnología Tiempo de acceso típico U$s por MB SRAM 1 ns 20 SDRAM 5 ns 0,01 Disco magnético 8.500.000 ns 0,0001 Conceptos Generales Jerarquía de Memoria • Sacar provecho de la localidad temporal de un programa: mantener los datos accedidos más recientemente cerca del procesador. • Sacar provecho de la localidad espacial de un programa: moviendo bloques de varios datos contiguos a los niveles próximos al procesador. ¿Cómo funciona? Jerarquía de Memoria • La jerarquía consta de múltiples niveles. • Los datos sólo se copian entre niveles adyacentes. o Nivel superior: más cercano al procesador, más caro, más rápido. o Nivel inferior: más lejano al procesador, más barato, más lento. ¿Cómo se maneja? Jerarquía de Memoria • Registros <-> Memoria o Por el compilador (programador?) • Caché <-> Memoria o Por el hardware • Memoria <-> Discos o Por el hardware y el sistema operativo (memoria virtual) o Por el programador (archivos) ¿Cómo se maneja? Jerarquía de Memoria Terminología básica: • Bloque: unidad mínima de información en una jerarquía de 2 niveles. procesador nivel superior nivel inferior bloques Niveles de una jerarquia de memoria Jerarquía de Memoria Terminología básica: • Acierto (hit): el elemento requerido por la CPU está en el nivel superior. • Fallo (miss): el elemento requerido por la CPU no está en el nivel superior ) Se accede al nivel inferior para recuperar el bloque que contiene al elemento requerido. • Frecuencia o Tasa de aciertos (hit rate): porcentaje de accesos a memoria encontrados en el nivel superior. • Frecuencia o Tasa de fallos (miss rate): (1 – tasa de aciertos). Porcentaje de accesos a memoria no encontrados en el nivel superior. Jerarquía de Memoria Terminología básica: • Tiempo de acierto: tiempo necesario para acceder al nivel superior de la memoria, incluyendo el tiempo para determinar si el acceso es un acierto o un fallo. • Tiempo de fallo: tiempo necesario para sustituir un bloque de nivel superior por el correspondiente bloque de nivel más bajo, más el tiempo necesario para proporcionar este bloque al dispositivo que lo solicitó (generalmente la CPU. • Penalización por fallo: tiempo de fallo + tiempo de acierto. Jerarquía de Memoria Rendimiento: Usaremos el tiempo medio de accesos a memoria como medida de rendimiento de la jerarquía de memoria. Tiempo medio de accesos = Tiempo de acierto + Frecuencia de fallos * Penalización de fallo tamaño de bloque tamaño de bloque penalizacion de fallo de fallo frecuencia tiempo de acceso t iempo de transferencia tamaño de bloque frente a penalizacion y frecuencia de fallo. Jerarquía de Memoria Clasificación: Usaremos términos que trascienden los niveles de los que estamos hablando y referirse a cualquier nivel: • Ubicación del bloque: ¿Dónde puede ubicarse un bloque en el nivel superior? • Identificación del bloque: ¿Cómo se encuentra un bloque en el nivel superior? • Sustitución de bloque: ¿Qué bloque debe reemplazarse en caso de fallo? • Estrategia de escritura:¿Qué ocurre en una escritura? Primer Nivel Memorias Caché: • Memorias muy rápidas • Poca capacidad • Se interponen entre el Procesador y la Memoria Principal Primer Nivel – Memorias Caché Primer Nivel – Memorias Caché Primer Nivel – Memorias Caché Primer Nivel – Memorias Caché Primer Nivel – Memorias Caché Primer Nivel – Memorias Caché 1 - ¿Dónde puede ubicarse un bloque en la cache? Primer Nivel – Memorias Caché 1.1 – Correspondencia Directa Primer Nivel – Memorias Caché 1.1 – Correspondencia Directa01234567 bloque num 01234567 bloque num 01234567 bloque num 00000000001111111111222222222233 01234567890123456789012345678901 asociativa total corresp. directa asoc. por conj. 01234567 bloque num 01234567 bloque num 01234567 bloque num 00000000001111111111222222222233 01234567890123456789012345678901 asociativa total corresp. directa asoc. por conj. Primer Nivel – Memorias Caché 1.1 – Correspondencia Directa Primer Nivel – Memorias Caché 1.2 – Asociativa Primer Nivel – Memorias Caché 1.2 – Asociativa 01234567 bloque num 01234567 bloque num 01234567 bloque num 00000000001111111111222222222233 01234567890123456789012345678901 asociativa total corresp. directa asoc. por conj. 01234567 bloque num 01234567 bloque num 01234567 bloque num 00000000001111111111222222222233 01234567890123456789012345678901 asociativa total corresp. directa asoc. por conj. Primer Nivel – Memorias Caché 1.3 – Asociativa por Conjuntos Primer Nivel – Memorias Caché 1.3 – Asociativa por Conjuntos 01234567 bloque num 01234567 bloque num 01234567 bloque num 00000000001111111111222222222233 01234567890123456789012345678901 asociativa total corresp. directa asoc. por conj. 01234567 bloque num 01234567 bloque num 01234567 bloque num 00000000001111111111222222222233 01234567890123456789012345678901 asociativa total corresp. directa asoc. por conj. Primer Nivel – Memorias Caché 2 - ¿Cómo se encuentra un bloque si está en la cache? 01234567 bloque num 01234567 bloque num 01234567 bloque num asociativa total corresp. directa asoc. por conj. etiqueta etiqueta busqueda busqueda 1 2 2 1 1 2 Primer Nivel – Memorias Caché 3 - ¿Qué bloque debe reemplazarse en un fallo de la cache? Primer Nivel – Memorias Caché 3 - ¿Qué bloque debe reemplazarse en un fallo de la cache? Primer Nivel – Memorias Caché 4 - ¿Qué ocurre en una escritura? Primer Nivel – Memorias Caché 4 - ¿Qué ocurre en una escritura? Primer Nivel – Memorias Caché Comparaciónde estrategias de escrituras en Caché Primer Nivel – Memorias Caché Las tres fuentes de fallos de la Caché • Forzosos: el primer acceso a un bloque no está en la cache; así que el bloque debe ser traído a la misma. Estos también se denominan fallos de arranque en frío o de primera referencia. • Capacidad: si la cache no puede contener todos los bloques necesarios durante la ejecución de un programa, se presentarán fallos de capacidad debido a los bloques que se descartan y luego se recuperan. • Conflicto: si la estrategia de ubicación de bloques es asociativa por conjuntos o de correspondencia directa, los fallos de conflicto ocurrirán, ya que se puede descartar un bloque y posteriormente recuperarlo si a un conjunto le corresponden demasiados bloques. Estos fallos también se denominan fallos de colisión. Primer Nivel – Memorias Caché • Los fallos forzosos son independientes de la caché. • Los fallos de capacidad disminuyen cuando la capacidad aumenta. • Los fallos de conflicto dependen de la asociatividad de la memoria: si es totalmente asociativa no existen conflictos, en la de mapeo directo los conflictos aumentan hasta su máximo posible. • Incrementar la capacidad de la caché reduce los fallos de conflicto así como los de capacidad, ya que una caché mayor dispersa las referencias. Segundo Nivel Memoria Principal: Segundo Nivel – Memoria Principal Latencia de la RAM: Segundo Nivel – Memoria Principal Latencia de la RAM: Segundo Nivel – Memoria Principal Organizaciones para mejorar el rendimiento de la Memoria Principal: Segundo Nivel – Memoria Principal Entrelazado (Interleaving): Segundo Nivel – Memoria Principal Limitaciones de la MP: Siguiente Nivel Memoria Virtual: Siguiente Nivel – Memoria Virtual Siguiente Nivel – Memoria Virtual Siguiente Nivel – Memoria Virtual
Compartir