4 MBit != 512 kB?

Ich arbeite mit einem Fujitsu-Mikrocontroller und glaube, ich bin in den folgenden Details etwas eingerostet, deshalb stelle ich diese Frage. Ich habe folgende Spezifikationen:

  • 4 MB Flash-Speicher
  • Eingebautes Produkt: MB90F345E(S), MB90F345CE(S)
  • Volumen: 512 KByte/256 KWörter
  • Sektorkonfiguration: 64K × 6 + 32K × 2 + 16K × 2 + 8K × 4
  • Zugeordnete Bank: F8H an FFH-Bank

Sie scheinen auf magische Weise 12 KB zusätzlichen ROM-Speicher zu erstellen? Welche Macke übersehe ich hier?

512 KByte = 512 * 8 KBit = 4096 KBit = 4 MBit
Googeln: "512 kb to megabit" gibt mir 512 kb = 4,096 Mbits. Und das wird auf 4 Mbits aufgerundet?
Versuchen Sie stattdessen, "512 kib to mibit" zu googeln.
Im technischen Kontext beziehen sich Kbytes und M-Bit normalerweise auf das, was zur Vermeidung von Mehrdeutigkeiten als Kibibytes und Mebibits bezeichnet wird
Beachten Sie auch, dass es in einem technischen Kontext einen sehr großen Unterschied zwischen Bund gibt b. Was der Titel sagt, ist wirklich "4 Megabit != 512 Kilobit?", was natürlich keinen Sinn ergibt. Was Sie wollten 4 Mbit != 512 KB?, ist sinnvoller, je nachdem, ob Sie binäre oder dezimale Präfixe verwenden.
@ njzk2 "Kilobyte" ist bereits mehrdeutig. Deshalb gibt es die binären Präfixe. Daher wäre es am besten, wenn jeder anfangen würde, "kilo- " als Dezimalpräfix gemäß SI zu interpretieren und "kibi-" zu verwenden, wo sie binäres Präfix bedeuten; Nur so kann eine weitere Mehrdeutigkeitseskalation vermieden werden.

Antworten (7)

Wenn Sie sich die Speicherkarte ansehen, gibt es tatsächlich 524.288 Bytes ROM, was 512 KB entspricht (wobei „K“ auf 1024 und nicht auf 1000 verweist) – übrigens, ich habe das bekommen, indem ich die Startadresse 0xF8000 von der Endadresse 0xFFFFFF subtrahiert und addiert habe einer.

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

Das sind 4M (wobei „M“ 1024 * 1024 = 1.048.576 ist, nicht 10 6 = 1.000.000).

Aus dem Kontext geht normalerweise ziemlich klar hervor, was vor sich geht, sodass dies selten zu Verwirrung führt (insbesondere wenn mehr Speicher als erwartet vorhanden zu sein scheint). Die Festplattenkapazität von Verbrauchern ist jedoch ein berüchtigtes Beispiel für die Verwendung von „Marketing“ -Einheiten , die das Produkt besser aussehen lassen günstig um ca. 5-10%.

Bearbeiten: Wie verschiedene Präskriptivisten hier erwähnt haben, gibt es "offizielle" Einheiten wie MiB, die die Mehrdeutigkeit beseitigen sollten, aber da praktisch niemand sie verwendet, denke ich, dass sie in den meisten Fällen wahrscheinlich mehr Verwirrung stiften würden (und offensichtlich fühlten sich die Autoren des Datenblatts dieser Weg). Die Frage ist , was in einem Datenblatt geschrieben steht, und nicht, welche Terminologie Sie verwenden sollten, wenn Sie selbst ein Datenblatt schreiben.

+1, schauen Sie sich immer die Speicherkarte an (oder suchen Sie eine Statistik ohne "k" oder "M"), wenn Sie genau wissen müssen , was los ist (Speicheroptionen sind nicht um 10% voneinander getrennt, sondern um Faktoren von 2). "60k" in vielen Mikros ist nicht 60 * 1024, sondern oft irgendwo zwischen 60000 und 61440, weil ein Teil dieser 1440 von HW-Registern belegt wird.
@NickT Yup, und manchmal gibt es möglicherweise ein "Loch", in dem sich speicherabgebildete E / A, RAM oder etwas anderes befinden.

Die frühen Computeringenieure entschieden sich dafür , SI-Präfixeinheiten zu übernehmen und an ihre Datenzahlen anzupassen. Dies sind die gleichen Präfixe, aber die Zählung erfolgt binär statt metrisch. Da 2 ^ 10 nahe bei 10 ^ 3 liegt, bezieht sich jedes SI-Präfix, das normalerweise einen Betrag um 10 ^ 3 erhöht, stattdessen auf eine Erhöhung von 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%

Diese wurden als Teil der JEDEC-Standards übernommen.

Dies hat eine Reihe von Vorteilen, da viel Arbeit in diesem Bereich in Potenzen von 2 stattfindet. Wie Sie jedoch sehen können, weichen sie von der Metrik ab, und da wir es jetzt mit größeren Speichermengen zu tun haben, weicht der Unterschied zwischen den beiden erheblich ab Problem wurde von IEC und NIST behandelt. Diese unterscheiden die beiden Systeme, indem sie das binäre Präfix ändern:

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

Diese wurden erstmals 1998 standardisiert und 2008 in das Internationale System der Mengen übernommen, aber die Übernahme ist langsam, und es gibt immer noch Unternehmen, die neue Dokumente unter Verwendung des alten Standards erstellen. Wo Unternehmen umgestiegen sind, haben sie festgestellt, dass die Benutzer verwirrt sind und einige zum älteren Stil zurückgekehrt sind.

Unter Verwendung des älteren Standards sind 4 MB also 4 * 2 ^ 20 Bits, was 512 * 2 ^ 10 Bytes entspricht.

Im neueren Standard dargestellt, wäre es stattdessen 4 Mib = 512 kiB, vorausgesetzt, dass „b“ Bits und „B“ Bytes sind.

Danach wurde es 1998 standardisiert.
Es mag ein Standard sein, aber jeder mag es. Wie bereits erwähnt, gibt es viele ältere Dokumentationen, die die Unternehmen theoretisch ändern sollten (Sie können dies mit den Kosten für die Umstellung der USA auf das metrische System vergleichen). Diese Frage und Antworten werden zu einer guten Erinnerung daran, welche Terminologie wir verwenden SOLLTEN.
@glglgl Die IEC und andere haben sie 1998 definiert, aber erst 2008 wurden die IEC-Präfixe in das Internationale Mengensystem aufgenommen. Ich habe die Antwort leicht aktualisiert.

Im Zusammenhang mit Speicherkapazitäten bedeutet MB oft 1024KB (statt 1000K). Sie können MiB verwenden, um Mehrdeutigkeiten zu vermeiden.

Allerdings habe ich gehört, dass einige Festplattenhersteller 1000 verwenden. Es ist manchmal wirklich matschig, sollte aber wirklich 1024 sein.

Die uralten Potenzen von 2 gegen Potenzen von 10 debattieren. Unternehmen haben deswegen Millionen in Klagen verloren. Binäre vs. dezimale Präfixe, die dazu führen, dass Sie 24 Bit pro Kilo verlieren, summieren sich wirklich zu Gigabits und Bytes. Deshalb hat meine 120-GB-Festplatte (Herstellerangabe) nur etwa 115,8 GB (Computeranzeige)

http://en.m.wikipedia.org/wiki/Binary_prefix hat eine vollständige Erläuterung.

Vergessen Sie nicht die alten Arbeitspferde "1,44 MB" Disketten. Das waren 1,44 mal 1000 mal 1024 Bytes (1.474.560 Bytes). Doppelte Verwirrung!

Wenn es um RAM, ROM oder irgendetwas geht, das in irgendeiner Weise mit den Bussen einer CPU verbunden ist:

  • Ein Kilobit sind 1024 Bit.

  • Ein Megabit sind 1024 Kilobit.

  • 4 Megabit sind 4096 Kilobit.

  • 4096 Kilobit sind 4194304 Bit.

  • Ein Byte sind 8 Bit.

  • 4194304 Bit sind 524288 Byte

  • Ein Kilobyte sind 1024 Byte

  • 524288 Byte sind 512 Kilobyte.

Es ist alles wegen 2 n .

