Estratto del documento

Flip-flop

Flip-flop SRS

S R Q0 0 MEMORIA1 0 10 1 01 1 NO

Flip-flop JKJ

J K Q0 0 MEMORIA1 0 10 1 01 1 Q̅

Flip-flop DD

Q0 01 1

Flip-flop TT

Q0 Q1 Q̅ Se T=1, la frequenza di Q risulta la metà di quella di CLK

Contatori

Contatori asincroni

A ogni impulso di clock il valore di Q0 commuta; Q1 commuta sul fronte di discesa di Q0 ecc. Quindi la frequenza di Q1 è la metà di quella di Q0. Si realizza quindi un contatore che incrementa di 1 per ogni impulso di clock ricevuto. Il valore massimo è 2n n -> numero di flip-flop.

Contatori sincroni

Q0 commuta a ogni impulso di CLK, mentre Q1 a ogni ciclo di CLK per cui Q0 è 1, quindi ogni due. Q2 commuta quando (Q0 AND Q1) = 1.

Bus transceiver

Comprende il dispositivo per scrivere sul bus (driver) e per leggere dal bus (receiver). Collega i dispositivi al bus.

Tipi di segnali

  • Dati
  • Indirizzo
  • Controllo

I segnali possono anche passare sullo stesso bus grazie a un multiplexer.

Master e slave

Master invia le richieste di trasferimento e decide con chi comunicare. Slave risponde ai master.

Bus sincroni

I dispositivi lavorano alla stessa frequenza e non è necessario nessun metodo di sincronizzazione. La frequenza è stabilita dal più lento.

Bus asincroni

La velocità è variabile e dipendente dai processi di handshaking.

  1. Il master attiva BUS e pone dati.
  2. Il master attiva il segnale di controllo.
  3. Lo slave mette i dati letti su BUS.
  4. Lo slave attiva ACK.
  5. Dopo aver letto i dati, attiva il segnale di controllo e libera il BUS.
  6. Lo slave disattiva ACK e libera il BUS.

Bus arbitraggio

Dato che solo un dispositivo alla volta può essere master, devono essere definite delle regole di priorità.

Distribuito

Ogni modulo conosce le priorità e dà osetto al master priorità.

Centralizzato

C'è un dispositivo (arbitro) che decide chi è il master.

Daisy chaining

  1. Una unità (Dm) manda BUS REQUEST all'arbitro.
  2. L'arbitro attiva BUS GRANT su D1.
  3. Se D1 ha inviato le sue BUS REQUEST, attiva BUS BUSY, altrimenti passa BUS GRANT a D2 ecc.

Solo 3 segnali di controllo. Priorità fisso (dipende da come sono messe le unità). Non tollera guasti, lento per molte unità.

Polling

  1. L'unità attiva BUS REQUEST.
  2. L'arbitro sposta nel POLL COUNTER gli indirizzi delle unità in ordine di priorità.
  3. Se l'unità il cui indirizzo è nel POLL COUNTER ha fatto richiesta, attiva BUS BUSY e l'arbitro interrompe la scansione.

Tollerante a guasti di unità. Le priorità sono modificabili. Richiede log2 m + 2 segnali di controllo.

Richieste indipendenti

  1. L'unità m fa richiesta attivando BUS REQn.
  2. L'arbitro concede il BUS GRANT all'unità con priorità maggiore.
  3. L'unità attiva BUS BUSY.

Tollerante a guasti di unità. Priorità statiche delle unità. Richiede 2m + 1 segnali di controllo.

Processore

BUS esterno e BUS interno:

Fetch

Viene letto il codice dell'istruzione dalla memoria.

Execute

Il codice viene decodificato ed eseguito.

Stack

Struttura LIFO, modificabile con PUSH e POP. Lo stack pointer (SP) punta all’elemento più in alto. Lo stack permette di annidare procedure: al ritorno di una procedura si ritrovano i dati nell’ordine opposto a quello in cui sono stati messi.

8086

Registri

Registri dato

  • AX (accumulatore)
  • BX (base) può anche essere usato per gli indirizzi
  • CX (count) usato come contatore da LOOP
  • DX (data) contiene indirizzi di I-O per alcune istruzioni

Registri puntatore

  • IP (instruction pointer) punta l'istruzione da seguire
  • SP (stack pointer)
  • BP (base pointer) per accedere all'interno dello stack
  • SI e DI (source e destination index) sono usati come indici

Registri di segmento

  • CS indir del segmento di codice
  • DS indir del segmento di dati
  • ES di dati supplementari
  • SS di stack

