DMI – Corso di laurea magistrale in Informatica
Copyleft
2016-2017 Giuseppe Scollo
di che si tratta:
le inerfacce mappate in memoria sono il tipo più generale di interfaccia HW/SW
Schaumont, Figure 11.1 - A memory-mapped register
perché il puntatore deve essere volatile?
Schaumont, Figure 11.2 - Integrating a memory-mapped register in a memory hierarchy
tuttavia, definire un registro mappato in memoria con un puntatore volatile non impedisce che l'indirizzo di memoria sia mantenuto nella cache!
due approcci per far fronte a questo problema:
semplice estensione del registro mappato in memoria con un meccanismo di handshake, con cui le parti comunicanti si segnalano reciprocamente lo stato del registro
Schaumont, Figure 11.3 - A mailbox register between hardware and software
il protocollo mostrato in figura ha due punti di sincronizzazione, subito dopo che req e ack assumono lo stesso valore
i due svantaggi principali di questo protocollo:
l'uso di una coda FIFO compensa squilibri temporanei fra il throughput di scrittura e quello di lettura
invece di controllare l'accesso a un solo registro, un handshake può essere usato anche per il controllo di accesso a una regione di memoria
Schaumont, Figure 11.6 - A double-buffered shared memory with a memory-mapped request/acknowledge handshake
in una fase del protocollo in figura, è permessa la modifica della regione 1 della memoria, mentre nell'altra fase è permessa la modifica della regione 2
Schaumont, Figure 11.7 - Coprocessor interface
quando occorre un throughput di dati elevato tra il software e l'hardware custom, un'interfaccia dedicata supera le prestazioni di quelle mappate in memoria
sia l'insieme di istruzioni di coprocessore che la specifica interfaccia di coprocessore dipendono dal tipo di processore; non tutti i processori hanno un'interfaccia di coprocessore
vantaggi principali di un'interfaccia di coprocessore rispetto al bus su chip:
l'integrazione di hardware e software può essere considerevolmente accelerata come segue:
il risultato di un tale progetto è un Application-Specific Instruction-set Processor (ASIP)
il progetto di ASIP automatizza gli aspetti più difficili del codesign HW/SW:
Schaumont, Figure 11.12 - ASIP design flow
il progetto di un ASIP sequenziale generalmente non produce prestazioni migliori del progetto di SOC basato su moduli hardware custom, tuttavia ha minor propensione all'errore
il processore softcore Nios-II ha un'interfaccia di coprocessore su cui si possono definire istruzioni custom e collegare moduli hardware
Schaumont, Figure 11.15 - Nios-II custom-instruction interface timing
l'interfaccia supporta l'esecuzione a durata variabile di istruzioni custom mediante doppio handshake
l'input clk_en si usa per disabilitare l'hardware custom quando l'istruzione è inattiva
è supportato anche l'uso di un banco di registri locale nel modulo hardware custom
Schaumont, Figure 11.16a - Nios-II custom-instruction integration with processor register file
Schaumont, Figure 11.16b - Nios-II custom-instruction integration with local register file
un'istruzione custom può avere operandi nei due banchi di registri: registri con prefisso r sono collocati nel processore, mentre registri con prefisso c sono collocati nel modulo hardware
la figura 11.16b illustra solo il caso del primo operando: il segnale di controllo reada seleziona il banco di registri, del processore o locale
letture raccomandate:
per ulteriore consultazione: