Esta pagina se ve mejor con JavaScript habilitado

Límite de memoria direccionable según los bits del microprocesador

 ·  🎃 kr0m

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
Si te ha gustado el artículo puedes invitarme a un RedBull aquí