Los bits de un microprocesador y el bus de datos limitan la cantidad de RAM utilizable por el sistema, en este artículo explicaré los diferentes límites de un microprocesador x86 en 16, 32 y 64 bits.
La memoria RAM se compone de slots de 1bytes cada uno, para acceder a estas ranuras hay que hacer referencia a su dirección de memoria, la primera posición parte desde 0 hasta X.
Un microprocesador solo puede trabajar en binario lo que significa que para acceder a las ranuras de RAM tendrá que indicar la posición en binario, según el número de bits podremos representar distintas posiciones de memoria:
1bit: 0/1 ➡️ 2 posiciones: 2bytes
2bits: 00/01/10/11 ➡️ 4 posiciones: 4bytes
3bits: 000/001/010/011/100/101/110/111 ➡️ 8 posiciones: 8bytes
Como podemos ver el número de ranuras a las que podemos hacer referencia es 2^N donde N es el número de bits disponibles.
El primer microprocesador X86 fué el 8086 de 16 bits, con un bus de datos de 20 bits, este microprocesador era capaz de direcionar:
(2^16)/1024 = 64KB
Mas tarde Intel ideó un modo de aprovechar los 4bits del bus de datos mediante un sistema de segmentación, este consiste en partir la memoria en bloques de 64KB y utilizar un registro de 16 bits para indicar el bloque(segmento) al que se quiere acceder y en otro registro indicar el desplazamiento dentro de este segmento.
El direccionamiento con segmentación debería de poder direccionar:
((2^16)*(2^16))/1024/1024/1024 = 4GB
Pero como el bus de datos es de 20bits nos limita a 1MB:
(2^20)/1024/1024 = 1MB
NOTA: La dirección de memoria se obtiene mediante una suma y un desplazamiento del segmento .
Con 32bits y 64bits se sigue la misma lógica, el bus de datos es superior al número de bits de la CPU pero la CPU limita el direccionamiento:
(2^32)/1024/1024/1024 = 4GB
(2^64)/1024/1024/1024/1024/1024/1024 = 16 HB