Использование инструкции PLD

У меня есть некоторые сомнения относительно использования инструкции PLD в ARM cortex A8. Поскольку я использую инструкцию внутри цикла, существует возможность доступа к внешней памяти. Я сомневаюсь, что это вызовет ошибку сегментации или нет. Я прочитал в руководстве ARM, в котором говорится что

Поскольку инструкция PLD обрабатывается как любая другая инструкция загрузки всеми уровнями кэша, инструкция PLD следует стандартным правилам зависимости данных и процедурам вытеснения. На любом этапе выполнения PLD инструкция PLD игнорируется в случае ошибки преобразования адреса, попадания в кэш или прерывания.

Таким образом, если осуществляется доступ к памяти за пределами связанной памяти, соответствующая инструкция PLD игнорируется или нет, я сомневаюсь.


person Rugger    schedule 30.10.2012    source источник
comment
+1: Отличный вопрос, я сам задавался этим вопросом, но никогда не удосужился проверить это.   -  person Leo    schedule 31.10.2012
comment
Спасибо за вопрос @Rugger Я сам столкнулся с этим несколько лет назад. Ответ ниже правильный.   -  person poloolop    schedule 26.02.2014


Ответы (1)


Инструкция PLD не создает ошибку сегментации. Если PLD запрашивает у системы памяти доступ к несуществующей области памяти, это игнорируется.

От АРМ АРМ

Инструкции предварительной загрузки являются подсказками, поэтому реализации могут рассматривать их как NOP, не влияя на функциональное поведение устройства. Инструкции не генерируют исключения синхронного прерывания данных, но операции системы памяти могут в исключительных обстоятельствах генерировать асинхронные прерывания.

...

Однако операция с памятью, выполненная в результате одного из этих указаний системы памяти, может вызвать асинхронное событие, что повлияет на выполнение процессора. Примерами асинхронных событий, которые могут быть инициированы, являются асинхронные прерывания и прерывания.

person auselen    schedule 30.10.2012