DMI – Corso di laurea magistrale in Informatica
Copyleft
2016-2017 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:
letture raccomandate:
per ulteriore consultazione: