ARM Memory Barrier Instruktionen

Gast #2092574
Lesenswert?

Bei ARM gibt es die Instruktionen DMB (Data Memory Barrier) und DSB 
(Data Synchronization Barrier). Irgendwie verstehe ich nicht ganz den 
Unterschied. Aus den Erklärungen werde ich nicht ganz schlau: DMA - 
Ensure the order of observation of memory accesses, DSB - Ensure the 
completion of memory accesses.

Kann mir jemand den Unterschied erklären?
#2092588
Lesenswert?

DMB: Speicheroperationen vor DMB werden aus externer Sicht (z.B. Bus, 
Speicherinterface) vor Speicheroperationen nach DMB ausgeführt. Das 
bedeutet jedoch nicht notwendigerweise, dass die Speicheroperationen 
zusammen mit DMB beendet sind.

DSB: Alle Speicheroperationen vor DSB sind abgeschlossen wenn dieser 
Befehl beendet ist und der nächste Befehl wird erst anschliessend 
ausgeführt.

Praktisch heisst das:

DMB trennt die Speicheroperationen in jene davor und jene danach, 
beeinflusst aber keine anderen Befehle. Beispiel: Wenn man erst einen 
DMA-Pufferbereich beschreibt bevor man mit einem weiteren Speicherbefehl 
diesen Pufferbereich zum Abschuss freigibt.

DSB kann beispielsweise dann erforderlich sein, wenn man etwas an der 
Art ändert, wie der Prozessor auf den Speicher zugreift, denn das sollte 
erst dann durchgeführt werden, wenn keine Speicheroperationen mehr 
anstehen.
Gast #2092611
Lesenswert?

Wenn man einen Punkt braucht, an dem alle Speicheroperationen davor 
abgeschlossen sein müssen und nachfolgende Speicheroperationen nicht 
vorgezogen werden dürfen, braucht man dann beide Befehle oder nur DSB?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren