Technology in Use

it

Al giorno d’oggi i sistemi embedded per applicazioni multimediali includono funzionalità complesse, da eseguire tipicamente anche su dispositivi portatili. Inoltre, questi sistemi richiedono flessibilità e adattività a tempo di esecuzione, che rendono ancora più complessa la loro progettazione. La rapidità con cui le applicazioni evolvono rappresenta un ulteriore vincolo alla progettazione.

A livello hardware i sistemi eterogenei sono una delle migliori alternative per garantire la flessibilità richiesta. In particolare, l’approccio riconfigurabile si è dimostrato estremamente efficace in vari ambiti applicativi, caratterizzati da differenti requisiti computazionali e da applicazioni dal comportamento non staticamente predicibile.

Questo tipo di architetture utilizza lo stesso numero finito di risorse per implementare varie funzionalità in tempi diversi. Vi possono essere sistemi riconfigurabili a grana medio/grossa a grana fine. I sistemi a grana medio/grossa sono più adatti ad applicazioni che manipolano grosse quantità di dati e forniscono elementi riconfigurabili a livello di parola di memoria (o byte). I sistemi a grana fine sono più adatti ad applicazioni con elevato controllo del flusso esecutivo e che manipolano dati a livello di singolo bit.

Naturalmente, la progettazione e la gestione di architetture eterogenee riconfigurabili non è semplice e richiede un ingente sforzo da parte dello sviluppatore, soprattutto se si vuole raggiungere una efficienza soddisfacente nell’esecuzione di una specifica funzionalità.

 

L’Approccio Dataflow

Il paradigma di programmazione dataflow è stato concepito negli anni ‘70, ma non ha trovato particolare diffusione in passato. Negli ultimi anni tale approccio è stato rivalutato in diversi campi applicativi.

Un programma dataflow viene descritto attraverso un grafo orientato in cui i nodi rappresentano le unità computazionali (attori), mentre gli archi identificano canali dedicati attraverso cui gli attori comunicano in maniera asincrona scambiando pacchetti di dati (token).

Ogni attore esegue una specifica elaborazione sulla sequenza di token in ingresso. Lo stato interno dell’attore e la sequenza di token in ingresso possono determinare un cambiamento di stato interno e l’emissione di uno o più token in uscita. L’esecuzione concorrente e asincrona dei diversi attori permette di realizzare funzionalità complesse, anche parallele, quali quelle di un codec audio/video.

La modularità del dataflow e l’estrema semplicità con cui esso può esplicitare il parallelismo intrinseco dell’applicativo descritto lo rendono adatto a diversi contesti applicativi. Infatti gli attori, interagendo solamente attraverso lo scambio di token in maniera asincrona, non presentano condizioni di concorrenza e l’identificazione di eventuali flussi esecutivi paralleli nel grafo dataflow è immediata.

dataflow

 

 

Dataflow per la Codifica Audio/Video

Uno dei contesti in cui il dataflow ha avuto successo negli ultimi anni è quello della codifica audio/video. In questo ambito, le applicazioni venivano descritte con i tradizionali linguaggi testuali monolitici (C, C++, etc.). Questi ultimi, tuttavia, non consentono di esprimere in maniera diretta ed efficace il parallelismo tipico dei codec.

Inoltre il campo della codifica audio/video è in costante evoluzione e nuove versioni degli applicativi si susseguono rapidamente. È comune che versioni successive dello stesso codec presentino funzionalità comuni tra loro.

Linguaggi monolitici mal si adattano a queste evoluzioni e risulta essere onerosa la re-ingegnerizzazione degli stessi, a causa della loro intrinseca carenza di modularità.

Il formalismo dataflow, con la sua modularità e capacità di evidenziare il parallelismo, si è rivelato estremamente adatto dunque a sostituire i vecchi linguaggi.

 

Reconfigurable Video Coding

Il gruppo MPEG, che definisce gli standard audio e video a livello mondiale, ha formalizzato nel Reconfigurable Video Coding:

  1. una metodologia di descrizione dei codec attraverso una rete di attori interconnessi descritti in termini di Xml Dataflow Format (XDF) e di un sottoinsieme del Caltrop Actor Language (CAL). XDF è un linguaggio dataflow che permette di specificare la costituzione della rete, mentre il CAL è un linguaggio atto alla specifica interna dei singoli attori.
  2. una libreria di attori comuni a diversi codec, la Video Tool Library (VTL), per facilitare l’implementazione fisica degli stessi.
  3. una serie di tool normativi e non a supporto degli sviluppatori.

Questo formalismo è comunemente noto come RVC-CAL.

 

 

Reconfigurable Video Coding nel progetto RPCT

La modularità ed il parallelismo del paradigma dataflow si sono rivelati utili anche nel contesto delle architetture riconfigurabili a grana medio/grossa. Infatti, l’idea di fondo alla base dello stesso progetto RPCT, è quella di sfruttare la modularità di una rete dataflow per mappare univocamente ogni attore in un diverso blocco funzionale hardware (a livello di RTL identificabile come un “module” Verilog o un “component” VHDL). Il passaggio verso un’architettura riconfigurabile a grana medio/grossa è immediato: volendo combinare due reti, che presentano tra loro delle similarità (ossia degli attori in comune), si può pensare di mappare entrambi grafi nella stessa rete condividendo gli attori comuni attraverso l’introduzione di moduli di switching attorno ad essi.

