Multi-threading, una nuova tecnica promette di raddoppiare le prestazioni dei PC

Multi-threading, una nuova tecnica promette di raddoppiare le prestazioni dei PC

Il Simultaneous and Heterogeneous Multithreading (SHMT) messo a punto alla University of California Riverside potrebbe migliorare enormemente prestazioni ed efficienza dei PC esistenti. Ecco di cosa si tratta.

di pubblicata il , alle 16:41 nel canale Processori
 

Raddoppiare le prestazioni del vostro PC, smartphone o server senza cambiare hardware è (potenzialmente) possibile, almeno secondo Hung-Wei Tseng, professore associato di ingegneria elettronica e informatica della University of California Riverside.

Il ricercatore, insieme al suo assistente Kuan-Chieh Hsu, ha illustrato quello che viene definito un "cambio di paradigma nell'architettura dei computer" in un recente articolo intitolato "Simultaneous and Heterogeneous Multithreading" (SHMT).

Il simultaneous multithreading attuale consente a un core della CPU di operare con due o più thread, fondamentalmente andando a suddividere un processo in più "filoni" per elaborarli parallelamente. Nel caso di SHMT, la logica è quella di sfruttare tutte le risorse presenti nel sistema e non confinare il carico a un singolo componente.

Oggi i computer hanno vari componenti che si occupano di elaborare i dati, dai core della CPU alle unità della GPU, fino ad arrivare alle nuove NPU. Questi componenti processano le informazioni separatamente, spostandole da un'unità a quella successiva, creando un collo di bottiglia.

Con SHMT (simultaneous and heterogeneous multithreading) i ricercatori della UCR hanno messo a punto un modo per sfruttare le diverse unità contemporaneamente.

SHMT usa quello che i ricercatori hanno chiamato "smart quality-aware work-stealing (QAWS) scheduler" per la gestione dinamica dei carichi eterogenei tra i componenti. Questa parte del processo punta a bilanciare le prestazioni e la precisione assegnando i task che richiedono un'elevata accuratezza alla CPU anziché a un acceleratori IA, più incline agli errori. Inoltre, lo scheduler può riassegnare senza problemi i compiti agli altri processori in tempo reale se un componente rimane al palo.

Posto di fronte agli stessi carichi, il sistema con framework SHMT ha migliorato le prestazioni rispetto al modus operandi tradizionale del 96%, riducendo al contempo del 51% il consumo energetico. "Non è necessario aggiungere nuovi processori perché li hai già", ha detto Tseng.

Questo balzo in avanti è stato ottenuto su una piattaforma NVIDIA Jetson Nano in cui trovano posto una CPU ARM quad-core a 64 bit, una GPU Maxwell con 128 core, 4 GB di RAM e uno slot M.2 con un acceleratore TPU di Google.

Tseng, tuttavia, avverte che sono necessarie ulteriori ricerche per rispondere a diverse domande sull'implementazione del sistema, sul supporto hardware, sull'ottimizzazione del codice e su quale tipo di applicazioni trarranno maggiori benefici.

"La limitazione di SHMT non è il modello in sé, ma piuttosto la possibilità da parte del programmatore di rivisitare l'algoritmo per mostrare il tipo di parallelismo che rende SHMT facile da sfruttare", spiega il documento. In altre parole, non è una semplice implementazione hardware universale che qualsiasi sviluppatore può sfruttare.

I benefici prestazionali sono inoltre legati al tipo e dimensione del carico: con compiti non troppo pesanti il vantaggio di usare SHMT si è affievolito, fino ai minimi termini, in quanto ci sono meno opportunità di distribuire le attività in parallelo su più unità. Insomma, SHMT può avere del potenziale, ma al momento è da vedersi come una ricerca promettente e poco più.

