我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 203|回复: 0

[业界/制造] 回答《手把手教你计算DDR的理论带宽》后台提问

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:198
  • 打卡月天数:0
  • 打卡总奖励:714
  • 最近打卡:2025-11-21 20:33:51

1940

主题

405

回帖

1712

积分

二级逆天

积分
1712
发表于 2025-6-4 23:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×

之前有留言提出问题: 235239ce207dd4.png
可以拆分成以下几个问题:
  • 如果使能auto-precharge之后,是否每一笔读写命令都会自带一个PRE?
  • 使能auto-precharge之后,对性能的收益
  • ACT-PRE之间可以插入多少笔读写命令


这里根据个人理解进行回答,如果有错,私密马赛~~

有其他DRAM相关问题,也欢迎留言讨论~

使能auto-prechange后,是否每一笔读写命令都会自带auto-precharge
首先第一个问题先给答案:使能auto-prechange后,不是每一笔读写命令都会自带auto-precharge。在解释前,需要提前了解一下DRAM页面策略(page policy)分为open-page policy和close-page policy。
  • open-page policy
    开页策略核心思想是,在一次访问后保持页面的打开状态,以便后续操作能够快速访问同一页面内的其他地址。开页策略在处理具有顺序访问模式的数据时特别高效,因为不需要频繁PRE和ACT打开页面,从而减少了延迟并提高了系统效率。如果数据访问模式符合“重复读取或写入同一页面内的连续地址”,理论上可以达到100%的效率,但实际应用中由于周期性刷新的影响,效率会有轻微损失(约2-3%)。此外,因为一直保持page open,访问同一页面内的不同column时不需要发送ACT命令,开页策略还可以最大程度地减少高优先级事务的延迟(主要减去tRCD带来的延迟)。
  • close-page policy
    在闭页策略下,每次访问一个内存页后,该页都会被立即关闭(即通过自动预充电命令)。这种策略适用于某些特定的数据访问模式,例如当数据访问模式不是集中于同一内存页,而是分散在多个不同页时。在这种情况下,系统的效率取决于连续页未命中的处理能力,而主要的效率损失则来tRCD, tRASmin, tRP的开销和周期性刷新操作。可以参考之前文章中随机访问场景,效率一般只有10%~20%。

如果每一笔读写命令都有auto-precharge命令,那么意味着每次访问都是ACT->WR/RD w/ auto-PRE, 这样一来连续同页访问就会被打断激活状态,成为随机访问场景,造成带宽利用率下降。参考之前文章,在随机场景下使用RDA或者WOMA命令,自带的auto-prechange操作也是需要满足tRP时序的。WR/RD w/ auto-precharge命令在完全随机的场景下,也没有收益。(这里仅考虑理想的连读地址访问和完全随机的地址访问场景)

auto-prechange命令的性能收益在哪
如果使能auto-precharge功能,在完成对当前page的最后一笔访问之后关闭page,那么该bank的下次其他page访问过来的时候,可以节省下发送PRE的时间(节省tRP的时间),直接发送ACT命令。这可以提升访问效率。
实际业务场景中,业务流不可能是非常理想的连续地址访问或者随机的地址访问。所以当前DDR控制器通常使用dynamic page policy。在DDR控制器中增加look-ahead逻辑,根据激励输入来决定是否发送auto-precharge命令。(各家叫法不一样,不过大概思想都是相似的)
比较简单的实现逻辑:在收到AXI激励后,DDRC将AXI地址拆解为bank-row-col地址。DDRC中收到命令后会将命令信息先存到Timer Bank Pool(TBP)。那么DDRC在调度命令时,会look-ahead TBP中的信息。当TBP中有相同bank-row的命令时,调度命令时就不发送auto-precharge命令。有同bank不同row的命令时,调度auto-prechareg命令。此外,还可以考虑引入刷新命令,close page timer,qos等等因素,通过仲裁逻辑来决定是否发送auto-precharge命令。

ACT-PRE之间可以插入多少笔读写命令
如果我们使用open-page policy,并且所有访问都是集中在同一个page policy。这里主要受限于刷新时序tREFI。以GDDR6为例子,ACT->PRE需要满足tRAS,而tRASmin是激活bank之后到发送PRE命令间隔的最小值,最大值为9 * tREFI。GDDR6中引入了postpond refresh或者pull-in refresh,从而让refresh命令调度更加灵活。但是协议规定最多可以postpond或者pull-in 8个refresh命令,所以tRASmax = 9 * tREFI。

考虑tRCD和tRP的影响,在访问同一个page的场景中,单独读/写命令分别需要满足tCCD:

单独读/写命令数量 = (tRASmax-tRP-tRCD) / tCCD
读写混合场景需要考虑读写切换引入的开销 tWTR/tRTW,假设每16次读命令切换一次写方向,16笔写命令切换一次读命令。计算tRASmax时间内,能够完成多少次读写切换次数,从而计算读写命令数量:

读写混合场景命令的数量 = (tRASmax-tRP-tRCD) / ((16 * tCCD + tWTR) + (16 * tCCD +

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请举报投诉

本站所有资料仅限参考学习交流,PCB原理图源码等所有资料不保证准确没问题,请不要用作生产。否则后果自负。

闽公网安备35062302000276号 | 闽ICP备2024076463号-1 | 论坛技术支持QQ群171867948 | 论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表