Cómo borrar la caché de la CPU L1 y L2

Posible duplicado:
CPU cache flush

Estoy ejecutando un punto de referencia en el servidor xeon, y repito las ejecuciones 2-3 veces. Me gustaría borrar los contenidos de la memoria caché en L1 y L2 mientras repito las ejecuciones. ¿Puedes sugerir algún método para hacerlo?

Intente leer datos repetidamente grandes a través de la CPU (es decir, no por DMA). Me gusta:

int main() { const int size = 20*1024*1024; // Allocate 20M. Set much larger then L2 char *c = (char *)malloc(size); for (int i = 0; i < 0xffff; i++) for (int j = 0; j < size; j++) c[j] = i*j; } 

Sin embargo, dependiendo del servidor, un problema mayor puede ser un caché de disco (en memoria) y luego un caché L1 / L2. En Linux (por ejemplo) drop usando:

  sync echo 3 > /proc/sys/vm/drop_caches 

Editar: es trivial generar un progtwig grande que no haga nada:

 #!/usr/bin/ruby puts "main:" 200000.times { puts " nop" } puts " xor rax, rax" puts " ret" 

Ejecutar varias veces bajo diferentes nombres (código producido no el guión) debería hacer el trabajo