6 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
demon7726 Febbraio 2024, 17:35 #1
Considerazioni da asino che non ha competenze di programmazione:
a livello concettuale è facile dire che "faccio uno scheduler" che ripartisce il carico di lavoro tra tutte le unità di calcolo presenti (CPU, GPU, NPU ecc)..
Ma scendendo a livello PRATICO so persino io che tra il dire e il fare c'è di mezzo altro che il mare..

Già è cosa non da poco predisporre un software per fare in modo che lavori su 2-4-6-8 ecc cores di CPU.. e più sono più diventa difficile.
Qui poi si prevede di tirare in ballo GPU ed NPU che hanno oltretutto il loro set specifico di istruzioni..

non so.. sarebbe bello ma io la vedo difficilissima..
supertigrotto26 Febbraio 2024, 17:37 #2
AMD avrebbe pronte le CPU 1 core 4 thread ma aveva affermato un paio di anni fa che per ora,non sono poi così utili in ambito casalingo,forse in ambito server ma è tutto da verificare e ricompilare.
Chissà se la tecnica è simile.....
Piedone111326 Febbraio 2024, 18:24 #3
Originariamente inviato da: supertigrotto
AMD avrebbe pronte le CPU 1 core 4 thread ma aveva affermato un paio di anni fa che per ora,non sono poi così utili in ambito casalingo,forse in ambito server ma è tutto da verificare e ricompilare.
Chissà se la tecnica è simile.....


No.
Smt a 4 vie offrono lo stesso framework con capacità omogenei di interpretare le istruzioni.
Questo invece riguarda sistemi eterogenei e per prendere piede tutti le unita di calcolo devono essere retrocompatibili a livello istruzioni con il precedente.
Se utilizzi un software scritto per x86 con relativa poca spesa poi ridistribuirlo a più core logici a prescindere se fisici o "virtuali" ( di questa cosa dovrebbe occuparsi lo scheduler dell'os)
Questo tipo di S H ( Heterogeneus) M T oltre a lavorare a livello di scheduler dell'os ( deve non solo dividere il carico per le unità di calcolo, ma distribuire tale carico anche per unita omogenee) deve essere anche compilato per poter inviare i th al più appropriato cluster di calcolcolo.
Insomma per funzionare npu e gpu devono essere "standard" ed al limite avere ottimizazioni attivabili ( come per le sse oggi) zavorrando questi due componenti di istruzioni legacy.
Per avere poi la completa compatibilità il software deve avere patch ottimizzate per NPU e GPU oltre a Path da far girare su cpu in caso di assenza di qualche loro componente o funzione ( tipo un sistema privo di npu deve avere un path ramificato e switchabile per essere eseguito su cpu o gpu) rendendo il processo di debugging complesso e dilatando a dismisura la dimensione dell'eseguibile ( con relativa gestione della ram).
Un'ottima idea, peccato che AMD ( e credo anche Intel) siano al lavoro da diverso tempo sui soc per fare qualcosa di vicino ma gestito a livello hardware.
voodooFX26 Febbraio 2024, 19:32 #4
P6 Chip. Triplica la velocità del Pentium

fabius2127 Febbraio 2024, 01:33 #5
Mi piace come cosa. Sembra un pò come il fusion di amd. A grandi linee s'intende.
Però ci vorrà del tempo, anche io nel 2000 o anche prima volevo fare delle cose, però ero in anticipo, e l'hw e il software li ho visti evolvere e renderlo possibile solo nel 2012 circa.
Vedendo come inizializza linux la 7800 , sembra che ogni sua funzionalità venga compartimentata, isolata, e vista come una cosa a se dall'os.

Vedremo come e se ci potrà essere utile.
unnilennium27 Febbraio 2024, 06:12 #6
Idea ottima, ma visto nella pratica le difficoltà di implementazione, forse nei desktop sarà difficile, nei server magari no... Certo basta vedere come viene gestito lo scheduler delle CPU Intel con core eterogenei dopo qualche anno dall'implementazione, migliorato molto ma ancora problematico con alcune app, per capire quanto sia difficile da realizzare una simile idea

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^