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

Principî di comunicazione HW/SW

Lezione 09 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. Principî comunicazione HW/SW
  2. argomenti della lezione
  3. l'interfaccia hardware/software
  4. il problema della sincronizzazione
  5. sincronizzazione con semaforo
  6. sincronizzazione con due semafori
  7. sincronizzazione con handshake
  8. trasferimenti di dati bloccanti e non
  9. fattori-limite di prestazione
  10. accoppiamento stretto o lasco
  11. riferimenti

argomenti della lezione

di che si tratta:

l'interfaccia hardware/software

Schaumont, Figura 9.1 - l'interfaccia hardware/software

Schaumont, Figure 9.1 - The hardware/software interface

la figura mostra uno schema dei costituenti di un'interfaccia hardware/software

la funzione dell'interfaccia hardware/software è connettere l'applicazione software al modulo hardware custom; questo obiettivo coinvolge cinque elementi:

  1. bus su chip: sia condiviso o punto-punto, trasporta dati fra microprocessore e modulo hardware custom
  2. interfaccia di microprocessore: hardware e firmware che permette a un programma software di ‘uscire’ dal microprocessore, e.g. mediante istruzioni di coprocessore o di accesso a memoria
  3. interfaccia hardware: gestisce il protocollo del bus su chip e rende disponibili i dati al modulo hardware custom mediante registri o memoria dedicata
  4. driver software: incapsula lxale transazioni fra hardware e software in chiamate di funzione, converte strutture dati del software in strutture adatte alla comunicazione hardware
  5. modello di programmazione: presenta un'astrazione dell'hardware all'applicazione software; per realizzare tale conversione l'interfaccia hardware può richiedere memoria e controlli agguntivi

il problema della sincronizzazione

Schaumont, Figura 9.2 - punto di sincronizzazione

Schaumont, Figure 9.2 - Synchronization point

sincronizzazione: l'interazione strutturata di due entità parallele, altrimenti indipendenti

  • in figura 9.2, la sincronizzazione garantisce che il punto A nella sequenza di esecuzione del microprocessore è legato al punto B nel flusso del controllo del coprocessore

la sincronizzazione è necessaria per la comunicazione fra sottosistemi paralleli: ogni parlante deve avere un ascoltatore per essere sentito

Schaumont, Figura 9.3 - dimensioni del problema della 
          sincronizzazione

Schaumont, Figure 9.3 - Dimensions of the synchronization problem

tre dimensioni ortogonali del problema della sincronizzazione:

  • tempo: granularità temporale delle interazioni
  • dati: complessità strutturale dei dati trasferiti
  • controllo: relazione tra i flussi di controllo locali

sincronizzazione con un semaforo

semaforo: una primitiva di sincronizzazione S per il controllo di accesso a una risorsa astratta condivisa, mediante le operazioni:

  • P(S): prova l'accesso, attendi se S=0, altrimenti S←0
  • V(S): rilascia la risorsa, S←1

Schaumont, Figura 9.4 - sincronizzazione con un solo semaforo

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à

  • questo schema funziona nell'ipotesi che la seconda entità sia più veloce a leggere il dato di quanto lo sia la prima a scriverlo

si assuma invece il contrario, e.g. spostando la chiamata di funzione short_delay() dal ciclo while nella prima entità a quello nella seconda ...

  • in generale, nello scenario produttore/consumatore, entrambe le entità possono dover attendere l'un l'altra

sincronizzazione con due semafori

la situazione di ritardi variabili può essere gestita in uno schema con due semafori

  • si usa S1 per sincronizzare la seconda entità e S2 per sincronizzare la prima

Schaumont, Figura 9.5 - sincronizzazione 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:

  • alla prima sincronizzazione la prima entità è più veloce della seconda e si ha la sua sincronizzazione con il semaforo S2, laddove
  • alla seconda sincronizzazione è più veloce la seconda entità e se ne ha la sincronizzazione con il semaforo S1

sincronizzazione con handshake

nei sistemi paralleli un semaforo centralizzato non è sempre fattibile; una comune alternativa è

l'handshake: un protocollo di segnalazione basato su livelli di segnale

Schaumont, Figura 9.6 - handshake unidirezionale

Schaumont, Figure 9.6 - One-way handshake

l'handshake unidirezionale ha lo stesso limite della sincronizzazione con un semaforo, la soluzione è:

Schaumont, Figura 9.7 - handshake bidirezionale

Schaumont, Figure 9.7 - Two-way handshake

trasferimenti di dati bloccanti e non

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 con handshake discussi prima realizzano un trasferimento di dati bloccante

fattori-limite di prestazione

l'accelerazione del calcolo è spesso la motivazione per il progetto di hardware custom

  • tuttavia, anche l'interfaccia hardware/software influenza la prestazione del sistema che ne risulta

occorre valutare anche i vincoli di comunicazione!

  • e.g., si assuma che il modulo HW custom in fig. 9.8 richieda 5 cicli di clock per il calcolo del risultato, con un totale di 320 bit di trasferimento di dati per esecuzione: può tale sistema procedere a un tasso di 320/5 = 64 bit per ciclo?

Schaumont, Figura 9.8 - limiti di comunicazione di un coprocessore

Schaumont, Figure 9.8 - Communication constraints of a coprocessor

Schaumont, Figura 9.9 - sistema limitato dalla comunicazione verso 
          sistema limitato dalla computazione

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

accoppiamento stretto o lasco

l'accoppiamento indica il livello di interazione tra flussi di esecuzione nel software e in hardware custom

  • stretto = frequenti sincronizzazioni | scambi di dati
  • lasco = il contrario

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, Figura 9.10 - accoppiamento stretto verso lasco

Schaumont, Figure 9.10 - Tight coupling versus loose coupling

esempio: differenza tra

  • interfaccia di coprocessore: sta su una porta dedicata del processore
  • interfaccia mappata in memoria: sta sul bus di memoria del processore

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

riferimenti

letture raccomandate: