Field Programmable Gate Arrays are one of the most interesting and powerful pieces of hardware available today to the computer science community: they allow an incredibly fine-grained tuning of the implementation bringing development process from high-level description down to the architectural hardware specification. Such a definite level of description sets up the way for deeper analysis on applications to squeeze performance out of every line and smooth every bit achieving the most out of the silicon. To easily exploit this highest detailed implementation capability an automated tool is mandatory for developers: while standard compilers have been optimized and refined to abstract software to CPU level language, new High-Level Synthesis tools have been developed to bring on this abstraction a step further to the hardware description language and to extend and increase available optimizations to achieve the best possible result at this new layer. One of the optimizations already available from a standard compiler is that of value range analysis, meaning a program is analyzed to compute numerical bounds on each one of its variable: this information can be exploited to perform dead code elimination, branch prediction and avoid the insertion of arithmetic operation checks which would slow the execution of the compiled software. The purpose of this thesis work is to bring all of the available capabilities of value range analysis inside a High-Level Synthesis tool and to extend them taking advantage of the more powerful description language available at this new implementation level. The fact that we are actually building hardware arithmetic operators from scratch enables this analysis to be applied in a finer-grained flavor and to better analyze floating-point operations too, allowing the use of shrunk numerical encoding, thus tinier, faster and less power demanding architectures. Furthermore, this work will allow the application of optimizations directly on standard IEEE 754 floating-point values, without the need for a fixed-point representation.

Le schede Field Programmable Gate Array (FPGA) si possono considerare l'hardware più interessante e versatile nel campo dell'informatica moderna: garantiscono agli sviluppatori la possibilità di descrivere non solo le specifiche di alto livello di un'applicazione ma anche di progettare l'architettura nei minimi dettagli. Grazie a queste superiori capacità descrittive è possibile effettuare nuovi tipi di analisi sulle applicazioni in modo da ottimizzare al meglio ogni bit ed ottenere le massime prestazioni possibili. Per sfruttare al meglio il livello di dettaglio implementativo offerto dalle schede FPGA è sicuramente necesssario automatizzare la progettazione. Come i compilatori odierni sono stati raffinati per tradurre le applicazioni in linguaggio macchina, così i moderni software di sintesi ad alto livello contribuiscono a raffinare questo processo arrivando a produrre una descrizione architetturale delle applicazioni, migliorando di pari passo anche le ottimizzazioni e le analisi effettuate durante tale processo per sfruttare al meglio le maggiori possibilità offerta dall'hardware. Tra le ottimizzazioni già disponibili nei compilatori odierni è di particolare interesse l'analisi dei valori: tramite questa analisi è possibile ottenere informazioni sui valori assunti dalle variabili durante l'esecuzione del programma e, grazie a questo livello di consapevolezza, eliminare numerosi controlli normalmente effettuati su tali variabili durante le operazioni aritmetiche, effettuare branch predictions più accurate e determinare in modo più preciso le parti di codice non raggiungibili, ottenendo così un'applicazione più efficiente e performante. L'obiettivo di questa tesi è di trasportare all'interno di un programma di sintesi ad alto livello questo tipo di analisi, estendendone le capacità, per poter sfruttare appieno il miglior livello descrittivo a disposizione. Nel nuovo ambiente di sviluppo l'architettura delle operazioni aritmetiche viene concepita durante il processo di compilazione, sarà dunque possibile sfruttare questo tipo di analisi per effettuare ottimizzazioni più approfondite. Sarà inoltre possibile ottimizzare gli operatori a virgola mobile, non accessibili ai normali compilatori, adattandone la precisione e le specifiche per ottenere unità aritmetiche su misura a seconda delle necessità. Infine un metodo di modifica diretto della specifica floating-point IEEE 754 sarà sviluppato per semplificare l'adattamento della rappresentazione alle necessità delle applicazioni, senza l'obbligo di ripiegare su soluzioni a virgola fissa.

Trimming the bit : optimizing high-level synthesis of floating-point based descriptions by extending value range analysis

FIORITO, MICHELE
2018/2019

Abstract

Field Programmable Gate Arrays are one of the most interesting and powerful pieces of hardware available today to the computer science community: they allow an incredibly fine-grained tuning of the implementation bringing development process from high-level description down to the architectural hardware specification. Such a definite level of description sets up the way for deeper analysis on applications to squeeze performance out of every line and smooth every bit achieving the most out of the silicon. To easily exploit this highest detailed implementation capability an automated tool is mandatory for developers: while standard compilers have been optimized and refined to abstract software to CPU level language, new High-Level Synthesis tools have been developed to bring on this abstraction a step further to the hardware description language and to extend and increase available optimizations to achieve the best possible result at this new layer. One of the optimizations already available from a standard compiler is that of value range analysis, meaning a program is analyzed to compute numerical bounds on each one of its variable: this information can be exploited to perform dead code elimination, branch prediction and avoid the insertion of arithmetic operation checks which would slow the execution of the compiled software. The purpose of this thesis work is to bring all of the available capabilities of value range analysis inside a High-Level Synthesis tool and to extend them taking advantage of the more powerful description language available at this new implementation level. The fact that we are actually building hardware arithmetic operators from scratch enables this analysis to be applied in a finer-grained flavor and to better analyze floating-point operations too, allowing the use of shrunk numerical encoding, thus tinier, faster and less power demanding architectures. Furthermore, this work will allow the application of optimizations directly on standard IEEE 754 floating-point values, without the need for a fixed-point representation.
ING - Scuola di Ingegneria Industriale e dell'Informazione
6-giu-2020
2018/2019
Le schede Field Programmable Gate Array (FPGA) si possono considerare l'hardware più interessante e versatile nel campo dell'informatica moderna: garantiscono agli sviluppatori la possibilità di descrivere non solo le specifiche di alto livello di un'applicazione ma anche di progettare l'architettura nei minimi dettagli. Grazie a queste superiori capacità descrittive è possibile effettuare nuovi tipi di analisi sulle applicazioni in modo da ottimizzare al meglio ogni bit ed ottenere le massime prestazioni possibili. Per sfruttare al meglio il livello di dettaglio implementativo offerto dalle schede FPGA è sicuramente necesssario automatizzare la progettazione. Come i compilatori odierni sono stati raffinati per tradurre le applicazioni in linguaggio macchina, così i moderni software di sintesi ad alto livello contribuiscono a raffinare questo processo arrivando a produrre una descrizione architetturale delle applicazioni, migliorando di pari passo anche le ottimizzazioni e le analisi effettuate durante tale processo per sfruttare al meglio le maggiori possibilità offerta dall'hardware. Tra le ottimizzazioni già disponibili nei compilatori odierni è di particolare interesse l'analisi dei valori: tramite questa analisi è possibile ottenere informazioni sui valori assunti dalle variabili durante l'esecuzione del programma e, grazie a questo livello di consapevolezza, eliminare numerosi controlli normalmente effettuati su tali variabili durante le operazioni aritmetiche, effettuare branch predictions più accurate e determinare in modo più preciso le parti di codice non raggiungibili, ottenendo così un'applicazione più efficiente e performante. L'obiettivo di questa tesi è di trasportare all'interno di un programma di sintesi ad alto livello questo tipo di analisi, estendendone le capacità, per poter sfruttare appieno il miglior livello descrittivo a disposizione. Nel nuovo ambiente di sviluppo l'architettura delle operazioni aritmetiche viene concepita durante il processo di compilazione, sarà dunque possibile sfruttare questo tipo di analisi per effettuare ottimizzazioni più approfondite. Sarà inoltre possibile ottimizzare gli operatori a virgola mobile, non accessibili ai normali compilatori, adattandone la precisione e le specifiche per ottenere unità aritmetiche su misura a seconda delle necessità. Infine un metodo di modifica diretto della specifica floating-point IEEE 754 sarà sviluppato per semplificare l'adattamento della rappresentazione alle necessità delle applicazioni, senza l'obbligo di ripiegare su soluzioni a virgola fissa.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
thesis.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 727.95 kB
Formato Adobe PDF
727.95 kB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/154197