目录
10、结合韦东山老师的第12课——内存控制器与SDRAM——SDRAM的设置
1、物理Bank
传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。当时控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据。总线的位宽,而这个位宽就称之为物理Bank(Physical Bank.简称P-Bank)的位宽。
结合韦东山老师讲的 不同位宽设备的连接:
接到芯片上的引脚用来确定读取芯片上的哪一个单元的数据,把这个单元的数据返回给内存控制器,内存控制器会根据没有连接芯片的引脚,来确定返回哪一个字节的数据给CPU,最终的地址线终将都会用到。
2、SDRAM、SIMM、DIMM、pin的含义
1. SDRAM:
Synchronous Dynamic Random Access Memory,同步动态随机存储器。同步是指其时钟频率与CPU前满总线的系统时钟频率相同, 并且内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。
2. pin:
楼组或芯片与外部电路联接用的金属引脚,而模组的pin就是常说的“金手指”。
3. SIMM:
Single In-line Memory Module,单列内存模组。内存模组就是我们常说的内存条,所谓单列是指模组电路板与主板插槽的接口只有一列引脚(虽然两侧都有金手指)。
4. DIMM:
Double In-line Memory Module,双列内存模组。所谓双列是指楼组电路板与主板插槽的接口有两列引脚,模组电路板两侧的金手指对应一列引脚,DIMM是SDRAM集合形式的最终体现。
3、芯片位宽
SDRAM内存系统必须要组成一个P-Bank的位宽,才能使CPU正常工作,P-Bank位宽涉及到内存芯片的结构。每个内存芯片也有自己的位宽,即每个传输周期能提供的数据量。理论上,完全可以做出一个位宽为64bit的芯片来满足P-Bank的需要,但这对技术的要求很高,在成本和实用性方面也都处于劣势。所以芯片的位宽一般都较小。台式机市场所用的SDRAM芯片位宽最高也就是16bit、常见的则是8bit。这样,为了组成P-Bank所需的位宽,就需要多颗芯片并联工作。对于16bi芯片,需要4颗(4×16bit=64bit)。对于8bit芯片,则就需要8颗了。
提示:内存芯片与颗粒
很多时候,经常听人们说到“内存颗粒”,其实这是港台地区对内存芯片的一种称呼(仅对内存,其他的芯片,港台则 称 为“晶片”),两者的意思是一样的。具体怎么说,就看个人喜好了,就笔者而言,而倾向于用“内存芯片”来表 述。
DIMM是SDRAM集合形式的最终体现,每个DIMM至少包含一个P-Bank的芯片集合。在目前的DIMM标准中,每个模组最多可以包含两个P-Bank的内存芯片集合,理论上可以在一个DIMM上支持多个P-Bank,比如SDRAMDIMM就有4个芯片选择信号(Chip Select简称片选或CS),理论上可以控制4个P-Bank的芯片集合。由于难度原因没有这么去做。
DIMM的面数与P-Bank数量的关系,面数P ≠ Bank数,只有在知道芯片位宽的情况下,才能确定P-Bank的数量,大度256MB内存就是明显一例,而这种情况在Registered模组中非常普遍。内存模组的设计,将在后面的相关内容中继续探讨。
4、SDRAM的逻辑Bank与芯片容量表示方法
1.逻辑Bank与芯片位宽
下面深入了解SDRAM的内部结构。这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。
阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元。表格(存储阵列)== 逻辑Bank(Logical Bank,简称L-Bank)。
由于技术、成本等原因,不可能只做一个全容量的L-Bank。而且单一的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有效,以下将会说明。
DRAM的存储原理
L-Bank中的存储单元是基本的存储单位,它的容量是若干Bit(对于SDRAM而言,就是芯片的位宽),而每个Bit则是存放于一个单独的存储体中。这些存储体就是内存中最小的存储单元。你可以用硬盘操作中的簇与扇区的关系来理解内存中的存储形式。扇区是硬盘中的最小存储单元(相当于内存中的存储体),而每个簇则包含有多个扇区(相当于L-Bank中的存储单元),数据的交换都是一个簇为单位进行(一次传输一个存储单元的数据)。
2.内存芯片的容量
已经清楚了内存芯片的基本组织结构。那么内存的容量怎么计算呢?显然,内存芯片的容量就是所有L-Bank中的存储单元的容量总合。计算有多少个存储单元和计算表格中的单元数量的方法一样:
存储单元数量=行数×列数(得到一个L-Bank的存储单元数量)xL-Bank的数量在很多内存产品介绍文档中,都会用MxW的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。
M是该芯片中存储单元的总数,单位是兆(英文简写M,精确值是1048576,而不是1000000)
W代表每个存储单元的容量,也就是SDRAM芯片的位宽(Width),单位是bit。
计算出来的芯片容量也是以bit为单位,但用户可以采用除以8的方法换算为字节(Byte)。比如8M×8,这是一个8bit位宽芯片,有8M个存储单元,总容量是64Mbit(8MB)。
提示:bit、Byte、Word的关系
bit:位。二进制数中,一个0或1就是一个bit。
Byte:字节。8个bit 为一个字节,这与ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)的规定有关,ASCII用8位二进制数来表示256个信息代码,所以8个bit定义为一个字节。
Word:字:两个字节为一个字,这里的Word不是指L-Bank中存储单元,此外还有双字(DWords,Double Words,4个字节)和四字(QWord,Quad Words,8个字节)的表示法。目前一个P-Bank的位宽就是QWord,这在很多CPU与芯片组的介绍中经常用到。
MxW是最简单的表示方法。下图则是某公司对自己内存芯片的容量表示方法,这可以说是最正规的形式之一。