4 MBit! = 512 kB?


8

Estoy trabajando con un microcontrolador Fujitsu y creo que estoy un poco oxidado con los siguientes detalles, por eso estoy haciendo 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: banco F8H a FFH

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


77
512 Kbytes = 512 * 8 Kbits = 4096 Kbits = 4 Mbits
John Dvorak

Google: "512 kb a megabit" me da 512 kb = 4.096 Mbits. ¿Y eso se está redondeando a 4 Mbits?
Evert

44
Intenta buscar en Google "512 kib to mibit".
fgb

3
En el contexto técnico, Kbytes y M-bit generalmente se refieren a lo que es evitar la ambigüedad referida como Kibibytes y Mebibits
njzk2

3
También tenga en cuenta que en un contexto técnico, hay una gran diferencia entre By b. Lo que dice el título es realmente "4 megabit! = 512 kilobit?", Lo que por supuesto no tiene sentido. Lo que quería es lo 4 Mbit != 512 KB?que tiene más sentido, dependiendo de si está utilizando prefijos binarios o decimales.
un CVn

Respuestas:


16

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

http://pdf1.alldatasheet.com/datasheet-pdf/view/202599/FUJITSU/MB90F345CE/+Q035-AVDyppuuX+SHGNxD.hOS+/datasheet.pdf

Eso es 4M (donde 'M' es 1024 * 1024 = 1,048,576, no 106 = 1,000,000).

Por lo general, está bastante claro lo que sucede desde el contexto, por lo que esto rara vez causa confusión (especialmente cuando parece haber más memoria de la que esperaba), sin embargo, la capacidad de la unidad de disco del consumidor es un ejemplo notorio del uso de unidades de 'marketing' que hacen que el producto se vea más favorable en alrededor del 5-10%.

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


2
+1, siempre mire el mapa de memoria (o encuentre una estadística sin "k" o "M") si necesita saber exactamente qué está sucediendo (las opciones de memoria no están separadas por un 10%, sino por factores de 2). "60k" en muchos micros no es 60 * 1024, pero a menudo en algún lugar entre 60000 y 61440 porque parte de ese 1440 está ocupado por registros HW.
Nick T

@NickT Sí, y a veces puede haber un "agujero" donde hay E / S mapeadas en memoria, RAM u otra cosa.
Spehro Pefhany

14

Los primeros ingenieros informáticos optaron por adoptar y adaptar las unidades de prefijo SI a sus recuentos de datos. Estos son los mismos prefijos, pero cuentan 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 cambio, se refiere 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 fueron adoptados como parte de los estándares JEDEC.

Esto tiene una serie de beneficios, ya que mucho trabajo en este campo ocurre en potencias de 2. Sin embargo, como puede ver, difieren de la métrica, y dado que ahora estamos tratando con mayores cantidades de almacenamiento donde la diferencia entre los dos diverge significativamente El problema ha sido tratado 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 antiguo estándar. Donde las empresas 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, sería 4Mib = 512 kiB, suponiendo que 'b' son bits y 'B' son bytes.


Según esto , se estandarizó en 1998.
glglgl

1
Puede ser un estándar, pero a todos les gusta. Como se señaló, hay mucha documentación anterior que, en teoría, las compañías deberían cambiar (podría comparar esto con el costo de la conversión de EE. UU. Al sistema métrico). Esta pregunta y sus respuestas se convierten en un buen recordatorio de la terminología que DEBERÍAMOS usar.
Alan Campbell

@glglgl El IEC y otros los definieron en 1998, pero no fue hasta 2008 que los prefijos IEC se incorporaron al Sistema Internacional de Cantidades. He actualizado la respuesta ligeramente.
Adam Davis

10

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


Dicho esto, escuché que algunos fabricantes de discos duros usan 1000. A veces es muy
confuso,

1

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

http://en.m.wikipedia.org/wiki/Binary_prefix tiene una explicación completa.


2
No olvide los viejos disquetes "1.44 MB" del caballo de batalla. Que eran 1,44 veces 1000 veces 1024 bytes (1.474.560 bytes). Doble confusión!
un CVn

1

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

  • Un kilobit es 1024 bits.

  • Un megabit es 1024 kilobits.

  • 4 megabits son 4096 kilobits.

  • 4096 kilobits son 4194304 bits.

  • Un byte es de 8 bits.

  • 4194304 bits son 524288 bytes

  • Un kilobyte es 1024 bytes

  • 524288 bytes son 512 kilobytes.

