Subsistemas de memoria Departamento de Arquitectura de Computadores Índice Introducción. Conceptos básicos Memoria Principal Características físicas Organización Memoria Caché Características de los sistemas de memoria Jerarquías de memoria Organización Políticas de ubicación Políticas de sustitución Políticas de escritura Políticas de búsqueda Memoria Virtual Índice Introducción. Conceptos básicos Memoria Principal Características físicas Organización Memoria Caché Características de los sistemas de memoria Jerarquías de memoria Organización Políticas de ubicación Políticas de sustitución Políticas de escritura Políticas de búsqueda Memoria Virtual Introducción Memoria Ideal = Rápida, grande y barata. ¿Qué significa que sea “rápida”? ¿Qué significa que sea “grande”? Que el tamaño de la memoria no limite los programas que puedo ejecutar. ¿Qué significa que sea “barata? Monociclo = Poca latencia de operación (tciclo pequeño) Multiciclo = Que no determine el tiempo de ciclo. Abordable económicamente. Sin embargo, la realidad es otra: Las memorias grandes son lentas Las memorias rápidas son pequeñas (y caras) Introducción La memoria es un bloque fundamental del computador, cuya misión consiste en almacenar datos e instrucciones A veces la memoria principal no tiene suficiente capacidad para almacenar todos los datos e instrucciones, en cuyo caso se hace uso de sistemas secundarios o auxiliares que almacenan la información y cuando ésta se precisa es transferida a memoria principal. La memoria únicamente realizar dos operaciones: puede Lectura: el sistema recibe la dirección de la cual se quiere extraer la información la información previamente introducida. Escritura: Además de la dirección donde se quiere escribir es necesario aportar el dato. Dirección Datos Lectura/Escritura DISPOSITIVO DE MEMORIA Características de los sistemas de memoria: Ubicación El término “Ubicación” indica si la memoria es interna o externa al computador: CPU: registros y Caché L1. La memoria interna se identifica con la Memoria Principal del sistema (Caché L2): Conjunto de circuitos integrados en los que, de forma temporal, se almacenan los datos e instrucciones necesarios para la ejecución de cualquier programa. La memoria externa o secundaria consta de dispositivos periféricos de almacenamiento tales como discos unidades de cinta que son accesibles por la CPU a través de controladores de E/S. Disco Controlador E/S Memoria Principal CPU Características de los sistemas de memoria: Capacidad Se denomina capacidad o tamaño a la cantidad de información que puede almacenar una memoria. La capacidad se puede expresar en unidades de bits, bytes o palabras aunque lo mas corriente en hacerlo en bytes (1 Byte = 8 bits). Kilo byte = 1 KB = 210 bytes = 1024 B Mega byte = 1 MB = 210 KB = 220 B Giga byte = 1 GB = 210 MB = 230 B Tera byte = 1 TB = 210 GB = 240 B Características de los sistemas de memoria: Unidad de transferencia La unidad de transferencia suele coincidir con el número de líneas de entrada/salida de datos del módulo de memoria, es decir el número de bits que se leen o escriben a la vez en la memoria. Longitudes de palabras comunes: 8, 16 y 32 bits. Para memoria interna: Palabras Para memoria externa: Bloques (unidad mayor que la palabra) Características de los sistemas de memoria: Método de Acceso Acceso secuencial: la memoria se organiza en unidades de datos llamadas “registros”. Debe ir trasladándose desde la posición actual a la deseada, pasando por todos los registros intermedios (unidades de cinta): Tiempo de acceso muy variable depende de la localización del dato en el medio Acceso directo: los registros (discos duros) tienen una dirección única basada en su dirección física. El acceso se realiza en dos fases: Acceso directo a la vecindad. Búsqueda secuencial. Tiempo de acceso muy variable. Acceso aleatorio (memorias Random Access Memory): cada posición de memoria direccionable tiene un mecanismo cableado físicamente propio. Por tanto cualquier dirección puede seleccionarse aleatoriamente y ser accedida de forma directa (memoria principal). Tiempo de acceso constante. Asociativa: se accede a una posición basándose en su contenido en lugar de su dirección. Cada posición posee su propio mecanismo de direccionamiento (memoria caché): Tiempo de acceso constante. Características de los sistemas de memoria: Prestaciones Tiempo de acceso (memoria aleatoria): Tiempo de ciclo (memoria aleatoria): Tiempo de lectura (ta) es el tiempo que tarda la memoria en suministrar una palabra desde que se proporciona la dirección y la señal de lectura. Tiempo de escritura (te) es el tiempo que tarda la memoria en grabar información desde el momento en que se suministra la dirección, la información y la señal de escritura. Para otro tipo de memorias es el tiempo que se necesita hasta que el mecanismo de lectura/escritura se sitúa en la posición deseada. Tiempo de acceso + tiempo auxiliar hasta que se pueda iniciar un segundo acceso a memoria (finalización de transacciones en líneas…). La velocidad de transferencia: Es la velocidad a la que se pueden transferir datos a o desde una unidad de memoria. Para memorias aleatorias coincide con el inverso del tiempo de ciclo. Para otras memorias se utiliza la siguiente relación: TN: tiempo medio de escritura lectura de N bits TA: tiempo de acceso medio N: número de bits R: velocidad de transferencia en bits por segundo (bps). TN = TA + N R Características de los sistemas de memoria: Soporte: tecnologías de memoria Las tecnologías principales de memoria son: Memorias semiconductoras: RAM, ROM Memorias de soporte magnético: Discos, cintas. Memorias ópticas: CD-R Memorias magneto-ópticas: CD-RW Los medios pueden clasificarse según el tiempo que la información permanece grabada sobre ellos: Memoria no-volátil (información permanente): una vez grabadas la información permanece sin deteriorarse hasta que esta se modifique intencionadamente. No se necesita alimentación (ROM). Memoria volátil (información desaparece) (RAM): SRAM (Static Random Access Memory): Baja densidad, alto consumo potencia, cara, rápida. Estática = no necesita ser refrescada. DRAM (Dynamic Random Access Memory): Alta densidad, baja potencia, barato lento. Dinámica = Se necesita un refresco para mantener la información (memorias basadas en condensador). Impacto de la velocidad de la memoria en el rendimiento Supongamos un procesador a 200 MHz (tciclo=5 ns), con un CPI medio de 1.1 ciclos con un sistema de memoria ideal para un programa determinado que tiene 50% de instrucciones aritmético-lógicas, 30% de instrucciones de carga almacenamiento (memoria) y 20% de instrucciones de control. Si ahora ponemos un sistema de memoria real que provoca que el 10% de las instrucciones de memoria tengan una penalización de 50 ciclos, ¿cómo varía el CPI? Hemos perdido el 58% de rendimiento. El procesador pasa ahora el 58% del tiempo bloqueado esperando que lleguen los datos de memoria Organización jerárquica de la memoria Las características de las tecnologías actuales cumplen: A mayor capacidad, mayor tiempo de acceso (Discos). A menor tiempo de acceso, mayor coste por bit (caché). A mayor capacidad, menor coste por bit. El diseñador desea utilizar tecnologías que cuenten con: Objetivo Dar la impresión al usuario de que tiene una memoria grande, rápida y barata ¿Cómo? Bajos costes Tiempos de acceso reducidos (rápidas) Gran capacidad de almacenamiento Organizando la memoria de forma jerárquica llegando así a un compromiso entre Tecnología, Coste y Velocidad. ¿En qué consiste? Utilizar distintos niveles de memorias de forma que los niveles más cercanos al procesador utilizan tecnología más rápida (aunque son de menor tamaño y más caras) y los niveles más lejanos al procesador utilizan tecnología más lenta (son de mayor tamaño y más baratas). Organización jerárquica de memoria Disminuye el coste por bit Aumenta la capacidad Aumenta el tiempo de acceso Disminuye la frecuencia de accesos a la memoria por parte del procesador. Esta jerarquía proporciona al diseñador toda la potencia necesaria siempre y cuando la última de las condiciones se cumpla: CLAVE: disminución de la frecuencia de acceso. Es necesario que los datos que solicite la CPU se encuentren en los niveles mas rápidos de la jerarquía. Velocidad Capacidad A medida que descendemos por una jerarquía típica ocurre: Coste Visión general del sistema de memoria ¿Por qué funciona el sistema jerárquico? Los programas no acceden de forma aleatoria a su código y a sus datos, sino que tienden a tener un comportamiento predefinido que sigue un determinado patrón. Principio de localidad de referencia: Los programas acceden en cualquier instante de tiempo a una porción de memoria relativamente pequeña del espacio de direcciones total. Principio de localidad En el curso de la ejecución de un programa, la referencias a memoria por parte del procesador tanto para datos como instrucciones, tienden a estar agrupadas en regiones de tiempo y espacio. Localidad temporal: Si se referencia una posición de memoria en un instante de tiempo determinado, existe una alta probabilidad de que vuelva a ser referenciada en los instantes siguientes. Localidad espacial: Si se referencia una posición de memoria en un instante determinado, existe una alta probabilidad de que en los instantes siguientes se referencien las posiciones de memoria cercanas. Por ejemplo, cuando se ejecutan iteraciones de un bucle, el procesador ejecuta repetidamente el mismo conjunto de instrucciones, variables. Por ejemplo, cuando se procesa una tabla de datos, arrays, vectores, acceso a instrucciones secuenciales. Conclusión: el sistema de jerarquía de memoria saca provecho de: Localidad temporal manteniendo los datos recientemente accedidos en los niveles mas cercanos a la CPU. Localidad espacial moviendo bloques consistentes en múltiples palabras contiguas, desde los niveles más lejanos a los niveles mas cercanos al procesador. Principio de localidad Niveles de la jerarquía y tecnologías asociadas Aplicando el Principio de Localidad: Presentamos al usuario tanta memoria como sea posible en la tecnología más barata. Proporcionamos acceso a la velocidad ofrecida por la tecnología más rápida. Terminología (1) Nivel superior e inferior Bloque Entre dos niveles adyacentes de la jerarquía de memoria se denomina nivel superior al que está más cerca del procesador y nivel inferior al que está más lejos. El nivel superior es siempre mas pequeño y rápido que el inferior. Es la unidad mínima de información que está presente o no en un nivel de la jerarquía. Las transferencias de información se realizan siempre entre niveles adyacentes de la jerarquía. La cantidad mínima de información que se transfiere es un bloque. Terminología (2) Acierto y Fallo Tasa de aciertos y fallos Si los datos que se piden a un nivel se encuentran allí, se dice que se ha producido un acierto (hit). En caso contrario se produce un fallo (miss). Cuando se produce un fallo en un nivel se accede al nivel inmediatamente inferior para buscar esa información. La tasa de aciertos de un nivel (hit rate): porcentaje de accesos encontrados en ese nivel, sobre el total de accesos realizados a dicho nivel. La tasa de fallos de un nivel (miss rate): porcentaje de accesos no encontrados en ese nivel, sobre el total de accesos realizados a dicho nivel. También se define como (1-tasa de aciertos). La tasa de aciertos y/o la tasa de fallos se usan a menudo como medida del rendimiento de la jerarquía de memoria. Menor tasa de fallos → menos veces hay que recurrir a los niveles más bajos (y más lentos) de la jerarquía → tiempo medio de acceso a memoria es mucho menor. Una tasa de fallos baja indica que se accede pocas veces a los niveles más lentos de la jerarquía de memoria. Terminología (3) Tiempo de acierto Tiempo necesario para acceder a un dato en el nivel superior de la jerarquía. Incluye el tiempo necesario para detectar si se trata de un acierto o de un fallo. Penalización de fallo Tiempo necesario para reemplazar un bloque del nivel superior por el correspondiente bloque del nivel inferior + Tiempo de suministrar este bloque al procesador. Se divide en dos componentes: Tiempo de acceso: Tiempo para acceder a la primera palabra del bloque. Tiempo de transferencia: Tiempo adicional para transferir las restantes palabras del bloque. Tiempo de acierto << Penalización de fallo Funcionamiento de la memoria de dos niveles La propiedad de localidad puede ser aprovechada formando una memoria de dos niveles: La memoria del nivel superior (M1) es mas pequeña, más rápida y más costosa (por bit) que la del nivel inferior (M2). M1 se utiliza como almacén temporal para una parte del contenido de la otra más grande. Cuando se hace una referencia a memoria, se intenta acceder al elemento de memoria M1: Si tiene éxito entonces se produce un acceso rápido De lo contrario, se copia un bloque de posiciones de memoria de M2 a M1, y el acceso se hace vía M1. Debido al principio de localidad, una vez llevado el bloque necesario a M1, habrá un número de accesos a posiciones del bloque, resultando un servicio rápido en su conjunto. Métrica de rendimiento TS= tiempo de acceso medio T1= tiempo de acceso de M1 (caché) T2= tiempo de acceso de M2 (principal) H = tasa de aciertos (fracción de veces que la referencia es encontrada en M1) TS = H × T1 + (1 − H ) × (T1 + T2 ) = T1 + (1 − H ) × T2 Cuestiones a la hora de gestionar un sistema de memoria jerárquico La gestión de memoria afecta a los niveles 1(caché), 2 (principal) y 3 (secundaria) pero como los datos sólo se pueden transferir entre niveles adyacentes, existen dos tipos de gestión: Gestión de memoria caché: controla la transferencia entre caché y principal. Gestión de memoria virtual: controla la transferencia entre principal y secundaria. Propiedades: Inclusión: cualquier información almacenada en el nivel i debe encontrarse a la vez en los niveles i+1, i+2, etc. Coherencia: las copias de la misma información en los distintos niveles deben ser consistentes. Existen distintas estrategias de actualización: Escritura directa (write-through): Cuando una palabra se modifica en el nivel Mi, inmediatamente se actualiza en el nivel Mi+1 Post-escritura (write-back): La actualización del nivel Mi+1 se retrasa hasta que el bloque que se modificó es reemplazado o eliminado en el nivel Mi Estrategias: Búsqueda: deciden cuando se transfiere un bloque de datos de un nivel inferior a otro superior Ubicación: deciden en qué parte de la memoria se coloca el bloque de información Sustitución: decide qué bloques se eliminan para hacer sitio a otros nuevos Actualización: cuando se actualiza un bloque es necesario actualizar los niveles inferiores.