2011-07-10 25 views
18

Tengo esta pregunta en mi tarea esta semana, y no entiendo cómo se pueden vencer los cachés, o cómo puedo mostrarlo con un programa de ensamblaje. ¿Puede alguien señalarme en la dirección correcta?¿Cómo se pueden vencer los cachés?

Muestre, con ejemplos de programas de ensamblaje, cómo pueden vencerse las dos cachés diferentes (Mapeo asociativo y directo). Explique por qué ocurre esto y cómo puede solucionarse. ¿Son los mismos programas utilizados para derrotar a los cachés de la misma?

Nota: Esta es la tarea. No solo responda la pregunta por mí, no me ayudará a comprender el material.

+1

Por favor, simplemente marque esto como tarea la próxima vez. –

+1

Gracias por identificarse correctamente como tarea :) repite para usted –

+11

Recibe un voto favorable no solo por admitir el trabajo a domicilio, sino también por tener claro que desea comprender el material. –

Respuesta

6

Un caché está ahí para aumentar el rendimiento. De modo que anular una caché significa encontrar un patrón de acceso a memoria que disminuye el rendimiento (en presencia de la caché) en lugar de aumentarlo.

Tenga en cuenta que la memoria caché es de tamaño limitado (más pequeña que la memoria principal, por ejemplo), por lo que normalmente la derrota implica llenarla de manera que descarta los datos a los que está a punto de acceder, justo antes acceder a él.

+0

Entonces, estoy en lo cierto al pensar que la mejor manera de mostrar esto sería simplemente crear un bucle que sea al menos una línea de caché mayor que el tamaño de la caché, o una combinación de un bucle y leer/almacenar datos que tendría que estar dividido en dos líneas de caché? – John

+0

Estás pensando en la línea correcta, sí. Aunque tenga en cuenta que está tratando de encontrar un patrón que sea menos eficiente con el caché que sin él. Dependiendo de los detalles exactos de la memoria caché, simplemente leer una gran cantidad de datos de forma secuencial probablemente no la vencerá (es posible que no obtenga mucho beneficio de ella, pero tampoco le hará daño). El truco es encontrar un patrón donde el costo de la memoria caché exceda el beneficio que le brinda. –

3

Si está buscando una pista, piense en dividir una palabra de datos en 2 líneas de caché.

(En caso de que también está buscando la respuesta, un problema similar fue encontrado por los desarrolladores x264 - más información disponible here y here Los enlaces son muy informativo, y realmente sugieren que las lee incluso después. He encontrado tu respuesta.)

0

Otra cosa a tener en cuenta es si los cachés que manejas están virtual o físicamente indexados/etiquetados. En algunas variantes, alias de caché fuerza reemplazos de línea incluso si el caché como tal no está completamente lleno. En otras variantes, colisiones de colores de caché/página pueden causar desalojos. Finalmente, en sistemas multiprocesador bajo ciertas cargas de trabajo, migraciones de caché (entre las cachés de diferentes CPU) pueden limitar la utilidad de las cachés de CPU.

Cuestiones relacionadas