Il ruolo dell’accelerazione hardware nelle reti di telecomunicazioni di nuova generazione

Il ruolo dell’accelerazione hardware nelle reti di telecomunicazioni di nuova generazione
 

Per raggiungere gli sfidan­ti obiettivi posti, il 5G ha bi­sogno di appoggiarsi ad una piattaforma di rete agile ed intelligente, in grado di offrire le caratteristiche di flessibili­tà, autonomia e performance richieste. Le tecnologie cloud diventano di grande interes­se per gli operatori Telco in quanto possono fornire queste capability essenziali: in parti­colare, l’utilizzo degli accele­ratori hardware rappresenta un punto di svolta abilitante per nuovi scenari ad elevato carico computazionale.

 

Con “accelerazione hardware” si in­tende l’utilizzo di dispositivi hardwa­re dedicati per eseguire alcune fun­zioni in maniera più veloce e/o più efficiente (ad esempio consumando meno energia) rispetto all’utilizzo di un processore (CPU – Central Pro­cessing Unit) tradizionale “general purpose”.

L’accelerazione hardware ha una lunga storia. Nei primi anni ’80 i sistemi x86 venivano equipaggiati con FPU (Floating Point Unit), co­processori matematici che incre­mentavano le capacità computa­zionali in virgola mobile delle CPU; successivamente questi componen­ti sono stati inclusi direttamente nelle CPU. Negli stessi anni erano già in circolazione chip dedicati alle funzioni video, per pilotare schermi sempre più performanti (CGA, EGA, MDA fino al VGA), o alle funzioni audio, come i DSP (Digital Signal Processor) per l’audio stereo. Spes­so si trattava di schede voluminose da inserire all’interno dei computer dell’epoca e in generale erano de­dicate ad applicazioni professionali. Oggi l’audio multicanale, elabora­to mediante DSP dedicati, è dato per scontato e non è raro che un computer sia equipaggiato con una scheda GPU (Graphics Processing Unit) per il rendering delle immagini 3D su schermi full-HD.

Gli acceleratori hardware esistono perché la CPU, per sua natura, non può svolgere qualsiasi funzione in maniera efficiente; infatti la sua architettura è così flessibile da per­mettere l’implementazione di qual­siasi funzione software, ma questa flessibilità necessita di un livello di complessità cresciuto al punto da aver raggiunto il limite tecnologico di alcune soluzioni. 

 

Figura 1 - 40 years of microprocessor trend data (original data up to the year 2010 collected by M. Horowitz, F. Labonte, O. Shacham, L. Hammond and C. Batten. New plot and data collected for 2010-2015 by K. Rupp)

La miniaturiz­zazione è arrivata a livelli estremi (si parla ormai di transistor grandi 2 nm), ma il problema principale dei processori è rappresentato dalla dissipazione di calore del packaging, che impedisce di fatto l’aumento della frequenza (“clock”) di funzio­namento: l’energia dissipata dipen­de dal quadrato della frequenza, oltre certi valori non è più possibile estrarre il calore dal chip e si arriva alla sua fusione (problema noto a chi pratica l’overclocking). La legge di Moore (“il numero di transistor in un circuito integrato raddoppia ogni 2 anni”) non è più valida da tempo (fig. 1), in particolare perché il costo di fabbricazione per transistor au­menta, invece di diminuire come in passato.

L’aumento delle prestazioni, che pri­ma era garantito dall’aumento della velocità e della densità dei transi­stor, adesso viene perseguito imple­mentando nuove soluzioni, come la tecnologia multi-core, e architetture sempre più complesse (instruction pipelining, vectorization, caching, branch prediction, speculative exe­cution, etc.)

 

Tipi di acceleratori: GPU, ASIC e FPGA

