title: Dual core (gestione della cache)
text: # Dual core (gestione della cache)
  
  Le CPU dual core e multi core uniscono 2 o più processori indipendenti, le rispettive cache e i cache controller in un singolo package. Questo tipo di architettura consente di aumentare la potenza di calcolo senza aumentare la frequenza di lavoro, a tutto vantaggio del calore dissipato.
  
  Come già trattato nella voce Dual core (tecniche di realizzazione), per ottenere un processore a più core, esistono diversi approcci costruttivi che vengono enunciati anche qui di seguito:
  
  * Die Singolo
  * Die Doppio
  * Die Monolitico
  
  Ognuno di questi approcci, comporta ovviamente vantaggi e svantaggi rispetto agli altri, altrimenti non si spiegherebbe per quale motivo essi dovrebbero continuare a convivere. Le problematiche riguardanti i costi di produzione e le difficoltà di implementazione sono trattate nella voce già citata (Dual core (tecniche di realizzazione)), di seguito invece vengono illustrati i diversi metodi di utilizzo della cache di ultimo livello (in genere L2, ma a volte anche L3) da parte dei vari core, in base anche all'approccio costruttivo utilizzato.
  
  ## 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).
  
  ## Processori multi core
  
  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.
  
  ### Processori multi core ad approcci ibridi
  
  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.
  
  