viernes, 7 de junio de 2019

¿Por qué en un ordenador hay tantos tipos de memoria diferentes?

Los ordenadores se apoyan para su trabajo en dispositivos de almacenamiento de datos, llamados memorias. Podemos imaginarnos los distintos tipos de memorias con el puesto de trabajo de un oficinista. La persona que hace el trabajo es el equivalente al procesador, para su trabajo esa persona usa una mesa donde coloca los documentos que está manejando en ese momento, los documentos los guarda de manera más definitiva en cajones, también dispone de estanterías donde almacenar documentos de menor frecuencia de uso e incluso de un archivo lleno de estanterías para guardar los documentos a más largo plazo. A grandes rasgos la mesa sería el equivalente de la memoria RAM del ordenador, los cajones serían los discos del ordenador, las estanterías podrían ser unidades externas o almacenamiento en la nube y el archivo también.

La persona también dispone de su propia memoria que usa para hacer su trabajo, que serían los registros de la CPU.

El procesador puede trabajar a muchísima velocidad y hacer millones de operaciones por segundo, pero estas operaciones requieren datos, cuanto más tarden en llegarle los datos al procesador más tiempo pasa esperándolos, sin trabajar, con lo que su rendimiento disminuye.

La memoria RAM (Memoria de Acceso Aleatorio, Random Access Memory) es la memoria principal de trabajo de un ordenador y es la que se suele usar para identificar la capacidad de un ordenador. Es una memoria rápida. En nuestro ejemplo equivaldría a nuestra mesa de trabajo, en esta mesa las hojas de papel se ponen una al lado de otra y se pueden ver de un vistazo y alcanzarlas alargando más o menos el brazo. Si tenemos una mesa pequeña no nos cabrán muchas hojas y tendremos que andar todo el tiempo cambiando hojas de la mesa por hojas de los cajones, o estanterías. Podemos ver la cantidad de tiempo que nos ocupa y lo lento que se trabaja así, por eso los ordenadores con poca memoria pueden tardar más en realizar su trabajo, porque cuando no les caben nuevas hojas en la mesa deben decidir que hojas necesitan, dónde están guardadas, qué hojas de la mesa se pueden quitar y guardar y luego hacer el cambio de estas hojas por las que tiene guardadas. Aumentar la memoria del ordenador por tanto aumenta su rendimiento, pero hasta un cierto límite porque siguiendo con el ejemplo de la mesa si la mesa es demasiado grande puede que tengamos parte de ella vacía. Pero el contenido de la memoria RAM se pierde en cuanto se apaga el ordenador, es como si al final de cada jornada el servicio de limpieza tirase todo lo que estuviese encima de la mesa, sin posibilidad de recuperarlo, de modo que cada vez que nos sentamos a trabajar la mesa está vacía. Por tanto lo que queramos conservar tenemos que guardarlo en cajones, estanterías, etc. Realmente la memoria RAM de un ordenador es DRAM que significa memoria de acceso aleatorio dinámico, lo de dinámico quiere decir que la información se almacena en unos circuitos electrónicos llamados capacitores o condensadores, que pierden su carga con el tiempo (milisegundos) por lo que hay que estar continuamente reescribiendo los datos.

La memoria RAM por tanto es una memoria volátil, para conservar la información a largo plazo necesitamos otro tipo de memoria que no sea volátil y nos permita conservar la información a largo plazo, esté o no el ordenador encendido. La memoria no volátil es mucho más lenta que la memoria RAM por lo que se usa solo para guardar la información que queremos conservar, mientras que la RAM se usa para poner los datos con los que estamos trabajando. Por ello se produce un trasiego constante de información entre la memoria RAM y las unidades de almacenamiento, lo que supone una carga de trabajo importante.

