¿Cuál es la diferencia entre los esquemas coherentes de caché de software y hardware?

La coherencia de caché trata de mantener todas las cachés en un sistema multiprocesador compartido para que sean coherentes con respecto a los datos cuando múltiples procesadores leen / escriben en la misma dirección.

Los esquemas de coherencia de caché de hardware se usan comúnmente, ya que se beneficia de un mejor rendimiento y una menor complejidad y problemas. Según el número de procesadores / cachés en el subsistema multiprocesador y las políticas de caché, existen diferentes protocolos de coherencia que se pueden implementar en el hardware para mantener coherentes todos los cachés. Algunos de los esquemas comúnmente utilizados son protocolos basados ​​en snoop ( funcionan bien para un número menor de procesadores / cachés ) y protocolos basados ​​en directorios ( más adecuados para sistemas más grandes ). Estos se pueden clasificar en función de los protocolos de actualización vs invalidación (en función de si los datos se transfieren a través de cachés o invalidan ) y en función del número de estados utilizados para rastrear los datos en el caché (MESI / MESIF / MOESI / MOESIF)

Los esquemas de coherencia de caché de software se implementan en el software y utilizan un vaciado de caché o una instrucción de invalidación de caché compatible con hardware. Si un procesador lee / escribe una dirección y almacena en caché la copia en su caché local, el software deberá ejecutar un “vaciado de caché” o “invalidación de caché” para esa dirección y asegurarse de que los últimos datos se escriban en la memoria antes de que otro procesador pueda usa esa misma dirección.

Ahora eso significa más instrucciones para ejecutar (haciendo esto más lento) y más complejidad si se comparte más espacio de direcciones entre las cachés para realizar un seguimiento de todas estas direcciones. Por lo tanto, los esquemas basados ​​en software no se usan comúnmente en un solo chip / clúster que tiene varios procesadores / cachés.

Algunas aplicaciones en las que todavía se usa la coherencia basada en software se encuentran en múltiples clústeres de CPU que pueden necesitar un espacio de direcciones más pequeño para compartir y con menos frecuencia (mientras que dentro de la coherencia del hardware del clúster sería más rápido), así como entre el espacio de direcciones compartido entre uno o más CPU y GPU cuando se integra en un sistema heterogéneo.

Los siguientes artículos de los blogs de la comunidad ARM también serán interesantes de leer.

  1. Procesadores ARM: coherencia del sistema extendida – Par…
  2. Procesadores ARM: explorando cómo la coherencia de caché A …