Tesi Robotica Un coprocessore per Stereo-Matching: Profiling ... | Page 68
i
i
“MF_Tesi” — 2011/9/12 — 11:39 — page 68 — #68
i
5.2. CARATTERISTICHE COMPORTAMENTALI
5.2
i
68
Caratteristiche comportamentali
Il modello comportamentale di BSV è piuttosto popolare nell’ambiente dei sistemi paralleli e concorrenti e si basa sul concetto di regole atomiche ed interfacce. Rispetto al lavoro necessario per introdurre il parallelismo in un linguaggio
sequenziale come il C++ il modello delle regole è intrinsecamente parallelo e
questo fa si che questo modello è particolarmente indicato in quei sistemi in cui
è richiesto un elevato livello di parallelismo. Un altro concetto fondamentale
è quello dell’invarianza di una regola. L’invarianza è una condizione che deve
essere verificata ogni volta che la regola viene eseguita. Questo meccanismo consente di ragionare in termini delle singole regole, senza doversi preoccupare di
tutte le possibili sovrapposizioni, o esecuzioni parallele ed assicura la costruzione
di sistemi complessi che assumono il corretto comportamento richiesto. Inoltre
grazie a BSV la maggior parte della logica di controllo (multiplexer, segnali abilitanti, ecc) non deve essere gestita dal programmatore direttamente, ma viene
intrinsecamente definita tramite la definizione di condizioni di esecuzione per
le regole. Questo viene poi tradotto, in modo completamente trasparente, dal
compilatore di Bluespec nella logica di controllo adatta.
5.3
Caratteristiche strutturali
Nei moderni linguaggi di programmazione sono stati sviluppati degli utilissimi
meccanismi di astrazione per la gestione di sistemi grandi e complessi. Prima di
BSV questi meccanismi non erano mai stati presi in esame per un linguaggio di
descrizione dell’hardware, probabilmente perché li si riteneva inutili per un’applicazione del genere. Tuttavia BSV riprende alcune di queste astrazioni tra cui
la suddivisione della gerarchia in moduli, la separazione tra moduli e interfacce,
i cicli, i tipi di dati definiti dall’utente, la parametrizzazione e l’elaborazione
statica.
5.4
5.4.1
Componenti di BSV
Package
I package sono dei contenitori di codice e possono essere considerati come dei
namespace, tutto il codice scritto in BSV è contenuto all’interno di un pack-
i
i
i
i