Esercitazione 15. Memoria Principale. La memoria cache è sempre più frequentemente integrata nel chip.

Documenti analoghi
Il sistema di Input/Output

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Input/Output. Input/Output

Componenti principali

Arbitraggio del BUS. Arbitraggio in daisy chain a controllo centralizzato. ad 1 livello a più livelli

Il problema dello I/O e gli Interrupt. Appunti di Sistemi per la cl. 4 sez. D A cura del prof. Ing. Mario Catalano

Componenti e connessioni. Capitolo 3

LA GESTIONE DELLA I/O

Il sistema di I/O. Calcolatori Elettronici

Elettronica per l informatica. Cosa c è nell unità A. Unità A: Bus di comunicazione. A.1 Architetture di interconnessione A.2 Esempi commerciali

verso espandibili eterogenei tempo di accesso tempo di risposta throughput

verso espandibili eterogenei tempo di accesso tempo di risposta throughput

Input/Output (Cap. 7, Stallings)

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 19

Interrupt. LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 19. Prof. Rosario Cerbone

memoria virtuale protezione

CALCOLATORI ELETTRONICI II

Is the bus a bus? Linea XX: Microprocessore-I/O-Memorie

ISA Input / Output (I/O) Data register Controller

Struttura dei Sistemi di Calcolo

Le memorie Cache n-associative

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 7 Input/Output

Capitolo 7: Input/Output. Es.1 - Bus sincrono. Es.1 - Risposta (a)

Introduzione alle gerarchie di memoria

Miglioramento delle prestazioni

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Architettura dei sistemi di elaborazione (Input/Output parte 2)

Strutture dei sistemi di calcolo

Architettura dei sistemi di elaborazione (Input/Output parte 1)

Memoria cache. Memoria cache. Miss e Hit. Problemi. Fondamenti di Informatica

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Il Sottosistema di Memoria

Con riferimento al funzionamento dei bus di un calcolatore: tracciare e illustrare il diagramma di temporizzazione di un

Corso di Calcolatori Elettronici I

Input / Output. M. Dominoni A.A. 2002/2003. Input/Output A.A. 2002/2003 1

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino

I bus. Sommario. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Università degli Studi di Milano

IO 1 Input Output a livello Hardware

Il polling consiste nella scansione ciclica, da parte della CPU, di tutte le periferiche per verificare la disponibilità o meno alla comunicazione.

Università degli Studi di Cassino

AXO Architettura dei Calcolatori e Sistema Operativo. gestione di IO e interfacciamento a bus

Cenni sull architettura del calcolatore

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Università degli Studi di Cassino e del Lazio Meridionale

Introduzione alle memorie cache. Sommario

Sottosistemi ed Architetture Memorie

Il Sottosistema di Memoria

IL SISTEMA DELLE INTERRUZIONI

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

Incremento prestazioni

Lezione 22 La Memoria Interna (1)

Architettura di von Neumann

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

PROVA SCRITTA DEL MODULO/CORSO DI. 24 novembre 2016

Memorie Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

Capitolo 2: Strutture dei sistemi di calcolo

Livello logico digitale bus e memorie

Memoria cache, interrupt e DMA

Università degli Studi di Cassino e del Lazio Meridionale

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino

Tecniche di gestione dell I/O

Corso di Fondamenti di Informatica Elementi di Architettura

Input/Output. bus, interfacce, periferiche

Architettura di von Neumann

Architettura di von Neumann

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Input/Output. bus, interfacce, periferiche

Architettura dei calcolatori

Input/Output. bus, interfacce, periferiche

Esame di INFORMATICA Lezione 4

ARCHITETTURA DEL CALCOLATORE

Architettura dei computer

Architettura del calcolatore (Seconda parte)

Introduzione alle memorie cache. Cristina Silvano, 06/01/2013 versione 2 1

Capitolo 13 Il sottosistema di ingresso/uscita

static dynamic random access memory

Architettura dei sistemi di elaborazione: La memoria (parte 2)

Sottosistema d ingresso uscita

Interruzioni parte prima. Inquadramento del problema

