Arm schrieb:
> LDRD wird als 2 Instruktionen ausgeführt, diese kann aber nicht durch
> eine exception unterbrochen werden (s. B1 - 543, im Kontrast zu LDM).
An der Stelle wird LDRD/STRD nicht erwähnt und in A3.5.3 (S.80) heißt es
1 | LDM, LDC, LDC2, LDRD, STM, STC, STC2, STRD, PUSH, POP, VLDR, VSTR,
|
2 | VLDM, VSTM, VPUSH, and VPOP instructions are executed as a sequence
|
3 | of word-aligned word accesses.
|
4 | (...)
|
5 | If an instruction is executed as a sequence of accesses according to
|
6 | these rules, some exceptions can be taken in the sequence and cause
|
7 | execution of the instruction to be abandoned. On exception return,
|
8 | the instruction that generated the sequence of accesses is re-executed
|
9 | and so any accesses that had already been performed before the exception
|
10 | was taken might be repeated.
|
> Damit sollte LDRD auf single cores effektiv doch atomar sein?
Ich würde mich nicht darauf verlassen.
Außerdem darf man "core" nicht zu eng sehen. Zum Beispiel ist DMA auch
ein Bus Master, genau wie die CPU und beide sind (nur) per 32 Bit
angebunden. Theoretisch(?) könnte ein Buffer per DMA gefüllt werden und
zur Verarbeitung liest jemand mit LDRD.