Mi ordenador solo es de 32 bits, ¿es grave?

Como ustedes bien saben, los ordenadores son máquinas binarias, es decir, sólo son capaces de manipular ceros y unos porque es más fácil, desde el punto de vista electrónico, construir máquinas binarias que de otro tipo. Esta cuestión de conveniencia tecnológica tiene un gran número de repercusiones que muchas veces damos por sentadas sin saber muy bien dónde tienen su origen.

Un ejemplo: ¿por qué los microprocesadores son de 16, 32 o 64 bits, en lugar de 20, 33 o 69? Evidentemente, las tres primeras cifras son potencias de 2 (24, 25 y 26, respectivamente), mientras que las tres últimas son números al azar. ¿Pero existe un motivo para seleccionar esas cantidades o es una simple cuestión estética de los ingenieros informáticos, obsesionados con el código binario? Y, en última instancia, ¿qué diablos significa que un microprocesador sea de 32 o de 64 bits?

El interior de la CPU (eso que con acierto se ha identificado, metafóricamente, claro, con el “cerebro” del ordenador) es un lugar fascinante desde el que se controla el funcionamiento de todos los dispositivos del sistema. Una de las cosas que encontramos en su interior es un pequeño almacén, llamado registro de dirección, con la exigua capacidad de sólo unos pocos bits. Cuando la CPU necesita acceder a cualquier celda de la memoria (algo que ocurre unas cuantas miles de veces por segundo), antes debe almacenarse en ese pequeño registro la dirección de la celda a la que se pretende acceder, del mismo modo que los funcionarios de correos necesitan que especifiquemos correctamente la dirección del destinatario en el sobre cuando enviamos una carta.

El tamaño (en bits) de ese registro es crítico de cara a la cantidad de memoria que puede utilizar un sistema (o que puede direccionarse, por utilizar el término técnico). Por ejemplo, si el tamaño del registro es de 8 bits, sólo podrán direccionarse 256 posiciones de memoria. ¿Por qué 256? Ese es el número de combinaciones diferentes que pueden hacerse con 8 bits, desde 0000 0000 hasta 1111 1111. No hace falta que las cuenten con los dedos. Es más fácil hacer un sencillo cálculo: 28 = 256.

Como cada posición de la memoria tiene la capacidad de almacenar un byte (8 bits) de información, un microprocesador con un registro de direcciones de 8 bits sólo podría direccionar 256 bytes, que es un tamaño ridículo en los pecadores tiempos que corren. Así que los registros de direcciones tienen en realidad tamaños mayores: 16, 32 ó 64 bits. El tamaño de la memoria direccionable por esas CPUs crece exponencialmente (puede hacer la cuenta calculando cuánto es 216, 232 y 264). Además, en ocasiones se emplean imaginativos trucos para incrementar ese espacio direccionable, pero ahora no entraremos en esos detalles.

Nos hemos topado así con nuestras cifras mágicas: 16, 32 y 64 bits. Si tenemos un registro de direcciones de 8 bits que funciona pero se nos ha quedado pequeño, hay una solución más fácil que tirarlo y fabricar otro registro nuevo de 9, 10 o 12 bits: poner otro registro de 8 bits al lado. Con eso, habremos duplicado el número de bits (de 8 a 16), y el espacio direccionable habrá crecido exponencialmente (de 28 a 216, es decir, de 256 a 65.536)

Del mismo modo, si tenemos un registro de 16 bits y lo ampliamos colocando otro al lado, obtenemos 32 bits, lo que nos proporciona 232, es decir, más de 4 mil millones de celdas de memoria direccionables (4 gigabytes). Esta cantidad era gigantesca hace diez años, pero hoy no resulta gran cosa, ni siquiera en el mercado de la informática personal.

Por eso habrán oido decir que los microprocesadores actuales dedicados a los ordenadores personales son de 64 bits (entre los grandes superordenadores, existen máquinas de 64 bits desde los años 60). Eso significa que, entre otras cosas, el ancho de su registro de direcciones es de 64 bits y que, en teoría, pueden direccionar 264 celdas de memoria, esto es, 17.179.869.184 gigabytes. Menuda burrada, ¿eh? Es lo que tiene el crecimiento exponencial.

Esas fabulosas cantidades de memoria están, obviamente, muy lejos de las posibilidades actuales, pero podemos considerarlas una inversión de futuro.

Por cierto, que los números enteros en cualquier lenguaje de programación también ocupan 8, 16, 32 ó 64 bits. La justificación de por qué se trata de esas cifras y no de otras es la misma, y las posibilidades de almacenamiento en una variable entera crecen exponencialmente con la cantidad de memoria reservada. Ningún lenguaje convencional, que yo sepa, permite usar variables enteras de más de 64 bits a menos que uno se fabrique en su garaje un nuevo tipo de datos. Y si los lenguajes convencionales no lo permiten es porque resulta difícil imaginar un problema razonablemente convencional en el que necesitemos manipular números del orden de magnitud de 2128, que sería el siguiente escalón en la sucesión de potencias de dos.

Comentarios