Memory Rank
一组或几组Memory chips,Chips分为两种4Bits与8Bits, 由于CPU处理能力为64Bits, 如果内存要达到CPU处理能力, 就把Chips组成了Rank; 简单理解就是64Bits为1 Rank.
Single Rank:1组Memory chip
Dual Rank: 2 组Memory chip ,one rank per side
Quad Rank: 4 组Memory chip ,two rank per side
Rank并不是同时间读写, 而是使用了Memory interleaving进行读写, 这样提高了总线利用效率!
解读内存中的Bank
两种内存Bank的区别
内存Bank分为物理Bank和逻辑Bank。
1.物理Bank
传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接收的数据容量就是CPU数据总线的位宽,单位是bit(位)。内存与CPU之间的数据交换通过主板上的北桥芯片进行,内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称之为物理Bank(Physical Bank,简称P-Bank)的位宽。以目前主流的DDR系统为例,CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个周期内会向内存发送或从内存读取64bit的数据,那么这一个64bit的数据集合就是一个内存条Bank。不过以前有不少朋友都认为,内存的物理Bank是由面数决定的:即单面内存条则包含一个物理Bank,双面内存则包含两个。其实这个看法是错误的!
一条内存条的物理Bank是由所采用的内存颗粒的位宽决定的,各个芯片位宽之和为64bit就是单物理Bank;如果是128bit就是双物理Bank。读到这里,大家也应该知道,我们可以通过两种方式来增加这种类型内存的容量。第一种就是通过增加每一个独立模块的容量来增加Bank的容量,第二种方法就是增加Bank的数目。由于目前内存颗粒位宽的限制,一个系统只有一个物理Bank已经不能满足容量的需要。所以,目前新一代芯片组可以支持多个物理Bank,最少的也能支持4个物理Bank。对于像Intel i845D这种支持4个Bank的芯片组来说,我们在选购内存时就要考虑一下插槽数与内存Bank 的分配问题了。因为如果选购双Bank的内存,这意味着在Intel i845D芯片组上我们最多只能使用两条这样的内存,多了的话芯片组将无法识别。这里我建议大家最好根据自己的主板所提供的内存插槽数目来选购内存,如果主板只提供了两个内存插槽,那就不必为内存是单Bank还是双Bank而担心了。而如果主板提供了4个内存插槽(同一种规格),那么应该尽量购买单Bank或大容量双Bank的内存,以免给日后升级留下不必要的麻烦。
注:SDRAM与DDR内存的物理Bank是一样的,不过在RDRAM内存规格中,物理Bank被通道(Channel)取代。
2.逻辑Bank
逻辑Bank的英文全称为Logical Bank,简称L-Bank。如果将物理Bank说成是内存颗粒阵列的话,那么逻辑Bank可以看做是数据存储阵列。不过与物理Bank不同,SDRAM与DDR内存的逻辑Bank并不完全一样,所以我将分开来简单介绍一下。
简单地说,SDRAM的内部是一个存储阵列(图1),因为如果是管道式存储,就很难做到随机访问了。阵列就如同表格一样,将数据“填”进去。因此逻辑Bank我们可以看成是一张逻辑二维表,在此表中内存的数据是以位(bit)为单位写入一个大的矩阵中,每个单元我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个CELL,里面每个单元都可以存储数据,而且每个单元的存储空间相同——因为实际上与物理Bank每个单元具体存储数据量相同。这个具体的单元存储数据量即为逻辑Bank的位宽(实际上内存芯片的位宽就是逻辑Bank的位宽),一般有4bit、8bit和16bit等几种。如果你认为不好理解的话,那么你可以用硬盘操作中的簇与扇区的关系来理解内存中的存储形式——扇区是硬盘中的最小存储单元�相当于内存中的存储体 �而一个簇则包含多个扇区�相当于逻辑Bank中的存储单元 �数据的交换都是以一个簇为单位进行。由于工艺上的原因,这个阵列不可能做得太大,所以一般内存芯片中都是将内存容量分成几个阵列来制造,也就是说内存芯片中存在多个逻辑Bank,随着芯片容量的不断增加,逻辑Bank数量也在不断增加。
主板芯片组本身设计时在一个时钟周期内只允许对一个逻辑Bank进行操作,而不是主板芯片组对内存芯片内所有逻辑Bank同时操作。逻辑Bank的地址线是通用的,只要再有一个逻辑Bank编号加以区别就可以了(Bank0到Bank3)。但是这个芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据能够一次全部读出。
对于DDR内存,逻辑Bank的作用、原理与在SDRAM中是一样的,区别主要是在逻辑Bank容量、规格之上。从上面大家已经知道,SDRAM中逻辑Bank存储单元的容量与芯片位宽相同,但DDR中并不是这样。DDR的逻辑存储单元的容量是芯片位宽的一倍:即“芯片位宽×2=存储单元容量”,同时DDR中的真正行、列地址数量也与同规格SDRAM不一样了。这主要是由于DDR的工作原理所决定的。DDR这种内部存储单元容量的设计,就是常说的两位预取(2-bit Prefetch),也称为2-n Prefetch(n代表芯片位宽)。
注:目前品牌内存大都在包装和说明书中标明逻辑Bank,对于兼容条,你可以根据内存颗粒上的编号标志进行计算。至于物理Bank,大家可以根据以上介绍的原理计算出来,在这里我就不多说了。另外我们常说的内存交错设置并不是指的物理Bank的交错,也就是说不是内存条双面的交错,而是指内存芯片内部逻辑Bank的交错。如果芯片有4个Bank,那么就可以进行4路交错,如果只有两个Bank就只能是2路交错。很多资料介绍的以内存条的单面或双面来决定交错是错误的,实际上就是混淆了物理Bank和逻辑Bank的区别。
内存rank&bank
用everest查看内存配置时,SPD中选中一根内存,出现的详细情况中内存模块>>模块容量的数字背后有括号,里面有 x rank(s), y banks的字样,在网上查了一下,居然没有比较确切的回答。有些人甚至瞎说。
本人有充分的理由来说:rank 代表了内存条子上是否两面都在存储芯片(行语叫存储颗粒吧),两面都有的就是 2 ranks,也就是dual ranks,只有正面有的则是1 rank,也是常见的single rank。而bank则是存储颗粒的bank。
一般内存颗粒都是有将内存容量分成几个阵列来制造,也就是说存在内存芯片中存在多个BANK,一般每个颗粒都为4个。随着芯片容量的不断增加,逻辑BANK数量也在不断增加,目前从32MB到1GB的芯片基本都是4个,只有早期的16Mbit和32Mbit的芯片采用的还是2个逻辑BANK的设计,譬如三星的两种16MB芯片:K4S161622D (512K x 16Bit x 2 BANK)和K4S160822DT(1M x 8Bit x 2 BANK)。芯片组本身设计时在一个时钟周期内只允许对一个逻辑BANK进行操作,而芯片的位宽就是逻辑BANK的位宽决定了一次操作的并行位宽。现在的内存颗粒的位宽多为16bit,这样的位宽对于要求高速的内存来说,显然太小。一般内存的位宽是64bit,也就是一次能并行传送8Byte数据。这样,在制造内存的时候,就把同类型的内存颗粒进行组合,现在ddr内存中,一组多为4个颗粒,一般一面是8个芯片,分两组,两面一共就是4组。而在一个组中,内存颗粒是并行进行访问的,就像并联电路可以分流一样,并行的内存颗粒分流了位宽。多个小位宽的颗粒bank并联组成了大位宽的内存bank。前面已经说过,现在内存颗粒的位宽多为16bit,4个一组,16 X 4 = 64,位宽为64的内存bank就这样产生了。
而内存的总容量还是不变的,计算方法还是:
内存容量 = 单个内存颗粒的容量 X 颗粒数量
而颗粒的容量一般由颗粒的型号决定的,计算方法为:
内存颗粒的容量 = bank数 X bank位宽 X bank深度 / 8,单位byte
如上而提到的K4S161622D ,因为其组成就是2个位宽为16位的512K深度的bank组成,所以其容量为2X16X512K/8 = 2M。对于威刚的VDD8608A8A,其组织为4M X 16 X 4bank,所以其容量为4MX16X4/8 = 32M。
曾记得第一次在深圳的华强北C座4楼问内存价格:
老板第一句问:一代二代?
我说:一代
老板:多大
我:XXX
老板:单面双面?
我:????
不知什么意思,最后在老板的指点下,我看到了一种单面有芯片的内存,一种则两面都有,以前还不怎么注意过。一般来说,单面的价格可能会高一点,可能是单个存储颗粒容量比较大,线路要少,要稳定可靠吧。不过我相信,成本价应该双面还要高一点。至于为啥这个卖法,那就很难说了。因为在华强北这种卧虎藏龙之地,那些内存的来源都很那个啊!!!
DDR3内存标签参数解读
在内存标签上, 一般参数描述:ggg eRxff-PC3-wwwwwm-aa-bb-cc
1, ggg is the total capacity of the DIMM (for example, 1GB, 2GB, or 4GB)
2, e is the number of ranks
1 = single-rank
2 = dual-rank
4 = quad-rank
3, ff is the device organization (bit width)
4 = x4 organization (4 DQ lines per SDRAM)
8 = x8 organization
16 = x16 organization
4, wwwww is the DIMM bandwidth, in MBps
6400 = 6.40 GBps (PC3-800 SDRAMs, 8-byte primary data bus)
8500 = 8.53 GBps (PC3-1066 SDRAMs, 8-byte primary data bus)
10600 = 10.66 GBps (PC3-1333 SDRAMs, 8-byte primary data bus)
12800 = 12.80 GBps PC3-1600 SDRAMs, 8-byte primary data bus)
5, m is the DIMM type
E = Unbuffered DIMM (UDIMM) with ECC (x72-bit module data bus)
R = Registered DIMM (RDIMM)
U = Unbuffered DIMM with no ECC (x64-bit primary data bus)
6, aa is the CAS latency, in clocks at maximum operating frequency
7, bb is the JEDEC SPD Revision Encoding and Additions level
8, cc is the reference design file for the design of the DIMM