4 MBit! = 512 kB?

8

Ich arbeite mit einem Fujitsu-Mikrocontroller und denke, dass ich bei den folgenden Details etwas verrostet bin. Deshalb stelle ich diese Frage. Ich habe die folgenden Spezifikationen:

  • 4M-Bit-Flash-Speicher
  • Eingebautes Produkt: MB90F345E (S), MB90F345CE (S)
  • Volumen: 512 KByte / 256 KByte
  • 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 Eigenart vermisse ich hier?

Evert
quelle
7
512 KByte = 512 * 8 KBit = 4096 KBit = 4 MBit
John Dvorak
Googeln: "512 kb bis Megabit" gibt mir 512 kb = 4,096 Mbit. Und das wird auf 4 Mbit gerundet?
Evert
4
Versuchen Sie stattdessen, "512 kib to mibit" zu googeln.
FGB
3
Im technischen Kontext beziehen sich Kbytes und M-Bit normalerweise auf das, was zur Vermeidung von Mehrdeutigkeiten bezeichnet wird, die als Kibibytes und Mebibits bezeichnet werden
njzk2
3
Beachten Sie auch, dass es im 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, ist 4 Mbit != 512 KB?sinnvoller, je nachdem, ob Sie binäre oder dezimale Präfixe verwenden.
Ein CVn

Antworten:

16

Wenn Sie sich die Speicherzuordnung ansehen, gibt es tatsächlich 524.288 Bytes ROM, was 512 KB entspricht (wobei 'K' sich auf 1024 bezieht, nicht auf 1000). Übrigens habe ich das durch Subtrahieren der Startadresse 0xF8000 von der Endadresse 0xFFFFFF und Hinzufügen erhalten einer.

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

Das ist 4M (wobei 'M' 1024 * 1024 = 1.048.576 ist, nicht = 1.000.000).106

Es ist in der Regel ziemlich klar , was auf aus dem Kontext geht, so dass diese Verwirrung selten verursacht (vor allem , wenn es Speicher mehr zu sein scheint als erwartet), aber Verbraucher Plattenkapazität ist ein notorischer Beispiel für die Verwendung ‚Vermarktung‘ Einheiten , die das Produkt aussehen machen günstig um ca. 5-10%.

Bearbeiten: Wie verschiedene Verschreibungspflichtige hier erwähnt haben, gibt es "offizielle" Einheiten wie MiB, die die Mehrdeutigkeit beseitigen sollten. Da sie jedoch praktisch niemand verwendet, denke ich, dass sie in den meisten Fällen wahrscheinlich mehr Verwirrung stiften würden (und offensichtlich waren die Autoren des Datenblattes der Meinung dieser Weg). Bei der Frage geht es darum, richtig zu interpretieren, was in ein Datenblatt geschrieben wurde, und nicht darum , welche Terminologie Sie verwenden sollten, wenn Sie selbst ein Datenblatt schreiben.

Spehro Pefhany
quelle
2
+1, schaute immer auf der Speicherkarte (oder eine Statistik ohne „k“ oder „M“ finden) , wenn Sie müssen wissen genau , was los ist (Speicher - Optionen sind nicht mehr als 10% bemessen auseinander, sondern vielmehr durch die Faktoren 2). "60k" in vielen Mikros ist nicht 60 * 1024, sondern oft irgendwo zwischen 60000 und 61440, da ein Teil dieser 1440 von HW-Registern belegt wird.
Nick T
@NickT Yup, und manchmal gibt es ein "Loch", in dem speicherabgebildete E / A, RAM oder etwas anderes vorhanden sind.
Spehro Pefhany
14

Die frühen Computeringenieure entschieden sich dafür, SI-Präfixeinheiten zu übernehmen und an ihre Datenanzahl anzupassen . Dies sind die gleichen Präfixe, aber das Zählen erfolgt eher binär als 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 eine Menge Arbeit in diesem Bereich in Potenzen von 2 ausgeführt wird. Wie Sie jedoch sehen können, weichen sie von der Metrik ab, und da es sich jetzt um größere Speichermengen handelt, bei denen der Unterschied zwischen den beiden erheblich voneinander abweicht Das Problem wurde von IEC und NIST behandelt. Diese unterscheiden die beiden Systeme durch Ändern des Binärpräfix:

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 Mengen-System übernommen. Die Übernahme erfolgt jedoch nur langsam, und es gibt immer noch Unternehmen, die neue Dokumente nach dem alten Standard erstellen. Wo Unternehmen gewechselt haben, haben sie Benutzer verwirrt gefunden und einige sind zurück zum älteren Stil gewechselt.

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

In dem neueren Standard dargestellt, wäre es stattdessen 4Mib = 512 kiB, vorausgesetzt, 'b' ist Bits und 'B' ist Bytes.

Adam Davis
quelle
Nach dieser wurde 1998 standardisiert
glglgl
1
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 eine gute Erinnerung daran, welche Terminologie wir verwenden sollten.
Alan Campbell
@glglgl Die IEC und andere haben sie 1998 definiert, aber erst 2008 wurden die IEC-Präfixe in das Internationale Mengen-System aufgenommen. Ich habe die Antwort leicht aktualisiert.
Adam Davis
10

Im Zusammenhang mit Speicherkapazitäten bedeutet MB häufig 1024 KB (anstelle von 1000 KB). Sie können MiB verwenden, um Mehrdeutigkeiten zu vermeiden.

Quark
quelle
Das heißt, ich habe gehört, dass einige Festplattenhersteller 1000 verwenden. Es ist manchmal wirklich schlammig, sollte aber wirklich 1024 sein.
DKNguyen
1

Die uralten Potenzen von 2 gegen Potenzen von 10 debattieren. Unternehmen haben Millionen von Klagen darüber verloren. Binäre oder dezimale Präfixe, die dazu führen, dass Sie 24 Bit pro Kilo verlieren, summieren sich wirklich in Gigabits und Bytes. Aus diesem Grund hat meine 120-GB-Festplatte (Herstellerbewertung) nur etwa 115,8 GB (Computerbildschirm).

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

Passant
quelle
2
Vergessen Sie nicht die alten Disketten des Arbeitspferdes "1,44 MB". Das waren 1,44 mal 1000 mal 1024 Bytes (1.474.560 Bytes). Doppelte Verwirrung!
Ein CVn
1

Wenn Sie über RAM, ROM oder irgendetwas sprechen, das in irgendeiner Weise mit den Bussen einer CPU verbunden ist:

  • Ein Kilobit entspricht 1024 Bit.

  • Ein Megabit ist 1024 Kilobit.

  • 4 Megabit sind 4096 Kilobit.

  • 4096 Kilobit sind 4194304 Bit.

  • Ein Byte besteht aus 8 Bits.

  • 4194304 Bits sind 524288 Bytes

  • Ein Kilobyte entspricht 1024 Bytes

  • 524288 Bytes sind 512 Kilobyte.

2n

Majenko
quelle
2
Googeln "4 Megabit zu Kbit" gibt mir 4000 Kilobit? Ich denke, diese Wiki-Seite erklärt die Mehrdeutigkeit: en.wikipedia.org/wiki/Binary_prefix
Evert
5
Der Unterschied ergibt sich von Festplattenherstellern, die 1000 für Kilo / Mega usw. verwenden (um die Laufwerke größer aussehen zu lassen), während alles andere, was den digitalen Speicher betrifft, 1024 verwendet. Nur um dieser Verwirrung entgegenzuwirken, wurde der Mibibyte usw. (MIllion BInary BYTEs) erfunden.
Majenko
2
-1: Genau genommen würde ich nicht sagen, dass "ein Kilobyte 1024 Bytes sind" - es können auch 1000 Bytes (ISO / IEC80000 ist einer der Kontexte) oder 1024 Bytes (allgemeine Verwendung, binäre SI) sein ); Daher kann ich dieser Antwort nur zustimmen, wenn Sie die Informationen aus Ihrem Kommentar (Kibibyte usw.) in die Antwort selbst aufnehmen. 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 (ca. 1950-1960)
3
@ vaxquis: Ein halbes Jahrhundert ist eine Untertreibung. 'Kilo' leitet sich vom altgriechischen Wort für Tausend ab, das vor Jahrtausenden vor SI lag.
Marcks Thomas
3
@vaxquis SI definiert weder ein Byte noch ein Bit, daher wird die Verwendung von Kilo bei ihnen nicht dadurch definiert. Es wird stattdessen durch den JEDEC-Standard 100B.01 definiert.
Ruslan
1

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

Halbleiterspeicher haben in der Regel eine Leistung von zwei Größen, da dies die Adresszuordnung vereinfacht. 1024 liegt nahe bei 1000, sodass diejenigen, die mit Halbleiterspeichern arbeiten, anfingen, Kilo zu verwenden, um 1024 zu bedeuten. Als die Speichergrößen größer wurden, verwendeten sie auch Mega, um 1024 2 = 1048576 Giga zu bedeuten, um 1024 3 = 1073741824 und so weiter zu bedeuten .

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


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

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 Symbologien 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, sodass aus Kilo Kibi und aus Mega wird Mebi und so weiter. Für die Symbole wird ein "i" hinzugefügt, so dass k zu ki wird, M zu Mi und so weiter.

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

Peter Green
quelle
1

Wie alle anderen bereits erklärt haben, leiden Sie wahrscheinlich an einem halben Jahrhundert alten Hack von IEC et al., Der weiterhin massive Verwirrung stiftet . Anstatt eine neue Einheit mit derselben Dimension (oder einem Präfix) einzuführen, definierten sie die Bedeutung einer anderen weit verbreiteten Einheit (Präfix) neu und konnten gleichzeitig nicht klar feststellen, welche Definition in welchem ​​Kontext gilt.

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


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

Dies ist ein sprachliches Erbe und ein schwerwiegender API-Mangel des CS-Vokabulars.

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

Ratet mal: Verwenden Sie binäre Präfixe .
Die Bedeutung von 123 kiBist 100% zuverlässig kristallklar.
Die Bedeutung von 123 kiB (126.0 kB)ist noch besser.
Sie nicht haben , um ein CS Historiker sein nur einige große Zahlen an jemanden zu vermitteln.
Niemand kümmert sich um Unternehmen, Festplatten, Standardisierungsgremien, Abschreibungserklärungen usw.
Es lohnt sich nicht. Verwenden Sie einfach die binären Mebibyten. Sie sind eindeutig.

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

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

ulidtko
quelle
1
Beeindruckend! Ich muss daran denken, mehr Kibihertz zu verwenden!
Pipe