¿Por qué los discos duros no están limitados a tamaños de una potencia de 2?

0

Por ejemplo, los discos duros pueden tener un tamaño de 320 GB (entre 2 ^ 8 = 256 y 2 ^ 9 = 512), mientras que la memoria parece estar limitada a tamaños de potencia de 2.

    
pregunta Zachary Keener

3 respuestas

2

La respuesta a esto está insinuada en un pregunta similar en Superusuario .

En resumen:

  • Los módulos DIMM de memoria se conectan directamente a la CPU.
  • Por lo general, hay varios módulos de memoria (pero solo puede haber uno).
  • Los módulos múltiples se combinan para crear un espacio de dirección lineal, por ejemplo, 0-8GB.
  • El procesador accede a la memoria directamente, que tiene un hardware especial para acelerar el acceso.

Por lo tanto, es ventajoso vincular el acceso a la memoria con un hardware dedicado que puede cambiar rápidamente entre varios módulos. Al usar potencias de dos es posible construir circuitos dedicados de la manera más fácil.

En contraste:

  • Los discos duros no se conectan directamente a la CPU.
  • Los volúmenes de disco duro no suelen tratarse directamente. Hay un sistema de archivos y tal vez otras abstracciones lógicas como LVM, RAID, etc.
  • Incluso en las configuraciones donde se usan múltiples unidades (por ejemplo, RAID seccionado), nunca se lee "off" al final de un disco y en otro. Las unidades múltiples no se combinan en un espacio de dirección lineal.

Por lo tanto, tiene poco sentido vincular los tamaños de disco duro a una potencia de dos. El acceso al hardware en bruto ya se ha reducido ligeramente debido a muchos otros factores, la creación de un hardware sofisticado optimizado a una potencia de dos no va a ayudar.

    
respondido por el David
1

Los discos duros consisten en placas, cada una con pistas circulares, cada una llena de sectores. La cantidad de pistas está limitada por el radio de la unidad, la cantidad de placas está limitada por la altura de la unidad y la cantidad de sectores en la pista está limitada por la cantidad de escritura y lectura confiables en dicho tamaño. (Más o menos, ahora es mucho más complicado, pero a quién le importa).

Cualquiera de los anteriores no está relacionado con la potencia de dos, por lo que el resultado de la multiplicación generalmente tampoco es una potencia de dos.

En cuanto a los recuerdos, tampoco están limitados a la potencia de dos, sino que, por lo general, se producen de tal manera que la capacidad es la potencia. Está relacionado con el hecho de que tiene que abordar la memoria por medio de los carriles de memoria (que pueden estar activados o desactivados), por lo que los límites para la memoria se establecieron en el número de cables antes, y con los protocolos más nuevos todavía está relacionado con la longitud de la dirección posible, que es la potencia de dos, ya que es un número binario. La memoria en sí misma no puede superar el límite, pero puede ser más pequeña. La principal restricción aquí es la cantidad de silicio que está dispuesto a usar y la buena tecnología que tiene. Como internamente, también haría una gran selección en función de la potencia de dos, tiene sentido utilizar un número "redondeado" - una potencia de dos - para utilizar todas las puertas de manera óptima y no tener problemas de alineación y detección, si la dirección está o no está dentro del rango alcanzable - si la dirección no es más larga que su bus interno (que tiene una potencia de dos), entonces se ajusta, si es más larga, está fuera - lógica totalmente simple y muchas veces también es imposible por construcción Dirección más, que existe dentro.

Como la silicona es barata (relativamente) y la complejidad aumenta con los buses más anchos principalmente, es mejor usar la potencia de dos como tamaño de memoria que cualquier otro número. Así que casi cualquier fabricante hace eso.

También para programas / OS / lo que sea más fácil de usar, la memoria va de cero sin espacios a un múltiplo de potencia de dos (en realidad, a pequeños kilobytes, megabytes, gigabytes, etc.).

    
respondido por el gilhad
0

Las unidades de disco tienen datos en serie en los medios en movimiento, y no hay ningún requisito en el acceso a datos en serie para que el inicio y la parada de los datos sean alcanzados recuento de muertos Por lo tanto, no es necesario saber la dirección de antemano, solo saber cómo reconocerlo cuando lo pase (después de elegir el derecho pista en el disco, de todos modos). Instrucciones para encontrar datos en un disco duro son algo así como 'mira en la bandeja cuatro, la pista 220 de la centrar, y encontrar el sector etiquetado '0x333'.

Además de conocer un disco de otro, un número limitado de bits para seleccionar el disco y la pista (son direcciones 'cilíndricas'), y otro número limitado de bits para encontrar el sector, su direccionamiento es de forma libre. Nada se pierde si un sector o bloque de pruebas es malo, uno solo puede mover el Las etiquetas de sector alrededor de un buen lugar en el disco.

Para el acceso aleatorio (RAM), sin embargo, es un imperativo de programación y hardware que algún formato de dirección sea presentado inmediatamente por la CPU y reconocido por el banco de memoria RAM, y la celda dentro de ese banco, y Hay que hacerlo en HARDWARE para la velocidad. Por lo tanto, las CPU de 64 bits piensan algo considerable La porción del espacio de direcciones es su almacenamiento de trabajo contiguo. Todo tiene que estar allí, reportando datos (o aceptando datos escritos) con retraso mínimo El controlador de memoria pobre tiene que saber cómo hacer un sólido Muro de datos fuera de los 'ladrillos' de almacenamiento contiguo de sus módulos DIMM. Hace esto porque todos los módulos DIMM vienen en tamaños estandarizados.

La limitación de potencia de 2 en el tamaño de los módulos de memoria significa que la memoria el hardware del controlador puede reasignar fácilmente el direccionamiento de una mezcla de módulos en una Región de direcciones físicas contiguas en el espacio de direcciones de memoria de 64 bits.

    
respondido por el Whit3rd

Lea otras preguntas en las etiquetas