4 MBit!= 512 kB?


8

私は富士通のマイクロコントローラーを使用していますが、以下の詳細については少し錆びていると思います。そのため、この質問をします。次の仕様があります。

  • 4Mビットのフラッシュメモリ
  • 内蔵製品:MB90F345E(S)、MB90F345CE(S)
  • ボリューム:512 Kバイト/ 256 Kワード
  • セクター構成:64K×6 + 32K×2 + 16K×2 + 8 K×4
  • 割り当てられたバンク:F8HからFFHバンク

彼らは魔法のように12Kバイトの追加ROMメモリを作成しているようですか?ここでどのような癖が欠けていますか?


7
512 Kバイト= 512 * 8 Kビット= 4096 Kビット= 4 Mビット
John Dvorak

グーグル:「512 kbからメガビット」では、512 kb = 4.096メガビットになります。そして、それは4メガビットに四捨五入されていますか?
2014年

4
代わりに「512 kib to mibit」をググリングしてみてください。
fgb 2014年

3
技術的なコンテキストでは、KバイトとMビットは、通常、あいまいさを回避するために何を指し、キビバイトとメビビットと呼ばれます
njzk2

3
また、技術的な文脈で、間に非常に大きな違いがあることに注意してくださいBb。タイトルが言っていることは、実際には「4メガビット!= 512キロビット?」ですが、これはもちろん意味がありません。4 Mbit != 512 KB?必要なのは、2進数のプレフィックスを使用しているか、10進数のプレフィックスを使用しているかに応じて、より理にかなったものです。
CVn 2014年

回答:


16

あなたがメモリマップを見ると、実際には524,288バイトのROMがあり、これは512K(ここで「K」は1000ではなく1024を指します)です。 1。

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

これは4Mです(「M」は1024 * 1024 = 1,048,576であり、 = 1,000,000 ではありません)。106

通常、コンテキストから何が起こっているかはかなり明確であるため、混乱が生じることはめったにありません(特に、予想以上に多くのメモリがあるように見える場合)が、コンシューマディスクドライブの容量は、製品をより見栄えよくする「マーケティング」ユニットの悪名高い例です約5-10%有利です。

編集:ここのさまざまな規範論者が言及しているように、曖昧さを取り除くべきであるMiBのような「公式の」ユニットがあるが、事実上誰もそれらを使用しないので、ほとんどの場合、それらはより多くの混乱を引き起こす可能性が高いと思うそのように)。問題は、データシートに何が書かれているかを正しく解釈することであり、自分でデータシートを書くときに使用すべき用語ではありません。


2
+1、何が起こっているのかを正確に知る必要がある場合は、常にメモリマップを確認します(または「k」または「M」のない統計を見つけます)(メモリオプションのサイズは10%離れているのではなく、2の因数によって)。多くのマイクロでの「60k」は60 * 1024ではありませんが、1440の一部がHWレジスタによって使用されるため、多くの場合60000から61440の間のどこかです。
ニックT

@NickTうん、メモリマッピングされたI / O、RAMなどが存在する「穴」が見つかることもあります。
Spehro Pefhany 2014年

14

初期のコンピューターエンジニアは、SIプレフィックス単位採用し、データ数に適応させることを選択しました。これらは同じプレフィックスですが、メトリックではなくバイナリを使用してカウントされます。2 ^ 10は10 ^ 3に近いため、通常、各SIプレフィックスは10 ^ 3ずつ増加し、代わりに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%

これらはJEDEC規格の一部として採用されました。

この分野の多くの作業は2の累乗で行われるため、これには多くの利点があります。しかし、ご覧のように、それらはメトリックから逸​​脱しており、2つの違いが大幅に分かれている大量のストレージを扱っているためです。問題はIECとNISTによって処理されています。これらは、バイナリプレフィックスを変更することにより、2つのシステムを区別します。

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

これらは1998年に最初に標準化され、2008年に国際数量システムに採用されましたが、採用は遅く、古い規格を使用して新しいドキュメントを作成している会社はまだあります。企業が切り替えたところ、ユーザーは混乱し、一部は以前のスタイルに切り替えました。

したがって、以前の標準を使用すると、4Mbは4 * 2 ^ 20ビットで、512 * 2 ^ 10バイトに相当します。

新しい標準で表される場合、「b」をビット、「B」をバイトとすると、代わりに4Mib = 512 kiBになります。


よると、この、それが1998年に標準化された
glglgl

1
それは標準かもしれませんが、誰もがそれを好きです。前述のように、理論的には会社が変更すべき古いドキュメントはたくさんあります(これをメートル法に変換する米国のコストと比較できます)。この質問と回答は、私たちが使用すべき用語をよく思い出させます。
アランキャンベル

@glglgl IECと他の人々がそれらを1998年に定義しましたが、IECの接頭辞が国際数量体系に組み込まれたのは2008年まででした。答えを少し更新しました。
アダムデイビス

10

メモリ容量のコンテキストでは、MBは多くの場合(1000Kではなく)1024KBを意味します。あいまいさを避けるためにMiBを使用できます。


言った、私はいくつかのハードドライブメーカーは、それは本当に泥だらけ時々ですが、本当に1024である必要があり、1000を使用して聞いた
DKNguyen

1

2の古い力対10の力の議論。企業はそれをめぐって訴訟で数百万を失った。2進数と10進数のプレフィックスを使用すると、1キロあたり24ビットが失われるため、実際にはギガビットとバイトが加算されます。私の120 GBのハードドライブ(メーカーの評価)が115.8 GB程度しかないのはそのためです(コンピュータディスプレイ)。

http://en.m.wikipedia.org/wiki/Binary_prefixには完全な説明があります。


2
古い主力の「1.44 MB」フロッピーディスクを忘れないでください。これは、1.44倍1000倍1024バイト(1,474,560バイト)でした。二重混乱!
CVn 2014年

1

RAM、ROM、または何らかの方法でCPUのバスに接続されているものについて話すとき:

  • 1キロビットは1024ビットです。

  • 1メガビットは1024キロビットです。

  • 4メガビットは4096キロビットです。

  • 4096キロビットは4194304ビットです。

  • 1バイトは8ビットです。

  • 4194304ビットは524288バイトです

  • 1キロバイトは1024バイトです

  • 524288バイトは512キロバイトです。

それはすべて 2n


2
「4メガビットからキロビット」にグーグルすると、4000キロビットが得られますか?このwikiページはあいまいさを説明していると思います:en.wikipedia.org/wiki/Binary_prefix
Evert

5
違いは、ハードドライブメーカーがキロ/メガなどに1000を使用しているため(ドライブを大きく見せるため)、他のすべてのデジタルストレージでは1024を使用しています。この混乱に対処するためだけにMibibyteなど(MIllion BInary BYTE)が発明されました。
Majenko 2014年

2
-1:厳密に言えば、「1キロバイトは1024バイトです」と言うことはありません。1000バイト(ISO / IEC80000はコンテキストの1つです)または1024バイト(一般的な使用法、バイナリSI)にすることもできます。 ); そのため、あなたのコメント(キビバイトなど)からの情報を回答自体に含めない限り、私はこの回答に同意できません。また、キロの1000は、HD OEMからではありません(最も一般的ですが)-今日のCSおよびコンピューターより少なくとも半世紀(1950

3
@vaxquis:半世紀は控えめな表現です。「キロ」は、古代ギリシャ語の千から派生したもので、千年紀のSIよりも前の言葉です。
Marcks Thomas

3
@vaxquis SIはバイトもビットも定義しないため、キロでの使用は定義されていません。代わりに、JEDEC標準100B.01で定義されています。
ルスラン

1

残念ながら、コンピューター業界はキロとメガのプレフィックスを一貫して使用していません。

半導体メモリは、アドレスマッピングを単純化するため、2つのサイズの累乗になる傾向があります。1024は1000に近いため、半導体メモリを使用する人は1024を意味するようにキロを使用し始めました。メモリサイズが大きくなるにつれて、メガを使用して1024 2 = 1048576ギガを意味し、1024 3 = 1073741824 を意味するようになりました。

これらのキロバイトとメガバイトの定義の下では、製造元のステートメントが一致します。4バイナリメガビットは4096バイナリキロビットは512バイナリキロバイトに相当します。


ただし、コンピュータ業界の他の部分、特にハードドライブの製造元や通信インターフェイスの設計者は、SIプレフィックスを元の意味で使用していました。ディスクのようなフラッシュメディアのメーカーも、この慣例に従う傾向があります。

たとえば「1.44MBフロッピー」は実際には1.44 * 1000 * 1024 = 1474560バイトです。

IECは、バイナリプレフィックスに特定の名前と記号を導入することにより、1998年に混乱を修正しようとしました。名前は、SIユニットの名前の最初の2文字を取り、「bi」を追加して形成されます。そのため、キロはキビになり、メガはメビなど。記号の場合、「i」が追加されるため、kはkiになり、MはMiになります。

しかし、標準化団体が用語を導入したからといって、人々が実際にそれを使用することを意味するわけではありません。少なくとも私の経験では、キロ、メガなどをバイナリの意味で使用することは、キビ、メビなどを見るよりもはるかに一般的です。


1

他の誰もがすでに説明しているように、あなたはおそらく、IECによる半世紀前のハックに苦しんでおり、それによって大規模な混乱が続いています。同じ次元(または接頭辞)の新しいユニットを導入するのではなく、広く使用されている別のユニット(接頭辞)の意味を再定義し、同時に、どの定義がどのコンテキストに適用されるかを明確に確立できませんでした。

特定の問題が発生した場合は、前述のようにメモリマップを調べてください。


ただし、はるかに一般的な問題を認識することをお勧めします。
問題は、言っ123 kBても受け手側の明確な理解に確実につながるわけではないということです。

これは言語の遺産であり、CSボキャブラリの主要なAPIの欠陥です。

それを解決するために私たちは何ができますか?

さて、何を推測しますか:バイナリプレフィックスを使用します。
の意味123 kiBは、100%確実にクリスタルクリアです。
の意味123 kiB (126.0 kB)はさらに良いです。誰かにいくつかの大きな数字を伝えるためだけにCSの歴史家である
必要はありません。
会社、ハードドライブ、標準化団体、廃止予定などについては誰も気にしません。
それはそれだけの価値はありません。バイナリメビバイトを使用してください。それら明確です。

あり、正常と言ってきた人たち32 kibihertz彼らが聞いてきた2002年には。すごく便利ですよね?

最後に、バイナリプレフィックスの採用を拒否すると、問題がさらに悪化します。
いまいましい言語のバグを軽減して修正するために私たち全員が協力できる唯一の戦略は、あいまいさを廃止し、キビ...秒(なぜでしょうか?)と他のバイユニットに切り替えることです。


1
うわー!私がしなければならないよりkibihertz使用することを忘れないでください!
パイプ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.