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