如何提高DDR内存的burst写入效率

oncancel 2010-06-08 10:54:47
我用的 ARM6410 (532MHz) + mDDr(外频133MHz)系统,burst为8。

我的程序里有大量的形如
N=19200;
for (i=0; i<N; i++)
{
a[i] = b[i]*c+d;
}
这样的数组读写代码。

对于数组读取,因为有cache,一次性读8个32位数据效率很高,

但是对于写入就适得其反,无论写入的是1字节还是4个字节,写回操作费时都与写回8个32位数据一样。因此,上面的循环每秒只能循环20M次左右。

如果使用汇编,可以使用stmia指令一次性写入8个32位数据,但我觉得在C里面大量嵌入汇编代码很难维护。

1。我上面描述的“无论写入的是1字节还是4个字节,写回操作费时都与写回8个32位数据一样”,这种理解是否有误?写缓冲为什么不能像读缓冲一样高效率工作?

2。已知我的循环会顺序写回一个数组的情况下,能否配置写缓冲,满8个脏数据再一次写入?
...全文
2467 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oncancel 2010-06-09
  • 打赏
  • 举报
回复
upupupupupupupupupup
jbb0523 2010-06-09
  • 打赏
  • 举报
回复
6410坛子里有很多人在用吧,帮你顶起吧,又落到第二页了。。。

19,523

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