DMI – Corso di laurea magistrale in Informatica
Copyleft
2020 Giuseppe Scollo
in questa esercitazione si trattano:
fasi principali di sviluppo:
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
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
si procede quindi all'assegnazione dei file VHDL che descrivono il componente e alla loro analisi, come mostrato in figura
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
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:
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
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 CodesignMonitorNotes.txt
differenze principali tra il sorgente dell'esercitazione E10 e l'attuale versione sequenziale:
la versione pipelined del programma presenta differenze molto più marcate rispetto al programma dell'esercitazione E10:
il meccanismo di sincronizzazione è molto semplice, grazie a proprietà del componente custom e del segnale waitrequest del protocollo Avalon MM:
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
uno speed-up di un ordine di grandezza, rispetto al calcolo software nell'esercitazione E10, risulta dai dati di prestazione in quel caso, con gli stessi livelli di ottimizzazione
è 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
materiali utili per l'esperienza di laboratorio proposta: