DMI – Corso di laurea magistrale in Informatica
Copyleft
2018 Giuseppe Scollo
in questa esercitazione si trattano:
fasi principali di sviluppo:
produzione della descrizione VHDL del coprocessore multicore in due passi:
i rispettivi sorgenti delay_collatz.vhd e multicore_delay_collatz.vhd sono disponibili nella cartella vhdl dell'archivio allegato, nonché nella cartella VHDL/code/e12 dell'area riservata di laboratorio
il coprocessore è dotato dell'input core_select a n bit che codifica il core a cui smistare l'operazione di I/O, mentre gli output done dei core individuali sono esposti quale stato globale in una porta parallela di output a 2n bit
le cartelle vuote delay_collatz, mc_delay_collatz e mc_interface sono intese ospitare progetti di compilazione e simulazione dei suddetti sorgenti e di quello descritto appresso; cartelle omonime in tests forniscono rispettivi file di input per le simulazioni
un'istanza del componente coprocessore multicore è incorporata nell'interfaccia Avalon memory-mapped descritta dal sorgente multicore_delay_collatz_avalon_interface.vhd e accede ai seguenti segnali del bus Avalon:
l'acquisizione dell'input a 64 bit per il coprocessore avviene dunque in due cicli di bus, perciò l'interfaccia deve memorizzare il dato ricevuto nel primo ciclo per poi concatenarlo a quello ricevuto nel secondo ciclo; ne consegue la classica struttura a due processi della descrizione:
d'altra parte, l'output a 32 bit del dato a 16 bit prodotto da un core del coprocessore ne richiede l'estensione con zeri, realizzata dall'interfaccia
la consultazione del sorgente multicore_delay_collatz_interface.vhd mostra le relazioni tra i segnali di I/O del componente di calcolo e i segnali all'interfaccia Avalon
la costruzione con Qsys del sistema Nios II con il componente coprocessore, simile a quella dell'esercitazione precedente, assegna al coprocessore un indirizzo base e, a partire da questo, un'area di memoria per i suoi registri di I/O
la seguente mappa dei registri indica anche i segnali del componente coprocessore individuati dai corrispondenti offset di registro, indicizzati dal valore di core_select in parentesi, dove k = 2n è il numero di core paralleli, e con la legenda :
ro | segnale | ao | ro | segnale | ao | |
0 | x0(0)[31..0] | 0 | 2k | delay(0) | 8k | |
1 | x0(0)[63..32] | 4 | ... | |||
... | 3k-1 | delay(k-1) | 12k-4 | |||
2(k-1) | x0(k-1)[31..0] | 8(k-1) | 3k | status | 12k | |
2k-1 | x0(k-1)[63..32] | 8k-4 |
le successive fasi di sviluppo sono simili a quelle dell'esercitazione precedente:
la costruzione Qsys del sistema Nios II è più celere se effettuata come modifica del sistema Qsys dell'esercitazione precedente, dal quale si rimuove il componente delay_collatz_avalon_interface e gli si aggiunge un'istanza del nuovo componente multicore_delay_collatz_avalon_interface
gli script TCL per la generazione del driver software nel BSP del progetto, forniti nella cartella codesign/ip/multicore_delay_collatz_avalon_interface dell'archivio allegato, sono simili a quelli dell'esercitazione precedente
i sorgenti C del driver software, forniti nella cartella HAL allo stesso percorso, differiscono da quelli dell'esercitazione precedente nei seguenti aspetti:
i programmi di test e misura delle prestazioni forniti nelle cartelle codesign/amp* dell'archivio allegato calcolano il delay per 2M punti d'inizio a partire da X_BASE = 1128784494896128
in entrambe le versioni del test, il programma assegna al core j il calcolo del delay per i punti di inizio nella classe di congruenza j mod MDC_N_CORES, dunque per 2M/32 = 64K traiettorie (in media nella seconda versione); la differenza fra le versioni in codesign/amp_s* e quelle in codesign/amp_t* è la seguente:
i parametri di creazione dei progetti nel Monitor Program sono indicati nel file allegato MonitorNotes.txt
la compilazione, caricamento sulla FPGA ed esecuzione del programma sequential_multicore_delay_collatz_timing, nei due progetti codesign/amp_s e codesign/amp_s_o3 produce i Performance Counter Report in figura
seguono infine i Performance Counter Report dell'esecuzione del programma statustest_multicore_delay_collatz_timing, nei due progetti codesign/amp_t e codesign/amp_t_o3
materiali utili per l'esperienza di laboratorio proposta: