我觉得在冯诺依曼体系结构里,CPU和内存是最重要的设备。如果没有CPU和内存,服务器将完全无法运行。 所以继第一阶段分享完了CPU篇之后,今天就开始内存篇。我们以一个最简单的问题开篇,为什么内存地址0x0001和内存地址0x0002之间差的是一个byte,而不是一个bit?
我想你对内存存储的计算已经熟练于心,a变量占用内存多少字节,b变量占用内存多少字节。但是你有没有深入思考过,为什么我们用的存储单位都是字节,而不是比特?可能你会说因为ASCII码的基本编码单位就是字节呀,你还有可能举出很多个原因来说明内存应该以字节进行计算的原因。但那为啥网络带宽都是以bit,而不也用byte来计算的呢?
我们平时好像太过于习以为常,而没有去深想过具体的原因。我今天呢,是想从一个特定的角度去看待这个问题,那就是从内存的硬件物理结构。我们来了解一下内存的物理构造,一般内存的外形图片如图1:
图1 内存外形
如图1所示,一个内存是由若干个黑色的内存颗粒构成的。每一个内存颗粒叫做一个chip,所有的数据都是存在这些chip里的。上面这个内存条有8个chip(正反面各四个)。chip内部构造如图2:
图2 chip内部结构
每一个chip内部,又是由8个bank组成的。在每个bank内部,就是电容的行列二维矩阵结构了,如图3。
图3 bank内部构造
这个矩阵由多个方块状的元素构成,这个方块元素是内存管理的最小单位。要注意的是每一个元素有8个小电容,存储8个bit,也就是一个字节。换句话说,因为在内存物理结构中最小管理单位是元素,一个元素就是8bit。所以操作系统在管理它的时候,自然最小单位也就是字节了。