1.疑惑
之前上网搜索32位cpu最大支持内存是多少时,大部分会提到一个公式2^32=4G,但是和我当时理解的不太一样,当时我认为32位的cpu就是cpu和内存之间有32根数据线,那么就有2^32个不相等的数,每一个数都是有32位的二进制数。又因为8bit = 1byte,所以每一个数就是4byte。最后的公式就是2^32*4 (byte) = 16(G)。
2.了解内存的物理机制
后来我在书中了解到了内存的实际结构,认识到了我想法的错误。
内存实际上是一种名为内存 IC 的电子元件。虽然内存 IC 包括 DRAM、SRAM、ROM1
等多种形式,但从外部来看,其基本机制都是一样的。内存 IC
中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚(IC 的引脚),通过为其指定地址(address),来进行数据的读写。那么,这个内存 IC 中能存储多少数据呢?数据信号引脚有 D0~D7 共八个,表示一次可以输入输出 8 位(= 1 字节)的数据。此外,地址信号引脚有 A0~A9 共十个,表示可以指定 0000000000~1111111111 共 1024 个地址。32位的cpu会搭配32个地址信号引脚的内存,也就是2^32个地址。而地址用来表示数据的存储场所,因此我们可以得出这个内存 IC 中可以存储 1024 个 1 字节的数据。因为 1024 = 1K ,所以该内存 IC 的容量就是 1KB。
在计算机领域,大写字母 K 表示的并不是 1000,而是 2 的 10 次幂的结果 1024。1000 通常用小写 k 来表示。
3.总结
通过上述了解,cpu是通过地址来处理数据的。cpu和内存连接的不单单只有数据线,还有地址线。32位cpu的32根线是地址线,而数据线只有8根,每个数据有8bit,也就是1byte。每一个地址代表一个数据。一共有2^32个地址,那么就有2^32 (byte) = 2^22 (KB) = 2^12 (MB) = 2^2 (GB)。