Riassunto analitico
Nella storia dell’evoluzione del computing, la sfida più grande è sempre stata quella di fornire un crescente livello di efficienza energetica senza sacrificare la flessibilità, sia per dispositivi mobili a basso consumo energetico che per data center ad alte prestazioni e cloud computing.
L’eterogeneità architetturale è la chiave per fornire questa efficienza, in particolare per affrontare i “muri tecnologici” (walls) che impediscono lo sviluppo del computing: utilization wall (ovvero l'impossibilità di tenere accesi tutti i transistor di un chip) e data deluge (ovvero l’aumento della quantità di dati da elaborare molto più rapido del miglioramento di prestazioni ed efficienza delle unità di calcolo). I sistemi eterogenei su singolo chip rispondono a queste esigenze non solo attraverso il parallelismo, quindi replicando lo stesso tipo di processore sullo stesso chip, ma aggiungendo coprocessori diversi, che incorporano capacità di elaborazione specializzate nella gestione efficiente di compiti specifici. Per sfruttare appieno le potenzialità di questo tipo di piattaforme è necessario quindi che le applicazioni possano scaricare parte della computazione (computing offloading) da un sottosistema all’altro, in maniera efficace, semplice e portabile su diversi sistemi operativi, da OS general purpose (e.g., GNU/Linux) a RTOS/bare-metal (e.g., NuttX, FreeRTOS). Un esempio di questo tipo di sistemi è la piattaforma HERO [1-2], composta da un host implementato tramite una potente CPU OpenHW CVA6, con instruction set RISC-V 64-bit, affiancata da un acceleratore programmabile che include 8 piccoli ed efficienti core RISC-V 32-bit. Anche se ognuno di questi core, preso singolarmente, è meno performante della CPU CVA6, il loro vantaggio sta nella dimensione più ridotta, che permette di averne molti di più a parità di area, con una riduzione del consumo di energia e del calore generato, producendo inoltre un throughput maggiore.
L’obiettivo di questa tesi è sviluppare una libreria leggera che permetta un offloading dinamico di funzioni altamente parallelizzabili da un processo host che esegue su un sistema operativo RTOS come NuttX verso l’acceleratore.
[1] Kurth, A., Capotondi, A., Vogel, P., Benini, L., & Marongiu, A. (2018, November). HERO: An open-source research platform for HW/SW exploration of heterogeneous manycore systems. In Proceedings of the 2nd Workshop on AutotuniNg and aDaptivity AppRoaches for Energy efficient HPC Systems (pp. 1-6). [2] Valente, L., Tortorella, Y., Sinigaglia, M., Tagliavini, G., Capotondi, A., Benini, L., & Rossi, D. (2022). HULK-V: a Heterogeneous Ultra-low-power Linux capable RISC-V SoC. arXiv preprint arXiv:2211.14944.
|