Corso di Calcolatori Elettronici I. Memorie. Prof. Roberto Canonico

Struttura delle memorie cache

Corso di Informatica 2 Prof. Sciuto; Lezione su Bus e I/O.

Corso di Calcolatori Elettronici I

memoria PSW R1 R2 CPU Struttura logica dell elaboratore unità di controllo ALU unità di ingresso unità organo coordinatore clock di uscita

Tecniche Automatiche di Acquisizione Dati

La memoria - tecnologie

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Periferiche CPU. Misure e Sistemi Microelettronici Sistemi 6-1 SREG. Data Bus Address Bus Control Bus

Criteri di caratterizzazione di una memoria

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo. Classificazione. I microcontrollori

Esercizi. Bus del calcolatore. Alessandro A. Nacci ACSO 2014/2014

Livelli del sottosistema di I/O

ALU e Control Unit. ALU e Control Unit

Transcript:

Esercitazione 15 Sommario Memoria Cache Trasferimento dei dati: Gestione dei dispositivi di I/O 1. Memoria cache La memoria cache è una memoria veloce di piccole dimensioni posta tra l unità di elaborazione e la memoria principale. La memoria cache e la memoria principale formano una gerarchia di memoria. CPU Memoria Cache Memoria Principale La gestione della gerarchia di memorie (cache, memoria principale) avviene tramite meccanismi simili a quelli descritti per la memoria virtuale. In alcuni casi vi sono cache separate per dati e istruzioni, oppure ve ne è solo una per le istruzioni. Questa è in genere più semplice da gestire di quella per i dati, in quanto le istruzioni non possono essere modificate. CPU Cache Memoria Principale La memoria cache è sempre più frequentemente integrata nel chip. Memoria Secondaria In un sistema di memoria i 3 livelli di memoria sono gestiti come 2 gerarchie a 2 livelli: una gerarchia tra memoria principale e memoria secondaria; una gerarchia tra memoria principale e memoria cache. Le due gerarchie devono essere gestite indipendentemente La tabella seguente mostra un confronto tra le due gerarchie. 1

Cache - Memoria principale Memoria principale - secondaria Rapporto tra i tempi di accesso 1/5 1/1000 Gestione Hardware Software Dimensione pagina 4-128 bytes 64-4096 bytes Acesso della CPU alla memoria di 2 livello accesso diretto acceso indiretto La memoria cache e la memoria principale sono realizzati con la stessa tecnologia (a semiconduttori con integrazione VLSI), mentre memoria principale e memoria secondaria sono realizzati con tecnologie diverse. Nella gerarchia tra memoria principale e memoria secondaria la CPU non ha accesso diretto alla memoria secondaria. La pagina è un blocco di memoria trasferito da livello inferiore a livello superiore. 1.1. Struttura hardware di una memoria cache Indirizzi (tag) Data Page (line) Cache Storage Access Logic Cache Storage Array Indirizzi Fisici Address Control verso la CPU Data In Data out Address Comparison Data Routing Data Selection verso la memoria principale I dati vengono memorizzati in pagine di cache (o linee). Ad ogni pagina è associata un informazione chiamata tag (identificatore) che caratterizza un blocco di locazioni di memorie consecutive. La CPU genera un indirizzo fisico; l indirizzo viene spezzato in modo da identificare l indirizzo della pagina ed il numero di byte dentro al pagina; l indirizzo di pagina viene confrontato con l identificatore nella cache. Se il confronto non dà esito positivo la CPU trasferisce l indirizzo alla memoria principale. Indirizzo di pagina (tag) indirizzo fisico Indirizzo di byte 2

1.2. Ciclo di lettura della memoria principale La CPU deve fare un accesso ad una locazione di memoria avente un determinato indirizzo fisico. La CPU invia alla memoria cache l indirizzo fisico; la cache confronta l indirizzo di pagina con i campi tag memorizzati: se vi è hit viene completato il ciclo; se vi è miss la cache inizia un operazione di lettura della memoria principale della pagina di memoria contenente quello richiesto. La politica di sostituzione nella cache ha gli stessi problemi di quella preemptive della memoria principale. 1.3. Organizzazione della memoria cache Il dato richiesto deve essere trovato rapidamente nella memoria cache tecniche associative accesso diretto tecniche miste. 1.3.1. Tecniche associative La cache è organizzata come una memoria associativa. Il tag viene utilizzato come una chiave di lettura. Ogni blocco della memoria principale può essere memorizzato in un qualsiasi blocco della cache. Vantaggi: massima flessibilità nella scelta del blocco di cache da usare Svantaggi: complessità dell hardware di ricerca. 1.3.2. Accesso diretto La memoria cache è suddivisa in un certo numero di pagine. S 1 = 2 k pagine (o linee). Ogni pagina immagazzina n parole consecutive. La memoria principale è suddivisa in S 2 regioni di uguale dimensione. Ogni pagina della memoria principale occupa una precisa posizione nella memoria cache. M 2 (j) occuperà la posizione con i = j mod (S 1 ). Accesso diretto Ogni blocco i della memoria principale è messo in corrispondenza fissa con un blocco k della cache. La funzione di trasformazione è k = i mod N 3

dove N è il numero di blocchi della cache. Vantaggi: tale funzione è facilmente implementabile in hardware Svantaggi: se il programma fa accesso frequentemente a 2 blocchi corrispondenti allo stesso blocco nella cache, ad ogni accesso si deve trasferire uno dei 2 blocchi dalla memoria principale alla cache. M 1 (0) M 1 (1) Memoria Cache Memoria Principale M 2 (0) M 2 (1) M 2 (2) M 2 (3) M 2 (4) M 2 (5) M 2 (6) M 2 (7) M 2 (8) M 2 (9) M 2 (10) M 2 (11) M 2 (12) M 2 (13) 1.3.3. Set Associative mapping Caratteristiche: i blocchi della memoria principale sono suddivisi in S 1 classi; un blocco i appartiene alla classe k se k=i mod S 1 ; la cache è suddivisa in S 2 insiemi: ogni insieme j contiene S blocchi, tutti appartenenti alla classe j; per accedere rapidamente ai blocchi in uno stesso insieme si usa una memoria associativa; Se S 2 = 1 si ha il direct mapping; se S 2 =N (N è la dimensione della cache) si ha l associative mapping. 4

1.4. Aggiornamento della memoria principale La CPU ha normalmente un canale di connessione diretto con la memoria principale; questo permette 2 possibili meccanismi di aggiornamento della memoria principale: write-back write-through. 1.4.1. Write-back Per ogni blocco nella cache viene tenuto aggiornato un flag, che ricorda se il blocco è stato modificato da quando è stato caricato nella cache. Quando un blocco viene eliminato dalla cache ed il suo flag è settato, il blocco viene copiato dalla cache nella memoria principale. Svantaggi: nei sistemi multiprocessore si può avere inconsistenza tra le cache di diversi processori il ripristino dei dati dopo eventuali system failure può non essere possibile. 1.4.2. Write-through Ogni volta che la CPU esegue una operazione di scrittura, la esegue sia sul dato nella cache che in quello nella memoria principale. La perdita di efficienza che ne deriva è limitata dal fatto che le operazioni di scrittura sono di solito molto meno numerose di quelle di lettura. 1.5. VAX-11/780: Organizzazione della Cache L indirizzo fisico è divisibile nei seguenti campi: 0 2 20 29 31 Quadrante Cache Address Tag Set Address Byte Address Lo schema hardware di decodifica dell indirizzo per l accesso alla cache è il seguente: 5