Todo es por 2n.


2
Buscar en Google "4 megabits a kbit" me da 4000 kilobits? Creo que esta página wiki explica la ambigüedad: en.wikipedia.org/wiki/Binary_prefix
Evert

55
La diferencia radica en que los fabricantes de discos duros usan 1000 por kilo / mega, etc. (para que las unidades se vean más grandes), mientras que todo lo demás en cuanto a almacenamiento digital usa 1024. Es solo para combatir esta confusión que se inventó el Mibibyte, etc. (MIllion BInary BYTEs).
Majenko

2
-1: estrictamente hablando, no diría que "un kilobyte es 1024 bytes", también puede ser 1000 bytes (ISO / IEC80000 es uno de los contextos) o 1024 bytes (uso común, SI binario ); como tal, no puedo estar de acuerdo con esta respuesta a menos que incluya la información de su comentario (kibibyte, etc.) en la respuesta misma. Además, 1000 por kilo no es de OEM de HD (aunque es más común para ellos): es de la tabla de prefijos SI, que precede a las computadoras y las computadoras actuales en al menos medio siglo (ca. 1950-1960)

3
@vaxquis: Medio siglo es insuficiente. 'Kilo' deriva de la palabra griega antigua para mil, precediendo a SI por milenios.
Marca Thomas el

3
@vaxquis SI no define un byte ni un bit, por lo tanto, el uso de kilo con ellos no está definido por él. En cambio, está definido por el Estándar JEDEC 100B.01.
Ruslan

1

Desafortunadamente, la industria informática usa los prefijos kilo y mega de manera inconsistente.

La memoria de semiconductores tiende a tener dos tamaños, porque simplifica la asignación de direcciones. 1024 está cerca de 1000, por lo que aquellos que trabajan con memoria de semiconductores comenzaron a usar kilo para significar 1024. A medida que los tamaños de memoria aumentaron , también comenzaron a usar mega para significar 1024 2 = 1048576 giga para significar 1024 3 = 1073741824 y así sucesivamente.

Bajo estas definiciones de kilobyte y megabyte, la declaración de su fabricante coincide. 4 megabits binarios equivalen a 4096 kilobits binarios equivalen a 512 kilobytes binarios.


Sin embargo, otras partes de la industria informática, en particular los fabricantes de discos duros y los diseñadores de interfaces de comunicación, utilizaron los prefijos SI en su significado original. Los fabricantes de medios flash en forma de disco también tienden a seguir esta convención.

Algunas partes de la industria incluso mezclaron los dos, por ejemplo, un "disquete de 1,44 MB" es en realidad 1,44 * 1000 * 1024 = 1474560 bytes

El IEC intentó arreglar el desastre en 1998 mediante la introducción de nombres y simbología específicos para los prefijos binarios, los nombres se forman tomando las dos primeras letras del nombre de la unidad SI y agregando "bi", entonces kilo se convierte en kibi, mega se convierte en Mebi y demás. Para los símbolos se agrega una "i" para que k se convierta en ki, M se convierta en Mi y así sucesivamente.

Sin embargo, el hecho de que una organización de estándares introduzca terminología no significa que la gente realmente lo use. Al menos en mi experiencia, todavía es mucho más común ver kilo, mega etc. utilizado en sentido binario que ver kibi, mebi, etc.


1

Como todo el mundo ya se ha explicado, es probable que sufren de un medio siglo de edad, corte por la CEI y otros, que sigue generando confusión masiva. En lugar de introducir una nueva unidad de la misma dimensionalidad (o un prefijo), redefinieron el significado de otra unidad (prefijo) ampliamente utilizada, al mismo tiempo que no pudieron establecer claramente qué definición se aplica en qué contexto.

En 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 decir123 kB no conduce de manera confiable a una comprensión clara del lado del receptor.

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

Que podemos hacer para resolver eso?

Bueno, adivina qué: usa prefijos binarios .
El significado de 123 kiBes 100% confiablemente claro como el cristal.
El significado de 123 kiB (126.0 kB)es aún mejor.
No tienes que ser un historiador de CS solo para transmitir grandes números a alguien.
A nadie le importan las compañías, 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. No son ambiguos.

Hay personas que han estado diciendo con éxito32 kibihertz en 2002. Se les ha escuchado. Increíblemente conveniente, ¿eh?

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


1
¡Guauu! ¡ Debo recordar usar kibihertz más!
tubería
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.