L’acceleratore oggi più diffuso è sicuramente la GPU, nata a metà degli anni ’90 per elaborare le in­formazioni video, cioè le caratte­ristiche di ogni singolo pixel che compone un’immagine, con risolu­zione, numero di colori e frequenza dei fotogrammi sempre maggiori: il rendering realtime di immagini 3D ad alta risoluzione ha trovato nei videogiochi e nel CAD (Computer Aided Design) due settori trainanti. Il punto di forza delle GPU è rappre­sentato dall’enorme quantità di ele­menti computazionali che possono eseguire le stesse operazioni “ele­mentari” (il concetto di elementare va contestualizzato al tipo di appli­cazione) contemporaneamente su un numero enorme di dati (“SIMD” - single instruction, multiple data), seguendo l’approccio “data paral­lelism”: ad esempio il calcolo delle caratteristiche di tutti i poligoni ele­mentari in cui viene suddivisa una immagine.

Al contrario, le CPU lavorano uti­lizzando più unità di elaborazione in parallelo (i “core”) per applica­re istruzioni diverse su dati diver­si (“MIMD” - multiple instructions, multiple data): un moderno proces­sore può eseguire programmi come i “socket server” che gestiscono contemporaneamente sessioni con più client.

Verso la metà degli anni 2000 na­scono le GPGPU (General Purpose GPU) quando le GPU vengono im­piegate per accelerare operazioni che non hanno nulla a che fare con il rendering video, sfruttando l’e­stremo parallelismo dell’architettu­ra hardware applicato ad operazioni computazionalmente onerose, tipi­che ad esempio dell’algebra delle matrici.

Oggi non è possibile pensare ad ap­plicazioni di intelligenza artificiale senza l’impiego delle GPU per l’ad­destramento dei modelli di machine learning (Box approfondimento: Ac­celeratori hardware e AI) basato su enormi quantità di dati. Ma ci sono anche altri settori che si basano sull’utilizzo delle GPU, ad esempio i database, la biologia (studio dei P systems), la medicina (ricostruzione delle immagini delle scansioni).

Allo stesso tempo, questi algorit­mi facilmente parallelizzabili sono spesso gli unici che possono sfrutta­re in modo efficiente l’elevatissimo parallelismo delle GPU, e quindi gli unici che oggi possono “scalare” traendo ancora vantaggio come un tempo dall’aumento del numero di transistor per chip.

Tutto questo è stato reso possibile dallo sviluppo di linguaggi di pro­grammazione (ad esempio OpenCL) e ambienti di sviluppo come CUDA (Compute Unified Device Architec­ture) che consentono di sfrutta­re il parallelismo insito della GPU: OpenCL consente al programma­tore di continuare a scrivere codice in maniera sequenziale ma andan­do ad individuare alcune porzioni (i kernel), che poi vengono automati­camente replicate su molte, anche migliaia, unità di elaborazione con­temporaneamente.

Ad esempio, le singole iterazioni di un ciclo (loop), se indipendenti l’una dall’altra (come nel caso ad esem­pio del calcolo matriciale), possono essere gestite come kernel ed esse­re eseguite in parallelo (unrolling).  

 

Figura 2 - Data Parallelism vs Task Parallelism [rif. Parallel Programming Concepts GPU Computing with OpenCL – Frank Feinbube]

Questo tipo di approccio è fonda­mentalmente diverso, ad esempio, dalle tecniche di multithreading implementate nelle CPU (approccio “task parallelism”, fig. 2) dove si cer­ca l’esecuzione concorrente di più set di istruzioni sequenziali all’inter­no della stessa unità di elaborazio­ne: essendo il thread composto da più fasi (fetch-decode-execute), un singolo processore pur eseguendo effettivamente una sola operazio­ne per volta può ottimizzare i tempi di latenza di operazioni esterne (ad esempio l’accesso alla memoria) per dare l’impressione di eseguire operazioni diverse in parallelo.

Un’ulteriore tecnica introdotta nel corso degli anni dai produttori di CPU è la vectorization che sfrut­ta l’applicazione di operazioni su vettori (array) invece che su singoli elementi: i moderni compilatori per CPU provano automaticamente ad effettuare unrolling dei cicli in tal senso.

Questa tecnica, come il multithrea­ding, impatta l’organizzazione ed il funzionamento interno delle CPU e punta ad ottenere migliori perfor­mance senza richiedere modifiche alla programmazione, come invece occorre fare per sfruttare le GPGPU con OpenCL e CUDA.

Gli ASIC (Application Specific Inte­grated Circuit) sono un altro tipo di acceleratore, specializzati per una specifica funzionalità fin dalla pro­gettazione del circuito integrato su silicio e sono utilizzati per accele­rare specifiche funzioni, scarican­do quindi la CPU dal relativo carico computazionale: ad esempio i DSP utilizzati per l’elaborazione del se­gnale audio, i NIC (Network Interfa­ce Card) utilizzati per l’accelerazione dei protocolli di rete, i TPU (Tensor Processor Unit) utilizzati per l’acce­lerazione della libreria TensorFlow dedicata al machine learning.

Sono acceleratori molti efficienti e danno le massime prestazioni, ma il loro costo di sviluppo ed i tempi realizzazione sono talmente elevati da renderli convenienti solo per la produzione di milioni di esemplari.  

 

Figura 3 - Confronto performance e consumo di energia tra diversi acceleratori hardware [rif. Bringing Hardware Acceleration closer to the programmer - Iakovos Mavroidis (EcoScale-ExaNest joint workshop Rome, 17 February 2017)

Un tipo di acceleratore che recen­temente sta conquistando un posto di rilievo all’interno dei datacenter è la FPGA (Field Programmable Gate Array).

Questi dispositivi sono caratterizzati dalla presenza di un elevato numero elevato di blocchi di logica program­mabile (fino a quasi 4 milioni), una fittissima rete di interconnessioni a loro volta programmabili ed una cre­scente varietà di “accessori” quali memorie RAM multiporta, ALU, PLL e porte seriali multigigabit. Di fat­to sono dispositivi su cui è possibile istanziare e collegare funzionalità con livello di granularità variabile, da quello macro (per esempio una Fast Fourier Transform) fino a scen­dere al livello di singole porte logi­che elementari, esattamente come si fa nel progetto di un dispositivo ASIC.

Ma l’enorme vantaggio rispetto agli ASIC è che le funzionalità possono essere modificate nel corso del tem­po “sovrascrivendo” tutte od in par­te quelle precedenti.

Trattasi, quindi, di dispositivi molto efficienti dal punto di vista energe­tico (rispetto alle CPU e GPU, ma meno degli ASIC dedicati, fig. 3), in quanto sostituiscono il ciclo fetch/decode/execute tipico dei processo­ri con una struttura di controllo di­rettamente realizzata in hardware, ed adattano sia le dimensioni degli operatori aritmetici (somma, mol­tiplicazione, etc.) sia l’architettura all’applicazione.  

 

Figura 4 - Confronto modelli operativi [rif. Bringing Hardware Acceleration closer to the programmer - Iakovos Mavroidis (EcoScale-ExaNest joint workshop Rome, 17 February 2017)

Finora sono stati utilizzati soprattut­to nell’ambito della prototipazione hardware, ma anche nella realizza­zione di dispositivi in serie quando i numeri non giustificano la realizza­zione di un ASIC dedicato (questo accade per esempio negli apparati TLC dedicati). Come per le GPU, an­che per le FPGA il loro avvicinamen­to al mondo della programmazione software è stato possibile nel mo­mento in cui gli sviluppatori hanno avuto a disposizione un ambiente di sviluppo e un linguaggio di pro­grammazione (ancora OpenCL, che di fatto è un’estensione di C/C++) che permettesse di tradurre i bloc­chi di codice in “programmazione” hardware. Per la sua granularità, la FPGA è adatta a lavorare con “pipe­line parallelism” (fig. 4), nel quale i task sono organizzati secondo una logica “consumer-producer” (i dati elaborati da un blocco diventano input per il blocco successivo). Gli ambiti di applicazione delle FPGA sono in costante evoluzione, ed annoverano già settori quali quello finanziario, ricerca sulla genomica, accelerazione dei motori di ricerca (ad esempio Bing), accelerazione di stack radio (ad es. livello fisico 5G).

 

L’accelerazione nei datacenter TLC

L’introduzione degli acceleratori hardware rappresenta la naturale evoluzione dei data center che, per rispondere alla domanda crescente di prestazioni, non possono più fare affidamento sull’aumento delle pre­stazioni delle singole CPU e, d’altro canto, non possono ricorrere alla sola scalabilità orizzontale per fron­teggiare i volumi sempre crescenti di dati da trattare.

Gli acceleratori hardware offrono non solo maggiori velocità ma an­che minori consumi di energia e di spazio per unità di informazione trattata e, quindi, consentono di contenere i costi infrastrutturali di spazio, alimentazione e raffredda­mento.

L’evoluzione attuale dei data center ha spinto la definizione di architet­ture comuni fino alla standardiz­zazione degli apparati hardware (COTS – Commercial Off the Shelf), con il risultato di una compressio­ne dei costi da un punto di vista sia dell’infrastruttura IT fisica che della sua gestione.

Le reti di telecomunicazioni hanno già iniziato a prendere in “prestito” alcuni di questi concetti di efficien­tamento, ad esempio definendo le SDN (Software Defined Network), in particolare con la separazione fisica tra control-plane e data-plane.

Da un punto di vista computazio­nale, nel dominio delle reti di tele­comunicazioni le CPU sono lo stru­mento adatto per la gestione del control-plane e dei livelli più alti del­lo stack protocollare di trasporto; al contrario soffrono nella elaborazio­ne dei carichi di lavoro bit-intensive e packet-based che sono tipici dei livelli OSI più bassi (dal livello 4 in giù), per i quali si fatica a raggiun­gere livelli di throughput adegua­ti per i moderni servizi; per questo motivo fino ad oggi si è ricorso all’u­tilizzo di apparati dedicati all’imple­mentazione delle funzioni di rete (PNF – Physical Network Function). L’introduzione degli acceleratori hardware nei moderni data center cambia radicalmente questo sce­nario, perché rende questi ambien­ti adeguati alla gestione dei carichi di lavoro tipici del data-plane: ecco, quindi, che l’idea di “virtualizzare” le reti di telecomunicazioni, compresi quei segmenti come la RAN (Radio Access Network) finora toccati mar­ginalmente dalla centralizzazione all’interno di data center, assume una nuova prospettiva di fattibilità.

Tuttavia, poiché gli acceleratori har­dware rappresentano una novità all’interno dei data center, è neces­sario pensare a nuove interfacce e nuove modalità per la gestione di questi dispositivi; infatti, se si vuo­le trarre vantaggio dalla loro ripro­grammabilità e capacità di evolvere, occorre adeguare gli strumenti di gestione esistenti. Da qui il lavoro di specifica svolto da alcuni enti e associazioni quali ad esempio O-RAN nel dominio dell’accesso radio (Approfondimento: L’accelerazione hardware nella Cloud RAN).

In definitiva, nella sfida per la re­alizzazione di un’infrastruttura in grado di sostenere i tre pillar del 5G – enhanced mobile broadband, massive m2m communications, ultra-reliable and low latency com­munications - e che al contempo sia economicamente sostenibile, scala­bile nelle dimensioni e flessibile in ottica evolutiva, la virtualizzazione delle componenti infrastrutturali potrà giocare un ruolo importante. In questo processo gli acceleratori hardware (GPU e FPGA in partico­lare) saranno fondamentali per il raggiungimento delle performance richieste, con conseguenze ad oggi ancora difficilmente identificabili a partire dalle eventuali nuove archi­tetture hardware fino agli strumenti di gestione. Inoltre è evidente che gli sviluppatori delle funzioni di rete virtualizzate dovranno evolvere ver­so una sempre maggiore consape­volezza dell’architettura hardware e software delle macchine che le de­vono eseguire, se vorranno sfruttare al meglio le loro potenzialità.