Hardware parallelization of cores accessing memory with irregular access patterns
Ricerca
-
Data inizio: 24/11/2016
Durata: 13 mesi
Sommario
Le applicazioni di analisi dei dati sono caratterizzate da un elevato livello di parallelismo a livello Task, ma i loro dati di ingresso hanno dimensione tale da non consentirne la memorizzazione in un singolo nodo, cosicché i dati devono essere distribuiti su diversi nodi con diversi tempi di accesso. Implementare questo tipo di applicazioni su processori convenzionali in modo efficiente può essere complesso. Sospendere i task in attesa di dati per nascondere i ritardi di comunicazione, può alleviare il problema, ma le penalità per l'elevato numero di sospensioni e attivazioni di task possono essere così elevate da ridurre significativamente i vantaggi del parallelismo.
Per superare queste limitazioni, proponiamo di sviluppare un'architettura eterogenea che sfrutta l'FPGA connessa al processore per accelerare le parti dell'applicazione che sono caratterizzate da un elevato numero di accessi irregolari a memoria. Gli acceleratori sono composti da un insieme di moduli che implementano i task dell'applicazione. Diversi task possono essere assegnati allo stesso modulo, condividendone le unità funzionali. Ciascun task avrà propri registri e memorie, permettendo di cambiare a tempo zero qual'é il task correntemente eseguito dal modulo all'interno dell'acceleratore. In questo modo i task che sono in attesa di dati provenienti da memorie esterne possono essere sospesi finchè i dati non sono disponibili, senza introdurre ulteriori ritardi ed ottimizzando l'utilizzo di risorse dell'FPGA. Le diverse richieste di dati fatte dai diversi task assegnati ai diversi moduli sono gestite da un controller di memoria parallelo che trasmette le richieste ai diversi componenti (memorie interne o altri nodi del sistema). Avere diversi task assegnati allo stesso modulo permette di nascondere la latenza degli accessi a memoria, massimizzando l'utilizzo della potenza computazione dell'FPGA.
Per superare queste limitazioni, proponiamo di sviluppare un'architettura eterogenea che sfrutta l'FPGA connessa al processore per accelerare le parti dell'applicazione che sono caratterizzate da un elevato numero di accessi irregolari a memoria. Gli acceleratori sono composti da un insieme di moduli che implementano i task dell'applicazione. Diversi task possono essere assegnati allo stesso modulo, condividendone le unità funzionali. Ciascun task avrà propri registri e memorie, permettendo di cambiare a tempo zero qual'é il task correntemente eseguito dal modulo all'interno dell'acceleratore. In questo modo i task che sono in attesa di dati provenienti da memorie esterne possono essere sospesi finchè i dati non sono disponibili, senza introdurre ulteriori ritardi ed ottimizzando l'utilizzo di risorse dell'FPGA. Le diverse richieste di dati fatte dai diversi task assegnati ai diversi moduli sono gestite da un controller di memoria parallelo che trasmette le richieste ai diversi componenti (memorie interne o altri nodi del sistema). Avere diversi task assegnati allo stesso modulo permette di nascondere la latenza degli accessi a memoria, massimizzando l'utilizzo della potenza computazione dell'FPGA.