Flag di condizione (parola di stato)

  • SF indica il segno dell'istruzione dell'operazione
  • ZF se il risultato è nullo, vale 0
  • PF vale 1 se il numero di 1 negli 8 bit meno significativi è pari
  • CF vale 1 se c'è un riporto nella somma o sottrazione
  • AF come il CF, sul bit 3
  • OF vale 1 se c'è stato overflow

Flag di controllo

  • DF indica la direzione di manipolazione di una stringa
  • IF se vale 0, impedisce gli interrupt esterni
  • TF abilita il trap

Pipeline

È un meccanismo composto da più stadi la cui esecuzione richiede un tempo costante e uguale; gli stadi lavorano in cascata. Il tempo di elaborazione è ridotto di un fattore N dove N è il numero di stadi.

BIU (Bus Interface Unit)

  • Gestisce le operazioni con l'esterno
  • Fetch delle istruzioni
  • Lettura e scrittura di operandi e risultati
  • Generazione degli indirizzi
  • Accodamento delle istruzioni

EU (Execution Unit)

Decodifica e esegue le istruzioni.

Esecuzione di istruzioni

Fetch

  1. Viene caricato il codice macchina dell'istruzione il cui indirizzo è nel PC.
  2. Incremento del PC.

Esecuzione

La CPU esegue 4 tipi di istruzioni che compongono operazioni complesse:

  • Prelievo di dati o istruzioni e caricamento in un registro
  • Scrittura di un dato da registro a memoria
  • Trasferimento di dati tra registri
  • Esecuzione di operazioni aritmetiche o logiche e memorizzazione del risultato

Ogni registro ha un indirizzo controllato da due segnali, Rin e Rout, verso il bus. Solo un registro alla volta può abilitare Rout.

MDR

Registro che contiene dati in ingresso/uscita alla CPU.

Prelievo di una parola dalla memoria

  1. MAR ← R1
  2. Attiva i segnali di lettura
  3. Attendi MFC (dato pronto sul bus esterno)
  4. MDR ← bus esterno
  5. R2 ← MDR

Memorizzazione di una parola in memoria

  1. MAR ← R1
  2. MDR ← R2
  3. Attiva i segnali di scrittura
  4. Aspetta MFC

Esecuzione di operazioni

Somma tra R1 e R2 in R3:

  1. Metto R1out e Yin
  2. Metto R2out e Zin
  3. Setto Zout e R3in

Gestione dispositivi

I/O programmato

Il processore gestisce tutte le periferiche, con continue interrogazioni (polling): poca coerenza da realizzare, poco efficiente.

Interrupt

Il dispositivo manda al processore un segnale quando ha bisogno di attenzione.

  • Il processore può svolgere altri compiti nell'attesa di periferiche lente.
  • La periferica ottiene l'attenzione quando necessario.

All'arrivo di una richiesta di interrupt:

  • Vengono salvati il PC e il registro di stato nello stack.
  • Viene eseguita una procedura apposita.

Gestione dell'interrupt

  • Linee di interrupt multiple: ogni dispositivo è gestito separatamente e ha un proprio pulsante di interrupt.
  • Polling: un solo pulsante di interrupt, quando viene attivato la CPU esamina tutti i dispositivi.
  • Interrupt vettorizzato: quando è attivato il pulsante di interrupt e la CPU è pronta a servirla, manda un segnale di INTERRUPT ACK, il dispositivo risponde con un indirizzo (nel bus dati). Il dispositivo indica il puntatore di servizio dell'interrupt (l'alloggiamento tra codice periferia e indirizzo della procedura è fatto appunto dalla tabella).

DMA

Metodo per trasferire dati senza occupare la CPU. Un DMA controller trasferisce dati da una periferia alla memoria o viceversa fungendo da master del BUS.

  1. La CPU carica in IOAR l'indirizzo del primo blocco di memoria e in DC il numero di dati (consecutivi).
  2. La periferia richiede al DMA controller il trasferimento.
  3. Il DMAC invia un DMA REQUEST alla CPU.
  4. Quando la CPU lo accoglie, rilascia il bus e risponde con DMA ACK.
  5. Il DMAC inizia a trasferire aggiornando DC e IOAR ad ogni parola.
  6. A seconda di come è gestito il trasferimento, possiamo avere delle pause (si riattivano DMA REQ e quindi DMA ACK e la CPU riprende il controllo del bus).
  7. Quando DC = 0, il trasferimento è terminato e invia un interrupt alla CPU.

Memorie

Memorie veloci -> prezzo più alto -> dimensione minore.

In ordine di velocità

  • Registri interni alla CPU, accesso: ns, al più qualche Mb realizzato con SRAM
  • Memoria principale, fino a qualche Gb, accesso: decine di ns accessibili alla CPU con indirizzi, DRAM
  • Memoria secondaria dimensioni molto maggiori, accesso: decine di ms accesso attraverso interfaccia, realizzata con dischi magnetici
  • Memoria off-line grandi dimensioni (Gb, anche Tb), accesso: decine di s

Velocità

  • Tempo di accesso (latenza): tempo tra il momento in cui un dato è richiesto e questo viene fornito.
  • Tempo di ciclo: tempo tra l'inizio di un accesso e quello massimo (> = a LATENZA).
  • Tasso di trasferimento: relativo con la quale richieste sono trattate; nel momento di accesso centrale è 1 / T_CICLO.

Accesso

  • Sequenziale: informazioni lette e scritte in un ordine definito.
  • Diretto: molti blocchi, ogni blocco è accessibile ma si può indicare a qual blocco accedere con un indirizzo.
  • Casuale: ogni unità ha un indirizzo.
  • Associativo: accesso in base alla comparazione del contenuto.

Refresh: necessario per mantenere un valore in alcune memorie a condensatori.

RAM

Bus

  • Linee di controllo
  • Indirizzo (ABUS)
  • Dato (DBUS)

Ogni cella può essere indirizzata. Tempo di accesso costante.

Lettura

  1. In ABUS si scrive l'indirizzo.
  2. In CBUS si specifica che si vuole leggere.
  3. In DBUS troveremo il dato che c'è da la memoria.

Scrittura

  1. In ABUS si scrive l'indirizzo.
  2. In CBUS si dice di scrivere.
  3. In DBUS si scrive il valore da memorizzare.

Controllo

  • Tipo di operazione
  • Quando ABUS è pronto
  • Quando DBUS è pronto (sia per lettura che scrittura)
  • Quando il sistema procede a un nuovo accesso

Dimensioni

Ogni memoria ha M parole e M bit per parola abbiamo quindi: log2M segnali per gli indirizzi N segnali di dato.

RAM - Vettore

Decodificatore indirizzi C1 C2 CM1 decoder da log2M a N N driver.

Matrice

Decoder righe Decoder colonne C1,1   C1,M CM,1   CM,M 2 decoder da log√M a √M 2√M driver.

Page mode

Per usare un solo ABUS, è possibile che sia la riga che la colonna giungano allo stesso ingresso in tempi diversi: allora esistono due segnali RAS e CAS che abilitano i registri rispettivi:

  • RAS: Registro indirizzi riga -- Decoder righe.
  • CAS: Registro indirizzi colonna -- Decoder colonne.

È inoltre possibile la PAGE MODE, avere l'accesso a celle nella stessa riga senza mandare ogni volta l'indirizzo della riga, che resta nel registro dato che RAS non viene attivato.

Statica

  • Ogni cella è un flip-flop.
  • Più veloci.
  • Più costose (e meno dense).
  • Più affidabili.

Dinamica

Attivando la linea di parola il condensatore è collegato alla linea di dato e legge o scrive il valore. Necessita di refresh frequente - Il condensatore tende a scaricarsi.

Codice di protezione

Permette di rilevare e correggere eventuali errori nella memoria. Es. codice di parità rileva errori di numero dispari, codici di Hamming correggono errori singoli.

Cache

Località dei riferimenti

Temporale: se all'istante t accedo alla cella c, è probabile che ci dovrò riaccedere entro t+d.
Spaziale: se all'istante t accedo alla cella di indirizzo i, è probabile che a t+d acceda a i+e.

Quindi, se a t carichiamo il blocco di i-a,i+b, per un certo periodo di tempo è probabile che il programma trovi tutto nella cache.

Struttura

Quando la CPU accede alla memoria, la cache:

  1. Intercetta l'indirizzo.
  2. Verifica se il blocco corrispondente è in cache.
  3. Se sì, lo manda alla CPU HIT.
  4. Se no, carica il blocco dalla memoria di cui fa parte MISS.

Il caricamento del blocco può avvenire sul momento (rallenta l'esecuzione) o dopo aver finito la parola (LOAD THROUGH).

Direct mapping

A ogni blocco della memoria corrisponde una linea di cache: K = i mod N.

  • Facile da implementare (si usano i bit meno significativi dell'indirizzo).
  • Se il programma accede spesso a due blocchi associati alla stessa linea, si ha un MISS per ogni accesso.

Indirizzo

Etichetta blocco parola: la parte dell’indirizzo che indica il blocco identifica la linea della cache. L'etichetta è il campo TAG e serve a verificare se al tag del dato corrisponde all'indirizzo di cache.

Associative mapping

Ogni blocco di memoria principale può stare in qualsiasi blocco di cache.

  • Massima flessibilità.
  • Molto difficile da implementare.

Set associative mapping

Le linee sono divise in S insiemi; ogni blocco di memoria principale è associato all'insieme K se K = i mod S, ma il blocco può stare in una qualsiasi linea dell'insieme K.

Algoritmo di rimpiazzamento

Indica come posizionare i blocchi nell'insieme (quali blocchi eliminare):

  • LRU (i meno recenti)
  • FIFO (il primo entrato)
  • LFU (il meno usato)
  • Random

Aggiornamento nella memoria principale

Le modifiche avviate in cache devono essere riportate alla memoria principale per non perdere i risultati dell'elaborazione.

Write-back

Per ogni blocco un DIRTY-BIT dice se il blocco è stato modificato. Annulli il blocco viene eliminato, se il dirty bit è settato, questo viene copiato nella memoria principale. Ciò allenta la lettura di alcuni blocchi quando c'è un MISS e un blocco deve essere copiato in memoria principale nei sistemi multi-CPU le cache possono avere valori inconsistenti.

Write-through

A ogni modifica viene aggiornata sia la cache che la memoria principale, ma si considera che le operazioni di scrittura sono molto meno frequenti di quelle di lettura.

Memorie ad accesso seriale

TEMPO DI ACCESSO = tS + tL + tD

  • tS - seek time = tempo necessario a posizionare correttamente la testina sulla traccia.
  • tL => tempo per far posare il settore sulla testina.
  • tD => tempo per leggere i dati.

Dato che tS e tL sono molto maggiori di tD, i dati sono raggruppati in blocchi e la loro lettura/scrittura avviene in blocchi.

RAID

Insieme di dischi per aumentare affidabilità e prestazioni:

  • 0 => i dati sono divisi tra i dischi, aumenta la velocità
  • 1 => i dati sono duplicati tra i dischi
  • 2 => alcuni dischi sono adibiti al contenimento di codici di controllo, a gruppi di dati
  • 3 => come il 2, ma con un solo disco che contiene la parità
  • 4 => i dischi lavorano indipendentemente, uno è per la parità
  • 5 => come il 4, ma la parità è distribuita tra tutti i dischi

CAV e CLV

CAV: velocità angolare costante, la densità dipende dalla traccia e le tracce sono concentriche. Si può accedere a ogni settore specificando traccia e settore.

CLV: velocità lineare costante, il laser di legge segue una traiettoria costante.

Memoria virtuale

Si tratta di una memoria fittizia composta da indirizzi logici attraverso i quali si passa a quelli fisici della memoria primaria o alla memoria secondaria. La traduzione di indirizzi è compito dell' MMU (memory management unit). La MMU, per ogni indirizzo logico, verifica se la parola è nella memoria principale; se sì, produce l'indirizzo fisico corrispondente, se no, dice al sistema operativo di caricare il blocco nella memoria principale. (PAGE FAULT) La memoria è suddivisa in pagine, quando c'è un page fault viene copiata dalla memoria l'intera pagina.

Unità di controllo

Cablate (hardwired)

  • Si tratta di circuiti sequenziali
  • Impossibile da modificare
  • Complessa per tabelle molto ampie
  • Molto veloce

Microprogrammate

  1. Si usa l'indirizzo contenuto in μPC per leggere nella MEMORIA DI MICROCODICE.
  2. La parola letta è memorizzata nel μIR.
  3. Il contenuto del μIR modifica i segnali di controllo per L'UNITÀ DI ELABORAZIONE e per il CIRCUITO DI SELEZIONE DELL'INDIRIZZO.
  4. Questa logica, in base anche all'IR, genera l'indirizzo della prossima istruzione, che finisce nel μPC.
  • Flessibile e facile da modificare
  • Più lenta
  • Più costose
Anteprima
Vedrai una selezione di 6 pagine su 21
Calcolatori elettronici - Appunti teoria Pag. 1 Calcolatori elettronici - Appunti teoria Pag. 2
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti teoria Pag. 6
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti teoria Pag. 11
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti teoria Pag. 16
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti teoria Pag. 21
1 su 21
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Cero di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Torino o del prof Sonza Reorda Matteo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community