使用PLD指令

时间:2012-10-30 13:18:13

标签: arm cpu-cache mmu cortex-a8

我对ARM cortex A8中PLD指令的使用有些怀疑。当我在循环中使用指令时,存在超出内存访问的可能性。我怀疑的是,这是否会导致分段错误。我在ARM manual which states that

中读到了
  

因为PLD指令被所有级别的高速缓存处理为任何其他加载指令,所以PLD指令遵循标准数据依赖性规则和逐出过程。在PLD执行的任何阶段,如果发生地址转换错误,缓存命中或中止,则忽略PLD指令。

因此,如果进行了超出范围的内存访问,则忽略相应的PLD指令或不是我的疑问。

1 个答案:

答案 0 :(得分:5)

PLD指令不会产生分段错误。如果PLD要求内存系统到达非现有内存区域,则会被忽略。

来自ARM ARM

  
    

预加载指令是提示,因此实现可以将它们视为NOP而不影响功能     设备的行为。 说明不会生成同步数据中止异常,而是内存系统     在特殊情况下,操作可能会生成异步中止。

         

...

         

但是,由于这些存储器系统之一而执行了存储器操作     提示可能会触发异步事件,从而影响处理器的执行。例子     可能被触发的异步事件是异步中止和中断。