Unidad 4 – Memorias MEMORIAS 3 PARÁMETROS QUE CARACTERIZAN A LAS MEMORIAS 3 CAPACIDAD DE ALMACENAMIENTO 3 TIEMPO DE ACCESO 3 COSTO POR BIT ALMACENADO 3 MODO DE ACCESO 4 CLASES DE MEMORIAS 5 REGISTROS 5 MEMORIA PRINCIPAL (MP) 5 MEMORIA CACHÉ 5 MEMORIA PRINCIPAL 5 TAMAÑO DE LA MEMORIA 6 PALABRA DE MEMORIA 6 DIRECCIONAMIENTO DE MEMORIA 7 ACCESO A MEMORIA – CICLO DE MEMORIA 8 OPERACIÓN DE LECTURA 9 OPERACIÓN DE ESCRITURA 9 TIEMPO DE ACCESO A MEMORIA 9 CHIPS DE MEMORIA 10 ACCESO RANDOM O ALEATORIO 11 TIPOS DE MEMORIA 11 MEMORIAS RAM 12 MEMORIAS ROM 13 VERIFICACIÓN DE INTEGRIDAD DE DATOS 14 BIT DE PARIDAD 14 CÓDIGO DE CORRECCIÓN DE ERRORES 15 REGISTROS 15 ASCI / Introducción a la Informática / Unidad 4 1 BUFFERS 16 MEMORIA CACHÉ 16 JERARQUÍA DE MEMORIAS 19 BUSES DE LA COMPUTADORA 20 BIBLIOGRAFÍA 22 ASCI / Introducción a la Informática / Unidad 4 2 Memorias Una memoria es cualquier elemento que nos permite almacenar la información que deseemos y luego recuperarla cuando la necesitemos. En un sistema de computación, debemos almacenar información bajo nuestro control (es decir saber dónde la colocamos) y poder recuperarla en el momento necesario. En esta unidad veremos cómo se almacena información y cómo se recupera, en los distintos tipos de memorias de un sistema de procesamiento de datos. Parámetros que caracterizan a las memorias Las memorias difieren entre sí por cuatro características, que se constituyen en sus parámetros fundamentales: 1. Su capacidad de almacenamiento. 2. Su tiempo de acceso. 3. Su costo por bit almacenado. 4. Su modo de acceso. Capacidad de almacenamiento Es la cantidad de información que una memoria puede contener simultáneamente y se mide normalmente en bytes. Actualmente esta capacidad debe expresarse en grandes múltiplos del byte. Es importante el concepto de simultaneidad ya que, si la midiéramos a lo largo del tiempo, la rotación de los valores almacenados podría distorsionar este valor. El tiempo de permanencia, que llamaremos persistencia, de la información almacenada, es un parámetro asociado al uso de la memoria, pero no a la memoria en sí misma. Tiempo de acceso Es el tiempo requerido para leer o grabar un valor en una memoria. En algunos casos, este tiempo será absoluto, es decir, independiente de las circunstancias y propio exclusivamente de la memoria en sí misma. En otros, dependerá de estas circunstancias, en cuyo caso deberemos hablar de tiempos promedio de acceso. Costo por bit almacenado Una memoria con mayor capacidad de almacenamiento y menor tiempo de acceso, cuesta más que un equivalente con menores prestaciones. ASCI / Introducción a la Informática / Unidad 4 3 Modo de acceso Podemos distinguir tres formas de clasificar las memorias: 1) Por la cantidad de información involucrada en cada acceso: ● Memorias de acceso a palabra. EJEMPLO: la MP. ● Memorias de acceso a bloque. EJEMPLOS: discos (bloques de tamaño fijo) y cintas (bloques de tamaño no necesariamente fijo). 2) Por la forma de ubicar la información en la memoria. ● Acceso por nombre o identificación lógica del elemento de almacenamiento que la contiene. EJEMPLO: Registros de datos o de uso general. ● Acceso por dirección. EJEMPLO: Memoria RAM. ● Acceso por contenido. EJEMPLO: Memoria caché. 3) Por la forma en que la información es recuperada o grabada en el medio. ● Acceso directo. EJEMPLO: discos. ● Acceso aleatorio. EJEMPLO: RAM. ● Acceso secuencial. EJEMPLO: cintas. En los accesos directo y aleatorio, las diferentes posiciones de la memoria pueden accederse en cualquier orden, mientras que en los de acceso secuencial, las grabaciones y lecturas deben hacerse en forma consecutiva, es decir, para acceder a la posición n es necesario pasar previamente por las n-1 anteriores. ASCI / Introducción a la Informática / Unidad 4 4 Clases de memorias Registros Pequeñas memorias (del orden de 8, 16 hasta 64 bits), de acceso extremadamente rápido y con una persistencia normalmente mínima, que son piezas clave en el funcionamiento del sistema. Memoria Principal (MP) Memoria en la cual se almacenan las instrucciones y datos de los procesos que están siendo ejecutados en un instante de tiempo. Memoria caché Memoria rápida y de pequeña capacidad destinada a acelerar el acceso a la información almacenada en la MP, transparente al usuario y de ninguna manera imprescindible para el funcionamiento del sistema. Memoria principal La memoria principal es la parte de la computadora donde se almacenan programas y datos. Sin una memoria en la cual los procesadores puedan leer y escribir información, no existirían los computadores de programa almacenado. La memoria principal almacena bits en celdas independientes, aisladas entre sí, que contienen 1 byte de información. Cada celda se localiza en el conjunto mediante un número binario identificatorio, que constituye su dirección, o indicación de su posición en ese conjunto, por lo tanto en relación con cada celda se tienen dos números binarios: ● Un número fijo, la dirección (de más de 32 o 64 bits en la actualidad) que presentado en los circuitos de la memoria permite acceder a una celda. Este número no se puede alterar, ya que está establecido circuitalmente. ● Un conjunto de 8 bits, que es el contenido informativo de esa celda. Este número puede cambiarse si la memoria es alterable. ASCI / Introducción a la Informática / Unidad 4 5 En cada dirección de memoria (celda) sólo pueden leerse o escribirse 8 bits por vez, sin posibilidad de operar menor cantidad de bits o un bit aislado. Dado que la palabra “registro” en un significado general indica algún lugar dónde los datos se pueden registrar, guardar, podría designarse así a cada celda de memoria, y decir que la memoria principal está formada por un conjunto de registros independientes de 8 bits cada uno. Tamaño de la memoria Las computadoras, que emplean como representación interna el sistema de numeración binario, expresan las direcciones de memoria como un número binario. Si una dirección tiene m bits, el número máximo de celdas direccionables es 2m. El número de bits de la dirección determina el número máximo de celdas direccionables directamente en la memoria y es independiente del número de bits por celda. En una memoria que guarda un byte por posición, debe haber tantas posiciones como bytes tenga la memoria. Esto es, una memoria de 2 MB implica que se deben identificar 2097152 posiciones distintas, asignándole un número binario distinto para cada una, que es su dirección. Una memoria tiene un número N de celdas que siempre es una potencia de 2, por lo cual las mismas se localizan mediante direcciones que van de 00..00 hasta 11..11. De esto se deduce que, al aumentar en uno el exponente del número dos, se duplica la cantidad de memoria. O sea si una memoria tiene el doble de capacidad que otra, los números que forman las direcciones de la primera deben tener un bit más que los números que forman las direcciones de la segunda. Es decir, 2 memoria * 2n = 2(n+1) Siendo n la cantidad de bits que ocupa la dirección de Palabra de memoria Cuando los datos o instrucciones ocupan más de un byte se almacenan fragmentados en varios bytes, los cuales deben estar contenidos en celdas correspondientes a posiciones consecutivas de memoria, o sea en direcciones sucesivas. En una operación de lectura o escritura de memoria principal se puede acceder a varias celdas consecutivas simultáneamente. El número máximo de éstas constituye la palabra (word) de memoria. Dicho número puede ser 1, 2, 4 u 8 bytes, dependiendo de la cantidad de líneas de datos que salen del procesador hacia memoria. Una computadora con palabras de 32 bits tiene 4 byte/palabra, mientras que una con palabra de 64 bits tiene 8 byte/palabra. La importancia de las palabras es que casi todas las instrucciones operan con palabras enteras y sus registros tienen capacidad para albergarlas. ASCI / Introducción a la Informática / Unidad 4 6 00000010000001111000 La dirección 02078 (expresada en hexadecimal) contiene el 0110001 como información. Cuando se habla de una palabra (o word) de memoria o “longitud de palabra”, se hace referencia a la máxima cantidad de bytes que la UCP puede leer o escribir en cada acceso a memoria principal. Entonces, el bus que conecta la UCP y la memoria principal debe tener tantas líneas de datos como bits tenga la longitud de palabra del modelo de computador que se trate. Así mismo, en el ámbito de los microprocesadores, se menciona procesadores de 8, 16, 32 o 64 bits para indicar el número máximo de bits que puede tener un dato a operar por la UAL de cada uno. En consonancia con ello, los registros de la UCP para datos o resultados deben tener una longitud igual al tamaño de los datos que opera la UAL. Se comprende que un procesador de mayor número de bits sea más rápido que otro que opere con menos, pues en una sola instrucción puede manipular más bits. El número de bits de un procesador se define cuando se diseña el mismo, y es indicativo de su potencia de procesamiento. Direccionamiento de memoria En relación con la memoria principal, sólo son posibles dos operaciones que puede ordenar la UCP: la lectura o la escritura, pero antes de realizar cualquiera de ellas, la UCP debe direccionar la memoria principal. En la UCP, la memoria central tiene asociados dos registros para la realización de operaciones de lectura y escritura y un dispositivo encargado de seleccionar una celda de memoria en cada operación de acceso a la misma. Ellos son: ASCI / Introducción a la Informática / Unidad 4 7 ● Registro de Dirección de memoria (RDM o RDI): antes de la realización de una operación de lectura o escritura se ha de colocar en este registro la dirección de la celda que se va a utilizar en la operación, bien para grabar en ella o para extraer de la misma el dato correspondiente. ● Registro de Datos (RDA): si se trata de una operación de lectura de memoria, este registro es el que recibe el dato de la memoria señalado por el RDM para su envío por medio del bus del sistema a la unidad que lo requiere. Si se trata de una operación de escritura en memoria, la información que hay que grabar, procedente de cualquier unidad funcional, es depositada por medio del bus en el RDA para que desde él se transfiera a la posición de memoria indicada por el RDM. ● Decodificador de direcciones: Este dispositivo se activa cada vez que se produce una orden de lectura o escritura, conectando la celda de memoria, cuya dirección figura en el RDM, con el RDA y posibilitando la transferencia de los datos en un sentido o en otro. La acción de direccionar o “direccionamiento” consiste en colocar en las líneas de dirección del bus, que llegan a la memoria principal, la dirección de la celda a la que se quiere acceder, para leerla o escribirla. Igualmente si se quiere acceder a 2, 4 o 8 posiciones consecutivas de memoria sólo se debe dar la posición de la primera. La MMU (“Memory Management Unit”) es un elemento de hardware responsable de realizar (en los sistemas en que esto es posible) la traducción de la dirección lógica generada por la UCP a la dirección física en la que la información será realmente almacenada en la memoria. Esta transformación se realiza durante la ejecución del proceso, denominándose en consecuencia reubicación dinámica. En consecuencia, la MMU genera siempre las direcciones físicas dónde se almacenará la información. Acceso a memoria – Ciclo de memoria Los ordenadores de hoy, por lo general almacenan datos en microcircuitos electrónicos de estado sólido (chips). Existen cierto número de configuraciones circuitales que permiten “escribir” datos en ellas, almacenarlos allí y posteriormente ASCI / Introducción a la Informática / Unidad 4 8 “leerlos”; y que pueden ser “sobrescritas” con nuevos datos cuando los antiguos dejan de hacer falta. Llamaremos ciclo de memoria a la secuencia de operaciones necesarias para producir una transferencia (lectura/ escritura) entre la UCP y la memoria principal. Operación de lectura LA UCP debe indicar la dirección de la celda a la que quiere acceder para que la memoria principal le proporcione el contenido de la celda direccionada. La operación de lectura de una palabra comprende los siguientes pasos: ● A partir del contenido del RDM, en las líneas de dirección del bus, la UCP coloca la dirección de la primera celda que se quiere leer. ● La UCP ordena la lectura mediante la línea de control del bus (de lectura/escritura) que va de la Unidad de Control a la memoria principal. ● Luego de un tiempo una copia del contenido de la dirección seleccionada y del contenido de la/s siguiente/s, aparece juntas en las líneas de datos del bus, a disposición de la UCP. Luego de viajar por el bus, constituyen el contenido del RDA. Operación de escritura Si en cambio, el acceso corresponde a una operación de escritura en memoria, la combinación de ceros y unos que está contenida en las celdas que conforman la palabra de memoria direccionada, se deberá cambiar. En una operación de escritura los pasos son los siguientes: ● La combinación binaria a almacenar en las celdas es colocada por la UCP en las líneas de datos del bus desde el RDA. ● En las líneas de dirección del bus la UCP coloca la dirección de la primera celda que se quiere escribir desde el RDM. ● La UCP ordena la escritura mediante la línea de control. ● Luego de un tiempo, una copia de la combinación enviada a MP queda almacenada en la celda direccionada y en la/s siguiente/s. De esto se deduce que una escritura es destructiva, ya que se pierde el contenido anterior de las celdas que reciben la nueva información. Si se quiere que una celda vuelva a tener el contenido anterior, la UCP (siguiendo la lógica de la instrucción) deberá colocar su valor en las líneas de datos y ordenar otra escritura. Tiempo de acceso a memoria Idealmente, las celdas de una memoria están organizadas de tal modo que todas ellas tienen el mismo tiempo de acceso. Por este motivo, se dice que son memorias de acceso random o aleatorio. Esto quiere decir que el tiempo de acceso a cualquier dirección de memoria es constante, independientemente de su ubicación. ASCI / Introducción a la Informática / Unidad 4 9 Se define el tiempo de acceso como el tiempo que transcurre entre que se direcciona una celda de memoria, hasta que aparece en sus salidas (conectadas a las líneas de datos del bus) el contenido de la celda direccionada. Este tiempo suele indicarse (en el chip de memoria) al final de su código, luego de un guión. Chip de memoria Chips de memoria La tecnología de circuitos integrados se presta a fabricar chips cuya estructura interna sea un patrón bidimensional repetitivo. Los chips de memoria son una aplicación ideal de esta tecnología. El número de bits que se puede colocar en un chip aumenta continuamente, duplicándose. Desde los albores de las memorias de semiconductores hasta principios de los 90, la memoria se fabricaba, se compraba y se instalaba como chips individuales. Las densidades de los chips iban desde 1 Kbits hasta 1 Mbits, pero cada chip era una unidad discreta. Puesto que una computadora tiene muchos chips de memoria, se requiere una señal para seleccionar el chip que se necesita en ese momento, de modo que responda y los demás no lo hagan. Se incluye la señal CS (Chip Select) para este fin. La señal se habilita para activar el chip. Además, para diferenciar las lecturas de las escrituras, se usa para las primeras la señal WE (Write Enable), que habilita la escritura, es decir que indica que se van a escribir datos. La señal OE (Output Enable) se habilita para alimentar las señales de salida. Si no está habilitada, la salida del chip se desconecta del circuito. Los chips de memoria grandes se suelen construir como matrices n x n que se direccionan por fila (LH) y por columna (LV). Esto reduce el número de terminales requeridas, pero hace más lento el direccionamiento del chip, ya que se necesitan dos ciclos de direccionamiento, uno para las filas y otro para las columnas. Para recuperar algo de la velocidad que se pierde por este tipo de diseño, algunos chips de memoria pueden aceptar una dirección de fila seguida de una sucesión de direcciones de columna para acceder bytes consecutivos de un renglón. (LH) 11 (LV) 01 11 01 ASCI / Introducción a la Informática / Unidad 4 10 Esquema de memoria de 16 celdas de 8 bits, con 16 direcciones que van de 0000 a 1111. Acceso random o aleatorio Básicamente, en los sistemas de memoria de acceso random, los dispositivos de lectura e inscripción de datos pueden llegar directamente a cualquiera de las posiciones específicas de memoria, con independencia de la situación material que tal posición ocupe en el medio. El dispositivo va directamente a la posición requerida. En una formación bidimensional, provista de decodificadores de fila y columna, las corrientes individuales encargadas de activar las líneas de localización, fluirán a través de otros medios de almacenamiento antes de alcanzar el requerido. No obstante la combinación de señales sólo da acceso a la única posición de memoria requerida (decodificador de direcciones). A fin de evitar esperas, la UCP debe tener acceso rápido a celdas de cualquier porción de MP, por lo cual no tiene sentido tener celdas de acceso secuencial. El acceso aleatorio o random access en una memoria implica que cualquier posición puede encontrarse en igual tiempo (para ser leída o escrita). Vale decir, que el tiempo de acceso es el mismo para cualquier dirección. Tipos de memoria Las primeras computadoras fabricadas comercialmente ya tenían MP con acceso random, o sea eran Random Access Memory (RAM), y cualquier celda podía ser escrita o leída todas las veces que se quería. Además, eran memorias volátiles, ya que perdían la información almacenada cuando se cortaba el suministro eléctrico. Por esta razón, RAM se convirtió en sinónimo de memoria de lectura y escritura y además, de memoria volátil. En el presente, los chips de memoria RAM que constituyen la MP son de tecnología “dinámica”, cuya característica es que en cada celda de memoria se almacena un byte en microscópicos capacitores que necesitan ser continuamente recargados eléctricamente. La cuestión de las denominaciones se complica desde que, para una porción de la MP, a partir de los años 70 se emplean chips de memoria ROM, siglas que corresponden a Read Only Memory (Memoria de sólo lectura). Este tipo de Memoria es la que contiene el código necesario para el arranque de la computadora. La ROM es también una memoria electrónica de acceso random, en la cual la escritura requiere un tiempo muchísimo mayor que su lectura, pero es no volátil, o sea que almacena la información en forma permanente. No necesita de energía eléctrica para mantener guardado los datos. Sí para leerlos. Se puede decir, entonces que: Memoria principal es RAM + ROM ASCI / Introducción a la Informática / Unidad 4 11 Las porciones RAM y ROM tienen en común que al contenido de cualquier porción de las mismas se puede acceder en forma random, o sea en igual tiempo (salvo las diferencias antes señaladas), sin búsquedas, indicando un número que las identifica, que es su dirección. Difieren en que cada posición RAM puede ser leída y escrita cuantas veces sea, siendo su contenido volátil, mientras que se accede al contenido no volátil de una posición ROM sólo para leerla. La porción de MP que es ROM en una PC, se denomina ROM BIOS (Basic Input Output System). El programa que contiene, se ejecuta al encender la computadora y sus funciones son: ● Verificar la configuración del Hardware y su correcto funcionamiento ● Traer desde un disco de sistema a la MP (escribir en ésta) una copia de los programas del sistema operativo del computador (acción conocida como bootear el sistema). ● Almacenar programas usados permanentemente para la transferencia de datos entre periféricos y memoria (Entrada / Salida de datos). Se denomina firmware al software contenido en una memoria ROM. Memorias RAM Existen dos tipos de memoria RAM: la estática y la dinámica. La RAM estática o SRAM (Static RAM) consta de 4 o 6 transistores, que forman un circuito con memoria, conocido como “flip-flop”. Éste permanece estáticamente en un estado eléctrico (que podemos representar, por ejemplo, como 1) o en otro (como 0), mientras no se apague el computador o se cambie su estado por una orden de escritura. Son memorias muy rápidas, con un tiempo de acceso típico de unos cuantos nanosegundos, pero debido a que son varias veces más caras que una DRAM (Dinamic RAM) por su menor capacidad por chip, no se usan en la memoria principal, sino en la memoria caché (a tratar). Las RAM dinámicas o DRAM, no usan flip flop, sino que son una matriz de celdas, cada una de las cuales contiene un transistor y un capacitor microscópico, el que cargado guarda 1 y descargado, 0. Este pierde su carga cada 10 a 20 milisegundos, por lo que hay que reponerla (acción de “refresco”) para evitar que los datos se pierdan. Las DRAM tienen una densidad muy alta (muchos Bits por chip) puesto que sólo necesitan un transistor y un capacitor por Bit, en comparación con los 6 transistores por Bit de una SRAM. Por esto las memorias principales casi siempre se construyen con DRAM, sin embargo esta capacidad tiene un precio, son lentas en comparación con las SRAM (aproximadamente de 10 a 1). La combinación de una caché SRAM y una memoria principal DRAM intenta combinar las propiedades ventajosas de cada una. Los chips de memoria VRAM (Video RAM) forman parte de la memoria principal, pero están en la plaqueta de vídeo. Guardan la información que sale hacia pantalla. Estos chips tienen casi el doble de patas que los de cualquier RAM. Esto se debe a que una VRAM tiene un bus de direcciones y datos para ser escritos por la UCP, y ASCI / Introducción a la Informática / Unidad 4 12 otro bus para direcciones y datos para ser leídos por los Circuitos de la plaqueta de vídeo, que manejan el monitor. Por eso se dice que la VRAM es una memoria de "dos puertas", dado que simultáneamente que es escrita por la UCP, puede ser leída por los circuitos de la plaqueta. Memorias ROM Los primeros chips ROM, hoy denominados ROM "fabricados a medida", se encargaban a los fabricantes de chips, indicándole el contenido que debía tener cada celda. Entonces, cuando se fabricaba cada chip, se grababan los contenidos que siempre tendría. La única forma de cambiar el programa de una ROM es cambiar todo el chip. A diferencia de los anteriores, los chips PROM ("Programmable ROM") se fabrican en serie, pero el interior de cada chip está preparado para que -en una segunda etapa- quien utilice uno o miles de estos chips pueda escribir una sola vez los contenidos que tendrán sus celdas. Esto se realiza en un dispositivo electrónico que se vende para tal fin. Una vez así grabada ("programada"), una PROM no puede ser re-escrita. Las ROM de la clase RMM (Read Mostly Memory), para ser mayormente leídas, son reprogramables, o sea se pueden volver a escribir, siendo que La escritura es poco frecuente frente a las operaciones corrientes de lectura. Las pastillas EPROM ("Erasable-Programmable ROM") se caracterizan por presentar una ventanilla transparente en su cara superior, que normalmente está cubierta por una etiqueta plateada autoadhesiva. Se puede cambiar el contenido de todas las celdas, re-escribiendo el nuevo contenido que tendrá cada una en un dispositivo semejante al usado para las PROM. Previo a ello se debe "borrar" (erase) el contenido de todas las celdas. Esto se logra haciendo pasar luz U.V por la ventana durante unos 15 minutos. Una EEPROM, ("Electrically Erasable ROM") no requiere el borrado de todas las celdas con luz U.V, dado que -como en una RAM- se puede seleccionar cada dirección que se quiere re-escribir, sin sacar la pastilla del circuito donde opera. Esto puede hacerse unas 10.000 veces. Las flash ROM en una fracción de segundo se borran eléctricamente por bloques, y luego se re-escriben las celdas consecutivas de un bloque. Este tipo de ROM en el presente se usa como memorias auxiliares portátiles para PC "notebook" y como parte ROM de la memoria principal; se utilizan también como soporte de la película en cámaras digitales. ASCI / Introducción a la Informática / Unidad 4 13 En el siguiente cuadro se clasifican los tipos de memorias en tres grupos, según sus características de re-escritura: Tipo SRAM Uso típico ROM PROM EPROM EEPROM Flash ROM Características de reescritura Borrado Volátil Cada byte direccionado puede ser re-escrito en igual Lectura y tiempo en que se tarda su escritura lectura, cuantas veces se necesite Eléctrico Sí Una vez que la memoria fue escrita, no se puede reescribir Imposible Caché nivel 2 DRAM VRAM Clase Memoria principal Memoria de video equipos en vol. grandes Equipos en vol. pequeños Prototipos de dispositivos Película para cámara digital Sólo lectura Principal- Una vez que la memoria fue escrita, se puede re-escribir mente lectura (“reprogramar”) un número ilimitado o muy grande de veces, pero la escritura es Lectura y lenta comparada con el escritura tiempo de lectura de un byte No Luz UV eléctrico Verificación de integridad de datos Un aspecto importante en el diseño de la memoria es la verificación de integridad de los datos almacenados en la memoria RAM. Actualmente se emplean dos métodos para asegurar la integridad de datos: La paridad ha sido el método más común hasta la fecha. Este proceso añade un bit adicional cada 8 bits (1 byte) de datos. El ECC (Error Correction Code- Código de Corrección de Errores) es un método más completo para la verificación de integridad de datos que puede detectar y corregir errores de bits individuales. Debido al carácter competitivo del mercado, cada vez es más común que los fabricantes de computadoras personales omitan la verificación de integridad de datos. Por ejemplo, eliminan la memoria de paridad con el objeto de reducir el precio de los sistemas (esta tendencia ha sido compensada, en parte, por la mejora en la calidad de los componentes de memoria que ofrecen ciertos fabricantes, y como resultado, los errores de memoria son relativamente escasos). Bit de Paridad Supongamos que por un ruido (interferencia electromagnética) durante una operación de lectura de memoria, la UCP recibe uno de los bits invertido. ASCI / Introducción a la Informática / Unidad 4 14 Dato correcto: 0 1 0 0 0 0 0 1 BIT mal leído por ruido 0 1 0 0 0 0 1 1 Dato incorrecto: Entonces, es posible que se reciba otra combinación sin que se perciba el error. Se verificará que ampliando la capacidad de una memoria de forma que cada posición contenga un bit extra (o sea de 9 bits), puede detectarse si se ha producido un solo error por inversión. Este bit denominado “de paridad” (que se agrega a la celda al almacenar un byte), debe ser siempre de valor tal que el conjunto de 9 bits tenga un número par de unos (paridad par), o un número impar de unos (paridad impar) Al escribir una posición de memoria, un circuito calcula el valor que debe tener dicho bit (0 o 1), y al leer la misma posición el mismo circuito verifica que los 9 bits leídos tengan paridad par de unos. En caso contrario el programa en curso se interrumpe, avisando que hay un problema de paridad en memoria. Como ejemplo, usando paridad par, la combinación antes citada, 01000001, se convierte en 010000010 (en negrita el bit de paridad). Por esto, si se lee incorrectamente se leerá por ejemplo 010000110, y se detectará el error. El método basado en la paridad tiene ciertas limitaciones, dado que permite detectar si uno solo de los bits recibidos cambió de valor, que es la mayor probabilidad de errores de una lectura de memoria. Si los bits errados son dos, la paridad será la misma y no hay forma de detectar una combinación mal recibida. Afortunadamente, la posibilidad de que esto suceda es extremadamente remota. Código de Corrección de Errores El sistema de Código de Corrección de Errores se utiliza principalmente en las PC más avanzadas y en los servidores de archivos. La diferencia más importante entre el ECC y la paridad es que el ECC es capaz de detectar y corregir los errores de un bit. Con ECC, la corrección generalmente se lleva a cabo sin que el propio usuario se de cuenta de que se ha producido un error. Dependiendo del tipo de controlador de memoria utilizado por la computadora, ECC también podrá detectar los errores sumamente raros de dos, tres o cuatro bits de memoria. Sin embargo, aún cuando ECC puede detectar estos errores de múltiples bits, sólo puede corregir los errores de un sólo bit. Si se presenta el caso de un error de múltiples bits, el circuito ECC devuelve un error de paridad. Registros Anteriormente se mencionó que se puede considerar una RAM como formada por registros de un byte, aunque en general, no se suele llamar registros a las posiciones de memoria. ASCI / Introducción a la Informática / Unidad 4 15 Asimismo, los registros de cualquier UCP, (que se direccionan en lenguaje simbólico por nombres), se identifican internamente por un número que oficia de dirección dentro de la misma (a partir de cero, como una pequeña memoria). Dicho número es el que debe figurar en el código de una instrucción que hace mención a un determinado registro de la UCP. Podemos decir, entonces, que salvo la diferencia cuantitativa entre los registros de la UCP y las posiciones de memoria, los registros de la UCP constituyen una pequeña RAM, siendo que cada registro se localiza al random mediante un número, para ser leído o escrito. Es importante tener en cuenta, que el acceso a un registro de la UCP es del orden de unos pocos nanosegundos. Buffers En general, un buffer adapta dos velocidades distintas, permitiendo independencia entre un transmisor y un receptor, con el fin de que ambos puedan estar simultáneamente ocupados, sin que el más rápido pierda tiempo esperando a otro. En computación, se empezó a usar la denominación memoria buffer para zonas de memoria principal dónde se guardan datos en tránsito, desde o hacia periféricos. Por ejemplo, permanecen en una de estas zonas datos que van llegando a unas ciertas velocidades provenientes de un disco, para ser procesados luego a gran velocidad por la UCP. Mientras los datos van arribando a memoria, la UCP puede dedicarse a ejecutar otro programa. También puede designarse buffer a un registro o registros que almacenan temporariamente información en tránsito. Desde la primera generación de computadoras, los periféricos no se conectan directamente a memoria principal para entrar o recibir datos de ella, sino que reciben o envían datos a memoria a través de registros ports intermediarios, que almacenan temporariamente los datos en ellos. Dada la gran diferencia existente entre la operación y la transmisión de datos realizada por la parte central de una computadora (totalmente electrónica) y las realizadas por sus periféricos (que pueden tener movimientos mecánicos y/o humanos), se impone necesariamente la existencia de buffers (ports) entre ambos, para poder almacenar la información en curso, durante el tiempo necesario. Memoria caché La memoria caché (del francés cacher, que significa guardar o esconder) o "antememoria" de un procesador es una pequeña memoria rápida SRAM, ubicada entre la UCP y la memoria principal DRAM, que sirve para simular una memoria principal con un tiempo de acceso semejante al de la SRAM. Del conjunto de instrucciones de un programa y los datos a procesar que están en memoria principal, una caché contendrá una copia de las próximas instrucciones que probablemente ejecutará la UCP, y los datos que estas deben procesar. La idea fundamental en que se basa la memoria caché es sencilla: las palabras de memoria de mayor uso se mantienen en la caché. Cuando la UCP necesita una palabra, primero la busca en la memoria caché. Si la encuentra se produce un hit, si no miss, y sólo entonces recurrirá a la memoria principal. ASCI / Introducción a la Informática / Unidad 4 16 Así pues, el éxito o el fracaso dependen de qué fracción de las palabras están en la caché. Si una referencia a la memoria dada es la dirección A, es probable que la siguiente referencia sea una dirección cercana a A, ya que salvo las llamadas a procedimientos y las bifurcaciones las instrucciones de los programas se traen de posiciones consecutivas de la memoria. Además la mayor parte del tiempo de ejecución de un programa se invierte en realizar ciclos, en los que un número limitado de instrucciones se ejecutan una y otra vez. La observación de que las referencias a la memoria que se hacen en cualquier período corto tienden a usar una fracción de la memoria total se denomina principio de localidad y constituye la base de todos los sistemas de caché. Si una palabra se lee o escribe k veces en un intervalo corto, la computadora necesitará una referencia a la memoria lenta y k-1 referencias a la memoria rápida. Cuanto mayor sea k, mejor será el desempeño global. Un subsistema circuital denominado controlador de caché asegura que lo anterior se cumplirá, en más del 90% de los accesos (esta cifra depende del software ejecutado), o sea que la UCP sólo accederá a MP en un 10% de todos los accesos requeridos. El porcentaje anterior se logra, pues, almacenando con anticipación en el caché instrucciones y datos que la UCP solicitará próximamente. Por lo tanto, el manejo de la memoria caché está a cargo de un hardware de control, no requiriéndose software alguno. Resulta, entonces, que la memoria caché es un buffer inteligente, del cual la UCP toma información conforme a su velocidad de procesamiento, siendo que dicha información pasa de la memoria principal DRAM al caché a la velocidad con que esta puede ser leída. Por tal motivo es que típicamente se usan varios Mb de memoria principal DRAM y sólo hasta 512 Kb de SRAM para caché (esto es para PC, en algunos procesadores la memoria principal es de varios Gb y la Caché puede llegar hasta a 2Gb). Ya que además de la cuestión del costo, el tiempo requerido para determinar, en el controlador de caché, si se encuentra la información buscada aumenta con el tamaño de la caché. Por esto más allá de un cierto límite no se obtienen mejoras aumentando la capacidad de un caché. Para mejorar el tiempo de acceso a memoria, los procesadores operan con dos niveles de caché: ● Un primer nivel (level 1), constituido por el caché interno que el procesador lleva incorporado junto con su controlador de caché. A éste nivel se accede tan rápidamente como a los registros de UCP. ● Un segundo nivel (level 2) lo constituye el caché externo al procesador, conformado por los chips SRAM opcionales, que pueden insertarse en zócalos de la “mother” (Placa Madre). Cada vez que la UCP ordena acceder a la MP, por medio de las líneas de dirección, el controlador de caché determina en el “directorio del caché” si la información se encuentra en el mismo. El caché interno provee la información de si está o no en él. Si se produjo un “miss”, en aproximadamente 30 nanosegundos la proveerá el caché externo, pasando una copia de la información requerida al interno. Si la información tampoco está en el caché externo, se deberá acceder a la memoria principal, realizando una copia de la información en ambos cachés. Resulta, entonces, que el caché de segundo nivel permite una menor utilización directa de la MP por parte de la UCP, descongestionando el bus que une a ambos. Esto permite que la MP sea accedida por otros dispositivos, mientras la UCP accede a los niveles de caché para leer y escribir información. ASCI / Introducción a la Informática / Unidad 4 17 (L1) Caché (L2) El caché se encuentra lógicamente entra la UCP y la MP. Si bien se suele representar la estructura de la memoria caché en la misma forma de bytes aislados de la memoria principal, en el caché no existe una dirección por byte, sino que un bloque de bytes, llamado línea, es accedido por cada dirección del caché, para ser leídos o escritos. Al producirse un miss, el controlador ordenará que la palabra direccionada en MP se escriba en el caché, y que se lleven a cabo un número de lecturas sucesivas de MP (burst transfer) a partir de la dirección leída, que también se escribirán en el caché. Así el caché se va preparando para contener los bytes que siguen a los que no tenía cuando pidió leerlos la UCP, que son los que seguramente luego pedirá la UCP. El reemplazo de una línea de caché por otra, se decide según un algoritmo prefijado, como el LRU (least recently used), es decir que se reemplaza la línea menos recientemente usada. El controlador de caché también maneja la estrategia de escritura del caché la MP. Una forma denominada write through consiste en actualizar simultáneamente ambas. Otra, llamada write back, consiste en marcar en el caché las posiciones que la UC escribió en él, de forma que cuando el bloque o línea que las contiene es reemplazado en el caché, se escriban entonces las posiciones correspondientes de la memoria principal. ASCI / Introducción a la Informática / Unidad 4 18 Jerarquía de Memorias Las jerarquías o niveles de memoria se vienen usando (con distintas tecnologías) desde la primera generación de computadoras, a fin de lograr, a un costo razonable por byte memorizado, minimizar el tiempo de ejecución de los programas y almacenar la cantidad de información requerida. Resulta más económico emplear medios de almacenamiento de bajos costos para guardar la información que no se va a usar inmediatamente. La información se guarda en uno u otro nivel, de acuerdo al uso próximo que se hará de ella, pudiendo existir copias de ella repetidas en varios niveles. Para que una jerarquía funcione se deben organizar las instrucciones y datos de forma tal que el número de accesos disminuya sustancialmente de un nivel de memoria a otro inferior. Pirámide de jerarquía de memoria en una computadora, según el tiempo de acceso Al bajar por la jerarquía, tres parámetros clave crecen: ● Primero, el tiempo de acceso se alarga. Los registros de la UCP pueden accederse en unos cuantos nanosegundos. Las memorias caché en pocas veces más que los anteriores. Los accesos a memoria principal suelen ser de varias decenas de nanosegundos. Los tiempos de acceso a disco son de por lo menos 10 milisegundos, y el acceso a cinta o disco óptico dependen de si deben insertarse lo medios a la unidad. ● Segundo, la capacidad de almacenamiento es mayor cuanto más se baja en la jerarquía. Los registros de la UCP pueden llegar a tener 128 bytes; los cachés unos cuantos Mb; las memorias principales decenas o miles de Mb; los discos magnéticos de unos cuantos Gb a decenas de Gb. Las cintas y los discos ópticos se guardan, generalmente fuera de línea, así que su capacidad dependen del presupuesto invertido en ellos por el propietario. ● Tercero, el número de bits que se obtiene por dólar invertido aumenta al bajar por la jerarquía. ASCI / Introducción a la Informática / Unidad 4 19 Al describir la relación entre la memoria caché y la principal, se vio que durante la ejecución de un programa se accede más frecuentemente a ciertas zonas “activas” de MP, siendo que las restantes zonas de ésta son accedidas muy pocas veces. Igualmente, de todos los archivos que contiene en forma permanente un disco rígido. Sólo una porción muy pequeña se copian en MP, para ser procesados por la UCP. Entre la MP y la memoria auxiliar del disco rígido, se indica un caché de disco rígido, el cual se realiza con una DRAM, que pertenece a la electrónica de la unidad de disco. Puede mencionarse que mediante el disco rígido puede simularse una memoria principal virtual, con una capacidad ilimitada, a costa de un pequeño aumento del tiempo de acceso promedio a la memoria. Los disquetes, discos ópticos y cintas, guardan, en general copias de resguardo de archivos existentes en el disco rígido, y otros archivos que éste no pueda contener. En general, todas las instrucciones y datos de un nivel se encuentran en el inmediato inferior, y así sucesivamente hasta la jerarquía más baja. La composición de las jerarquías supone lograr soluciones de compromiso para conjugar distintas propiedades que presentan las memorias intervinientes. (Cómo se describió al tratar el caché, su inclusión respondía a un compromiso entre velocidad de acceso requerida, capacidad de almacenamiento y costo). Es decir que, para cada computador, se busca crear una jerarquía de memorias tal que para el usuario simule una memoria con una capacidad de almacenamiento auxiliar virtualmente ilimitada, y con un tiempo de acceso tan rápido hoy en día, como el primer nivel de memoria caché incorporado al procesador. Buses de la computadora Se denomina bus del sistema al conjunto de circuitos encargados de la conexión y comunicación entre la UCP y el resto de los componentes de un sistema. Para ello se utilizan varias líneas eléctricas que permiten la transmisión de los datos en paralelo. Un bus de n bits transfiere simultáneamente esa cantidad de bits entre dos unidades cualesquiera. Además de las líneas de datos, el bus consta de las líneas de control (que transmiten órdenes) y las líneas de direcciones (contienen la dirección hacia dónde van dirigidos los datos que se están transmitiendo en la línea de datos o la dirección de memoria que se quiere leer) Un bus es un camino eléctrico común entre varios dispositivos. Los buses pueden clasificarse por su función: pueden usarse dentro de la UCP para transportar datos entre sus componentes (UC y ALU), o externos a la misma, para conectarla con la memoria o los dispositivos de E/S. Cada tipo de bus tiene sus requisitos propio y sus propiedades. ASCI / Introducción a la Informática / Unidad 4 20 Si bien los diseñadores de la UCP están en libertad de usar el tipo de bus que deseen, si se quiere que tarjetas diseñadas por terceros puedan conectarse al bus del sistema deben existir reglas bien definidas que digan cómo funciona el bus, que todos los dispositivos que están conectados a él deben obedecer. Esta reglas son el protocolo del bus. Deben existir también especificaciones técnicas que permitan la correcta conexión de los componentes. Algunos de los dispositivos que se conectan a un bus y que son activos y pueden iniciar transferencias de bus, se denominan amos o maestros (master), mientras que los que son pasivos se llaman esclavos (slave). Cuando la UCP ordena a un controlador de disco que lea o escriba un bloque, la UCP está actuando como maestro y el controlador de disco como esclavo. Mientras que el controlador de disco será maestro si ordena a la memoria que acepte las palabras que está leyendo de la unidad de disco, y la memoria será esclavo. En ninguna circunstancia la memoria puede ser amo. Ejemplos de amos (controladores) y esclavos de bus Amo Esclavo Ejemplo CPU Memoria CPU Dispositivo de E/S Iniciar transferencia de datos CPU Coprocesador Delegación de la UCP al coprocesador E/S Memoria Coprocesador CPU Traer instrucciones y datos DMA (acceso directo a memoria) Obtención de operandos de la CPU por el coprocesador Como las señales que producen los dispositivos no suelen ser lo suficientemente fuertes como para impulsar un bus, los maestros de bus se conectan al mismo con un chip llamado controlador de bus, que es, en esencia un amplificador digital. Así mismo, casi todos los esclavos se conectan al bus con un receptor de bus. En el ASCI / Introducción a la Informática / Unidad 4 21 caso de dispositivos que pueden cumplir con alternativamente ambas funciones, se emplea un chip combinado llamado transceptor de bus. Estos chips suelen ser dispositivos de tres estados, para poder “desconectarse” cuando no se necesitan, o estar conectados de forma un tanto distinta, llamada colector abierto, cuyo efecto es el mismo. Los aspectos fundamentales del diseño de los buses son: ● Anchura: es el número de señales de un bus. Para llegar al máximo de rendimiento el número de líneas en el bus debe igualar a la suma de números de bits de una palabra, al número de bits de la dirección máxima y al número de líneas de control, respectivamente ● Temporización: los buses se pueden dividir en dos categorías según sea su temporización: Un bus sincrónico tiene una línea alimentada por un oscilador de cristal piezo-eléctrico que emite un pulsos que determinan el ciclo del bus. La activación de las señales de control y la transmisión de datos y direcciones se debe realizar en sincronía con esos ciclos. El bus asincrónico no tiene un reloj maestro. Los ciclos del bus pueden tener las longitud que se requiera y no tiene porqué ser la misma para todos los pares de dispositivos. ● Arbitraje: Hasta ahora hemos supuesto que sólo hay un controlador de bus, pero en realidad los chips de E/S tienen que convertirse también en controladores de bus (además de la UCP), para leer y escribir en la memoria y para causar las interrupciones. Esto requiere de algún mecanismo de arbitraje de bus para evitar el caos que produciría el intento simultáneo de dos o más dispositivos de convertirse en controladores de bus. Bibliografía ● Ginzburg, M.C. La PC por dentro, Biblioteca Técnica Superior. ● Tanenbaum, A. Organización de computadoras. Un enfoque estructurado. ● Tucker, A. Cupper, R. y otros Fundamentos de Informática. ASCI / Introducción a la Informática / Unidad 4 22