文章内容更新请以 WGrape GitHub博客 : 为什么32位处理器的最大内存是4G 为准
前言
本文原创,著作权归WGrape所有,未经授权,严禁转载
一、背景
我们大家都知道,在32位的处理器中,支持的最大内存是4G。但是为什么是4G呢 ?可能很多人已经想不起具体的原因,那么本文就会就这个问题,再次从底层开始讲起,详细的做出解释。
在绘制底层原理图之探究CPU文章中,已经绘制了一张CPU内部简化模型图。如果不明白,看原图会更帮助你真正理解这个问题。
二、什么是32位处理器
32位处理器是指这个CPU的地址总线和数据总线都是32位(32根)
三、什么是寻址空间
寻址空间就是通过地址总线,所能访问到的内存范围。从内存地址0开始,至内存地址N结束
1、如何计算寻址空间
寻址空间和地址总线是线性关系,地址总线越多,寻址空间也越大,由于每一位只有0和1,那么每一根地址总线都有2种可能,所以关系为寻址空间 = 0 ~ 2^地址总线位数
比如8位地址总线,就是有8根地址总线,每一根只能表示0或1,那么8根总线一共有 2^8 方个组合,即256个组合,也就是说可以表示 0 ~ 255 之间的共计256个数字,每个数字都可以作为一个内存单元的地址,这个数字可以类比为数组的下标。
0 :0000 0000
1 :0000 0001
2 :0000 0010
3 :0000 0011
……..
255 :1111 1111
所以8位地址总线寻址空间为
0~255
,内存单元的地址范围也是0~255
,内存空间为256个内存单元,即256字节
四、什么是内存空间
内存空间由N个内存单元组成,每个内存单元占8位(1个字节),N个内存单元的地址范围是0~N-1
五、为什么32位处理器的最大内存是4G
(1) 32位处理器的地址总线为32位(32根地址总线)
(2) 每根地址总线有2个可能(0或1),所以32根共有 2^32 = 4294967296 个数值,寻址空间为0 ~ 4294967296-1
(3) 由于一共有 4294967296 个内存单元,每个内存单元为8位(1个字节)
(4) 所以32位处理器的内存一共有 4294967296 个字节 ,即 4G