2012-08-30 12 views
7

Sto sintonizzando le prestazioni del mio programma Java parallelo. Sono curioso degli effetti Architecture.Come comunicano le CPU su diversi socket?

Data una macchina con due socket CPU, ognuno con un quad-core Intel Xeon CPU, quindi:

  • modo le due CPU comunicano, quanto velocemente avrebbero comunicare?
  • Quanto velocemente comunicano due core sullo stesso chip?
  • I quattro core sullo stesso chip sono equivalenti in termini di comunicazione o accesso alla memoria?
+0

Stai passando molti dati? Come vengono passati i dati (ad es. 0MQ utilizzato)? – osgx

risposta

3

1) Come comunicano le due CPU, con quale velocità comunicheranno?

Più tempo comunicano tramite la memoria o il livello di gerarchia della memoria condivisa più vicino. (Memoria di sistema sia su SMP e NUMA è considerato come livello condivisa;., Anche se in NUMA è accede tramite Controllore di memoria di un altro chip questo è solo Non-Uniform = accesso più lento)

2) Quanto velocemente sarebbe due core sullo stesso chip comunicano?

I core sullo stesso chip di solito condividono la cache L2 o L3. I core su chip diversi comunicano tramite memoria o con le interazioni cache-to-cache usando il protocollo di coerenza della cache.

Quindi nel caso in cui 1 (diversi chip) di velocità (larghezza di banda) di memoria che passa tra le CPU sarà vicino alla memoria di lettura/scrittura. E nel caso 2 (stesso chip) questa velocità può essere maggiore, fino a cache velocità di lettura/scrittura.

latenza di comunicazione saranno diverse centinaia di CPU zecche nel caso 1 e diverse decine in caso 2.

3) sono i quattro core sullo stesso chip equivalente in termini di comunicazione o memoria accesso?

Tutti e quattro i core dello stesso chip di solito hanno distanza equivalente alla RAM. Dipende dall'architettura e dall'implementazione del chip; per alcuni Intels più vecchi, ad es. il chip multicore era composto da due chip integrati in un unico pacchetto.

+0

Quindi, assegnando due thread a due core, quello su due chip potrebbe essere decine di volte più lento del chip uno su uno, giusto? – JackWM

+0

Qual è l'interazione tra i thread? Quanto lavoro faranno tra le interazioni? Stanno inviando molti dati o semplicemente lavorando sulla struttura dei dati condivisa? – osgx

8

Come pianificare i thread su core per prestazioni di memoria ottimali a seconda del modello di accesso alla memoria, e di solito non vale la pena. Se il tuo programma è in Java, probabilmente non avrai il livello di controllo necessario per ottenere prestazioni ottimali.

Le moderne CPU dispongono di controller di memoria integrati e i moderni sistemi multi-socket dispongono di memoria distribuita. Questo è chiamato

Non-Uniform Memory Access (NUMA)

Nella moderna multi-socket Intel processori comunicazione tra le prese è fatto con QPI

QuickPath Interconnect (QPI)

QPI è l'architettura Intel che specifica come funziona. L'equivalente di AMD è HyperTransport.È possibile saperne di più sulle varie architetture qui:

System Architecture

Un accesso alla memoria che manca nella cache di dati di livello 1 potrebbe essere servito dalla cache di dati di livello 2 (nella stessa presa di corrente) o potrebbe essere servito da ciò che Intel chiama "Last Level Cache (LLC)" che sarebbe nel socket che ha il controller di memoria per quell'indirizzo di memoria. Colpire in LLC in un altro socket potrebbe essere alcune decine di cicli del processore, ma ancora molto più veloce dell'accesso alla DRAM (oltre cento cicli di processore).

+1

Ottimo riassunto. Anche la "System Architecture" sembra una grande risorsa. –

Problemi correlati