vuoi
o PayPal
tutte le volte che vuoi
Polling
Una unità fa richiesta del bus (BUS REQUEST), attendendo che il bus sia libero (BUS BUSY)
L'arbitro 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 l'arbitro interrompe la scansione.
Richiede 2+log(n) segnali di controllo per gestire n unità
La gerarchia delle unità può essere cambiata modificando la sequenza di scansione
Il sistema è tollerante ad un eventuale guasto in una unità.
Richieste indipendenti
L'unità i-esima fa richiesta del bus (BUS REQUEST i), attendendo che il bus sia libero (BUS BUSY)
L'arbitro 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).
Richiede 2*n+1 segnali di controllo per gestire n unità.
segnali di controllo per gestire n unità+ le priorità dei dispositivi dipendono dai meccanismi implementati dall'arbitro+ il sistema può tollerare ad un eventuale guasto in una unità.
Memory-Mapped I/O
I registri dei dispositivi di I/O sono connessi come le normali celle di memoria. Lo spazio di indirizzamento per la memoria è quindi ridotto. Si può fare accesso ai registri delle periferiche utilizzando tutte le istruzioni ed i modi di indirizzamento utilizzabili per accedere alla memoria. È la soluzione adottata dal Motorola 68000. La CPU usa l'istruzione MOV sia per trasferimenti con la Memoria, sia con l'I/O. È necessario avere un circuito che riconosca l'indirizzo e abiliti la memoria o l'I/O.
Isolated I/O
Gli spazi di indirizzamento per la memoria e per le porte di I/O sono separati, e sono attivati alternativamente da appositi segnali (ad esempio IO/M nell'8086). Per accedere alle porte di I/O si
devono utilizzare apposite istruzioni (IN e OUT).
I/O programmato
In questo caso la gestione dei dispositivi di I/O è totalmente demandata alla CPU.
Ogni dato viene prima trasferito dal buffer associato alla periferica ad un registro interno della CPU, e poi immagazzinato in memoria (o viceversa). Lo spostamento di ciascun dato implica l'esecuzione di almeno un'istruzione da parte della CPU.
Quando l'I/O programmato è basato sulla ripetizione di un test sul registro di stato per verificare quando il programma può procedere oltre, si parla di polling.
Interrupt
Un segnale di input esterno asincrono informa il microprocessore che un dispositivo richiede di essere servito. La CPU interrompe l'esecuzione del programma corrente e salta all'esecuzione di una procedura di servizio dell'interruzione (Interrupt Service Routine o ISR). La gestione del servizio dei dispositivi di I/O tramite interrupt permette un migliore efficienza.
nell'esecuzione della elaborazione da parte della CPU.
Interrupt vettorizzato
Esiste un solo piedino per le richieste di Interrupt. Un apposito circuito (Interrupt Controller) riceve le richieste di interrupt (IRQx) e le inoltra al processore. Quando la CPU è pronta a servire la richiesta di interrupt proveniente dall'Interrupt Controller (INTREQ), invia un segnale di INTACK. L'Interrupt Controller pone sul data bus un codice di identificazione del dispositivo che ha richiesto Interrupt. La CPU usa il codice per determinare l'indirizzo della procedura di servizio, usandolo come indice per un vettore degli indirizzi delle procedure di servizio (Interrupt Vector Table).
RAS e CAS
Per ridurre il numero di segnali di ingresso, le RAM organizzate a matrice talvolta prevedono che i bit di indirizzo vengano forniti in due fasi:
- in una prima fase vengono forniti i segnali che vanno al decodificatore di riga, accompagnati dal segnale RAS (Row Address Strobe)
- in
Un'altra fase vengono forniti i segnali che vanno al decodificatore di colonna, accompagnati dal segnale CAS (Column Address Strobe).
RAM - Statiche / Dinamiche
- memorie statiche:
- la singola cella corrisponde ad un flipflop
- memorie dinamiche:
- la singola cella corrisponde ad un condensatore e ad un transistor
- l'informazione è memorizzata sotto forma di carica del condensatore
- richiedono un rinfresco periodico dell'informazione
- la lettura è di tipo distruttivo (Destructive Read-Out)
Le RAM statiche sono (rispetto a quelle dinamiche):
- più veloci
- più costose
- più semplici da utilizzare
- più affidabili
Tempo di accesso a disco
Il tempo di accesso tA è determinato da:
- tS: tempo per posizionare la testina sulla traccia opportuna (seek time); è nullo se ogni traccia ha la sua testina
- tL: tempo per posizionare la testina sul settore, all'interno della traccia
(latencytime)•tD: tempo per leggere serialmente i dati (data-transfertime). Si ha quindi che tA= tS+ tL+ tD
CAV(ConstantAngularVelocity): è la soluzione adottata sui dischi magnetici; il disco è organizzato in tracce concentriche, e le tracce esterne hanno minore densità lineare di memorizzazione; ogni settore è accessibile direttamente specificando traccia e numero di settore;
CLV(ConstantLinearVelocity): è la soluzione adottata per i CD musicali, CD-ROM e DVD; il raggio laser scandisce le fosse/piazzole a velocità lineare costante (con velocità angolare quindi variabile), seguendo una traiettoria a spirale; all'inizio di ogni settore, un identificatore specifica il valore corrente del minuto/secondo/blocco; l'accesso casuale è più laborioso.
Località dei riferimenti: La presenza di una cache può migliorare le prestazioni di un sistema per via della località dei riferimenti osservabile.
accesso (miss) La cache è una memoria più piccola e più veloce rispetto alla memoria principale. Viene utilizzata per ridurre i tempi di accesso alla memoria principale e migliorare le prestazioni del sistema. La cache sfrutta il principio della località temporale e spaziale per migliorare l'efficienza. La località temporale si riferisce al fatto che se un programma accede a una cella di memoria in un istante t, è molto probabile che acceda nuovamente alla stessa cella entro l'istante t + D. La località spaziale si riferisce al fatto che se un programma accede a una cella di memoria di indirizzo X in un istante t, è molto probabile che entro l'istante t + D acceda anche alla cella di indirizzo X + e. La cache funziona intercettando gli accessi del processore alla memoria principale. Ogni volta che il processore esegue un accesso alla memoria, la cache verifica se il blocco di memoria contenente la parola richiesta è presente nella cache. Questo controllo viene effettuato utilizzando i tag associati ai blocchi di memoria nella cache. Se il blocco è presente nella cache (hit), la parola richiesta viene estratta dal blocco e fornita al processore al posto della memoria principale. Questo riduce il tempo di accesso e migliora le prestazioni del sistema. Se il blocco non è presente nella cache (miss), la cache provvede a caricare l'intero blocco di memoria contenente la parola richiesta. In questo modo, il blocco sarà disponibile per futuri accessi e si ridurranno i tempi di accesso successivi. In conclusione, la cache è una componente fondamentale per migliorare le prestazioni dei sistemi informatici, sfruttando il principio della località temporale e spaziale per ridurre i tempi di accesso alla memoria principale.parte (miss).Direct Mapping
Ogni blocco i della memoria principale è messo in corrispondenza fissa con una linea k della cache. La funzione di trasformazione è k = i mod N dove N è il numero di linee della cache.
Vantaggi: la funzione è facilmente implementabile in hardware (i bit meno significativi dell'identificativo del blocco individuano la linea di cache)
Svantaggi: se il programma fa accesso frequentemente a 2 blocchi corrispondenti alla stessa linea della cache, ad ogni accesso si verifica un miss.
Associative Mapping
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 (di solito si adotta una memoria associativa).
Set Associative Mapping
- le linee della cache sono suddivise in S insiemi
- un blocco i è associato all'insieme k se k=i mod S
Il blocco i può essere messo in una qualunque delle linee dell'insieme k. Se S = N (N è la dimensione della cache) si ha il direct mapping; se S=1 si ha l'associative mapping.
Write-Back: Per ogni blocco nella cache viene tenuto aggiornato un flag (dirty bit), che ricorda se il blocco è stato modificato da quando è stato caricato nella cache. Quando un blocco viene eliminato dalla cache ed il dirty bit è 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 della memoria dopo eventuali system failure può non essere possibile.
Write-through: Ogni volta che la CPU esegue un'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.
Unità di controllo micro programmate
- Si esegue una lettura dalla Memoria di Microprogramma, utilizzando il contenuto del Micro Program Counter (mPC) come indirizzo.
- La parola corrispondente viene caricata nel Micro Instruction Register (mIR).
- Il contenuto del mIR pilota i segnali di controllo per l'unità di elaborazione e per la logica di generazione dell'indirizzo della successiva microistruzione.
- Tale logica genera un nuovo indirizzo, sulla base anche dei segnali provenienti dall'esterno (ad esempio dall'Instruction Register in una CPU). Tutte le operazioni vengono eseguite in un solo colpo di clock.
Microistruzioni orizzontali
Nel caso più semplice (microistruzioni orizzontali), le microistruzioni contengono un bit per ogni segnale di controllo; in tal caso si ottiene:
- massimo parallelismo nell'esecuzione: si possono eseguire contemporaneamente
moltemicrooperazioni
- massima velocità di esecuzione: la microistruzione può essere trasformata in segnali di controllo senza bisogno di manipolazioni. Esistono tuttavia alcune controindicazioni:
- la lunghezza delle microistruzioni può divenire eccessiva
- talune combinazioni di valori dei segnali di controllo possono non verificarsi mai.
Microistruzioni verticali
Contengono le informazioni da inviare ai segnali di controllo in maniera codificata.
Hanno una lunghezza più ridotta. Sono meno adatte a descrivere micro operazioni contemporanee. Sono anche possibili soluzioni intermedie, in cui ogni gruppo di segnali di controllo corrisponde ad un gruppo di bit (Control Field) della singola microistruzione, il cui valore è codificato.
DMA – DMA Controller
È il metodo preferito quando si devono trasferire grosse moli di dati. Una circuiteria apposita (DMA Controller) provvede ad eseguire il trasferimento di