打印

查表应用中提高DIMM效率的办法

[复制链接]
1447|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星之火红|  楼主 | 2012-11-9 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  在使用DIMM(或DDR2/DDR3 SDRAM颗粒)的时候,很重要的一点是提高DIMM的带宽利用率。DIMM命令总线上传输一个命令,需要在数据总线上传输若干组数据,在进行一个读写操作的间隙,在命令总线输入一个行切换命令,此时数据总线上传输的还是之前一个命令的数据。因此,如果执行的是其他BANK的行切换命令,当前读写的BANK是不受影响的,不需要等待行切换结束再执行读写操作;如果是当前访问的BANK需要执行行切换,则只能等新的行被打开以后才能操作。因此,提高DIMM带宽利用率的关键在于减少BANK内行切换的等待时间,可以通过不连续访问同一个BANK的方法来消除行切换的等待时间。例如,可以依次访问一个DIMM的8个BANK,重复这个循环,在访问其他BANK的时候对空闲的BANK进行行切换,这样就消除了行切换时间对接口带宽的影响。在这种访问控制中,需要知道每一个BANK的下一次操作是在哪一行,需要对访问请求队列进行分析。       如果DIMM是用来做数据缓存,可以通过将数据依次连续的存放在DIMM的不同BANK内,避免同一个BANK的行切换等待时间。但是,如果DIMM是用来查表的,那么表项的地址是毫无规律,无法做到不连续访问同一个BANK。为了解决这个问题,可以在访问请求(读或者写)发送到DIMM之前,将所有的访问请求进行一个排序,将访问顺序打乱,尽量让对同一个BANK的访问隔开。例如,在访问请求队列里面有十个请求,分别是对BANK0、BANK3、BANK3、BANK2、BANK2、BANK5、BANK7、BANK4、BANK6、BANK6的访问,可以将访问顺序调整为BANK3、BANK2、BANK0、BANK5、BANK3、BANK2、BANK6、BANK7、BANK4、BANK6。这样子在对BANK2、BANK0、BANK5的访问时,就可以对BANK3执行行切换,再次对BANK3进行访问时,就不需要等待行切换时间了。当这一组查表操作结束后,需要按照访问请求的原始顺序,将读写的结果返回到应用层逻辑。当然,打乱了访问的顺序对某些查表应用来说是不允许的,需要其他的办法来消除顺序打乱带来的影响。

相关帖子

沙发
星星之火红|  楼主 | 2012-11-9 22:26 | 只看该作者
   另外,读写切换也是会导致带宽利用率降低的,因为读写是共用同一组数据总线。写操作在写命令下发后马上可以写入数据,而读操作的数据要在较长时间后才会出现在数据总线上。不论是由读切换到写还是由写切换到读,都是需要调度数据总线,确保读写不冲突。因此,在DIMM的使用过程中,应尽量避免读写切换过于频繁。最好是一次性执行多个读(写)命令,再连续执行多个写(读)命令。
        如果用的是Xilinx的FPGA与DIMM对接,他们的MIG生成的DDR控制器中同时只能打开4个bank。如果需要打开第五个bank,控制器就会把前4个先关掉,这个过程也是比较浪费DIMM带宽的。而DDR控制器同时打开的bank数是可以通过参数修改的,建议通过改参数将同时打开bank数调整为8。

使用特权

评论回复
板凳
wmsk| | 2012-11-9 22:40 | 只看该作者
这个不错。

使用特权

评论回复
地板
GoldSunMonkey| | 2012-11-9 23:15 | 只看该作者
这个真不错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1782

帖子

22

粉丝