¿Está realmente limitada la capacidad del chip flash a las potencias de 2?

3

Nunca he visto ningún chip flash con capacidad no limitada a la potencia estricta (es decir, no como en los discos duros) de 2. Me pregunto qué impide a los fabricantes crear dichos chips: ¿es por alguna razón de ingeniería, o simplemente por el marketing? ¿O algo más?

Llegué a este pensamiento después de examinar algunas unidades de memoria flash: la memoria flash NAND que hay dentro es, por ejemplo, 8 GiB, y la unidad en sí tiene un tamaño de 8 GB. Parece que la diferencia se usa para compensar los errores que aparecen con bastante frecuencia en las NAND de MLC mediante la sustitución de bloques defectuosos por bloques de repuesto.

Por ejemplo, al insertar una tarjeta SD etiquetada como "512 MB" en mi caja de Linux, aparece el siguiente mensaje:

sd 12:0:0:0: [sdb] 996352 512-byte logical blocks: (510 MB/486 MiB)

No se trata de una sobrecarga de formato ni de partición: el tamaño completo del dispositivo en sí es mucho menor que 512 MiB.

También, soy consciente del espacio fuera de banda (OOB) presente en todos los flashes NAND (MLC). No lo considero como "extra" o algo así porque:

  1. Casi siempre se utiliza para almacenar los códigos ECC y no los datos reales; por lo tanto, la cantidad de información es igual con o sin OOB.
  2. El recuento de páginas y bloques en todo el flash sigue siendo la potencia de 2, y además, la cantidad de bytes en las áreas de datos y OOB de la página por sí sola también es la potencia de 2. Mientras que el último puede estar muy bien justificado al minimizar la sobrecarga de direccionamiento, el primero es desconcertante para mí. Ya tenemos RAS y CAS, con un espacio de direcciones más grande que el otro, y la matriz ya es asimétrica: ¿por qué hacerlo exactamente en el poder de 2?

Entonces, ¿qué impide que un proveedor agregue un poco más de filas o columnas? Estoy más interesado en los flashes NAND, ya que tienen un bus de datos / direcciones de 8 bits unificados, y el número de bits en la dirección no importa (a diferencia de los NOR).

    
pregunta whitequark

4 respuestas

2

La cantidad de silicona requerida para abordar menos de 2 n pero más de 2 n-1 páginas / filas / columnas / celdas / etc es la misma que la cantidad de silicona para abordar exactamente 2 n . Por lo tanto, la eficiencia de uso de silicio es mejor en 2 n .

Además, si pretende juntar varios de ellos en un esquema de acceso paralelo, terminará con huecos si cada chip no aborda 2 n .

Hay poca ventaja en admitir tamaños entre 2 n y 2 n-1 .

Si necesita crear un dispositivo con memoria en el rango 2 n y 2 n-1 , generalmente encontrará que al comprar el 2 n parte es más rentable que comprar la parte 2 n-1 y una parte más pequeña. Los fabricantes tienen el mismo problema al producir matrices de silicona. Sí, podrían hacer uno, pero no aumentaría su balance final.

    
respondido por el Adam Davis
1

En realidad, he visto muchos dispositivos que no solo no son potencias de dos, sino que ni siquiera son múltiplos de la potencia de dos de los bloques de potencia de dos.

A veces, al igual que con los paquetes en dispositivos USB o SD, es fácil asumir que el controlador al que se accede a través de la memoria está reservando espacio para mapear bloques defectuosos, etc.

Pero también he visto flashes de la interfaz SPI donde el tamaño real del bloque nativo no era una potencia de dos, pero en realidad un poco más grande, por ejemplo, el AT45DB161D  tiene 4096 páginas que puede establecer con 512 o 528 bytes de longitud.

    
respondido por el Chris Stratton
1

La palabra es engaño, y también ocurre con los discos duros. Si compra un disco duro de 1TB y parece contener 1 000 000 MB, técnicamente no está estafado, incluso cuando en realidad significó y esperaba 1 048 576 MiB. Darles más del mínimo absoluto les costaría unos centavos extra.

  

Datos para la unidad WD Caviar Blue, pero otros fabricantes manejarán más o menos los mismos números:
  1 TB: 1 953 525 169 sectores (= 71 * 89 * 173 * 1787) = 0.91 TiB
  640 GB: 1 250 263 728 sectores (= 2 \ $ ^ 4 \ $ * 3 \ $ ^ 3 \ $ * 7 * 31 * 13337) = 596 GiB
  500 GB: 976 773 168 sectores (= 2 \ $ ^ 4 \ $ * 3 \ $ ^ 3 \ $ * 7 * 67 * 1607) = 466 GiB

La factorización del número de sectores muestra que no hay lógica, los números se eligen para dar un número redondo en GB, no en GiB.

La ventaja de tener \ $ 2 ^ N \ $ bytes es que obtiene el mayor almacenamiento posible para un ancho de dirección dado de \ $ N \ $ bits. La mayoría de la memoria paralela proporciona \ $ 2 ^ N \ $ bytes debido a esto; los bits adicionales en el ancho de la dirección son caros, ya que necesita paquetes más grandes.

    
respondido por el stevenvh
0

No hay ninguna razón práctica que no pueda hacerse.

La diferencia entre 8 GiB y 8 GB también puede ser una sobrecarga de formato. La lógica de corrección de errores no cuenta en ninguno de los números.

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas