matite e gomma

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0

Validazione XHTML 1.0 Validazione CSS 3
Logo del Dipartimento di Matematica e Informatica, Insegnamento di Sistemi dedicati, link al Forum

Interfacce di microprocessore

Lezione 10 di Sistemi dedicati

Docente: Giuseppe Scollo

Università di Catania
Dipartimento di Matematica e Informatica
Corso di Laurea Magistrale in Informatica, AA 2016-17

Indice

  1. Interfacce di microprocessore
  2. argomenti della lezione
  3. registro mappato in memoria
  4. integrazione nella gerarchia di memoria
  5. mailbox
  6. coda FIFO
  7. memoria condivisa
  8. interfacce di coprocessore
  9. interfacce di istruzioni custom
  10. flusso di progetto di ASIP
  11. esempio: interfaccia di istruzione custom Nios-II
  12. banchi di registri per istruzioni custom Nios-II
  13. riferimenti

argomenti della lezione

di che si tratta:

registro mappato in memoria

le inerfacce mappate in memoria sono il tipo più generale di interfaccia HW/SW

Schaumont, Figura 11.1 - un registro mappato in memoria

Schaumont, Figure 11.1 - A memory-mapped register

integrazione nella gerarchia di memoria

perché il puntatore deve essere volatile?

Schaumont, Figura 11.2 -  integrazione di un registro mappato 
                                    in memoria nella gerarchia di memoria

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:

  • allocazione in area di memoria esclusa dalla cache, se il processore (e.g. Microblaze) ha una cache configurabile
  • uso di apposite istruzioni del processore (e.g. Nios-II) che evitano la cache

mailbox

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, Figura 11.3 - registro mailbox fra hardware e software

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:

coda FIFO

l'uso di una coda FIFO compensa squilibri temporanei fra il throughput di scrittura e quello di lettura

Schaumont, Figura 11.4 - FIFO con handshake alle porte di lettura 
                                   e scrittura

Schaumont, Figure 11.4 - A FIFO with handshakes on the read and write ports

si può costruire una FIFO a stadi in cascata, dove ciascuno stadio ha l'input da slave e l'output da master

Schaumont, Figura 11.5 - FIFO a un posto con handshake da slave 
                                   in input e da master in output

Schaumont, Figure 11.5 - A one-place FIFO with a slave input handshake and a master output handshake

memoria condivisa

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, Figura 11.6 - memoria condivisa a doppio buffer con 
                        handshake richiesta/riscontro mappato in 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

interfacce di coprocessore

Schaumont, Figura 11.7 - interfaccia di coprocessore

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

  • un'interfaccia di coprocessore non usa il bus su chip bensì una porta dedicata sul processore, pilotata da istruzioni di coprocessore

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:

interfacce di istruzioni custom

l'integrazione di hardware e software può essere considerevolmente accelerata come segue:

  1. riservare una parte dei codici operativi di un microprocessore per nuove istruzioni
  2. integrare i moduli hardware custom direttamente nella microarchitettura del microprocessore
  3. controllare i moduli hardware custom usando nuove istruzioni derivate dai codici operativi riservati

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:

flusso di progetto di ASIP

Schaumont, Figura 11.12 - flusso di progetto di ASIP

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

esempio: interfaccia di istruzione custom Nios-II

il processore softcore Nios-II ha un'interfaccia di coprocessore su cui si possono definire istruzioni custom e collegare moduli hardware

Schaumont, Figura 11.15 - temporizzazione dell'interfaccia 
                                    di istruzione custom Nios-II

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

banchi di registri per istruzioni custom Nios-II

è supportato anche l'uso di un banco di registri locale nel modulo hardware custom

Schaumont, Figura 11.16a - integrazione di istruzione custom Nios-II 
                                     con il banco di registri del processore

Schaumont, Figure 11.16a - Nios-II custom-instruction integration with processor register file

Schaumont, Figura 11.16b - integrazione di istruzione custom Nios-II 
                                     con banco di registri locale

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

  • è permesso l'uso di entrambi in un stessa istruzione, e.g. custom 0x5, c2, c3, r5

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

  • nel primo caso, l'operando è fornito attraverso la porta dataa, associata a un registro del processore
  • nel secondo caso, l'input a seleziona il registro locale da usare quale operando

riferimenti

letture raccomandate:

per ulteriore consultazione: