Cuando hablamos de procesadores y sistemas operativos, tanto de sistemas de escritorio como de móviles, nos referimos a procesadores de 64 bits que es lo que impera en la actualidad.
Este número hace referencia al tamaño de los registros internos de la CPU utilizados en cada arquitectura y en particular a la longitud que puede tomar la variable más básica.
Durante las últimas décadas, los procesadores han pasado de 4 bits a 64 bits con una evolución que, mirando hacia atrás, parece realmente impresionante. Sin duda recordarás las históricas consolas de videojuegos de 8 bits y la transición histórica a 16 bits. ¿Recuerdas el paso de NES a SNES?
Ya en 2006, los servidores comenzaron a utilizar microprocesadores de 64 bits pero hubo que esperar unos años más para que llegara a los ordenadores domésticos. En esos años era más que suficiente a nivel de usuario los procesadores de 32 bits, cda más que suficiente para gestionar la memoria RAM de menos de 4 Gigas.
El código binario es la base del funcionamiento de cada sistema informático que utilizamos hoy en día. Al menos hasta que los ordenadores cuánticos y los qubits estén al alcance de los usuarios.
El bit, unidad de medida de la cantidad de información, puede tomar dos valores: 0 y 1.
El número binario de 8 bits 11111111 representa el valor máximo que se puede expresar: partiendo de la derecha y multiplicando cada dígito por las potencias de 2 en orden ascendente se obtiene: 1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 + 1 * 24 + 1 * 25 + 1 * 26 + 1 * 27 = 255.
No es casualidad que la tabla ASCII extendida permita codificar 256 caracteres diferentes usando un solo byte o 255 valores más el cero inicial (de 0 a 11111111 en binario).
8, 16, 32 y 64 bits: qué significa
El número más grande que se puede escribir con 16 bits está formado por 16 dígitos "1" que en el sistema decimal equivalen a 65535. Con 16 bits obviamente se pueden manejar 2 bytes de información.
El 15 de noviembre de 1971, Intel presentó el primer microprocesador comercial de un solo chip de la historia: era de 4 bits y se llamó Intel 4004.
Un ejemplo de procesador de 8 bits es el MOS Technology 6502 de septiembre de 1975: fue muy popular y se extendió lo suficientemente rápido como para ser utilizado en sistemas como Atari 800, Apple I, II, Commodore PET, VIC-20 y posteriores, en versión modificada y actualizada, también en el Commodore 64 (procesador 6510, era 1982).
La era de los 16 bits comenzó con Intel 8086 (1978) y 80286 (febrero de 1982), así como con Motorola 68000 (1979), 68010 y Zilog Z8000 (1979).
Del mismo modo, con la transición a 32 bits se logró duplicar el tamaño de los registros de la CPU: a la cabeza estaban los procesadores Intel i386 (80386) que la empresa de Santa Clara empezó a producir en 1985. Los de 32 bits también fueron todos los sucesores: desde 486 hasta Pentium, Pentium 2 y así hasta el lanzamiento de los primeros modelos de 64 bits.
Del lado móvil, hablamos de los núcleos ARM Cortex-A8 (año 2005), Cortex-A9, Cortex-A15, etc.
Como parte de la arquitectura x86, AMD dio un fuerte impulso para pasar a 64 bits con sus procesadores Opteron (año 2003) destinados a sistemas de servidor. Las extensiones de 64 bits (x64 o x86-64) desarrolladas por AMD para sus procesadores fueron licenciadas a Intel, que las usó en el mercado masivo para su Core 2.
En el lado móvil, los primeros chips de 64 bits fueron el ARM Cortex-A53 (año 2012) y el Cortex-A57.
Lo que realmente cambia en el paso 4, 8, 16, 32, 64 bits
Cuando se trata de dispositivos informáticos, hay dos características importantes: el mencionado tamaño de los registros internos de la CPU y el esquema de direccionamiento que utiliza el bus del sistema.
El bus es un canal de comunicación que permite que los diversos componentes de un dispositivo electrónico interactúen e intercambien información a través de la transmisión y recepción de señales.
El bus del sistema se compone de: bus de direcciones, bus de datos y bus de control y se realiza a través de un subsistema físico compuesto por varias pistas de cobre y varios tipos de conectores.
El tamaño de la memoria que se puede direccionar determina el ancho del bus y viceversa. Como vimos anteriormente, si el tamaño del bus de direcciones fuera de 32 bits, sería posible utilizar 232 bloques de memoria o 4 GB de datos.
Por lo tanto, con un procesador de 16 bits, generalmente es posible escribir directamente 16 bits de datos en la memoria a la vez y así sucesivamente cambiando a 32 y 64 bits.
Sin embargo, hay que decir que en algunas arquitecturas el tamaño de los registros internos de la CPU no necesariamente refleja la cantidad de memoria que se puede direccionar: en el caso del Intel i386 la idea era permitir el direccionamiento de 4 GB de memoria utilizando 32 registros, pero en el caso, por ejemplo, del núcleo Cortex-A15, también de 32 bits, aún era posible direccionar más de 4 GB porque se utilizaban algunos registros internos adicionales. Este último permitió en realidad la extensión del espacio de direcciones.
Si lo piensas incluso hoy en día, los sistemas de 64 bits ciertamente no pueden abordar físicamente 264 bits, lo que equivale a algo así como 18.446 petabytes de memoria: nadie puede instalar remotamente módulos de memoria de esta magnitud. Solo ahora estamos hablando de configuraciones de placa base y procesador que pueden admitir más de 1 TB de RAM.
Por este motivo nunca se ha hablado de una posible migración de 64 a 128 bits en el caso de los procesadores: no hace falta un espacio de direcciones de memoria aún mayor al que pueda acceder a su vez cada uno de los núcleos.
Ejecutar programas de 64 bits en un sistema x86-64, por otro lado, presenta enormes ventajas, especialmente en términos de rendimiento. Además, como dijimos, un sistema de 64 bits puede manejar más de 4 GB de memoria, un límite que desde principios de la década de 2000 comenzó a ser extremadamente limitante.
Solo ten en cuenta que los procesadores de 64 bits del mercado suelen utilizar, como máximo, buses de 48 bits y que los Intel Alder Lakes de 12ª generación integran un bus de memoria con cuatro canales DDR5 de 32 bits para formar una interfaz de 128 bits.