Pagine

La microarchitettura di Haswell è stata ottimizzata per migliorare ulteriormente il parallelismo e ottenere maggiori prestazioni. Quel che ci possiamo aspettare, comuqnue, è un boost compreso fra il 10 ed il 20% per le vecchie applicazioni rispetto ad Ivy Bridge (applicazioni ottimizzate e scritte per avvantaggiarsi delle nuove istruzioni mostreranno sicuramente un divario supeiore). D'altro canto i cambiamenti esposti da Intel sull'architettura dei soli core CPU riguardano un consolidamento del front-end, un miglioramento del branch prediction e buffer più capienti.

Le dimensioni dei buffer interni sono state incrementate al fine di allargare la finestra OoO, il meccanismo di branch prediction è stato migliorato e sono state aggiunte ulteriori due exection port alla reservation station per garantire fino ad 8 ops per ogni ciclo (le precedenti architetture Nehalem e Sandy Bridge dispongono di 6 porte) e fino a 4 operazioni sugli interi per ciclo di clock (perfettamente in linea con quanto le unità di decodifica delle istruzioni riescono a fare. Le porte 6 e 7 includono una ALU Integer capace di eseguire due branch per ciclo di clock ed una unità di Store Address che può effettuare due operazioni di load ed una di store per ciclo.

 

Haswell supporta il nuovo set di istruzioni AVX2le quali sono eseguite con un throughput doppio rispetto alle istruzioni AVX di Sandy Bridge e addirittura quattro volte superiore rispetto alle SSE di Nehalem (questo è possibile grazie alla presenza di due porte per le operazioni floating-point che permettono di eseguire una istruzione di FMA, composta da due istruzioni, una di moltiplicazione e l'altra di somma, con un solo ciclo). All'interno del set sono presenti diverse nuove istruzioni scalari e vettoriali delle quali possono beneficiare in special modo le applicazioni audio/video, quelle HPC ed i giochi. Inoltre, nuove istruzioni Integer permettono di migliorare le prestazioni con operazioni di crittografia, indicizzazione e conversione Endian.

Il sistema delle cache è stato rivisto e migliorato anch'esso andando sia ad agire sulla capacità (ad esempio la cache L2 TLB ha dimensioni superiori) sia sulle prestazioni. Questa ottimizzazione si rende necessaria per evitare colli di bottiglia nel fornire i dati alle più veloci unità di esecuzione.

Le cache L1 ed L2 restano della stessa capacità di quelle di Sandy Bridge ma in Haswell è possibile fare un caricamento di un'istruzione a 256-bit (AVX o AVX2) con una singola lettura dalla cache L1 (data), usando due porte. Il raddoppio della banda della cache L1 corrisponde ad un raddoppio anche di quella della cache L2.

In nessun documento Intel ha reso note informazioni sulle dimensioni della cache L3 che dipenderanno, come accade con Ivy Bridge e Sandy Bridge, dal numero di core del modello considerato. Il canale di interconnessione ad anello (Ring Bus) non è stato modificato rispetto al passato tranne che per avere una maggiore banda passante.

haswell 019

Con Haswell Intel introduce anche un meccanismo, indicato come TSX o Transactional Synchronization Extensions, che permette di estrarre un maggior parallelismo dai thread in esecuzione rendendo agli sviluppatori la vita più facile. Quando si ha a che fare con ambienti multi-core che agiscono sulla stessa struttura dati è facile avere un thread che deve fare una update e blocca la struttura per tutti gli altri.

Chiaramente questa è una situazione di svantaggio visto che ci sono molte risorse in attesa che non possono essere usate; quel che accade spesso, però, è che l'operazione di update deve essere effettuata su uan regione ristretta dei dati per cui è possibile permettere agli altri thread di eseguire le proprie operazioni. I conflitti sono gestiti dall'hardware e nel caso in cui dovessero verificarsi viene effettuato un rollback ed inviata una segnalazione al software (il supporto TSX è disponibile sia per applicazioni Windows che Linux).