根据地址位长度和存储单元内容计算内存大小

Calculating memory size based on address bit-length and memory cell contents

我正在尝试计算最大内存大小,知道地址的位长度和内存单元的大小。

据我了解,如果地址为 n 位,则有 2^n 个内存位置。但是要计算机器的实际内存大小,您需要将地址数乘以内存单元的大小。对吗?

换句话说,

第一步:计算地址长度(n位) 第二步:计算内存位置的个数2^n(bits) 第 3 步:将内存位置的数量乘以内存单元的字节大小。

例如,如果每个单元格为 2 个字节,我是否会将 2^n 位(用于地址长度)乘以每个存储单元格的 2 个字节。

所以总内存将是 2^n 位(地址大小)* x 字节(单元格大小)?

"actual memory size of the machine"

我在这里假设您指的是相关机器的物理地址 space,忽略虚拟寻址等。 大多数现代机器都是字节可寻址的(8 位),这意味着每个地址指的是 1 个字节。在这种情况下,假设您有一个 n 位处理器和匹配的 n 位地址总线(在某些情况下它们不相同,例如奔腾处理器),可能的内存位置数为 2^n 字节。

如果您有更专业的硬件(嵌入式微控制器等),它们是可字寻址的(16 位、32 位),那么您乘以 2^n *(以位为单位的字大小)是正确的) / (8) = 字节数。

话虽这么说,当您考虑到可能与处理器地址线不同的虚拟寻址和物理总线大小时,您将不得不查看 "theoretical limit" 的特定机器.