In che modo la CPU multi-core implementa il coordinamento asincrono?


8

Vengo dall'informatica e voglio studiare il calcolo del processo per l'uso nella progettazione di circuiti asincroni.

Quindi, mi sto guardando intorno alla pratica corrente sui circuiti asincroni. Ci sono molti articoli che affermano che l' impossibilità di aumentare la velocità di clock porta all'architettura della CPU multi-core . Tuttavia, nessuno dice veramente come si ottiene il coordinamento asincrono tra i core.

Voglio che confermi / correggi i miei seguenti presupposti su come l'attuale CPU multi-core gestisce il coordinamento asincrono:

  1. Ogni core ha segnali di clock separati, che non devono necessariamente essere in fase tra loro. Altrimenti, il problema di distribuzione del segnale di clock non sarebbe davvero risolto, vero?
  2. I nuclei si coordinano solo a livello di programmazione. Cioè, facendo test-and-set su un po 'di memoria (RAM o registro). E non qualcosa di basso livello come il protocollo che stringe la mano usando il circuito rendezvous .

1
Le CPU single-core di grandi dimensioni dispongono di più clock, utilizzati per la riduzione della potenza. Alcuni orologi sono recintati, altri sono dinamicamente rallentati. Aggiungi un altro core e ovviamente ha più clock. Una più facile distribuzione dell'orologio è un effetto collaterale, ma non il motivo per cui ci sono più orologi.

2
Dai
pjc50

1
(sulla distribuzione del segnale di clock: la soluzione è un albero buffer in cui tutti i nodi foglia hanno uguali tempi di propagazione dalla sorgente. Puoi costruirlo algoritmicamente. Non è banale ma funziona)
pjc50

1
Gli svantaggi degli alberi cuscinetto sono molti: può consumare la maggior parte della potenza e il 10-30% dell'area disponibile. Tuttavia, come rilevato dalla nostra startup, il problema principale con la progettazione asincrona è la necessità di cambiare l' intera toolchain del software per utilizzarla in modo efficace. Le società IC sono sorprendentemente conservatrici, a causa dei costi di produzione e dei rischi di fallimento.
pjc50,

1
@ pjc50 ISTR che alcuni processori di layout di griglia e orientati al passaggio dei messaggi (forse quelli di Tilera?) avevano il "flusso" dell'orologio da sinistra a destra e dal basso verso l'alto, poiché solo i vicini più vicini dovevano comunicare direttamente (tipo di un varietà di sincrono globale asincrono a livello locale).
Paul A. Clayton,

Risposte:


1

Mescoli due idee indipendenti (ortogonali) nella teoria dei circuiti digitali: circuiti asincroni e processori multi-core.

Circuiti asincroni: circuiti che hanno più di un orologio e gli orologi sono asincroni (cioè hanno una relazione di fase non costante e imprevedibile).

Alcuni circuiti possono usare due orologi (per esempio), ma uno è solo una divisione per 2 dell'altro. Questi circuiti non sono asincroni perché esiste una relazione di fase nota tra i due orologi, sebbene le frequenze degli orologi siano diverse.

Potresti avere una CPU single core con pochi clock asincroni e una CPU multi-core con tutti i suoi core in esecuzione sullo stesso clock (quest'ultima è solo una CPU immaginaria - tutte le CPU multi-core reali hanno molti clock che si compongono diversi reciprocamente- set di orologi asincroni).

I circuiti asincroni sono un argomento importante nella progettazione digitale. La spiegazione sopra è di base.

CPU multi-core: pochi microprocessori (core) collegati in parallelo che impiegano hardware e software sofisticati per ottenere prestazioni elevate.

La prassi abituale è rendere i nuclei il più indipendenti possibile in termini di clock / potenza / esecuzione / ecc. Ciò consente una regolazione dinamica (in fase di esecuzione) dell'attività della CPU (ad es. Potenza consumata) in base alle effettive esigenze del sistema.

La mia impressione è che ciò che stai cercando sia una spiegazione delle CPU multi-core , non dei circuiti asincroni.

Questo argomento è molto, molto più grande di qualsiasi cosa si possa dare nella risposta.

Le risposte alle tue domande, però:

  1. Gli orologi usati da diversi core (per quanto ne so) hanno le stesse fonti (possono essere più di uno: cristallo, VCO, ...). Ogni core (di solito) ha pochi set di clock reciprocamente asincroni. Ogni core ha una logica dedicata per il clock e il throttling che consente di spegnere o rallentare il clock, indipendentemente per ciascun core. Ancora una volta, se sei interessato solo all'aspetto algoritmico del parallelismo dei nuclei, dimentica gli orologi (per ora).
  2. Hai appena indicato l'aspetto principale del parallelismo dei nuclei: come eseguire più core in parallelo in modo efficiente . Questo argomento è enorme e contiene entrambe le soluzioni HW e SW. Dal punto di vista HW, i nuclei modificano entrambi una memoria comune e scambiano segnali di controllo e di stato con logica di sequenziamento e tra di loro. L'immagine complica molto a causa dell'esistenza di cache : ti suggerirei di iniziare dalla lettura delle cache, quindi dalla coerenza della cache e solo successivamente dagli incassi nei sistemi multi-core.

Spero che sia di aiuto.


Il fatto che le CPU debbano funzionare a velocità diverse non implica che debbano essere asincrone. Avere una finestra intorno ad ogni orologio quando si garantisce che i segnali non cambiano è estremamente utile. Anche se due moduli hanno frequenze di clock che non sono multipli l'uno dell'altro, può essere utile che entrambi siano generati da un dispositivo che assicuri che non passino mai troppo vicini.
supercat il
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.