# Architettura dual core

In elettronica ed informatica l'architettura dual core (lett. "architettura a doppio nucleo" in italiano) è un tipo di architettura per microprocessori paralleli che permette di integrare due unità di elaborazione indipendenti in un unico circuito integrato.
Questo tipo di architettura consente di aumentare la potenza di calcolo senza aumentare la frequenza di lavoro, aggirando quindi i limiti alla scalabilità altrimenti imposti dalla tecnologia dei semiconduttori.

## Motivi del passaggio ai dual core

Nel corso del 2005 i due principali realizzatori di chip, Intel e AMD sono stati praticamente costretti a iniziare il passaggio al nuovo tipo di architettura, quella dual core, in quanto diventava sempre più difficile aumentare il clock dei tradizionali processori single core, e a fine 2006 Intel ha presentato anche i primi chip multi core, a 4 core.
Senza dilungarsi qui sui vantaggi e gli svantaggi dell'approccio dual/multi core nello sviluppo dei processori, i cui dettagli si possono trovare nelle seguenti voci Dual core e Multi core, di seguito sono illustrati i differenti metodi attraverso cui si possono realizzare tali CPU partendo da quelle più semplici ovvero quelle single core.

## Architettura fisica

Al momento, esistono 3 metodi differenti per creare un chip dual core:
* Die Singolo
* Die Doppio
* Die Monolitico
Il "Die" è il blocco di silicio al centro di un processore che contiene il cuore elaborativo della CPU, il core.

### Die Singolo

Si tratta di un approccio utilizzato solo da Intel agli inizi della produzione di CPU dual core: l'unico processore ad utilizzare tale approccio è stato il Pentium D Smithfield e consiste nel combinare due core su un singolo die.
È l'approccio senz'altro più semplice, e quindi più economico rispetto agli altri, per realizzare un chip dual core, ma è anche più limitante per quanto riguarda le prestazioni e la resa produttiva. Infatti, prendendo ad esempio proprio il caso di Smithfield, che è sostanzialmente formato da due core Prescott (alla base di uno dei tanti stadi evolutivi del Pentium 4, processore single core), è possibile osservare, ovviamente in maniera molto semplicistica, come per realizzarlo sia sufficiente utilizzare la stessa maschera litografica progettata per il processore Prescott, e "stamparla" due volte sul wafer di silicio interconnettendo i due core così realizzati. Rimane comunque il problema che se anche solo uno dei due core stampati è difettoso, tutto il chip diventa inutilizzabile, ovvero non potrà essere un Pentium D, e potrebbe quindi essere rivenduto come semplice Pentium 4 Prescott dopo aver disabilitato uno dei due core.
L'evoluzione delle tecniche produttive probabilmente ha già decretato la "morte" di tale approccio, che sebbene semplice da realizzare può risultare indirettamente costoso per la probabilità di non avere molti core attigui sul wafer perfettamente veloce. i progetti dual e multi core utilizzando gli altri approcci e AMD invece non ha mai utilizzato tale approccio.

### Die Doppio

Tale metodo consiste nel posizionare 2 die, fisicamente separati, su un unico package e collegarli successivamente con collegamenti esterni.
L'approccio a Die Monolitico è certamente quello più sofisticato da realizzare ma ovviamente è anche quello che garantisce le migliori prestazioni di una CPU multi core. Tale approccio deve essere preventivato fin dalle prime fasi della progettazione del processore ed è stato utilizzato per la prima volta da Intel per i Core Duo Yonah e gli Itanium 2 Montecito. Il suo più grande pregio consiste nell'offrire ai progettisti l'opportunità di condividere alcune unità del processore; nel caso più semplice, tale condivisione si limita alla cache che viene realizzata in un unico blocco condiviso tra tutti i core (in processori che utilizzano gli altri approcci costruttivi, la cache è necessariamente equamente divisa tra i core e l'accesso diretto a ciascuna cache è riservato esclusivamente al rispettivo core, il quale per accedere alle altre deve far transitare i dati sul BUS). In casi più complessi le unità condivise possono essere anche altre, come il controller della memoria RAM (inizialmente solo nei processori AMD, ma poi da fine 2008 anche nei processori Intel Core i7 Bloomfield, basati sulla nuova architettura Nehalem) gli scheduler che ripartiscono il carico tra i vari core, ecc.
Appare quindi evidente come tutti i più recenti progetti di processori multi core puntino soprattutto all'utilizzo di quest'ultimo approccio costruttivo, riservando gli altri (soprattutto quello a Die Doppio), per risolvere specifiche esigenze, come viene illustrato nel prossimo paragrafo.

## Architettura della cache condivisa

Nei processori multi core si pone il problema di come sfruttare la grande dotazione di cache di ultimo livello (in genere L2, ma a volte anche L3) e come gestirne l'accesso da parte dei vari core.

### Cache nei processori a Die Singolo

Il primo processore dual core di Intel è stato il Pentium D Smithfield costruito secondo il più semplice degli approcci costruttivi quello, appunto, a Die singolo. Si trattava in questo caso di 2 core Prescott (alla base di uno dei tanti stadi evolutivi del Pentium 4, processore single core) "stampati" l'uno di fianco all'altro su un unico blocco di silicio e interconnessi tra loro.
Pur essendo collegati in modo da poter scambiare dati reciprocamente, ognuno dei due core comunque, manteneva la propria indipendenza e quindi anche le cache di ultimo livello (che in questo caso erano le L2) erano sdoppiate e ogni core aveva la "propria" cache L2, e di conseguenza, solamente con questa poteva avere una sorta di accesso privilegiato. Proprio per questo motivo, per Smithfield, non si parlava di una cache L2 da 2 MB ma di 2 x 1 MB. Affinché un core potesse accedere ai dati memorizzati nella cache dell'altro era necessario trasferire i dati attraverso il bus di sistema, con il rischio di saturarlo. La scelta di questa implementazione in Smithfield, penalizzante dal punto di vista delle prestazioni, era giustificata proprio dalla sua relativa semplicità realizzativa e progettuale.

