| Red Hat Enterprise Linux 4: Introducción a la administración de sistemas | ||
|---|---|---|
| Anterior | Capítulo 4. Memoria física y virtual | Siguiente |
Las computadoras de hoy utilizan una variedad de tecnologías de almacenamiento. Cada tecnología está orientada hacia una función específica, con velocidades y capacidades en combinación.
Estas tecnologías son:
Registros de CPU
Memoria caché
RAM
Discos duros
Almacenamiento fuera de línea para respaldos (cintas, discos ópticos, etc.)
En términos de capacidades y costos, estas tecnologías forman un espectro. Por ejemplo, los registros de CPU son:
Muy rápidos (tiempos de acceso de unos pocos nanosegundos)
Baja capacidad (usualmente menos de 200 bytes)
Capacidades de expansión muy limitadas (se requiere un cambio en la arquitectura del CPU)
Costosas (más de un dólar/byte)
Sin embargo, en el otro lado del espectro, el almacenamiento fuera de línea es:
Muy lento (tiempos de acceso se miden en días, si la media de respaldo debe ser entregada sobre largas distancias)
Capacidad muy alta (10s - 100s de gigabytes)
Capacidades de expansión prácticamente ilimitadas (solamente limitadas por el espacio físico requerido para hospedar la media de respaldo)
Bajo costo (fracciones de céntimos/byte)
Usando diferentes tecnologías con diferentes capacidades, es posible afinar el diseño del sistema para un máximo rendimiento al costo más bajo posible. Las secciones siguientes exploran cada tecnología en el espectro del almacenamiento.
Todos los diseños de CPU de hoy día incluyen registros para una variedad de propósitos, desde el almacenamiento de direcciones de la instrucción recientemente ejecutada, hasta propósitos más generales de almacenamiento y manipulación de datos. Los registros de CPU se ejecutan a la misma velocidad que el resto del CPU; de lo contrario habría un cuello de botella grave sobre el rendimiento completo del sistema. La razón para esto es que casi todas las operaciones realizadas por el CPU envuelven registros de una forma u otra.
El número de registros de CPU (y sus usos) dependen estrictamente en el diseño arquitectónico del CPU mismo. No hay forma de cambiar el número de registros de CPU, solamente puede migrar a un CPU con una arquitectura diferente. Por estas razones, el número de registros de CPU se puede considerar como una constante, ya que sólo pueden cambiarse con mucho dolor y grandes costos.
El propósito de la memoria caché es actuar como una memoria temporal entre los registros de CPU, limitados y de gran velocidad y el sistema de memoria principal, mucho más grande y lento — usualmente conocido como RAM[1]. La memoria caché tiene una velocidad de operación similar a la del CPU mismo, por eso cuando el CPU accede a datos en la caché, no tiene que quedarse esperando por los datos.
La memoria caché es configurada de forma tal que, cuando se leen datos desde la RAM, el sistema de hardware verifica primero para determinar si los datos deseados están en caché. Si los datos están en caché, estos son recuperados rápidamente y utilizados por el CPU. Sin embargo, si los datos no están en caché, estos se leen desde la RAM y, mientras se transfieren al CPU, también se colocan en caché (en caso de que se necesiten más tarde). Desde la perspectiva del CPU, todo esto se hace de forma transparente, por lo que la única diferencia entre el acceso de los datos en caché y desde la RAM es la cantidad de tiempo que toma para que los datos sean recuperados.
En términos de la capacidad de almacenamiento, la caché es mucho más pequeña que la RAM. Por lo tanto, no todos los bytes en la RAM tienen su ubicación única en caché. Como tal, es necesario dividir la caché en secciones que se puedan utilizar para alojar diferentes áreas de RAM y tener un mecanismo que permita que cada área de la caché haga un "caché" de la RAM en diferentes momentos. Aúnque existe una diferencia en tamaño entre la caché y la RAM, dada la naturaleza secuencial y localizada del acceso a almacenamiento, una pequeña cantidad de caché puede efectivamente acelerar el acceso a grandes cantidades de RAM.
Cuando se escriben datos desde el CPU, las cosas se complican un poco. Existen dos enfoque que se pueden utilizar. En ambos casos, los datos son escritos primero a la caché. Sin embargo, puesto que el propósito de la caché es funcionar como una copia muy rápida de los contenidos de porciones seleccionadas de RAM, cada vez que una porción de datos cambia su valor, ese nuevo valor debe ser escrito tanto a la caché como a la RAM. De lo contrario, los datos en caché y los datos en la RAM ya no coincidirían.
Los dos enfoques se diferencian en cómo se logra hacer esto. En un enfoque, conocido como write-through caching, los datos modificados se escriben inmediatamente a la RAM. Sin embargo, en el write-back caching, se retrasa la escritura de los datos modificados a la RAM. La razón para hacer esto es la de reducir el número de veces que una porción de datos modificada frecuentemente debe ser escrita nuevamente a la RAM.
La caché "write-through" o inmediata es un poco más simple de implementar; por esta razón es la más común. La caché "write-back" es un poco más complicada; además de almacenar los datos, es necesario mantener cierto tipo de mecanismo que sea capaz de notificar que los datos en caché están al día o "limpios" (los datos en caché son los mismos que los datos en RAM), o que están "sucios" (los datos en caché han sido modificados, lo que significa que los datos en RAM ya no están actualizados). También es necesario implementar una forma de vaciar periódicamente entradas "sucias" en caché de vuelta en RAM.
Los subsistemas de caché en los diseños de computadoras de hoy día pueden ser de niveles múltiples; esto es, puede haber más de un conjunto de caché entre el CPU y la memoria principal. Los niveles de caché a menudo están enumerados, con los números menores más cercanos a la CPU. Muchos sistemas tienen dos niveles de caché:
La caché L1 a menudo está ubicada en el chip del CPU mismo y se ejecuta a la misma velocidad que el CPU.
La caché L2 usualmente es parte del módulo de CPU, se ejecuta a las mismas velocidades que el CPU (o casi) y normalmente es un poco más grande y lenta que la caché L1
Algunos sistemas (normalmente servidores de alto rendimiento) también tienen caché L3, que usualmente forma parte del sistema de la tarjeta madre. Como puede imaginarse, la caché L3 es más grande (y casi con seguridad más lenta) que la caché L2.
En cualquier caso, el objetivo del todos los subsistemas de caché — bien sean simples o de múltiples niveles — es el de reducir el tiempo de acceso promedio a la RAM.
La RAM resuelve la mayoría del almacenamiento electrónico en las computadoras de hoy en día. La RAM es utilizada tanto para almacenar datos como para almacenar los programas en uso. La velocidad de la RAM en la mayoría de los sistemas actuales está entre la velocidad de la memoria caché y la de los discos duros y está mucho más cercana a la velocidad de la primera que a la segunda.
La operación básica de la RAM es en realidad bien sencilla. En el nivel más bajo, están los chips de RAM — circuitos integrados que "recuerdan". Estos chips tienen cuatro tipos de conexiones con el mundo externo:
Conexiones de energía (para operar la circuitería dentro del chip)
Conexiones de datos (para permitir la transferencia de datos hacia adentro y fuera del chip)
Conexiones de lectura/escritura (para controlar si los datos se almacenaran o se recuperaran desde el chip)
Conexiones de direcciones (para determinar si los datos en el chip serán leídos/escritos)
He aquí los pasos requeridos para almacenar datos en RAM:
Los datos a almacenar se presentan a las conexiones de datos.
La dirección en la que los datos se almacenaran se presenta a las conexiones de dirección.
La conexión de lectura/escritura se coloca en modo de escritura.
La recuperación de datos es también muy directa:
La dirección de los datos deseados se presenta a las conexiones de direcciones.
La conexión de lectura/escritura es colocada a modo de lectura.
Los datos deseados son leídos desde las conexiones de datos.
Mientras que estos pasos parecen bastante simples, estos toman lugar a grandes velocidades, con el tiempo consumido en cada paso medido en nanosegundos.
Casi todos los chips de memoria creados hoy en día se venden como módulos. Cada módulo consiste de un número individual de chips de RAM conectados a una pequeña tarjeta de circuitos. La distribución mecánica y eléctrica del módulo sigue los estándares de la industria, haciendo posible la compra de memorias desde diferentes fabricantes.
![]() | Nota |
|---|---|
El beneficio principal de un sistema utilizando módulos RAM basados en estándares de la industria, es que tienden a mantener bajos los costos de las RAM, debido a la posibilidad de adquirir módulos a partir de diferentes fabricantes. Aunque la mayoría de las computadoras utilizan módulos de RAM basados en estándares de la industria, existen algunas excepciones. Las más notables de estas excepciones son portátiles (e inclusive aquí se comienza a ver un poco más de estandarización) y servidores de punta. Sin embargo, aún en estos ejemplos, es muy probable que estén disponibles módulos de terceros, asumiendo que el sistema sea relativamente popular y que no se trate de un diseño completamente nuevo. |
Todas las tecnologías discutidas hasta ahora son volátiles por naturaleza. En otras palabras, los datos contenidos en almacenamiento volátil se pierden cuando se desconecta el poder.
Por otro lado, los discos duros son no-volátiles — lo que significa que los datos se mantienen allí, aún después que se ha desconectado la energía. Debido a esto, los discos duros ocupan un lugar muy especial en el espectro del almacenamiento. Su naturaleza no-volátil los hace ideal para el almacenamiento de programas y datos para su uso a largo plazo. Otro aspecto único de los discos duros es que, a diferencia de la RAM y la memoria caché, no es posible ejecutar los programas directamente cuando son almacenados en discos duros; en vez de esto, ellos deben primero ser leídos a la RAM.
Otra diferencia de la caché y de la RAM es la velocidad del almacenamiento y recuperación de los datos; los discos duros son de al menos un orden de magnitud más lento que todas las tecnologías electrónicas utilizadas para caché y RAM. La diferencia en velocidad es debida principalmente a su naturaleza electromecánica. Hay cuatro fases distintas que toman lugar durante cada transferencia de datos desde o hacia un disco duro. La lista siguiente ilustra estas fases, junto con el tiempo que en promedio tomaría una unidad de alto rendimiento, para completar cada fase:
Movimiento del brazo de acceso (5.5 milisegundos)
Rotación del disco (.1 milisegundos)
Lectura/escritura de datos de cabezales (.00014 milisegundos)
Transferencia de datos hacia/desde la electrónica del disco (.003 Milisegundos)
De todas estas, solamente la última fase no es dependiente de ninguna operación mecánica.
![]() | Nota |
|---|---|
Aunque hay mucho más por aprender sobre los discos duros, las tecnologías de almacenamiento de disco son discutidas con más detalles en el Capítulo 5. Por los momentos, solamente es necesario tener presente la gran diferencia de velocidad entre la RAM y las tecnologías basadas en disco y que su capacidad de almacenamiento usualmente excede la de la RAM por un factor de al menos 10 y a menudo de 100 y hasta más. |
El almacenamiento de respaldo fuera de línea dá un paso más allá del almacenamiento de disco duro en términos de la capacidad (mayor) y de la velocidad (más lento). Aquí, las capacidades solamente están limitadas por su habilidad de conseguir y almacenar la media removible.
Las tecnologías utilizadas en estos dispositivos varían ampliamente. He aquí los tipos más populares:
Cinta magnética
Disco óptico
Por supuesto, el tener una media removible significa que los tiempos de acceso son aún más largos, particularmente cuando los datos deseados están en un medio que aún no está cargado en el dispositivo de almacenamiento. Esta situación es aliviada de alguna manera por el uso de dispositivos robóticos capaces de montar y desmontar automáticamente la media, pero las capacidades de almacenamiento de la media de tales dispositivos son finitas. Hasta en el mejor de los casos, los tiempos de acceso son medidos en segundos, lo cual está bastante lejos de los tiempos típicos de acceso de los ya relativamente lentos multi-milisegundos de un disco duro.
Ahora que ha visto brevemente las diferentes tecnologías de almacenamiento utilizadas hoy en día, vamos a explorar los conceptos básicos de la memoria virtual.
| [1] | Mientras que "RAM" es un acrónimo para "Random Access Memory," y un término que podría ser fácilmente aplicable a cualquier tecnología de almacenamiento que permita el acceso no secuencial de los datos almacenados, cuando los administradores de sistemas hablan sobre RAM invariablemente se refieren al sistema de memoria principal. |