32位系统最多只能支持4GB内存的原因
这个问题可能大家都不陌生。实际安装过系统并使用过电脑的朋友可能会有这样的体验:自己的电脑是4G内存条,但是安装系统后,电脑上只显示@。可用内存在k0@2G左右,其他内存去哪了?网上很多朋友也给出了一些解释,我觉得大部分都没有解释清楚。今天我们就来看看具体的原因。
在此之前,让我们先了解一些计算机系统结构和PC硬件方面的知识。
一.Bus 结构和主板组成
说起公交车,大家都不陌生,想必大家都处理过吧。当我们用U盘复制数据时,首先要通过USB接口将U盘连接到电脑上进行复制。 USB接口实际上是一种总线,一般称为USB总线(也称为通用串行总线)。很久以前没有USB总线。当时,每个。地址总线对应的地址称为物理地址。如果CPU有32条地址总线(一般32位CPU的地址总线是32位的,有的32位CPU地址总线是36位的,比如服务器的CPU),那么可寻址物理地址范围是232=4GB(这里要注意一点,我们通常所说的32位CPU和64位CPU是指CPU一次可以处理的数据宽度,也就是位宽,而不是地址总线的数量)。由于64位CPU的出现,一次可以处理64位数据,其地址总线一般采用36位或40位(即CPU可寻址的物理地址空间为64GB或1T) )。当 CPU 访问任何其他组件时,它需要一个地址。就像快递员送快递一样,没有地址他不知道送到哪里。例如,如果CPU要从显存单元中读取数据,就必须知道所读取的显存单元的实际物理地址是可以读取的。同样,要从记忆棒上的内存单元读取数据,也必须知道内存单元的物理地址。换句话说,CPU 必须知道它的物理地址才能访问任何存储单元。
用户在使用电脑时可以访问的最大内存不仅由CPU地址总线的位数决定,还需要考虑操作系统的实现。实际上,用户在使用计算机时,进程访问的地址是逻辑地址,而不是真正的物理地址。该逻辑地址由操作系统提供。 CPU在执行指令前需要将指令的逻辑地址转换为物理地址。只有这样才能对相应的存储单元进行数据读写(注意逻辑地址和物理地址是一一对应的)。
对于32位windows操作系统,逻辑地址编码使用32位地址位,那么操作系统提供的逻辑地址寻址范围为4GB,而在intel x86架构下,使用内存映射技术( Memory-Mapped I/O,MMIO),也就是说4GB逻辑地址的一部分必须被划分出来,和BIOS ROM、CPU寄存器、I/O设备的物理地址进行映射。那么逻辑地址就可以了。映射内存条物理地址的空间肯定不是4GB。看下图就明白了:

所以当我们安装32位Windows操作系统时,即使我们购买了4GB的记忆棒,操作系统的实际访问量也必须小于4GB。一般来说,大约是3.2GB。如果地址总线位数不是 32 位,例如 20 位,那么 CPU 可以寻址 1MB 的物理地址空间。这时候,即使操作系统可以支持4GB的逻辑地址空间,假设记忆棒是4GB,用户访问的空间也不会大于1MB(当然虚拟内存技术不这里考虑),所以用户可以访问的最大内存空间是由硬件和操作系统共同决定的,两者都有限制。
对于64位操作系统,其逻辑地址编码使用的地址位数为40位,最大可支持1T的逻辑地址空间。考虑一种情况。如果 CPU 是 64 位,地址总线位是 40 位,操作系统也是 64 位,逻辑地址编码使用的地址位也是 40 位,记忆棒大小是 64GB,那么它是一个记忆棒? 64GB的都可以用吗?答案不一定,因为这里还有一个要考虑的因素是内存控制器,内存控制器位于北桥(现在基本在CPU中),内存控制器连接到内存的实际地址线决定了支持的内存容量,也就是说,如果内存控制器和内存插槽之间实际连接的地址线没有40位,64GB内存条的存储空间就无法充分利用。当然,内存控制器几乎不能考虑,因为现在大多数内存控制器至少使用40位地址总线。
关于这个问题的讨论太多了,有兴趣进一步研究的朋友可以自行查看更多信息。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-380105-1.html
现在又上市
一直很好
没人敢惹吧