44b0x的cache加速的疑惑44b0x没有remap功能,中断的初始部分代码必须在flash中执行,我用定时器去测中断响应时间,但是结果很奇怪。
完全禁止cache时,时间为27uS
当flash区禁止而SDRAM允许cache时,时间为14uS,
当flash区和SDRAM都允许cache时,时间为4uS,
由于程序比较短小,而中断又很频繁,所以中断向量代码被cache命中是可能的,不解的是,我的中断程序在flash中的部分一共就19条指令,且没有循环,flash存储器配置为16位,访问时间为等待6周期,主频64M,这样算下来,从flash中读取19条指令总工也只有3.8uS,flash被cache时怎么会节省10uS之多呢?
注:计算flash代码量的时候已经将 ldr r0,=xxxx这样的伪指令按两条指令计算了,实际指令是17条。
测量时间的方法: 测量方法:启动定时器,进入用户定时器中断程序时立即读出定时器当前计数值,与reload值之差即为中断发生到中断函数被执行的时间.44b0的手册上说,当定时器溢出时,申请中断并reload计数值继续计数,那么中断发生后,定时器是从reload值开始递减的,reload与当前值之差就是中断响应的时间.
|