Wenn ich "4 Megabit in kbit" google, erhalte ich 4000 Kilobit? Ich denke, diese Wiki-Seite erklärt die Mehrdeutigkeit: en.wikipedia.org/wiki/Binary_prefix
Der Unterschied rührt daher, dass Festplattenhersteller 1000 für Kilo/Mega usw. verwenden (um die Laufwerke größer aussehen zu lassen), während alles andere digitale Speicher 1024 verwendet. Um diese Verwirrung zu bekämpfen, wurde das Mibibyte usw. (Million BInary BYTEs) erfunden.
-1: Genau genommen würde ich nicht so weit sagen, "ein Kilobyte sind 1024 Bytes" - es können auch 1000 Bytes (ISO / IEC80000 ist einer der Kontexte) oder 1024 Bytes (übliche Verwendung, binäre SI ); Daher kann ich dieser Antwort nicht zustimmen, es sei denn, Sie fügen die Informationen aus Ihrem Kommentar (Kibibyte usw.) in die Antwort selbst ein. Außerdem stammt 1000 für Kilo nicht von HD-OEMs (obwohl es für sie am häufigsten vorkommt) - es stammt aus der SI-Präfixtabelle, die mindestens ein halbes Jahrhundert älter ist als die heutigen CS und Computer (ca. 1950-1960).
@vaxquis: Ein halbes Jahrhundert ist eine Untertreibung. „Kilo“ leitet sich vom altgriechischen Wort für Tausend ab, das Jahrtausende vor SI entstand.
@MarcksThomas ein sehr guter Punkt, obwohl ich nur gesagt habe, dass die SI-Präfixtabelle mindestens ein halbes Jahrhundert vor dem aktuellen CS liegt und dass ihre aktuelle metrische Verwendung von SI stammt - dh dass die gesamte Sequenz von SI-Präfixen, die in CS verwendet werden (Kilo, Mega, giga, tera etc.) sind mindestens so alt, nicht dass die einzelnen Vorsilben nicht schon früher verwendet worden wären - du hast natürlich recht, kilo als Wort für Tausend ist zwar Jahrtausende alt, wurde aber nicht als Vorsilbe verwendet vor ca. 1800 - und es ist ein Ausnahmefall, da die meisten anderen Präfixe - megaeinschließlich - viel spätere Erfindungen sind.
@vaxquis SI definiert weder ein Byte noch ein Bit, daher wird die Verwendung von Kilo damit nicht definiert. Es ist stattdessen durch den JEDEC-Standard 100B.01 definiert.
... und die Pedanten schlagen wieder zu ...! Deshalb liebe ich diese Seite so sehr.
@Majenko-notGoogle Eigentlich ist es nur RAM, das in der Vergangenheit mit 2 ^ 10-basierten Präfixen verkauft wurde. Abgesehen von ein paar Ausreißern basierte der physische Speicher traditionell auf 10^3 (und dann gibt es natürlich die seltsamen Dinge wie "1,44 MB"-Disketten, die 1440 KiB waren).
@alle Wen interessiert das? Nichts von diesem Geschwätz hat den geringsten Einfluss auf die Antwort auf die Frage. Wenn Sie diesen ganzen Quatsch weiterführen wollen, tun Sie dies in einer Antwort auf die Frage "Was ist der Unterschied zwischen 1 GB Festplattenspeicher und 1 GB RAM?"
@Ruslan ja, genau, ich bin froh, dass du es bemerkt hast, ich bin heute zu müde, um solche Dinge zu bemerken; das passiert, wenn man nicht dreifach überprüft, was man schreibt ... Ich meinte JEDEC statt SI, im Gegensatz zur IEC-Spezifikation. OTOH, Sie liegen irgendwie falsch, wenn Sie sagen, dass "die Verwendung von Kilo mit ihnen nicht dadurch definiert ist" - IEEE / SI befasst sich damit und sagt (SI 10-1997) "Diese Praxis (2 ^ n-Präfixe) führt häufig zu Verwirrung und ist veraltet."

Leider verwendet die Computerindustrie die Kilo- und Mega-Präfixe uneinheitlich.

