La cache L3 è condivisa da tutti i core per una CPU Sandy-Bridge E Xeon?


12

In una domanda correlata ho posto delle domande sul vantaggio di un sistema a doppia CPU in termini di raddoppio della cache L3.

Tuttavia, ho notato che la serie Xeon E5-2600 di CPU ha esattamente 2,5 MB di cache L3 per core .

Questo mi porta a credere che il sistema operativo riservi 2,5 MB di cache L3 per core. Tuttavia, ho anche l'impressione contraddittoria che la cache L3 sia condivisa tra tutti i core. Ci sono sorprendentemente poche informazioni o discussioni su questo.

La mia principale preoccupazione è se le applicazioni in background a bassa priorità potrebbero "bloccare" la cache L3 e rallentare le prestazioni per le applicazioni in primo piano con priorità più alta. Due problemi specifici di prestazione che ho motivare questa domanda.

  1. La compilazione di un determinato programma C ++ richiede 25 minuti sul mio attuale sistema di sviluppo in VS 2008, mentre su un altro sistema va molto più veloce, richiedendo solo 5 minuti su VS 2008 con impostazioni identiche, nonostante abbia un i7 quasi di fascia alta 970 CPU e RAM sufficiente.

  2. I programmi richiedono spesso fino a 20 secondi per essere eseguiti (ovvero visualizzare la finestra principale) sul mio sistema; e su una nota correlata, la shell di Windows richiede fino a 10 secondi per visualizzare il menu di scelta rapida di Windows Explorer (e anche i comportamenti correlati richiedono circa il tempo), nonostante i miei tentativi di limitare le voci del menu di scelta rapida (attualmente ci sono forse altri 10 oltre il predefinito).

Il mio sistema è certamente caricato con un numero molto elevato di applicazioni che ho installato (e disinstallato) nel corso degli anni, ma faccio comunque del mio meglio per semplificare il sistema.

Ho anche molte applicazioni in background a bassa priorità in esecuzione; in particolare software di backup cloud ridondante come CrashPlan, che in genere si sommano per utilizzare circa il 25% dell'utilizzo totale della CPU su questo sistema a 6 thread a 12 core.

Prenderò un nuovo computer. So che continuerò a eseguire molte applicazioni in background e installare / disinstallare molti programmi. Se pensassi che ottenere un sistema a doppia CPU che raddoppi non solo i core ma anche la cache L3 avrebbe aiutato a superare le orribili prestazioni del compilatore C ++ e il rallentamento del sistema generale, lo farei volentieri.

Non ci dovrebbero essere motivi per cui un sistema di fascia alta funzioni così lentamente, anche con molti programmi e applicazioni in background. Ma se i miei problemi si verificano, indipendentemente dalla potenza della CPU e dalla cache L3 che do al sistema, semplicemente perché ho così tanti programmi e applicazioni in background installati e in esecuzione, non voglio sprecare $ 2.500 dollari in più su una doppia CPU sistema che non aiuta a risolvere il mio problema.

Eventuali suggerimenti, in particolare per quanto riguarda la mia domanda sul fatto che la cache L3 sia condivisa tra tutti i core (in modo tale che le applicazioni in background a bassa priorità potrebbero concepire il hogging della cache L3, rallentando i programmi con priorità più alta), o piuttosto se è legata a singoli core, sarebbe apprezzato.


Bella domanda per la quale personalmente non ho una buona risposta se non per dire che ero anche sotto l'impressione che L3 fosse condivisa. Vorrei solo chiedere perché mai chiamate questi Xeon di "seconda generazione" quando "Xeon" è un prodotto Intel ormai da un decennio. (Se questo è per analogia con i chip Sandy Bridge i3 /
5/7 che

Intel si riferisce alla linea di CPU i7-2600 come "2a generazione" ( ark.intel.com/products/family/59136/… ). Per "Xeon di seconda generazione" intendo la versione equivalente delle CPU dell'architettura Xeon Sandy-Bridge E del 6 marzo 2012 ( en.wikipedia.org/wiki/… ).
Dan Nissenbaum,

1
Questa è l'analogia che pensavo stessi facendo. È un cattivo (quelli sono i7 di seconda generazione ma questi non sono Xeon di seconda generazione), e cambierei il titolo IMO ... Mi aspettavo di trovare una domanda sui processori di 12 anni e che avrebbe potuto trattenere molte persone dal fare clic qui. Forse cambiare '2a generazione' in 'Sandy Bridge-E'.
Shinrai,

Risposte:


13

Su queste CPU, ogni core fisico ha la propria cache L2. La cache L3 è condivisa da tutti i core ed è inclusiva, ovvero tutti i dati che risiedono nella cache L2 di qualsiasi core risiedono anche nella cache L3.

Sebbene ciò possa sembrare uno spreco di spazio L3, in realtà rende L3 prezioso per accelerare le operazioni di memoria inter-core. Lo scopo principale della cache L3 è quello di fungere da centralino e area di gestione temporanea per i core. Ad esempio, se un core vuole sapere se una regione di memoria può essere memorizzata nella cache da un altro core, può controllare la cache L3. Se le informazioni sono state elaborate da un core e successivamente devono essere elaborate da un altro core, le distribuiscono attraverso la cache L3 anziché la memoria off-chip più lenta. Oltre a ciò, il suo impatto sulle prestazioni non è molto, tranne che per algoritmi insoliti: la cache L2 è abbastanza grande per le piccole cose e la cache L3 è troppo piccola per le grandi cose.

Pertanto, sebbene ogni core disponga di una propria cache L2 da 256 KB ed effettivamente 256 KB riservati nella cache L3, il saldo viene condiviso da tutti i core. Un'attività meno importante in altri core può danneggiare le prestazioni di un'attività più importante che beneficia dell'utilizzo dello spazio L3. Ma per i motivi che ho citato, in genere non è un effetto significativo nella pratica e in genere non vale la pena preoccuparsi di oltre l'ottimizzazione delle operazioni "bulk data" (come la compressione e la scansione) per ridurre al minimo l'inquinamento da cache. (Ad esempio, utilizzando operazioni non temporali.)


0

Comprendo che tutti i livelli di cache sono implementati direttamente sul chip e che L2 e L3 sono la stessa (che solo Intel riconosce la differenza, AMD li combina). Con questo in mente, immaginerei che la cache L3 sulle CPU non sia condivisa tra le CPU su una scheda madre con doppio socket. Ciò ha anche senso tenendo presente che è tipico vedere canali di memoria separati su RAM per CPU.

Qualcuno mi corregga se sbaglio.


L2 e L3 non sono affatto la stessa cosa. Sui recenti progetti Intel, L1 / L2 sono per core e piccoli (32k L1 I $ e D $ / 256k L2 unificato), mentre L3 è inclusivo e condiviso dalla GPU e da tutti i core. L1 / L2 sono fisicamente separati, ma in qualche modo servono a scopi simili (cioè rendere veloce l'accesso alla memoria per un singolo core). L'L3 inclusivo ha un altro scopo: coerenza tra i core (e la GPU). Vedi la risposta di @ DavidSchwartz.
Peter Cordes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.