domingo, 16 de octubre de 2016

Mis memorias



Tras unos meses de descanso motivados por los exámenes, mi trabajo de fin de grado (¡Ya soy ingeniero!) y una búsqueda de trabajo (un parado menos) aquí llega otra entrada del Tecnópata obsoleto. ¿Qué tema tratamos hoy? 

Normalmente se piensa que la memoria RAM es el único factor determinante en la velocidad de un equipo y que cuanto más grande sea la memoria más rápido va a ir. Sin embargo, la realidad dista un poco de esa creencia popular y hoy vamos a explicar por qué, dando un repaso por la arquitectura de los ordenadores a través de los tiempos. Antes de empezar advierto que, al ser un tema complicado, podría resultar un poco más denso que de costumbre.

Al principio de los tiempos eran los sistemas integrados, es decir, chips pensados exclusivamente para una tarea cuyo diseño se correspondía a un propósito específico. Estos chips siguen existiendo, un ejemplo de sistema integrado podría ser el chip que controla los alerones de un avión. En un momento dado, se quiso crear procesadores sin un único propósito y así nacieron los procesadores de propósito general que se usan hoy en día.

En ese avance tan chulo, necesitábamos saber qué iba a hacer el procesador a continuación, es decir, una vez estaba ejecutando queríamos conocer cuál iba a ser su próximo paso, ya que, al ser un procesador de propósito general, podría realizar cualquier tarea. Para esto metieron una pequeña memoria que servía para tener a mano las instrucciones y los datos. Algo así como ir al teatro y coger el panfleto, cuando acaba este acto sabes cuál va después y qué actores entran. Esa memoria, es la memoria RAM. Tras eso, todos los programas se cargaban con unidades de almacenamiento externo (disquetes, normalmente) y cuando quitabas el disquete el programa no estaba instalado, simplemente desaparecía (no, no se podía guardar partida en la mayoría de los juegos). El problema de los disquetes es que eran un coñazo infumable, tenías que tener muchos, MUCHOS, tantos como programas o a veces bastantes más (un ejemplo de su baja capacidad, es que Windows 95 venía en 13 disquetes) así que alguien decidió crear un disco más grande que estuviese en el ordenador y nos permitiese instalar programas. Entonces Dios dijo: “hágase el disco duro” y vio que era bueno.


De este modo nació el disco duro (Hard Drive Disk o HDD). Cada vez que queríamos cargar un programa tenía que transferirse todo el contenido de ese programa desde el HDD a la memoria RAM y para ejecutarlo iba saliendo de la RAM al procesador. Cada una de estas transferencias creaba un cuello de botella y ralentizaba la ejecución, de forma que, aunque los procesadores eran rápidos, no podía suministrárseles información a la velocidad suficiente, igual que cuando vas a un restaurante con hambre, te comes el primero y tienes que esperar a que acaben de cocinar el segundo.

Llegamos al tiempo actual donde, para paliar los cuellos de botella, se creó una compleja jerarquía de memoria (poco a poco, no de golpe) de forma que, cuando queremos un dato, se copia de arriba hacia abajo en el esquema de memoria. El truco está en que cada paso copia trozos más pequeños. Usando esta técnica, si tienes que buscar un dato, es más fácil buscarlo en los niveles inferiores. Otro truquito es que cuanto más cerca del procesador estás, más rápidas son tus transferencias, de forma que los registros transfieren de forma instantánea y una transferencia grande con disco duro puede tardar varios segundos.

¿Qué hace entonces que el ordenador sea más rápido? La respuesta a esa pregunta no es fácil, figura retórica subrayada, pues pasa por muchos puntos. Ya hemos visto que el tamaño de la memoria sólo es la cantidad de información que puede almacenar proveniente del disco duro. Está bien, cederé un poco al decir que una memoria muy pequeña ralentizará el ordenador, pero muchísimo espacio (digamos 32 GB) no van a dar una ventaja, porque símplemente tendremos más datos cargados, pero habrá que transferirlos también a las memorias inferiores. Por ello habría que tener en cuenta unas consideraciones:

Lo primero es la frecuencia a la que opera la memoria. A mayor frecuencia, mayor tasa de transferencia. Podemos continuar con el tiempo de acceso a datos, que es la medida más fiable. Seguiremos pensando en la cantidad de memoria caché que tenga el procesador (sí, el procesador tiene memoria) y para acabar, otro dato importante es la velocidad de lectura/escritura del disco duro, que es el muro más alto que tendremos que saltar. Por ello en los últimos tiempos se han creado discos duros híbridos (tienen una pequeña memoria caché de 8-10 GB) y los rapidísimos discos duros SSD, que son más parecidos a un pen drive que a un disco duro. De hecho, ya no tienen “disco” dentro, sólo chips. Estos discos aceleran una barbaridad el mayor cuello de botella de nuestro ordenador, el producido entre disco duro y memoria RAM. 

Así que termino con este secreto a voces de la informática: hasta ahora, ¿Qué hace un informático si la transferencia del hardware resulta muy lenta? Introducir un paso adicional. ¿Parece muy descabellado?