DMI – Corso di laurea magistrale in Informatica
Copyleft
2020 Giuseppe Scollo
di che si tratta:
possibili evoluzioni del codesign realizzato nell'esercitazione precedente si possono prefigurare lungo due direzioni ortogonali di sviluppo:
un esempio di combinazione ortogonale delle due direzioni è dato dai seguenti obiettivi per un primo progetto, affrontato nella prossima esercitazione:
estensioni funzionali più significative sono individuabili dalla considerazione di funzioni, definite sulle traiettorie di Collatz, diverse dal delay ma per il calcolo delle quali è comunque necessaria la generazione delle traiettorie
una prima alternativa di progetto da considerare per la replica delle unità hardware di calcolo del delay è:
la seconda opzione è preferibile in vista di possibili ulteriori estensioni che richiedessero accesso delle diverse istanze a dati condivisi, e.g. definiti come parametri di configurazione
altre decisioni di progetto riguardano il numero delle istanze parallele di calcolo, dette core nel seguito, e la dimensione dei dati di I/O del coprocessore
l'estensione a 64 bit dell'input del singolo core è ottenuta facilmente con ovvia modifica del sorgente Gezel dall'esercitazione precedente e con la stessa correzione all'output VHDL del traduttore fdlvhd
occorre poi dotare il coprocessore multicore di circuiti per il corretto smistamento dei dati di I/O fra l'interfaccia e un core selezionato dal processore:
la descrizione in VHDL della multiplazione è semplice se si collocano gli output dei core in un vettore da 2n×16 bit, basta infatti usare un operatore di selezione sul vettore
la descrizione in VHDL della demultiplazione, più complessa, è fattibile usando un operatore di scorrimento logico, come esemplificato per un decodificatore generico in Zwoliński, 4.2.3
lo scambio di segnali alle porte di I/O del coprocessore multicore va adattato ai segnali disponibili all'interfaccia Avalon-MM, tenendo conto di alcuni vincoli su questi, quali:
poiché il processore Nios II può trasferire in una singola transazione non più di 32 bit, si conviene che questa sia la larghezza di parola del coprocessore all'interfaccia Avalon, ovvero la larghezza dei segnali writedata e readdata
lo spazio degli indirizzi di registro del coprocessore è dunque l'intervallo [0, 3×2n], tenendo conto di un indirizzo per il registro di stato, dunque address è largo n+2 bit
il già indicato sito web sul problema 3x+1 è una fonte preziosa di ispirazione per il codesign di estensioni funzionali del sistema considerato fin qui; ecco alcune funzioni sulle traiettorie di Collatz (definite sui valori d'inizio, che determinano le traiettorie):
alcune traiettorie sono più interessanti di altre perché stabiliscono primati (come in gare agonistiche); sono definite in tal senso le seguenti proprietà: x0 è un
seguono alcune considerazioni utili al progetto di estensioni funzionali del codesign finalizzate alla ricerca di tali rarità
estensioni funzionali del core di calcolo del delay, per fornire anche il calcolo delle tre funzioni introdotte nella pagina precedente, sono ragionevolmente semplici
la selezione delle funzioni desiderate va considerata in due contesti diversi:
è utile alla ricerca dei Record introdotti prima lo studio di loro proprietà, ottenute da risultati teorici, che escludono a priori intere classi di valori di x0 dallo spazio di ricerca
tecniche di ottimizzazione di algoritmi di ricerca di Record sono reperibili in bibliografia