14
头图

本文从底层往上搞懂内存的物理结构。

1.Bank

image.png

在芯片的内部,内存的数据是以位(bit)为单位写入一张大的矩阵中,每个单元我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个CELL,这就是内存芯片寻址的基本原理。这个阵列我们就称为内存芯片的BANK。

2.Bank Group

随着颗粒容量提升,bank数越来越多,到DDR4时出现Bank Group,我们可以理解为,将多个Bank编成一个组,这个组就是Bank Group。

image.png

3. 内存颗粒

image.png

图中的黑色芯片就是内存颗粒,英文一般称为Chip。

一般来说一个内存颗粒的大小=每个BANK的格子数 × BANK数 × 芯片位宽

若为DDR4/5,则DDR4/DDR5颗粒容量 = 每个BANK的格子数 × BANK数 × 芯片位宽 x BankGroup数 。 因为从DDR4开始才出现BankGroup.

4. Rank

存条上可不止一个内存颗粒,一般都是由很多内存颗粒共同组成一根内存条。

我们知道,CPU与内存之间的数据接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。

可是,单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。显然发送方和接收方的位宽必须一致,不能说我发了64位数据出来,你才收到前面的16位,后面的就丢掉了。因此,必须把多个颗粒并联起来,组成一个位宽为64bit的数据集合,才可以和CPU互连。

多个颗粒组成当前内存通道的位宽,这个位宽集合,称之为一个RANK。

比如,128MB内存芯片,其位宽为8bit,那么需要8块芯片才能组成64bit位宽,将这些芯片焊接到一块DIMM上,插到主板上就可以使用了。这时,该DIMM的总容量就是128MB*8=1GB。

不同类型DDR,其通道位宽不一样,如:
• 在DDR3、DDR4上内存通道位宽为64bit。
• DDR5上,单根DIMM双通道,每个通道位宽为32bit。

如下图,8个ddr4内存芯片组成一个RANK
image.png

5.DIMM

为了保证和CPU的沟通,一个DIMM(内存模组)中至少要有一个RANK。但是,为了保证有一定的内存容量,经常是采用一个DIMM两个RANK的结构,即内存条的正反面都有内存芯片。
image.png

同一个RANK内部的所有内存颗粒chips,连接到同一个CS(Chip Select,片选)信号线上,内存控制器能够对同一个RANK的所有chips同时进行读写操作,RANK内部的所有内存颗粒一起被选中,共提供64bit的数据。

image.png

6. CHANNEL

内存控制器(Memory Controller)是计算机系统内部控制内存并且负责内存与CPU之间数据交换的重要组成部分。早期存在于北桥芯片中, 现大部分并入CPU中。

CHANNEL即内存通道,一个内存控制器中可能有一个内存通道,也可能有两个内存通道。最常见的是双通道,民用级电脑都支持,即2*64bit,服务器还有3通道和4通道等。

DDR3/DDR4内存通道

一般桌面级处理器都使用一个双通道的内存控制器或者说是两个内存控制器,简单来说就是有两条平行、宽度均为64-bit的路可以用来跑去内存存取数据,一条路就是1个channel(通道)。一般一个内存通道,可以连接若干个DIMM。

DDR3/DDR4的内存通道,如下图所示:
image.png

2、DDR5内存通道
DDR5不会为每个DIMM提供一个64位数据通道,而是为每个DIMM提供两个独立的32位数据通道(考虑ECC时为40位)。一个DDR5内存控制器,对应2个通道,每个通道32bit。这2个通道一起向一根DIMM累计提供64bit的数据访问。
image.png

与传统的DDR4双通道相比,一个DDR5内存控制器对应2个通道,2个DDR5内存控制器就对应4个通道。说的更直白就是,DDR4需要至少2根DIMM才能组成双通道;DDR5一根DIMM就可以组成双通道,2根DIMM就可以组成4通道。

例如,我的电脑的内控制器支持的是双通道,可由于用的是ddr5,每个ddr5内部对应两个通道,所以显示4通道。 总量与 两个ddr4 组成的 2*64bit相同,都是128bit, 但由于通道数提升了,速率也就更快了。

image.png

7. 层次总结

从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:channel>DIMM>rank>chip>bank>row/column,如下图示:

image.png


整体数据流向如下图所示:
image.png

从内存控制器开始沿着两条通道一路往前,第一个分叉路口是内存插槽,在这里一般的非低端芯片组主板都会提供4条路,每个通道分成两条一样的64-bit宽度道路通往内存模组(DIMM),一共有4个插槽,就是有4条64-bit宽度的道路通向内存,但并不是每个通道就这么拓宽成了128-bit,它仍然是64-bit的宽度,在同一时间一个通道中的两条路只有一条可以用。

DIMM再往下就是上面提到的Rank,再到chip,bank 和 row,column

8. SPD

SPD(serial presence detect),即串行存在检测,中文怪怪的。SPD是DIMM的相关描述信息。

在每根内存条上,都有一份SPD数据,这份数据保存在一个可擦写的eeprom芯片中。SPD数据记录了该内存的许多重要信息,诸如内存的芯片及模组厂商、工作频率、工作电压、速度、容量、电压与行、列地址带宽等参数。SPD数据一般都是在出厂前,由DIMM制造商根据内存芯片的实际性能写入到eeprom芯片中。

所以山寨产品就是通过改SPD中的内容达到鱼目混珠的目的。

例如,我电脑的SPD信息如下:

image.png

总结

本文介绍了内存从下到上的结构。希望能有所帮助。

参考:
https://blog.csdn.net/zyhse/article/details/120771121
https://blog.csdn.net/shenmingxueIT/article/details/115524046


weiweiyi
1k 声望123 粉丝

引用和评论

0 条评论