1. Conceptos básicos de una memoria
1.1. Introducción
1.1.1. Necesidad de una jerarquía de memoria
1.2. Diseño de una jerarquía de memoria básica
1.2.1. Niveles como memoria caché, principal y virtual
1.2.2. Memoria caché (MC)
1.2.2.1. Ubicada en el mismo chip que el procesador
1.2.2.2. Fabricada con memoria RAM estática (SRAM)
1.2.2.3. Controlada por el controlador de caché
1.2.2.4. Existen varios niveles de caché
1.2.3. Memoria Principal (MP)
1.2.3.1. Ubicada en un chip diferente al procesador
1.2.3.2. Fabricada con RAM dinámica (DRAM)
1.2.3.3. Controlada por el controlado de memoria principal
1.2.3.4. Controlador ubicado en el mismo chip que el procesador
1.2.4. Memoria Virtual (MV)
1.2.4.1. Ubicada en el disco duro
1.2.4.2. Se controla desde el S.O.
1.3. Propiedades de una jerarquía de memoria
1.3.1. Inclusión
1.3.2. Coherencia
1.3.3. Correspondencia de direcciones
1.4. Aciertos y fallos en el acceso a caché
1.4.1. La palabra leer o escribir se busca en MC
1.4.2. Si no se encuentra se trae un bloque
1.4.3. Principio de localidad
1.4.3.1. Localidad espacial
1.4.3.1.1. Operaciones con matrices y arrays
1.4.3.2. Localidad temporal
1.4.3.2.1. Estructura de los programas: datos y bucles
1.5. Aciertos y fallos en el acceso a la MP
1.5.1. Relación entre MP y MV similiar a la existente entre MC y MP
1.5.2. La penalización en este caso es mayor
1.5.3. En este nivel interviene el S.O.
2. Memoria caché
2.1. Diseño
2.1.1. Almacena unos marcos
2.1.2. Utiliza etiquetas o tags
2.1.3. Aspectos básicos
2.1.3.1. Organización de la memoria caché
2.1.3.2. Política de ubicación
2.1.3.3. Política de reemplazo
2.1.3.4. Política de escritura
2.2. Organización
2.2.1. Tamaño de la memoria caché
2.2.1.1. Demasiado pequeña
2.2.1.2. Demasiado grande
2.2.2. Tamaño de marco
2.2.2.1. Bloques grandes
2.2.2.2. Se debe llegar a un compromiso
2.2.3. Unificación o división de instrucciones/datos
2.2.3.1. La segmentación del procesador obliga a la división
2.2.3.2. Cuando no es el nivel 1 se unifican en bloques las instrucciones y los datos
2.2.4. Implementación de cachés multinivel
2.2.4.1. Nivel 1 (L1)
2.2.4.1.1. Cercana al procesador, pequeña y rápida
2.2.4.1.2. tMEM(lectura)=tacierto1+TFL1*pFL1
2.2.4.2. Nivel 2 (L2)
2.2.4.2.1. Mayor tamaño, aprovecha el principio de localidad y más lenta pero con menos fallos de capacidad
2.2.4.2.2. tMEM(lectura)=taciertoL1+TFL1*pFL1
2.2.4.2.3. pFL1=tL2=taciertoL2+TFL2*pFL2
2.2.4.2.4. Ganancia=tMEM(lectura)L1/tMEM(lectura)L2
2.3. Política de ubicación
2.3.1. tasa de fallos vs tiempo de acceso
2.3.2. Correspondencia directa
2.3.2.1. Cada bloque de MP con un marco de MC
2.3.2.2. Correspondencia entre MP y MC
2.3.2.3. Bloque x mod y marcos= marcos z
2.3.2.4. Ventaja
2.3.2.4.1. Lectura permite acceso simultáneo al directorio
2.3.2.5. Inconveniente
2.3.2.5.1. Incremento de la tasa de fallos
2.3.3. Totalmente asociativa
2.3.3.1. Cualquier bloque de MP con cualquier bloque de MC
2.3.3.2. La etiqueta se compara con todas las etiquetas almacenadas en caché
2.3.3.3. Ventajas
2.3.3.3.1. Flexibilidad
2.3.3.3.2. Mayor tasa de aciertos
2.3.3.4. Inconveniente
2.3.3.4.1. Mayor tiempo de acceso
2.3.4. Asociativa por conjuntos
2.3.4.1. Dividir la MC en C conjuntos de B bloques o vías
2.3.4.2. Correspondencia directa a nivel de conjuntos
2.3.4.3. Correspondencia asociativa a nivel de bloques
2.3.4.4. Reduce el tiempo de acceso
2.3.4.5. Incrementa la tasa de aciertos
2.3.4.6. Bloque x mod y conjutnos= conjunto z
2.4. Políticas de reemplazo
2.4.1. Si hay un fallo en MC, determinar qué bloque de MC desalojar
2.4.2. Algoritmos
2.4.2.1. Aleatorio
2.4.2.1.1. Utiliza un generador de números aleatorios
2.4.2.2. FIFO
2.4.2.2.1. First In First Out, reemplaza el bloque que ha permanecido en MC el mayor periodo de tiempo
2.4.2.3. LRU
2.4.2.3.1. Least Recently Used, reemplaza el bloque de memoria que lleva más tiempo sin utilizarse
2.4.3. Tasa de aciertos vs Tamaño caché
2.5. Políticas de escritura
2.5.1. No se puede realizar trabajo en paralelo
2.5.2. Escritura directa-Write through
2.5.2.1. Se escribe a la vez en el primer nivel de memoria caché y en el siguiente nivel de la jerarquía
2.5.2.2. Ventaja
2.5.2.2.1. Fácil de implementar
2.5.2.3. Inconveniente
2.5.2.3.1. Se genera mucho tráfico a memoria
2.5.3. Post-escritura - Write back
2.5.3.1. Se activa un bit, el bit de sucio o dirty bit, que indica si el bloque ha sido modificado o no
2.5.3.2. Ventaja
2.5.3.2.1. Menos tráfico de información
2.5.3.3. Inconveniente
2.5.3.3.1. Requiere más recursos
2.5.4. Buffer de escritura
2.5.4.1. Estructura hardware en la que se realizan las escrituras en primera instancia
2.5.4.2. Solapa la escritura con el siguiente nivel de la jerarquía
2.5.4.3. Escritura directa
2.5.4.3.1. Se hacen palabra a palabra en caché
2.5.4.4. Post-escritura
2.5.4.4.1. El buffer se utiliza para volcar los bloques sucios
2.5.5. Escritura con ubicación
2.5.5.1. Se asocia con post-escritura
2.5.6. Escritura sin ubicación
2.5.6.1. Se asocia con escritura directa
3. Mecanismo completo de acceso a memoria
3.1. 1. Traducción de la dirección virtual a la dirección
3.1.1. Project specifications
3.1.2. End User requirements
3.1.3. Action points sign-off
3.2. 2. Éxito con la palabra en MP
3.2.1. Define actions as necessary
3.3. 3. Tipos de fallos en la MC
3.3.1. Iniciales
3.3.2. De capacidad
3.3.3. De conflicto
3.4. 4. En caso de fallo hay que pasar por el controlador de MP
3.5. 5. El controlador planificará el acceso a la MP
3.6. 6. En caso de acierto, el bloque con la palabra se envía a la MC
3.7. 7. En caso de fallo, se resuelve desde la MV
3.8. 8. El SO realiza un cambio de contexto
3.9. 9. Con la página en MP, se lleva el bloque a MC
3.10. Mecanismo
3.10.1. Con 2 niveles de MC primero se resuelve desde el segundo
3.10.2. En caso de fallo se resuleve desde el MP
4. Evaluación de prestaciones de la jerarquía de memoria
4.1. Tiempo de acceso a la memoria
4.1.1. tMEM=taciertoMC+TF*pF
4.1.2. TF=num de fallos/numero total de accesos a memoria
4.1.3. t=tCPU+tMEM
4.1.4. tMEM=n de acceso a MI(taciertoMI+TFmi*pF)+n de acceso a MD(taciertoMD+TFmd*pFMD)
4.2. Métricas
4.2.1. Latencia
4.2.1.1. Tienpo desde que un acceso de memoria comienza hasta que termina
4.2.2. Ancho de banda
4.2.2.1. Cantidad de información por unidad de tiempo que se transfiere desde/hacia la memoria
5. Memoria Principal
5.1. Diseño
5.1.1. Chips de memoria
5.1.2. El controlador de memoria gestiona los accesos
5.1.3. Mapea la dirección física a ubicación física
5.1.4. Evolución desde la DRAM hasta las DDR3
5.2. DRAM convencional
5.2.1. Modelo obsoleto
5.2.2. Tiene un proceso de acceso a memoria
5.2.3. Desaprovechamiento de recursos
5.3. Fast Page Mode DRAM
5.3.1. División de la memoria en páginas
5.3.2. Acceso en modo burst
5.3.2.1. 5-3-3-3
5.3.2.1.1. 5 ciclos para el 1er acceso y 3 para los restantes
5.3.2.2. Fabricado con tiempos de acceso de 70 o 60ns
5.4. DRAM Sincrónica
5.4.1. Utiliza el reloj global del sistema
5.4.2. La memoria funciona en modo 5-1-1-1
5.4.3. Tiempos de acceso entre 25 y 10ns
5.5. DDR, DDR2, DDR3
5.5.1. DDR (Double Data Rate)
5.5.1.1. Transfieren información 2 veces en cada ciclo de reloj
5.5.2. DDR2
5.5.2.1. Permite trabajar a mayores frecuencias
5.5.3. DDR3
5.5.3.1. Reduce la tensión de alimentación
6. Memoria Virtual
6.1. Diseño
6.1.1. Permite
6.1.1.1. Multiprogramación
6.1.1.2. Ejecutar procesos más grandes que la MP
6.1.2. No se controla por hardware
6.1.3. La tecnología de la MV es el almacenamiento magnético
6.1.4. Unidad de información es el segmento o la página
6.1.5. Política de escritura es post-escritura
6.1.6. Resolver un fallo de página implica un cambio de contexto
6.1.7. Fallos de página se manejan por software
6.2. Organización de la MV
6.2.1. Dirección virtual
6.2.2. Dirección física
6.2.3. Memory Management Unit (MMU)
6.3. Asignación de memoria
6.3.1. Paginación
6.3.1.1. Tamaño fijo de bloque
6.3.1.2. Se gestiona con el SO
6.3.1.3. Tabla de páginas, donde se localizan las páginas por tablas que indexan la memoria
6.3.1.4. Memoria física se divide en bloques de tamaño fijo denominados marcos
6.3.1.5. Memoria virtual se divide en bloques del mismo tamaño denominados páginas
6.3.1.6. Ubicación y búsqueda
6.3.1.6.1. Dificultad en encontrar una entrada
6.3.1.6.2. Emplea una tabla de páginas que reside en memoria
6.3.1.6.3. Un bit de válido para indicar si la página está o no en la MP
6.3.1.7. Fallo de página
6.3.1.7.1. Transferir el control al SO
6.3.1.7.2. El SO reserva espacio(swap space) en disco para todas las páginas de un proceso
6.3.1.7.3. Si la página a reemplazar ha sido modificada se emplea write-back
6.3.1.7.4. Se añade el dirty bit a la tabla de páginas
6.3.1.7.5. Se transfiere el control a la dirección 0X8000 0180
6.3.1.7.6. El SO utiliza el registro cause
6.3.1.7.7. El SO salva el estado de proceso activo
6.3.2. Segmentación
6.3.2.1. Tamaño variable de bloque
6.3.3. Técnica híbrida
6.3.3.1. Los segmentos se componen de un número entero de páginas
6.4. Protección
6.4.1. Un bit de permiso de escritura en el TLB protege a una página escrita
6.4.2. Soprta modo supervisor y usuario
6.4.3. SO utiliza sólo isntrucciones en el modo supervisor para modificar elementos
6.5. Optimización con TLB
6.5.1. Traducción de direcciones conocida como (translation-lookaside buffer)
6.5.2. TLB Hit
6.5.2.1. La traducción si está en el TLB
6.5.3. TLB Miss
6.5.3.1. La traducción no está en el TLB, se genera una excepción
6.5.3.2. Los fallos de página en el acceso a datos son más complicados
6.5.3.3. La excepción invoca al SO, que trata el fallo via software
6.5.4. En el TLB se utiliza write-back
6.6. Thrashing-Working set
6.6.1. Thrashing, intercambia páginas entre la memoria y el disco
6.6.2. Rediseñar los algoritmos y las estructuras de datos para reducir el número de páginas de un programa, reducir el working set