Alias de contexto de caché de datos de Hyper-Threading
en el manual de Intel, la siguiente sección me confunde:
11.5.6.2 Modo compartido En el modo compartido, la caché de datos L1 se comparte de forma competitiva entre procesadores lógicos. Esto es cierto incluso si los procesadores lógicos utilizan registros CR3 y modos de paginación idénticos. En el modo compartido, las direcciones lineales en la caché de datos L1 pueden tener un alias, lo que significa que una dirección lineal en la caché puede apuntar a diferentes ubicaciones físicas. El mecanismo para resolver el aliasing puede conducir a thrashing. Por esta razón, IA32_MISC_ENABLE [bit 24] = 0 es la configuración preferida para procesadores basados en la microarquitectura Intel NetBurst que admiten la tecnología Intel Hyper-Threading.
como intel use VIPT (igual a PIPT) para acceder a la caché.
¿Cómo sucedería el alias de caché?
Respuestas
Basado en el Manual de referencia de optimización de arquitecturas Intel® 64 e IA-32 , noviembre de 2009 (248966-020), Sección 2.6.1.3:
La mayoría de los recursos de un procesador físico se comparten por completo para mejorar la utilización dinámica del recurso, incluidos los cachés y todas las unidades de ejecución. Algunos recursos compartidos que se direccionan linealmente, como el DTLB, incluyen un bit de ID de procesador lógico para distinguir si la entrada pertenece a un procesador lógico o al otro.
La caché de primer nivel puede operar en dos modos dependiendo de un bit de ID de contexto:
- Modo compartido: la caché de datos L1 está completamente compartida por dos procesadores lógicos.
- Modo adaptativo: en el modo adaptativo, los accesos a la memoria que utilizan el directorio de páginas se asignan de forma idéntica entre los procesadores lógicos que comparten la caché de datos L1.
La creación de alias es posible porque el bit de ID de procesador / ID de contexto (que es solo un bit que indica de qué procesador virtual proviene el acceso a la memoria) sería diferente para diferentes subprocesos y el modo compartido usa ese bit. El modo adaptativo simplemente aborda la caché como uno esperaría normalmente, solo usando la dirección de memoria.
Específicamente, no parece estar documentado cómo se usa el ID del procesador al indexar la caché en modo compartido. (La aplicación XOR con varios bits de dirección proporcionaría la dispersión de índices, de modo que los índices adyacentes de un subproceso de hardware se asignarían a índices más separados para el otro subproceso. La selección de un orden de bits diferente para diferentes subprocesos es menos probable, ya que esto tendería a aumentar la demora. Dispersión reduce la frecuencia del conflicto dada la localidad espacial por encima de la granularidad de la línea de caché, pero menos que la granularidad del tamaño de la vía).