In this thesis we want to investigate the compiling of the well-established language
Constraint Handling Rule (CHR) to a low level hardware description language
(HDL). The benefit introduced by a CHR-based hardware synthesis is twofold: it
increases the abstraction level of the common synthesis work-flow and it can give
significant speed up to the execution of a CHR program in terms of computational
time.
We want to propose a method that sets CHR as a starting point for a hardware
description. The developed hardware will be able to turn all the intrinsic concurrency
of the language into parallelism. The rules application is mainly achieved by a
custom executor that handles constraints according to the best degree of parallelism
the implemented CHR specification can offer.
Afterwards we want to integrate the generated hardware code, deployed in a
Field Programmable Gate Array (FPGA), within the traditional software execution
model of CHR. The result will be a prototype system consisting of a CHR execution
engine composed of a general purpose processor coupled with a specialized hardware
accelerator. The former will execute a CHR specification while the latter will
unburden the processor by executing in parallel the most computational intensive
rules.
Finally the performance of the proposed system architecture will be validated by
time efficiency measures.
In questa tesi si vuole investigare la compilazione dell'ormai consolidato linguaggio Constraint Handling Rules (CHR) in un hardware description language (HDL) a basso livello. Il vantaggio introdotto da una sintesi di hardware basata su CHR è duplice: permette di aumentare il livello di astrazione del tradizionale processo di sintesi di hardware e può dare accelerazioni significative all'esecuzione di un programma CHR in termini di tempo di computazione. Viene proposto un metodo che parte da CHR per effettuare una descrizione dell'hardware. L'hardware sviluppato sarà in grado di convertire tutta la concorrenza intrinseca al linguaggio in parallelismo. L'applicazione delle regole viene realizzata tramite uno speciale esecutore che tratta i vincoli in modo da effettuare il più alto grado di parallelismo che il programma CHR implementato possa offrire. Successivamente si vuole integrare il codice hardware così sviluppato, e caricato in una Field Programmable Gate Array (FPGA), con il tipico modello di esecuzione di CHR. Ne risulterà un prototipo di un motore di esecuzione basato su CHR e composto da un generico processore accoppiato con uno specifico acceleratore hardware. Il primo eseguirà un programma CHR, mentre il secondo libererà il processore dall'esecuzione delle regole più computazionalmente pesanti tramite la loro parallelizzazione. In conclusione le prestazioni delle architetture proposte saranno avvalorate da misure di efficienza temporale.