荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: winsome (wo), 信区: Hardware
标  题: 高手进阶,终极内存技术指南——完整版(四)
发信站: 荔园晨风BBS站 (Wed Dec 18 12:51:46 2002), 站内信件

SDRAM的结构、时序与性能的关系(上)

在讲完SDRAM的基本工作原理和主要操作之后,我们现在要重要分析一下SDRAM的时
序与性能之间的关系,它不在局限于芯片本身,而是从整体的内存系统去分析。这
也是广大DIYer所关心的话题。比如CL值对性能的影响有多大几乎是每个内存论坛
都会有讨论,今天我们就详细探讨一下,其中的很多内容同样适用于DDR与RDRAM。
这里需要强调一点,对于内存系统整体而言,一次内存访问就是对一个页的访问,
这个页的定义已经在解释Full Page含义时讲明了。由于在P-Bank中,每个芯片的
寻址都是一样的,所以可以将页访问“浓缩”等效为对每芯片中指定行的访问,这
样可能比较好理解。但为了与官方标准统一,在下文中会经常用页来描述相关的内
容,请读者注意理解。

一、影响性能的主要时序参数

所谓的影响性能是并不是指SDRAM的带宽,频率与位宽固定后,带宽也就不可更改
了。但这是理想的情况,在内存的工作周期内,不可能总处于数据传输的状态,因
为要有命令、寻址等必要的过程。但这些操作占用的时间越短,内存工作的效率越
高,性能也就越好。

非数据传输时间的主要组成部分就是各种延迟与潜伏期。通过上文的讲述,大家应
该很明显看出有三个参数对内存的性能影响至关重要,它们是tRCD、CL和tRP。每
条正规的内存模组都会在标识上注明这三个参数值,可见它们对性能的敏感性。

以内存最主要的操作——读取为例。tRCD决定了行寻址(有效)至列寻址(读/写
命令)之间的间隔,CL决定了列寻址到数据进行真正被读取所花费的时间,tRP则
决定了相同L-Bank中不同工作行转换的速度。现在可以想象一下读取时可能遇到的
几种情况(分析写入操作时不用考虑CL即可):

1、要寻址的行与L-Bank是空闲的。也就是说该L-Bank的所有行是关闭的,此时可
直接发送行有效命令,数据读取前的总耗时为tRCD+CL,这种情况我们称之为页命
中(PH,Page Hit)。

2、要寻址的行正好是前一个操作的工作行,也就是说要寻址的行已经处于选通有
效状态,此时可直接发送列寻址命令,数据读取前的总耗时仅为CL,这就是所谓的
背靠背(Back to Back)寻址,我们称之为页快速命中(PFH,Page Fast Hit)或
页直接命中(PDH,Page Direct Hit)。

3、要寻址的行所在的L-Bank中已经有一个行处于活动状态(未关闭),这种现象
就被称作寻址冲突,此时就必须要进行预充电来关闭工作行,再对新行发送行有效
命令。结果,总耗时就是tRP+tRCD+CL,这种情况我们称之为页错失(PM,Page
Miss)。

显然,PFH是最理想的寻址情况,PM则是最糟糕的寻址情况。上述三种情况发生的
机率各自简称为PHR——PH Rate、PFDR——PFH Rate、PMR——PM Rate。因此,系
统设计人员(包括内存与北桥芯片)都尽量想提高PHR与PFHR,同时减少PMR,以达
到提高内存工作效率的目的。

二、增加PHR的方法

显然,这与预充电管理策略有着直接的关系,目前有两种方法来尽量提高PHR。自
动预充电技术就是其中之一,它自动的在每次行操作之后进行预充电,从而减少了
日后对同一L-Bank不同行寻址时发生冲突的可能性。但是,如果要在当前行工作完
成后马上打开同一L-Bank的另一行工作时,仍然存在tRP的延迟。怎么办? 此时就
需要L-Bank交错预充电了。

VIA的4路交错式内存控制就是在一个L-Bank工作时,对下一个要工作的L-Bank进行
预充电。这样,预充电与数据的传输交错执行,当访问下一个L-Bank时,tRP已过
,就可以直接进入行有效状态了。目前VIA声称可以跨P-Bank进行16路内存交错,
并以LRU算法进行预充电管理。

有关L-Bank交错预充电(存取)的具体执行在本刊2001年第2期已有详细介绍,这
里就不再重复了。

L-Bank交错自动预充电/读取时序图:L-Bank 0与L-Bank 3实现了无间隔交错读取
,避免了tRP对性能的影响

三、增加PFHR的方法

无论是自动预充电还是交错工作的方法都无法消除tRCD所带来的延迟。要解决这个
问题,就要尽量让一个工作行在进行预充电前尽可能多的接收多个工作命令,以达
到背靠背的效果,此时就只剩下CL所造成的读取延迟了(写入时没有延迟)。

如何做到这一点呢?这就是北桥芯片的责任了。在上文的时序图中有一个参数
tRAS(Active to Precharge Command,行有效至预充电命令间隔周期)。它有一
个范围,对于PC133标准,一般是预充电命令至少要在行有效命令5个时钟周期之后
发出,最长间隔视芯片而异(基本在120000ns左右),否则工作行的数据将有丢失
的危险。那么这也就意味着一个工作行从有效(选通)开始,可以有120000ns的持
续工作时间而不用进行预充电。显然,只要北桥芯片不发出预充电(包括允许自动
预充电)的命令,行打开的状态就会一直保持。在此期间的对该行的任何读写操作
也就不会有tRCD的延迟。可见,如果北桥芯片在能同时打开的行(页)越多,那么
PFHR也就越大。需要强调的是,这里的同时打开不是指对多行同时寻址(那是不可
能的),而是指多行同时处于选通状态。我们可以看到一些SDRAM芯片组的资料中
会指出可以同时打开多少个页的指标,这可以说是决定其内存性能的一个重要因素


