Forum: Mikrocontroller und Digitale Elektronik ARM Memory Barrier Instruktionen


von Klaus (Gast)


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?

von (prx) A. K. (prx)


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.

von Klaus (Gast)


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?

von (prx) A. K. (prx)


Lesenswert?

Die Funktion von DMB ist in DSB implizit enthalten.

von Klaus (Gast)


Lesenswert?

Ah, okay! Vielen Dank!

von (prx) A. K. (prx)


Lesenswert?

Anders ausgedrückt: DMB stellt eine Barriere ausschliesslich für 
Speicheroperationen aus externer Sicht dar, DSB hingegen ist eine 
Barriere für alles, einschliesslich der Befehlsausführung des 
Prozessors.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.