4 兆比特!= 512 KB?

电器工程 微控制器 只读存储器
2022-01-12 17:40:51

我正在使用富士通微控制器,我认为我对以下细节有点生疏,这就是我问这个问题的原因。我有以下规格:

  • 4M位闪存
  • 内置产品:MB90F345E(S)、MB90F345CE(S)
  • 容量:512 KB/256 Kword
  • 扇区配置:64K×6+32K×2+16K×2+8K×4
  • 分配的银行:F8H 到 FFH 银行

他们似乎神奇地创造了 12K 字节的额外 ROM 内存?我在这里想念什么怪癖?

4个回答

如果您查看内存映射,实际上有 524,288 字节的 ROM,即 512K(其中“K”指的是 1024,而不是 1000)-顺便说一句,我通过从结束地址 0xFFFFFF 中减去起始地址 0xF8000 并添加一。

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 这样的“官方”单位应该消除歧义,但是由于几乎没有人使用它们,我认为它们在大多数情况下可能会造成更多的混乱(显然数据表作者认为那样)。问题是关于正确解释数据表中写的内容,而不是在自己编写数据表时应该使用什么术语。

早期的计算机工程师选择采用并调整 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 的幂中。但是,正如您所看到的,它们与度量标准不同,而且由于我们现在正在处理更大的存储量,而两者之间的差异显着不同IEC和NIST已经处理了这个问题。这些通过更改二进制前缀来区分两个系统:

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 字节。

在较新的标准中,它将改为 4Mib = 512 kiB,假设“b”是位,“B”是字节。

在内存容量的上下文中,MB 通常意味着 1024KB(而不是 1000K)。您可以使用MiB以避免歧义。

古老的 2 次幂与 10 次幂的辩论。公司因此在诉讼中损失了数百万美元。导致您每公斤丢失 24 位的二进制与十进制前缀实际上加起来是千兆位和字节。这就是为什么我的 120 GB 硬盘(制造商评级)只有 115.8 GB 左右(电脑显示器)

http://en.m.wikipedia.org/wiki/Binary_prefix有完整的解释。