Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis Corso di Laurea in Ingegneria Elettronica Capitolo 7: Input/Output Capitolo 7 Input/Output Esercizi sul BUS: 1. Bus sincrono 2. Arbitraggio del Bus Es.1 - Bus sincrono Un bus sincrono presenta le seguenti caratteristiche: Frequenza di clock: 100 MHz Durata di una trasmissione sul bus: 2 cicli di clock Ampiezza linea dati: 32 bit Tempo di ciclo della memoria: 70 ns a. Si mostri chiaramente il protocollo di lettura di un bus sincrono (utilizzando l apposito grafico); b. Si calcoli la velocità di trasferimento durante una operazione di lettura di un dato dalla memoria, sapendo che la memoria principale ha un tempo di ciclo pari a 70 ns nei seguenti due casi: 1. Parole di memoria di dimensione pari a 32 bit; 2. Parole di memoria di dimensione pari a 64 bit. Es.1 - Risposta (a) La durata di un ciclo di clock è pari a 1/(100 MHz) = 10 ns Il segnale di READ sulla linea di controllo e contemporaneamente l indirizzo della locazione in cui risiede il dato sulla linea indirizzi (ADDRESS): 2 cicli di clock = 20 ns Lettura parola dalla memoria: 70 ns, cioè 7 cicli di clock Trasferimento della parola dalla memoria Calcolatori Elettronici 3 Calcolatori Elettronici 4
Es.1 - Risposta (a) Vista grafica del protocollo di lettura su bus sincrono: Es.1 - Risposta (b) 1. Se la parola da leggere ha ampiezza pari a 32 bit, è sufficiente un trasferimento: Trasferimento dei 32 bit della parola: 20 ns Tempo totale per leggere una parola: 20 ns + 70 ns + 20 ns = 110 ns Velocità di trasferimento: 4 B/110 ns 34.68 MB/s 2. Se la parola da leggere ha ampiezza pari a 64 bit occorre effettuare due trasferimenti successivi: Trasferimento dei primi 32 bit della parola: 20 ns Trasferimento dei restanti 32 bit della parola: 20 ns Tempo totale per leggere una parola di 64 bit: 20 ns + 70 ns + 2*20 ns = 130 ns Velocità di trasferimento: 8 B/130 ns 58.69 MB/s Calcolatori Elettronici 5 Calcolatori Elettronici 6 Es.2 - Arbitraggio BUS (28/9/2004) Si consideri il caso di un Bus di I/O sul quale devono essere collegate 8 periferiche esterne. a. Si ipotizzi che sulla parte di controllo del Bus si abbiano solo 2 segnali di controllo liberi da poter utilizzare per gestire l arbitraggio delle 8 periferiche da collegare. Descrivere la tecnica di arbitraggio utilizzabile in una tale situazione, disegnando un possibile schema di collegamento delle periferiche e spiegando chiaramente le implicazioni del suo utilizzo sulla gestione delle richieste di I/O delle periferiche. b. Nelle ipotesi di cui al punto precedente, sarebbe utilizzabile la tecnica di arbitraggio centralizzato con richieste indipendenti per ciascuna periferica? In caso di risposta negativa, cosa sarebbe necessario modificare per renderla utilizzabile? Es.2 - Risposta (a) Con soli 2 segnali liberi è possibile utilizzare la tecnica daisy chain che ha solo 2 segnali: request e grant. Ovviamente questa tecnica implica una gestione rigida delle priorità, che sono definite una volta per tutte. Calcolatori Elettronici 7 Calcolatori Elettronici 8
Es.2 - Risposta (b) Non è ovviamente possibile. Per renderla utilizzabile, bisognerebbe avere almeno 8x2=16 segnali di controllo liberi, 2 per ogni periferica. Si tratta infatti dell estensione del concetto di bus centralizzato con richieste, visualizzato nello schema sottostante, in cui il numero di festoni coincide con il numero di periferiche. Capitolo 7: Input/Output Richiami su modalità e indirizzamento I/O Esercizi: 1. Programmed I/O e DMA 2. DMA furto di ciclo Calcolatori Elettronici 9 I/O: Richiami Modalità di I/O: Programmed I/O Interrupt Driven I/O Direct Memory Access (DMA) Transparent DMA Block Transfer DMA Cycle Stealing DMA ( furto di ciclo ) Modalità di indirizzamento: Memory-mapped I/O Isolated I/O Es.1 - Programmed I/O e DMA L'ampiezza della linea dati del bus di un calcolatore è pari a 32 bit. La frequenza del clock della CPU è di 15 MHz. Tutte le istruzioni vengono eseguite alla velocità di 1 ciclo di clock, tranne le istruzioni di "LOAD" o "STORE" che hanno una durata pari a 2 cicli di clock. L'indirizzamento delle periferiche è realizzato mediante la tecnica del "memory-mapped I/O". a. Elencare le 4 istruzioni di CPU necessarie ad effettuare il trasferimento dati da una periferica alla memoria nel caso in cui i trasferimenti periferica-calcolatore vengano gestiti mediante I/O da programma. b. Calcolare la massima velocità di trasferimento (in bit/s) fra periferica e calcolatore che è possibile raggiungere effettuando i trasferimenti mediante I/O da programma. c. Calcolare la massima velocità di trasferimento dati (in bit/s) fra periferica e calcolatore nel caso in cui il trasferimento avvenga in DMA. Calcolatori Elettronici 11 Calcolatori Elettronici 12
Es.1 - Risposta (a) L'indirizzamento mediante "memory-mapped I/O implica che per la lettura/scrittura sulla periferica si utilizzino le stesse istruzioni per la lettura/scrittura da memoria principale. Pertanto le istruzioni di LOAD e STORE vengono usate sia per leggere/scrivere sulla memoria che sulla periferica. Il trasferimento dati da periferica a memoria mediante I/O da programma ha bisogno dei seguenti 4 passi: 1. LOAD dalla periferica al registro CPU (2 cicli di clock) 2. STORE da registro CPU a memoria (2 cicli di clock) 3. generazione indirizzo successivo (1 ciclo di clock) 4. conteggio dati da trasferire (1 ciclo di clock) Es.1 - Risposta (b) In totale dunque sono necessari 6 cicli di clock per trasferire un blocco di 32 bit, cioè si trasferisce un blocco con la frequenza di 15/6 MHz. La massima velocità di trasferimento è dunque pari a: (32 x 15 x 10 6 )/6 bit/s = 8 x 10 7 bit/s. Calcolatori Elettronici 13 Calcolatori Elettronici 14 Es.1 - Risposta (c) In DMA è possibile trasferire un blocco per ogni ciclo di clock in modalità block transfer. Pertanto la massima velocità di trasferimento è pari a: (32 x 15 x 10 6 ) bit/s = 48 x 10 7 bit/s. Es.2 - Programmed I/O e DMA Si consideri un calcolatore in cui la CPU esegue 10 5 istruzioni/s. L esecuzione di una istruzione richiede 5 cicli di clock, 3 dei quali tengono occupato il bus di sistema. Si ipotizzi che l 85% dell Instruction Rate sia usato dalla CPU per eseguire programmi che non contengono trasferimenti di I/O. L'ampiezza della linea dati del bus è pari a 32 bit. Si consideri il caso in cui il trasferimento dei dati avvenga mediante I/O da programma, con le seguenti 4 istruzioni: 1. LOAD parola dalla periferica al registro CPU; 2. STORE parola da registro CPU a memoria; 3. generazione indirizzo di memoria successivo; 4. conteggio dati da trasferire. Calcolatori Elettronici 15 Calcolatori Elettronici 16
Es.2 - Programmed I/O e DMA (a) a. Calcolare la massima frequenza di trasferimento dati ottenibile (espressa in KB/s) fra una periferica collegata al bus di sistema e la memoria principale. Soluzione Nel caso di trasferimento mediante I/O da programma, per trasferire una parola occorrono 4 istruzioni. La CPU è impegnata per l'85% del tempo a eseguire istruzioni che non coinvolgono l'i/o, dunque può usare solo il 15% del tempo per eseguire istruzioni di trasferimento dati con periferiche. In termini di istr./sec questo tempo è pari a: 0.15 x 10 5 istr./s = 1.5 x 10 4 istr./s. Dal momento che per trasferire una parola servono 4 istruzioni, la velocità di trasferimento è pari a: 1.5 x 10 4 istr./s / (4 istr./parola) = 3750 parole/s. La dimensione di una parola è pari a 32 bit (4 byte), da cui si ricava la velocità di trasferimento di: 3750 parole/s x 4 B/parola = 15000 B/s = 14.65 KB/s (N.B.: 1 KB = 1024 B) Calcolatori Elettronici 17 Es.2 - Programmed I/O e DMA (b) b. Calcolare la massima frequenza di trasferimento dati ottenibile (espressa in KB/s) nel caso in cui si usi la modalità transparent DMA. Si ipotizzi che una operazione di lettura/scrittura della memoria richieda un ciclo di clock. Soluzione Nel caso di transparent DMA posso trasferire i dati tutte le volte che il bus di sistema è libero. Nel caso in esame questo tempo è pari alla somma del 15% del tempo lasciato libero dall'esecuzione di istruzioni che non coinvolgono I/O, più i 2 cicli/istruzione in cui il bus è libero. Pertanto durante l'85% del tempo posso trasferire 2 parole/istr.: 0.85 x 2 parole/istr. x 10 5 istr./s = 1.7 x 10 5 parole/s Nel restante 15% del tempo posso trasferire 5 parole/istr.: 0.15 x 5 parole/istr. x 10 5 istr./s = 0.75 x 10 5 parole/s In totale, nel caso di trasferimento con DMA, la velocità totale di trasferimento è pari a: (1.7 + 0.75) x 10 5 parole/s = 2.45 x 10 5 parole/s 2.45 x 10 5 parole/s x 4 B/parola = 9.8 x 10 5 B/s = 957.03 KB/s Calcolatori Elettronici 18 Es.2 - Programmed I/O e DMA (c) c. Spiegare quali passi sostituiscono le istruzioni nel caso DMA. Risposta Il controller DMA esegue le operazioni di generazione indirizzi e conteggio dati trasferiti usando registri interni al controller oltre, ovviamente, a trasferire i dati dalla periferica alla memoria. Es.3 - DMA furto di ciclo (13/4/2000) Un modulo DMA trasferisce blocchi di dimensione 1 byte da una periferica alla memoria alla velocità di 9600 bps, usando la tecnica del furto di ciclo. Si considerino 6 cicli per l esecuzione di ogni istruzione. Se il microprocessore esegue istruzioni alla velocità di 1 MIPS, di quanto viene rallentato il microprocessore dai trasferimenti DMA? Calcolatori Elettronici 19 Calcolatori Elettronici 20
Es.3 - Risposta I dati vengono trasferiti dalla periferica alla memoria intercalando i trasferimenti DMA con il normale flusso di trasferimento delle istruzioni dalla memoria al processore (con velocità 1.000.000 istr/s). Il problema ci dice che un istruzione viene eseguita in 6 cicli di clock. Il DMA trasferisce i dati con una frequenza pari a: (9600 bit/s)/8 bit = 1.2 khz Pertanto in 1 secondo vi sono 1200 furti di ciclo. L equivalente numero di istruzioni è dato da: 1200/6 = 200 istruzioni La velocità di esecuzione scende dunque a 999800 istr/s Ciò corrisponde ad un rallentamento pari a: 200/1000000 = 0.0002, ovvero dello 0.02% Calcolatori Elettronici 21 Es.4 DMA furto di ciclo Un modulo DMA trasferisce blocchi della dimensione di 1 byte da una periferica alla memoria usando la tecnica del furto di ciclo. La durata di un ciclo di clock del bus e del processore coincidono. Si consideri la suddivisione in fasi mostrata in figura con gli istanti in cui è possibile fare un furto di ciclo (DMA breakpoints): DMA Breakpoints Calcolatori Elettronici 22 Es.4 DMA furto di ciclo Sapendo che il microprocessore esegue istruzioni alla velocità di 1 MIPS: 1. Calcolare il massimo numero di furti di ciclo al secondo. 2. Se la velocità di trasferimento effettiva è di 28800 bps, calcolare di quanto viene rallentato il microprocessore dai trasferimenti DMA. Es.4 - Soluzione 1. Il massimo numero è calcolabile ipotizzando che i 3 istanti in cui è possibile fare un furto di ciclo vengano usati sistematicamente. Quindi il numero di cicli per eseguire un istruzione passa da 6 a 9, causando un decremento dell instruction rate pari a 1/3 MIPS. Per calcolare il numero dei cicli rubati è sufficiente considerare il numero iniziale di cicli/istruzione richiesto e moltiplicarlo per il decremento dell instruction rate. N(furti/s) = (6 cicli/istr.)*(0.33 M istr/s) = 2*10 6 cicli/s Calcolatori Elettronici 23 Calcolatori Elettronici 24
Es.4 - Soluzione 2. Il numero di furti al secondo è facilmente calcolabile considerando che in ogni furto di ciclo viene trasferito 1B: 28800 bit/s = 3600 B/s = 3600 furti/s Poiché ci sono 6 cicli/istr. il numero di istruzioni al secondo sottratto al processore vale: N(istr./s) = 3600 / (6 cicli/istr.) = 600 istr./s Il decremento sarà quindi di (600 istr./s) / (1000000 istr./s) = = 0.0006 = 0.06 % Calcolatori Elettronici 25