caching - ¿Cache-line-ping-pong y falso compartiendo lo mismo?
multicore computer-architecture (1)
Resumen:
El intercambio falso y el ping-pong de la línea de caché están relacionados, pero no son lo mismo. El intercambio falso puede causar el ping-pong de la línea de caché, pero no es la única causa posible, ya que el ping-pong de la línea de caché también puede ser causado por el verdadero intercambio.
Detalles:
Compartir falso
El intercambio falso se produce cuando diferentes subprocesos tienen datos que no se comparten en el programa, pero estos datos se asignan a una línea de caché que se comparte. Por ejemplo, imagine un programa que tenía una matriz de enteros donde un hilo ejecutado lee y escribe en todas las entradas de la matriz con un índice par, y el otro hilo realiza lecturas y escribe en las entradas con un índice impar. En este caso, los subprocesos en realidad no compartirían datos, sino que compartirían líneas de caché, ya que cada línea de caché contendría valores impares e incluso indexados (suponiendo que la línea de caché fuera más grande que un entero, lo que suele ser cierto).
Cache-line ping-pong
El ping pong de línea de caché es el efecto donde una línea de caché se transfiere entre varias CPU (o núcleos) en rápida sucesión. Esto puede ser debido a un intercambio falso o verdadero. Esencialmente, si varias CPU intentan leer y escribir datos en la misma línea de caché, es posible que esa línea de caché deba transferirse entre los dos subprocesos en una sucesión rápida, y esto puede causar una degradación significativa del rendimiento (posiblemente incluso un rendimiento peor que si una sola hilo se estaban ejecutando). El intercambio falso puede hacer que este problema sea particularmente difícil de detectar, ya que un programador podría haber intentado escribir una aplicación para que los subprocesos no compartieran datos, sin darse cuenta de que los datos se asignaron a la misma línea de caché. Pero el intercambio falso no es la única causa posible de ping-ponging de línea de caché. Esto también podría deberse a un verdadero intercambio en el que varios subprocesos intentan leer y escribir los mismos datos.
Para mi tesis de licenciatura tengo que evaluar problemas comunes en sistemas multinúcleo.
En algunos libros he leído sobre el intercambio falso y en otros libros sobre cache-line-ping-pong. Los problemas específicos suenan muy familiares, ¿son estos los mismos problemas pero se les dan otros nombres? ¿Alguien me puede dar nombres de libros que traten estos temas en detalle? (Ya tengo literatura de Darry Glove, Tanenbaum, ...)