¿Intel Q8200 tiene prefetcher de caché?

0

Los procesadores Intel basados ​​en la microarquitectura Intel deberían admitir la captación previa de hardware de caché .

Estoy usando un Q8200 pero no puedo encontrar ninguna opción en el BIOS para habilitar / deshabilitar el prefetcher. También modifiqué el MSR 0x1A0 pero parece no producir efectos en el rendimiento (lo medí a través de un punto de referencia de memoria).

Por lo tanto, sospecho que Q8200 no tiene prefetcher de hardware de caché. Además, en la hoja de datos del prefetcher de caché de la serie Q8000 nunca se menciona.

¿Alguien puede confirmar o negar mi duda?

RicoRico
fuente
1
¿Qué intentas hacer realmente?
Journeyman Geek
Mida los efectos en el caché de procesos particulares en un sistema Linux en tiempo real. Sin embargo, el prefetcher puede ensuciar mi medida.
RicoRico

Respuestas:

2

El procesador Intel Core 2 Quad 8200 se basa en la microarquitectura Intel Core .

Mirando los eventos del contador de rendimiento para esa microarquitectura (Capítulo 19.10 del Manual Intel 3 ), puede encontrar un evento llamado L2_LD (Core, Prefetch, Cache Line State) que lee

Este evento cuenta las solicitudes de lectura de caché L2 provenientes del caché de datos L1 y los captadores previos L2 . El evento puede contar ocurrencias:
• Para este núcleo o ambos núcleos.
• Debido a solicitudes de demanda y solicitudes de captación previa de hardware L2 juntas o por separado.
• De accesos a líneas de caché en diferentes estados MESI.

El caché L2 es el caché de último nivel para Yorkfield-6M (que es el núcleo que implementa la microarquitectura Core).

El Capítulo 35.1 también confirma que el MSR IA32_MISC_ENABLE (1a0h) tiene el bit 9 para deshabilitar los captadores previos.


Así, los prefetchers están allí.

La hoja de datos está destinada a ingenieros eléctricos, no describe la funcionalidad de la CPU, ya que es demasiado compleja y vale la pena separarla en un segundo volumen.

La comparación de los comportamientos internos de la CPU, como el prefetcher, es complicado. El prefetcher se activa solo por patrones específicos.
Es mejor medir, a través de eventos de rendimiento, las solicitudes de caché L2 debido al captador previo.

Cómo lograr esto está más allá del alcance de esta respuesta, pero puedes echar un vistazo a la herramienta de rendimiento .

Margaret Bloom
fuente
El problema es que después de deshabilitar los captadores previos a través de 0x1a0, la perfherramienta parece continuar registrando los eventos de captación previa, por lo que no estoy seguro de si los contadores de rendimiento no son confiables en este caso o modificar 0x1a0 no funciona.
RicoRico
1
@RicoRico ¿Qué eventos usaste? Después de un recorrido rápido por los manuales de Intel, usaría los eventos -e rD029,rC029en los que el primero cuenta la referencia L2 solo debido al PF y el segundo cuenta la referencia L2 sin el PF ( rF029contaría ambos). No soy un experto en perf , así que revise esta pregunta sobre la sintaxis correcta para especificar eventos personalizados. En este caso, el número de evento es 0x29 y las máscaras u son 0xd0, 0xc0 y 0xf0 respectivamente.
Margaret Bloom
1
@RicoRico Enmienda: las máscaras u deben ser 0xdf, 0xcf, 0xff. Y entonces los eventos deberían ser-e rDF29,rCF29,rFF29
Margaret Bloom,
¡Gracias! Los contadores de rendimiento predeterminados utilizados por perfno son probablemente los correctos. Desactivar prefetcher funciona y rDF29 informa 0!
RicoRico