也许有的朋友在购买内存后发现:为什么明明在商家那里可以使用,而在自己的电脑里就不能使用了呢?其实这里面就涉及到内存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,双面内存则包含两个。其实这个看法是错误的!
一条内存条的物理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的区别。
内存CL与性能的关系
此外,大家在购买品牌内存时如果留意,就会发现包装或标贴上会标有“CL=2.5或CL=2.0”诸如此类的标志(图2)。虽说是同一种类型的内存如DDR400,但由于上面标志CL的数值不同,因而价格也会不同,这是为什么呢?
标志上面的CL英文全称为CAS Latency,为CAS的延迟时间。带宽表示的是数据传输能力,在各种内存中,在数据被真正传输前,传送方必须花费一定时间去等待传输请求的响应,这种等待就是一种延迟,在这里的专门术语就叫做“Latency”。而CAS Latency就是指的是CPU在接到读取某列内存地址上数据的指令后,到实际开始读出数据所需的等待时间。内存内部的存储单元按照行和列排成一个矩阵,内存访问地址被解码成行和列两个信号。为了要读出或写入某笔数据,内存控制芯片会先传送列的地址,接下来RAS信号就会被激活。然而,在存取行的数据前,还需要几个执行周期才行,这就是所谓的RAS-to-CAS延迟时间。同样地,在CAS信号被执行后,也同样需要几个周期。使用标准PC133的SDRAM大约是2到3个周期;而DDR RAM则是4到5个周期。在DDR中,真正的CAS延迟时间则是2到2.5个执行周期。RAS-to-CAS的时间则视技术而定,大约是5到7个周期,这也是延迟的基本因素。
可以说与CL=2.5(DDR)或CL3(SDRAM)比起来,CL=2内存更具优势,这个优势可以通过总延迟时间的对比看出来。总延迟时间=系统时钟周期×CL模式数+存取时间(tAC)。比如某DDR333内存的存取时间为6ns,当我们将设定CL模式数为2.5(即CAS Latency=2.5),则总延迟时间=6ns×2.5+6ns=21ns,而当将CL设为2的时候,总延迟时间=6ns×2+6ns=18ns,足足减少了3个执行周期;如果你的DDR266内存是采用默认143MHz的7ns芯片,当CL=2时,则其总延迟时间=7ns(系统时钟周期)×2+7ns=21ns。因此对于一款性能超群的DDR266内存来说,其性能可以达到DDR333的水准,这也就是为什么超频玩家喜欢选择CL值较低内存的原因。在这里也建议你在买内存的时候,如果CL=2的内存价格只比其他的高一点,那你最好买CL=2的产品(不过你要记住不同速度的内存混在一起时,最慢的内存就会成为性能瓶颈。举例来说,如果你插上1条CL=2的内存以及一条CL=2.5的内存,那两条内存都会以CL=2.5的设置来执行)。此外,目前各内存颗粒厂商除了从提高内存时钟频率来提高DDR的性能之外,已经考虑通过更进一步的降低CAS延迟时间来提高内存性能,这在DDR上是可行的,预计CL=1.5会是下一个发展的目标。
不过,并不是说CL值越低性能就越好,因为其他的因素会影响这个数据。例如,新一代处理器的高速缓存较有效率,这表示处理器比较少地直接从内存读取数据。再者,列的数据会比较常被存取,所以RAS-to-CAS的发生几率也大,读取的时间也会增多。最后,有时会发生同时读取大量数据的情形,在这种情形下,相邻的内存数据会一次被读取出来,CAS延迟时间只会发生一次。此外,也许有一些朋友会注意到,当把DDR内存的CL从标准的2.5设置到2工作模式下的时候,反而系统的性能还没有默认的CL=2.5好了,这是什么原因呢?这是因为内存的品质不太好,不能稳定地工作在CL=2这种模式下,在此模式下会出现在存取数据的时候数据常常被“丢失”的情况(即数据读取命中率降低)。不能取得数据,当然就只能重新读取,这样就浪费掉了很多时间,从而造成系统效率低。
附注:在内存条上的SPD芯片中已经包含有CL相关信息。当启动电脑时,BIOS会检查此项内容,并且以内存标称的CL模式运行。