Physical Address 18 9 3 Address Tag Data Page (line) Index 0 1 Address Decoding Logic... 510 511 18 0 1 2 3 4 5 6 7 Byte Address Data Selection Swap Control (read miss) Address Comparison 1.5.1. Algoritmo per l accesso alla memoria Accesso in lettura: attraverso i bit 20:29 si seleziona un insieme i bit 2:19 sono confrontati con quelli delle 2 pagine appartenenti all insieme selezionato se la pagina è presente nella cache si usano i bit 29:31 per selezionare il byte desiderato se la pagina non è presente, viene caricata dalla memoria principale al posto di una delle 2 appartenenti all insieme. La scelta fra le 2 è casuale. Accesso in scrittura: attraverso i bit 20:29 si seleziona un insieme i bit 2:19 sono confrontati con quelli delle 2 pagine appartenenti all insieme selezionato se la pagina è presente nella cache si usano i bit 29:31 per selezionare il byte desiderato, e si scrive in esso il nuovo valore, sia nella cache che nella memoria principale se la pagina non è presente l operazione di scrittura avviene direttamente nella memoria principale, e la pagina non viene caricata nella cache. 2. Trasferimento dei dati Lo spostamento dei dati tra moduli è uno degli aspetti più critici di un sistema di elaborazione. Un bus è costituito da un insieme di linee che consentono di effettuare il trasferimento dei dati. Un efficiente sistema di trasferimento dei dati può avere grandi influenza su: prestazioni; costi; modularità; 6

standardizzazione. 2.1. Trasferimento punto a punto Sorgente Dati Strobe Destinazione Il modulo sorgente genera i dati che devono essere inviati al modulo destinazione. Un segnale di strobe comanda la memorizzazione del dato. Il segnale di strobe viene inviato quando i dati sono stabili. Dati In questo periodo i dati sono stabili Strobe 2.2. Trasferimento a diffusione Sorgente Destinazione 1 Destinazione 2 Destinazione 3 STB1 STB2 STB3 Modulo sorgente può inviare i dati a più moduli diversi. 7

Dati Dati 1 Dati 2 Dati 3 Strobe 1 Strobe 2 Strobe 3 Attivando contemporaneamente i 3 segnali di strobe si effettua un operazione di trasferimento di broadcast. 2.3. Trasmissione a collettore Il sistema di trasmissione è costituito da più blocchi sorgente e da un solo modulo destinazione. Il segnale di Output Enable abilita la scrittura sul bus di trasferimento dei dati. OE1 Sorgente 1 OE2 Sorgente 2 Destinazione STB Il canale di comunicazione può essere utilizzato per un solo trasferimento alla volta. Quando due elementi sorgenti tentano di inviare dati contemporaneamente si ha un conflitto di accesso (la risorsa bus verrebbe utilizzata da parte di due elementi). 8

Outupt Enable 1 Outupt Enable 2 Strobe Dati Dati 1 Dati 2 Conflitto Se i segnali di OE1 ed OE2 sono attivi contemporaneamente si ha una situazione di conflitto. Sulle linee di dato si hanno dei dati incerti. 2.4. di sistema Un bus di sistema è il mezzo di trasmissione che permette di effettuare i trasferimenti dei dati in un sistema avente la presenza contemporanea di più elementi destinazione e sorgente interconnessi. OE1 Sorgente 1 OE2 Sorgente 2 OE3 Sorgente 3 Destinazione 1 Destinazione 2 Destinazione 3 STB1 STB2 STB3 Un unità di controllo esterna stabilisce il valore dei vari segnali di controllo e regola il corretto funzionamento delle linee di trasmissione delle informazioni. 9

Outupt Enable 1 Outupt Enable 2 Outupt Enable 3 Dati 1 3 2 1 3 2 Strobe 1 Strobe 2 Strobe 3 2.5. Moduli Master e Slave In un sistema di trasmissione le unità connesse sono di 2 tipi: unità master: inizia ogni procedura di trasferimento dati; è anche denominata Control Unit e spesso coincide con la CPU; unità slave: rispondono ai comandi dell unità master; un esempio di unità slave sono le memorie ed i dispositivi di I/O in genere. I moduli sonop collegati tra loro da un insieme di linee tramite: bus per il trasferimento delle informazioni; bus per i segnali di controllo. Unità di controllo del di controllo Sorgente Destinazione di dati Sorgente 2 Sorgente 3 Destinazione 2 I segnali di controllo devono: 10

individuare l elemento Slave che deve partecipare al trasferimento; specificare se l elemento è di tipo sorgente o destinazione; fornire la temporizzazione necessaria. Ogni elemento è individuatao in modo univoco da un numero o indirizzo. Un gruppo di linee è dedicato al trasporto degli indirizzi (bus di indirizzi). Ogni modulo slave avrà un decodificatore di indirizzo per riconoscere se è coinvolto in un trasferimento. Un esempio di sistema di tipo Master-Slave per il trasferimento delle informazioni è costituito da un sistema a microprocessore caratterizzato dalla seguente Architettura di Sistema. C P U di indirizzi di controllo di dati ROM RAM I/O Un bus è composto da 3 gruppi di segnali: segnali di dato: normalmente sono in numero pari ad un multiplo di 8; possono essere bidirezionali o unidirezionali (in tal caso è necessario un numero doppio di linee); segnali di indirizzo: identificano lo slave con cui il master vuole comunicare (nonchè quale parte dello slave è coinvolta); possono essere multiplexati con i segnali di dato per ridurre le linee del bus ed i pin dei dispositivi connessi; segnali di controllo: forniscono informazioni di stato, di temporizzazione, di tipo (dei dati sul bus). L operazione di lettura e scrittura differiscono per il verso con il quale scorre l informazione: lettura: flusso di trasferimento che va da elemento Slave (sorgente) ad elemento Master (destinazione); scrittura: trasferimento dei dati avviene da elemento Master (sorgente) ad elemento Slave (destinazione). I segnali di controllo devono contenere le seguenti informazioni: se l operazione in corso è di lettura o di scrittura: quando il trasferimento può avere luogo. 11

2.6. Identificazione degli indirizzi In fase di indirizzamento il Master deve indicare agli Slave quando i segnali di indirizzo sono validi. Un segnale di controllo specifico può essere utilizzato per indicare agli Slave che il valore che si trova sul bus degli indirizzi è un dato valido. Indirizzi Indirizzi validi (ADDVAL) La CPU può avere a disposizione spazi di indirizzamento separati per memoria ed I/O. Per separare i due spazi si può fare ricorso a differenti coppie di segnali: a) segnale di indirizzo valido (ADDVAL) e segnale di abilitazione dello spazio di indirizzamento (MEM/PERIF): in questo caso il tipo di accesso è specificato dal segnale MEM/PERIF, se vale 1 l accesso è nello spazio della memoria, altrimenti l accesso è nello spazio dei periferici. b) segnale di indirizzo valido di memoria (VMA) e segnale di indirizzo valido di periferico (VPA). Indirizzi memoria periferico a) ADDVAL MEM/PERIF b) VPA VMA 2.6.1. Operazione di lettura Il segnale RDP (read pulse) specifica che viene effettuata un operazione di lettura. L indirizzo presente sul bus di indirizzi viene decodificato; se l indirizzo è valido e corrisponde al modulo stesso, in corrispondenza di un segnale di lettura i dati transitano sul bus di dati dal dispositivo sorgente al dispositivo destinazione. 12

ADDVAL RDP indirizzi Decodificatore STB dati OE Destinazione Sorgente Indirizzi ADDVAL OE dati STB 2.6.2. Operazione di scrittura Il segnale WRP (write pulse) specifica che viene effettuata un operazione di scrittura. L indirizzo presente sul bus di indirizzi viene decodificato; se l indirizzo è valido e corrisponde al modulo stesso, in corrispondenza di un segnale di scrittura i dati transitano sul bus di dati dal dispositivo sorgente al dispositivo destinazione. ADDVAL WRP indirizzi Decodificatore OE dati STB Sorgente Destinazione 13

Indirizzi ADDVAL OE dati STB 2.6.3. Segnali di controllo per la lettura e scrittura Per separare le operazioni di lettura e scrittura si può fare ricorso a 2 differenti coppie di segnali: a) segnale che specifica di una parola valida sul bus di dati (DAVAL) ed un segnale che in base al suo valore specifica se sta eseguendo un operazione di lettura o di scrittura (RD/WR); b) segnale di abilitazione alla lettura (RDP) e segnale di abilitazione alla scrittura (WRP). Dati lettura scrttura a) DAVAL RD/WR b) WRP RDP 2.7. Sincronizzazione tra Master e Slave Il Master invia i suoi segnali in modo indipendente da come si comporterà lo Slave. Per sfruttare al massimo il canale di comunicazione i trasferimenti devono essere rapidi. La velocità di risposta del dispositivo Slave dipende dalle sue caratteristiche tecnologiche. Per la gestione della sincronizzazione tra Master e Slave sono possibili diverse strategie: trasferimento asincrono; trasferimento sincrono. 14

2.7.1. Trasferimento sincrono Ogni unità di dato è trasferita in un periodo di tempo prefissato (normalmente un periodo di clock); le unità sorgente e destinazione utilizzano lo stesso segnale di clock. Alternativamente, le 2 unità possono avere clock separati, ma alla stessa frequenza, e scambiare periodicamente segnali di sincronizzazione; La frequenza del clock è imposta dai dispositivi più lenti. Il meccanismo funziona su distanze ridotte. 2.7.2. Trasferimento asincrono Ogni comunicazione può avere una sua velocità, determinata da appositi segnali di controllo che accompagnano i segnali di dato; si acquisisce così la massima flessibilità, a spese di una maggiore complessità del protocollo. Ambedue i dispositivi partecipano alla generazione dei segnali di temporizzazione. Nel protocollo di comunicazione viene introdotto un ulteriore segnale di acknowledge, generato dall unità che non ha richiesto il trasferimento. La sequenza di valori che i segnali devono assumere prende il nome di handshaking. Lettura WR/RD Master Data Request Acknowledge Data bus Slave Data WR/RD Data Request Acknowledge Il master attiva l indirizzo di uno slave. Se tale slave non esiste, il segnale Data Request rimarrebbe alto per un tempo indefinito, ma dopo un certo intervallo di tempo il modulo master riconosce di non ricevere riusposta dal modluo slave e dunque riconosce l errore nella trasmissione. 15

Scrittura Master WR/RD Data Request Acknowledge Data bus Slave Data WR/RD Data Request Acknowledge 2.8. Trasferimento semisincrono Il dispositivo Master invia si predispone alla operazione di trasferimento, l operazione di trasferimento si conclude in base ai tempi di risposta del dispositivo slave: se il dispositivo slave è veloce l operazione si chiude in un colpo di clock, altrimenti il dispositivo master dovrà inserire un opportuno numero di colpi di clock per concludere l operazione di trasferimento dei dati. Tali colpi di clock aggiuntivi si chiamano cicli di wait. T kt T CLOCK Address ADDVAL Data Data Acknowledge Il dispositivo lento riconosce il proprio indirizzo e indica al master di ritardare la chiusura del ciclo fino al momento opportuno. Il segnale di ADDVAL rimane basso 16

per un intervallo di tempo multiplo del periodo di clock. La presenza di cicli di wait ritarda tutte le operazioni di trasferimento. 2.9. Multiplexati Nel caso dei microprocessori, al fine di ridurre i costi dell hardware è importante minimizzare il numero di piedini (pin) del dispositivo integrato. Una delle tecniche utilizzate è quella di utilizzare in tempi diversi le stesse linee per tipi di dati diversi. I segnali che possono condividire le stesse linee fisiche sono: 1. dati e parte bassa degli indirizzi; 2. parte bassa e parte alta degli indirizzi; 3. dati ed indirizzi. 2.9.1. Ricostruzione dei segnali I segnali sono ricostruiti attraverso una batteria di Flip-Flop che vengono abilitati quando il segnale che occupa le linee fisiche corrisponde ai segnali di un certo tipo. Per la ricostruzione dei segnali occorrono due linee di abilitazione, una per ogni tipo di segnale che condivide le linee fisiche. Un bus di tipo multiplexato è più economico rispetto ad un bus dedicato, ma è certamente più lento. INF1VAL linee fisiche FF INF1 INF2VAL INF2 linee fisiche INF1 INF2 INF1VAL INF2VAL 2.10. Sistemi con moduli master multipli In un sistema di una certa complessità possono essere presenti più moduli master che condividono lo stesso bus. Gli esempio più frequenti sono quelli costituiti da: 1. sistemi multiplrocessori; 2. presenza di un modulo di accesso diretto alla memoria (DMA). 2.10.1. DMA È il metodo preferito quando si devono trasferire grosse moli di dati. 17

Una circuiteria apposita (DMA Controller) provvede ad eseguire il trasferimento di dati da una periferica alla memoria (o viceversa). La circuiteria deve essere in grado di fungere da bus master, ossia deve generare gli indirizzi ed i segnali di controllo secondo la tempistica opportuna. Il DMA Controller deve inoltre essere in grado di negoziare con la CPU l acquisizione del controllo del bus ed il suo rilascio. Abus Dbus Memoria AR DR DC IOAR IODR IR Control Unit DMA Ack DMA Req Control Unit CPU DMA Controller Periferica Il trasferimento dei dati in DMA può avvenire in vari modi: trasferimento a blocchi (burst transfer) trasferimento con cycle stealing trasferimento in transparent DMA. 2.10.2. Trasferimento a blocchi Prevede che il DMA Controller, una volta acquisito il controllo del bus, lo mantenga per tutto il tempo richiesto per trasferire un blocco di dati. In tal modo ma il trasferimento avviene alla massima velocità la CPU è bloccata per tutta la durata del trasferimento; il trasferimento a blocchi è importante per periferiche quali i dischi magnetici, dove il trasferimento del blocco non può essere interrotto). 2.10.3. Trasferimento con cycle stealing Il DMA Controller trasferisce i dati in piccoli blocchi, occupando il bus per periodi limitati di tempo. In tal modo: ma la velocità di trasferimento è minore 18

la CPU non è bloccata per periodi troppo lunghi. 2.10.4. Trasferimento in Transparent DMA Il DMA Controller è in grado di rilevare quando la CPU non utilizza il bus, e solo in quei periodi esegue il trasferimento dei dati. In tal modo la CPU non è praticamente rallentata dal DMA Controller. 2.11. Arbitraggio del bus Il meccanismo di arbitraggio del bus entra in funzione quando 2 o più unità fanno contemporaneamente richiesta di accesso al bus. Il meccanismo deve allora designare il nuovo dispositivo master. L arbitraggio può avvenire in maniera centralizzata: esiste un arbitro, che a volte fa parte della CPU distribuita: ogni modulo contiene la logica necessaria per implementare un meccanismo di arbitraggio che permette di definire il nuovo master.esistono due principale tecniche di arbitraggio del bus: 2.11.1. Arbitraggio centralizzato Un modulo separato a cui gli elementi fanno richieste di accesso gestisce il controllo del bus. I vantaggi di un arbitro centralizzato sono: possibilità di modificare agevolmente la politica di assegnazione delle priorità; migliore efficienza. Esistono 3 meccanismi di arbitraggio centralizzato: daisy-chaining polling richieste indipendenti. Essi differiscono per: numero di linee di controllo richieste; velocità di risposta del bus controller; flessibilità nella gestione delle priorità. 19

Daisy Chain Grant U 1 U 2 U n Controller Request y Polling Una unità fa richiesta del bus (BUS REQUEST) attendendo che il bus sia libero (BUS BUSY); il bus controller attiva il segnale di BUS GRANT Ogni unità, quando riceve il BUS GRANT: se ha richiesto il bus: attiva BUS BUSY se non ha richiesto il bus: attiva BUS GRANT verso l unità a valle. U 1 U 2 U n Controller Request y Poll Counter Una unità fa richiesta del bus (BUS REQUEST), attendendo che il bus sia libero (BUS BUSY) il Controller scandisce tutte le unità collegate, mettendo sul Poll Counter gli indirizzi di ciascuna, in sequenza quando una unità viene indirizzata, ed ha fatto richiesta, attiva il segnale di BUS BUSY; a questo punto il Controller interrompe la scansione. 20

Richieste indipendenti U 1 U 2 U n Controller Request 1 Grant 1 Request 2 Grant 2 Request 3 Grant 3 y L unità i-esima fa richiesta del bus (BUS REQUEST i), attendendo che il bus sia libero (BUS BUSY) il Controller gestisce tutte le richieste, e concede il bus all unità con priorità maggiore (BUS GRANT j) l unità j assume il controllo del bus (BUS BUSY j). 2.11.2. Arbitraggio distribuito I singoli moduli dispongono di funzioni che cooperano per la gestione condivisa del bus. I vantaggi di un arbitraggio distribuito sono: maggiore modularità e possibilità di espansione e riconfigurazione; migliore tolleranza ai guasti (se si guasta un elemento particolare non viene coinvolto l intero sistema). 3. Gestione dei dispositivi di I/O La funzione del sistema di Input/Output di un calcolatore è il trasferimento di dati tra la memoria principale ed il mondo esterno. Il sistema di Input/Output di un calcolatore è composto di: dispositivi di Input/Output (periferiche) unità per il controllo di questi dispositivi software per la loro gestione. I metodi utilizzati dalla CPU per gestire le richieste di servizio da parte dei dispositivi di I/O possono essere di 2 tipi diversi: polling; interruzione. 21

3.1. Polling Il polling è il metodo più semplice ed economico per gestire le richieste di servizio da parte dei dispositivi di I/O. Il microprocessore scandisce i vari dispositivi e a turno controlla se hanno avanzato una richiesta di servizio. La gestione del polling viene fatta attraverso un ciclo software di lettura dello stato dei dispositivi di I/O. La maggior parte del tempo è impiegata dal programma principale nell esecuzione del ciclo di polling. CPU Multiplexer RAM I/O(1) ROM I/O(2) I/O(3) 3.2. Interruzione È basato su un segnale asincrono che il dispositivo invia alla CPU quando ha bisogno di un servizio. In questo modo: il tempo per ottenere l attenzione della CPU si riduce la CPU non perde tempo a scandire (polling) i dispositivi per testarne lo stato. La gestione del servizio dei dispositivi di I/O tramite interrupt permette un migliore efficienza dell esecuzione della elaborazione della CPU. Un input esterno asincrono informa il microprocessore che un dispositivo esterno richiede di essere servito. La CPU interrompe l esecuzione in corso e salta all esecuzione di una routine di servizio dell interruzione. Il dispositivo di Controllo dell'interrupt funziona come un gestore delle richieste di interruzione tra i dispositivi periferici e la CPU. Ad ogni dispositivo è associata una procedura di gestione dell'interruzione (Interrupt Service Routine - ISR). 22

CPU INT Controllore dell'interrupt RAM ROM I/O(1) I/O(2) I/O(3) I metodi che la CPU utilizza per identificare il dispositivo periferico che ha fatto richiesta di interruzioni possono essere i seguenti: linee di interruzioni multiple; Polling; Daisy Chain; Arbitraggio del. 3.2.1. Linee di interruzione multiple La CPU possiede diversi piedini per le richieste di Interrupt. Ogni periferica è attaccata ad un diverso piedino. È una soluzione impraticabile, poichè il numero di periferiche è quasi sempre superiore a quello dei piedini disponibili. 3.2.2. Polling Esiste un solo piedino per le richieste di Interrupt. Quando la CPU percepisce la richiesta, inizia a scandire le parole di stato di tutte le periferiche per individuare quella che ha fatto la richiesta. 3.2.3. Daisy Chain Tutte le periferiche condividono la stessa linea di Interrupt Request, cui sono connesse in wired-or. La linea di Interrupt Acknowledge è connessa in daisy chain. La periferica che acquisisce il diritto ad esere servita mette sul bus un codice identificativo, che la CPU utilizza per selezionare la procedura di servizio corrispondente (interrupt vettorizzato). 23

3.2.4. Arbitraggio del bus Quando una periferica desidera fare una richiesta di Interrupt deve prima acquisire il controllo del bus, che viene gestito tramite un meccanismo di arbitraggio. Quando la CPU percepisce la richiesta, risponde con un acknowledge; la periferica mette sul bus il codice identificativo, e la CPU attiva la corrispondente procedura di servizio. 24