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ò:
- 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).
- 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.