2009-12-24 12 views
6

Lectura de grandes presentaciones sobre computación de baja latencia. Tenían una referencia a la operación de caché de datos del compilador XL C/C++ de IBM __dcbt (Toque de bloque de caché de datos) para su compilador cell. La operación carga un bloque de memoria en la memoria caché L1.¿Visual Studio admite operaciones de caché de datos?

¿Tiene Visual Studio (o G ++ o Intel) una funcionalidad similar para los procesadores Intel? Si es así y la solución es específica de la plataforma (es decir, Windows o * nix solamente) dígalo.

+1

Me gustaría especializar esta pregunta para incluir la noción de lo que sucede después de que se carga el bloque. ¿Está sujeto a la misma lógica de jubilación, o permanecerá en la CPU hasta que se descargue explícitamente? –

+1

En el caso del hardware Intel actual, un bloque captado previamente está sujeto al mismo retiro que cualquier otro bloque. No está bloqueado en la memoria caché. – Crashworks

Respuesta

4

Sí, Visual Studio admite todas las operaciones intrínsecas de SSE y MMX. Las operaciones de control de caché se describen brevemente aquí: http://www.tommesani.com/SSECacheabilityControl.html y se explica detalladamente en Intel's instruction set reference.

Microsoft documents their intrinsics for cache control at MSDN. Aunque parecen funciones, el compilador realmente las reduce a la instrucción de hardware adecuada. Asegúrese de ver sus instrucciones de control de caché SSE1 y SSE2, que enumeran en categorías separadas (consulte el árbol desplegable en el lado izquierdo de su página).

El x86 equivalente a dcbt es _mm_prefetch. No hay un equivalente directo a dcbz, pero el análogo más cercano es _mm_stream_si128.

Creo que GCC usa los mismos nombres intrínsecos (ya que están tomados del compilador de Intel).

Cuestiones relacionadas