Aliasing del contesto della cache dei dati Hyper-Threading

Oct 31 2020

nel manuale di Intel, la sezione seguente mi confonde:

11.5.6.2 Modalità condivisa In modalità condivisa, la cache di dati L1 è condivisa in modo competitivo tra i processori logici. Ciò è vero anche se i processori logici utilizzano registri CR3 e modalità di paging identici. In modalità condivisa, gli indirizzi lineari nella cache di dati L1 possono essere alias, il che significa che un indirizzo lineare nella cache può puntare a diverse posizioni fisiche. Il meccanismo per risolvere l'aliasing può portare al thrashing. Per questo motivo, IA32_MISC_ENABLE [bit 24] = 0 è la configurazione preferita per i processori basati sulla microarchitettura Intel NetBurst che supportano la tecnologia Intel Hyper-Threading.

come Intel usa VIPT (uguale a PIPT) per accedere alla cache.

come sarebbe avvenuto l'aliasing della cache?

Risposte

1 PaulA.Clayton Nov 01 2020 at 20:18

Basato sul manuale di riferimento per l'ottimizzazione delle architetture Intel® 64 e IA-32 , novembre 2009 (248966-020), sezione 2.6.1.3:

La maggior parte delle risorse in un processore fisico sono completamente condivise per migliorare l'utilizzo dinamico della risorsa, comprese le cache e tutte le unità di esecuzione. Alcune risorse condivise indirizzate in modo lineare, come DTLB, includono un bit ID del processore logico per distinguere se la voce appartiene a un processore logico o all'altro.

La cache di primo livello può funzionare in due modalità a seconda di un bit di ID contesto:

  • Modalità condivisa: la cache di dati L1 è completamente condivisa da due processori logici.
  • Modalità adattiva: in modalità adattiva, gli accessi alla memoria utilizzando la directory della pagina vengono mappati in modo identico tra i processori logici che condividono la cache di dati L1.

L'aliasing è possibile perché il bit ID del processore / ID contesto (che è solo un bit che indica da quale processore virtuale proviene l'accesso alla memoria) sarebbe diverso per i diversi thread e la modalità condivisa utilizza quel bit. La modalità adattiva indirizza semplicemente la cache come ci si aspetterebbe normalmente, utilizzando solo l'indirizzo di memoria.

In particolare, il modo in cui viene utilizzato l'ID del processore durante l'indicizzazione della cache in modalità condivisa non sembra essere documentato. (Lo XOR con diversi bit di indirizzo fornirebbe la dispersione degli indici in modo tale che gli indici adiacenti per un thread hardware si associno a più indici separati per l'altro thread. La selezione di un diverso ordine di bit per thread diversi è meno probabile poiché ciò tenderebbe ad aumentare il ritardo. Dispersione riduce la frequenza dei conflitti data la località spaziale al di sopra della granularità della linea della cache ma inferiore alla granularità della dimensione del percorso.)