2009-12-24 8 views
6

Lesen Sie einige großartige Präsentationen auf Low-Latency-Computing. Sie hatten einen Verweis auf IBM XL C/C++ - Compiler-Daten-Cache-Operation __dcbt (Data Cache Block Touch) für ihre cell Compiler. Die Operation lädt einen Speicherblock in den L1-Cache.Unterstützt Visual Studio Daten-Cache-Vorgänge?

Hat Visual Studio (oder G ++ oder Intel) ähnliche Funktionen für Intel Prozessoren? Wenn dies der Fall ist und die Lösung plattformspezifisch ist (z. B. Windows oder * nix), sagen Sie dies bitte.

+1

Ich möchte diese Frage spezialisieren, um die Vorstellung einzubeziehen, was passiert, nachdem der Block geladen wurde. Unterliegt es der gleichen Ruhestandslogik oder verbleibt es in der CPU, bis es explizit entladen wird? –

+1

Im Falle der heutigen Intel-Hardware unterliegt ein Prefetch-Block dem gleichen Ruhestand wie jeder andere Block. Es ist nicht im Cache gesperrt. – Crashworks

Antwort

4

Ja, Visual Studio unterstützt alle intrinsischen SSE- und MMX-Operationen. Die Cache-Steuervorgänge werden hier kurz beschrieben: http://www.tommesani.com/SSECacheabilityControl.html und ausführlich in Intel's instruction set reference erläutert.

Microsoft documents their intrinsics for cache control at MSDN. Obwohl sie wie Funktionen aussehen, kocht der Compiler sie tatsächlich auf die entsprechende Hardware-Anweisung herunter. Stellen Sie sicher, dass Sie sowohl ihre SSE1- als auch SSE2-Cachesteueranweisungen lesen, die sie in separaten Kategorien auflisten (siehe den expandierenden Baum auf der linken Seite ihrer Seite).

Das x86-Äquivalent zu dcbt ist _mm_prefetch. Es gibt keine direkte Entsprechung zu dcbz, aber das nächste Analog ist _mm_stream_si128.

Ich glaube, GCC verwendet die gleichen intrinsischen Namen (wie sie aus dem Intel-Compiler entnommen werden).