Esercitazione
Transcript
Esercitazione
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 • Es.1 - Risposta (a) 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 • • 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): • Lettura parola dalla memoria: • Trasferimento della parola dalla memoria – 2 cicli di clock = 20 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: – 70 ns, cioè 7 cicli di clock 1. Parole di memoria di dimensione pari a 32 bit; 2. Parole di memoria di dimensione pari a 64 bit. Calcolatori Elettronici 3 Calcolatori Elettronici 4 Es.1 - Risposta (b) Es.1 - Risposta (a) • Vista grafica del protocollo di lettura su bus sincrono: 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 20 ns + 70 ns + 20 ns = 110 ns Velocità di trasferimento: 4 B/110 ns ≈ 34.68 MB/s parola: 2. Se la parola da leggere ha ampiezza pari a 64 bit occorre effettuare due trasferimenti successivi: – – – – Calcolatori Elettronici 5 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 Es.2 - Arbitraggio BUS (28/9/2004) Es.2 - Risposta (a) 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? • Calcolatori Elettronici Calcolatori Elettronici • 7 6 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. 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 Es.1 - Programmed I/O e DMA I/O: Richiami • • Modalità di I/O: – Programmed I/O – Interrupt Driven I/O – Direct Memory Access (DMA) 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. • Transparent DMA • Block Transfer DMA • Cycle Stealing DMA (“furto di ciclo”) • Modalità di indirizzamento: – Memory-mapped I/O – Isolated I/O Calcolatori Elettronici 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". 11 Calcolatori Elettronici 12 Es.1 - Risposta (b) 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. 2. 3. 4. • – (32 x 15 x 106)/6 bit/s = 8 x 107 bit/s. LOAD dalla periferica al registro CPU (2 cicli di clock) STORE da registro CPU a memoria (2 cicli di clock) generazione indirizzo successivo (1 ciclo di clock) conteggio dati da trasferire (1 ciclo di clock) Calcolatori Elettronici 13 Es.1 - Risposta (c) • 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: Calcolatori Elettronici Es.2 - Programmed I/O e DMA 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 106) bit/s = 48 x 107 bit/s. • Si consideri un calcolatore in cui la CPU esegue 105 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. 2. 3. 4. Calcolatori Elettronici 14 15 LOAD parola dalla periferica al registro CPU; STORE parola da registro CPU a memoria; generazione indirizzo di memoria successivo; conteggio dati da trasferire. Calcolatori Elettronici 16 Es.2 - Programmed I/O e DMA (a) Es.2 - Programmed I/O e DMA (b) 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: 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.15 x 105 istr./s = 1.5 x 104 istr./s. Dal momento che per trasferire una parola servono 4 istruzioni, la velocità di trasferimento è pari a: 1.5 x 104 istr./s / (4 istr./parola) = 3750 parole/s. Nel restante 15% del tempo posso trasferire 5 parole/istr.: • In totale, nel caso di trasferimento con DMA, la velocità totale di trasferimento è pari a: – 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 0.85 x 2 parole/istr. x 105 istr./s = 1.7 x 105 parole/s • 0.15 x 5 parole/istr. x 105 istr./s = 0.75 x 105 parole/s (1.7 + 0.75) x 105 parole/s = 2.45 x 105 parole/s 2.45 x 105 parole/s x 4 B/parola = 9.8 x 105 B/s = 957.03 KB/s Calcolatori Elettronici 18 Es.2 - Programmed I/O e DMA (c) Es.3 - DMA “furto di ciclo” (13/4/2000) 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. • Calcolatori Elettronici Calcolatori Elettronici 19 • • 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? 20 Es.3 - Risposta Es.4 – DMA “furto di ciclo” • 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: • • Pertanto in 1 secondo vi sono 1200 furti di ciclo. L’equivalente numero di istruzioni è dato da: • • La velocità di esecuzione scende dunque a 999800 istr/s Ciò corrisponde ad un rallentamento pari a: • • 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): – (9600 bit/s)/8 bit = 1.2 kHz – 1200/6 = 200 istruzioni – 200/1000000 = 0.0002, ovvero dello 0.02% Calcolatori Elettronici DMA Breakpoints 21 Es.4 – DMA “furto di ciclo” • 22 Es.4 - Soluzione 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. Calcolatori Elettronici Calcolatori Elettronici 23 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*106 cicli/s 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