SFENCE vor non-temporal write?



  • Guten Morgen,

    ein neuer Tag, neue Probleme. Kaffee ist aufgesetzt, also kann es losgehen 😉

    Ich habe folgenden - simplen - Code:

    ; Achtung: Pseudocode
    
    ; [...]
    
    sfence				; nötig hier?
    
    movntdq [edi], xmm0
    movntdq 16[edi], xmm1
    movntdq 32[edi], xmm2
    movntdq 48[edi], xmm3
    
    ; [...]
    emms
    ret
    

    Die durch EDI referenzierte Speicherstelle wird nie - von mir - gelesen, sondern nur an dieser Stelle beschrieben. Daher bietet es sich an, non-temporal moves zu verwenden.

    Die Frage ist jedoch, ob die SFENCE Instruktion zuvor von nöten ist, um zu vermeiden, dass sich die referenzierte Speicherstelle evtl. im Speicher befindet und ohne das wissen des "verantwortlichen" Prozessors von einem (z.B.) einem anderen Kern im Cache verändert wird.

    Ich möchte SFENCE hier nur verwenden, wenn es zwingend erforderlich ist, da die Ausführung doch einige Zeit in Anspruch nimmt.

    Danke schon mal vorab.



  • Hast du das Problem inzwischen gelöst und möchtest die Lösung vielleicht uns allen mitteilen 🙂


Anmelden zum Antworten