El intercambio falso no conduce a resultados no válidos si existen protocolos de coherencia de caché. El efecto principal es que aumenta la invalidación de las líneas de caché, lo que en realidad no es necesario para un resultado correcto.
Ahora consideremos un ejemplo. Supongamos que hay una matriz de 8 enteros compartidos entre 2 procesadores. (Cuando digo procesadores, puede suponer que son centrales también compartiendo, por ejemplo, caché L2). Digamos que la matriz es un [0] -a [7]. Ahora veamos los pasos:
- El núcleo 0 quiere leer un [2].
- El núcleo 1 quiere escribir un [5]. Ahora la línea de caché está presente en 2 núcleos privados / locales (digamos L1).
- Ahora digamos que Core 1 quiere escribir en un [5]. Por lo tanto, debido a esta línea de caché en un [2] se invalidará.
Pero ahora piénsalo. ¿Fue necesario? La respuesta es no. Core 0 ni siquiera estaba accediendo al elemento a [5], pero aún así fue invalidado. Esto es falso intercambio.
En lo que respecta a sus preguntas, encuentre las respuestas de la siguiente manera:
Efecto del uso compartido falso: provoca invalidación innecesaria y esto obviamente aumenta el tráfico en el bus a medida que se transmiten más mensajes de invalidación innecesarios. No es responsable del resultado incorrecto. Los resultados incorrectos se deben a la implementación incorrecta del protocolo de coherencia de caché.
La CPU de hoy tiene protocolos de coherencia de caché como MESIF, MOESI, etc. Detectan el uso compartido, pero no creo que tenga sentido detectar si el uso compartido es verdadero o falso. Los arquitectos de la comunidad están interesados en conocer el valor, ya que les ayuda a diseñar el protocolo y encontrar el tamaño de línea de caché óptimo.
No, no puede conducir a condiciones de carrera. Eso dependerá nuevamente del protocolo de coherencia de caché.
- ¿Cuáles son los problemas en la educación en informática?
- ¿Por qué la biología se está volviendo cada vez más relevante en TI?
- ¿Qué tan bueno es el grupo de visión por computadora de Dropbox?
- ¿Qué problemas informáticos difíciles o sin resolver tienen más probabilidades de ser ignorados por aquellos nuevos en la programación?
- Estoy en primer año de ciencias de la computación, ¿cómo debo comenzar con mi trabajo de investigación?