我正在使用富士通微控制器,我认为我对以下细节有点生疏,这就是我问这个问题的原因。我有以下规格:
- 4M位闪存
- 内置产品:MB90F345E(S)、MB90F345CE(S)
- 容量:512 KB/256 Kword
- 扇区配置:64K×6+32K×2+16K×2+8K×4
- 分配的银行:F8H 到 FFH 银行
他们似乎神奇地创造了 12K 字节的额外 ROM 内存?我在这里想念什么怪癖?
我正在使用富士通微控制器,我认为我对以下细节有点生疏,这就是我问这个问题的原因。我有以下规格:
他们似乎神奇地创造了 12K 字节的额外 ROM 内存?我在这里想念什么怪癖?
如果您查看内存映射,实际上有 524,288 字节的 ROM,即 512K(其中“K”指的是 1024,而不是 1000)-顺便说一句,我通过从结束地址 0xFFFFFF 中减去起始地址 0xF8000 并添加一。
那是 4M(其中“M”是 1024 * 1024 = 1,048,576,而不是 = 1,000,000)。
从上下文中通常很清楚发生了什么,因此这很少会引起混乱(尤其是当内存似乎比您预期的要多时),但是消费级磁盘驱动器容量是使用“营销”单元使产品看起来更多的一个臭名昭著的例子有利 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 左右(电脑显示器)