我对ARM cortex A8中PLD指令的使用有些怀疑。当我在循环中使用指令时,存在超出内存访问的可能性。我怀疑的是,这是否会导致分段错误。我在ARM manual which states that
中读到了因为PLD指令被所有级别的高速缓存处理为任何其他加载指令,所以PLD指令遵循标准数据依赖性规则和逐出过程。在PLD执行的任何阶段,如果发生地址转换错误,缓存命中或中止,则忽略PLD指令。
因此,如果进行了超出范围的内存访问,则忽略相应的PLD指令或不是我的疑问。
答案 0 :(得分:5)
PLD指令不会产生分段错误。如果PLD要求内存系统到达非现有内存区域,则会被忽略。
来自ARM ARM
预加载指令是提示,因此实现可以将它们视为NOP而不影响功能 设备的行为。 说明不会生成同步数据中止异常,而是内存系统 在特殊情况下,操作可能会生成异步中止。
...
但是,由于这些存储器系统之一而执行了存储器操作 提示可能会触发异步事件,从而影响处理器的执行。例子 可能被触发的异步事件是异步中止和中断。