RAM son las siglas de random access memory o memoria de acceso aleatorio, es un tipo de memoria que permite almacenar y/o extraer información (Lectura/Escritura), accesando aleatoriamente; es decir, puede acceder a cualquier punto o dirección del mismo y en cualquier momento (no secuencial). La memoria RAM, se compone de uno o más chips y se utiliza como memoria de trabajo para guardar o borrar nuestros programas y datos. Es un tipo de memoria temporal que pierde sus datos cuando el computador se queda sin energía. Hay dos tipos básicos de memoria RAM: 1. RAM dinámica (DRAM) 2. RAM estática (SRAM) Los dos tipos de memoria RAM se diferencian en la tecnología que utilizan para guardar los datos, la memoria RAM dinámica es la más común. La memoria RAM dinámica necesita actualizarse miles de veces por segundo, mientras que la memoria RAM estática no necesita actualizarse, por lo que es más rápida, aunque también más cara. Ambos tipos de memoria RAM son volátiles, es decir, que pierden su contenido cuando se apaga el equipo. Tipos de memoria RAM VRAM Siglas de Vídeo RAM, una memoria de propósito especial usada por los adaptadores de vídeo. A diferencia de la convencional memoria RAM, la VRAM puede ser accedida por dos diferentes dispositivos de forma simultánea. Esto permite que un monitor pueda acceder a la VRAM para las actualizaciones de la pantalla al mismo tiempo que un procesador gráfico suministra nuevos datos. VRAM permite mejores rendimientos gráficos aunque es más cara que la una RAM normal. SIMM Siglas de Single In line Memory Module, un tipo de encapsulado consistente en una pequeña placa de circuito impreso que almacena chips de memoria, y que se inserta en un zócalo SIMM en la placa madre o en la placa de memoria. Los SIMMs son más fáciles de instalar que los antiguos chips de memoria individuales, y a diferencia de ellos son medidos en bytes en lugar de bits. Hay de dos tipos de 30 y de 72 pines. Los de 30 vienen en capacidades de 256K y 1Mb y ya casi no se usan. Los de 72 vienen en versiones de 4, 8, 16, 32 . Su principal desventaja: trabajan en pares. DIMM Siglas de Dual In line Memory Module, un tipo de encapsulado, consistente en una pequeña placa de circuito impreso que almacena chips de memoria, que se inserta en un zócalo DIMM en la placa madre y usa generalmente un conector de 168 contactos. No se pueden mesclar DIMM y SIMM. DIP Siglas de Dual In line Package, un tipo de encapsulado consistente en almacenar un chip de memoria en una caja rectangular con dos filas de pines de conexión en cada lado. RAM Disk Se refiere a la RAM que ha sido configurada para simular un disco duro. Se puede acceder a los ficheros de un RAM disk de la misma forma en la que se acceden a los de un disco duro. Sin embargo, los RAM disk son aproximadamente miles de veces más rápidos que los discos duros, y son particularmente útiles para aplicaciones que precisan de frecuentes accesos a disco. Dado que están constituidos por RAM normal. los RAM disk pierden su contenido una vez que la computadora es apagada. Para usar los RAM Disk se precisa copiar los ficheros desde un disco duro real al inicio de la sesión y copiarlos de nuevo al disco duro antes de apagar la máquina. Observe que en el caso de fallo de alimentación eléctrica, se perderán los datos que hubiera en el RAM disk. El sistema operativo DOS permite convertir la memoria extendida en un RAM Disk por medio del comando VDISK, siglas de Virtual DISK, otro nombre de los RAM Disks. Memoria Caché ó RAM Caché Un caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay dos tipos de caché frecuentemente usados en las computadoras personales: memoria caché y caché de disco. Una memoria caché, llamada también a veces almacenamiento caché ó RAM caché, es una parte de memoria RAM estática de alta velocidad (SRAM) más que la lenta y barata RAM dinámica (DRAM) usada como memoria principal. La memoria caché es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones. Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM. Cuando un dato es encontrado en el caché, se dice que se ha producido un impacto (hit), siendo un caché juzgado por su tasa de impactos (hit rate). Los sistemas de memoria caché usan una tecnología conocida por caché inteligente en el cual el sistema puede reconocer cierto tipo de datos usados frecuentemente. Las estrategias para determinar qué información debe de ser puesta en el caché constituyen uno de los problemas más interesantes en la ciencia de las computadoras. Algunas memorias caché están construidas en la arquitectura de los microprocesadores. Por ejemplo, el procesador Pentium II tiene una caché L2 de 512 Kbytes. El caché de disco trabaja sobre los mismos principios que la memoria caché, pero en lugar de usar SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del disco duro a los que se ha accedido (así como los sectores adyacentes) se almacenan en un buffer de memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es la caché del disco para ver si los datos ya estan ahí. La caché de disco puede mejorar drásticamente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro. SRAM Siglas de Static Random Access Memory, es un tipo de memoria que es más rápida y fiable que la más común DRAM (Dynamic RAM). El término estática viene derivado del hecho que necesita ser refrescada menos veces que la RAM dinámica. Los chips de RAM estática tienen tiempos de acceso del orden de 10 a 30 nanosegundos, mientras que las RAM dinámicas están por encima de 30, y las memorias bipolares y ECL se encuentran por debajo de 10 nanosegundos. Un bit de RAM estática se construye con un — como circuito flip-flop que permite que la corriente fluya de un lado a otro basándose en cual de los dos transistores es activado. Las RAM estáticas no precisan de circuitería de refresco como sucede con las RAMs dinámicas, pero precisan más espacio y usan más energía. La SRAM, debido a su alta velocidad, es usada como memoria caché. DRAM Siglas de Dynamic RAM, un tipo de memoria de gran capacidad pero que precisa ser constantemente refrescada (re-energizada) o perdería su contenido. Generalmente usa un transistor y un condensador para representar un bit Los condensadores debe de ser energizados cientos de veces por segundo para mantener las cargas. A diferencia de los chips firmware (ROMs, PROMs, etc.) las dos principales variaciones de RAM (dinámica y estática) pierden su contenido cuando se desconectan de la alimentación. Contrasta con la RAM estática. Algunas veces en los anuncios de memorias, la RAM dinámica se indica erróneamente como un tipo de encapsulado; por ejemplo “se venden DRAMs, SIMMs y SIPs”, cuando deberia decirse “DIPs, SIMMs y SIPs” los tres tipos de encapsulado típicos para almacenar chips de RAM dinámica. También algunas veces el término RAM (Random Access Memory) es utilizado para referirse a la DRAM y distinguirla de la RAM estática (SRAM) que es más rápida y más estable que la RAM dinámica, pero que requiere más energía y es más cara SDRAM Siglas de Synchronous DRAM, DRAM síncrona. Este tipo de memoria se conecta al reloj del sistema y está diseñada para ser capaz de leer o escribir a un ciclo de reloj por acceso, es decir, sin estados de espera intermedios. SDRAM entrelaza dos o más matrices de memoria interna de tal forma que mientras que se está accediendo a una matriz, la siguiente se está preparando para el acceso. SDRAM-II es tecnología SDRAM más rápida. También conocido como DDR DRAM o DDR SDRAM (Double Data Rate DRAM o SDRAM), permite leer y escribir datos a dos veces la velocidad bús. FPM Siglas de Fast Page Mode, memoria en modo paginado, el diseño más comun de chips de RAM dinámica. El acceso a los bits de memoria se realiza por medio de coordenadas, fila y columna. Antes del modo paginado, era leido pulsando la fila y la columna de las líneas seleccionadas. Con el modo pagina, la fila se selecciona solo una vez para todas las columnas (bits) dentro de la fila, dando como resultado un rápido acceso. La memoria en modo paginado tambien es llamada memoria de modo Fast Page o memoria FPM, FPM RAM, FPM DRAM. El término “fast” fué añadido cuando los más nuevos chips empezaron a correr a 100 nanoseconds e incluso más. EDO Siglas de Extended Data Output, un tipo de chip de RAM dinámica que mejora el rendimiento del modo de memoria Fast Page alrededor de un 10%. Al ser un subconjunto de Fast Page, puede ser substituida por chips de modo Fast Page. Sin embargo, si el controlador de memoria no está diseñado para los más rápidos chips EDO, el rendimiento será el mismo que en el modo Fast Page. EDO elimina los estados de espera manteniendo activo el buffer de salida hasta que comienza el próximo ciclo. BEDO (Burst EDO) es un tipo más rápido de EDO que mejora la velocidad usando un contador de dirección para las siguientes direcciones y un estado ‘pipeline’ que solapa las operaciones. PB SRAM Siglas de Pipeline Burst SRAM. Se llama ‘pipeline’ a una categoría de técnicas que proporcionan un proceso simultáneo, o en paralelo dentro de la computadora, y se refiere a las operaciones de solapamiento moviendo datos o instrucciones en una ‘tuberia’ conceptual con todas las fases del ‘pipe’ procesando simultáneamente. Por ejemplo, mientras una instrucción se está ejecutándo, la computadora está decodificando la siguiente instrucción. En procesadores vectoriales, pueden procesarse simultáneamente varios pasos de operaciones de coma flotante La PB SRAM trabaja de esta forma y se mueve en velocidades de entre 4 y 8 nanosegundos. Nomenclatura La expresión memoria RAM se utiliza frecuentemente para describir a los módulos de memoria utilizados en los computadores personales y servidores. En el sentido estricto, esta memoria es solo una variedad de la memoria de acceso aleatorio: las ROM, memorias Flash, caché (SRAM), los registros en procesadores y otras unidades de procesamiento también poseen la cualidad de presentar retardos de acceso iguales para cualquier posición. Los módulos de RAM son la presentación comercial de este tipo de memoria, que se compone de circuitos integrados soldados sobre un circuito impreso independiente, en otros dispositivos como las consolas de videojuegos, la RAM va soldada directamente sobre la placa principal. Historia Integrado de silicio de 64 bits sobre un sector de memoria de núcleo magnético (finales de los 60). 4MiB de memoria RAM para un computador VAX de finales de los 70. Los integrados de memoria DRAM están agrupados arriba a derecha e izquierda. Módulos de memoria tipo SIPP instalados directamente sobre la placa base. Uno de los primeros tipos de memoria RAM fue la memoria de núcleo magnético, desarrollada entre 1949 y 1952 y usada en muchos computadores hasta el desarrollo de circuitos integrados a finales de los años 60 y principios de los 70. Esa memoria requería que cada bit estuviera almacenado en un toroide de material ferromagnético de algunos milímetros de diámetro, lo que resultaba en dispositivos con una capacidad de memoria muy pequeña. Antes que eso, las computadoras usaban relés y líneas de retardo de varios tipos construidas para implementar las funciones de memoria principal con o sin acceso aleatorio. En 1969 fueron lanzadas una de las primeras memorias RAM basadas en semiconductores de silicio por parte de Intel con el integrado 3101 de 64 bits de memoria y para el siguiente año se presentó una memoria DRAM de 1024 bytes, referencia 1103 que se constituyó en un hito, ya que fue la primera en ser comercializada con éxito, lo que significó el principio del fin para las memorias de núcleo magnético. En comparación con los integrados de memoria DRAM actuales, la 1103 es primitiva en varios aspectos, pero tenía un desempeño mayor que la memoria de núcleos. En 1973 se presentó una innovación que permitió otra miniaturización y se convirtió en estándar para las memorias DRAM: la multiplexación en tiempo de la direcciones de memoria. MOSTEK lanzó la referencia MK4096 de 4096 bytes en un empaque de 16 pines, mientras sus competidores las fabricaban en el empaque DIP de 22 pines. El esquema de direccionamiento se convirtió en un estándar de facto debido a la gran popularidad que logró esta referencia de DRAM. Para finales de los 70 los integrados eran usados en la mayoría de computadores nuevos, se soldaban directamente a las placas base o se instalaban en zócalos, de manera que ocupaban un área extensa de circuito impreso. Con el tiempo se hizo obvio que la instalación de RAM sobre el impreso principal, impedía la miniaturización, entonces se idearon los primeros módulos de memoria como el SIPP, aprovechando las ventajas de la construcción modular. El formato SIMM fue una mejora al anterior, eliminando los pines metálicos y dejando unas áreas de cobre en uno de los bordes del impreso, muy similares a los de las tarjetas de expansión, de hecho los módulos SIPP y los primeros SIMM tienen la misma distribución de pines. A finales de los 80 el aumento en la velocidad de los procesadores y el aumento en el ancho de banda requerido, dejaron rezagadas a las memorias DRAM con el esquema original MOSTEK, de manera que se realizaron una serie de mejoras en el direccionamiento como las siguientes: Módulos formato SIMM de 30 y 72 pines, los últimos fueron utilizados con integrados tipo EDO-RAM. FPM-RAM (Fast Page Mode RAM) Inspirado en técnicas como el "Burst Mode" usado en procesadores como el Intel 486, se implantó un modo direccionamiento en el que el controlador de memoria envía una sola dirección y recibe a cambio esa y varias consecutivas sin necesidad de generar todas las direcciones. Esto supone un ahorro de tiempos ya que ciertas operaciones son repetitivas cuando se desea acceder a muchas posiciones consecutivas. Funciona como si deseáramos visitar todas las casas en una calle: después de la primera vez no sería necesario decir el número de la calle únicamente seguir la misma. Se fabricaban con tiempos de acceso de 70 ó 60 ns y fueron muy populares en sistemas basados en el 486 y los primeros Pentium. EDO-RAM (Extended Data Output RAM) Lanzada en 1995 y con tiempos de accesos de 40 o 30 ns suponía una mejora sobre su antecesora la FPM. La EDO, también es capaz de enviar direcciones contiguas pero direcciona la columna que va utilizar mientras que se lee la información de la columna anterior, dando como resultado una eliminación de estados de espera, manteniendo activo el búffer de salida hasta que comienza el próximo ciclo de lectura. BEDO-RAM (Burst Extended Data Output RAM) Fue la evolución de la EDO RAM y competidora de la SDRAM, fue presentada en 1997. Era un tipo de memoria que usaba generadores internos de direcciones y accedía a más de una posición de memoria en cada ciclo de reloj, de manera que lograba un desempeño un 50% mejor que la EDO. Nunca salió al mercado, dado que Intel y otros fabricantes se decidieron por esquemas de memoria sincrónicos que si bien tenían mucho del direccionamiento MOSTEK, agregan funcionalidades distintas como señales de reloj. Tecnologías de memoria La tecnología de memoria actual usa una señal de sincronización para realizar las funciones de lectura-escritura de manera que siempre esta sincronizada con un reloj del bus de memoria, a diferencia de las antiguas memorias FPM y EDO que eran asíncronas. Hace más de una década toda la industria se decantó por las tecnologías síncronas, ya que permiten construir integrados que funcionen a una frecuencia superior a 66 MHz. Tipos de DIMMs según su cantidad de Contactos o Pines: 72-pin SO-DIMM (no el mismo que un 72-pin SIMM), usados por FPM DRAM y EDO DRAM 100-pin DIMM, usados por printer SDRAM 144-pin SO-DIMM, usados por SDR SDRAM 168-pin DIMM, usados por SDR SDRAM (menos frecuente para FPM/EDO DRAM en áreas de trabajo y/o servidores) 172-pin MicroDIMM, usados por DDR SDRAM 184-pin DIMM, usados por DDR SDRAM 200-pin SO-DIMM, usados por DDR SDRAM y DDR2 SDRAM 204-pin SO-DIMM, usados por DDR3 SDRAM 240-pin DIMM, usados por DDR2 SDRAM, DDR3 SDRAM y FB-DIMM DRAM 244-pin MiniDIMM, usados por DDR2 SDRAM Memorias RAM con tecnologías usadas en la actualidad. SDR SDRAM Artículo principal: SDR SDRAM. Memoria síncrona, con tiempos de acceso de entre 25 y 10 ns y que se presentan en módulos DIMM de 168 contactos. Fue utilizada en los Pentium II y en los Pentium III , así como en los AMD K6, AMD Athlon K7 y Duron. Está muy extendida la creencia de que se llama SDRAM a secas, y que la denominación SDR SDRAM es para diferenciarla de la memoria DDR, pero no es así, simplemente se extendió muy rápido la denominación incorrecta. El nombre correcto es SDR SDRAM ya que ambas (tanto la SDR como la DDR) son memorias síncronas dinámicas. Los tipos disponibles son: PC66: SDR SDRAM, funciona a un máx de 66,6 MHz. PC100: SDR SDRAM, funciona a un máx de 100 MHz. PC133: SDR SDRAM, funciona a un máx de 133,3 MHz. RDRAM Artículo principal: RDRAM. Se presentan en módulos RIMM de 184 contactos. Fue utilizada en los Pentium IV . Era la memoria más rápida en su tiempo, pero por su elevado costo fue rápidamente cambiada por la económica DDR. Los tipos disponibles son: PC600: RIMM RDRAM, funciona a un máximo de 300 MHz. PC700: RIMM RDRAM, funciona a un máximo de 356 MHz. PC800: RIMM RDRAM, funciona a un máximo de 400 MHz. PC1066: RIMM RDRAM, funciona a un máximo de 533 MHz. DDR SDRAM Artículo principal: DDR SDRAM. Memoria síncrona, envía los datos dos veces por cada ciclo de reloj. De este modo trabaja al doble de velocidad del bus del sistema, sin necesidad de aumentar la frecuencia de reloj. Se presenta en módulos DIMM de 184 contactos en el caso de ordenador de escritorio y en módulos de 144 contactos para los ordenadores portátiles. Los tipos disponibles son: PC1600 o DDR 200: funciona a un máx de 200 MHz. PC2100 o DDR 266: funciona a un máx de 266,6 MHz. PC2700 o DDR 333: funciona a un máx de 333,3 MHz. PC3200 o DDR 400: funciona a un máx de 400 MHz. PC4500 o DR4 400: funciona a una máx de 500 MHz DDR2 SDRAM Módulos de memoria instalados de 256 MiB cada uno en un sistema con doble canal. Artículo principal: DDR2 SDRAM. Las memorias DDR 2 son una mejora de las memorias DDR (Double Data Rate), que permiten que los búferes de entrada/salida trabajen al doble de la frecuencia del núcleo, permitiendo que durante cada ciclo de reloj se realicen cuatro transferencias. Se presentan en módulos DIMM de 240 contactos. Los tipos disponibles son: PC2-4200 o DDR2-533: funciona a un máx de 533,3 MHz. PC2-5300 o DDR2-667: funciona a un máx de 666,6 MHz. PC2-6400 o DDR2-800: funciona a un máx de 800 MHz. PC2-8600 o DDR2-1066: funciona a un máx de 1066,6 MHz. PC2-9000 o DDR2-1200: funciona a un máx de 1200 MHz DDR3 SDRAM Artículo principal: DDR3 SDRAM. Las memorias DDR 3 son una mejora de las memorias DDR 2, proporcionan significantes mejoras en el rendimiento en niveles de bajo voltaje, lo que lleva consigo una disminución del gasto global de consumo. Los módulos DIMM DDR 3 tienen 240 pines, el mismo número que DDR 2; sin embargo, los DIMMs son físicamente incompatibles, debido a una ubicación diferente de la muesca. Los tipos disponibles son: PC3-6400 o DDR3-800: funciona a un máx de 800 MHz. PC3-8500 o DDR3-1066: funciona a un máx de 1066,6 MHz. PC3-10600 o DDR3-1333: funciona a un máx de 1333,3 MHz. PC3-12800 o DDR3-1600: funciona a un máx de 1600 MHz. PC3-14900 o DDR3-1866: funciona a un máx de 1866,6 MHz. PC3-17000 o DDR3-2133: funciona a un máx de 2133,3 MHz. PC3-19200 o DDR3-2400: funciona a un máx de 2400 MHz. PC3-21300 o DD3-2666: funciona a un máx de 2666,6 MHz. Módulos de la memoria RAM Formato SO-DIMM. Los módulos de memoria RAM son tarjetas de circuito impreso que tienen soldados integrados de memoria DRAM por una o ambas caras. La implementación DRAM se basa en una topología de Circuito eléctrico que permite alcanzar densidades altas de memoria por cantidad de transistores, logrando integrados de cientos o miles de megabits. Además de DRAM, los módulos poseen un integrado que permiten la identificación de los mismos ante el computador por medio del protocolo de comunicación SPD. La conexión con los demás componentes se realiza por medio de un área de pines en uno de los filos del circuito impreso, que permiten que el modulo al ser instalado en un zócalo apropiado de la placa base, tenga buen contacto eléctrico con los controladores de memoria y las fuentes de alimentación. Los primeros módulos comerciales de memoria eran SIPP de formato propietario, es decir no había un estándar entre distintas marcas. Otros módulos propietarios bastante conocidos fueron los RIMM, ideados por la empresa RAMBUS. La necesidad de hacer intercambiable los módulos y de utilizar integrados de distintos fabricantes condujo al establecimiento de estándares de la industria como los JEDEC. Módulos SIMM: Formato usado en computadores antiguos. Tenían un bus de datos de 16 ó 32 bits Módulos DIMM: Usado en computadores de escritorio. Se caracterizan por tener un bus de datos de 64 bits. Módulos SO-DIMM: Usado en computadores portátiles. Formato miniaturizado de DIMM. Relación con el resto del sistema Diagrama de la arquitectura de un ordenador. Dentro de la jerarquía de memoria la RAM se encuentra en un nivel después de los registros del procesador y de las cachés en cuanto a velocidad. Los módulos de memoria se conectan eléctricamente a un controlador de memoria que gestiona las señales entrantes y salientes de los integrados DRAM. Las señales son de tres tipos: direccionamiento, datos y señales de control. En el módulo de memoria esas señales están divididas en dos buses y un conjunto misceláneo de líneas de control y alimentación, Entre todas forman el bus de memoria que conecta la RAM con su controlador: Bus de datos: Son las líneas que llevan información entre los integrados y el controlador. Por lo general están agrupados en octetos siendo de 8,16,32 y 64 bits, cantidad que debe igualar el ancho del bus de datos del procesador. En el pasado, algunos formatos de modulo, no tenían un ancho de bus igual al del procesador. En ese caso había que montar módulos en pares o en situaciones extremas, de a 4 módulos, para completar lo que se denominaba banco de memoria, de otro modo el sistema no funciona. Esa fue la principal razón para aumentar el número de pines en los módulos, igualando al ancho de bus de procesadores como el Pentium a 64 bits, a principios de los 90. Bus de direcciones: Es un bus en el cual se colocan las direcciones de memoria a las que se requiere acceder. No es igual al bus de direcciones del resto del sistema, ya que está multiplexado de manera que la dirección se envía en dos etapas. Para ello el controlador realiza temporizaciones y usa las líneas de control. En cada estándar de módulo se establece un tamaño máximo en bits de este bus, estableciendo un límite teórico de la capacidad máxima por módulo. Señales misceláneas: Entre las que están las de la alimentación (Vdd, Vss) que se encargan de entregar potencia a los integrados. Están las líneas de comunicación para el integrado de presencia que sirve para identificar cada módulo. Están las líneas de control entre las que se encuentran las llamadas RAS (row address strobe) y CAS (column address strobe) que controlan el bus de direcciones, por último están las señales de reloj en las memorias sincrónicas SDRAM. Algunos controladores de memoria en sistemas como PC y servidores se encuentran embebidos en el llamado "North Bridge" o "Puente Norte" de la placa base. Otros sistemas incluyen el controlador dentro del mismo procesador (en el caso de los procesadores desde AMD Athlon 64 e Intel Core i7 y posteriores). En la mayoría de los casos el tipo de memoria que puede manejar el sistema está limitado por los sockets para RAM instalados en la placa base, a pesar que los controladores de memoria en muchos casos son capaces de conectarse con tecnologías de memoria distintas. Una característica especial de algunos controladores de memoria, es el manejo de la tecnología canal doble (Dual Channel), donde el controlador maneja bancos de memoria de 128 bits, siendo capaz de entregar los datos de manera intercalada, optando por uno u otro canal, reduciendo las latencias vistas por el procesador. La mejora en el desempeño es variable y depende de la configuración y uso del equipo. Esta característica ha promovido la modificación de los controladores de memoria, resultando en la aparición de nuevos chipsets (la serie 865 y 875 de Intel) o de nuevos zócalos de procesador en los AMD (el 939 con canal doble , reemplazo el 754 de canal sencillo). Los equipos de gama media y alta por lo general se fabrican basados en chipsets o zócalos que soportan doble canal o superior, como en el caso del zócalo (o socket, en inglés) 1366 de Intel, que usaba un triple canal de memoria, o su nuevo LGA 2011 que usa cuádruple canal. Detección y corrección de errores Existen dos clases de errores en los sistemas de memoria, las fallas (Hard fails) que son daños en el hardware y los errores (soft errors) provocados por causas fortuitas. Los primeros son relativamente fáciles de detectar (en algunas condiciones el diagnóstico es equivocado), los segundos al ser resultado de eventos aleatorios, son más difíciles de hallar. En la actualidad la confiabilidad de las memorias RAM frente a los errores, es suficientemente alta como para no realizar verificación sobre los datos almacenados, por lo menos para aplicaciones de oficina y caseras. En los usos más críticos, se aplican técnicas de corrección y detección de errores basadas en diferentes estrategias: La técnica del bit de paridad consiste en guardar un bit adicional por cada byte de datos y en la lectura se comprueba si el número de unos es par (paridad par) o impar (paridad impar), detectándose así el error. Una técnica mejor es la que usa ECC, que permite detectar errores de 1 a 4 bits y corregir errores que afecten a un sólo bit. Esta técnica se usa sólo en sistemas que requieren alta fiabilidad. Por lo general los sistemas con cualquier tipo de protección contra errores tiene un costo más alto, y sufren de pequeñas penalizaciones en desempeño, con respecto a los sistemas sin protección. Para tener un sistema con ECC o paridad, el chipset y las memorias deben tener soporte para esas tecnologías. La mayoría de placas base no poseen dicho soporte. Para los fallos de memoria se pueden utilizar herramientas de software especializadas que realizan pruebas sobre los módulos de memoria RAM. Entre estos programas uno de los más conocidos es la aplicación Memtest86+ que detecta fallos de memoria. Memoria RAM registrada Es un tipo de módulo usado frecuentemente en servidores, posee circuitos integrados que se encargan de repetir las señales de control y direcciones: las señales de reloj son reconstruidas con ayuda del PLL que está ubicado en el módulo mismo. Las señales de datos se conectan de la misma forma que en los módulos no registrados: de manera directa entre los integrados de memoria y el controlador. Los sistemas con memoria registrada permiten conectar más módulos de memoria y de una capacidad más alta, sin que haya perturbaciones en las señales del controlador de memoria, permitiendo el manejo de grandes cantidades de memoria RAM. Entre las desventajas de los sistemas de memoria registrada están el hecho de que se agrega un ciclo de retardo para cada solicitud de acceso a una posición no consecutiva y un precio más alto que los módulos no registrados. La memoria registrada es incompatible con los controladores de memoria que no soportan el modo registrado, a pesar de que se pueden instalar físicamente en el zócalo. Se pueden reconocer visualmente porque tienen un integrado mediano, cerca del centro geométrico del circuito impreso, además de que estos módulos suelen ser algo más altos.4 Durante el año 2006 varias marcas lanzaron al mercado sistemas con memoria FB-DIMM que en su momento se pensaron como los sucesores de la memoria registrada, pero se abandonó esa tecnología en 2007 dado que ofrecía pocas ventajas sobre el diseño tradicional de memoria registrada y los nuevos modelos con memoria DDR3. 2. Desarrollada por Toshiba. Los diseñadores rompieron explícitamente con las prácticas del pasado, afirmando que enfocaba "ser un reemplazo de los discos duros", más que tener el tradicional uso de la ROM como una forma de almacenamiento primario no volátil. En 2007, NAND ha avanzado bastante en su meta, ofreciendo un rendimiento comparable al de los discos duros, una mejor tolerancia a los shocks físicos, una miniaturización extrema (como por ejemplo memorias USB y tarjetas de memoria MicroSD), y un consumo de potencia mucho más bajo. Uso para almacenamiento de software Memoria de solo lectura conteniendo el BIOS de una vieja placa madre. Los ordenadores domésticos a comienzos de los años 1980 venían con todo su sistema operativo en ROM. No había otra alternativa razonable ya que las unidades de disco eran generalmente opcionales. La actualización a una nueva versión significa usar un soldador o un grupo de interruptores DIP y reemplazar el viejo chip de ROM por uno nuevo. Actualmente los sistemas operativos en general ya no van en ROM. Todavía los ordenadores pueden dejar algunos de sus programas en memoria ROM, pero incluso en este caso, es más frecuente que vaya en memoria flash. Los teléfonos móviles y los asistentes personales digitales (PDA) suelen tener programas en memoria ROM (o por lo menos en memoria flash). Uso para almacenamiento de datos Como la ROM no puede ser modificada (al menos en la antigua versión de máscara), solo resulta apropiada para almacenar datos que no necesiten ser modificados durante la vida de este dispositivo. Con este fin, la ROM se ha utilizado en muchos ordenadores para guardar tablas de consulta, utilizadas para la evaluación de funciones matemáticas y lógicas. Esto era especialmente eficiente cuando la unidad central de procesamiento era lenta y la ROM era barata en comparación con la RAM. De hecho, una razón de que todavía se utilice la memoria ROM para almacenar datos es la velocidad, ya que los discos siguen siendo más lentos. Y lo que es aún más importante, no se puede leer un programa que es necesario para ejecutar un disco desde el propio disco. Por lo tanto, la BIOS, o el sistema de arranque oportuno del PC normalmente se encuentran en una memoria ROM. No obstante, el uso de la ROM para almacenar grandes cantidades de datos ha ido desapareciendo casi completamente en los ordenadores de propósito general, mientras que la memoria Flash ha ido ocupando este puesto. Velocidad Velocidad de lectura Aunque la relación relativa entre las velocidades de las memorias RAM y ROM ha ido variando con el tiempo, desde el año 2007 la RAM es más rápida para la lectura que la mayoría de las ROM, razón por la cual el contenido ROM se suele traspasar normalmente a la memoria RAM, desde donde es leída cuando se utiliza. Velocidad de escritura Para los tipos de ROM que puedan ser modificados eléctricamente, la velocidad de escritura siempre es mucho más lenta que la velocidad de lectura, pudiendo requerir voltaje excepcionalmente alto, movimiento de jumpers para habilitar el modo de escritura, y comandos especiales de desbloqueo. Las memorias Flash NAND logran la más alta velocidad de escritura entre todos los tipos de memoria ROM reprogramable, escribiendo grandes bloques de celdas de memoria simultáneamente, y llegando a 15 MB/s. La RAM Tiene una capacidad Maxima de 128 MB UCV. 3. Una PROM común se encuentra con todos los bits en valor 1 como valor por defecto de las fábricas; el quemado de cada fusible, cambia el valor del correspondiente bit a 0. La programación se realiza aplicando pulsos de altos voltajes que no se encuentran durante operaciones normales (12 a 21 voltios). El término Read-only (solo lectura) se refiere a que, a diferencia de otras memorias, los datos no pueden ser cambiados (al menos por el usuario final). Historia La memoria PROM fue inventada en 1956 por Wen Tsing Chow, trabajando para la División Arma, de la American Bosch Arma Corporation en Garden City, Nueva York. La invención fue concebida a petición de la Fuerza Aérea de los Estados Unidos, para conseguir una forma más segura y flexible para almacenar las constantes de los objetivos en la computadora digital del MBI Atlas E/F. La patente y la tecnología asociadas fueron mantenidas bajo secreto por varios años mientras el Atlas E/F era el principal misil de Estados Unidos. El término "quemar", refiriéndose al proceso de grabar una PROM, se encuentra también en la patente original, porque como parte de la implementación original debía quemarse literalmente los diodos internos con un exceso de corriente para producir la discontinuidad del circuito. Las primeras máquinas de programación de PROMs también fueron desarrolladas por ingenieros de la División Arma bajo la dirección del Sr. Chow y fueron ubicados el laboratorio Arma de Garden City, y en la jefatura del Comando estratégico aéreo de las Fuerzas Aéreas. EPROM y EEPROM Wen Tsing Chow y otros ingenieros de la División Arma continuaron con este suceso diseñando la primera Memoria de Solo Lectura No destruible' (Non-Destructive Read-Only Memory, NDRO) para aplicarlo a misiles guiados, fundamentado en una base de doble abertura magnética. Estas memorias, diseñadas originalmente para mantener constantes de objetivos, fueron utilizadas para sistemas de armas de MBIs y MMRBMs. La principal motivación para este invento fue que la Fuerza Aérea Estadounidense necesitaba reducir los costes de la fabricación de plaquetas de objetivos basadas en PROMs que necesitaban cambios constantes a medida que llegaba nueva información sobre objetivos del bloque de naciones comunistas. Como estas memorias son borrables, programables y re-programables, constituyen la primera implementación de una producción de memorias EPROM y EEPROM, de fabricación anterior al 1963. Debe observarse que los términos modernos de estos dispositivos, PROM, EPROM y EEPROM, no fueron creados hasta un tiempo después de que las aplicaciones de misiles nucleares guiados hayan estado operacionales. Las implementaciones originales de Arma se refieren a las PROMs como "matriz de almacenamiento de constantes"; y a las EPROMs y EEPROMs simplemente eran denominadas "memorias NDRO". Las modernas implementaciones comerciales de las PROM, EPROM y EEPROM basadas en circuitos integrados, borrado por luz ultravioleta, y varias propiedades de los transistores, aparecen unos 10 años después. Hasta que esas nuevas implementaciones fueron desarrolladas, fuera de aplicaciones militares, era más barato fabricar memorias ROM que utilizar una de las nuevas caras tecnologías desarrolladas y fabricados por los contratistas de misiles de las fuerzas aéreas. De todas formas, en misiles, naves espaciales, satélites y otras aplicaciones de mucha confiabilidad, siguen en uso muchos de los métodos de la implementación original de los '50. EEPROM o E²PROM son las siglas de Electrically Erasable Programmable Read-Only Memory (ROM programable y borrada eléctricamente). Es un tipo de memoria ROM que puede ser programada, borrada y reprogramada eléctricamente, a diferencia de la EPROM que ha de borrarse mediante un aparato que emite rayos ultravioleta. Son memorias no volátiles. Las celdas de memoria de una EEPROM están constituidas por un transistor MOS, que tiene una compuerta flotante (estructura SAMOS), su estado normal esta cortado y la salida proporciona un 1 lógico. Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada entre 100.000 y un millón de veces. Estos dispositivos suelen comunicarse mediante protocolos como I²C, SPI y Microwire. En otras ocasiones, se integra dentro de chips como microcontroladores y DSPs para lograr una mayor rapidez. La memoria flash es una forma avanzada de EEPROM creada por el Dr. Fujio Masuoka mientras trabajaba para Toshiba en 1984 y fue presentada en la Reunión de Aparatos Electrónicos de la IEEE de 1984. Intel vio el potencial de la invención y en 1988 lanzó el primer chip comercial de tipo NOR. Memoria flash La historia de la memoria flash siempre ha estado muy vinculada con el avance del resto de las tecnologías a las que presta sus servicios como routers, módems, BIOS de los PC, wireless, etc. Fue Fujio Masuoka en 1984, quien inventó este tipo de memoria como evolución de las EEPROM existentes por aquel entonces. Intel intentó atribuirse la creación de esta sin éxito, aunque si comercializó la primera memoria flash de uso común. Entre los años 1994 y 1998, se desarrollaron los principales tipos de memoria que conocemos hoy, como la SmartMedia o la CompactFlash. La tecnología pronto planteó aplicaciones en otros campos. En 1998, la compañía Rio comercializó el primer ‘Walkman’ sin piezas móviles aprovechando el modo de funcionamiento de SmartMedia. Era el sueño de todo deportista que hubiera sufrido los saltos de un discman en el bolsillo. En 1994 SanDisk comenzó a comercializar tarjetas de memoria (CompactFlash) basadas en estos circuitos, y desde entonces la evolución ha llegado a pequeños dispositivos de mano de la electrónica de consumo como reproductores de MP3 portátiles, tarjetas de memoria para vídeo consolas, capacidad de almacenamiento para las PC Card que nos permiten conectar a redes inalámbricas y un largo etcétera, incluso llegando a la aeronáutica espacial. El espectro es grande. Generalidades Económicamente hablando, el precio en el mercado cumple la ley de moore. En el año 2011, el coste por MB en los discos duros son muy inferiores a los que ofrece la memoria flash y, además los discos duros tienen una capacidad muy superior a la de las memorias flash. Ofrecen, además, características como gran resistencia a los golpes, bajo consumo y por completo silencioso, ya que no contiene ni actuadores mecánicos ni partes móviles. Su pequeño tamaño también es un factor determinante a la hora de escoger para un dispositivo portátil, así como su ligereza y versatilidad para todos los usos hacia los que está orientado. Sin embargo, todos los tipos de memoria flash sólo permiten un número limitado de escrituras y borrados, generalmente entre 10.000 y un millón, dependiendo de la celda, de la precisión del proceso de fabricación y del voltaje necesario para su borrado. Este tipo de memoria está fabricado con puertas lógicas NOR y NAND para almacenar los 0s ó 1s correspondientes. Actualmente (0808-2005) hay una gran división entre los fabricantes de un tipo u otro, especialmente a la hora de elegir un sistema de ficheros para estas memorias. Sin embargo se comienzan a desarrollar memorias basadas en ORNAND. Los sistemas de ficheros para estas memorias están en pleno desarrollo aunque ya en funcionamiento como por ejemplo JFFS originalmente para NOR, evolucionado a JFFS2 para soportar además NAND o YAFFS, ya en su segunda versión, para NAND. Sin embargo, en la práctica se emplea un sistema de ficheros FAT por compatibilidad, sobre todo en las tarjetas de memoria extraible. Otra característica ha sido la resistencia térmica de algunos encapsulados de tarjetas de memoria orientadas a las cámaras digitales de gama alta. Esto permite funcionar en condiciones extremas de temperatura como desiertos o glaciares ya que el rango de temperaturas soportado abarca desde los -25 °C hasta los 85 °C. Las aplicaciones más habituales son: El llavero USB que, además del almacenamiento, suelen incluir otros servicios como radio FM, grabación de voz y, sobre todo como reproductores portátiles de MP3 y otros formatos de audio. Las PC Card Las tarjetas de memoria flash que son el sustituto del carrete en la fotografía digital, ya que en las mismas se almacenan las fotos. Existen varios estándares de encapsulados promocionados y fabricados por la mayoría de las multinacionales dedicadas a la producción de hardware. Acceso a bajo nivel Flash, como tipo de EEPROM que es, contiene una matriz de celdas con un transistor evolucionado con dos puertas en cada intersección. Tradicionalmente sólo almacenan un bit de información. Las nuevas memorias flash, llamadas también dispositivos de celdas multi-nivel, pueden almacenar más de un bit por celda variando el número de electrones que almacenan. Estas memorias están basadas en el transistor FAMOS (Floating Gate Avalanche-Injection Metal Oxide Semiconductor) que es, esencialmente, un transistor NMOS con un conductor (basado en un óxido metálico) adicional localizado o entre la puerta de control (CG – Control Gate) y los terminales fuente/drenador contenidos en otra puerta (FG – Floating Gate) o alrededor de la FG conteniendo los electrones que almacenan la información. Memoria flash de tipo NOR Cableado y estructura en silicio de la memoria flash NOR En las memorias flash de tipo NOR, cuando los electrones se encuentran en FG, modifican (prácticamente anulan) el campo eléctrico que generaría CG en caso de estar activo. De esta forma, dependiendo de si la celda está a 1 ó a 0, el campo eléctrico de la celda existe o no. Entonces, cuando se lee la celda poniendo un determinado voltaje en CG, la corriente eléctrica fluye o no en función del voltaje almacenado en la celda. La presencia/ausencia de corriente se detecta e interpreta como un 1 ó un 0, reproduciendo así el dato almacenado. En los dispositivos de celda multi-nivel, se detecta la intensidad de la corriente para controlar el número de electrones almacenados en FG e interpretarlos adecuadamente. Para programar una celda de tipo NOR (asignar un valor determinado) se permite el paso de la corriente desde el terminal fuente al terminal sumidero, entonces se coloca en CG un voltaje alto para absorber los electrones y retenerlos en el campo eléctrico que genera. Este proceso se llama hot-electrón injection. Para borrar (poner a “1”, el estado natural del transistor) el contenido de una celda, expulsar estos electrones, se emplea la técnica de Fowler-Nordheim tunnelling, un proceso de tunelado mecánico – cuántico. Esto es, aplicar un voltaje inverso bastante alto al empleado para atraer a los electrones, convirtiendo al transistor en una pistola de electrones que permite, abriendo el terminal sumidero, que los electrones abandonen el mismo. Este proceso es el que provoca el deterioro de las celdas, al aplicar sobre un conductor tan delgado un voltaje tan alto. Es necesario destacar que las memorias flash están subdivididas en bloques (en ocasiones llamados sectores) y por lo tanto, para el borrado, se limpian bloques enteros para agilizar el proceso, ya que es la parte más lenta del proceso. Por esta razón, las memorias flash son mucho más rápidas que las EEPROM convencionales, ya que borran byte a byte. No obstante, para reescribir un dato es necesario limpiar el bloque primero para después reescribir su contenido. Memorias flash de tipo NAND Cableado y estructura en silicio de la memoria flash NAND Las memorias flash basadas en puertas lógicas NAND funcionan de forma ligeramente diferente: usan un túnel de inyección para la escritura y para el borrado un túnel de ‘soltado’. Las memorias basadas en NAND tienen, además de la evidente base en otro tipo de puertas, un coste bastante inferior, unas diez veces de más resistencia a las operaciones pero sólo permiten acceso secuencial (más orientado a dispositivos de almacenamiento masivo), frente a las memorias flash basadas en NOR que permiten lectura de acceso aleatorio. Sin embargo, han sido las NAND las que han permitido la expansión de este tipo de memoria, ya que el mecanismo de borrado es más sencillo (aunque también se borre por bloques) lo que ha proporcionado una base más rentable para la creación de dispositivos de tipo tarjeta de memoria. Las populares memorias USB o también llamadas Pendrives, utilizan memorias flash de tipo NAND. Comparación de memorias flash tipo NOR y NAND Para comparar estos tipos de memoria se consideran los diferentes aspectos de las memorias tradicionalmente valorados. La densidad de almacenamiento de los chips es actualmente bastante mayor en las memorias NAND. El coste de NOR es mucho mayor. El acceso NOR es aleatorio para lectura y orientado a bloques para su modificación. En la escritura de NOR podemos llegar a modificar un solo bit. Esto destaca con la limitada reprogramación de las NAND que deben modificar bloques o palabras completas. La velocidad de lectura es muy superior en NOR (50-100 ns) frente a NAND (10 µs de la búsqueda de la página + 50 ns por byte). La velocidad de escritura para NOR es de 5 µs por byte frente a 200 µs por página en NAND. La velocidad de borrado para NOR es de 1 ms por bloque de 64 KB frente a los 2 ms por bloque de 16 KB en NAND. La fiabilidad de los dispositivos basados en NOR es realmente muy alta, es relativamente inmune a la corrupción de datos y tampoco tiene bloques erróneos frente a la escasa fiabilidad de los sistemas NAND que requieren corrección de datos y existe la posibilidad de que queden bloques marcados como erróneos e inservibles. En resumen, los sistemas basados en NAND son más baratos y rápidos pero carecen de una fiabilidad que los haga eficientes, lo que demuestra la necesidad imperiosa de un buen sistema de ficheros. Dependiendo de qué sea lo que se busque, merecerá la pena decantarse por uno u otro tipo. Estandarización El grupo Open NAND Flash Interface (ONFI) ha desarrollado una interfaz estandarizada a bajo nivel para chips de memoria NAND. Esto permite la interoperabilidad entre dispositivos NAND de diferentes fabricantes. El ONFI versión 1.0 1 fue lanzado el 28 de diciembre de 2006. Especifica: Una interfaz física estándar (Pinout) para memorias NAND. Un set de comandos estándar para leer, escribir y borrar chips NAND. Un mecanismo para auto-identificación (comparable a la función de detección de presencia de módulos de memoria SDRAM) El grupo ONFI es apoyado por la mayoría de los fabricantes de memorias flash NAND, incluyendo Hynix, Intel, Micron Technology, y Numonyx, así como por los principales fabricantes de dispositivos que incorporan chips de memoria flash NAND. 2 Un grupo de proveedores, incluyendo Intel, Dell, y Microsoft formaron el grupo de trabajo NVM Express (Non-Volatile Memory Host Controller Interface). El objetivo del grupo es proporcionar software estándar e interfaces de programación hardware para los subsistemas de memoria no volátil, incluido el dispositivo "flash cache", conectado al bus PCI Express. Tarjetero flash Un tarjetero flash es un periférico que lee o escribe en memoria flash. Actualmente, los instalados en ordenadores (incluidos en una placa o mediante puerto USB), marcos digitales, lectores de DVD y otros dispositivos, suelen leer varios tipos de tarjetas. Sistemas de ficheros flash Diseñar un sistema de ficheros eficiente para las memorias flash se ha convertido en una carrera vertiginosa y compleja, ya que, aunque ambos (NOR y NAND) son tipos de memoria flash, tienen características muy diferentes entre sí a la hora de acceder a esos datos. Esto es porque un sistema de ficheros que trabaje con memorias de tipo NOR incorpora varios mecanismos innecesarios para NAND y, a su vez, NAND requiere mecanismos adicionales, innecesarios para gestionar la memoria de tipo NOR. Un ejemplo podría ser un recolector de basura. Esta herramienta está condicionada por el rendimiento de las funciones de borrado que, en el caso de NOR es muy lento y, además, un recolector de basura NOR requiere una complejidad relativa bastante alta y limita las opciones de diseño del sistema de ficheros. Comparándolo con los sistemas NAND, que borran mucho más rápidamente, estas limitaciones no tienen sentido. Otra de las grandes diferencias entre estos sistemas es el uso de bloques erróneos que pueden existir en NAND pero no tienen sentido en los sistemas NOR que garantizan la integridad. El tamaño que deben manejar unos y otros sistemas también difiere sensiblemente y por lo tanto es otro factor a tener en cuenta. Se deberá diseñar estos sistemas en función de la orientación que se le quiera dar al sistema. Los dos sistemas de ficheros que se disputan el liderazgo para la organización interna de las memorias flash son JFFS (Journaling Flash File System) y YAFFS (Yet Another Flash File System), ExFAT es la opción de Microsoft. Antecedentes de la memoria flash Las memorias han evolucionado mucho desde los comienzos del mundo de la computación. Conviene recordar los tipos de memorias de semiconductores empleadas como memoria principal y unas ligeras pinceladas sobre cada una de ellas para enmarcar las memorias flash dentro de su contexto. Organizando estos tipos de memoria conviene destacar tres categorías si las clasificamos en función de las operaciones que podemos realizar sobre ellas, es decir, memorias de sólo lectura, memorias de sobre todo lectura y memorias de lectura/escritura. Memorias de sólo lectura. o ROM: (Read Only Memory): Se usan principalmente en microprogramación de sistemas. Los fabricantes las suelen emplear cuando producen componentes de forma masiva. o PROM: (Programmable Read Only Memory): El proceso de escritura es electrónico. Se puede grabar posteriormente a la fabricación del chip, a diferencia de las anteriores que se graba durante la fabricación. Permite una única grabación y es más cara que la ROM. Memorias de sobre todo lectura. o EPROM (Erasable Programmable Read Only Memory): Se puede escribir varias veces de forma eléctrica, sin embargo, el borrado de los contenidos es completo y a través de la exposición a rayos ultravioletas (de esto que suelen tener una pequeña ‘ventanita’ en el chip). o EEPROM (Electrically Erasable Programmable Read Only Memory): Se puede borrar selectivamente byte a byte con corriente eléctrica. Es más cara que la EPROM. o Memoria flash: Está basada en las memorias EEPROM pero permite el borrado bloque a bloque y es más barata y densa. Memorias de Lectura/Escritura (RAM) o DRAM (Dynamic Random Access Memory): Los datos se almacenan como en la carga de un condensador. Tiende a descargarse y, por lo tanto, es necesario un proceso de refresco periódico. Son más simples y baratas que las SRAM. o SRAM (Static Random Access Memory): Los datos se almacenan formando biestables, por lo que no requiere refresco. Igual que DRAM es volátil. Son más rápidas que las DRAM y más caras. Futuro El futuro del mundo de la memoria flash es bastante alentador, ya que se tiende a la ubicuidad de las computadoras y electrodomésticos inteligentes e integrados y, por ello, la demanda de memorias pequeñas, baratas y flexibles seguirá en alza hasta que aparezcan nuevos sistemas que lo superen tanto en características como en coste. En apariencia, esto no parecía muy factible ni siquiera a medio plazo ya que la miniaturización y densidad de las memorias flash estaba todavía lejos de alcanzar niveles preocupantes desde el punto de vista físico. Pero con la aparición del memristor el futuro de las memorias flash comienza a opacarse. El desarrollo de las memorias flash es, en comparación con otros tipos de memoria sorprendentemente rápido tanto en capacidad como en velocidad y prestaciones. Sin embargo, los estándares de comunicación de estas memorias, de especial forma en la comunicación con los PC es notablemente inferior, lo que puede retrasar los avances conseguidos. La apuesta de gigantes de la informática de consumo como AMD y Fujitsu en formar nuevas empresas dedicadas exclusivamente a este tipo de memorias como Spansion en julio de 2003 auguran fuertes inversiones en investigación, desarrollo e innovación en un mercado que en 2005 sigue creciendo y que ya registró en 2004 un crecimiento asombroso hasta los 15.000 millones de dólares (después de haber superado la burbuja tecnológica del llamado boom punto com) según el analista de la industria Gartner, que avala todas estas ideas. Es curioso que esta nueva empresa, concretamente, esté dando la vuelta a la tortilla respecto a las velocidades con una técnica tan sencilla en la forma como compleja en el fondo de combinar los dos tipos de tecnologías reinantes en el mundo de las memorias flash en tan poco tiempo. Sin duda se están invirtiendo muchos esfuerzos de todo tipo en este punto. Sin embargo, la memoria flash se seguirá especializando fuertemente, aprovechando las características de cada tipo de memoria para funciones concretas. Supongamos una Arquitectura Harvard para un pequeño dispositivo como un PDA; la memoria de instrucciones estaría compuesta por una memoria de tipo ORNAND (empleando la tecnología MirrorBit de segunda generación) dedicada a los programas del sistema, esto ofrecería velocidades sostenidas de hasta 150 MB/s de lectura en modo ráfaga según la compañía con un costo energético ínfimo y que implementa una seguridad por hardware realmente avanzada; para la memoria de datos podríamos emplear sistemas basados en puertas NAND de alta capacidad a un precio realmente asequible. Sólo quedaría reducir el consumo de los potentes procesadores para PC actuales y dispondríamos de un sistema de muy reducidas dimensiones con unas prestaciones que hoy en día sería la envidia de la mayoría de los ordenadores de sobremesa. Y no queda mucho tiempo hasta que estos sistemas tomen, con un esfuerzo redoblado, las calles. Cualquier dispositivo con datos críticos empleará las tecnologías basadas en NOR u ORNAND si tenemos en cuenta que un fallo puede hacer inservible un terminal de telefonía móvil o un sistema médico por llegar a un caso extremo. Sin embargo, la electrónica de consumo personal seguirá apostando por las memorias basadas en NAND por su inmensamente reducido costo y gran capacidad, como los reproductores portátiles de MP3 o ya, incluso, reproductores de DVD portátiles. La reducción del voltaje empleado (actualmente en 1,8 V la más reducida), además de un menor consumo, permitirá alargar la vida útil de estos dispositivos sensiblemente. Con todo, los nuevos retos serán los problemas que sufren hoy en día los procesadores por su miniaturización y altas frecuencias de reloj de los microprocesadores. Los sistemas de ficheros para memorias flash, con proyectos disponibles mediante CVS (Concurrent Version System) y código abierto permiten un desarrollo realmente rápido, como es el caso de YAFFS2, que, incluso, ha conseguido varios patrocinadores y hay empresas realmente interesadas en un proyecto de esta envergadura. La integración con sistemas inalámbricos permitirá unas condiciones propicias para una mayor integración y ubicuidad de los dispositivos digitales, convirtiendo el mundo que nos rodea en el sueño de muchos desde la década de 1980. Pero no sólo eso, la Agencia Espacial Brasileña, por citar una agencia espacial, ya se ha interesado oficialmente en este tipo de memorias para integrarla en sus diseños; la NASA ya lo hizo y demostró en Marte su funcionamiento en el Spirit (rover de la NASA, gemelo de Opportunity), donde se almacenaban incorrectamente las órdenes como bien se puede recordar. Esto sólo es el principio. Y más cerca de lo que creemos. Intel asegura que el 90% de los PC, cerca del 90% de los móviles, el 50% de los módems, etc., en 1997 ya contaban con este tipo de memorias. Memoria flash como sustituto del disco duro En la actualidad TDK está fabricando discos duros con memorias flash NAND de 32 Gb con un tamaño similar al de un disco duro de 2,5 pulgadas, similares a los discos duros de los portátiles con una velocidad de 33,3 Mb/s. El problema de este disco duro es que, al contrario de los discos duros convencionales, tiene un número limitado de accesos. Samsung también ha desarrollado memorias NAND de hasta 32 Gb. Apple presentó el 20 de octubre del 2010 una nueva versión de la computadora portátil MacBook Air en el evento denominado ‘De vuelta al Mac’ (Back to the Mac), en su sede general de Cupertino, en California (Estados Unidos). Una de las características más resaltantes de este nuevo equipo es que no tiene disco duro, sino una memoria flash, lo que la hace una máquina más rápida y ligera. Según David Cuen, un especialista consultado por la BBC Mundo, “la memoria flash es una apuesta interesante pero arriesgada. La pregunta es: ¿está el mercado preparado para deshacerse de los discos duros? Apple parece pensar que sí”. 3 La expansión de la memoria flash es prácticamente infinita. El 7 de enero de 2013, Kingston lanzó una memoria flash (DataTraveler HyperX Predator 3.0) con una capacidad máxima de 1 TB.4 Memoria flash como RAM A partir de 2012, hay intentos de utilizar la memoria flash como memoria principal del ordenador, DRAM. De momento es más lenta que la DRAM convencional, pero utiliza hasta diez veces menos energía, y también es significativamente más barata. 5 La fuente muestra una foto del dispositivo que se parece a una tarjeta PCI-Express, soportada por el driver correspondiente. Emulador De Wikipedia, la enciclopedia libre Saltar a: navegación, búsqueda DOSBox, emulador que permite ejecutar una shell similar al sistema DOS. En informática, un emulador es un software que permite ejecutar programas o videojuegos en una plataforma (sea una arquitectura de hardware o un sistema operativo) diferente de aquella para la cual fueron escritos originalmente. A diferencia de un simulador, que sólo trata de reproducir el comportamiento del programa, un emulador trata de modelar de forma precisa el dispositivo de manera que este funcione como si estuviese siendo usado en el aparato original. Un uso popular de los emuladores es el de imitar la experiencia de los videojuegos de máquinas recreativas o videoconsolas en computadoras personales, o el poder ser jugados en otras videoconsolas. La emulación de videojuegos de sistemas antiguos (abandonware) en las modernas computadoras personales y videoconsolas de hoy día resulta generalmente más cómoda y práctico que en los dispositivos originales. Sin embargo, puede ser requerido a los creadores de emuladores una licencia de software para escribir programas originales que dupliquen la funcionabilidad de la ROM y BIOS del hardware original, lo que comúnmente se conoce como high-level emulation o emulación de alto nivel. En sentido teórico, la tesis de Church-Turing implica que cualquier ambiente funcional puede ser emulado dentro de cualquier otro. En la práctica, esto puede resultar realmente difícil, particularmente cuando el comportamiento exacto del sistema emulado no está documentado y debe ser deducido mediante ingeniería inversa. Tampoco se habla en la tesis sobre las diferencias en sincronización; si el emulador no actúa tan rápidamente como el hardware original, el software de emulación va a ir más lento que si fuese el hardware original. Estructura La mayoría de los emuladores solo emulan una determinada configuración arquitectura de hardware - si el sistema de explotación ( o sistema operativo) también se requiere para emular cierto programa entonces ha de ser emulado también. Tanto el sistema de explotación como el programa deben ser interpretados por el emulador, como si estuviese ejecutándose en el equipo original. Aparte de la interpretación del lenguaje de la máquina emulada, es preciso emular el resto del equipo, como los dispositivos de entrada y salida, de forma virtual: si escribir en una región específica de la memoria debe influir en el contenido en pantalla, por ejemplo, esto también debe ser emulado. En vez de una emulación completa del equipo, una compatibilidad superficial puede ser suficiente. Esto traduce las llamadas del sistema emulado a llamadas del sistema anfitrión. Los desarrolladores de programas para máquinas con sistemas computarizados y consolas de videojuego comúnmente utilizan emuladores especialmente exactos llamados simuladores antes de ejecutarlos en el equipo real. Esto permite que el programa pueda ser producido y probado antes de que la versión final del equipo para el cual se está desarrollando sea producida en grandes cantidades, de esta forma puede ser probado sin tener que copiar el programa en el equipo, de modo que puedan ser eliminados errores en un nivel bajo sin tener los efectos colaterales de un depurador. Típicamente, un emulador se divide en módulos que corresponden de forma precisa a los subsistemas del equipo emulado. Lo más común, es que un emulador este compuesto por los siguientes módulos: o Un emulador de la unidad central de procesamiento. o Un módulo para el subsistema de memoria. o Varios emuladores para los dispositivos de entrada y salida. Lo más común es que los buses no sean emulados, por razones de simplicidad y rendimiento, y para que los periféricos virtuales se comuniquen directamente con la UCP y los subsistemas de memoria. Simulador de CPU El simulador de la unidad central de procesamiento (CPU) es a menudo la parte más compleja de un emulador. Muchos emuladores son escritos utilizando simuladores de CPU "preempaquetados", para así poder realizar una emulación fiel y eficiente de una máquina específica. El simulador de CPU más simple sería un intérprete informático, que sigue el flujo de ejecución del código de programación emulado y, por cada instrucción de código de la máquina emulada, ejecuta en el procesador en que se carga, instrucciones semánticamente equivalentes a las originales. Esto es posible asignando una variable a cada registro y flag de la CPU emulada. La lógica de la CPU simulada puede ser más o menos traducida directamente a algoritmos de software, creando una reimplementación del software que básicamente refleja la implementación original del hardware. El ejemplo siguiente ilustra el modo en que la simulación de CPU por un intérprete. En este caso, las interrupciones se revisan después de la ejecución de cada instrucción, aunque este comportamiento no es usual en los emuladores en la realidad, por razones de rendimiento. void Execute(void) { if(Interrupt!=INT_NONE) { SuperUser=TRUE; WriteMemory(++StackPointer, ProgramCounter); ProgramCounter=InterruptPointer; } switch(ReadMemory(ProgramCounter++)) { // Handling of every valid instruction default: Interrupt=INT_ILLEGAL; } } Los intérpretes son muy populares en el caso de los simuladores de CPU, ya que son más sencillos de implementar que otras soluciones alternativas de mejor rendimiento, y su velocidad es más que adecuada para emular computadoras de hace más de una década en máquinas modernas. Aun así, la penalización de velocidad inherente en la interpretación puede ser un problema al emular computadores cuya velocidad de procesador está en el mismo orden de magnitud que la máquina huésped. Hasta no hace tantos años, la emulación en tales situaciones era considerada impracticable. Lo que permite el rompimiento de esta restricción son las técnicas avanzadas de recompilación dinámica. Una translación simple a priori del código del programa emulado al código que corre en la arquitectura original es usualmente imposible por varias razones: el código puede ser auto modificable no existe una forma que distinga de forma confiable los segmentos de información (que no deben ser traducidos) de los segmentos de texto (segmentos de código) no existe forma de comunicarse con el sistema operativo emulado para que el emulador reconozca los nuevos códigos cargados (por ejemplo del disco) Varias formas de recompilación dinámica, incluyendo la popular técnica de compilación en tiempo de ejecución (compilación JIT), trata de bordear estos temas esperando hasta que el proceso de control de flujo se mueva hasta donde esta la parte donde está localizado el código sin traducir, y es solo entonces {"en tiempo de ejecución") cuando los bloques traducidos del código al código anfitrión pueden ser ejecutados. El código traducido se mantiene en el código caché, y el código original no se pierde ni es afectado; de esta forma, incluso los segmentos de data pueden ser trasladados por el recompilador, resultando solo en un gasto de tiempo de traslado. Dispositivos de entrada y salida La mayoría de los emuladores, como dicho anteriormente, no emulan el sistema principal bus; cada dispositivo de entrada y salida es tratado a menudo como un caso especial, y no existe una interfaz constante para los periféricos virtuales. Esto puede resultar en una ventaja en el funcionamiento, proveyendo que cada módulo de entrada y salida pueda ser adaptado a las características del dispositivo emulado; diseños basados en un estándar, entradas y salidas unificadas por medio de API pueden sin embargo proveer modelos más simples, y además tienen la ventaja adicional de permitir de forma "automática" la utilización de servicios plugins para proveer dispositivos virtuales de terceros en el emulador. Las entradas y salidas unificadas por medio de API no necesariamente reflejan la estructura del bus del hardware real: el diseño del bus está limitado por varios parámetros eléctricos y la necesidad del manejo de programación paralela que la mayoría de las veces puede ser ignorada en la implementación del software. Aún los emuladores que tratan cada dispositivo como un caso especial poseen una infraestructura básica en común para ello: manejando interruptores, por medio de procedimientos que fijen banderas legibles por el simulador del CPU siempre que un interruptor sea levantado, permitiendo al CPU virtual "convertir los interruptores (virtuales)". escribiendo y leyendo de la memoria física, por medio de dos procedimientos similares mientras este lidia con la memoria lógica (contrario a este último, el anterior puede comúnmente ser echado a un lado, y en su lugar se emplean las referencias directas al arreglo de memoria) Sistema de ROM NeoRAGEx, emulador a base de imágenes ROM. Los emuladores arrancan imágenes ROM, o sea el contenido de los cartuchos, disquetes o cintas que se usaban con los sistemas antiguos. Físicamente en las PC las ROM son archivos binarios que se pueden cargar en la memoria. Es decir, el emulador es un programa que hace las funciones de una consola, por ejemplo la Game Boy Advance o una PDA, y la ROM es un archivo que hace de cartucho, CD-ROM, o cinta, por ejemplo Mario Bros.. Virtualización También hay una vertiente en la emulación que puede ser realizada por virtualización, consistente en crear una capa de abstracción, pero ejecutando instrucciones en una máquina del mismo tipo, y da como resultados obtener una computadora dentro de otra. Ejemplos de esto son: VMware Microsoft Virtual PC Bochs VirtualBox Emulador de videoconsola Artículo principal: Emulador de videoconsola. Los emuladores de videoconsolas son un tipo de emuladores diseñados para emular una o varias videoconsolas y así poder jugar un videojuego diseñado para ser jugado en ésta(s). Los emuladores múltiples suelen emular consolas con características similares (por ejemplo MEKA emula todas las consolas de Sega de 8 bits y la Colecovision)