4 MBit! = 512 kB?

9

Estoy trabajando con un microcontrolador Fujitsu y creo que estoy un poco oxidado con los siguientes detalles, por eso hago esta pregunta. Tengo las siguientes especificaciones:

  • memoria flash de 4M-bit
  • Producto incorporado: MB90F345E (S), MB90F345CE (S)
  • volumen: 512 Kbytes / 256 Kwords
  • Configuración del sector: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
  • Banco asignado: F8H al banco FFH

¿Parecen crear mágicamente 12K bytes de memoria ROM adicional? ¿Qué peculiaridad me estoy perdiendo aquí?

    
pregunta Evert

6 respuestas

16

Si miras el mapa de memoria, en realidad hay 524,288 bytes de ROM, que es 512K (donde 'K' se refiere a 1024, no a 1000) - por cierto, lo obtuve al restar la dirección de inicio 0xF8000 de la dirección final 0xFFFFFF y añadiendo uno.

Esoes4M(donde'M'es1024*1024=1,048,576,no\$10^6\$=1,000,000).

Porlogeneral,quedabastanteclaroloquesucededesdeelcontexto,porloqueestoraravezcausaconfusión(especialmentecuandoparecehabermásmemoriadelaqueesperaba),sinembargo,lacapacidaddelaunidaddediscodelconsumidoresunejemplonotoriodeusode'marketing'units que hacen que el producto se vea más favorable en alrededor del 5-10%.

Edit: Como han mencionado varios prescriptivistas, hay unidades "oficiales" como MiB que deberían deshacerse de la ambigüedad, sin embargo, dado que casi nadie las usa, creo que probablemente causen más confusión en la mayoría de los casos (y obviamente los datos los autores de la hoja sintieron esa manera). La pregunta es acerca de interpretar correctamente lo que se escribió en una hoja de datos, no la terminología que debe usar al escribir una hoja de datos.

    
respondido por el Spehro Pefhany
13

Los primeros ingenieros informáticos eligieron adoptar y adaptar las unidades de prefijo SI a sus conteos de datos. Estos son los mismos prefijos, pero contando usando binario en lugar de métrico. Como 2 ^ 10 está cerca de 10 ^ 3, entonces cada prefijo SI normalmente aumenta una cantidad en 10 ^ 3 en lugar de referirse a un aumento de 2 ^ 10:

Prefix  Metric prefix        Binary prefix       Difference
k kilo  10^3=1,000           2^10=1,024           2.4%
M mega  10^6=1,000,000       2^20=1,048,576       4.9%
G giga  10^9=1,000,000,000   2^30=1,073,741,824   7.4%
T tera  10^12                2^40                10.0%
P peta  10^15                2^50                12.6%

Estos se adoptaron como parte de las normas JEDEC.

Esto tiene una serie de beneficios, ya que una gran cantidad de trabajo en este campo ocurre en potencias de 2. Sin embargo, como puede ver, difieren de la métrica, y ya que ahora estamos tratando con grandes cantidades de almacenamiento, donde la diferencia entre los dos divergen significativamente el problema ha sido abordado por IEC y NIST. Estos diferencian los dos sistemas cambiando el prefijo binario:

Prefix  Binary prefix
ki kibi  2^10
Mi mebi  2^20
Gi gibi  2^30
Ti tebi  2^40
Pi pebi  2^50

Estos se estandarizaron por primera vez en 1998 y se adoptaron en el Sistema Internacional de Cantidades en 2008, pero la adopción es lenta y todavía hay empresas que crean nuevos documentos utilizando el estándar anterior. Donde las compañías se han cambiado, han encontrado usuarios confundidos y algunos han vuelto al estilo anterior.

Por lo tanto, utilizando el estándar anterior, 4Mb es 4 * 2 ^ 20 bits, lo que equivale a 512 * 2 ^ 10 bytes.

Representado en el estándar más nuevo, en cambio sería 4Mib = 512 kiB, asumiendo que 'b' es bits y 'B' es bytes.

    
respondido por el Adam Davis
10

En el contexto de las capacidades de memoria, MB a menudo significa 1024 KB (en lugar de 1000 KB). Puedes usar MiB para evitar ambigüedades.

    
respondido por el Curd
1

Los viejos poderes de 2 vs poderes de 10 debate. Las empresas han perdido millones en juicios por ello. Los prefijos binarios y decimales que hacen que pierdas 24 bits por kilo realmente se acumulan en bits y bytes de giga. Es por eso que mi disco duro de 120 gb (calificación del fabricante) solo tiene 115.8 gb o menos (pantalla de computadora)

enlace tiene una explicación completa.

    
respondido por el Passerby
1

Cuando se habla de RAM, ROM o cualquier cosa conectada de alguna manera a los buses de una CPU:

  • Un kilobit es de 1024 bits.

  • Un megabit es 1024 kilobits.

  • 4 megabits es 4096 kilobits.

  • 4096 kilobits es 4194304 bits.

  • Un byte es de 8 bits.

  • 4194304 bits es 524288 bytes

  • Un kilobyte es 1024 bytes

  • 524288 bytes es de 512 kilobytes.

Todo se debe a \ $ 2 ^ n \ $.

    
respondido por el Majenko
0

Como todos los demás ya han explicado, es probable que estés sufriendo de hack por IEC et al, que continúa generando confusión masiva. En lugar de introducir una nueva unidad de la misma dimensionalidad (o prefijo), redefinieron el significado de otra unidad ampliamente utilizada (prefijo), al mismo tiempo que no establecen claramente qué definición se aplica en qué contexto .

En el caso de su problema específico, simplemente inspeccione los mapas de memoria como se mencionó.

Sin embargo, les insto a que reconozcan un problema mucho más general.
El problema es que decir que 123 kB no conduce de manera confiable a una comprensión clara en el lado del destinatario.

Este es un legado lingüístico y una importante deficiencia de API del vocabulario de CS.

¿Qué podemos hacer nosotros para resolver eso?

Bueno, adivina qué: usa prefijos binarios .
El significado de 123 kiB es 100% de forma fiable, claro como el cristal.
El significado de 123 kiB (126.0 kB) es aún mejor.
No tienes que ser un historiador de la sociedad civil solo para transmitir algunos números importantes a alguien.
A nadie le importan las empresas, los discos duros, los organismos de estandarización, las declaraciones de desaprobación, etc., etc. Que no vale la pena. Solo usa los mebibytes binarios. son no ambiguos.

Hay personas que han dicho con éxito 32 kibihertz en 2002. Han sido escuchadas. Increíblemente conveniente, ¿eh?

Finalmente, si se niega a adoptar prefijos binarios, empeorará el problema.
La única estrategia con la que todos podemos cooperar para desescalar y corregir ese maldito error lingüístico es despreciar la ambigüedad y cambiar a kibi ... segundos (¿por qué no?) Y otras unidades bilaterales.

    
respondido por el ulidtko

Lea otras preguntas en las etiquetas