Aunque la memoria RAM es rápida aún es demasiado lenta para el procesador que si solo dispusiera de esta memoria de tanto en tanto se quedaría parado esperando que le llegaran los datos que ha pedido. La evolución de la velocidad de los procesadores hace tiempo que superó a la velocidad a la que la memoria RAM le podía facilitar los datos, por eso se creó un tipo de memoria aún más rápida que se llama SRAM (memoria estática de acceso aleatorio). A diferencia de la RAM la SRAM es más rápida y puede guardar los datos de manera permanente mientras tenga alimentación eléctrica, sin tener que estar reescribiéndolos continuamente. Esta memoria se utiliza como puente entre la memoria RAM y el procesador, en nuestro ejemplo sería el trozo de mesa que tenemos más cerca y que nos permite leer el contenido de las hojas sin movernos. A esta memoria también se le conoce como memoria caché. Esta memoria está integrada dentro del propio procesador y está estructurada en diferentes niveles.

Cabe preguntarse por qué usamos memoria RAM y luego memoria SRAM y no hacemos que toda la memoria sea directamente SRAM. El problema es que es más cara y ocupa mucho más espacio que la DRAM porque la SRAM necesita 6 transistores para guardar 1 bit y la DRAM tan solo necesita 1. Está claro que al tener más componentes sea más cara de fabricar pero el problema real es el espacio dado que al requerir más componentes por bit se necesita mayor superficie para colocarlos y cuanto mayor cantidad de memoria queremos poner más espacio necesitamos para los componentes y el «cableado» de los mismos, esto también hace que necesiten más energía y generen más calor. Al ocupar más sitio y necesitarse mucho más cableado de interconexión la electricidad tarda demasiado en ir de un lado a otro del chip de memoria lo que provoca pérdida de velocidad y por tanto se pierde la principal ventaja de este tipo de memoria.

Los electrones se mueven a una velocidad concreta por lo que cuanto mayor es la distancia a recorrer más tiempo tardan por eso se procura reducir al máximo la distancia a recorrer dentro de los circuitos. Si el recorrido tuviera que hacerse una vez la diferencia no sería significativa pero la cosa cambia cuando el recorrido se hace millones de veces por segundo dado que los pequeños retrasos se van acumulando y terminan siendo significativos.

Cuanto más rápida es la caché más componentes necesita para almacenar 1 bit por lo que hay que ponerlos más juntos (hacerlos más densos) por eso la caché se divide en distintos niveles, siendo los más rápidos de menor capacidad. De este modo los datos se van moviendo de un nivel a otro según las necesidades de proceso de los mismos.

En los ordenadores puede haber otro tipo más de memoria RAM llamada VRAM que se suele utilizar en las tarjetas gráficas dedicadas. Su funcionamiento es similar a la DRAM pero su ventaja es que es mucho más rápida para leer los datos pero más lenta para escribirlos. Esta forma de trabajar es muy adecuada para las tarjetas gráficas porque estás están compuestas de muchas unidades de proceso simultáneo que solicitan a la vez datos de la memoria para procesarlos y mostrarlos en pantalla.

Como hemos visto anteriormente para guardar la información a largo plazo y conservarla sin necesidad de alimentación eléctrica se utilizan las memoria no volátiles. Los discos duros son el principal tipo de memoria no volátil. El problema del almacenamiento no volátil es que su velocidad es muchísimo más lenta convirtiéndose en el cuyo de botella del flujo de información. Entre la memoria no volátil tenemos los discos duros, los CD, los DVD, los lápices de memoria, las tarjetas de memoria, etc.

El sistema operativo, el resto de programas, las fotos, los vídeos, la música y cualquier documento o base de datos se almacena en una memoria no volátil, usualmente un disco duro. Cuando el procesador necesita cargar un programa o documento emite la solicitud correspondiente que desencadena una serie de acciones (localizar la información, leerla del disco a la memoria, etc.) tras las cuales se informa al procesador de la disponibilidad de los datos y se le da vía libre para continuar el trabajo. Esto en nuestro ejemplo para cargar un programa sería el equivalente de ver lo que necesitamos, buscar dónde está guardado (disco), sacar los folios con las instrucciones y colocarlos uno al lado del otro en la mesa (RAM) e ir acercando las hojas por orden a nuestro lado (caché) para leerlas y seguir una tras otra las instrucciones que llevan. En el caso de los datos es parecido, se localiza la información, se carga en la RAM y se le informa al programa que la va a procesar de que ya está disponible para su tratamiento.

