内存系列一:快速读懂内存条标签

内存系列一:快速读懂内存条标签

内存是我们平常接触最频繁的计算机硬件之一,内存的大小、多寡和型号和我们计算机、手机等性能密切相关。内存系列计划通过三篇文章由浅入深介绍内存的软硬件特性以及与固件的关系。这是第一篇,以一个生活情景给读者介绍内存的背景知识,为后面打下基础。

情景

小张有一定的计算机背景知识,最近他在京东上买了两条DDR3的内存,打算把笔记本升级成8G。可是一拆开包装到就傻眼了:


4GB看起来很好,两根刚好8GB。2Rx8是啥,PC3又是啥,10600似乎和他想买的1333的差好远,后面那串数字又代表什么呢?

小张找到了我,让我帮忙给他说说这些字母和数字都代表什么。我最是好为人师,于是开始了我们今天的介绍。

什么是DIMM?

在80286时代,内存颗粒(Chip)是直接插在主板上的,叫做DIP(Dual In-line Package)。到了80386时代,换成1片焊有内存颗粒的电路板,叫做SIMM(Single-Inline Memory Module)。由阵脚形态变化成电路板带来了很多好处:模块化,安装便利等等,由此DIY市场才有可能产生。当时SIMM的位宽是32bit,即一个周期读取4个字节,到了奔腾时,位宽变为64bit,即8个字节,于是SIMM就顺势变为DIMM(Double-Inline Memory Module)。这种形态一直延续至今,也是内存条的基本形态。

说到这里,小张着急了:”这和我的内存有啥关系?“。当然有关系,就是和10600S的S有关,现在DIMM分为很多种:

RDIMM: 全称(Registered DIMM),寄存型模组,主要用在服务器上,为了增加内存的容量和稳定性分有ECC和无ECC两种,但市场上几乎都是ECC的。

UDIMM:全称(Unbuffered DIMM),无缓冲型模组,这是我们平时所用到的标准台式电脑DIMM,分有ECC和无ECC两种,一般是无ECC的。

SO-DIMM:全称(Small Outline DIMM),小外型DIMM,笔记本电脑中所使用的DIMM,分ECC和无ECC两种。

Mini-DIMM:DDR2时代新出现的模组类型,它是Registered DIMM的缩小版本,用于刀片式服务器等对体积要求苛刻的高端领域。

一般内存长度 133.35mm,SO-DIMM为了适应笔记本内狭小的空间,缩短为67.6mm而且一般为侧式插入。高度也有些变种,一般的内存条高度为30mm,VLP(Very Low Profile)降低为18.3mm,而ULP(Ultra Low Profile)更是矮化到17.8mm,主要是为了放入1U的刀片服务器中。

大小关系如下图:


小张这下知道10600S中S代表了SO-DIMM,看来大小没错。不过速度呢?

DDR到DDR4

为了照顾小张的急性子,我就跳过了SDRAM后DDR和Rambus/RDRAM争天下的故事。DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。顾名思义,和原本的SDRAM相比,DDR SDRAM一个时钟周期要传输两次数据:


从DDR到DDR4主要的区别是在于传输速率的不同,随着时钟周期的不断降低,传输率也不断提高。还有电压也越来越低。有趣的是命名规则,大部分台式机DIMM厂商都会标注DDRx-yyy,x代表第几代,yyy代表数据传输率。而大部分的SO-DIMM和RDIMM等则标注PCx-zzzz,x还代表第几代,zzzz则代表最大带宽。因为DDR位宽为64位,8个字节,所以zzzz=yyy * 8,而yyy又是时钟的两倍。下面这张表是主要的各代DDR内存的速度:

所以小张的内存条上的PC3-10600S代表DDR3,1333MHz的SO-DIMM。小张又问,那2R*8啥意思呢?

RANK和BANK

其实从外观上就可以看出来小张的内存条由很多海力士的内存颗粒组成。从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:channel>DIMM>rank>chip>bank>row/column,如下图:


一个现实的例子是:


在这个例子中,一个i7 CPU支持两个Channel(双通道),每个Channel上可以插俩个DIMM,而每个DIMM由两个rank构成,8个chip组成一个rank。由于现在多数内存颗粒的位宽是8bit,而CPU带宽是64bit,所以经常是8个颗粒可以组成一个rank。所以小张的内存条2R X 8的意思是由2个rank组成,每个rank八个内存颗粒(为啥我们以后讲)。由于整个内存是4GB,我们可以算出单个内存颗粒是256MB。

后记

小张这下放心了,不过他提起看到过不少内存条上都有很多数字标记,如:


这些是什么呢?其实,这是内存颗粒的时延(Latency)数据,如4-4-4-8, 5-5-5-15, 7-7-7-21, 或9-9-9-24,分别代表 CL-tRCD-tRP-tRAS的数据,越小越好。具体这些都是什么,就需要更深入的知识了,我们将会在下一篇硬件原理中讲到,而且我们还会在UEFI的memory reference code(MRC)部分再详细深入说明这些参数的具体使用。

如果你和小张一样意犹未尽,在下一篇文章之前大家可以思考下面几个问题:

  1. 每一代内存条宽度都一样,会不会插错呢?
  2. 从前面各代内存速度表可以看出,每一代和前一代带宽都有部分重复,这是为什么?
  3. 前一代和下一代如果带宽一样,那个performance更好呢?

内存系列其他文章:

内存系列二:深入理解硬件原理 - 知乎专栏

内存系列三:内存初始化浅析 - 知乎专栏

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。同时欢迎大家给本专栏和公众号投稿!

用微信扫描二维码加入UEFIBlog公众号

编辑于 2019-04-08

文章被以下专栏收录

    从首次运用于Intel 安腾处理器,到第一版统一的可扩展固件接口(UEFI)规范出版,无论是在高性能服务器,移动设备或是深度嵌入式设备等,UEFI已在所有平台完全淘汰了BIOS。这里有关于UEFI的一切。