1. Introduccion
1.1. Mecanismo de acceso de memoria
1.2. Diseño y evaluación del rendimiento de la jerarquía de memoria
1.3. Aspectos tecnológicoas y diseño de los niveles de jerarquía
2. Diseño de una jerarquía de memoria básica
2.1. Primer modelo descartado por bajo rendimiento
2.2. Jerarquia actual
2.2.1. Consta de
2.2.1.1. Memoria caché
2.2.1.1.1. Ubicada en el mismo chip del procesador
2.2.1.1.2. Fabricada con memoria RAM estática
2.2.1.1.3. Controlada por el controlador de caché
2.2.1.1.4. Existen varios niveles de caché
2.2.1.2. Memoria principal
2.2.1.2.1. Ubicada en chip diferente al procesador
2.2.1.2.2. Fabricada con memoria RAM dinámica
2.2.1.2.3. Controlada por el controlador de memoria principal
2.2.1.2.4. Puede ubicarse en el mismo chip del procesador y la memoria caché
2.2.1.3. Memoria Virtual
2.2.1.3.1. Ubicada en el disco duro
2.2.1.3.2. Fabricada con tecnología magnética
2.2.1.3.3. Se controla desde el sistema operativo a través del controlador de disco duro
2.2.2. Cada componente
2.2.2.1. Ubicado físicamente en un lugar distinto
2.2.2.2. Se fabrica con diferente tecnología
2.2.2.3. Se gestiona de manera independiente
2.3. Representación
3. Propiedades de una jerarquía de memora
3.1. Inclusión:La información de un nivel también debe estar en los niveles superiores
3.2. Coherencia: Las copias de información en diferentes niveles son coherentes entre sí
3.3. Correspondencia de direcciones entre los niveles de jerarquía
4. Aciertos y fallos de en el acceso a la caché
4.1. Palabra leer o escribir se busca en MC
4.1.1. Palabra encontrata: acierto
4.1.2. Palabra no encontrada: fallo
4.1.2.1. Se trae bloque que contiene una palabra desde MP
5. Principio de localidad
5.1. Localidad espacial
5.1.1. Se referencia a un elemento
5.1.2. Operaciones con matrices y arrays
5.1.3. Ejecución de un programa
5.1.4. Jerarquía de memoria mueve bloques con palabras contiguas en memoria, a los niveles más altos de la jerarquía
5.2. Localidad temporal
5.2.1. Jerarquía de memoria mantiene los datos accedidos recientemente lo más cerca posible del procesador
5.2.2. Estructura de los programas: datos y bucles
6. Bufer de escritura
6.1. Estructura hardware en la que se realizan escrituras en primera instancia
6.2. Se solapa la escritura con el siguiente nivel de la jerarquía con la ejecución de las instrucciones
6.3. Estructura pequeña y rápida organizada como una memoria caché
6.4. Si el buffer se llena el procesador debe detenerse
6.5. Tipos
6.5.1. Escritura Directa
6.5.1.1. Escrituras palabra a palabra en caché
6.5.1.2. El contenido de este buffer se vuelca en el siguiente nivel
6.5.1.2.1. Cuando esté lleno
6.5.1.2.2. Cuando se produzca un fallo de lectura y sea necesario actualizar el siguiente nivel con el contenido del buffer
6.5.2. Post-escritura
6.5.2.1. Se utiliza para volcar los bloques sucios que serán reemplazados en memoria caché
6.5.2.2. No hay necesidad de esperar a que se escriba el bloque sucio en el siguiente nivel, ya que se encuentra en el buffer
6.5.2.3. El contenido del buffer se volcará en el siguiente nivel
6.5.2.3.1. Cuando esté lleno
6.5.2.3.2. Cuando se produzca un fallo
6.6. Se produce un fallo de escritura si el acceso a MC es ara escritura y no se encuentra
6.7. Tipo de escritura
6.7.1. Escritura con ubicación
6.7.1.1. Se asocia con post-escritura
6.7.1.2. Se lleva el bloque de MP a MC donde se realiza la escritura
6.7.2. Escritura sin ubicación
6.7.2.1. Se asocia con escritura directa
6.7.2.2. Sólo se escribe sobre la MP
7. Aciertos y fallos en el acceso a la Memoria Principal
7.1. Relación entre MP y MV similar a la relación entre MC y MP
7.2. La MP se divide en páginas o segmentos
7.3. Cuando se produce un fallo de página o segmento, se debe acceder a la MV
7.4. Mv es la más lenta de la jerarquía
7.5. Gestión de la MP la realiza el SO
8. Mecanismo completo de acceso a memoria
8.1. Pasos
8.1.1. 1.Traducción de dirección virtual a dirección física
8.1.2. 2. Si la traducción es exitosa, la palabra se encuentra en MP, Con esta dirección se accede a la memoria caché
8.1.3. 3. Tipos de fallos en la MC
8.1.3.1. Iniciales: cuando se referencia
8.1.3.2. Capacidad: Cuando se producen reemplazos
8.1.3.3. De conflicto: Varios bloques tiene la misma dirección en memoria caché
8.1.4. 4. En caso de fallo, se pasa al controlador MP para mapear la dirección física de la palabra
8.1.5. 5. Controlador planifica acceso a MP
8.1.6. 6. En caso de acierto: Se incluye la palabra que se envía a la MC
8.1.7. 7. En caso de fallo: Se resuelve el fallo de página desde la MV
8.1.8. 8. El SO realiza un cambio de contexto y ejecuta otro proceso
8.1.9. 9. Al estar la página o el segmento en VP, se lleva el bloque a MC y se reanuda la ejecución de la instrucción que causó el fallo
8.2. En caso de 2 niveles de MC
8.2.1. En caso de fallo en 1er nivel, se intenta resolver desde el 2do
8.2.2. Si la palabra está en 2do nivel, se envía al 1er nivel
8.2.3. En caso de fallo, se debe intentar desde MP
8.2.4. Bloque que falla se lleva desde la MP, a la cache de 2d0 nivel, y de esta a la caché de 1er nivel
8.2.5. En procesador segmentado, todo este proceso debe completarse en la etapa de acceso a memoria
9. Evaluación de prestaciones de la jerarquía de memoria
9.1. Fórmulas
9.1.1. tiempoMemoria=tiempoAciertoMC+TasaFallos*PenalizacionPorFallo en MC
9.1.2. tiempo=tiempoCPU+tiempoMEM
9.2. Metricas
9.2.1. Latencia: Tiempo que transcurre desde el acceso a memoria hasta que finaliza
9.2.2. Ancho de banda: Cantidad de información por unidad de tiempo que se puede transferir a la memoria
10. Memoria Caché
10.1. Diseño
10.1.1. Almacena bloques (marcos)
10.1.2. Se emplea etiquetas o tags para determnar si los bloques están ocupados
10.1.3. Las etiquetas se comparan con la del bloque buscado para indicar si eiste un aietrto o un fallo
10.2. Aspectos de diseño
10.2.1. Organización
10.2.1.1. Tamaño de memoria caché
10.2.1.1.1. Demasia pequeña
10.2.1.1.2. Demasiado grande
10.2.1.2. Tamaño de marco
10.2.1.2.1. Bloques grandes
10.2.1.2.2. Se debe llegar a un compromiso considerando la latencia y el ancho de banda
10.2.1.3. Unificación o división de instrucciones y datos
10.2.1.3.1. La segmentación del procesador obliga a la división para evitar riesgos estructurales entre las etapas F y M
10.2.1.3.2. Cuando no se trata de primer nivel se puede optar por unificar en bloques de información comunes las instrucciones y los datos
10.2.1.3.3. Las decisiones se toman mediante una herrarmienta de simulación
10.2.1.4. Implementación de cachés multinivel
10.2.1.4.1. Es el aspecto más importante que ingluye en el rendimiento
10.2.1.4.2. Cuando se emplea una memoria caché de un solo nivel pequeñas y rápidas o lentas y grandes, la solución es utilizar cacheé de dos niveles.
10.2.2. Política de ubicación
10.2.2.1. La memoria caché solo almacena determinados bloques de información
10.2.2.2. Compara tasa de fallos contra el tiempo de acceso
10.2.2.3. Clasificacion
10.2.2.3.1. Correspondencia directa
10.2.2.3.2. Totalmente asociativa
10.2.2.3.3. Asociativa por conjuntos
10.2.3. Políticas de reemplazo
10.2.3.1. Al producirse un fallo en MC se debe determinar el bloqe de MC que se debe desalojar para traer desde MP el bloque que ha fallado
10.2.3.2. Selección puede reducir la tasa de fallos de accesos posteriores a MC
10.2.3.3. Algoritmos mas utilizados
10.2.3.3.1. Aleatorio
10.2.3.3.2. FIFO
10.2.3.3.3. LRU
10.2.4. Políticas de escritura
10.2.4.1. Escritura directa
10.2.4.1.1. Se escribe a la vez en el primer nivel de memoria caché y en el siguiente nivel de la jerarquía
10.2.4.1.2. Ventajas
10.2.4.1.3. Desventajas
10.2.4.2. Post-escritura
10.2.4.2.1. Al modificar una palabra solo se realiza en el primer nivel de caché
10.2.4.2.2. Emplea el bit sucio para indicar si el bloque ha sido modificado o no
10.2.4.2.3. Ventajas
10.2.4.2.4. Desventajas