为什么32位处理器的最大内存是4G

Posted by WGrape的博客 on July 15, 2019

文章内容更新请以 WGrape GitHub博客 : 为什么32位处理器的最大内存是4G 为准

前言

本文原创,著作权归WGrape所有,未经授权,严禁转载

一、背景

我们大家都知道,在32位的处理器中,支持的最大内存是4G。但是为什么是4G呢 ?可能很多人已经想不起具体的原因,那么本文就会就这个问题,再次从底层开始讲起,详细的做出解释。

绘制底层原理图之探究CPU文章中,已经绘制了一张CPU内部简化模型图。如果不明白,看原图会更帮助你真正理解这个问题。

二、什么是32位处理器

32位处理器是指这个CPU的地址总线和数据总线都是32位(32根)

三、什么是寻址空间

寻址空间就是通过地址总线,所能访问到的内存范围。从内存地址0开始,至内存地址N结束

image

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

image

五、为什么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