Nehalem (hardware)
Nehalem è un nome in codice utilizzato più volte da Intel, a partire dal 2001, per indicare diversi progetti dedicati allo sviluppo di nuovi microprocessori.
Nel corso degli anni si susseguirono innumerevoli indiscrezioni riguardanti prodotti identificabili con il nome in codice Nehalem, spesso non completamente esaurienti e di conseguenza anche discordanti tra loro; tutto questo era dovuto anche al fatto che ogni volta che emergevano notizie riguardo ad un "fantomatico" processore Nehalem, queste si riferivano comunque sempre ad un prodotto ancora distante nel tempo e sul quale le informazioni erano ancora molto scarse.
A complicare ulteriormente il quadro delle ipotesi si aggiunse anche il fatto che il progetto Nehalem nel tempo subì varie revisioni, fino alla sua cancellazione e poi al riutilizzo del nome per indicare un progetto completamente rivisto, e molto più importante.
I primi progetti
[modifica | modifica wikitesto]Le prime notizie riguardanti lo sviluppo di Nehalem trapelarono nel corso del 2001, e si riferivano ad un'architettura a 32 bit che sarebbe dovuta arrivare nel corso del 2004 per sostituire gradualmente quella NetBurst alla base del Pentium 4, andando probabilmente a succedere al core Northwood (ovvero la seconda generazione di Pentium 4).
Successivamente, Intel decise di proseguire lo sviluppo dell'architettura NetBurst anche dopo il core Northwood introducendo nel 2004 la terza generazione, conosciuta come Prescott e iniziando lo sviluppo del successore, Tejas. A questo punto, nuove precisazioni posticipavano l'arrivo di Nehalem al 2005 e lo indicavano come un processore erede di Tejas, che sarebbe dovuta quindi essere l'ultima CPU NetBurst, ma che non è mai arrivato sul mercato in quanto Intel nel corso del 2004 decise di cessarne lo sviluppo a causa di diversi problemi di stabilità operativa, primo fra tutti l'elevata dissipazione termica richiesta dall'alto clock di esercizio previsto da tale progetto.
Dato che Tejas avrebbe dovuto superare i 6 GHz, era previsto che Nehalem oltrepassasse decisamente tale frequenza utilizzando il processo produttivo a 65 nm già introdotto con le ultime evoluzioni di Tejas arrivando addirittura a 10,20 GHz con un bus ad almeno 1200 MHz (ma alcune voci ne indicavano uno innovativo da addirittura 3 GHz). Molto probabilmente questa nuova incarnazione del progetto Nehalem poggiava le sue basi sul progetto Tejas e non stupisce quindi che dopo la cancellazione di quest'ultimo, Intel abbia ridotto ulteriormente le notizie riguardanti il processore Nehalem; inoltre, data la prevista collocazione temporale, molte voci volevano addirittura sospeso tale progetto.
Verso la fine del 2004 sembrava invece che Nehalem fosse tornato nella roadmap Intel, probabilmente in una versione decisamente modificata rispetto a quella originariamente prevista: si parlava infatti del 2006 come data di arrivo di questo nuovo processore che adesso sarebbe stato di tipo dual core e con estensioni EM64T (mai citate in precedenza per questa CPU) per eseguire calcoli a 64 bit.
Questa fu l'ultima notizia riguardante il processore Nehalem, dopodiché non se ne seppe più nulla per quasi 2 anni, tant'è vero che è altamente probabile, sebbene mai dichiarato espressamente, che il progetto fosse stato completamente sospeso.
Nehalem diventa un'architettura completa
[modifica | modifica wikitesto]Il 29 aprile 2006 il nome di Nehalem è ricomparso, quasi certamente riutilizzato per indicare un progetto completamente diverso da quello originariamente previsto. In un documento di presentazione Intel si parlava prima dell'imminente arrivo dei processori basati sull'architettura "Core", ovvero i Core 2 Duo Conroe, che vennero in effetti poi presentati a luglio 2006, mentre il 2007 sarebbe stato ricordato per i primi processori a 45 nm, i quali servono a Intel per testare il nuovo processo produttivo abbinato a un'architettura ormai matura, in modo da poter poi utilizzare il nuovo processo per la nuova architettura, solo dopo che questo sarà stato ampiamente collaudato.
Coerentemente con l'intenzione dichiarata nel corso del 2006 da Intel, di presentare una nuova architettura ogni 2 anni, nel 2008 verrà presentata la nuova architettura x86 di nona generazione, nome in codice, Nehalem, basata sull'architettura Core dei Core 2 Duo, ma con differenze così elevate da essere considerata un'architettura completamente nuova. Alla base vi sarà proprio l'utilizzo del processo produttivo a 45 nm che Intel considera pienamente sfruttato per le sue caratteristiche proprio in questo progetto. Ora Nehalem indica quindi non più uno specifico processore, ovvero uno dei tanti stadi evolutivi di un'architettura già consolidata ma, al contrario, un'architettura completamente rinnovata, che andrà ad occupare tutti i settori di mercato da quello mobile a quello server multiprocessore, grazie a una serie di CPU basate su tale architettura.
Tra la fine del 2009 e l'inizio del 2010, sotto il nome di Westmere (inizialmente conosciuta come Nehalem-C), arriverà la seconda generazione dell'architettura Nehalem, i cui processori verranno prodotti a 32 nm.
L'architettura Nehalem si ispira alla Core e la migliora
[modifica | modifica wikitesto]Dopo il grande successo ottenuto con l'architettura Core, Intel ha deciso di basare il progetto di Nehalem proprio sull'architettura precedente andando ad ottimizzare quanto più possibile tutta una serie di aspetti peculiari di tale progetto, tentando quindi di "spremere" il più possibile da soluzioni ormai collaudate, aggiungendo inoltre nuove tecnologie che affiancando quelle introdotte già nell'architettura Core consentono di aumentare ulteriormente il livello di prestazioni ed efficienza dei propri processori.
Se l'obiettivo perseguito con lo sviluppo della precedente architettura Core era stato la massima efficienza energetica e di conseguenza, era stato necessario basare il suo progetto su un processore del settore mobile, con Nehalem Intel si è prefissata di superare tutti i limiti della precedente architettura negli altri settori di mercato in particolare in quello server, dove la concorrenza di AMD è più evidente con le proprie soluzioni Opteron. Tutto questo senza comunque dimenticare l'efficienza generale del processore, e infatti l'obiettivo principale della nuova architettura è appunto l'ottimizzazione dell'impiego della potenza a disposizione e una più efficiente gestione dei cicli di clock, per poter ottenere prestazioni maggiori a parità di risorse energetiche. Le novità apportate sono maggiormente focalizzate sull'ottimizzazione dei singoli core e sull'architettura complessiva per migliorare la sinergia operazionale tra i diversi core del processore a tutto vantaggio delle applicazioni, siano esse single threaded o multi threaded.
Va ricordato che l'architettura Core venne sviluppata abbastanza velocemente partendo da quella, altamente efficiente, del Pentium M allo scopo di poter offrire in tempi brevi una nuova linea di processori che andasse a sostituire i precedenti basati sull'architettura NetBurst del Pentium 4 e Pentium D, e poter quindi riconquistare lo scettro delle prestazioni perso in favore di AMD. Gli ingegneri, partendo dal progetto di una CPU prettamente mobile, dovettero realizzare un'intera nuova gamma di processori che potesse spaziare tra tutti i settori di mercato compresi quello desktop e server; dati i ristretti tempi di sviluppo fu necessario "accontentarsi" di offrire praticamente la stessa CPU per tutti i settori di mercato, differenziando i modelli soprattutto per il quantitativo di cache L2 e le frequenze di funzionamento (clock e BUS). In pratica l'architettura Core non era modulare, o lo era solo in minima parte. In ogni caso si trattava della prima architettura Intel ad essere ottimizzata per la creazione di processori dual core e, grazie all'espediente del Die Doppio è stato possibile ottenere facilmente versioni a 4 core.
Intel ha dichiarato che per raggiungere il proprio scopo della massima efficienza energetica possibile, è stato necessario vagliare attentamente ogni singola proposta di miglioramento architetturale arrivando perfino a scartare quelle che non erano in grado di offrire un miglioramento prestazionale nell'ordine dell'1% a fronte di un consumo energetico minore del 3%. Contemporaneamente, lo sviluppo si è concentrato sull'ottimizzazione dell'esecuzione parallela, grazie anche ad un nuovo gestore delle istruzioni dedicato alle istruzioni indipendenti, quelle cioè slegate dal risultato di altre istruzioni e che proprio per questa caratteristica possono essere eseguite parallelamente ad altre istruzioni, incrementando così la velocità di esecuzione complessiva.
Un esempio di ottimizzazione sul piano energetico è dato dal fatto che, a detta di Intel, i nuovi processori saranno in grado di passare tra i vari stati energetici più velocemente rispetto a quelli basati sull'architettura precedente: il "PLL lock time", per esempio sarebbe stato accelerato del 56%.
Macro-Fusion anche a 64 bit
[modifica | modifica wikitesto]Nell'architettura Core esisteva un limite intrinseco nell'implementazione di una nuova funzionalità, conosciuta come Macro-Fusion, che non funzionava in presenza di codice a 64 bit, e in ambito server (dove questo tipo di codice è ormai all'ordine del giorno) questo era un'evidente limitazione, superata in Nehalem.
Oltre a questo, anche in generale il numero, e la varietà, delle istruzioni x86 che possono essere "fuse" insieme è stato aumentato notevolmente in modo da poter eseguire tale operazione anche ripetutamente nel corso di una singola elaborazione.
Migliorato il Loop Stream Detector
[modifica | modifica wikitesto]Un'altra funzionalità introdotta con l'architettura precedente e migliorata nel progetto Nehalem riguarda il cosiddetto Loop Stream Detector. Intel ha dichiarato che questo nome indica di fatto uno specifico buffer interno alla CPU che ha lo scopo di immagazzinare una serie di istruzioni che il processore dovrà elaborare di lì a poco; qualora venisse rilevato un "loop", ovvero un "ciclo" all'interno di tale buffer, è evidente che sarebbe superfluo, anzi dannoso per le prestazioni, se il processore andasse a recuperare i dati da elaborare nella cache ad ogni iterazione prevista da tale loop e di conseguenza il "Loop Stream Detector" consente di avere in un buffer di dimensioni molto ridotte tutte le istruzioni da elaborare all'interno del loop, comportando quindi un aumento di efficienza della computazione.
Con Nehalem Intel ha migliorato tale funzionalità portando da 18 a 28 le istruzioni che tale buffer è in grado di immagazzinare e inoltre esse non sono più di tipo x86 ma direttamente µops (micro-operations); un altro importante miglioramento si è avuto soprattutto spostando fisicamente all'interno della catena della pipeline la sua posizione; se nell'architettura Core esso era posizionato subito dopo la fase di "fetch" delle istruzioni (ovvero dopo la fase di lettura delle istruzioni da elaborare), in Nehalem si trova dopo la fase di "decode", in questo modo la disabilitazione della parte "a monte" della pipeline in presenza di un loop, interessa più stadi di quest'ultima consentendo un maggiore risparmio energetico durante l'elaborazione di questi cicli.
Il fatto che le istruzioni memorizzate nel buffer non siano più complesse istruzioni x86 ma semplici µops può facilmente ricordare la struttura della cache L1 del Pentium 4. In effetti il team di sviluppo dell'architettura Nehalem, non è più quello di Haifa in Israele che aveva realizzato l'architettura Core, ma quello di Hillsboro in Oregon che ai tempi aveva progettato l'architettura NetBurst alla base proprio del Pentium 4; non sorprende quindi più di tanto il fatto che questi ingegneri abbiano in un certo senso "risuscitato" alcune soluzioni sviluppate allora al fine di poterle integrare in questo nuovo progetto. Ovviamente un progetto di quasi 10 anni non poteva essere integrato in Nehalem senza opportuni cambiamenti e infatti mentre nel Pentium 4 era presente un solo decoder in grado di diagnosticare un "data cache miss" ovvero l'assenza di uno specifico dato nella cache, nella nuova incarnazione di tale tecnologia sono presenti ben 4 di questi decoder affiancati dal Loop Stream Detector che in certe situazioni migliora ulteriormente il lavoro di questi decoder.
Nuovi algoritmi ottimizzati
[modifica | modifica wikitesto]Per migliorare il più possibile le prestazioni, Intel ha integrato inoltre in tutta l'architettura Nehalem una serie di nuovi algoritmi, tra i quali:
- Sincronizzazione più rapida delle primitive: con la progressiva diffusione di software multithreaded acquista sempre più importanza la presenza di un adeguato sistema di sincronizzazione dei thread. L'architettura Nehalem migliora la sincronizzazione delle istruzioni in linguaggio macchina allo scopo di fornire un miglioramento prestazionale al software ottimizzato per il multithread.
- Gestione dei Branch Misprediction velocizzata: una tecnica largamente utilizzata per il miglioramento delle prestazioni consiste nel cosiddetto "Branch Prediction Mechanism" ovvero nella predizione degli esiti di un'operazione che prevede un salto condizionato, in modo tale da accelerare l'esecuzione del codice. Nel caso in cui la previsione dovesse risultare errata, l'architettura Nehalem dovrebbe consentire un degrado prestazionale contenuto e inferiore rispetto ai processori di precedente generazione.
- Hardware prefetch migliorato: Nehalem raccoglie l'eredità lasciata dalla precedente architettura Core in merito alle operazioni di prefetch (ovvero il recupero di dati ed istruzioni in anticipo rispetto al momento del loro effettivo impiego) e ne migliora l'efficienza, permettendo di conseguire anche in questo caso minori latenze di accesso.
Cardini dell'architettura Nehalem
[modifica | modifica wikitesto]Oltre alle già citate revisioni di funzionalità già presenti nell'architettura precedente, la nuova architettura Nehalem ha visto l'introduzione di 5 grandi innovazioni rispetto al passato, descritte brevemente di seguito; non tutte sono completamente inedite, ma per l'integrazione nella nuova architettura sono state ulteriormente rifinite in modo da essere ottimizzate per questo nuovo progetto. Quelle inedite invece, porteranno a una vera e propria frattura con il passato, promettendo di offrire un'efficienza complessiva sempre più elevata.
Dynamically Scalable Architecture
[modifica | modifica wikitesto]Con questo nome Intel vuole indicare una peculiarità della nuova architettura che viene definita dal produttore come "dinamicamente scalabile"; per ottenere questo risultato, gli sviluppatori hanno progettato ogni modulo base del processore in maniera separata in modo da poter poi "assemblare" come in un gioco di costruzioni i vari moduli in modo da realizzare i diversi modelli per i vari settori di mercato. Le intenzioni di Intel sono quindi quelle di poter adattare il progetto ai vari segmenti di mercato in maniera ancora più semplice rispetto al passato, potendo operare facilmente sul quantitativo di cache, sui controller d'interconnessione e di memoria integrati nelle CPU in modo da poter realizzare prodotti anche molto differenti a seconda delle esigenze del mercato con il minimo intervento sul progetto generale dell'architettura. A questo proposito è utile considerare 2 processori annunciati, Beckton e Havendale (in realtà quest'ultimo progetto è stato sospeso nel primo trimestre 2009 per ragioni prettamente commerciali), che avranno caratteristiche talmente diverse da sembrare quasi 2 progetti completamente separati e invece sono entrambi basati sulla nuova architettura Nehalem e rappresentano quindi un ottimo esempio per comprendere le potenzialità di questo approccio "scalabile" illustrato da Intel.
A metà giugno 2008 Intel ha fornito alcuni dettagli su come abbia configurato l'organizzazione interna della nuova architettura in modo che sia scalabile in funzione dell'ambito di utilizzo al quale una specifica versione di CPU sarà destinata. I componenti interni del processore, come il core, il controller della memoria e il BUS di I/O, possono gestire in modo indipendente tra di loro frequenza di funzionamento e voltaggio di alimentazione. Tale risultato è stato ottenuto mediante un'interfaccia di tipo sincrono, e non asincrono come avvenuto in precedenti approcci di simile portata, così da minimizzare la latenza di accesso.
Intel QuickPath Interconnect (QPI)
[modifica | modifica wikitesto]L'architettura Nehalem ha portato con sé diverse innovazioni, per certi versi rivoluzionarie, perlomeno in casa Intel; tra queste è necessario ricordare l'adozione del nuovo bus seriale CSI (acronimo di Common System Interface) che è poi stato rinominato ufficialmente in "Intel QuickPath Interconnect" (QPI). Si tratta di un nuovo tipo di BUS di comunicazione che viene integrato nei processori destinati al settore server e desktop di fascia alta, che rappresenta per molti versi l'alternativa Intel a HyperTransport, standard di comunicazione utilizzato da AMD nelle proprie architetture Athlon 64, Opteron e Phenom.
Le soluzioni precedenti basate sul tradizionale BUS di sistema ormai cominciavano a mostrare i loro limiti prestazionali soprattutto in ambito server e più precisamente in ambito multiprocessore, dove ormai erano presenti veri e propri colli di bottiglia nella comunicazione tra le varie CPU e i chipset. Lo scopo primario del BUS QPI è quello di permettere al processore di comunicare direttamente con i vari altri componenti collegati alla motherboard, beneficiando quindi di una banda passante maggiore e di latenze sempre più ridotte. La caratteristica peculiare di QPI è quella di essere una tecnologia di connessione "point-to-point" che elimina gli svantaggi portati da un solo BUS condiviso tra tutti i processori, il controller memoria e il controller I/O. QPI utilizza collegamenti da 6,4 Gigatransfers al secondo, per un'ampiezza di banda totale complessiva che può arrivare fino a 25 GB/s per ciascun collegamento (la metà, 12,8 GB/s, in ciascuna direzione); in altre parole, ogni processore presente nel sistema comunica con il chipset mediante un collegamento da 25 GB/s di banda passante.
Al pari dell'intera architettura, anche lo stesso BUS QPI è stato progettato per essere altamente scalabile e a dimostrazione di questo fatto si può citare il fatto che esistono diversi progetti diversificati in base al numero di collegamenti QPI e alla loro frequenza di funzionamento. I processori Bloomfield già presentati integrano un solo collegamento, mentre Gainestown che sarà alla base dei prossimi Xeon DP per sistemi biprocessore ne avrà 2; la versione destinata al settore dei server multiprocessore, Beckton invece, ne avrà 4 e non è esclusa una versione da ben 8 collegamenti QPI distinti, rendendo di fatto possibile la costruzione di sistemi server fino a 8 vie basati su questi processori, che siano in grado di scambiare informazioni tra di loro direttamente oppure di essere collegati sempre in modo diretto ad un elevato numero di periferiche. Nel settore server, sembra che la tecnologia QPI verrà implementata mediante 2 collegamenti a piena ampiezza e 2 a mezza ampiezza, per un totale di 32 GB di banda a disposizione.
Altra caratteristica molto importante promessa dall'adozione dello standard QPI è l'implementazione di tale BUS non solo nelle CPU x86 basate su Nehalem ma anche nelle future soluzioni Itanium 2 Tukwila, allo scopo di "unire" i due mondi x86 e IA-64. Intel promette che nel futuro sarà possibile sostituire un processore Xeon con un Itanium 2 sulla stessa piattaforma hardware senza la necessità di altri interventi.
Controller di memoria RAM integrato
[modifica | modifica wikitesto]Il nuovo BUS seriale non è l'unica caratteristica ispirata alle soluzioni AMD che è stata implementata nei processori basati sull'architettura Nehalem: all'interno di tutte le nuove CPU viene integrato anche il controller della memoria RAM. Inizialmente era previsto che solo alcune versioni integrassero tale controller, ma successivamente Intel ha deciso di estendere tale funzionalità a tutta la gamma.
La presenza di un "memory controller" integrato nel processore consente di ottenere 2 importanti benefici: in primo luogo la riduzione della latenza relativa alle comunicazioni del processore con la memoria, in secondo luogo una scalabilità dell'ampiezza di banda direttamente proporzionale al numero di processori presenti nel sistema.
A differenza di quanto avviene negli ultimi progetti di casa AMD, i processori Phenom, in cui sono presenti 2 controller di memoria DDR2 da 64 bit ciascuno, il controller integrato nelle soluzioni Nehalem supporta memorie DDR3 fino a configurazioni a 4 canali (solo per soluzioni Xeon MP per sistemi multiprocessore); già con 3 canali di memoria (utilizzati per le soluzioni di fascia alta del mercato desktop) con supporto alla memoria PC3-12800 (ovvero DDR3 a 1600 MHz) è possibile ottenere una banda di memoria teorica di 38,4 GB/s, che costituisce comunque un salto notevole rispetto al passato. Le migliori prestazioni ottenibili con le soluzioni precedenti all'architettura Nehalem, che sono al massimo a doppio canale, raggiungono "solo" i 21,3 GB/s. Nei modelli con controller di memoria triple channel operanti con moduli DDR3-1333 si arriva a 32 GB/s, ma solo alcuni modelli sono in grado di sfruttare tale standard di memoria, mentre altri sono limitati alla DDR3-1066.
Sebbene in ambito monoprocessore i vantaggi di tale integrazione siano maggiormente teorici che pratici (l'aumento di prestazioni seppure visibile non è proprio eclatante), i veri vantaggi di questo nuovo approccio introdotto da Intel saranno maggiormente evidenti nel settore server e in particolare in quello multiprocessore (ancora una volta è evidente come Intel con Nehalem abbia pensato soprattutto ad ottimizzare questo settore). Mediante l'approccio tradizionale, in cui il controller della memoria RAM era situato nel northbridge del chipset, ad ogni nuova CPU collocata nel sistema, l'ampiezza di banda del canale dedicato alla comunicazione con la memoria rimaneva costante, diventando anche un collo di bottiglia in certe configurazioni più spinte. Ora, dato che il controller è presente in ogni CPU, ad ogni processore aggiunto aumenta proporzionalmente anche l'ampiezza del canale verso la memoria dato che ciascuno di essi ha il proprio spazio locale di memoria.
Essendo presenti più controller di memoria indipendenti ed avendo quindi ciascuna CPU uno spazio di memoria riservato, è chiaro che Intel ha dovuto prevedere la possibilità da parte di ogni processore di accedere anche allo spazio di memoria di un altro; si possono quindi distinguere 2 situazioni differenti di accesso alla memoria, a seconda che un processore cerchi di accedere ad un dato presente nel proprio spazio di memoria, che prende il nome di "memoria locale", oppure che tenti l'accesso ad un dato presente nello spazio di memoria di un altro, ovvero tenti un accesso alla "memoria remota". Nel primo caso l'ampiezza del canale di collegamento sarà massima e la latenza di accesso minima, mentre nel secondo caso, essendo necessario un trasferimento di dati attraverso un collegamento QPI tra le 2 CPU, si avrà un leggero calo di prestazioni.
Appare molto difficile prevedere a quanto possa ammontare in termini pratici il rallentamento dovuto a tale organizzazione della memoria, in quanto dipende in gran parte dal tipo di applicazione in uso; secondo Intel la latenza di un accesso alla "memoria remota" è superiore di circa il 70%, mentre la banda passante può ridursi della metà, rispetto ad un accesso alla "memoria locale".
Simultaneous Multi-Threading
[modifica | modifica wikitesto]Nell'architettura Nehalem è stata integrata una nuova incarnazione della tecnologia Hyper-Threading che ha preso il nome di Simultaneous Multi-Threading (si tratta in realtà del nome generico di questa tecnologia già utilizzato anche da altri produttori, e che era stato rinominato da Intel ai tempi del lancio dei processori dotati di Hyper-Threading). La tecnologia Hyper-Threading era stata abbandonata da Intel in concomitanza del passaggio dall'architettura NetBurst alla Core, in quanto sembrava che essa apportasse benefici praticamente nulli quando abbinata a processori dual core basati su tale architettura.
È probabile, sebbene non confermato ufficialmente da Intel, che anche la ricomparsa di una tecnologia come questa, al pari di quanto fatto per le innovazioni apportate al "Loop Stream Detector" di cui si è parlato sopra, e che evidentemente si ispira a quanto sviluppato ai tempi per il Pentium 4, dipenda dal fatto che il team di sviluppo è lo stesso; in effetti è abbastanza comprensibile che dopo una serie di sforzi dedicati a sviluppare certe tecnologie gli sviluppatori stessi siano reticenti ad abbandonarle totalmente, e inoltre alcune modifiche interne all'architettura Nehalem, come l'aumento della banda passante della memoria e la bassa latenza di accesso data dal controller integrato hanno certamente favorito la sua re-introduzione.
Al pari di quanto possibile con Hyper-Threading anche la nuova versione, Simultaneous Multi-Threading, consente ad ogni core di elaborare contemporaneamente due thread, per un totale di thread gestibili pari quindi al doppio dei core di processore presenti nel sistema. In sostanza in presenza di tecnologie come questa, il sistema operativo "vede" il doppio dei core fisicamente esistenti nel sistema; prendendo ad esempio un processore Nehalem da 4 core "fisici", se viene abilitata da BIOS la tecnologia SMT, il sistema operativo vedrà 8 core "logici" che dal punto di vista software saranno indistinguibili da 8 core fisici veri e propri.
Va sottolineato che per poter utilizzare tecnologie come SMT è necessario comunque duplicare alcune aree interne della CPU, e in particolare i registri (si tratta comunque di un notevole risparmio rispetto alla duplicazione di interi core, "pagato" ovviamente con un minore impatto sulle prestazioni reali). Intel non ha fornito molti dettagli sui principi di funzionamento che ha differenziato questa nuova incarnazione della tecnologia rispetto a quanto era avvenuto ai tempi del Pentium 4, limitandosi a dire che essa è sostanzialmente differente, soprattutto come efficienza complessiva, grazie anche alla presenza di un più ampio quantitativo di cache e alla maggiore banda passante della memoria per via del controller di memoria integrato.
Per il momento si sa che una differenza dipende proprio dal diverso approccio che la vecchia architettura NetBurst e la nuova Nehalem hanno verso il parallelismo delle istruzioni; mentre il vecchio progetto prevedeva processori dotati di pipeline molto lunghe (inizialmente 20 stadi ma poi addirittura 31, nelle versioni successive), nell'architettura Nehalem gli sviluppatori hanno optato per un aumento del numero delle unità di esecuzione: ora esse sono 6 in grado di svolgere 3 operazioni di calcolo e 3 operazioni di scambio dati verso la memoria di sistema. Un tale numero di unità di esecuzione a priori potrebbe anche essere un difetto infatti, in generale, sarebbe più difficile avere un sufficiente numero di istruzioni che possano essere elaborate in parallelo "saturando" tutte le 6 unità; Intel ha compensato questo limite rendendo in grado la nuova tecnologia SMT di ricercare le istruzioni da eseguire in parallelo in 2 thread invece che in uno solo come avveniva nella vecchia Hyper-Threading.
Per poter sfruttare adeguatamente le nuove caratteristiche della tecnologia, Intel ha fornito da tempo agli sviluppatori software alcune informazioni specifiche per poter integrare il corretto supporto nelle proprie applicazioni, rendendo anche possibile determinare se un determinato thread debba essere inviato ad un core fisico oppure ad un core logico reso visibile dalla tecnologia SMT.
Per non creare colli di bottiglia anche le dimensioni di alcuni buffer interni alla CPU sono state aumentate: in particolare il cosiddetto "Reorder buffer" che ha in pratica la funzione di memorizzare le ultime istruzioni out-of-order eseguite e di "riordinarle" in modo da ottimizzarne l'esecuzione, è ora in grado di immagazzinare 128 dati contro i precedenti 96. Altri buffer che hanno subito miglioramenti sono i seguenti:
- "Reservation station" - si occupa di smistare le istruzioni tra i vari core - 36 valori (in precedenza erano 32)
- "Buffer di carico" - 48 valori (in precedenza erano 32)
- "Buffer di immagazzinamento" - 32 valori (in precedenza erano 20)
Sottosistema video integrato
[modifica | modifica wikitesto]L'architettura Nehalem, a livello di progetto, prevede inoltre un'altra rivoluzione: la presenza, in alcuni versioni di processori destinate alla fascia economica del mercato, del sottosistema video integrato.
Si tratta di un approccio che segue direttamente quello annunciato da AMD già nel corso del 2006 sotto il nome di Fusion e che non dovrebbe venire alla luce prima del 2010; il core grafico verrà inserito nel package in maniera separata dal core della CPU, mediante un approccio a Die Doppio. Inizialmente tale sottosistema video dovrebbe essere una versione overcloccata del core grafico PowerVR e quindi non dovrebbe raggiungere le prestazioni della proposta di AMD sotto questo punto di vista (dato che essa integrerà una GPU derivata dalle soluzioni sviluppate da ATI Technologies), ma è previsto che in seguito verranno integrate soluzioni derivate dal progetto Larrabee che Intel ha allo studio ormai da diverso tempo e promette di diventare un nuovo riferimento nell'approccio alla grafica 3D.
Inizialmente erano stati annunciati 2 processori (uno desktop e uno mobile) dotati del comparto grafico integrato, ma successivamente, a febbraio 2009, Intel ha comunicato di aver deciso di "saltare" tali modelli in favore dei loro diretti successori che si differenzieranno soprattutto per essere basati sulla seconda generazione dell'architettura Nehalem e che viene indicata da Intel con il nome in codice di Westmere. La novità più importante introdotta con l'evoluzione Westmere, e quindi con il core Clarkdale è, come già accennato sopra, il nuovo processo produttivo a 32 nm (contro quello a 45 nm previsto da Nehalem) oltre ad altre migliorie generali relative all'architettura.
Altre caratteristiche
[modifica | modifica wikitesto]Quelli esposti sopra sono solo i "cardini" della nuova architettura, ma non sono le uniche caratteristiche innovative che dovrebbero consentire ad Intel di conservare lo "scettro" delle prestazioni.
Nei nuovi processori sono stati migliorati alcuni algoritmi interni per migliorare l'efficienza complessiva ed è stata adottata una nuova gerarchia della cache. Infine nei nuovi progetti viene integrato l'intero set delle istruzioni SSE4 indicato da Intel come SSE4.2 (dove.2 indica la seconda versione). Il motivo di tale denominazione è da ricercare nel fatto che già nella seconda generazione dei processori basati sull'architettura Core (e realizzati a 45 nm) è stata integrata una parte dell'intero set (e precisamente 47 delle 54 istruzioni), indicato da Intel come SSE4.1.
Le potenzialità delle istruzioni SSE4 erano già state rese evidenti dalla prima implementazione fatta da Intel in quanto esse consentono di migliorare notevolmente le prestazioni in ambito multimediale soprattutto nella codifica/decodifica di flussi video ad alta definizione. Le 7 nuove istruzioni che sono state integrate nell'architettura Nehalem prendono il nome di "ATA" che è l'acronimo di "Application Targeted Accelerators". Si tratta di piccole istruzioni a bassa latenza destinate all'ottimizzazione di specifiche applicazioni; ad esempio vi è la possibilità di eseguire una serie di operazioni su codice di linguaggi specifici, come XML, e in generale per manipolare le stringhe di caratteri.
Nuovo livello di Cache: Cache a 3 livelli
[modifica | modifica wikitesto]Come annunciato sopra, l'architettura Nehalem ha portato con sé una piccola rivoluzione anche nella gestione della cache. A differenza di quanto avvenuto in passato in tutte le ultime generazioni di architetture Intel, in cui essa era divisa in 2 livelli, i nuovi processori ne contengono 3. Anche in questo caso, si notano diverse similitudini con quanto fatto da AMD con la propria architettura concorrente, quella alla base dei processori Phenom, anch'essi dotati di 3 livelli di cache, sebbene tra le 2 implementazioni sussistano molteplici differenze. Intel si è resa conto che una grande cache L2 condivisa tra tutti i core, come avviene nell'architettura precedente, non è efficiente in caso di processori con 4 core nativi (va ricordato infatti che la cache L2 nell'architettura Core era condivisa da ciascuna coppia di core, quindi nelle versioni a 4 core, erano presenti in realtà 2 cache L2 distinte).
Gli sviluppatori hanno quindi deciso di dotare ciascun core una propria cache L1 da 64 KB (divisa a sua volta in 2 blocchi da 32 KB, per le istruzioni e per i dati, al pari di quanto avviene per la precedente architettura Core); la latenza di questa cache però è aumentata leggermente rispetto a quella integrata nell'architettura precedente, 4 cicli di clock contro 3. Intel ha motivato tale scelta con l'intenzione di raggiungere con Nehalem frequenze di clock superiori. Ogni core ha anche una propria cache L2 da 256 KB (a differenza della cache L2 da 4 o 6 MB condivisa tra tutti core dell'architettura Core); una cache L2 così piccola e per di più dedicata a ciascun core ha come conseguenza un netto miglioramento in termini di latenza di accesso che infatti è scesa a soli 10 cicli di clock contro i 15 cicli della cache L2 integrata nei processori basati sulla precedente architettura Core, e che di fatto rende questa cache una sorta di buffer tra quella L1 e la più grande L3, che contiene la maggior parte dei dati in virtù delle maggiori dimensioni. A questi primi 2 livelli di cache si aggiunge, come detto, un'ulteriore cache L3 da 8 MB che viene però condivisa tra tutti i core che dovrebbe avere (ma Intel non ha fatto dichiarazioni ufficiali) un tempo di latenza pari a circa 40 cicli.
Inoltre, al pari di quanto fatto nel processore a bassissimo consumo Atom (presentato nella prima metà del 2008 e destinato ai sistemi ultra portatili) le cache L1 e L2 non sono realizzate attraverso i tradizionali 6 transistor per ogni bit come per le comuni cache dei processori, ma con 8 transistor per ogni bit. Intel ha deciso di utilizzare questo particolare approccio in quanto consente di ridurre la tensione applicata alla cache, e di conseguenza ridurre ulteriormente i consumi.
Cache L3 di tipo inclusivo
[modifica | modifica wikitesto]Le differenze con il passato non si fermano alla presenza di un ulteriore livello di cache, ma quello che cambia è anche la gestione della gerarchia della cache (e anche in questo caso si tratta di un'ulteriore differenza rispetto all'implementazione AMD): mentre per le architetture precedenti essa era di tipo "esclusivo", per i processori basati su Nehalem essa è di tipo "inclusivo". Questa caratteristica significa che all'interno dei nuovi processori la cache L3 contiene anche le informazioni presenti negli altri 2 livelli di gerarchia della cache; in altri termini 1,28 MB circa di cache L3 sono destinati a contenere i dati e le istruzioni presenti nelle altre cache.
A prima vista potrebbe sembrare un approccio poco efficiente, ma Intel ha motivato tale scelta spiegando che nel caso in cui dovesse fallire una richiesta di dati o istruzioni alla cache L3, si avrebbe la garanzia che quanto richiesto si trova al di fuori del processore (quindi nella memoria di sistema) e non vi è così la necessità di dover andare ad ispezionare gli altri livelli di cache come avviene nelle soluzioni tradizionali, a tutto vantaggio di una maggiore velocità computazionale e di una riduzione della latenza. Se al contrario il dato cercato è presente nella L3, allora 1 bit per ciascun core del processore associato ad ogni linea della cache L3 indicherà la "potenziale" presenza di questo dato anche nelle cache di livello più basso e di quale core. Un altro vantaggio derivante da questo approccio è il fatto che lo scambio di dati tra i vari core diminuisce notevolmente, dato che la coerenza della varie cache private è già assicurata.
Nuovo "Translation Lookaside Buffer" (TLB)
[modifica | modifica wikitesto]Con Nehalem viene introdotto un approccio gerarchico anche per quanto concerne il Translation Lookaside Buffer (TLB); questo buffer contiene una porzione della page table, ovvero quella struttura di dati utilizzata dal sistema operativo che include le corrispondenze tra gli indirizzi virtuali e quelli fisici della memoria. Il TLB, essendo di fatto una cache ad alta velocità, consente di velocizzare la traduzione degli indirizzi virtuali in indirizzi fisici, e si tratta di un elemento presente già da molto tempo nei processori desktop e server, ma unicamente in versione a singolo livello. Più precisamente, nell'architettura Core tale unico livello è di dimensioni estremamente ridotte, pari a soli 16 valori immagazzinabili, seppure molto veloce nel caricamento dei dati, e a questo si aggiungeva un sottolivello (non un vero e proprio secondo livello) in grado di memorizzare 256 valori relativi ai "loads missed".
In Nehalem è stato introdotto un vero e proprio secondo livello da 512 KB per incrementare le prestazioni complessive. Il primo livello è ora condiviso tra dati e istruzioni ed è in grado di memorizzare fino a 64 valori per le cosiddette "small pages" che hanno dimensioni tipiche intorno ai 4 KB, oppure 32 valori per le "large pages", con dimensioni pari a 2-4 MB, in riferimento al caricamento di dati. In riferimento al caricamento delle istruzioni invece esso è pari a quello dell'architettura Core per quanto riguarda le "small pages", quindi 128 valori, e si limita a 7 valori per le "large pages". Il secondo livello, che fa il suo debutto con questa architettura, è in grado invece di operare solo con le "small pages" ma nelle intenzioni del produttore dovrebbe garantire un miglioramento con quelle applicazioni che utilizzano grandi insiemi di dati.
Altre tecnologie implementate: un occhio al risparmio energetico
[modifica | modifica wikitesto]Oltre alle ormai scontate istruzioni MMX, SSE, SSE2, SSE3, SSSE3, EM64T e XD-bit, è stato implementato, come detto, anche l'intero set di istruzioni SSE4, indicato come SSE4.2. Non mancano ovviamente la tecnologia di virtualizzazione Vanderpool e quella di risparmio energetico SpeedStep, che nelle nuove CPU vanta decisi miglioramenti; grazie alla nuova tecnologia Power Gate, infatti, i processori della famiglia Nehalem sono in grado di rallentare e accelerare la frequenza di ogni core individualmente a seconda della specifica occupazione e arrivare addirittura allo "spegnimento" indipendente di ogni singolo core, riducendone il voltaggio a zero[1], e non limitandosi a diminuirne le richieste energetiche. A questa tecnologia se ne unisce anche un'altra esattamente duale, chiamata Intel Turbo Mode[2] che è in sostanza il nuovo nome della Intel Dynamic Acceleration già vista nei Core 2 Duo Merom e Penryn alla base delle piattaforme Centrino Duo Santa Rosa e Centrino 2 Montevina. La nuova architettura Nehalem porta tale tecnologia in tutti i settori di mercato e grazie ad essa è possibile aumentare il clock dei soli core utilizzati in modo da velocizzare l'elaborazione di quelle particolari applicazioni che non sono in grado di sfruttare adeguatamente un processore multi core. Avere meno core attivi, consente infatti di aumentare il clock (e quindi il consumo) dei core rimanenti senza eccedere le specifiche della CPU stessa.
Anche la gestione del calore dissipato ha visto importanti miglioramenti: a differenza di quanto avviene nei processori precedenti, che al raggiungimento di una certa temperatura abbassano istantaneamente il proprio clock al valore più basso possibile, nei nuovi basati sull'architettura Nehalem il clock viene abbassato progressivamente fino al raggiungimento della temperatura adeguata.
Processori basati sull'architettura Nehalem
[modifica | modifica wikitesto]Inizialmente erano previste versioni da 1 a 8 core, ma dato che già a partire dall'inizio del 2008 sono stati presentati i primi processori Celeron Dual Core basati, come il nome lascia facilmente intendere, su un'architettura dual core, appare un po' strano che possa venir presentata una versione di Nehalem ancora single core dopo quasi un anno dalla presentazione delle prime CPU dual core commercializzate a prezzi intorno ai 50 $.
Più probabilmente, e gli ultimi annunci sembrano confermarlo, la famiglia di processori Nehalem sarà costituita "solo" da CPU dual, quad e octo-core. I primi processori basati sulla nuova architettura saranno quelli conosciuti con i seguenti nomi in codice: Bloomfield, Gainestown, Beckton, Clarksfield e Lynnfield. In ogni caso il lancio dei primi processori basati su architettura Nehalem è avvenuta a novembre 2008, grazie al core Bloomfield.
Come accennato sopra, i processori dotati di comparto video integrato (che erano i progetti Havendale e Auburndale) sono stati annullati da Intel a febbraio 2009; il produttore avrebbe deciso di "saltare" tali step evolutivi in favore delle prime versioni a 32 nm che si chiameranno Clarkdale e Arrandale (rispettivamente per il settore desktop e mobile); ufficialmente tale decisione è stata presa per pure considerazioni di utilità e non per problemi tecnici relativi alla produzione.
A settembre 2007 Intel aveva annunciato di aver appena completato la produzione dei primi prototipi di processori a 4 core, basati su architettura Nehalem, e che questi sono composti da ben 731 milioni di transistor. Si tratta di un valore inferiore rispetto agli 820 milioni di transistor delle soluzioni a 4 core basate sulla seconda generazione dell'architettura "Core" (per esempio il core Yorkfield) ma giustificata da 2 ragioni fondamentali: la prima risiede nel fatto che la gestione delle comunicazioni interne di un processore a 4 core "nativo" ovvero realizzato in un unico die mediante l'approccio a Die Monolitico, è più semplice da realizzare e richiede quindi meno componenti rispetto alla connessione di 2 die dual core mediante un approccio a Die Doppio come avviene nelle soluzioni precedenti e, in secondo luogo, l'architettura Nehalem è stata sviluppata per sfruttare in maniera ancora più efficiente la cache L2 che è certamente il componente di una CPU che ne fa aumentare più di ogni altro il numero di transistor, e richiederne quindi una quantità minore. Se infatti Yorkfield è dotato di una cache L2 di 12 MB (separata però in 2 blocchi da 6 MB ciascuno condiviso da una sola coppia di core), le soluzioni a 4 core basate su Nehalem ne conterranno 8 MB (condivisa però da tutti e 4 i core).
Prestazioni di Nehalem a confronto con Core
[modifica | modifica wikitesto]Al momento mancano ovviamente test indipendenti ma sembra che un processore basato su architettura Nehalem, confrontato con un analogo modello appartenente alla precedente generazione (basato quindi sulla versione a 45 nm dell'architettura "Core"), abbia prestazioni single threaded migliori del 10%-25% (a seconda delle applicazioni) e del 20% fino anche al doppio, nelle applicazioni multi threaded. L'aumento di prestazioni sarà dovuto anche al supporto a 128 micro-ops in-flight rispetto alle 96 dell'architettura Core.
Per quanto riguarda invece i consumi, questi dovrebbero essere circa il 30% in meno a parità di prestazioni.
Motherboard completamente ridisegnate
[modifica | modifica wikitesto]L'architettura Nehalem non va a influenzare solo il progetto dei microprocessori, ma anzi, anche quello delle schede madri (seppure indirettamente). Le varie novità architetturali introdotte con Nehalem, e in particolare il controller della memoria RAM integrato e l'interfaccia QPI, unite ai nuovi socket hanno costretto i vari produttori a riprogettare da zero le proprie soluzioni per poter ospitare i nuovi processori.
Un tale impegno chiaramente ha un impatto negativo sui costi finali dei prodotti, dati dalla necessità da parte dei produttori di ammortizzare l'investimento della riprogettazione; in realtà le nuove caratteristiche introdotte da Nehalem porteranno con sé anche alcuni vantaggi per i produttori di schede madri orientate al settore server. Se fino all'architettura precedente, l'aggiunta di un socket a una scheda madre necessitava anche una buona riprogettazione dei collegamenti tra il chipset e tutti i socket presenti, nelle nuove soluzioni, dato che buona parte delle funzioni precedentemente svolte dal chipset sono ora svolte dalle CPU (controller della memoria e BUS seriale che collega direttamente ciascuna CPU alle altre), l'aggiunta di un nuovo socket alle schede madri diventerà relativamente più semplice ed economico per i produttori.
Considerazioni sull'abbinamento "Processo produttivo/Architettura" di Intel
[modifica | modifica wikitesto]A partire dall'introduzione dell'architettura Core, successiva alla NetBurst e avvenuta a metà 2006, Intel ha dichiarato l'intenzione di presentare una nuova architettura ogni 2 anni, in modo da poter tenere il passo con la famosa Legge di Moore. Per aumentare le prestazioni di una CPU mantenendone sotto controllo anche il consumo energetico è necessario non solo ottimizzarne l'architettura, ma anche realizzare i nuovi dispositivi con processi produttivi sempre più raffinati.
Per limitare gli imprevisti delle innovazioni tecnologiche necessarie al rinnovamento generazionale dei propri processori, a partire dagli inizi del 2006 Intel ha iniziato a seguire una strategia denominata "Tick-Tock": prima viene introdotta una nuova tecnologia produttiva sulla base di un'architettura già collaudata (la fase "Tick") e in seguito, quando tale tecnologia è in grado di fornire rese elevate, la si adotta per produrre una nuova architettura (la fase "Tock").
I primi esponenti di questa nuova filosofia di progetto, furono i processori Pentium D Presler (che avevano praticamente la stessa architettura dei precedenti Smithfield) con cui venne introdotto il processo produttivo a 65 nm (fase "Tick"). Dopo aver collaudato la nuova tecnologia costruttiva con queste CPU, Intel passò alla nuova architettura Core dei Core 2 Duo, prodotta sempre a 65 nm (fase "Tock").
In maniera analoga, tra la fine del 2007 e l'inizio del 2008, Intel presentò i processori Penryn e Wolfdale che erano in sostanza dei die-shrink del Core 2 Duo, a 45 nm (fase "Tick"). A fine 2008, quando anche questo processo produttivo era ormai a punto, arrivò l'architettura Nehalem (fase "Tock"). La sua evoluzione Westmere è stata realizzata a 32 nm a partire dai primi mesi del 2010 (fase "Tick"), in modo da collaudare anche questa tecnologia in vista dell'architettura successiva Sandy Bridge, uscita poi nel 2011 (fase "Tock"). L'intenzione dichiarata di Intel, molto ambiziosa, era quella di migliorare il rapporto performance/watt del 300% entro la fine del decennio.
Seguendo il medesimo principio, Sandy Bridge è stata poi seguita dal die-shrink a 22 nm Ivy Bridge nel 2012 (fase "Tick"), che ha quindi mantenuto la stessa architettura ma ha introdotto un nuovo processo produttivo. Nel 2013 arriverà anche la nuova architettura Haswell (fase "Tock"), il cui die-shrink a 14 nm prenderà il nome di Broadwell (fase "Tick"); quest'ultimo verrà poi seguito negli anni seguenti dall'architettura Skylake (fase "Tock") e dalla sua ri-scalatura Ice Lake (fase "Tick").
Questa metodologia di sviluppo, nelle intenzioni di Intel, minimizza i rischi propri dell'adozione di una nuova tecnologia produttiva con un'architettura a sua volta completamente nuova, consentendo ai progettisti di concentrarsi, ad anni alterni, sulla risoluzione di una sola classe di problemi.
Il successore
[modifica | modifica wikitesto]Appurato che bisogna ritenere completamente archiviato il progetto originale, e considerando Nehalem non più uno specifico processore ma un'intera architettura in arrivo alla fine del 2008, si può identificare Westmere come l'evoluzione a 32 nm dell'architettura Nehalem e, successivamente, l'arrivo di Sandy Bridge (precedentemente conosciuta come Gesher) a fine del 2010, rappresenterà l'architettura completamente rinnovata che andrà a succedere a Nehalem.
L'arrivo di Westemere prima, e Sandy Bridge poi, prolungherà quindi la vita dell'approccio "Tick-Tock" descritto poco sopra per l'innovazione delle CPU Intel.
Roadmap
[modifica | modifica wikitesto]Note
[modifica | modifica wikitesto]- ^ Il nuovo processore per Internet Archiviato il 7 luglio 2009 in Internet Archive.
- ^ Intel Turbo Boost technology (PDF), su download.intel.com.
Voci correlate
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su Nehalem