高手进阶——终极内存技术指南(未完成)

发布于 2014-09-22  1.28k 次阅读


  • SDRAM内存模组与基本结构

两个概念:物理Bank(Physical Bank)与芯片位宽。

  1. 物理Bank

传统内存系统为了保证CPU正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。当时控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,而这个位宽就称之为物理Bank(Physical Bank,下文简称P-Bank)的位宽。

P-Bank是SDRAM及以前传统内存家庭的特有概念,在RDRAM中将以通道(Channel)取代,而对于像Intel E7500那样的并发式多通道DDR系统,传统的P-Bank概念也不适用。

  1. 芯片位宽

每个内存芯片都有自己的位宽,即每个传输周期能提供的数据量。理论上,完全可以做出一个位宽为64bit的芯片来满足P-Bank的需要,但这对技术的要求很高,在成本和实用性方面也都处于劣势。所以芯片的位宽一般都比较小。台式机市场所用的SDRAM芯片位宽最高也就是16bit,常见的则是8bit。这样,为了组成P-Bank所需的位宽,这需要多颗芯片并联工作。对于16bit的芯片,需要4颗(4X16bit=64bit)。对于8bit的芯片,则就需要8颗了。

P-Bank其实就是一组内存芯片的集合,这个集合的容量不限,但这个集合的总位宽必须与CPU数据位宽相符。随着计算机应用的展,一个系统只有一个P-Bank已经不满足容量的需要。所以,芯片组开始可以支持多个P-Bank,一次选择一个P-Bank工作,这就有了芯片组支持多少(物理)Bank的说法。而在Intel的定义中,则称P-Bank为行(Row),比如845G芯片组支持4个行,也就是说它支持4个P-Bank。另外,在一些文档中,也把P-Bank称为Rank(列)。

DIMM(双列内存模组)是SDRAM的最终体现,每个DIMM至少包含一个P-Bank的芯片集合。在目前的DIMM标准中,每个模组最多可以包含两个P-Bank的内存芯片集合,虽然理论上完全可以在一个DIMM上支持多个P-Bank,比如SDRAM DIMM就有4个芯片选择信号(Chip Select,简称片选或CS),理论上可以控制4个P-Bank的芯片集合。只是由于某种原因而没有这么去做。比如设计难度、制造成本、芯片组的配合等。

 

  • SDRAM内存芯片的内部结构
  1. 逻辑Bank与芯片位宽

主要的概念就是逻辑Bank,简单地说,SDRAM的内部就是一个存储阵列。因为如果是管道式存储(就如排除买票),就很难做寿 到随机访问。

内存芯片寻址的基本原理与表格检索是差不多的,先指定一个行,再指定一个列。每个“单元格”就被称为存储单元。而这个表格本身就被称为存储阵列。这个表格同时也被称为逻辑L-Bank。

由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Bank将会造成非常严重的寻址冲突,大幅降低内存的效率(这在后文中将详细讲述)。所以人们在SDRAM内部分割成多个L-Bank,较早以前是两个,目前基本都是4个,这也是SDRAM规范中的最高L-Bank数量。到了RDRAM则最多达到了32个,在最新DDR-II的标准中,L-Bank的数量也提高到了8个。

在寻址时首先要指定是那个L-Bank,然后再在这个待定的L-Bank中选择相应的行与列进行寻址。可见对内存的访问,一次只能是一个L-Bank工作,而每次与北桥交换的数据就是L-Bank存储阵列中一个“存储单元”的容量。在某些厂商的表述中,将L-Bank中的存储单元称为Word(此处代表位的集合而不是字节的集合)。

从前文可知,SDRAM内存芯片一次传输率的数据量就是芯片位宽,那么这个存储单元的容量就是芯片的位宽(也就是L-Bank的位宽),但要注意,这种关系也仅对SDRAM有效,原因将在下文中说明。

  1. 内存芯片的容量

内存的容量怎么计算呢?显然,内存芯片的容量就是所有L-Bank中的存储单元的容量总合。计算有多少个存储单元和计算表格中的单元数量的方法一样:

存储单元=行数x列数(得到一个L-Bank的存储单元数量)xL-Bank的数量

在很多内存产品介绍文档中,都会用MxW的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。M是该芯片中存储单元的总数,单位是兆(英文为M,精确值为1048575,而不是1000000),W代表每个存储单元的容量,也就是SDRAM芯片的位宽(Width),单位是bit。计算出来的芯片容量也是以bit为单位,但用户可以采用除以8的方法换算为字节(Byte)。

下图给出了某公司对自己内存芯片的容量的表示方法,这可以说是最正规的形式之一。

三个规格的容量都是128Mbit,只是由于位宽的变化而引起了存储单元的数量变化。从这个例子就可以看出,在相同的总容量下,位宽可以采用多种不同的设计。

  1. 与芯片位宽相关的DIMM设计

高位宽的芯片可以让DIMM的设计更简单一些(因为所用的芯片少),但在芯片容量相同时,DIMM的容量就肯定比不上采用低位宽芯片的模组,因为后者在一个P-Bank中可以容纳更多的芯片。(这是因为当位宽之后,要添加一个芯片就于引脚数量的要求就更多之苛刻,使得添加芯片变得更为之困难。)

 

  • SDRAM的引脚与封装

内存芯片要想工作,必须要与内存控制器有所联系,同时对于一个电气元件,电源供应也是必不可少的,而且数据的传输要有一个时钟作为触发参考。因此,SDRAM在封闭时就要留出相应的引脚以供使用。电源与时钟的引脚就不必多说了,现在我们可以想象一下,至少应该有哪些控制引脚。

与DIMM一样,SDRAM有着自己的业界设计规范,在一个容量标准下,SDRAM的引脚/信号标准不能只考虑一种位宽的设计,而是要顾及多种位宽,然后尽量给出一个通用 的标准,小位宽的芯片也许会空出一些引脚,但高位宽的芯片可能就全部用上了。不过容量不同时,设计标准也会有所不同,一般的容量越小的芯片所需要的引脚也就越小。

  1. 首先,内存控制器要先确定一个P-Bank的芯片集合,然后才对这集合中的芯片进行寻址操作。因此要有一个片选的信号,它一次选择一个P-Bank的芯片集(根据位宽的不同,数量也不同)。被选中的芯片将同时接收或读取数据,所以要有一个片选信号。
  2. 接下来是对所有被选中的芯片进行统一的L-Bank的寻址,目前SDRAM中的L-Bank的数量最高为4个,所以需要两个L-Bank地址信号(2^2=4)。
  3. 最后就是对被选中的芯片进行统一的行/列(存储单元)寻址。地址线的数量要根据芯片的组织结构分别设计了。但在相同的容量下,行数不变,只有列数会根据位宽而变化,位宽越大,列数越少,因为所需的存储单元减少了。
  4. 找到了存储单元后,被选中的芯片就要进行统一数据传输,那么肯定要与位宽相同数量的数据I/O通道才行,所以肯定要有相应数量的数据线引脚。

公交车司机终于在众人的指责中将座位让给了老太太