Los discos duros actualmente los hay de dos tipos: magnéticos y de estado sólido. Los discos magnéticos son los discos habituales hasta ahora, el coste por unidad de almacenamiento es bajo y ofrecen gran cantidad de almacenamiento a un precio reducido. A grandes rasgos la información se guarda sobre discos de aluminio recubiertos de una sustancia magnetizable sobre la que se guarda la información cambiando la polaridad de las partículas que la recubren, valiéndose de un brazo que flota sobre los discos a una distancia inferior al grosor de un cabello humano por la acción aerodinámica de la rotación de los discos. El brazo en su movimiento puede alcanzar cualquier parte del disco, pero se mueve a pasos fijos por lo que la información se guarda en círculos concéntricos. La velocidad de rotación de los discos en los ordenadores normales suele ser de 7.200 rpm en los ordenadores de sobremesa y 4.500 rpm en los ordenadores portátiles, la menor velocidad de rotación en los portátiles es para reducir el consumo energético y prolongar la duración de la batería, aunque hay portátiles con discos a 7.200 rpm y sobremesa con discos a 5.400 rpm. Para acceder a un dato primero se desplaza cabezal de lectura y escritura  a una zona concreta del disco que guarda un tabla con un índice que relaciona el contenido con su posición dentro del disco, consultando esta tabla es como se localiza la información. Una vez localizada la información el cabezal se desplaza a la posición de inicio de los datos y espera a que estos pasen por debajo de él para leerlos o escribirlos, y se va desplazando por el disco hasta completar la totalidad de la escritura o lectura de los datos.

Como se ve cada vez que hay que acceder a datos almacenados en una unidad no volátil como un disco duro hay una gran cantidad de trabajo que realizar, trabajo que además se hace con procedimiento más lentos, sería como si para hacer un viaje y entregar o recoger paquetes usamos un bicicleta, un coche, una furgoneta o un tren de alta velocidad, según el medio que escojamos podremos llevar más o menos paquetes de una vez, de mayor o menor peso cada paquete y a mayor o menor velocidad.

Los discos de estado sólido (SSD) son un nuevo tipo de discos duros en los que la información se guarda en chips de memoria no volátiles. No hay partes mecánicas. Su velocidad es entre 7 y 10 veces mayor que los discos duros magnéticos. Esta mayor velocidad hace que se note muchísimo la mejora de rendimiento entre un ordenador con disco magnético y el mismo con disco SSD. La información en los discos SSD se guarda en celdas de memoria, de forma muy parecida a la memoria RAM, el problema de estas celdas es que con el uso se van deteriorando perdiendo poco a poco su capacidad para almacenar datos, teniendo por tanto un número limitado de ciclos de lectura y escritura. No obstante actualmente este número de ciclos de lectura y escritura es tan alto que supera normalmente al tiempo medio de vida de un ordenador.

La degradación progresiva de las unidades SDD hace que no sean tan fiables, quizá, como los discos magnéticos. Pero la importante mejora del rendimiento compensa esta carencia.

Cada tipo de memoria tiene sus pros y sus contras, por eso el ordenador combina tantos tipos de memoria diferentes para usar cada una con un fin específico y obtener la mejor combinación de velocidad, rendimiento y fiabilidad. Combinar todos estos tipos de memoria hace que se reduzcan los cuellos de botella. Se investiga en el desarrollo de memorias que unan las ventajas de los distintos tipos que hemos visto de modo que se simplifique el diseño y se mejore el rendimiento al evitar el trasiego de datos constante entre los distintos tipos de memoria.

Actualmente hay un nuevo tipo de memoria llama Intel Octane que es un tipo de memoria parecida a la SSD pero mucho más rápida, aunque aún más lenta que la RAM. Esta memoria también es más cara y se está introduciendo como una capa más que agiliza el acceso a los datos de mayor uso con lo que se consigue una mejora importante de la velocidad. Esta memoria no es volátil con lo que es como un pequeño disco duro ultrarápido.