Estoy tratando de entender el significado del evento LLC-prefetch-misses perf para Sandy Bridge.
Desde la fuente del kernel de Linux veo la definición del evento:
[ C(OP_PREFETCH) ] = { [ C(RESULT_ACCESS) ] = SNB_DMND_PREFETCH|SNB_L3_ACCESS, [ C(RESULT_MISS) ] = SNB_DMND_PREFETCH|SNB_L3_MISS, }, donde: SNB_DMND_PREFETCH = (SNB_PF_DATA_RD|SNB_PF_RFO) apunta a los bits 4-5 del registro de eventos, mientras que SNB_L3_MISS = (SNB_DRAM_ANY|SNB_NON_DRAM) apunta a los bits 22-36 del registro de eventos.
Al leer el Manual del desarrollador de software de las arquitecturas Intel® 64 e IA-32 , volumen 3, capítulo 18.3.4.5, encuentro que:
SNB_DMND_PREFETCH representa "Request_Type" y SNB_L3_MISS representa los campos "Response_Type" de los registros de eventos MSR_OFFCORE_RSP_x
Petición:
Respuesta:
Sin embargo, no puedo entender el significado de la "Respuesta" en el contexto de la captación previa.
Además, encontré esta definición en algunas diapositivas de cursos:
Prefetch Hit: Prefetched line that was hit in the cache before being replaced (miss avoided)
Prefetch Miss: Prefetched line that was replaced before being accessed
¿Alguna sugerencia sobre el significado de los eventos LLC-prefetch y LLC-prefetch-misses ? ¿Son relevantes las definiciones anteriores?
Gracias.
El evento LLC-prefetch-misses ocurre para una captación previa de hardware L2 de cualquier tipo (DATA_RD o RFO) donde la línea de caché de destino no se suministró desde una caché de CPU. Una captación previa de hardware L2 se genera solo cuando la línea de destino no existe en la misma memoria caché L2 en el estado de coherencia requerido (E o M, para una captación previa RFO, o S, para una captación previa DATA_RD).
El procesamiento de una transacción de captación previa puede requerir la indagación de cachés privados de otros núcleos en el mismo dominio NUMA o la indagación de cachés en otros dominios NUMA. El indicador SNB_DRAM_ANY en la definición del evento significa que el evento incluye todos los casos de espionaje. Los únicos dos requisitos para un evento de tipo LLC-prefetch-misses es que se trate de una solicitud de recuperación previa de hardware L2 y que el proveedor no sea una caché de CPU. El proveedor en este caso suele ser un controlador DRAM local o remoto.
El evento LLC-prefetch incluye LLC-prefetch-misses en el sentido de que incluye los casos en los que el proveedor es un caché de datos de CPU (L3, L2 o L1D). Una captación previa de L2 que acierta en la L3 se cuenta por LLC-prefetch pero no por LLC-prefetch-misses . El recuento LLC-prefetch es al menos tan grande como LLC-prefetch-misses .