2009-12-24 15 views
6

Leggere alcune grandi presentazioni sul calcolo a bassa latenza. Avevano un riferimento all'operazione cache dei dati del compilatore XL C/C++ IBM __dcbt (Data Cache Block Touch) per il compilatore cell. L'operazione carica un blocco di memoria nella cache L1.Visual Studio supporta le operazioni di cache dei dati?

Does Visual Studio (o G ++ o Intel) hanno funzionalità simili per processori Intel? Se è così e la soluzione è specifica per la piattaforma (cioè solo Windows o * nix), si prega di dirlo.

+1

Vorrei specializzarsi questa domanda per includere il concetto di ciò che accade dopo il blocco viene caricato. È soggetto alla stessa logica di ritiro o rimarrà nella CPU fino a quando non viene scaricato esplicitamente? –

+1

Nel caso dell'hardware Intel attuale, un blocco prefetched è soggetto alla stessa dismissione di qualsiasi altro blocco. Non è bloccato nella cache. – Crashworks

risposta

4

Sì, Visual Studio supporta tutte le operazioni intrinseche SSE e MMX. Le operazioni di controllo della cache sono descritte brevemente qui: http://www.tommesani.com/SSECacheabilityControl.html e spiegate a lungo in Intel's instruction set reference.

Microsoft documents their intrinsics for cache control at MSDN. Sebbene assomiglino a funzioni, il compilatore in realtà riduce le istruzioni hardware appropriate. Assicurati di controllare entrambe le istruzioni di controllo della cache SSE1 e SSE2, che elencano in categorie separate (vedi l'albero in espansione sul lato sinistro della pagina).

La x86 equivalente a dcbt è _mm_prefetch. Non esiste un equivalente diretto a dcbz, ma l'analogo più vicino è _mm_stream_si128.

credo GCC utilizza gli stessi nomi intrinseci (come sono prese dal compilatore Intel).

Problemi correlati