{"id":1734,"date":"2014-05-31T17:14:46","date_gmt":"2014-05-31T17:14:46","guid":{"rendered":"http:\/\/sites.unica.it\/rpct\/?page_id=1734"},"modified":"2015-08-06T16:12:36","modified_gmt":"2015-08-06T16:12:36","slug":"technology-in-use","status":"publish","type":"page","link":"https:\/\/sites.unica.it\/rpct\/risultati-ricerca\/technology-in-use\/","title":{"rendered":"Technology in Use"},"content":{"rendered":"<h4>it<\/h4><p><\/p>\n<p>Al giorno d\u2019oggi i<a href=\"http:\/\/en.wikipedia.org\/wiki\/Embedded_system%20\"> <b>sistemi embedded<\/b><\/a> per applicazioni multimediali includono funzionalit\u00e0 complesse, da eseguire tipicamente anche su dispositivi portatili. Inoltre, questi sistemi richiedono flessibilit\u00e0 e adattivit\u00e0 a tempo di esecuzione, che rendono ancora pi\u00f9 complessa la loro progettazione. La rapidit\u00e0 con cui le applicazioni evolvono rappresenta un ulteriore vincolo alla progettazione.<\/p>\n<p>A livello hardware i sistemi eterogenei sono una delle migliori alternative per garantire la flessibilit\u00e0 richiesta. In particolare, l\u2019approccio riconfigurabile si \u00e8 dimostrato estremamente efficace in vari ambiti applicativi, caratterizzati da differenti requisiti computazionali e da applicazioni dal comportamento non staticamente predicibile.<\/p>\n<p>Questo tipo di architetture utilizza lo stesso numero finito di risorse per implementare varie funzionalit\u00e0 in tempi diversi. Vi possono essere sistemi riconfigurabili a grana medio\/grossa a grana fine. I sistemi a grana medio\/grossa sono pi\u00f9 adatti ad applicazioni che manipolano grosse quantit\u00e0 di dati e forniscono elementi riconfigurabili a livello di parola di memoria (o byte). I sistemi a grana fine sono pi\u00f9 adatti ad applicazioni con elevato controllo del flusso esecutivo e che manipolano dati a livello di singolo bit.<\/p>\n<p>Naturalmente, la progettazione e la gestione di architetture eterogenee riconfigurabili non \u00e8 semplice e richiede un ingente sforzo da parte dello sviluppatore, soprattutto se si vuole raggiungere una efficienza soddisfacente nell\u2019esecuzione di una specifica funzionalit\u00e0.<\/p>\n<p>&nbsp;<\/p>\n<p><b>L\u2019Approccio Dataflow<\/b><\/p>\n<p>Il paradigma di programmazione dataflow \u00e8 stato concepito negli anni \u201870, ma non ha trovato particolare diffusione in passato. Negli ultimi anni tale approccio \u00e8 stato rivalutato in diversi campi applicativi.<\/p>\n<p>Un programma dataflow viene descritto attraverso un grafo orientato in cui i nodi rappresentano le unit\u00e0 computazionali (attori), mentre gli archi identificano canali dedicati attraverso cui gli attori comunicano in maniera asincrona scambiando pacchetti di dati (token).<\/p>\n<p>Ogni attore esegue una specifica elaborazione sulla sequenza di token in ingresso. Lo stato interno dell\u2019attore e la sequenza di token in ingresso possono determinare un cambiamento di stato interno e l\u2019emissione di uno o pi\u00f9 token in uscita. L\u2019esecuzione concorrente e asincrona dei diversi attori permette di realizzare funzionalit\u00e0 complesse, anche parallele, quali quelle di un codec audio\/video.<\/p>\n<p>La modularit\u00e0 del dataflow e l\u2019estrema semplicit\u00e0 con cui esso pu\u00f2 esplicitare il parallelismo intrinseco dell\u2019applicativo 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\u2019identificazione di eventuali flussi esecutivi paralleli nel grafo dataflow \u00e8 immediata.<\/p>\n<p><a href=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1873 size-full\" src=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow.jpg\" alt=\"dataflow\" width=\"570\" height=\"187\" srcset=\"https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow.jpg 570w, https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow-300x98.jpg 300w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>Dataflow per la Codifica Audio\/Video<\/b><\/p>\n<p>Uno dei contesti in cui il dataflow ha avuto successo negli ultimi anni \u00e8 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.<\/p>\n<p>Inoltre il campo della codifica audio\/video \u00e8 in costante evoluzione e nuove versioni degli applicativi si susseguono rapidamente. \u00c8 comune che versioni successive dello stesso codec presentino funzionalit\u00e0 comuni tra loro.<\/p>\n<p>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\u00e0.<\/p>\n<p>Il formalismo dataflow, con la sua modularit\u00e0 e capacit\u00e0 di evidenziare il parallelismo, si \u00e8 rivelato estremamente adatto dunque a sostituire i vecchi linguaggi.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Reconfigurable Video Coding<\/b><\/p>\n<p>Il <a href=\"http:\/\/it.wikipedia.org\/wiki\/MPEG\"><b>gruppo MPEG<\/b><\/a>, che definisce gli standard audio e video a livello mondiale, ha formalizzato nel<a href=\"http:\/\/en.wikipedia.org\/wiki\/Reconfigurable_video_coding\"> <b>Reconfigurable Video Coding<\/b><\/a>:<\/p>\n<ol>\n<li>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 \u00e8 un linguaggio dataflow che permette di specificare la costituzione della rete, mentre il CAL \u00e8 un linguaggio atto alla specifica interna dei singoli attori.<\/li>\n<li>una libreria di attori comuni a diversi codec, la Video Tool Library (VTL), per facilitare l\u2019implementazione fisica degli stessi.<\/li>\n<li>una serie di tool normativi e non a supporto degli sviluppatori.<\/li>\n<\/ol>\n<p>Questo formalismo \u00e8 comunemente noto come<a href=\"http:\/\/en.wikipedia.org\/wiki\/CAL_Actor_Language\"> <b>RVC-CAL<\/b><\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>Reconfigurable Video Coding nel progetto RPCT<\/b><\/p>\n<p>La modularit\u00e0 ed il parallelismo del paradigma dataflow si sono rivelati utili anche nel contesto delle architetture riconfigurabili a grana medio\/grossa. Infatti, l\u2019idea di fondo alla base dello stesso progetto RPCT, \u00e8 quella di sfruttare la modularit\u00e0 di una rete dataflow per mappare univocamente ogni attore in un diverso blocco funzionale hardware (a livello di RTL identificabile come un \u201cmodule\u201d Verilog o un \u201ccomponent\u201d VHDL). Il passaggio verso un\u2019architettura riconfigurabile a grana medio\/grossa \u00e8 immediato: volendo combinare due reti, che presentano tra loro delle similarit\u00e0 (ossia degli attori in comune), si pu\u00f2 pensare di mappare entrambi grafi nella stessa rete condividendo gli attori comuni attraverso l\u2019introduzione di moduli di switching attorno ad essi.<\/p>\n<p><a href=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2039\" src=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea-1024x492.png\" alt=\"basic_idea\" width=\"564\" height=\"271\" srcset=\"https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea-1024x492.png 1024w, https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea-300x144.png 300w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><\/a><\/p>\n<p>I moduli di switching (<strong><a href=\"http:\/\/sites.unica.it\/rpct\/switching-units\/\">SBoxes<\/a><\/strong>) hanno l\u2019unico compito di instradare correttamente i dati, senza svolgere su di essi alcuna elaborazione. Questi moduli, a seconda della funzionalit\u00e0 richiesta, sono in grado di trasmettere\/prelevare i dati verso\/dal attore coinvolto nella computazione corrente. In aggiunta, la modularit\u00e0 ed il parallelismo propri del formalismo dataflow favoriscono un\u2019implementazione rapida ed efficiente degli applicativi coinvolti, rendendo possibile l\u2019automatizzazione dell\u2019implementazione del sistema fisico.<\/p>\n<hr \/>\n<p><a title=\"Tool overview\" href=\"http:\/\/sites.unica.it\/rpct\/risultati-ricerca\/\">Torna a Tool Overview<\/a><\/p>\n<p><\/p><h4>en<\/h4><p><\/p>\n<p>Nowadays\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Embedded_system%20\"><b>embedded systems<\/b><\/a> 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.<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>Design and management of heterogeneous reconfigurable architectures is not trivial and requires a substantial developers\u2019 effort, especially if you want to achieve the efficient execution of different functionalities on the same substrate.<\/p>\n<p>&nbsp;<\/p>\n<p><b>The Dataflow Programming Approach<\/b><\/p>\n<p>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.<br \/>\nA 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).<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p><a href=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1873 size-full\" src=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow.jpg\" alt=\"dataflow\" width=\"570\" height=\"187\" srcset=\"https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow.jpg 570w, https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/dataflow-300x98.jpg 300w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>Dataflow Support for Audio\/Video Coding <\/b><\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>The dataflow formalism, with its modularity and its native capability to express parallelism, has proved to be extremely suitable the old kind of specifications.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Reconfigurable Video Coding<\/b><\/p>\n<p>The <a href=\"http:\/\/it.wikipedia.org\/wiki\/MPEG\"><b>MPEG group<\/b><\/a> that sets the standard audio and video worldwide, formalized within the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Reconfigurable_video_coding\"><b>Reconfigurable Video Coding<\/b><\/a>:<\/p>\n<ol>\n<li>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.<\/li>\n<li>the Video Tool Library (VTL) a library of actors common to different codecs, to facilitate the physical implementation of the codecs.<\/li>\n<li>a series normative and non-normative tools to support designers.<\/li>\n<\/ol>\n<p>This formalism is commonly known as <a href=\"http:\/\/en.wikipedia.org\/wiki\/CAL_Actor_Language\"> <b>RVC-CAL<\/b><\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Reconfigurable Video Coding within the RPCT project<\/b><\/p>\n<p>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 &#8220;module&#8221; or a Verilog &#8220;component&#8221; 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.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2039\" src=\"http:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea-1024x492.png\" alt=\"basic_idea\" width=\"564\" height=\"271\" srcset=\"https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea-1024x492.png 1024w, https:\/\/sites.unica.it\/rpct\/files\/2014\/05\/basic_idea-300x144.png 300w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><\/a><\/p>\n<p>The switching elements (<strong><a href=\"http:\/\/sites.unica.it\/rpct\/switching-units\/\">SBoxes<\/a><\/strong>) 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.<\/p>\n<hr \/>\n<p><a title=\"Tool overview\" href=\"http:\/\/sites.unica.it\/rpct\/risultati-ricerca\/\">Return to Tool Overview<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>it Al giorno d\u2019oggi i sistemi embedded per applicazioni multimediali includono funzionalit\u00e0 complesse, da eseguire tipicamente anche su dispositivi portatili. Inoltre, questi sistemi richiedono flessibilit\u00e0 e adattivit\u00e0 a tempo di esecuzione, che rendono ancora pi\u00f9 complessa la loro progettazione. La rapidit\u00e0 con cui le applicazioni evolvono rappresenta un ulteriore vincolo alla progettazione. A livello hardware &hellip; <a href=\"https:\/\/sites.unica.it\/rpct\/risultati-ricerca\/technology-in-use\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">Technology in Use<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2556,"featured_media":0,"parent":4,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1734","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/pages\/1734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/users\/2556"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/comments?post=1734"}],"version-history":[{"count":21,"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/pages\/1734\/revisions"}],"predecessor-version":[{"id":2268,"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/pages\/1734\/revisions\/2268"}],"up":[{"embeddable":true,"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/pages\/4"}],"wp:attachment":[{"href":"https:\/\/sites.unica.it\/rpct\/wp-json\/wp\/v2\/media?parent=1734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}