4 MBit != 512 kB?

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 bits
  • Producto integrado: MB90F345E(S), MB90F345CE(S)
  • volumen: 512 Kbytes/256 Kpalabras
  • Configuración de sector: 64K × 6 + 32K × 2 + 16K × 2 + 8K × 4
  • Banco asignado: F8H a banco FFH

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

512 Kbytes = 512 * 8 Kbits = 4096 Kbits = 4 Mbits
Googleando: "512 kb a megabit" me da 512 kb = 4.096 Mbits. ¿Y eso se redondea a 4 Mbits?
Intente buscar en Google "512 kib to mibit" en su lugar.
En un contexto técnico, Kbytes y M-bit generalmente se refieren a lo que se conoce como Kibibytes y Mebibits para evitar la ambigüedad.
También tenga en cuenta que en un contexto técnico, hay una diferencia muy grande entre By b. Lo que dice el título es en realidad "4 megabit != 512 kilobit?", lo que por supuesto no tiene sentido. Lo que quería es 4 Mbit != 512 KB?cuál tiene más sentido, dependiendo de si está usando prefijos binarios o decimales.
@ njzk2 "kilobyte" ya es ambiguo. Por eso existen los prefijos binarios. Por lo tanto, sería mejor si todos comenzaran a interpretar "kilo-" como prefijo decimal de acuerdo con SI, y usaran "kibi-" donde significan prefijo binario; esta es la única forma de evitar una mayor escalada de ambigüedad.

Respuestas (7)

Si observa el mapa de memoria, en realidad hay 524,288 bytes de ROM, que son 512K (donde 'K' se refiere a 1024, no a 1000). Por cierto, obtuve eso al restar la dirección de inicio 0xF8000 de la dirección final 0xFFFFFF y agregar 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 10 6 = 1.000.000).

Por lo general, es bastante claro lo que sucede en el contexto, por lo que esto rara vez causa confusión (especialmente cuando parece haber más memoria de la esperada), 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 de 5-10%.

Editar: como varios prescriptivistas han mencionado aquí, hay unidades "oficiales" como MiB que deberían eliminar la ambigüedad, sin embargo, dado que prácticamente nadie las usa, creo que probablemente causarían 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 es sobre 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.

+1, mire siempre el mapa de memoria (o encuentre una estadística sin "k" o "M") si necesita saber exactamente qué está pasando (las opciones de memoria no tienen un tamaño de 10%, sino más bien por factores de 2). "60k" en muchos micros no es 60 * 1024, sino que a menudo está entre 60000 y 61440 porque parte de ese 1440 lo ocupan los registros HW.
@NickT Sí, y a veces puede haber un "agujero" donde hay E/S mapeadas en memoria, RAM u otra cosa.

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 contando usando binario en lugar de métrico. Dado que 2 ^ 10 está cerca de 10 ^ 3, entonces cada prefijo SI que normalmente aumenta una cantidad en 10 ^ 3 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 ventajas, ya que gran parte del trabajo en este campo se realiza en potencias de 2. Sin embargo, como puede ver, divergen de la métrica y, dado que ahora estamos tratando con grandes cantidades de almacenamiento donde la diferencia entre las dos diverge significativamente, la 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 estándar anterior. Cuando las empresas han cambiado, han encontrado a los usuarios confundidos y algunos han vuelto al estilo anterior.

Por lo tanto, utilizando el estándar anterior, 4 Mb son 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.
Puede que sea un estándar, pero a todo el mundo le gusta. Como se señaló, hay mucha documentación anterior que, en teoría, las empresas deberían cambiar (se 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 DEBEMOS utilizar.
@glglgl 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.

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

Dicho esto, he oído que algunos fabricantes de discos duros usan 1000. A veces es muy complicado, pero en realidad debería ser 1024.

El antiguo debate de poderes de 2 vs poderes de 10. Las empresas han perdido millones en juicios por ello. Los prefijos binarios frente a los decimales que hacen que pierdas 24 bits por kilo realmente se suman en gigabits y bytes. Es por eso que mi disco duro de 120 gb (clasificació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.

No se olvide de los viejos disquetes de "1,44 MB". Que eran 1,44 veces 1000 veces 1024 bytes (1 474 560 bytes). ¡Doble confusión!

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

  • Un kilobit son 1024 bits.

  • Un megabit son 1024 kilobits.

  • 4 megabits son 4096 kilobits.

  • 4096 kilobits son 4194304 bits.

  • Un byte son 8 bits.

  • 4194304 bits son 524288 bytes

  • un kilobyte son 1024 bytes

  • 524288 bytes son 512 kilobytes.

todo es por 2 norte .

¿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
La diferencia se debe a que los fabricantes de discos duros usan 1000 para kilo/mega, etc. (para que las unidades se vean más grandes), mientras que todo lo demás en almacenamiento digital usa 1024. Es puramente para combatir esta confusión que se inventó el Mibibyte, etc. (MIllones de BYTE BINARIOS).
-1: estrictamente hablando, no diría tan lejos como para decir "un kilobyte son 1024 bytes"; también pueden ser 1000 bytes (ISO/IEC80000 es uno de los contextos) o 1024 bytes (uso común, binario SI ); 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 proviene de HD OEM (aunque es más común para ellos), sino de la tabla de prefijos SI, que es anterior a las computadoras y CS actuales en al menos medio siglo (ca. 1950-1960)
@vaxquis: Medio siglo es quedarse corto. 'Kilo' deriva de la palabra griega antigua para mil, anterior al SI por milenios.
@MarcksThomas un muy buen punto, aunque solo dije que la tabla de prefijos SI es anterior a CS actual en al menos medio siglo y que su uso métrico actual proviene de SI, es decir, que toda la secuencia de prefijos SI utilizados en CS (kilo, mega, giga, tera, etc.) son al menos así de antiguos, no es que los prefijos individuales no se usaran antes; por supuesto, tiene razón en que kilo como palabra para mil tiene milenios de antigüedad, pero no se usó como prefijo antes de ca. 1800, y es un caso excepcional, ya que la mayoría de los otros prefijos, megaincluidos, son invenciones muy posteriores.
@vaxquis SI no define un byte ni un bit, por lo que no define el uso de kilo con ellos. En cambio, está definido por el estándar JEDEC 100B.01.
... ¡Y los pedantes atacan de nuevo...! Es por eso que amo tanto este sitio.
@ Majenko-notGoogle En realidad, solo la RAM se vendió históricamente con prefijos basados ​​​​en 2 ^ 10. Aparte de un par de valores atípicos, el almacenamiento físico se ha basado tradicionalmente en 10 ^ 3 (y luego, por supuesto, están las cosas extrañas como los disquetes de "1.44 MB" que eran 1440 KiB).
@todos ¿A quién le importa? Ninguna de estas tonterías tiene la más mínima relación con la respuesta a la pregunta. Si desea continuar con toda esta basura, hágalo en una respuesta a la pregunta "¿cuál es la diferencia entre 1 GB de espacio en el disco duro y 1 GB de RAM?"
@Ruslan sí, exactamente, me alegro de que lo hayas notado, estoy demasiado cansado hoy para notar cosas así; eso es lo que sucede cuando uno no verifica tres veces lo que está escribiendo ... Me refiero a JEDEC en lugar de SI, en contraste con la especificación IEC. OTOH, está un poco equivocado al decir que "el uso de kilo con ellos no está definido por él": IEEE / SI se preocupa por eso, diciendo (SI 10-1997) "Esta práctica (2 ^ n prefijos) frecuentemente conduce a confusión y está en desuso".

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

La memoria de semiconductores tiende a tener una potencia de dos tamaños, porque simplifica el mapeo 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 aumentaba el tamaño de la memoria, 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 sus significados originales. Los fabricantes de medios flash en forma de disco también tendían 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 trató de arreglar el lío en 1998 introduciendo 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", por lo que kilo se convierte en kibi, mega se convierte en mebi y así sucesivamente. Para los símbolos, se agrega una "i", de modo que k se convierte en ki, M se convierte en Mi y así sucesivamente.

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

Como todos los demás ya han explicado, es probable que estés sufriendo un hackeo de hace medio siglo por parte de IEC et al, que continúa generando una gran confusión. En lugar de introducir una nueva unidad de la misma dimensionalidad (o un prefijo), redefinieron el significado de otra unidad ampliamente utilizada (prefijo), 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 decir 123 kBno conduce de forma fiable a una comprensión clara por parte del destinatario.

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

¿Qué podemos hacer para solucionar eso?

Bueno, adivina qué: usa prefijos binarios .
El significado de 123 kiBes 100% confiablemente claro.
El significado de 123 kiB (126.0 kB)es aún mejor.
No es necesario ser un historiador de CS 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 inequívocos .

Hay gente que lo ha estado diciendo con éxito 32 kibihertzen el 2002. Se les ha escuchado. Sorprendentemente conveniente, ¿eh?

Finalmente, si se niega a aceptar los prefijos binarios, empeora 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 unidades bi.

¡Guau! ¡ Debo recordar usar más kibihercios!