Halbleiterspeicher sind in der Regel in Potenzen von zwei Größen erhältlich, da dies die Adresszuordnung einfacher macht. 1024 ist fast 1000, also begannen diejenigen, die mit Halbleiterspeichern arbeiteten, Kilo zu verwenden, um 1024 zu bedeuten. Als die Speichergrößen größer wurden, begannen sie auch, Mega zu verwenden, um 1024 2 = 1048576 Giga zu bedeuten, um 1024 3 = 1073741824 zu bedeuten und so weiter.

Unter diesen Definitionen von Kilobyte und Megabyte stimmt Ihre Herstellerangabe überein. 4 binäre Megabit entsprechen 4096 binären Kilobit entsprechen 512 binären Kilobyte.


Andere Teile der Computerindustrie, insbesondere Festplattenhersteller und Entwickler von Kommunikationsschnittstellen, verwendeten die SI-Präfixe jedoch in ihrer ursprünglichen Bedeutung. Auch Hersteller von festplattenähnlichen Flash-Medien tendierten dazu, dieser Konvention zu folgen.

Einige Teile der Industrie haben die beiden sogar gemischt, zum Beispiel ist eine "1,44-MB-Diskette" tatsächlich 1,44 * 1000 * 1024 = 1474560 Bytes

Die IEC versuchte 1998, das Durcheinander zu beheben, indem sie spezifische Namen und Symbole für die binären Präfixe einführte. Die Namen werden gebildet, indem die ersten beiden Buchstaben des Namens der SI-Einheit genommen und "bi" angehängt werden, also wird Kilo zu Kibi, Mega wird mebi und so weiter. Für die Symbole wird ein „i“ hinzugefügt, sodass k zu ki wird, M zu Mi und so weiter.

Aber nur weil eine Normungsorganisation eine Terminologie einführt, heißt das noch lange nicht, dass sie tatsächlich verwendet wird. Zumindest nach meiner Erfahrung ist es immer noch weitaus üblicher, Kilo, Mega usw. im binären Sinne zu sehen, als Kibi, Mebi usw.

Wie alle anderen bereits erklärt haben, leiden Sie wahrscheinlich unter einem ein halbes Jahrhundert alten Hack von IEC et al., der weiterhin massive Verwirrung stiftet. Anstatt eine neue Einheit derselben Dimensionalität (oder ein Präfix) einzuführen, haben sie die Bedeutung einer anderen weit verbreiteten Einheit (Präfix) neu definiert , ohne klar festzulegen, welche Definition in welchem ​​Kontext gilt.

Im Falle Ihres spezifischen Problems überprüfen Sie einfach die Speicherzuordnungen wie erwähnt.


Ich fordere Sie jedoch dringend auf, ein weitaus allgemeineres Problem zu erkennen.
Das Problem ist, dass das Sagen 123 kBauf der Empfängerseite nicht zuverlässig zu einem glasklaren Verständnis führt.

Dies ist ein linguistisches Erbe und ein wesentlicher API-Mangel des CS-Vokabulars.

Was können wir tun, um das zu lösen?

Nun, raten Sie mal: Verwenden Sie binäre Präfixe .
Bedeutung von 123 kiBist 100% zuverlässig glasklar.
Die Bedeutung von 123 kiB (126.0 kB)ist sogar noch besser.
Sie müssen kein CS -Historiker sein, nur um jemandem ein paar große Zahlen zu vermitteln.
Niemand kümmert sich um Unternehmen, Festplatten, Standardisierungsgremien, Abwertungserklärungen und so weiter und so weiter.
Es lohnt sich nicht. Verwenden Sie einfach die binären Mebibytes. Sie sind eindeutig.

Es gibt Leute, die haben 2002 erfolgreich gesagt 32 kibihertz. Sie wurden gehört. Erstaunlich bequem, oder?

Wenn Sie sich schließlich weigern, binäre Präfixe zu akzeptieren, verschlimmern Sie das Problem.
Die einzige Strategie, mit der wir alle kooperieren können, um diesen verdammten Sprachfehler zu deeskalieren und zu beheben, besteht darin, Mehrdeutigkeiten abzulehnen und auf Kibi ... Sekunden (warum nicht?) Und andere Zweieinheiten umzuschalten.

Wow! Ich muss daran denken, mehr Kibihertz zu verwenden!