AMD KAVERI: le novità, HSA
Andiamo a vedere insieme quali sono le principali novità che Kaveri si porta in dote.
Sicuramente l'aspetto principale intorno al quale tutto ruota è l'implementazione del sistema HSA o Heterogeneous System Architecture.
Sin da quando sono stati creati i computer, questi hanno posseduto al loro interno le CPU o Central Processing Unit, atte all'elaborazione di determinati processi, scritti appositamente per loro.
Fino a qualche decennio fa, tutto questo non creava nessun problema agli sviluppatori i quali dovendo scrivere software e istruzioni solo per le CPU senza compiere salti mortali.
Negli ultimi 20 anni, appunto, le cose sono cambiate in quanto abbiamo visto il crescere esponenziale di processi destinati ad altri comparti hardware, in particolare alla GPU, inizialmente designate allo sfruttamento del calcolo in parallelo che queste ci consentono.
Con il passare del tempo e con l'utilizzo di applicativi general purpose le GPU son diventate sempre più potenti e onerose in termini di energia elettrica.
Questa diversificazione tra GPU e CPU e i rispettivi processi comporta una noia non indifferente per gli sviluppatori, i quali devono diversificare il proprio codice in base all'hardware per cui è indicato il processo e dovendo continuamente far convivere e collaborare dati elaborati da una o dall'altra unità.
Il problema principale sta nel fatto che CPU e GPU hanno una gestione separata della memoria e i processi vengono indirizzati ad una o all'altra a seconda di chi deve processarlo.
Questo si traduce in una mancata efficienza di elaborazione dei dati e latenza nella gestione degli stessi in quanto se determinati dati elaborati dalla GPU dovessero servire alla CPU questi dovrebbero essere richiamati da quest'ultima, copiati in cache, utilizzati e flushati dalla cache stessa dopo esser stati rimandati al mittente; tutte queste operazioni devono essere fatte in maniera esplicita dal programmatore.
Questo determina, inoltre, una gestione separata degli scheduling dei processi.
L'introduzione dell'HSA cancella finalmente queste barriere permettendo a GPU e CPU di condividere realmente la memoria disponibile e permettere agli sviluppatori di far riferimento ad un singolo indirizzo di memoria, indipendentemente dal fatto che sia la CPU o la GPU a processare i dati contenuti all'interno dell'indirizzo di memoria specificato.
Questo si traduce in un "allargamento" della memoria disponibile da parte della GPU; infatti se il nostro PC è dotato, ad esempio, di 32GB di RAM, la GPU potrà usufruire dell'intero spazio.
Dunque CPU e GPU condividono la stessa memoria e gli stessi indirizzi, ma chi decide se i dati all'interno devono esser utilizzati dalla CPU o dalla GPU? gli sviluppatori?
La risposta è no; tale decisione spetta all'hUMA (Heterogeneous Uniform Memory Access) il quale, per l'appunto, gestisce l'accesso alla memoria sia da parte della CPU, sia da parte della GPU.
Questo permette ad un processo di poter accedere in maniera diretta alla risorsa più adeguata eliminando le priorità della CPU.
Questa tecnologia è stata sviluppata non solo da AMD ma da numerose aziende che hanno creato la "HSA Foundation" con lo scopo di creare un'architettura standard rivolta ai processi eterogenei; tra le aziende facenti parte della fondazione troviamo AMD, ARM, Qualcomm, Samsung, Mediatek, Texas Instruments, Imagination ed altre.