DMI – Corso di laurea magistrale in Informatica
Copyleft
2020 Giuseppe Scollo
di che si tratta:
Schaumont, Figure 9.1 - The hardware/software interface
la figura mostra uno schema dei costituenti di un'interfaccia HW/SW
la funzione dell'interfaccia HW/SW è connettere l'applicazione software al modulo hardware custom; questo obiettivo coinvolge cinque elementi:
Schaumont, Figure 9.2 - Synchronization point
sincronizzazione: l'interazione strutturata di due entità parallele, altrimenti indipendenti
la sincronizzazione è necessaria per la comunicazione fra sottosistemi paralleli: ogni parlante deve avere un ascoltatore per essere sentito
Schaumont, Figure 9.3 - Dimensions of the synchronization problem
tre dimensioni ortogonali del problema della sincronizzazione:
semaforo: una primitiva di sincronizzazione S per il controllo di accesso a una risorsa astratta condivisa, mediante le operazioni:
Schaumont, Figure 9.4 - Synchronization with a single semaphore
int shared_data;
semaphore S1;
entity one {
P(S1);
while (1) {
short_delay();
shared_data = ...;
V(S1);
// synchronization point
}
}
entity two {
short_delay();
while (1) {
P(S1);
// synchronization point
received_data = shared_data;
}
}
Schaumont, Listing 9.1 - One-way synchronization with a semaphore
punti di sincronizzazione: quando la prima entità esegue la V(S1), così sbloccando l'altra entità
si assuma invece il contrario, e.g. spostando la chiamata di funzione short_delay() dal ciclo while nella prima entità a quello nella seconda ...
la situazione di ritardi variabili può essere gestita in uno schema con due semafori
Schaumont, Figure 9.5 - Synchronization with two semaphores
int shared_data;
semaphore S1, S2;
entity one {
P(S1);
while (1) {
variable_delay();
shared_data = ...;
V(S1); // synchronization point 1
P(S2); // synchronization point 2
}
}
entity two {
P(S2);
while (1) {
variable_delay();
P(S1); // synchronization point 1
received_data = shared_data;
V(S2); // synchronization point 2
}
}
Schaumont, Listing 9.2 - Two-way synchronization with two semaphores
la figura 9.5 illustra il caso in cui:
nei sistemi paralleli un semaforo centralizzato non è sempre fattibile; una comune alternativa è
se un'entità giunge troppo presto a un punto di sincronizzazione, dovrebbe restare in attesa fino a quando non si verifichi la condizione appropriata, o dovrebbe procedere con altro?
sia gli schemi con semafori che quelli con handshake discussi prima realizzano un trasferimento di dati bloccante
l'accelerazione del calcolo è spesso la motivazione del progetto di hardware custom
occorre valutare anche i vincoli di comunicazione!
Schaumont, Figure 9.8 - Communication constraints of a coprocessor
Schaumont, Figure 9.9 - Communication-constrained system vs. computation-constrained system
il numero di cicli di clock per esecuzione del modulo hardware custom sono correlati al suo hardware sharing factor (HSF) =def numero di cicli di clock tra eventi di I/O consecutivi
Architecture | HSF |
Systolic array processor | 1 |
Bit-parallel processor | 1–10 |
Bit-serial processor | 10–100 |
Micro-coded processor | >100 |
Schaumont, Table 9.1 - Hardware sharing factor
l'accoppiamento indica il livello di interazione tra flussi di esecuzione nel software e in hardware custom
l'accoppiamento correla sincronizzazione e prestazione
Coprocessor | Memory-mapped | |
Factor | interface | interface |
Addressing | Processor-specific | On-chip bus address |
Connection | Point-to-point | Shared |
Latency | Fixed | Variable |
Throughput | Higher | Lower |
Schaumont, Table 9.2 - Comparing a coprocessor interface with a memory-mapped interface
Schaumont, Figure 9.10 - Tight coupling versus loose coupling
esempio: differenza tra
N.B.: un alto grado di parallelismo nell'insieme del progetto può essere più facile da ottenere con uno schema di accoppiamento lasco piuttosto che stretto
quattro famiglie di standard di bus su chip, fra le più in uso:
due classi principali di configurazioni: condivisi e punto-punto
si considerano appresso un bus generico condiviso e uno punto-punto, astraendo caratteristiche comuni a tutti questi
Bus |
High-performance shared bus |
Periferal shared bus |
Point-to-point bus |
AMBA v3 | AHB | APB | |
AMBA v4 | AXI4 | AXI4-lite | AXI4-stream |
CoreConnect | PLB | OPB | |
Wishbone | Crossbar topology | Shared topology | Point to point topology |
Avalon | Avalon-MM | Avalon-MM | Avalon-ST |
Schaumont, Table 10.1 - Bus configurations for existing bus standards
Legenda | |
AHB | AMBA highspeed bus |
APB | AMBA peripheral bus |
AXI | advanced extensible interface |
PLB | processor local bus |
OPB | onchip peripheral bus |
MM | memory-mapped |
ST | streaming |
un bus condiviso su chip consiste tipicamente di più segmenti, connessi da ponti; ogni transazione è iniziata da un master, a cui risponde uno slave; se questi stanno su segmenti diversi, il ponte agisce da slave su uno dei segmenti e da master sull'altro, effettuando la traduzione degli indirizzi
quattro classi di segnali di bus:
Schaumont, Figure 10.1
- (a) Example of a multi-master segmented bus system.
(b) Address space for the same bus
Schaumont, Figure 10.2 - Point-to-point bus
un bus punto-punto è una connessione fisica dedicata fra un master e uno slave, per trasferimenti di dati in flussi (stream) illimitati
la figura 10.3 mostra la disposizione fisica di un tipico segmento di bus su chip, con due master e due slave, dove le porte AND e OR al centro del diagramma fungono da multiplatori, sia delle linee indirizzo che delle linee dati
Schaumont, Figure 10.3 - Physical interconnection of a bus. The *_addr, *_wdata, *_sdata signals are signal vectors. The *_enable, *_grant, *_request signals are single-bit signals
convenzione sui nomi dei segnali di lettura/scrittura di dati:
l'arbitraggio del bus assicura che solo un componente per volta piloti qualsiasi linea del bus
una convenzione sui nomi aiuta a dedurre funzionalità e connettività di linee di bus dai loro nomi
il nome di un pin di un componente rifletterà la funzionalità del pin; segnali di bus, creati da interconnessioni di pin di componenti, seguiranno anch'essi una convenzione, per evitare confusione fra segnali simili
per la natura inerentemente parallela di un sistema di bus, i diagrammi di temporizzazione sono in ampio uso per descrivere le relazioni temporali fra segnali di bus
Schaumont, Figure 10.4 - Bus timing diagram notation
il diagramma in figura 10.4 mostra la notazione per descrivere le attività in un bus generico per cinque cicli di clock
questi diagrammi sono molto utili per descrivere le attività su un bus in funzione del tempo
la tabella 10.2 elenca i segnali di un sistema di bus generico, astraendo da sistemi specifici
Signal name | Meaning |
clk | Clock signal. All other bus signals are references to the upgoing clock edge | m_addr | Master address bus | m_data | Data bus from master to slave (write operation) | s_data | Data bus from slave to master (read operation) | m_rnw | Read-not-Write. Control line to distinguish read from write operations | m_sel | Master select signal, indicates that this master takes control of the bus | s_ack | Slave acknowledge signal, indicates transfer completion | m_addr_valid | Used in place of m_sel in split-transfers | s_addr_ack | Used for the address in place of s_ack in split-transfers | s_wr_ack | Used for the write-data in place of s_ack in split-transfers | s_rd_ack | Used for the read-data in place of s_ack in split-transfers | m_burst | Indicates the burst type of the current transfer | m_lock | Indicates that the bus is locked for the current transfer | m_req | Requests bus access to the bus arbiter | m_grant | Indicates bus access is granted |
Schaumont, Table 10.2 - Signals on the generic bus
la tabella 10.3 mostra la corrispondenza di alcuni segnali del bus generico a segnali equivalenti dei bus CoreConnect/OPB, AMBA/APB, Avalon-MM e Wishbone
generic | CoreConnect/OPB | AMBA/APB | Avalon-MM | Wishbone |
clk | OPB_CLK | PCLK | clk | CLK_I (master/slave) |
m_addr | Mn_ABUS | PADDR | Mn_address | ADDR_O (master) |
ADDR_I (slave) | ||||
m_rnw | Mn_RNW | PWRITE | Mn_write_n | WE_O (master) |
m_sel | Mn_Select | PSEL | STB_O (master) | |
m_data | OPB_DBUS | PWDATA | Mn_writedata | DAT_O (master) |
DAT_I (slave) | ||||
s_data | OPB_DBUS | PRDATA | Mb_readdata | DAT_I (master) |
DAT_O (slave) | ||||
s_ack | Sl_XferAck | PREADY | Sl_waitrequest | ACK_O (slave) |
Schaumont, Table 10.3 - Bus signals for simple read/write on Coreconnect/OPB, ARM/APB, Avalon-MM and Wishbone busses
letture raccomandate:
letture per ulteriori approfondimenti: