matite e gomma

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0

Validazione XHTML 1.0 Validazione CSS 3
Logo del Dipartimento di Matematica e Informatica, Insegnamento di Sistemi dedicati, link al Forum

Realizzazione su FPGA di un coprocessore mappato in memoria

Esercitazione 11 di Sistemi dedicati

Docente: Giuseppe Scollo

Università di Catania
Dipartimento di Matematica e Informatica
Corso di Laurea Magistrale in Informatica, AA 2017-18

Indice

  1. Realizzazione su FPGA di un coprocessore mappato in memoria
  2. argomenti dell'esercitazione
  3. flusso di lavoro del progetto
  4. interfaccia hardware del coprocessore
  5. coprocessore quale componente Qsys (1)
  6. coprocessore quale componente Qsys (2)
  7. coprocessore quale componente Qsys (3)
  8. sistema Nios II con coprocessore e Performance Counter
  9. mapping su FPGA e compilazione
  10. driver software
  11. programmi di test e misura delle prestazioni (1)
  12. programmi di test e misura delle prestazioni (2)
  13. test con accelerazione bloccante
  14. test con accelerazione non bloccante
  15. riferimenti

argomenti dell'esercitazione

in questa esercitazione si trattano:

flusso di lavoro del progetto

fasi principali di sviluppo:

interfaccia hardware del coprocessore

due sorgenti VHDL realizzano il coprocessore memory-mapped:

entrambi i sorgenti sono disponibili nella cartella vhdl dell'archivio allegato, nonché nella cartella VHDL/code/e11 dell'area riservata di laboratorio

la consultazione del sorgente delay_collatz_interface.vhd mostra le relazioni tra i segnali di I/O del componente di calcolo e i segnali all'interfaccia Avalon

coprocessore quale componente Qsys (1)

la cartella codesign nell'archivio allegato è predisposta per ospitare lo sviluppo del progetto

creato il progetto delay_collatz_codesign, con omonima entità top-level, si procede alla creazione del componente custom delay_collatz_interface

la definizione del nuovo tipo di componente è mostrata in figura

definizione del tipo di componente delay_collatz_avalon_interface

coprocessore quale componente Qsys (2)

si procede quindi all'assegnazione dei file VHDL che descrivono il componente e alla loro analisi, come mostrato in figura

definizione e analisi dei file per la sintesi del componente

coprocessore quale componente Qsys (3)

infine, si conclude la definizione del nuovo tipo di componente con la definizione delle sue interfacce Avalon e la collocazione dei segnali nelle interfacce appropriate, come illustrato in figura

definizione di segnali e interfacce Avalon del componente

sistema Nios II con coprocessore e Performance Counter

struttura del sistema hardware costruito con Qsys

mappa degli indirizzi assegnati da Qsys ai componenti del sistema

mapping su FPGA e compilazione

per la costruzione del sistema Nios II illustrato nelle figure precedenti può essere utile la consultazione del tutorial di introduzione a Qsys

i passi finali per il mapping del sistema sulla FPGA sono i seguenti:

in Qsys:

uscire da Qsys, quindi in Quartus:

driver software

la cartella script nell'archivio allegato contiene due script TCL per la generazione del driver software nel BSP del progetto

questi script vanno copiati nella cartella codesign/ip/delay_collatz_avalon_interface

gli script TCL sono stati scritti in analogia allo script TCL del driver software del Performance Counter, reperibile nella distribuzione del software Quartus Prime Lite 16.1 al percorso
$SOPC_KIT_NIOS2/../ip/altera/sopc_builder_ip/altera_avalon_performance_counter

la motivazione per questo modo, forse poco ortodosso, di produzione del driver software sta nel duplice fatto che

a cui si aggiunge un discreto grado di analogia operativa dei due componenti

programmi di test e misura delle prestazioni (1)

la cartella src nell'archivio allegato contiene i programmi in questione, da copiare nelle cartelle di creazione dei progetti di test e misura delle prestazioni mediante il Monitor Program, come segue:

i parametri di creazione dei progetti sono indicati nel file allegato MonitorNotes.txt

differenze principali tra il sorgente dell'esercitazione 09 e l'attuale versione sequenziale:

programmi di test e misura delle prestazioni (2)

la versione pipelined del programma presenta differenze molto più marcate rispetto al programma dell'esercitazione 09:

il meccanismo di sincronizzazione è molto semplice, grazie a proprietà del componente custom e del segnale waitrequest del protocollo Avalon MM:

test con accelerazione bloccante

la compilazione, caricamento sulla FPGA ed esecuzione del programma delay_collatz_sequential_timing.c, nei due progetti codesign/amp_s e codesign/amp_s_o3 produce i Performance Counter Report in figura

Performance Report della versione sequenziale, ottimizzazione O1

Performance Report della versione sequenziale, ottimizzazione O3

uno speed-up di un ordine di grandezza, rispetto al calcolo software nell'esercitazione 09, risulta dai dati di prestazione in quel caso, con gli stessi livelli di ottimizzazione

Performance Report della versione software, ottimizzazione O1

Performance Report della versione software, ottimizzazione O3

test con accelerazione non bloccante

è lecito attendersi un ulteriore guadagno di prestazione dall'esecuzione non bloccante del calcolo nel componente hardware custom

dai Performance Counter Report che seguono, a confronto con i dati analoghi della realizzazione con tutto il calcolo in software, risulta uno speed-up 21x con ottimizzazione di default O1 e 16x con ottimizzazione O3; i corrispondenti valori dello speed-up con accelerazione bloccante sono 15x con O1 e 13x con O3

Performance Report della versione pipelined, ottimizzazione O1

Performance Report della versione pipelined, ottimizzazione O3

riferimenti

materiali utili per l'esperienza di laboratorio proposta: