Other Parts Discussed in Thread: AMIC110
器件型号: AMIC110
您好、
我收到了一个有关 AMIC110 高速缓存的问题。 您能在下面帮助回答他们的问题吗?
<问题>
禁用缓存时、执行时间是否可能因.text 的放置地址而异?
如果是、您能解释原因吗?
<背景>
在 AMIC110 (Cortex-A8) 上、我们实现了一个简单的“for"循环“循环、迭代大约 3000 万次、如下所示:
对于 (int i = 0;i < 33554432;i++){
//操作简单
}
即使“for"循环“循环本身没有被修改、更改代码的不相关部分也会导致“for"循环“循环执行时间的差异。
当函数的地址从.text 分成一个具有固定地址的自定义段时、即使修改了不相关的代码、执行时间也不再变化。
经过调查、我们发现、如果“for"循环“循环指令适合 32 字节对齐、则执行速度会更快;如果它们跨越 32 字节边界、速度会变慢。
启用指令缓存可消除这种时序差异、因此我们认为这与从内部 SRAM 获取指令时一些特定于硬件的行为有关。
<条件>
- 未使用操作系统。
- 禁用中断。
- i-cache 和 D-cache 被禁用。
- 函数的.text 段放置在内部 SRAM 中。
谢谢。此致、
英明