ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA GUIA 25: SISTEMAS DE MEMORIA La memoria es un medio físico capaz de almacenar información (programas y datos) de forma temporal o permanente. Sin memoria no puede haber computadoras como las conocemos ahora. Aunque conceptualmente parezcan sencillas, presentan una gran variedad de tipos, tecnología, estructura, prestaciones y costo. Ninguna tecnología es óptima para satisfacer todas las necesidades de un computador por lo existe una jerarquía de subsistemas de memoria, algunos directamente accesibles por el procesador (internos) y otros accesibles mediante módulos de entrada/salida (externos). Examinaremos las características claves de las memorias y luego analizaremos el subsistema de memoria principal. CARACTERISTICAS DE LOS SISTEMAS DE MEMORIA CONCEPTOS BASICOS Y TERMINOLOGIA. Con el el fin de diferenciar entre las diferentes memorias, es necesario conocer cuales son sus características principales, y a que se refiere cada una de ellas. Las características que se consideran son localización, capacidad, unidad de transferencia, método de acceso, desempeño y tipo. Estas características se describen a continuación. Localización: Según su localización existen tres grandes grupos: • • • Memoria interna del procesador: la utiliza la CPU como elemento de almacenamiento temporal de instrucciones y datos, y consta de un pequeño conjunto de registros de alta velocidad. Memoria Principal: es una memoria relativamente grande y rápida utilizada para el almacenamiento de los programas y sus correspondientes datos, siendo la tecnología más empleada la de circuito integrado. Memoria externa o secundaria: son dispositivos periféricos de almacenamiento accesible a la CPU a través de controladores de E/S. Suele ser más grande y más lenta que la memoria central, y se utiliza fundamentalmente para el almacenamiento de programas y conjuntos de datos que no están siendo utilizados continuamente por la CPU. Jerarquía: Las restricciones de diseño de la memoria de un computador se resumen en tres puntos: Capacidad, velocidad y costo. Por una tenemos que es importante disponer de una gran cantidad de memoria. Para facilitar la ejecución de programas que son grandes o que trabajan con una gran cantidad de datos. Por otra parte tenemos que la velocidad de ejecución de los programas es muy dependiente de la velocidad a la que se pueden transferir los datos entre la CPU y la memoria. Por esto, idealmente, la memoria debería ser rápida, grande y barata. Como cabria esperar, hay un compromiso entre estas tres características de la memoria que mantienen las siguientes relaciones: • • • GUIA 25 A menor tiempo de acceso mayor costo por bit. A mayor capacidad menor costo por bit. A mayor capacidad mayor tiempo de acceso. © 2007 Sandro Costantini 1 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA De cara al diseñador el dilema está claro; le gustaría disponer de una tecnología de memoria que le proporcionara una gran capacidad, tanto porque se necesita cantidad de memoria, como porque el costo por bit es pequeño. Sin embargo, para conseguir buen rendimiento y velocidad se necesitan memorias de rápido acceso, que son de poca capacidad y más caras. La jerarquía de memorias se emplea para solucionar las diferentes necesidades que tienen cada tipo de memoria. Una jerarquía típica es la siguiente: REGISTROS CPU MEMORIA CACHÉ MEMORIA PRINCIPAL DISCOS MAGNETICOS CINTAS MAGNETICAS A medida que se va de arriba hacia abajo, disminuye el costo por bit, aumenta la capacidad, aumenta el tiempo de acceso y disminuye la frecuencia de acceso a la memora por parte de la CPU. La clave del éxito de la jerarquía es esta última, la decreciente frecuencia de acceso. Esto simplemente quiere decir que no se accede a todos los datos con la misma frecuencia; obviamente se accede más a los datos del programa en ejecución que a los de uno que no se ejecuta desde hace un año; y de igual manera, en un momento dado se accede más a los datos de una expresión que se está evaluando en ese preciso instante que a otros datos del programa. En lugar de decidirnos por un solo tipo de tecnología o un único tipo de memoria, lo que hay que hacer es construir una estructura con una jerarquía de memoria de manera de situar en los niveles superiores los datos o instrucciones que se necesitan más frecuentemente. Los pocos datos con los que se está ejecutando la instrucción en curso están en los registros; los datos de las últimas instrucciones, en la memoria caché, el resto de los datos del programa en ejecución estarán repartido entre la memoria principal y secundaria de acceso rápido(discos magnéticos); los programas o datos que no se están ejecutando se guardan en memorias secundarias masivas de mayor tiempo de acceso, como la cinta magnética y el disco óptico, La CPU y el sistema operativo se encargarán de ir llevando y trayendo los datos de las memorias lentas a las rápidas y viceversa, a medida que se vayan referenciando los distintos datos o programas. Capacidad: forma de especificar cuantos bits se pueden almacenar un dispositivo de memoria particular o en un sistema de memoria completo. Para ilustrar esto, suponga que se tiene una memoria que puede almacenar 4096 palabras de 20 bits. Esto representa una capacidad total de 81.920 bits. También podríamos expresar esta capacidad de la memoria como 4096 x 20. Cuando se expresa de esta manera, el primer numero representa el número de palabras y el segundo es el tamaño de la palabra (numero de bits por palabra). El número de palabras contenidas en una memoria , a menudo es un múltiplo de 1024. Es común utilizar la designación 1K (kilo) para representar 210 = 1024 cuando nos referimos a la capacidad de la memoria. Por tanto, una memoria que tiene una capacidad de almacenamiento de 4K x 20, es en realidad una memoria de 4096 x 20. También puede venir expresada en bits o en bytes (1 Byte = 8 bits). El desarrollo de memoria grande ha dado origen a otras designaciones que son el Mega, el Giga y el Tera. 1 K = 210 1 M = 220 1 G = 230 1 T = 240 = 1024 = 1024 K = 1024 M = 1024 G Así un circuito integrado de memoria que se especifica como 2K x 8, tendrá una capacidad de 2048 X 8 = 16.384 bits o, lo que es lo mismo, 2048 bytes ( 2 KBytes) GUIA 25 © 2007 Sandro Costantini 2 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA Dirección o ubicación. Cada celda de memoria es asociada unívocamente a una dirección, de tal manera que mediante esa dirección se puede acceder a ella para escribir o leer un dato. No se debe confundir el espacio de direccionamiento de un procesador con la cantidad de memoria disponible. El espacio de direccionamiento viene impuesto por el número de hilos, n , del bus de direcciones, de tal manera que el espacio de direccionamiento de un procesador es 2n unidades direccionables, con lo que su rango de direcciones va desde 0 hasta 2n –1. La cantidad de memoria de un ordenador se corresponde solamente con la memoria realmente instalada. El máximo de memoria que se puede instalar es 2n. Palabra: Es la unidad común de organización de la memoria. Su tamaño viene determinado por el tamaño de los registros internos de la CPU. El tamaño de las palabras en las computadoras modernas varía comúnmente de 4 a 64 bits, según la dimensión de la computadora. Byte: Grupo de 8 bits Unidad direccionable: En muchos sistemas, la unidad direccionable es la palabra, sin embargo, algunos de ellos permiten direccionar a nivel de byte. Unidad de transferencia: Para la memoria principal es el numero de bits que se leen o escriben en memoria a la vez. Viene impuesto por el numero de hilos del bus de datos. No tiene por qué coincidir con una palabra o con una unidad direccionable. Métodos de acceso. Se distinguen 4 tipos: • • • • GUIA 25 Acceso Aleatorio: cuando puede accederse a las informaciones almacenadas en la memoria en cualquier orden, siendo el tiempo de acceso constante e independiente de la posición donde está localizada la información. La localización física real de la palabra. Acceso Secuencial solamente se puede acceder a una información almacenada mediante una secuencia lineal. Por tanto, el tiempo de acceso es variable y depende de la posición donde está almacenada la información. Acceso Directo: Incorpora un mecanismo de lectura/escritura compartido. Sin embargo, los bloques o registros individuales tienen una dirección única, que se basa en su posición física. El tiempo de acceso es variable. Un ejemplo clásico son las unidades de disco Acceso Asociativo: son también de acceso aleatorio, diferenciándose en que no se pregunta por el contenido de una dirección, sino que se pregunta si existe una posición de memoria que contiene una palabra determinada. La ventaja fundamental es que dividiendo la palabra en campos, se puede asociar un campo a una región concreta de la memoria, haciendo la búsqueda más rápida. Una palabra es recuperada basándose en una porción de su contenido en lugar de su dirección. Cada posición tiene su propio mecanismo de recuperación que es constante e independiente de la posición. Las memorias caché a veces emplean este método. © 2007 Sandro Costantini 3 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA Desempeño: para medir el rendimiento de velocidad se utilizan los tres parámetros siguientes: • Tiempo de acceso (tA): Para las memorias de acceso aleatorio, es el tiempo que toma • • realizar una operación de lectura o escritura. Para las no aleatorias es el tiempo que tarda el mecanismo de lectura/escritura en posicionarse en la localidad deseada. Tiempo de Ciclo de memoria (tC): es el tiempo mínimo entre dos lecturas consecutivas. Velocidad de transferencia (fA): es la velocidad a la que se pueden transferir datos a o desde una unidad de memoria. Para las memorias de acceso aleatorio coincide con el inverso del tiempo de ciclo. Tipos físicos: Existe una gran variedad de tipos físicos de memoria. Los tres más utilizados son: • Memorias de Semiconductor como memoria principal • Memorias Magnéticas como memoria secundaria • Memorias ópticas, también como memoria secundaria Características físicas: Alterabilidad: Las memorias cuyo contenido no puede ser modificado se denominan memorias de sólo lectura o memorias ROM, y las que pueden realizar operaciones de lectura y escritura se llaman memorias de lectura/escritura. Permanencia de la información: Hay tres características que pueden redundar en la destrucción de la información: • Lectura destructiva: las operaciones de lectura ocasionan la destrucción de la información. • • Volatilidad : pérdida de la información ante el fallo de corriente. Almacenamiento estático/dinámico: una memoria es estática si la información que contiene no varía con el tiempo y es dinámica si la información se va perdiendo por lo que hay que refrescarla para evitar su pérdida. GUIA 25 © 2007 Sandro Costantini 4 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA MEMORIA PRINCIPAL Aunque la CPU dispone de una memoria interna (los registros), ésta es demasiado pequeña como para albergar solamente la instrucción a ejecutar , sus operandos y poco más. Por eso es necesario disponer de un sistema de memoria externa suficientemente grande. Para ello se cuenta con la Memoria Principal que hoy en día está construida a base de semiconductores y están formadas por una serie de celdas que contienen datos. Hay diversos tipos de memorias de semiconductor, y también varios criterios de clasificación. Uno de estos criterios puede ser el cómo se referencia cada una de las celdas de datos de la memoria. Según este criterio hay dos tipos de memorias: Asociativas: esto es seleccionadle por el contenido Convencionales: seleccionables por la dirección de la celda Las memorias asociativas son las que utiliza la memoria caché. Por su parte las convencionales tienen distintos usos dependiendo de su tecnología, y podemos encontrarlos memoria RAM, ROM, PROM, EPROM, Flash y EEPROM. Entre todas estas, la que suele ocupar la mayor parte del mapa de memoria principal es la memoria RAM, es decir, memoria volátil de acceso directo de lectura/escritura. La memoria RAM a su vez admite distintas tecnologías, como las memorias estáticas (más rápidas y que suelen emplearse para las memorias caché) y las dinámicas (más lentas y utilizadas para la memoria principal), pero no vamos a bajar a este nivel, y nos ocuparemos solo de las características y conexiones de los módulos de memoria RAM y ROM en general. Los módulos de memoria ROM los consideraremos con las mismas características que la memoria Ram, excepto la posibilidad de escribir en ella. Aunque un mapa de memoria principal puede estar formado por distintos tipos de memoria, lo más frecuente es encontrar simplemente memoria RAM y ROM (o alguna variedad), donde la RAM ocupa la inmensa mayoría del espacio de direcciones. En la memoria ROM de los ordenadores es donde se encuentra el programa inicial de arranque (IPL) y un conjunto de rutinas básicas de entrada/salida. Con ayuda de este programa se arranca el mecanismo de carga del sistema operativo de cada ordenador. ORGANIZACION Sabemos que la memoria está compuesta por bits, y el elemento básico de una memoria semiconductora es la celda binaria de almacenamiento, capaz de contener un bit de información. Pero un bit resulta insuficiente como unidad lógica de almacenamiento por lo que se procesan en grupos de un tamaño predefinido llamado palabra. El número de celdas en cada palabra se denomina longitud de palabra. A cada una se le asocia una dirección que determina la localidad en la que se encuentra la palabra. En la figura se muestra como organizar de varias formas distintas una memoria de 96 bits. 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 7 7 16 bits 12 bits 8 9 10 11 8 bits GUIA 25 © 2007 Sandro Costantini 5 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA Aunque el número de bits por celda ha variado mucho, hoy día casi todos los fabricantes de ordenadores de propósito general han estandarizado el grupo de 8 bits, llamado byte. Un byte es capaz de almacenar datos tale como caracteres, pero resulta insuficiente para manejar números de cierta magnitud. Por esto los bytes se agrupan a su vez en palabras. El tamaño de una palabra viene determinado por el ancho de los registros generales de la CPU, por lo que un procesador con registros de 32 bits, tiene una palabra de 32 bits. Esto quiere decir que se pueden hacer operaciones con datos de hasta 32 bits (en este caso). EL MAPA DE MEMORIA Los ordenadores personales convencionales suelen contar actualmente con un vasto espacio de direccionamiento, pero no suele ser necesario llenar todo este espacio de direccionamiento con los chips de memoria 32 Mb correspondiente. Por otra parte, también resulta normal contar con varios tipos de memoria. La mayor parte es RAM, que suele comenzar en las direcciones bajas, un poco de ROM que suele estar en las direcciones mas altas de la memoria. En algunos sistemas también se puede contar con una pequeña cantidad de EEPROM que puede estar situada en cualquier parte del hueco entre la RAM y la ROM. RAM EEPROM 4 Kb ROM/PROM 16 Kb Así, nos encontramos con que el espacio de direccionamiento está formado por varias zonas o rango de direcciones en las que hay distintos tipos de memoria y huecos en los que no hay instalada ningún tipo de memoria. El Mapa de Direcciones representa la distribución del espacio de direccionamiento de una máquina entre los distintos tipos de memoria instalados. CHIPS DE MEMORIA Como otros circuitos integrados, las memorias semiconductoras vienen en chips encapsulados. Cada chip contiene una matriz de celdas de memoria. Supongamos por ejemplo que tenemos una pastilla de memoria RAM de 1 Mpalabras x 8. Veamos la interfaz que nos ofrece con el mundo exterior. Pines de dirección: A0-A19. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A 10 A 11 WE OE CS GND Vcc GUIA 25 RAM 1Mx8 A 12 A 13 A 14 A 15 A 16 A 17 A 18 A 19 D0 D1 D2 D3 D4 D5 D6 D7 Vcc Puesto que tiene un espacio de direccionamiento de 1 Megapalabras( 1.048.576 direcciones) necesita 20 20 pines para poder seleccionar la celda deseada, pues 2 =1.048.576. Estas son señales de entrada. Pines de datos: D0-D7. Cada celda direccionada es de un byte (8 bits), luego necesita 8 líneas. Como es una RAM, se puede leer o escribir en ella, por lo que estas patas son de entrada/salida, dependiendo de si la operación es escritura o lectura. Señales de lectura/escritura: OE y WE.: Cuando se desea realizar una operación de lectura, además de indicar la dirección correspondiente en los pines de dirección, debe activarse la señal OE(Output Enable) Si lo que se desea es una operación de escritura, debe activarse la señal WE (Write Enable). Obviamente, estas señales son mutuamente excluyentes. Selector de chip: CS. Un computador está compuesto por varios chips de memoria a los que llegan las señales de dirección que vienen de la CPU. Sin embargo, en cada operación concreta de lectura/escritura no debe leerse o escribirse en todos los chips sino solamente el que contenga la dirección. Un decodificador se encargará de seleccionar el o los chips que deben recibir las señales OE o WE y para ello activará la señal CS (Chip Select) del chip o de los chips que deban responder o no a la operación de lectura/escritura que se arranca. Tensión de alimentación Vcc: Pin el voltaje de alimentación. Tierra (GND) : Pin para la toma de tierra. © 2007 Sandro Costantini 6 UNIMET ARQUITECTURA DEL COMPUTADOR Prof. Sandro Costantini SISTEMAS DE MEMORIA Las pastillas de memoria se comercializan con un numero de celdas de memoria (direcciones) y un tamaño de celda (bits por celda) que no coinciden con el tamaño de la palabra de la CPU, ni con las necesidades de memoria que hay que instalar. Por esto es normal que haya que agrupar varios chips de memoria para poder ofrecerle a la CPU la imagen de una única memoria con tantas direcciones como se desea y con un tamaño de celda igual al tamaño de la palabra de la CPU. ORGANIZACIÓN DE LAS CELDAS DE MEMORIA Existen 2 organizaciones principales, la 2D en la cual la disposición física de las celdas de la matriz de memoria es la misma que la disposición lógica, y la 2½D en la que los datos se leen o escriben por bits. Ambas organizaciones se explican a continuación. ORGANIZACIÓN 2D La matriz está organizada en w palabras de b bits cada una. Todos los bits de una palabra se localizan en el mismo chip. Es una organización rápida, ya que el único retardo es el asociado con los circuitos de decodificación. Sin embargo, ya que el número de palabras es mucho mayor que el número de bits por palabras, la utilización de esta organización daría lugar a matrices de celdas excesivamente largas y estrechas, que no resultan adecuadas para su realización en un circuito integrado. n ARREGLO DE MEMORIA 2n 2n X B 2n palabras LINEAS DE DIRECCION DECODIFICADOR B bits CIRCUITO ENTRADA SALIDA LECTURA/ESCRITURA LINEAS DE DATOS En este tipo de organización se necesitan conocer los siguientes datos: • Numero de líneas de dirección • Capacidad ( Numero de celdas de memoria) • Numero de palabras( Numero de unidades direccionables) • Longitud de la palabra (Numero de bits por palabra) Estos datos se relacionan de la siguiente manera. Numero de palabras = 2 (numero de líneas de dirección) Capacidad = (numero de palabras) x (longitud de palabra) GUIA 25 © 2007 Sandro Costantini 7 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA Si tenemos una memoria organizada en 2D con 32k palabras de 8 bits cada una: Capacidad = 32k x 8 bits = 256 kbits = 1024 x 256 = 262.144 bits Palabras = 32 x 1024 = 32.768 Líneas de dirección = 15 (215 = 32.768) (líneas de entradas al decodificador) Líneas de datos = 8 (longitud de la palabra) ORGANIZACIÓN 2½D Los bits de una palabra están repartidos en mas de un chip. La organización más común es la que permite almacenar 1 bit de una palabra en un chip. El chip contiene un arreglo de bits típicamente cuadrado. Para escoger un bit de una palabra en particular, la dirección se divide en 2. Se utilizan 2 decodificadores con n/2 entradas. Uno de ellos realiza la selección sobre el eje X y el otro sobre el eje Y. Para obtener el resto de los bits que constituyen la palabra se utilizarán otros chips. n/2 bits 2n/2 ARREGLO DE MEMORIA 2n/2 X 2n/2 2n/2 DECODIFICADOR FILAS n/2 n LINEAS DE DIRECCION 2n/2 bits SELECTOR COLUMNA ENTRADA/SALIDA LECTURA/ESCRITURA ENTRADA bit SALIDA bit En esta organización , con la restricción de que la longitud de la palabra es de 1 bit, si tenemos una capacidad de 1 Kbit entonces: Capacidad = 1 Kbit = 1024 bits Palabras = 1 K = 1024 Líneas de dirección = 10 (210 = 1024) (5 para la X y 5 para la Y) Líneas de datos = 1 (longitud de la palabra) La matriz cuadrada de memoria es de 32 x 32 (25 X 25 ) = 1024 Ventajas de 2½D sobre 2D • • • GUIA 25 El arreglo 2½D es un arreglo cuadrado mientras que el 2D puede llegar a ser muy largo y estrecho Una organización 2D requiere mayor número de líneas externas de datos. Con una organización 2½D se obtiene mayor capacidad de memoria. © 2007 Sandro Costantini 8 ARQUITECTURA DEL COMPUTADOR UNIMET Prof. Sandro Costantini SISTEMAS DE MEMORIA ORGANIZACIÓN POR MODULOS Las memorias disponibles se pueden ampliar para incrementar la longitud de palabra (números de bits en cada dirección) o la capacidad de palabras (numero de direcciones diferentes), o ambas. La expansión de memoria se consigue añadiendo el número apropiado de chips de memoria a los buses de dirección, datos y control como se explica a continuación. Expansión de la longitud de palabra Para aumentar la longitud de palabra de una memoria, debe aumentarse el número de bits del bus de datos. Por ejemplo supongamos que queremos conseguir un banco de memoria de 16 Kpalabras de 8 bits (memoria de 16K x 8) y se dispone de módulos de 16 K x 4. Por una parte se deben unir directamente los pines de direcciones de los dos chips puesto que ambos tiene 16K direcciones. Por otra parte se formaran palabras de 8 bits a partir de dos bloques de 4 bits, Un chip para los 4 bits de mayor peso y el otro para los 4 bits de menor peso. La figura muestra la solución. A0 – A13 A0 – A13 A0 – A13 AS CS CS CPU R/W OE WE D0 – D7 OE CHI D0 – D3 D0 – D7 CHI WE D0 – D3 D4 – D7 D0 – D3 Expansión de la capacidad de palabras Supongamos que para implantar la memoria de 16K x 8 del ejemplo anterior disponemos de módulos de 4K x 8. Como vemos cada modulo ahora ofrece palabras completas, por lo que tendremos que agrupar 4 chips para obtener el espacio de direccionamiento de 16K requerido. Un modulo contendrá las primeras 4 direcciones, otro modulo el segundo cuarto y así sucesivamente. En este caso cada chip entrega los 8 bits de cada palabra, pero no se tienen que seleccionar todas simultáneamente, sino que solamente tendrá que seleccionarse la que contenga la dirección referenciada por la CPU. En estas situaciones en las que cada uno de los espacios de direccionamiento está repartido entre múltiples chips , se requiere un decodificador de direcciones para que la CPU active la señal de Chip Select (CS) del chip que contenga la dirección referenciada. DECODIFICADOR CPU A0 – A11 A0 – A11 A0 – A11 AS R/W D0 – D7 CS OE WE A0 – A11 CS OE WE D0 – D7 D0 – D7 A0 – A11 A0 – A11 D0 – D7 D0 – D7 A0 – A11 D0 – 7 CS OE WE A0 – A11 D0 – D7 D0 – D7 CS OE WE CHIP 4 A0 – A13 DIRECCIONES ( A0 – A13 ) CHIP 3 A0 – A11 CHIP 2 A12 CHIP 1 A13 D0 – D7 D0 – D7 DATOS ( D0 – D7 ) En el caso que se quiera obtener por ejemplo una memoria de 64K x 8 con chips de 16K x 1 se necesita expansión de longitud de palabra y de capacidad de palabra. Trate de obtener el circuito. GUIA 25 © 2007 Sandro Costantini 9 UNIMET ARQUITECTURA DEL COMPUTADOR Prof. Sandro Costantini SISTEMAS DE MEMORIA MEMORIA CACHÉ La velocidad de ejecución de las instrucciones es altamente dependiente de la velocidad a la cual se transfieren los datos hacia o desde la memoria principal. Por ello no debe sorprendernos que el diseño de la memoria es, y seguirá siendo un tópico importante en el desempeño de una computadora. Uno de los problemas básicos a considerar en el diseño de memorias es la velocidad. Este problema surge debido a que por lo general la CPU puede procesar instrucciones y datos más rápido de lo que dura su traída desde unidades de memoria principal. Es decir. El tiempo del ciclo de la memoria principal es el cuello de botella. En todos los ciclos de instrucción, la CPU accesa a la memoria por lo menos una vez, para buscar la instrucción, y generalmente una o más veces para buscar los operandos o almacenar los resultados. El rango en el cual la CPU puede ejecutar instrucciones está claramente delimitado por el ciclo de memoria de la computadora. La velocidad de la memoria es mucho menor que la velocidad del CPU. En forma idónea, la memoria principal debería construirse con la misma tecnología que los registros de la CPU, obteniendo ciclos de memoria comparables con los ciclos de este. Sin embargo, ésta es una estrategia muy costosa. La solución se encuentra en explotar el principio de localidad para proveer una pequeña y rápida memoria entre la CPU y la memoria principal denominada memoria caché. Esta memoria se utiliza para agilizar el movimiento de los datos entre la memoria principal y la CPU mejorando así el desempeño de la computadora. Desde hace años se sabe que los programadores no acceden la memoria en forma completamente aleatoria. Si una referencia a memoria es la dirección A, es común que la siguiente referencia se realice a los alrededores de A. Un ejemplo es un programa en sí, con excepción de los saltos y las llamadas a procedimientos, las instrucciones se extraen de localidades de memoria consecutivas. Es más, la mayoría del tiempo de ejecución se emplea en iteraciones, en las que ciertas instrucciones se ejecutan de manera repetida. Se le llama principio de localidad a la observación de que las referencias a memoria realizadas en un intervalo de tiempo corto, tienden a usar sólo una fracción de la memoria local, y representa la base para todos los sistemas de memoria caché. La idea general es que, cuando una palabra es referenciada, se le trae de la memoria grande y lenta a la caché, de modo que la siguiente vez que se utilice, se pueda accesar rápido. Si una palabra se lee o escribe k veces en un intervalo de tiempo corto, la computadora necesitará de una referencia a la memoria lenta y k-1 referencias a la memoria rápida. Entre más grande es k mejor es el desempeño general. La memoria caché contiene una copia de partes de la memoria principal. Cuando la CPU requiere de una palabra de la memoria, primero verifica si la palabra se encuentra ya en la memoria caché. Si es así, la palabra se envía a la CPU. De lo contrario un bloque de la memoria principal, formado por un número determinado de palabras, se lee dentro de la caché y se envía posteriormente al CPU. La memoria principal está formada por 2n palabras direccionable. Para propósitos de mapeo, se considera está formada por un número determinado de bloques con k palabras cada uno. Esto significa que tenemos M= 2n /k bloques. La memoria caché consiste en C líneas de k palabras cada uno (C<<M) En cualquier momento, un subconjunto de los bloques de memoria se encuentra en las líneas de la caché. Como hay más bloques que líneas, una línea puede estar dedicada a un bloque en particular, por lo tanto, cada una debe tener una etiqueta que identifica qué bloque está siendo almacenado. Esta etiqueta generalmente está formada por una parte de la dirección de la memoria principal. Cuando se diseña una caché, se deben considerar entre otros los siguientes aspectos: tamaño, función de correspondencia, algoritmo de sustitución, política de escritura, tamaño de bloque y número de caches. Tamaño: lo ideal es que el tamaño sea lo suficiente pequeño para que el costo por bit se aproxime al de la memoria principal y suficientemente grande sin que pierda su velocidad. Función de correspondencia: debido a que hay menos líneas que bloques, es necesario un algoritmo para establecer la correspondencia entre estos. Además de un medio para determinar que GUIA 25 © 2007 Sandro Costantini 10 UNIMET ARQUITECTURA DEL COMPUTADOR Prof. Sandro Costantini SISTEMAS DE MEMORIA bloque está siendo almacenado en una línea de la caché. Las técnicas que se pueden utilizar son directa, asociativa y asociativa por conjuntos. Algoritmo de sustitución: cuando se introduce un nuevo bloque a la caché, debe sustituirse por uno de los bloques existentes. En el caso de correspondencia directa, solo hay una posible línea para el bloque particular, mientras que en las técnicas asociativas existen cuatro algoritmos: usado menos recientemente(LRU), primero en entrar en salir (FIFO), usado menos frecuentemente, ente (LFU) y aleatoria. Política de escritura: antes de poder reemplazar un bloque que está en la caché es necesario considerar si este ha sido modificado en la caché y no en la memoria principal. Si no se ha modificado entonces se puede reemplazar el bloque, en caso contrario la memoria principal debe actualizarse. Existen dos problemas que combatir: un modulo de E/S puede escribir/leer directamente de la memoria y es posible que esta no sea válida. El problema se vuelve más complejo cuando carias CPU se conectan al mismo bus y cada una tiene su propia caché Las técnicas más utilizadas son escritura inmediata y postescritura. Tamaño del bloque: Cuando se recupera y ubica un bloque de datos en la caché, se recupera no solo la palabra deseada, sino además algunas palabras adyacentes. A medida que el tamaño de bloque aumenta, la probabilidad de que los datos sean referenciados próximamente se incrementa. Sin embargo si el tamaño es mucho mayor esta probabilidad decrecerá Numero de cachés: originalmente un sistema tenía normalmente sólo una caché. Recientemente es habitual utilizar múltiples caché. Los aspectos de diseño relacionados son el número de niveles de caché y el uso de caché unificada frente a caché partida. GUIA 25 © 2007 Sandro Costantini 11