### Cache nei processori a Die Doppio

La seconda generazione del Pentium D era basata invece sul core Presler, questa volta l'approccio seguito dai progettisti era quello a Die Doppio, vale a dire che sul wafer di silicio venivano prodotti solo core indipendenti (in questo caso tutti core alla base del Pentium 4 Cedar Mill successore di Prescott) e poi, una volta individuati due core "adatti" ad essere unificati, essi venivano montati sullo stesso package e collegati insieme mediante collegamenti esterni. La resa produttiva di questo approccio è massima, riducendo ovviamente moltissimo il numero di core da scartare, ma al tempo stesso la separazione fisica dei core comporta due inconvenienti: la necessità di collegamenti esterni e, ovviamente la separazione della cache che non è più una scelta progettuale ma uno scotto da pagare. Il primo inconveniente in realtà è comunque relativamente economico da superare, mentre il secondo rappresenta comunque un limite intrinseco di questo approccio. Non a caso tutti i processori Intel prodotti in questo modo (oltre a Presler, si possono ricordare anche Paxville e Dempsey) avevano necessariamente cache separate.

### Cache nei processori a Die Monolitico

Dopo aver visto i due approcci iniziali, utilizzati da Intel, ed esemplificati i pro e contro di entrambi, è possibile vedere come nei successivi processori dual core l'utilizzo dell'approccio a die singolo abbia goduto di una profonda innovazione, diventando un Die monoltico, e quindi abbia potuto sfruttare al meglio le proprie peculiarità.
A questo punto è infatti ormai chiaro che la più grossa lacuna delle prime versioni di processori dual core risiedeva proprio nella esclusività della cache di ultimo livello e la necessità di far transitare i dati sul già trafficato BUS di sistema. Il primo processore a colmare questa lacuna è stato il Core Duo Yonah una CPU mobile dual core in cui la cache L2 era condivisa tra i 2 core. Ogni core quindi poteva accedere alla totalità della cache lasciando libero il BUS di sistema che poteva quindi limitarsi a far transitare solo i dati da, e per, la memoria RAM.
Dopo Yonah, tutti i processori dual core Intel hanno iniziato a sfruttare questa caratteristica che consente ovviamente prestazioni migliorate, anche se a fronte di un maggiore costo produttivo. È questo il caso del successore di Yonah, il Core 2 Duo Merom, e dei suoi derivati per i settori desktop e server, Conroe e Xeon DP Woodcrest, oltre ovviamente alle successive versioni a 45 nm dei processori appena citati tra i quali Penryn e Wolfdale (e le loro innumerevoli versioni economiche).

## Architetture multicore
### Architettura fisica

Analogamente ai differenti metodi appena esposti per realizzare un chip dual core, anche per i multi core a più di 2 core è possibile utilizzare gli stessi diversi approcci. In questo caso però è anche possibile "combinare" i metodi per ottimizzare la produzione a seconda delle esigenze dei progettisti e del mercato.
Di seguito alcuni esempi, relativi per semplicità al solo settore desktop, che hanno sfruttato la combinazione dei diversi approcci:
* Kentsfield - 2 core dual core (Conroe) a 65 nm costruiti ciascuno su Die Monolitico, accoppiati su Die Doppio per un totale di 4 core.
* Yorkfield - 2 core dual core (Wolfdale) a 45 nm costruiti ciascuno su Die Monolitico, accoppiati su Die Doppio per un totale di 4 core. Inizialmente sembrava che potesse essere 4 core single core costruiti su Die Monolitico, accoppiati su Die Quadruplo (variante del Die Doppio) per un totale di 8 core.
A fine 2008 è arrivato il primo processore a 4 core "nativo" che è basato, come detto, sulla nuova architettura Nehalem.
* Bloomfield - 4 core su Die Monolitico

### Cache

Quanto detto per i processori dual core, vale anche per i processori multi core in generale con più di 2 core, sempre che siano realizzati secondo il medesimo approccio costruttivo. Vale a dire per esempio, che in questi processori la cache può essere condivisa solo se tutti i core vengono costruiti insieme in un unico blocco di silicio. Siccome questo è avvenuto solo in un secondo momento con l'affinamento dei processi produttivi (il primo processore di questo tipo, prodotto a 45 nm è arrivato a fine 2008, con il nome di Core i7 Bloomfield, e basato sulla nuova architettura Nehalem) nei primi processori quad core (4 core) che sono stati realizzati utilizzando approcci "ibridi", i vantaggi e gli svantaggi di entrambe le tecnologie coesistono.

### Architetture multicore in tecnica ibrida

Come accennato poco sopra, i primi processori a 4 core non sono realizzati direttamente con un approccio a die monolitico, in quanto questo avrebbe richiesto costi troppo alti. È risultato quindi molto più conveniente combinare i due approcci nel seguente modo: si realizzano due processori dual core (per esempio due Conroe) costruiti quindi con tecnologia a die monolitico e, successivamente, si uniscono su un unico package mediante l'approccio a die doppio. In questo modo si hanno CPU a 4 core, il cui primo esponente è stato Kentsfield (commercialmente alla base di Core 2 Extreme e Core 2 Quad) che veniva prodotto proprio nel modo appena descritto.
Viene da chiedersi come avviene l'accesso alla cache in questa CPU da parte di ogni core. La risposta è semplice: in Kentsfield sono presenti 2 cache L2 separate, ciascuna delle quali viene condivisa da una coppia di core, i core Conroe appunto.