这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 44b0x的cache加速的疑惑

共3条 1/1 1 跳转至

44b0x的cache加速的疑惑

菜鸟
2007-04-06 17:36:27     打赏

44b0x没有remap功能,中断的初始部分代码必须在flash中执行,我用定时器去测中断响应时间,但是结果很奇怪。

完全禁止cache时,时间为27uS

当flash区禁止而SDRAM允许cache时,时间为14uS,

当flash区和SDRAM都允许cache时,时间为4uS,

由于程序比较短小,而中断又很频繁,所以中断向量代码被cache命中是可能的,不解的是,我的中断程序在flash中的部分一共就19条指令,且没有循环,存储器配置为16位,访问时间为等待6周期,主频64M,这样算下来,从flash中读取19条指令总工也只有3.8uS,flash被cache时怎么会节省10uS之多呢?

不解,哪位大侠分析一下?




关键词: 44b0x     cache     加速     疑惑    

菜鸟
2007-04-06 21:19:00     打赏
2楼

flash是SST39VF160,90nS的,64M主频下,6cycles是93.75nS,可以满足要求,每次访问不到100nS。16bit接口,每条指令要两个存储器访问周期,不到200nS,所以说19条指令只需3.8uS.

6cycles不是core等待时间,而是总线接口等待时间,core等待时间不止6cycles,应该不了15cycles,即使达到15cycles,那也不用10uS啊。

还是想不明白。

注:计算flash代码量的时候已经将 ldr r0,=xxxx这样的伪指令按两条指令计算了,实际指令是17条。


菜鸟
2007-04-12 19:00:00     打赏
3楼

还是有疑问,我不明白的是flash被cache和禁止cache时为什么会相差10uS.因为相差的时间仅仅是从flash里取指的时间,而ldr和str指令操作的是sdram,不管flash是不是被cache,这个时间是固定的.我的程序很短小,只要被允许,不管是sdram还是flash,肯定会被cache命中.

至于内核到总线的时间,我倒是要研究一下,主观感觉上有些不合理,如果存储器比cpu慢,内核总是在饥饿状态,流水线应该是连续取指才对.

测量方法:启动定时器,进入用户中断程序时立即读出定时器当前计数值,与reload值之差即为中断发生到中断函数被执行的时间.44b0的手册上说,当定时器溢出时,申请中断并reload计数值继续计数,那么中断发生后,定时器是从reload值开始递减的,reload与当前值之差就是中断响应的时间.

[align=right][color=#000066][此贴子已经被作者于2007-4-12 11:04:05编辑过][/color][/align]

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]