Cuando ejecuta un programa en una CPU, accede a la memoria cargando valores de la memoria en los registros de la CPU, realizando operaciones en ellos y escribiendo valores de registro en la memoria. A nivel de hardware, la memoria es direccionable por bytes, lo que significa que la unidad de almacenamiento más pequeña es un byte. Puede pensar en la memoria como una tabla de bytes, con direcciones que comienzan de 0 a N-1, donde N es el tamaño de la memoria en bytes.
La RAM es típicamente un conjunto de chips separados de la CPU. Hay un conjunto de pines en el chip de memoria llamado “dirección” y otro conjunto de pines llamados “datos”. Cada uno de estos pines corresponde a un bit: lleva un alto voltaje o un bajo voltaje, con uno correspondiente al binario “1” y el otro al binario “0”. Así que efectivamente, la dirección (así como los valores de datos) se representan como un número binario.
Entonces, si tiene, por ejemplo, 20 pines de dirección, representan un número binario de 20 bits, cuyo valor puede variar de todos ceros (dirección = 0x0) a todos (dirección = 0xfffff o 2 ^ 20-1) . Por lo tanto, puede abordar 2 ^ 20 bytes. La suposición más simple es que cada una de esas direcciones es válida y corresponde a un byte almacenado en la memoria.
Si tuviera que restringir el tamaño de la memoria a un número redondo decimal (digamos 1000000), entonces las direcciones más allá de eso, 1000000 a 1048575, serán direccionables utilizando los pines, pero no válidos para el acceso. Esto requeriría una lógica adicional en el chip de memoria para detectar y rechazar. Además, el controlador de memoria (lógica que se encuentra entre la CPU y la memoria, y que con frecuencia maneja múltiples chips de memoria) también necesitaría una lógica más complicada para asignar direcciones a los chips de memoria correctos. Esto agrega costo y complejidad sin ningún beneficio real.
- ¿Qué es xyz si a a la potencia x = b a la potencia y = c a la potencia z donde abc = 1?
- ¿Puedes comparar Ecole Polytechnique, ENS Lyon y EPFL de una manera satisfactoria? En materias como lógica, álgebra e informática, ¿cuál es mejor para un doctorado en los Estados Unidos o el Reino Unido?
- ¿Qué visualización geométrica utiliza intuitivamente para cada uno de los 24 enteros más bajos?
- Cómo encontrar [matemáticas] \ sum_ {x = 1} ^ \ infty a ^ {x ^ {b}} [/ matemáticas] para 0 <a <1 y b real
- ¿Cómo escribirías una expresión algebraica para resolver este problema rápidamente?
Es por eso que las direcciones de memoria tienden a ser números binarios redondos en lugar de números decimales redondos.
Una excepción a esta convención es el almacenamiento, en particular los discos duros. Dado que los discos duros son mucho, mucho más lentos que la memoria, pueden permitirse una lógica de cálculo de direcciones bastante compleja, con el resultado de que los tamaños de los discos duros generalmente no son números redondos binarios. Sin embargo, en lugar de decir mil millones de bytes o un billón de bytes, los proveedores tienden a usar gigabytes o terabytes, lo cual es confuso porque un disco duro de terabyte tiene menos bytes que un terabyte de RAM.