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 2018-19

Indice

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

argomenti dell'esercitazione

in questa esercitazione si affronta un caso di studio di accelerazione hardware

decisioni di progetto per un caso di studio di accelerazione hardware

nella precedente esercitazione è stata presentata una realizzazione software del calcolo del delay di una traiettoria di Collatz di dato inizio

realizzazioni hardware della stessa funzione sono state oggetto di precedenti esperienze di laboratorio

le misure di prestazione condotte sulla realizzazione software mostrano che essa assorbe quasi tutto il tempo di esecuzione del programma

una prima alternativa da valutare: integrare la funzione hardware come istruzione custom o come coprocessore mappato in memoria?

altre decisioni di progetto dipendono da questa prima decisione, come segue

interfaccia Avalon e modello di programmazione per il caso di studio

la descrizione VHDL del circuito di calcolo della funzione va incorporata in un componente dotato di interfacce Avalon per i segnali di Clock, Reset e di Avalon MM Slave, sì da ricevere il dato iniziale da un'operazione di scrittura e fornire il risultato in risposta a un'operazione di lettura

indirizzamento del coprocessore: poiché le operazioni di scrittura (del dato iniziale) e lettura (del risultato) avvengono in tempi diversi e hanno la stessa dimensione del dato, un solo indirizzo è sufficiente

driver software : si possono definire due macro e una funzione per l'interfaccia software di accesso al bus: DC_RESET(d), DC_START(d,x0), unsigned int delay(d), dove d è l'indirizzo assegnato al coprocessore

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, reperibile anche nella cartella Nios II 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 10 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 10:

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 10, 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: