Implementazione SMT

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

Implementazione SMT

L'impatto dell'SMT sulle prestazioni è positivo e le risorse necessarie sono molto limitate, motivo per cui è stata reintrodotta questa tecnologia. I programmatori devono però fare attenzione con il Nehalem, poiché i thread non sono creati in egual maniera. Per risolvere questo problema, Intel fornisce un modo preciso per determinare l'esatta topologia del processore (il numero di core fisici e logici), e i programmatori possono usare il sistema operativo per assegnare ogni thread a un processore. Questo tipo di approccio non dovrebbe essere un problema per i programmatori di giochi, che già sviluppano in questa maniera per il processore Xenon, presente nell'Xbox 360. Diversamente dalle console, dove i programmatori hanno un accesso a basso livello, con un PC, lo schedule del sistema operativo ha sempre l'ultima parola.

Siccome l'SMT carica molto il motore per le operazioni out-of-order, Intel ha aumentato la dimensione di alcuni buffer interni per evitare colli di bottiglia. Quindi, il reorder buffer, che tiene traccia di tutte le istruzioni eseguite, in maniera tale da "riordinarle", passa dal poter memorizzare 96 dati a 128. In pratica, siccome il buffer è partizionato staticamente, per evitare che un thread monopolizzi tutte le risorse, la dimensione è ridotta a 64 entries per ogni thread con SMT. Ovviamente, nel caso in cui ci sia un solo thread, questo avrà accesso a tutte le risorse; quindi, non dovrebbero esserci situazioni in cui il Nehalem offre prestazioni inferiori del suo predecessore.

La reservation station, l'unità incaricata dell'assegnamento delle istruzioni alle varie unità esecutive, è stata migliorata, passando da 32 a 36 entries. Diversamente dal reorder buffer, qui il partizionamento è dinamico, quindi un thread può occupare più o meno spazio in base alle necessità.

Altri due buffer sono stati ridimensionati: il buffer di carico e quello d'immagazzinamento. Il primo permette ora 48 entries, e il secondo 32, anziché 32 e 20. Anche qui il partizionamento è statico.

Un'altra conseguenza del ritorno dell'SMT è che le prestazioni di thread synchronization sono state migliorate, almeno secondo Intel.