微机原理中地址总线、数据总线与内存容量之间的关系

今天在复习微机原理的时候,看到一个概念:存储总量=存储单元个数×存储字长,然后存储单元个数=2^地址总线位数,存储字长和数据总线位数有关,如果是这样,那么,地址总线为32位,数据总线为16位的CPU,其最大可支持的内存容量就应该是2^32 * 16bit = 64Gb = 8Gb ,那为什么现在32位的操作系统还只能支持4GB的内存呢?难道现在的数据总线都是8位?

乍一看,这个和昨天看到的概念内存容量=单元总数×数据位数/单元是类似的,可是为什么不对呢?其实这个问题说白了就是存储容量与地址总线和数据总线的关系。

CPU本身是没有存储容量这个概念的,如果非要说有的话,那么也只能说有CPU高速缓存(Cache)这么个东西,而Cache的容量比较小,根本不可能达到GB级别。我们通常说的CPU的存储容量指的是CPU的寻址范围(寻址能力),也用来作为衡量CPU能够使用的存储器大小的一个指标,因此这个参数就与地址总线有关了,地址总线的位数越大,CPU能够使用的存储器就越大,其寻址能力越强。而我们所说的数据总线则影响了CPU从存储器读写数据的快慢程度,数据总线位数越大,CPU一次读写的数据就越多,速度自然就提上来了。因此数据总线的位数和CPU的寻址能力没有关系。即地址总线为32位,数据总线为16位的CPU,其最大可支持的内存容量就应该是2^32(地址总线)* 1Byte(存储单元大小) = 4Gb。

再来看存储器,上面说到了,存储器的存储总量 = 存储单元个数×存储字长,存储单元个数=2^地址总线位数,这个好理解;存储字长和数据总线位数有关,存储字长的意思是:一个存储单元存储一串二进制代码(存储字),这串二进制代码的位数称为存储字长,存储字长可以是8位、16位、32位等。因此,地址总线为32位,数据总线为16位的存储器,其内存容量是2^32 * 16bit = 64Gb = 8Gb。

你可能感兴趣的:(微机原理)