Slide di Università su Unità 2: Le Memorie. Il Pdf, una presentazione di Informatica, esplora le diverse tipologie di memoria, primaria e secondaria, il ciclo di esecuzione di un'istruzione e il funzionamento della memoria cache, inclusi cache hit e miss.
Mostra di più50 pagine
Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
La memoria è la parte del sistema di elaborazione che memorizza, in modo per- manente o temporaneo, dati e istruzioni.
La memoria primaria o centrale è realizzata con tecnologia a semiconduttore ed è quella con cui la CPU interagisce direttamente.
Le memorie secondarie o di massa, invece, servono per archiviare in modo permanente dati e programmi. Dispongono di una grande capacità di archivia- zione, dell'ordine dei terabyte, e sono basate su diverse tecnologie: magnetiche (dischi e nastri), ottiche (DVD) e a stato solido (SSD).
La memoria primaria o centrale può essere:
Da un punto di vista circuitale l'elemento minimo della memoria RAM è il flip flop, un circuito che può risiedere in due stati stabili (bistabile).
Il dato (0/1) in ingresso (D) viene trasferito in uscita (Q) in corrispondenza dell'impulso di sincronizzazione (T).
L'uscita si mantiene in questo stato (dato memorizzato) fino a una nuova varia- zione del segnale in T, anche se l'ingresso D cambia.
T Q D Tabella di verità D |Q 0 0 1 1
Per capacità si intende la quantità di byte che la memoria è in grado di memorizzare.
Tutte le informazioni sono codificate con sequenze di bit.
Un bit è un simbolo che codifica lo stato fisico di un segnale Il byte è l'unità di misura della capacità della memoria e corrisponde a 8 bit.
word (parola di 16 bit) bit nibble 0 0 1 1 1 001 0 0 1 1 1 0 0 1 0 0 1 11001 byte byte byte
È importante notare che la capacità della memoria, essendo espressa in multipli di byte, è sempre una potenza di 2 1 kB non corrisponde a 1000 byte, ma a 1024, che è la potenza di 2 più vicina a 1000
La memoria centrale, può essere vista come suddivisa in celle di memoria ciascuna contenente uno o più byte.
Indichiamo con locazione di memoria (o cella di memoria) una parte di memoria che può essere identificata.
Con indirizzo di una locazione di memoria indichiamo la posizione che quella locazione di memoria occupa nella memoria stessa.
In genere, la prima locazione di memoria ha indirizzo 0.
La memoria può essere paragonata a una cassettiera: un cassetto è una locazione, referenziata tramite un'etichetta o tramite la sua posizione. La cassettiera serve per contenere qualcosa.
Il numero del cassetto identifica la sua posizione, mentre il contenuto è ciò che è riposto all'interno del cassetto.
42 43 49 48 56 55 54
La memoria centrale è suddivisa in celle o locazioni che possono essere identi- ficate tramite il loro indirizzo, cioè la posizione della cella nella memoria. Tut- te le celle hanno la stessa dimensione. La memoria è poi organizzata in parole (word). Ogni parola è formata da 1 o più byte. L'indirizzo di memoria è associato a una unità indirizzabile che in genere è il singolo byte, mentre la parola è riferita all'organizzazione della memoria e quindi alla dimensione dei dati.
In genere le parole sono di 8, 16, 32, 64 bit, e sono trasferite alla CPU tramite il bus dati.
Indirizzo 0 Indirizzo 1 Indirizzo 2 Indirizzo 3 Parola
Per indirizzo assoluto (o fisico) si intende la posizione di una locazione di memoria a partire dalla cima della memoria
0 1 2 3 4 locazione di indirizzo assoluto 4 5 6 Per indirizzo relativo (o logico) si intende la posizione di una locazione di memoria rispetto a un'altra. Per esprimere un indirizzo relativo occorrono dunque due numeri: l'indirizzo della locazione di riferimento (base) e la distanza da essa (spiazzamento, offset)
0 1 2 base 3 4 5 locazione di indirizzo assoluto 5 e relativo (2, 3) 6 Ogni locazione ha un unico indirizzo assoluto, ma più indirizzi relativi
Quando la CPU deve utilizzare una loca-zione di memoria, carica il suo indirizzo sulle linee del bus indirizzi. Da ciò deriva che l'indirizzo più grande che può essere espresso dipende dalla dimensione del bus indirizzi.
Il numero delle linee di indirizzo influenza la dimensione massima della memoria
Random Access Memory letteralmente significa «memoria ad accesso casuale», il tempo necessario per accedere a una locazione di memoria è indipendente dalla sua posizione.
La dimensione della locazione di memoria è strettamente legata alla dimensione del bus dati.
Indirizzo di memoria Contenuto di memoria 0000000000000000 11001101 0000000000000001 11001001 0000000000000010 00010100 0000000000000011 00101010 0000000000000100 00101010 0000000000000101 00101000 0000000000000110 00101000 0000000000000111 00100111 ... ... 1111111111111111
Le locazioni sono disposte in una matrice (quadrata o rettangolare) strutturata in righe e colonne, in cui ogni locazione occupa una posizione identificata dal numero di riga e dal numero di colonna.
Per attivare la cella di memoria è necessario un decodificatore, un circuito logi- co il cui scopo è riconoscere l'indirizzo per poter accedere, in lettura o scrittura, alle diverse caselle disposte nella matrice.
Un decodificatore è un circuito logico con n ingressi e 2" uscite in cui, per ogni configurazione di ingresso, una sola uscita è attiva.
L'indirizzo di n bit, presente nel MAR e viene posto nel bus indirizzi, È ripartiti in m righe e k colonne (n=m+k).
2k colonne € MEMORIA 2m m bit Decodifica riga cella di memoria 2ªrighe indirizzi n bit 2k k bit Decodifica colonna CS (selezione circuito) R/W buffer di i/o e controlli Dati in uscita Dati in ingresso
Un «decodificatore di riga» seleziona la riga e un «decodificatore di colonna» sele- ziona la colonna. La presenza contemporanea dell'indirizzo sull'address bus e dei segnali di abilitazione del chip (pin CS - Chip Select) e del segnale di Read/Write (pin R/W) del control bus, permettono di abilitare la cella in lettura o scrittura.
2k colonne € MEMORIA 2m m bit Decodifica riga cella di memoria 2ªrighe indirizzi n bit > 2k k bit Decodifica colonna CS (selezione circuito) buffer di i/o e controlli R/W Dati in uscita Dati in ingresso
Ciclo di lettura ciclo di lettura della memoria T1 T2 T3 CLK bus indirizzi indirizzi di memoria MREQ RD WR bus dati dati in innut
Ciclo di scrittura ciclo di scrittura della memoria, T1 T2 T3 CLK bus indirizzi indirizzi di memoria MREQ RD WR bus dati dati in output
la porta logica dello stadio di uscita di un dispositivo che si collega al bus (buffer), aggiunge ai due stati classici (0 e 1) un terzo stato (three-state o tri-state) che rende l'uscita un circuito aperto e per- mette all'unità di «staccarsi» dal bus. In realtà l'uscita del buffer assume una im- pedenza molto elevata tale da comportarsi come un circuito aperto
I enable Enable Input Output Stato 0 0 alta impedenza input enable output input output 0 1 alta impedenza input output enable 1 0 0 input output 1 1 1 input enable output enable
Dispositivo A Dispositivo B enable A enable B linee del bus collegamenti al bus enable C buffer Dispositivo C
La bidirezionalità del bus dati si ottiene accoppiando due buffer, come illustrato nella Figura 14, abilitando separatamente i due buffer. Consente di selezionare l'invio o la ricezione dei dati sul bus da parte della RAM o di periferiche.
enable input doppia direzione output il buffer inferiore è soggetto a un segnale di abilitazione opposto a quello superiore, assicurando che il bus possa essere solo in lettura o in scrittura.
Consideriamo, per semplicità, una CPU con bus indirizzi a 16 linee e bus dati a 8 linee. Ipotizziamo che le locazioni di memoria siano di 1 byte e i registri di uso generale a 1 byte. Supponiamo che la CPU debba eseguire l'istruzione assembly: MOV R1,[0042h] Trasferisci il contenuto della locazione di memoria di indirizzo 0042h, nel registro R.
Supponiamo che l'istruzione sia codificata in binario con 3 byte.
00110110 codice operativo: indica che cosa deve fare l'istruzione (in questo caso il codice operativo è puramente di fantasia, ma ogni macchina ha il suo set di codici ammessi, le istruzioni che è in grado di interpretare)
00000000 01000010 indirizzo di memoria da cui prelevare il dato da trasferire
Il programmatore scrive MOV R1,[0042h] e l'assemblatore, un apposito software lo traduce in linguaggio binario:
001101100000000001000010.
Supponiamo che nella locazione 0042h sia contenuto il valore F4h (11110100).
Indirizzi Contenuto RAM hex bin 0000 0000000000000000 0001 0000000000000001 0002 0000000000000010 00110110 0003 0000000000000011 00000000 Istruzione da eseguire 0004 0000000000000100 01000010 0005 0000000000000101 00010100 0006 0000000000000110 00100010 Prossima istruzione da eseguire ... ... 0042h 0000000001000010 11110100 Dato da trasferire
22