Architettura dei calcolatori/Periferiche: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 151.15.254.10, riportata alla revisione precedente di Pietrodn |
|||
Riga 2:
==Periferiche==
In un sistema di elaborazione sono considerati
La struttura varia a seconda delle funzioni richieste alla periferica stessa; nei casi semplici deve solo mettere in comunicazione il processore con il mondo esterno con un numero limitato di linee di connessione e senza particolari requisiti di temporizzazione dei segnali.
In generale la porta parallela serve per trasferire dati bidirezionalmente tra un sistema di elaborazione ed il mondo esterno un byte alla volta; è costituita da linee per trasferimento dati e di sincronizzazione (sono linee multisegnali e necessitano di poca logica), possono essere con o senza handshake (le porte con handshake possono essere ottenute con pi\`u porte senza handshake).
Riga 12:
è tipicamente usata per connettere stampanti.
è simile alla porta parallela ma ha un minore numero di linee con temporizzazioni pi\`u complicate (almeno per il trasferimento di piccole unità di informazione); richiedono una rete sequenziale sincronizzata per essere gestite.
Per alcune applicazioni sono necessarie interfacce di I/O che garantiscano il trasferimento di informazioni con una cadenza costante; questo è necessario ogni volta che si ha un dispositivo che produce o consuma dati ad una velocità non controllabile dall'esterno: bisogna che sia rispettato un intervallo di tempo $\tau$ tra una transizione e l'altra.
Riga 31:
In un sistema di uso generale è comunque possibile pilotare periferiche con requisiti temporali stretti, a condizione che l'intervallo di pilotaggio $\tau$ non sia eccessivamente basso.
Le temporizzazioni sono ricavare da un
Il trasferimento di informazioni con cadenza costante si ottiene con due metodi diversi a seconda della frequenza con cui vanno effettuate le operazioni.
Nel caso di trasferimenti lenti di dati (con $\tau$ elevato rispetto alla frequenza del processore) è possibile sfruttare il meccanismo dell'interruzione.
Il segnale proveniente dal timer è usato per generare una richiesta di interruzione al processore, che risponde mandando in esecuzione la routine di interrupt che esegue i trasferimenti richiesti e termina.
Il ritardo con cui la routine dal momento in cui è generata l'interruzione va in esecuzione non è determinabile con precizione (ci possono essre interruzioni a priorità maggiore, la routine attualmente in esecuzione può non essere interrompibile,
Per compensare il jitter si inserisce un registro aggiuntivo all'uscita della periferica che prende il valore di uscita nel momento in cui arriva l'interruzione successiva (l'uscita del timer, oltre a generare l'interruzione, è collegata all'ingresso strobe del registro; è possibile anche inserire un invertitore nel collegamento per evitare il jitter anche nel primo semiperiodo oltre che nel secondo).
Riga 46:
Lo stato della periferica viene modificato con il programma di servizio dell'interruzione ed il trasferimento verso l'esterno è effettuato al successivo fronte in salita del timer; si introduce un ritardo nella produzione del dato (che deve essere anche maggiore del tempo $t_{propagation}$ del registro di uscita della periferica per evitare che il registro pilotato dal timer fotografi lo stato precedente)'
Il meccanismo dell'interruzione richiede l'effettuazione di un gran numero di operazioni (salvataggio dello stato del processore,
Per diminuire l'intervallo di pilotaggio della periferica si usano trasferimenti in DMA; questo riduce l'overhead del sistema ma si ha ancora un jitter in quanto è necessario un certo tempo per l'arbitraggio del bus tra processore e controllore DMA.
L'interfaccia è attiva ed il registro passa il dato se arriva $/DACK$ dal controllore DMA o viene selezionato (è necessario disabilitare le maschere delle periferiche quando si fanno trasferimenti DMA da I/O a memoria)'
==Periferiche con trasferimenti a blocchi==▼
Le periferiche che devono trasferire grandi quantità di dati sono pi\`u efficenti se si trasferiscono dati in blocchi di lunghezza fissa piuttosto che singoli byte; queste periferiche sono dotate di un controllore che trasferisce i dati dalla periferica ad una sua memoria dedicata che è anche accessibile dal processore ('''memorie dual-port'''), la memoria può essere mappata nello spazio di memoria o di I/O.▼
==Memorie dual-port mappate nello spazio di memoria==▼
▲Le periferiche che devono trasferire grandi quantità di dati sono pi\`u efficenti se si trasferiscono dati in blocchi di lunghezza fissa piuttosto che singoli byte; queste periferiche sono dotate di un controllore che trasferisce i dati dalla periferica ad una sua memoria dedicata che è anche accessibile dal processore (
Una memoria dual-port piccola rispetto allo spazio di indirizzamento del processore può essere completamente mappata nello spazio di memoria: processore e controllore accedono ad essa attraverso una circuiteria di controllo che effettua l'arbitraggio.
In questo caso la memoria è vista come memoria dal controllore ma come una periferica di I/O dal processore come alcune porte mappate nello spazio di I/O: questo consente di avere una memoria grande a piacimento ma complica il circuito di controllo che, per consentire il trasferimenti di un blocco a burst, deve avere tre porte nello spazio di I/O (buffer, indirizzo base ed indice) ed un contatore che provvede a generare gli indirizzi a partire dall'indirizzo base.
Questo metodo è usato per periferiche quali il controllore video, l'adattatore di rete, memorie di massa, interfacce per campionamento di segnali.
[[Categoria:Architettura dei calcolatori|Periferiche]]
|