Domanda

In un processore multicore, cosa accade al contenuto di cache di un nucleo (dire L1) quando si verifica un cambio di contesto su quella cache?

è il comportamento dipende l'architettura o è un comportamento generale seguito da tutti i produttori di chip?

È stato utile?

Soluzione

Ciò dipende sia dal processore (non solo la serie di processori, può variare da modello a modello) e sistemi operativi, ma ci sono principi generali. Se un processore è multicore ha alcun impatto diretto su questo aspetto; lo stesso processo potrebbe essere in esecuzione su più core contemporaneamente (se è multithreading), e la memoria può essere condivisa tra processi, così sincronizzazione cache è inevitabile indipendentemente da ciò che accade su un cambio di contesto.

Quando un processore cerca una posizione di memoria nella cache, se c'è un MMU , è possibile utilizzare la fisico o l'indirizzo virtuale di quella posizione (a volte anche una combinazione di entrambi, ma che non è davvero rilevante qui).

Con indirizzi fisici, non importa quale processo sta accedendo l'indirizzo, il contenuto può essere condiviso. Quindi non v'è alcuna necessità di invalidare il contenuto della cache durante un cambio di contesto. Se i due processi associano stessa pagina fisica con attributi diversi, questo viene gestito dalla MMU (che agisce come un MPU (memoria unità di protezione)). L'aspetto negativo di un fisicamente indirizzata cache è che la MMU deve sedersi tra il processore e la cache, quindi la ricerca nella cache è lento. cache L1 sono quasi mai fisicamente indirizzi; cache di livello superiore possono essere.

Lo stesso indirizzo virtuale può denotare diverse locazioni di memoria in diversi processi. Quindi, con un praticamente indirizzata cache, il processore e il sistema operativo devono cooperare per assicurare che un processo troverà la giusta memoria. Ci sono diverse tecniche comuni. Il codice-commutazione di contesto fornito dal sistema operativo può inficiare l'intera cache; questo è corretto ma molto costoso. Alcune architetture CPU hanno spazio nella loro linea di cache per un ASID (indirizzo spazio identificativo) la versione hardware di un ID di processo, utilizzato anche dalla MMU. Questo separa efficacemente voci della cache di diversi processi, e mezzi che due processi che mappano stessa pagina avrà viste incoerenti della stessa pagina fisica (di solito c'è un valore ASID particolare indicante una pagina condivisa, ma questi deve essere scaricata se sono non mappato allo stesso indirizzo in tutti i processi in cui sono mappati). Se il sistema operativo si prende cura che diversi processi utilizzano non sovrapposti spazi indirizzo (che sconfigge alcuni dei scopo di utilizzare la memoria virtuale, ma può essere fatto a volte), poi linee di cache restano valide.

La maggior parte dei processori che hanno una MMU hanno anche un TLB . Il TLB è una cache di mapping provenienti da indirizzi virtuali in indirizzi fisici. Il TLB è consultato prima che le ricerche nella cache fisicamente indirizzata, per determinare l'indirizzo fisico rapidamente quando possibile; il processore può avviare la ricerca nella cache prima della ricerca TLB è completa, come spesso linee di cache candidati possono essere identificati dai bit centrale dell'indirizzo, tra i bit che determinano l'offset in una linea di cache ei bit che determinano la pagina. cache di bypass il TLB praticamente indirizzata se c'è una cache hit, anche se il processore può avviare la ricerca TLB mentre sta interrogando la cache, in caso di una miss.

Il TLB stesso deve essere gestito nel corso di un cambio di contesto. Se le voci TLB contengono un ASID, possono rimanere al loro posto; il sistema operativo deve solo irrigare voci TLB se la loro ASID è cambiato significato (ad esempio perché un processo è terminato). Se le voci TLB sono globali, devono essere invalidate quando si passa ad un altro contesto.

Altri suggerimenti

La cache è tipicamente ignaro di un cambio di contesto. Solo la sequenza di indirizzi di memoria determina quali linee cache vengono sostituiti accesso.

La politica di sostituzione è di solito un dipendente euristica del produttore e la particolare microarchitettura. Il problema è che l'euristica non può prevedere il futuro, quale indirizzo e quindi linea di cache saranno accessibili successiva.

L'euristica può essere un semplice come LRU (utilizzato meno di recente). Ma con le CPU moderne le euristiche sono più intricate.

Date un'occhiata alla manuale di Intel® 64 e IA-32 Architetture Software Developer Volume 3 capitolo 11 spiega la cache di memoria e meccanismi di controllo della cache. AMD ha questo nel capitolo 7 del manuale Volume 2 la AMD64 Architettura di programmazione: la programmazione del sistema . Per le CPU ARM basato sembra che i PDF sono disponibili solo per i clienti registrati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top