但是,可同时打开的页数也是有限制的。从SDRAM的寻址原理讲,同一L-Bank中不
可能有两个打开的行(S-AMP只能为一行服务),这就限制了可同时打开的页面总
数。以SDRAM有4个L-Bank,北桥最多支持8个P-Bank为例,理论上最多只能有32个
页面能同时处于打开的状态。而如果只有一个P-Bank,那么就只剩下8个页面,因
为有几个L-Bank才能有同时打开几个行而互不干扰。Intel 845的MHC虽然可以支持
24个打开的页面,那也是指6个P-Bank的情况下(845MCH只支持6个P-Bank)。可见
845已经将同时打开页数发挥到了极致。

不过,同时打开页数多了,也对存取策略提出了一定的要求。理论上,要尽量多地
使用已打开的页来保证最短的延迟周期,只有在数据不存在(读取时)或页存满了
(写入时)再考虑打开新的指定页,这也就是变向的连续读/写。而打开新页时就
必须要关闭一个打开的页,如果此时打开的页面已是北桥所支持的最大值但还不到
理论极限的话,就需要一个替换策略,一般都是用LRU算法来进行,这与VIA的交错
控制大同小异。

SDRAM的结构、时序与性能的关系(下)

四、内存结构对PHR的影响

这是结构设计上的问题,所以单独来说。在我们介绍L-Bank时,曾经提到单一的
L-Bank会造成严重的寻址冲突。现在,当我们了解了内存寻址的原理后,就不难理
解这句话了。如果只有一个L-Bank,那么除非是背靠背式的操作(PFH),否则
tRP、tRCD、CL(读取时)一个也少不了。

上文中,内存交错之所以能实现就是因为有多个L-Bank,从这点就可以看出
L-Bank数量与页命中率之间的关系了。PHR基本上可以等于“(L-Bank数-1)
/L-Bank数”。

SDRAM有4个L-Bank,那么页命中率就是75%,DDR-Ⅱ SDRAM最多将有8个L-Bank,
PHR最高为87.5%。而RDRAM则最多有32个L-Bank,PHR到了惊人的96.875%,这也是
当时RDRAM攻击SDRAM的一主要方面。

不过,从内存的结构图上可以看出,L-Bank多了,相应外围辅助的元件也要增加,
比如S-AMP,L-Bank地址线等等。在RDRAM的介绍中,我会讲到L-Bank数量增多后所
带来的一些新问题。

五、读/写延迟不同对性能所造成的影响

SDRAM在读取操作时会有CL造成的延迟,而在写入时则是0延迟。这样,在读操作之
后马上进行写操作的话,由于没有写延迟,数据线不会出现空闲的时候,保证了数
据总线的利用率。但是,若在写操作之后马上进行读操作的话,即使是背靠背式进
行,仍然会由于tWR与CL的存在而造成间隔,这期间数据总线将是空闲的,利用率
受到了影响。

在先写后读的操作中,由于保证写入的可靠性,读取命令在tWR之后发出,并再经
过CL才能输出数据,本例中CL=3,造成了两个时钟周期的总线空闲

这里需要着重说明一下,在突发读取过程中,想立刻中断并进行新的读操作,和读
后读模式(见“突发连续读取模式图”)一样,只是新的读命令根据需要提前若干
个周期发出,经过CL后就会自动传输新的数据。但是,若想中断读后立即进行写操
作,就需要数据掩码(DQM)来屏蔽写入命令发出时的数据输出,避免总线冲突。
根据芯片设计的不同,有时可能会浪费一个周期进行总线I/O的调转,此时一个周
期的总线空闲也是不可避免的。

六、BL对性能的影响

从读/写之间的中断操作我们又引出了BL(突发长度)对性能影响的话题。首先,
BL的长短与其应用的领域有着很大关系,下表就是目前三个主要的内存应用领域所
使用的BL,这是厂商们经过多年的实践总结出来的。

BL越长,对于连续的大数据量传输很有好处,但是对零散的数据,BL太长反而会造
成总线周期的浪费。以P-Bank位宽64bit为例,BL=4时,一个突发操作能传输32字
节的数据,但如果只需要前16个字节,后两个周期是无效的。如果需要40字节,需
要再多进行一次突发传输,但实际只需要一个传输周期就够了,从而浪费了三个传
输周期。而对于2KB的数据,BL=4的设置意味着要每隔4个周期发送新的列地址,并
重复63次。而对于BL=256,一次突发就可完成,并且不需要中途再进行控制。不少
人都因此表示了BL设定对性能影响的担心。

但设计人员也不是傻瓜,通过上文的介绍,可以看出他们在这方面的考虑。通过写
命令、DQM、读命令的配合/操作,完全可以任意地中断突发周期开始新的操作,而
且DQM还可以帮我们在BL中选择有用的数据,从而最大限度降低突发传输对性能带
来的影响。另外,预充电命令与专用的突发传输终止命令都可以用来中断BL,前者
在中断后进行预充电,后者在中断后不进行其他读/写操作。

所以,突发周期的中断并不难,但用短BL应付大数据量存取需要不断的指令与列寻
址配合,而为了取消不需要的传输周期,由于需要运用额外的控制,也将占用不少
的控制资源。所以BL针对不同应用领域有不同设计的主要目的,就是在保证性能的
同时,系统控制资源也能得到合理的运用
--
※ 修改:·winsome 於 Dec 18 13:08:18 修改本文·[FROM: 192.168.32.247]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.32.247]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店