CPU Intel Haswell con TSX, arriva la memoria transazionale

Intel svela un nuovo particolare dell'architettura Haswell, fondamenta dei processori in arrivo nel 2013. Si tratta del supporto TSX, Transactional Synchronization Extensions. Un nuovo modo di gestire i thread sui processori multi-core che dovrebbe portare più efficienza sul fronte delle prestazioni e dei consumi.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Haswell, l'architettura dei processori Intel del 2013, integrerà il supporto hardware alla memoria transazionale (HTM, hardware transactional memory). Vi avevamo anticipato l'esistenza di questa tecnica, applicata da IBM a un chip dedicato ai supercomputer. Intel ha svelato la novità annunciando la compatibilità con le istruzioni TSX (Transactional Synchronization Extensions).

TSX migliorerà l'efficienza nel calcolo su architettura multi-core. In poche parole, queste istruzioni consentiranno una migliore gestione del multi-threading, permettendo ai thread della CPU di lavorare contemporaneamente, ma di non interferire l'uno con l'altro e creare colli di bottiglia. Per il consumatore probabilmente non cambierà molto, ma per i programmatori potrebbe rivelarsi un buon passo avanti.

All'interno di una CPU se i compiti sono divisi correttamente, si può ridurre in modo drastico il tempo per svolgere una determinata operazione. Se le responsabilità non sono chiaramente stabilite, alcune attività potrebbero essere svolte due volte, mentre altri passaggi potrebbero non essere eseguiti affatto. Il software multi-thread si occupa di questo problema, bloccando i thread per proteggerli da modifiche casuali fino a quando l'operazione in corso non viene completata. Ci sono diversi livelli e meccanismi per la gestione dei thread, che offrono un controllo più o meno preciso e un rischio di errore di entità variabile.

Le istruzioni TSX spostano la gestione dei thread dal software all'hardware e danno ai programmatori la possibilità di bloccare i thread in modo più preciso, eliminando la difficoltà d'implementazione tipica del metodo software. Con la memoria transazionale, i thread non avranno più bisogno di rimuovere i blocchi per manipolare le strutture di dati in memoria. Gli basterà avviare una transazione prima di tentare qualsiasi modifica alla struttura, applicare le loro modifiche e, quando avranno terminato, effettuare la transazione. Durante l'operazione, il sistema di memoria transazionale prende atto di tutta la memoria che i thread leggono e scrivono.

Quando la transazione è stata svolta, il sistema controlla che nessun altro thread apporti modifiche alla memoria usata dalla transazione. Se non ci sono stati cambiamenti, la transazione si svolge e il thread continua. Al contrario, viene interrotta e tutte le modifiche annullate. Il thread può quindi ripetere l'operazione, provare una strategia diversa o rinunciare del tutto. Nonostante il processo sembri farraginoso, dovrebbe invece far risparmiare in termini di energia e tempo rispetto alle tecniche attuali.