Leggere e decodificare le istruzioni

La presentazione dei nuovi processori Intel Core i7 è alle porte. In attesa dei benchmark, iniziamo con il dare un'occhiata all'architettura su cui saranno basati: Nehalem.

Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Leggere e decodificare le istruzioni

Diversamente dai cambiamenti effettuati dal passaggio dal Core al Core 2, Intel non ha cambiato molto il front end del Nehalem. Ci sono sempre i quattro decoder, comparsi con Conroe - tre semplici e uno complesso-, il supporto alla tecnologia macro-ops fusion ed è disponibile un throughput massimo di 4+1 istruzioni X86 per ciclo.

Siccome non ci sono a prima vista cambiamenti rivoluzionari, bisogna considerare attentamente i dettagli. Come abbiamo notato con l'architettura Barcelona, aumentare il numero di unità esecutive è un sistema molte efficiente per aumentare le prestazioni. Il costo di questo approccio è elevato e i guadagni si assottigliano a ogni nuova aggiunta, seguendo la legge della riduzione dei profitti. Perciò, anziché aggiungere un nuovo decoder, gli ingegneri si sono concentrati sul rendere quelli presenti più efficienti.

Prima di tutto, Intel ha aggiunto il supporto alla Macro-ops fusion in modalità 64 bit, modifica giustificata per un'architettura come la Nehalem che non nasconde le sue ambizioni per il mercato dei server. Gli ingegneri non si sono fermati qui. Dove l'architettura Conroe può fondere solo un numero limitato di istruzioni, l'architettura Nehalem supporta un grande numero di variazioni, rendendo possibile l'uso della macro-ops fusion ripetutamente.

Un'altra funzionalità introdotta dal Conroe e qui migliorata è il Loop Stream Director. Dietro questo nome si nasconde quello che, di fatto, è un buffer dati che immagazzina un po' d'istruzioni (18 istruzioni x86 per i Core 2). Quando il processore rileva un loop, disabilita alcune parti della pipeline. Siccome in un loop viene eseguita la stessa istruzione per un certo numero di volte, non è necessario fare un branch prediction o recuperare informazioni dalla cache L1 ad ogni iterazione del loop. Quindi, in queste situazioni, il Loop Stream Detector funziona come una piccola memoria cache che cortocircuita il primo stato della pipeline. Il guadagno di questa tecnica è doppio: diminuisce il consumo energetico evitando l'esecuzione di operazioni inutili e incrementa le prestazioni, riducendo la pressione sulla cache istruzioni L1.

Con l'architettura Nehalem, Intel ha migliorato la funzionalità del Loop Stream Detector - prima di tutto il buffer è stato maggiorato - e ora può immagazzinare 28 istruzioni. In più, la sua posizione nella pipeline è cambiata. Con Conroe, era posta dopo la fase di instruction fetch. Ora si trova dopo i decoder; questa nuova posizione permette di disabilitare la parte più grossa della pipeline. Il Loop Stream Detector del Nehalem non immagazzina più istruzioni x86, ma µops. In questo modo, diventa simile al concetto di trace cache del Pentium 4. Non è sorprendete ritrovare similitudini con i Pentium 4, dato che il Team Hilsboro, ora in carica per il Nehalem, era responsabile del progetto Pentium 4. Tuttavia, dove il Pentium 4 usava la trace cache in maniera esclusiva, poichè poteva contare solo su un decoder in caso di data cache miss, Nehalem ha il beneficio di quattro decoder, mentre il Loop Stram Detector è solo un'ottimizzazione aggiuntiva in certe situazioni. In un certo modo è il meglio di entrambi i mondi.