科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网存储频道速度与优化并进 DDR之巅峰对决(上)——如何有效的优化内存性能

速度与优化并进 DDR之巅峰对决(上)——如何有效的优化内存性能

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有关内存优化的文章其实已经有很多了,可能大家都没觉得没什么了不起的,不就是那几个参数吗?这还用讲?但是,我相信 90% 以上的人并没有完全真正理解那些时序参数的含义。我敢说,目前很多的优化原则都是有问题的,甚至有误导的倾向!

作者:赵效民 2004年3月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

双通道优化实战测试(下)

五、Sandra Standard 2004 SP1 测试

这也是著名的测试软件了,经常能在网上看到网友在比试该软件所给出的内存带宽贴图。

与前面的测试所体现出来的差不多,页面少的时候,2-3-3-5 占先,页面多的时候,2-3-3-8 会反超。

六、ScienceMark 2.0beta 测试

笔者认为 ScienceMark 是一个比较优秀的测试软件,测试的项目也比较多,而其所自带的内存测试功能也别具特色。

ScienceMark 的测试结果与前面所体现的不太一样,页面少的时候 2-3-3-5 反而更低,但两者都从页面数量的提高中获益。而且,值得注意的是,在 8 个页面时 ,2-3-3-8 的表现最好,不光带宽领先,而且在延迟方面也有了大的进步。不过,在 16 页面时,2-3-3-8 的延迟方面就全面落后了。我感觉 ScienceMark 采用了与众不同的测试逻辑与方法,但也从侧面反映了两种 tRAS 设置的一些差异。

七、Quake III Arena 1.32 测试

Quake III 就不用我多说了,它的引擎效率极为出众,至今仍然是一款出色的测试软件,并且,它对内存的效率也是比较敏感的。

是不是有些吃惊,随着页面的增加,2-3-3-5 与 2-3-3-8 的性能都有较为明显的增长。难道是 Q3 很吃内存。我想应该不是,如果你打开任务管理器,就会发现 Q3 的内存占用量并不高 ,512MB 已经能满足要求了。之所以能出现 4、5 帧的性能增长,原因除了1GB内存本身对Windows XP更适合外,可能就在于页面的增多,提高了内存管理效率,进一步的降低了寻址冲突。而 2-3-3-8 的优势也在 8 个页面时开始发挥出来。

在测试中,我们感觉到 Q3 对默认的 HQ(800X600)模式似乎有着优化,它在测试中的表现最为稳定,而且性能提升显著 。Fastest 模式由于显卡基本上是在等内存提供“原料”,所以对内存的效率也非常的敏感。而在 HQ(1280X1024)模式下处理的重任则落在了显卡身上,内存的供给倒是其次了。不过,与 3DMark 2001SE 的表现相似 ,2-3-3-5 的性能表现不是很稳定,有时 5 次测试结果中最好成绩与最差成绩会有比较大的差距,这可能也由于较短的行选通周期所带来的页面管理不确定性所造成的。

八、nForce 2 平台下的测试

升技的 AN7 主板可调节的 tRAS 范围出奇的大,最高可到 15,最低达到 1。我们选择了 3 和 15 两个较为极端的参数进行了对比测试,测试结果与 875P 平台相差不多,但优劣并不是很明显。以下是 PCMark04 的测试结果。

AIDA32 的测试只在 1GB 容量下进行,2-3-3-15 的读 / 写速度(MB/s)为 2991/1135,2-3-3-3 时为 2950/1080。在 Q3 的测试中 ,1.5GB 时,2-3-3-15 出现了稍微明显的领先(约一帧)。1GB 时,两者的表现基本持平。

对于这个表现,笔者认为首先可能因为是页面容量不够大所至,由于不像 875P 那样的双通道,nForce 2 平台测试中的页面容量只有 16KB,我们在 P75P 平台上进行的 1.5GB 单通道(页面容量降低为 16KB)测试也反映出这一点 ,PCMark04 的分值非常接近。另外,这可能也与 nForce2 的页面管理策略以及 tRAS 并不是越大越好有关。通过前面的技术分析,我们知道它是一个相对参数,不是说越大或者越小,性能就肯定会越好,它还要结合具体的情况而定,它应该与页面数、页面容量和芯片组的管理能力之间有一个比较好的平衡点。由于时间的关系,我们没有进行 15 以下的 tRAS 的测试,毕竟我们这次不是针对某一芯片组的优化探讨,而是从一个总体上讲述总的优化原则。但从一些论坛的反映来看 ,11 似乎是一个比较好设置水平,普遍反映它比 tRAS=5 时的性能要好,有兴趣的朋友可以自己试试。

九、BL 与内存刷新率对性能的影响

既然 Q3 对内存性能如此感冒,我们就在华硕的 P4C800 主板上进行了其他的实验—— BL 与内存刷新率的调整。下图就是 P4C800 的 BIOS 中内存设置的介面 ,P4P800 与之相同。

将 Configure DRAM Timing by SPD 设为 Disable 后,会出现 BL(DRAM Burst Length)的调节选项 ,我们将其调成 4,然后再进行 Q3 测试。

测试的结果令人称奇。我们在 2GB 的内存容量下,Fastest 模式下较原来的 BL=8 提高了两帧 ,HQ 与 HQ(1280 X 1024)模式下也都提高了 1 帧,这是很不错的成绩嘛。看到这里,可能会有人奇怪,不是听说 BL 越长越好吗?怎么会这样?其实,原因在上文已经讲到,当 875 组成双通道时,接口的位宽是 128bit,合 16 个字节。而与 CPU 交换数据的基本单位是 64 字节,所以双通道时只需传输 4 个周期即可。因此,大多数情况下 BL=4 是双通道 Pentium4 主板的一个更佳的选择。BL=8 虽然一次能传送 128 字节,但如果遇到不需要传送这么多的时候(小数据传输)反而会耽误时间。不过,在单通道主板或非 875 这种类型的双通道主板上 ,BL=8 则是正确的选择。可见,BL 这个参数,不能像 CL 那样可以予以定论。总之,如果是双通道 Pentium4 或 AMD 64 的用户,当你的日常工作很普通,没有什么大数据量的读写应用 ,BL=4 可能会比较适合,如果经常进行大规模数据处理,可能 BL=8 反而更好。后来,在进一步的 Q3 测试中,我们还发现小 tRAS 似乎更适合采用短 BL,大 tRAS 则与长 BL 是个好的组合。

接着我们在 BIOS 设置中打开图中画红圈的内存刷新率选项。其中除了 AUTO 之外,还有 15.6 μ s、7.8 μ s、64 μ s、64T 几个选项。不明白意思的人,可能就会想肯定是越小越好,其实不然。

目前市场上的内存模组基本都是采用 32M × 8bit 的 256Mb 芯片,这类芯片的刷新设计都是 8K/64ms,也就是说刷新周期是 7.8125 μ s,意味着每隔 7.8125 μ s 刷新一行,此时如果赶上要进行操作就只能自认倒霉,所以加大刷新间隔将有助于降低“自认倒霉”的概率。主板 BIOS 中所提供的就是这一选项,其中的 64T,笔者分析 T 可能是指时钟周期,如果是 DDR-400 的话 ,T 就是 5ns,64T 就是 320ns,这是非常短的,而此次测试所使用的内存正常情况下是 7.8 μ s 的刷新率,那么我们就可以调高一倍至 15.6 μ s。

测试的结果,Q3 在 Fastest 模式下,在 BL=4 的基础上再次增加 3 帧的的成绩,HQ 与 HQ(1280 X 1024)模式下也都再次提高了 1 帧。不过,当我们把刷新率再往高调,似乎就没有什么作用了。需要注意的是,刷新率不宜调得过长,否则可能会引起数据丢失,导致系统的不稳定 ,15.6 μ s 应试是一个比较好的选择。另外,P4C800/P4P800 中 BIOS 中的 DRAM Idle Timer(空闲计时)对内存性能的影响并不大,建议设为 Auto 即可。

小资料:内存是怎么刷新的

 

 

 

 

之所以称为 DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是 DRAM 最重要的操作。

刷新操作与预充电中重写的操作一样,都是用芯片内的读出放大器先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有 L-Bank 中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有 L-Bank 预充电不同的是,这里的行是指所有 L-Bank 中地址相同的行,而预充电中各 L-Bank 中的工作行地址并不是一定是相同的。

那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是 64ms(毫秒 ,1/1000 秒),也就是说每一行刷新的循环周期是 64ms。这样刷新速度就是:行数量 /64ms。我们在看内存规格时,经常会看到 4096 Refresh Cycles/ 64ms 或 8192 Refresh Cycles/64ms 的标识,这里的 4096 与 8192 就代表这个芯片中每个 L-Bank 的行数。刷新命令一次对一行有效,发送间隔也是随总行数而变化 ,4096 行时为 15.625 μ s(微秒,1/1000 毫秒),8192 行时就为 7.8125 μ s。目前,256Mbit 的芯片基本都是 8K/64ms 的刷新设计。

刷新操作分为两种:自动刷新(Auto Refresh,简称 AR)与自刷新 (Self Refresh,简称 SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于 AR,SDRAM 内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址,或者说 CAS 在 RAS 之前有效。所以 ,AR 又称 CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有 L-Bank,因此在刷新过程中,所有 L-Bank 都停止工作,而每次刷新所占用的时间为 9 个时钟周期 (PC133 标准),之后就可进入正常的工作状态,也就是说在这 9 个时钟期间内,所有工作指令只能等待而无法执行。64ms 之后则再次对同一行进行刷新,如此周而复始进行循环刷新。显然,刷新操作肯定会对 SDRAM 的性能造成影响,但这是没办法的事情,也是 DRAM 相对于 SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同时所付出的代价。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章