basic_idea

I moduli di switching (SBoxes) hanno l’unico compito di instradare correttamente i dati, senza svolgere su di essi alcuna elaborazione. Questi moduli, a seconda della funzionalità richiesta, sono in grado di trasmettere/prelevare i dati verso/dal attore coinvolto nella computazione corrente. In aggiunta, la modularità ed il parallelismo propri del formalismo dataflow favoriscono un’implementazione rapida ed efficiente degli applicativi coinvolti, rendendo possibile l’automatizzazione dell’implementazione del sistema fisico.


Torna a Tool Overview

en

Nowadays embedded systems for multimedia applications include complex functions, to be performed typically on portable devices. In addition, these systems require flexibility and adaptability at runtime, which make their design even more complex. Moreover, the ever evolving natures of this application scenario a further design constraint to be considered.

At the hardware level heterogeneous systems are one of the best alternatives to ensure the required flexibility. In particular, the reconfigurable approach has proved extremely effective in various application fields, characterized by different computational requirements and not statically predictable workflows.

These architectures use the same finite number of resources to implement various functions at different times. Reconfigurable systems are classified as fine grained and coarse grained. Coarse grained ones are more suitable for applications that manipulate large amounts of data and provide reconfiguration at the level of the memory word (or byte). Fine-grained reconfigurable systems are more suitable for applications with a high control flow, providing reconfiguration at the level of the single bit.

Design and management of heterogeneous reconfigurable architectures is not trivial and requires a substantial developers’ effort, especially if you want to achieve the efficient execution of different functionalities on the same substrate.

 

The Dataflow Programming Approach

The dataflow programming paradigm was conceived in the 70s but, in the past, it was not so exploited. Recently it found its fortune in different application fields.
A dataflow program can be described as a directed graph, where nodes represent computational units (actors) while the arcs are dedicated communication channels among the actors that asynchronously exchange data packets (token).

Each actor performs a specific processing sequence on the input tokens. The internal state of an actor and the different input sequences of tokens may modify the internal state of the actor itself and may lead to the emission of one or more tokens as output. The asynchronous and concurrent execution of different actors allows implementing complex functionalities, that can take place even in parallel, such as an audio/video codecs.

The modularity of the formalism and its capability of simply describing the intrinsic parallelism of an application make the dataflow programming model extremely suitable for different application contexts. Indeed the actors, asynchronously interacting through tokens exchange, are not affected by concurrency issues and the different parallel execution flows are simply identified and managed.

dataflow

 

Dataflow Support for Audio/Video Coding

The dataflow model of computation, in the recent years, has been particularly successful in audio/video encoding. In this context, the applications were traditionally described with the textual monolithic languages (C, C ++, etc.). These latter, however, do not allow expressing the typical parallelism characterizing codecs in a straightforward and effective way.

In addition, the field of audio/video encoding is constantly evolving and new specification releases are constantly coming out. Nevertheless, successive codecs versions very often present common features. Monolithic languages are not suitable to these changes and it is quite onerous re-engineering of the entire application code, due to the inherent lack of modularity.

The dataflow formalism, with its modularity and its native capability to express parallelism, has proved to be extremely suitable the old kind of specifications.

 

Reconfigurable Video Coding

The MPEG group that sets the standard audio and video worldwide, formalized within the Reconfigurable Video Coding:

  1. a methodology to describe codecs through a network (given in Xml Dataflow Format, XDF) of interconnected actors (given in a subset of the Caltrop Actor Language, CAL). XDF is a dataflow language that allows specifying a network of actors. These latter are described by means of the CAL language.
  2. the Video Tool Library (VTL) a library of actors common to different codecs, to facilitate the physical implementation of the codecs.
  3. a series normative and non-normative tools to support designers.

This formalism is commonly known as RVC-CAL.

 

Reconfigurable Video Coding within the RPCT project

The modularity and the parallelism characterising the dataflow formalism have been useful also in the context of coarse grained reconfigurable architectures. In fact, the basic assumption at the basis of the RPCT project is to exploit the modularity of a dataflow network to uniquely map each actor on a different hardware functional block (at the level of RTL identifiable as a “module” or a Verilog “component” VHDL). The step towards coarse grained reconfigurable architectures is then quite straightforward: if you want to combine the two networks, which have similarities between them (i.e. the actors in common), you can think of mapping both graphs on the same network sharing the common actors through the introduction of dedicated switching modules.

 

basic_idea

The switching elements (SBoxes) simply route correctly the flow of the data, according to the input networks, without performing any processing on the forwarded token. The Sboxes, depending on the required functionality, are able to transmit/retrieve data to/from the actors involved in the current computation. In addition, the modularity and the parallelism characterising the dataflow formalism allows a rapid and efficient implementation of the requested applications, making possible the automation of the deployment of the physical system.


Return to Tool Overview