La memoria de un ordenador, pese a que está en boca de todos los usuarios, aún sigue siendo una completa desconocida para muchos de ellos. Por ese motivo, aquí podrás ver la jerarquía de memoria íntegra de un computador y los tipos de memoria que intervienen durante los procesos que normalmente se realizan con estos equipos, así como el objetivo de cada una de ellas.
Índice de contenidos
La definición de computador es clara: es un sistema capaz de procesar datos a partir de unas instrucciones o programas, y se compone básicamente de una CPU, memoria, y E/S a nivel de hardware, con un sistema operativo y programas a nivel de software. Pues bien, si nos centramos en la memoria, la jerarquía que debes conocer es:
La ISA de un computador define las instrucciones, los tipos de datos aceptados, los modos de direccionamiento y también los registros. Precisamente esos registros de la CPU son los primeros a tratar, ya que se trata de la memoria más diminuta y rápida que existe en la jerarquía.
Los registros se encuentran dentro del microprocesador, en forma de bancos. Su objetivo es almacenar pequeñas cantidades de información, unos pocos bits o datos binarios, como pueden ser instrucciones o datos. Cada CPU puede tener un buen número de ellos, con diferentes objetivos. Por ejemplo, algunos de los más habituales suelen ser:
Independientemente del tipo, lo interesante aquí es resaltar que se trata de una memoria de muy poca capacidad, pero la más rápida de todas. Además, al estar tan cerca de las unidades de ejecución de la CPU, la latencia es mínima, y puede transferir la información almacenada o ser escritos de forma extremadamente rápida.
El inconveniente es que estas celdas compuestas de biestables son más caras de producir, por eso tienen capacidades tan ínfimas de 32, 64, 128-bit, etc. Producir una de estas memorias de capacidades de GB o TB sería un total despropósito en cuando al precio que alcanzarían.
En la microarquitectura de la CPU, otra de las memorias más importantes es la memoria caché. También se encuentra cerca de la CPU. Generalmente on-chip, aunque en el pasado hubo modelos off-chip. La idea de esta memoria es la de actuar como un buffer intermedio entre la memoria principal y la CPU, para así reducir el impacto de la latencia, aumentando el rendimiento.
Esta memoria también resulta cara de fabricar, es un tipo de SRAM compuesta por transistores, y que es muy rápida en cuando al acceso. Sus capacidades son algo superiores a los registros, con algunos KB o MB, pero siguen manteniendo una capacidad inferior a otro tipo de memorias más lentas y baratas, como la RAM.
Según la CPU, la memoria caché puede tener varios niveles., mientras menor sea el número que acompaña al nivel, más cerca del núcleo de procesamiento y más rápida suele ser, reduciendo así la latencia. Por eso, siempre se buscará el dato o instrucción en el nivel más bajo, si no está ahí se produce lo que se conoce como fallo de caché y se busca en el nivel inmediatamente superior, y así sucesivamente hasta que se obtiene la información requerida. Los más habituales son:
No me gustaría olvidar tampoco el TLB (Translate Lookaside Buffer). Este elemento también suele estar dividido en niveles en algunos casos, y separado para datos (DTLB) e instrucciones (ITLB). Esta memoria, administrada por la MMU, también es rápida y está estrechamente relacionada con la caché. Suelen ser unas tablas con unos cuantos KB de información. Concretamente contiene partes de la tabla de paginación con la relación entre direcciones lógicas y físicas.
La memoria principal o memoria RAM sería el siguiente nivel de la jerarquía. Estaría por encima de la caché, con una velocidad inferior a ésta y con un tamaño mayor. Mientras la caché llegaba a unos cuantos MB, la RAM puede ser de varios GB. Como ya sabrás, es un tipo de memoria SDRAM que mantiene los datos mientras se le está suministrando energía.
La CPU trabaja de forma mucho más rápida que ésta, y para evitar cuellos de botella se han implementado memorias intermedias como las vistas en el apartado anterior. Y es que la CPU debe emplear más ciclos para acceder a la RAM que para acceder a cualquier nivel de caché. Por eso, si está en caché es preferible acceder desde allí.
Esta memoria también es genérica, en ella se puede almacenar cualquier tipo de información. Generalmente tiene cargado el kernel del sistema operativo, que está siempre en ejecución, y también los diferentes procesos o programas en marcha (o algunos de ellos). Tanto el kernel como los programas son software, y todos ellos se componen de instrucciones y datos que procesará la CPU.
Es el siguiente nivel a la primaria. La memoria secundaria hace referencia a los medios de almacenamiento masivo. Una memoria de una capacidad muy superior, pero mucho más lenta en cuanto a los accesos (lectura y escritura) se refiere. Por ejemplo, puede ser el disco duro HDD o SSD, una tarjeta de memoria en algunos casos, etc.
Las capacidades aquí aumentan desde varios cientos de GB hasta TB. Y no solo sirven para almacenar los datos del usuario o los programas instalados, también tienen una parte reservada muy importante, como es la memoria virutal o SWAP que amplia la capacidad de la RAM más allá de sus límites físicos de capacidad. De esta forma, ante los «ojos» del programa, la computadora tendrá memoria infinita.
No hay que confundir la memoria virtual con algo relacionado con una máquina virtual o que no existe. Se trata de una técnica de gestión de la jerarquía de memoria que hace que el sistema operativo y el resto de software dispongan de mayor capacidad que la RAM instalada en el sistema. Para ello, se «unifican» los registros de la CPU, su memoria caché, la memoria RAM y el almacenamiento secundario con un mismo espacio.
El kernel del sistema operativo, mediante unos algoritmos, concretamente el planificador o scheduler, será el encargado de subir los procesos de mayor prioridad desde esta memoria a la RAM y, si fuese necesario, descargar los procesos menos prioritarios desde la RAM a la memoria secundaria.
Dicho de un modo rudo y simple, cuando ejecutas un programa, el kernel lo enviará a la RAM, y de ésta pasará a la CPU para ser procesado. Sin embargo, si dicho programa pierde prioridad y necesita con más urgencia otro para el que no hay espacio en la RAM, se descarga el proceso anterior y se sube el de mayor prioridad para ser procesado.
Aunque parezca extraño para muchos usuarios, el E/S o sistema de entrada y salida de un computador también forma parte de esta jerarquía de la memoria. De hecho, la CPU lo ve como una memoria más. Es decir, un teclado conectado a un equipo, o una impresora son para la CPU memoria. En el primer caso es una memoria que se debe leer (para saber los caracteres que se están tecleando), y en el segundo caso es una memoria que se debe escribir (enviar el archivo a imprimir).
Por tanto, la E/S también tiene un espacio de direcciones reservadas para él. Y, en estos casos también es una memoria algo más lenta, aunque dada la heterogeneidad de los periféricos posibles, no tiene por qué ser necesariamente de mayor capacidad. En la mayoría de los casos no lo es.
Aquí también habría que introducir el DMA (Direct Memory Access). El acceso directo a memoria es una tecnología implementada hace décadas y que permite al sistema acceder (leer y escribir) a la memoria del sistema sin necesidad de que la CPU intervenga en el proceso, para así descargar esta trabajo y agilizar los procesos.
Cuando se habla de una transferencia de DMA estamos refiriéndonos a transferir un bloque de datos de un dispositivo a otro. En lugar de que la CPU inicie la transferencia, éste trabajo lo hace un chip conocido como controlador DMA. Eso sí, aunque la CPU no intervenga, sí que se ocupa el bus del sistema para realizar la transferencia, por lo que si existen necesidades por parte de la CPU de usarlo, se tendrá que regular su uso.
Y con el DMA y todas estas jerarquías de memoria, así como el multiprocesamiento paralelo, se abre una gran problemática, como es mantener la coherencia de memoria. Aunque esto daría para otro gran artículo… Porque ¿qué crees que ocurriría si un dispositivo accede a una dirección de memoria y escribe un dato en dicha dirección antes de que la CPU haga uso de dicho dato? Estaría procesando un dato erróneo, por supuesto, y esto hay que evitarlo a toda costa.
CHIEFTEC acaba de presentar dos nuevas cajas para PC, Visio y Visio Air con un…
Asus ZenWiFi BT8 es un sistema Mesh Wi-Fi 7 el cual se sitúa por debajo…
Qualcomm anuncia nuevos SoC Snapdragon X, pero no se trata de una nueva generación, sino…