La evolución de la tecnología ha hecho que el significado de esta sigla sea actualmente ambiguo. CPU (Central Processing Unit) es la expresión clásica para referirse al procesador hardware que eje- cuta instrucciones (órdenes expresadas en lenguaje de máquina binario) de un programa almacenado en la memoria. El «corazón» de este procesador, la unidad de control, en un instante determinado sólo puede estar ejecutando una instrucción de un programa. Los sistemas multiprocesador contienen va- rios procesadores que funcionan en paralelo, pudiendo ejecutar varias instrucciones simultáneamente; actualmente en solo chip pueden integrarse varios procesadores. Algunos llaman «CPU» a cada uno de estos procesadores, y otros al conjunto. Aquí seguiremos el segundo convenio: la CPU es un conjunto de circuitos integrados en un chip que contiene uno o varios procesadores.
En el tema «Procesadores hardware» estudiaremos con todo detalle el funcionamiento de un pro- cesador (capítulo 9) y veremos los principios de los sistemas multiprocesador (apartado 11.6). Para lo que sigue basta con saber dos cosas:
• Un procesador hardware extrae sucesivamente de la memoria principal las instrucciones que forman un programa y las va decodificando, interpretando y ejecutando.
• Un procesador hardware tiene, como mínimo, dos modos de funcionamiento: modo supervisor y modo usuario. Cuando está en modo usuario no permite ejecutar ciertas operaciones. Si un programa contiene una instrucción que implica alguna de esas operaciones y se ejecuta en modo usuario, al llegar a esa instrucción el procesador aborta la ejecución de ese programa y pasa al modo supervisor.
Memorias
En el apartado 1.3 hemos visto las características básicas de los distintos soportes de almacena- miento. Concretando con datos, la tabla 2.1 resume las tecnologías de memoria de lectura y escritura más utilizadas. («Parcial» significa que la escritura es posible, pero a menor velocidad que la lectura).
Tecnología CMOS SRAM7 DRAM Flash NAND Magnética Óptica
Acceso aleat. Sí Sí Sí No No No
Lect. y escr. Sí Sí Sí Parcial Sí Parcial
T. acc. lect. (µs) 0,0002–0,0005 0,0005–0,025 0,05–0,2 25–50 5.000–20.000 > 100.000 T. transf. (MB/s) 20.000–100.000 5.000–50.000 1.000-5.000 200-500 500–1.000 1-5
Coste (e/KiB) ≈ 100 ≈ 10−2 ≈ 10−5 ≈ 10−6 ≈ 10−7 ≈ 10−7
Dens. (bits/mm2) ≈ 102 ≈ 104 ≈ 106 ≈ 108 ≈ 109 ≈ 107
Volatilidad Sí Sí Sí No No No
Capacidad típica < 1 KiB < 64 MiB < 16 GiB < 1 TiB < 10 TiB < 100 GiB Uso típico Registros (M. local) M. cache M. principal M. secundaria
y terciaria
M. secundaria y terciaria
M. terciaria Gestionado por Hardware Hardware S. operativo S. operativo/
Operador
S. operativo/ Operador
Operador
Tabla 2.1:Comparación de tecnologías de memoria.
Lo importante no son los datos concretos, sino las proporciones entre las distintas tecnologías. Los datos son aproximados (y obtenidos de fuentes diversas), y evolucionan con el tiempo. Por ejemplo, hace unas décadas las tecnologías eran de componentes discretos para los registros, de núcleos de ferrita para la memoria principal y de discos más primitivos para la secundaria; si nos fijamos en la capacidad, un procesador típico podía tener ocho registros de 16 bits (es decir, en total 8 × 16/8 = 16 bytes), la memoria principal 1 MiB y el disco 500 MiB. Las proporciones son similares a las actuales. Esto explica que, aunque las tecnologías hayan evolucionado, los principios que se aplican para combinarlas sean esencialmente los mismos desarrollados hace 50 años.
Memoria principal
La memoria principal es la que alberga los programas en ejecución, y para su implementación se hace necesario combinar varias tecnologías de memoria. Veamos por qué.
En el diseño de un sistema informático, como en el de cualquier sistema compuesto por partes, hay que adecuar entre sí las características de las partes para obtener el mejor funcionamiento posible con el menor coste. Ya sabemos que la CPU, si sólo tiene un procesador, va extrayendo (leyendo) sucesivamente instrucciones de la memoria y ejecutándolas (lo que puede implicar leer o escribir un dato en la misma memoria). Y esto lo hace a un ritmo constante. Para que el procesador no tenga que esperar, la memoria principal debe ser obligatoriamente de acceso aleatorio y, a ser posible, que tenga un tiempo de acceso compatible con la velocidad del procesador. Los procesadores más comunes actuales tienen velocidades del orden de 100 MIPS (y algunos llegan a 10.000 MIPS). Eso quiere decir que son capaces de leer y ejecutar 100 millones de instrucciones por segundo. Para proporcionar ese caudal y evitar así que el procesador espere, el tiempo de acceso de la memoria debe ser igual o inferior a 1/(100 × 106) segundos, es decir, 0,01µs. Como vemos en la tabla 2.1, la tecnología adecuada sería la de SRAM, porque con una DRAM de 0,05µs sólo se llegaría a un caudal de 10−6/(0,05 × 10−6)= 20 MIPS.
Pero no hay que olvidar el factor coste8, que depende de la capacidad de memoria necesaria. En un sistema con multiprogramación y de uso personal, actualmente es normal una capacidad de 4 GiB (4 × 220KiB) para albergar todos los programas en ejecución. De nuevo con los datos de la tabla, con 7Las SRAM (Static Random Access Memory), DRAM (Dynamic Random Access Memory) y SDRAM (Synchronous DRAM)se implementan también con tecnología CMOS. La diferencia está en el número de transistores utilizados para un punto de memoria: uno en DRAM, varios en SRAM y muchos en los registros. De ahí las diferencias en densidad y coste.
8Tampoco hay que olvidar otros, como el tamaño, el consumo, el calentamiento... Si se consideran refuerzan aún más la argumentación.
SRAM resulta 0,01 × 4 × 220 ≈ 42.000e, un coste desorbitado en comparación con el de los demás componentes del sistema. Con DRAM es más razonable: 42e.
Ahora bien, los patrones de ejecución de los programas tienen una propiedad que permite conse- guir algo aparentemente imposible. Un programa puede contener decenas de miles de instrucciones, pero en el curso de su ejecución pasa largos períodos de tiempo ejecutando partes que sólo contienen unas decenas o centenas de instrucciones. El ardid consiste en conservar los programas en la memoria principal (DRAM), pero mantener copias de esas partes (una o varias de cada uno de los programas) en una memoria SRAM que es a la que realmente accede el procesador. Naturalmente, estas partes van cambiando, y tiene que controlarse mediante un hardware que para cada petición del procesador detecte si la parte que corresponde está copiada o no, y en caso necesario reemplazarla. En el tema «Procesadores hardware» (apartado 8.6) daremos más detalles.
De este modo, y siguiendo con el ejemplo, el procesador «ve» una memoria de 4 GiB, con un tiempo de acceso medio muy próximo al de la SRAM (algo inferior por la penalización que implica el que esporádicamente haya que sustituir alguna parte por otra) y con un coste sólo algo superior a de la DRAM (el de la SRAM y el hardware controlador). La memoria más rápida y más cercana al pro- cesador, implementada actualmente con tecnología SRAM, se llama memoria cache, o, simplemente, cache9. Y como dentro de las tecnologías SRAM hay varias posibilidades de velocidad y coste, es normal que se combinen varios niveles: una pequeña cache (del orden de varios KiB), que es la más próxima al procesador (de hecho, suele estar integrada en el mismo chip) y la más rápida, y se suele llamar «L1»; otra mayor (del orden de varios MiB), L2, etc. Cuando el procesador intenta acceder a la memoria principal, el hardware controlador mira si lo que se pide está copiado en la L1, y generalmente resulta que sí, pero si no es así, el controlador accede a la L2 y, si aquí sí está se copia una parte en la L1, etc.
Por lo demás, tanto la memoria principal como la cache son volátiles, son de lectura y escritura y de acceso aleatorio y en ambas se puede acceder a un byte o a varios bytes (una «palabra») en una sola operación.
Se llama espacio de direccionamiento al conjunto de direcciones generado por un procesador al ejecutar un programa. Como luego veremos (página 45), no necesariamente coincide con la capacidad de la memoria principal.
Memorias secundarias y terciarias
En la memoria secundaria se guardan todos los programas, estén en ejecución o no. Como pueden ser cientos de miles, se necesita una tecnología que permita una gran capacidad con un coste por bit reducido. Además, debe ser una tecnología de lectura y escritura y no volátil, para que los programas (y, por supuesto, los datos, que en muchas aplicaciones es lo verdaderamente importante a conservar) permanezcan sin necesidad de alimentación eléctrica. A la vista de nuevo de la tabla 2.1, la idónea es claramente la tecnología de discos magnéticos, aunque en algunos equipos se sustituyen por memorias flash10(son los llamados SSD, Solid State Disks).
La memoria terciaria es la de los soportes de almacenamiento que no están conectados permanen- temente y que precisan de una intervención humana (insertar un CD o un «pincho» USB), o bien de un sistema robótico (en grandes archivos digitales). La tecnología más común para grandes volúmenes de datos es la de las cintas magnéticas.
9Una traducción obvia es «memoria oculta». O, más literal y más sugestivamente, «zulo». Pero el anglicismo está tan extendido, no sólo en la jerga técnica, también en el lenguaje cotidiano, que es mejor conservarlo.
10También, en algunos sistemas embebidos se utiliza flash de tipo NOR, que es de lectura y escritura y no volátil, para la memoria principal. Pero aquí nos estamos centrando en ordenadores de propósito general.
Para comprender el trabajo que tiene que realizar el sistema operativo a fin de ofrecer a los progra- mas y a los usuarios una abstracción de los detalles del almacenamiento en las memorias secundarias es necesario conocer, aunque sea superficialmente, estos detalles. Sólo describiremos las cintas y discos magnéticos, sin entrar en otras tecnologías, como las ópticas o las flash.
Cintas magnéticas
El almacenamiento en cintas magnéticas se basa en el mismo principio de las cintas de audio y vídeo: la magnetización de una película depositada sobre una banda delgada de material plástico, que se desplaza bajo una o varias cabezas de lectura y escritura. La diferencia es que no se graban señales analógicas, sino digitales: el campo magnético en cada punto de la superficie está orientado en un sentido o en el opuesto, y puede hacerse corresponder a cada sentido un valor binario, o, lo que es más frecuente (porque facilita el diseño de los circuitos detectores), a cada cambio de sentido un valor binario.
Las cintas «clásicas» (las que todavía pueden verse en algunos «centros de proceso de datos», y, sobre todo, en películas) tenían una anchura de media pulgada (1,27 cm) y una longitud variable, del orden de cientos de metros. Los datos se almacenaban en nueve pistas paralelas: ocho para un byte y la novena para un bit de paridad.
1 byte marca inicio intervalo registro intervalo intervalo intervalo registro marca fin sentido del desplazamiento cabeza de lectura/escritura
Figura 2.4:Formato de una cinta magnética.
El formato de almacenamiento es el que muestra la figura 2.4. Los bytes se agrupan en registros físicos11 y entre registro y registro se deja un intervalo de varios milímetros. En unos formatos los registros tienen un número fijo de bytes, y en otros el número es variable. En todo caso, el con- trolador reconoce en la lectura al intervalo como una zona sin cambios en la magnetización. Los intervalos son necesarios porque la cinta puede pararse al terminar de leer o escribir un registro (nunca en medio de uno), y cuando vuelve a arrancar tarda un tiempo en llegar a la «velocidad de crucero», por la inercia de las partes mecánicas. Los registros se agrupan en ficheros. Una codificación se reserva para la «marca» que indica el principio de un fichero, a la que le sigue el primer registro, que contiene, entre otros datos, el nombre del fichero. Se puede así localizar con relativa facilidad un fiche- ro determinado: avanzando la cinta rápidamente hasta encontrar una marca de inicio de fichero, y leyendo su primer registro.
Este formato primitivo ha ido evolucionando. Actualmente se utiliza un estándar complejo, el LTFS (Linear Tape File System).
La capacidad de almacenamiento de las cintas más comunes actual-
mente es del orden de 10 TiB12y su tasa de transferencia, 160 MB/s. Su gran inconveniente radica en la naturaleza secuencial del acceso: acceder a un registro que se encuentra al final de la cinta cuando las cabezas están al principio puede requerir minutos. Con los discos magnéticos se consiguen capacidades y tasas de transferencia similares a las de las cintas, y los tiempos de acceso se reducen a los milise- gundos; al evolucionar su tecnología se ha ido reduciendo su coste, y, así, han ido sustituyendo a las cintas. Éstas, no obstante, compiten con los discos y con tecnologías ópticas para el almacenamiento de copias de respaldo y de archivos digitales.
11Aunque en español se les dé el mismo nombre, no hay que confundir estos «registros» (records) con los registros de la CPU (registers).
Discos magnéticos cabeza pista sector brazo móvil pista cilindro sentido de la rotación
Figura 2.5:Disco magnéti- co.
Los primeros discos duros comercializados para ordenadores persona- les, hace unos treinta años, tenían una capacidad de unos 8 MiB y un coste de unos 400e . Actualmente (2015) se pueden encontrar discos de 8 TiB por el mismo precio. Es decir, la capacidad se ha multiplicado, aproxima- damente, por un millón, y el el coste por bit se ha dividido por la misma cantidad. Sin embargo, los principios básicos de funcionamiento no se han alterado sustancialmente.
La configuración mecánica básica de una unidad de disco consta de un conjunto de discos recubiertos de un material magnetizable, que giran so- bre un eje común. Cada disco tiene dos superficies (o caras), por lo que hay dos cabezas de lectura y escritura para cada disco. La organización del almacenamiento se basa en la división de la superficie en pistas con- céntricas. Un conjunto de pistas de igual radio en todas las superficies se llama cilindro. El conjunto de las cabezas puede moverse solidariamente en sentido radial, de modo que en cada momento todas las cabezas están situadas sobre un determinado cilindro (figura 2.5). Las pistas se dividen en sectores, y cada sector contiene un conjunto de bytes.
El tamaño típico de un sector ha sido durante muchos años 512 bytes. Recientemente (desde 2010) se va imponiendo un nuevo estándar llamado «Advanced Format»con sectores de 4.096 bytes.
El número de cilindros, cabezas y sectores por pista, «CHS» (Cylinders–Heads–Sectors), determi- nan la llamada geometría física del disco. Para acceder a un determinado sector, el software debería comunicar al hardware controlador del disco los números de cilindro, de la superficie y del sector dentro de la pista.
Ahora bien, si la velocidad angular de rotación, el número de sectores por pista y el número de bytes por sector son constantes, como las pistas tienen distinto radio, la densidad de grabación en las pistas externas es menor que en las internas. Se puede aprovechar mejor la superficie magnética (y dotar de más capacidad al disco) haciendo que el número de sectores por pista sea mayor cuanto más externa sea la pista. Esta técnica, que desde el año 2000 utilizan todos los fabricantes de discos (y también de DVD) se llama «ZBR» (Zone Bit Recording). El software puede acceder a un sector especificando simplemente su número «absoluto», entre 0 y N − 1, siendo N el número total de sectores que puede contener el disco. El controlador se ocupa de hacer la traducción para averiguar en qué pista y superficie se encuentra. Esto se llama «LBA» (Logical Block Addressing)13.
Los discos no tienen un modo de acceso aleatorio (como la memoria principal) ni secuencial (como las cintas), sino cíclico. Hay que distinguir entre el tiempo de búsqueda (seek time) que tardan las cabezas de lectura/escritura en desplazarse hasta la pista adecuada (y que depende de las características electromecánicas del sistema que mueve las cabezas) y el tiempo de espera (o «latencia»: rotational latency) que tarda el sector en llegar hasta donde está la cabeza (que depende de la velocidad de rotación del disco); la suma de ambos es, en valores medios, del orden de milisegundos. Sin embargo, una vez posicionada la cabeza, el flujo de lectura o escritura de datos puede proceder con una tasa de transferencia del orden de cientos de MB/s.
13ZBR y LBA tienen un efecto secundario: la tasa de transferencia es mayor en las pistas externas. Esto explica un fenó- meno que si es usted observador quizás haya notado: un disco nuevo parece hacerse más lento conforme se utiliza. Es así porque en un disco vacío el sistema operativo empieza utilizando los sectores por su número, y estos sectores se numeran de afuera adentro. A medida que el disco se va llenando se va accediendo más a sectores de menor radio.
El tiempo de búsqueda tiene, para cada disco, unos valores máximo y mínimo bien determinados (lo que tardan las cabezas en desplazarse desde el cilindro más externo hasta el más interno, y lo que tardan en desplazarse entre dos cilindros contiguos), pero el valor medio es difícil de establecer (depende del programa: de cómo esté organizado el almacenamiento de los datos en el disco y de cómo sea el acceso a esos datos). Los valores medios anunciados por los fabricantes varían entre 4 y 15 ms. El tiempo medio de espera, sin embargo, es fácil de calcular: es lo que tarda el disco en dar media vuelta. Para uno que gire a 10.000 rpm (revoluciones por minuto) puede usted comprobar que resulta ser 3 milisegundos.
La tasa de transferencia depende de la velocidad de rotación y de la densidad de grabación14. En los discos actuales puede llegar a 1 GB/s. Pero esta es la tasa de transferencia «interna». Los contro- ladores normalmente tienen una memoria buffer, y si los datos que se pretenden leer ya están en ella la transferencia es mucho más rápida. La transferencia externa, con la interfaz estándar SATA, puede llegar a 3 GB/s.
Jerarquía de memorias PROCESADORES (CPU)
SISTEMA DE MEMORIA R1 R1 R2 R2 R3 R3 0,2−0,5 ns 0,2−0,5 ns 16−1024 B 16−1024 B L1 L1 MT "brecha" "brecha" T: variable C: ilimitada MP MS C0 C1 L2 L3 ML ML 0,5−1 ns 0,5−1 ns 8−32 KiB 8−32 KiB 50−250 ns 256 MiB − 1 TiB 2−20 ms 100 MiB − 10 TiB 10−25 ns 10−25 ns 64 KiB−1 MiB 1MiB−16 MiB
Figura 2.6:Jerarquía de memorias. Todos estos elementos de almacenamiento forman una
jerarquía de memorias (figura 2.6). La brecha de velo- cidades (speed gap) entre los procesadores y la memoria principal y la que hay entre e´sta y la memoria secundaria ha permanecido durante décadas a pesar de la evolución de las tecnologías. La primera puede resolverse mediante hardware, como hemos visto, con las caches, pero para la segunda no hay una tecnología disponible. Un candidato ac- tualmente es flash, pero sigue habiendo una brecha (menor) y tiene algunos inconvenientes (ser más lenta en escritura y tener un número máximo alto pero limitado de escrituras). La solución es mediante software: una cache de disco, que consiste en tener copiadas en zonas de la memoria principal las partes más utilizadas del disco.
Podemos hacer una analogía entre esta jerarquía de me- morias en un ordenador y la que se utiliza en ciertos mo- dos de organización del trabajo intelectual. Por ejemplo, en el proceso de escribir un documento como éste es preciso consultar muchas fuentes: anotaciones y esquemas propios, artículos, libros, manuales, etc. En un momento dado, el autor siempre tiene rápidamente accesibles (en un tiempo, digamos, del orden de un segundo), al lado del teclado, las notas más relevantes. A veces debe hacer consultas rápidas (y en su caso renovar las notas de acuerdo con el resulta- do) en documentos que también están «a mano» (apilados
en papeles, o en ficheros de trabajo) cuyo acceso puede requerir del orden de diez o veinte segundos. Esporádicamente ha de levantarse para buscar algo en una estantería próxima, o hacer una búsqueda 14En principio es fácil de calcular, pero para ficheros grandes es complicado: la lectura o la escritura puede necesitar el acceso a varios o a muchos sectores que pueden estar en distintas pistas. Una medida es IOPS (Input/output Operations Per Second), que se obtiene experimentalmente comprobando el tiempo de transferencia de un conjunto de pequeños bloques de tamaño aleatorio.
en internet, lo que puede llevar varios minutos. En ocasiones necesita algo que ha de buscar en la bi- blioteca; en tal caso cambia de tarea (como en multiprogramación) y se dedica a otra cosa: el acceso a la biblioteca puede dejarse para dentro de unas horas. Finalmente, es posible que tenga que recurrir a solicitar un envío por correo, que, si es por medios tradicionales, puede tardar semanas o...
Los papeles al lado del teclado son análogos a los registros de los procesadores, los documentos «a