home | chi siamo | dove siamo | co
tecnologia Rapporto Tecnico Finale
| Conseguimento degli obiettivi di Ricerca e Sviluppo |
Parte 4
Ottimizzazioni algoritmiche e implementative

Accanto agli obiettivi più radicali, l’attività di ricerca e sviluppo della Eco Controllo SpA, è stata anche centrata sul generale miglioramento dei sistemi proprietari al fine di garantirne la qualità esecutiva e al fine di dimostrarne la futura funzionalità a scopi industriali e commerciali.

L’obbiettivo di fondo perseguito, è stato ed è quello di ottenere implementazioni capaci di ridurre progressivamente il numero di cicli di clock necessari all’esecuzione dei programmi proprietari e, di conseguenza, di minimizzare il costo energetico complessivo richiesto dalle previste operazioni di compressione/decompressione di immagini statiche e in movimento. I benefici di tali ottimizzazioni sono principalmente indirizzati all’effetto d’una minore richiesta di risorse temporali e spaziali. Ciò consente una maggiore efficienza energetica dei dispositivi HW che saranno adoperati nella fase industriale e di commercializzazione, e nell’applicazione e nell’esecuzione dei nuovi programmi di compressione d’immagini digitali.
Il processo di ottimizzazione, ha alfine comportato la messa in atto di alcune fasi di sviluppo che sono state parallelamente affidate a piccoli, distinti gruppi di lavoro.

Analisi dinamica dei codici
Il primo passo del processo è stato un’analisi dinamica dei codici, per poter individuare le sezioni che impegnano la maggior parte del tempo di esecuzione e concentrare l’azione di revisione.
Il processo ha richiesto particolari tipologie di compilazione del codice sorgente e l’utilizzo di sistemi software testuali e grafici di profiling. Questa fase ha implicato anche delle revisioni algoritmiche al fine di poter comprendere se le sezioni più onerose potevano essere sviluppate in modi alternativi, più leggeri dal punto di vista prestazionale.
Per quanto riguarda, poi, il programma di compressione per immagini fisse, si sono individuate le parti del codice maggiormente onerose per le performance, ottenendo quindi un miglioramento delle prestazioni. Il processo di profiling ha mostrato che la maggior parte del tempo di esecuzione era impiegato per operazioni relative alla copia di blocchi di memoria, all’esecuzione di operazioni binarie (applicazione di maschere e shift) e alla allocazione della memoria.

Analisi statica dei codici
Una volta ottenute le prime implementazioni correttamente funzionanti dell’algoritmo proprietario, il passo successivo è stato quello di effettuare delle sessioni accurate di revisione del codice, affidate ad un code reviewer.
Questo ha consentito di eliminare da subito tutte le porzioni di codice che apparivano inutili e ridondanti, ottenendo così delle implementazioni più veloci in esecuzione, a prescindere dall’architettura di supporto. Tale analisi ha permesso di eliminare le sezioni residue che potevano causare un comportamento non deterministico dell’applicazione, e ha favorito la soluzione di talune ambiguità subdole, che si rendevano palesi solo stressando i programmi, in casi assolutamente inusuali e, per questo, di difficile identificazione e interpretazione.

Ottimizzazione dei codici
Si è proceduto con le normali operazioni di ottimizzazione, al fine di poter ottenere le migliori prestazioni degli eseguibili e poter minimizzare l’ingombro dei programmi proprietari (laddove il Codec Video della Eco Controllo, mostra ad esempio un ingombro su disco di 700 KB. 

Ottimizzazione in funzione delle implementazioni HW

Ultimata una prima fase esplorativa, per la ricerca di architetture hardware flessibili e a basso consumo energetico, che fossero idonee all’implementazione di algoritmi di compressione attraverso istruzioni dedicate, il percorso di ricerca e sviluppo è stato pur orientato all’ottimizzazione delle architetture algoritmiche proprietarie e dei codici relativi alle loro implementazioni, così da poter conseguire l’integrazione con sistemi hardware generici, tale da permettere l’esecuzione di tutte le funzioni proprie della compressione. L’ottimizzazione dei codici ha comportato l’utilizzo di linguaggi a più basso livello (assembly) che potessero favorire l’integrazione su una vasta gamma di sistemi eterogenei, per la programmazione di microcontroller e DSP, eventualmente anche sotto forma di core implementati tramite ASIC, CPLD e FPGA al fine di massimizzare le performance.

Test di comparazione
Di pari passo all’applicazione di tecniche di ottimizzazione dei codici si è proceduto alla individuazione delle migliori tecniche per effettuare test comparativi tra i risultati ottenuti dagli algoritmi proprietari di compressione e i sistemi di compressione attualmente disponibili sul mercato consumer, prosumer e business-to-business. Si tiene a precisare che il suddetto task è comunque in continuo aggiornamento e sviluppo (ovviamente, anche oltre gli orizzonti tem-porali del programma per il PIA Innovazione), data l’evoluzione dei sistemi di compressione e delle metriche di valutazione ad essi collegate. Come già indicato nelle prime parti della presente relazione tecnica (in particolare, Parte 2), s’è posta particolare attenzione alla scelta delle metriche di comparazione da adoperare, privilegiando quelle riconosciute ed adottate dalle principali agenzie mondiali che si occupano di test comparativi sugli algoritmi di compressione.

Implementazione in hardware dei programmi proprietari
La Eco Controllo SpA, insieme allo sviluppo delle tecniche migliorative delle prestazioni degli algoritmi, ha proceduto all’ottimizzazione del codice per un’implementazione hardware basata su componentistica general purpose. A tal riguardo, si è provveduto alla riscrittura di parti di codice (funzioni) utilizzando set di istruzioni che vanno ad accelerare il processo di compressione su hardware con architettura X86.
In più si è proceduto alla riscrittura di funzioni utilizzando anche set di istruzioni MMX, SSE ed SSE2.

Allo scopo di poter verificare che la suddetta implementazione sia trasferibile su hardware (anche compatto) con potenza computazionale contenuta, è stata realizzata l’implementazione sul seguente dispositivo:

Processore — Via Eden-N Nano, 800 MHz (X86)
Memoria — 128 or 256 MB DDR RAM
Display:
Via UniChrome 2D/3D Graphics
8 to 64 MB video RAM shared con system memory
CRT and LCD outputs, 1280 x 1024 max. resolution with 32-bit color

Disco — 1 EIDE UltraDMA 133 on 44-pin header
Expansione — 1 X-PCI connector
Porte I/O:
10/100 Base-T Ethernet
2 USB 2.0
PS/2 tastiera e mouse
LPT and RS-232

Power — +5 VDC, 4.5 A max.

home | chi siamo | dove siamo | co
 • creiamo antiche tecnologie •
 • creiamo antiche tecnologie • creiamo antiche tecnologie •
Eco Controllo SpA