DMI – Corso di laurea magistrale in Informatica
Copyleft
2020 Giuseppe Scollo
di che si tratta:
un'interfaccia hardware connette un modulo hardware custom a un bus di coprocessore o su chip
il progetto dell'interfaccia hardware deve combinare la flessibilità dell'hardware custom con gli aspetti reali dell'interfaccia hardware/software
funzioni tipiche dell'interfaccia hardware:
Schaumont, Figure 12.1 - The hardware interface maps a custom-hardware module to a hardware-software interface
Schaumont, Figure 12.2 - Layout of a coprocessor hardware interface
componenti comuni di un'interfaccia hardware:
dalla prospettiva del modulo hardware custom, è comune partizionare la collezione di porte in porte di ingresso/uscita dei dati e porte di controllo/stato
la separazione di controllo e dati è un aspetto importante del progetto poiché, nel progetto di un coprocessore, la granularità dell'interazione fra dati e controllo è scelta dal progettista
proprietà di una porta dati del coprocessore: larghezza, direzione e tasso di aggiornamento
per una buona corrispondenza delle effettive porte hardware alle porte dell'interfaccia custom, conviene partire dalle proprietà delle porte hardware
nella realizzazione di questo modulo come coprocessore mappato in memoria, le porte dell'interfaccia hardware sarebbero realizzate come registri mappati in memoria
tuttavia, non sempre è possibile allocare un numero arbitrario di porte mappate in memoria nell'interfaccia hardware; in tal caso si devono multiplare le porte del modulo hardware custom sulle porte dell'interfaccia hardware
si può realizzare la multiplazione in modi diversi: il primo è la multiplazione nel tempo delle porte del modulo hardware, la seconda con l'uso di un registro indice nell'interfaccia hardware
Schaumont, Figure 12.3 - Time-multiplexing of two hardware-module ports over a single control-shell port
Schaumont, Figure 12.4 - Index-register to select one of eight output ports
la multiplazione è anche utile per trasferire a pezzi operandi lunghi, sì che l'operando passa un pezzo alla volta con la multiplazione nel tempo
la tecnica di masking è adatta a operandi molto brevi, e.g. per raggruppare diverse porte da un bit del modulo hardware in una porta dell'interfaccia hardware: si usa a tal fine un registro mask per indicare le porte del modulo da aggiornare, e.g.: new_hw_port = (old_hw_port & ~mask) | (upd_value & mask)
il progetto del controllo in un coprocessore è l'insieme di attività per generare segnali di controllo e catturare segnali di stato
la figura 12.5 mostra una generica architettura per controllare un modulo hardware custom
Schaumont, Figure 12.5 - Command design of a hardware interface
la figura 12.6 mostra l'architettura di un coprocessore che può realizzare la sovrapposizione di comunicazione e calcolo, come illustrato in figura 12.7
Schaumont, Figure 12.6 - Hierarchical control in a coprocessor
Schaumont, Figure 12.7 - Execution overlap using hierarchical control
l'interprete analizza ciascun comando dal software e lo suddivide in una combinazione di comandi per le FSM del livello inferiore
per l'effettiva sovrapposizione dell'esecuzione si deve organizzare il pipelining delle azioni delle FSM, con adattamento dell'interprete dei comandi ai piani di esecuzione delle FSM del livello inferiore
modello di programmazione = progetto del controllo + progetto dei dati
la mappa degli indirizzi riflette l'organizzazione di elementi di memoria del modulo hardware accessibili al software in lettura e in scrittura; il suo progetto dovrebbe procedere dal punto di vista del progettista del software piuttosto che dell'hardware, perciò:
il progetto di un buon insieme di istruzioni è un problema difficile, che si pone al progettista in termini di bilanciamento tra flessibilità ed efficienza
ecco alcune generiche linee-guida per il progetto:
in una recente 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
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
letture raccomandate:
per ulteriore consultazione: