Calcolatori elettronici/Introduzione alle memorie

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
CopertinaCalcolatori elettronici/Copertina
  1. L'evoluzione dei sistemi di elaborazioneCalcolatori elettronici/L'evoluzione dei sistemi di elaborazione
  2. Il progetto di circuiti logiciCalcolatori elettronici/Il progetto di circuiti logici
  3. I processoriCalcolatori elettronici/I processori
  4. Architettura 8086Calcolatori elettronici/Architettura 8086
  5. Unità di controlloCalcolatori elettronici/Unità di controllo
  6. Introduzione alle memorieCalcolatori elettronici/Introduzione alle memorie
  7. Le memorie ad accesso casualeCalcolatori elettronici/Le memorie ad accesso casuale
  8. Le memorie cacheCalcolatori elettronici/Le memorie cache
  9. Le memorie ad accesso serialeCalcolatori elettronici/Le memorie ad accesso seriale
  10. La memoria virtualeCalcolatori elettronici/La memoria virtuale
  11. La gestione dei dispositivi input/outputCalcolatori elettronici/La gestione dei dispositivi input/output
  12. Intel 8255Calcolatori elettronici/Intel 8255
  13. Intel 8259Calcolatori elettronici/Intel 8259
  14. I busCalcolatori elettronici/I bus
  15. Le architetture a pipelineCalcolatori elettronici/Le architetture a pipeline
  16. Assembler 8086
IntroduzioneCalcolatori elettronici/Introduzione
  1. Informazioni generaliCalcolatori elettronici/Informazioni generali
  2. Istruzioni di trasferimento datiCalcolatori elettronici/Istruzioni di trasferimento dati
  3. Istruzioni aritmeticheCalcolatori elettronici/Istruzioni aritmetiche
  4. Istruzioni per il controllo del flussoCalcolatori elettronici/Istruzioni per il controllo del flusso
  5. Istruzioni per la manipolazione dei bitCalcolatori elettronici/Istruzioni per la manipolazione dei bit
  6. Le procedureCalcolatori elettronici/Le procedure
  7. Istruzioni per il controllo del processoreCalcolatori elettronici/Istruzioni per il controllo del processore
  8. Formato delle istruzioni macchina, tempi di esecuzioneCalcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

Accanto al processore e alle periferiche vi è un sotto-sistema di memoria. Si deve cercare un compromesso tra:

  • prestazioni, ovvero il tempo di accesso a dati e istruzioni da parte del processore;
  • costo.

Siccome la velocità dei processori raddoppia ogni anno e mezzo mentre quella delle memorie (in particolare i colpi di clock di attesa a ogni accesso) ogni dieci, gli accessi in memoria penalizzano sempre di più le prestazioni di processori veloci.

Livelli di memorie[modifica]

Piramide dei supporti di memorizzazione.

Le memorie sono caratterizzate dalla località dei riferimenti (= accessi): le applicazioni non accedono uniformemente all'intera memoria, ma statisticamente nella finestra temporale l'esecuzione delle istruzioni rimane limitata entro una certa zona della memoria (su istruzioni vicine), e analogamente la lettura/scrittura di dati interessa per un certo tempo solo alcuni dei dati. Perciò la maggior parte degli accessi in memoria non avviene in celle isolate, ma a un blocco di celle di memoria consecutive:

  • località temporale: se all'istante il programma accede a una cella di memoria, è probabile che nell'istante successivo acceda di nuovo alla stessa cella;
  • località spaziale: se all'istante il programma accede alla cella di memoria all'indirizzo , è probabile che nell'istante successivo acceda alle celle vicine all'indirizzo .

L'accesso allo stack è esclusivamente locale: le celle vengono possono essere accedute solo in modo consecutivo tramite le operazioni di push e pop.

Si possono quindi ottimizzare le prestazioni della memoria suddividendola in più livelli: le memorie di livello superiore, più piccole ma più veloci e costose per bit, sono destinate al blocco di dati e istruzioni su cui l'applicazione sta operando correntemente. Si deve però u­sare un meccanismo efficiente per posizionare i dati e le istruzioni nel livello corretto.

Al primo livello si trovano i registri, che costituiscono la memoria interna del processore: sono realizzati con RAM statiche e sono estremamente costosi.

All'interno della modulo RAM si distinguono una memoria cache veloce e la memoria principale vera e propria, realizzata con RAM dinamiche. Altre memorie cache sono utili all'interno del processore o montate sulla scheda madre.

La memoria secondaria è molto più capiente ma molto più lenta (es. dischi fissi). L'accesso è molto più complesso: il programma non può accedervi direttamente, ma richiede la chiamata a procedure offerte dal sistema operativo.

Memorie off-line come le chiavette richiedono anche operazioni meccaniche per l'accesso (es. inserimento nella porta USB).

Parametri[modifica]

Costo[modifica]

Più aumenta la velocità più aumenta il costo. Quando bisogna minimizzare le dimensioni fisiche (es. SoC), si somma il costo di progetto.

Prestazioni[modifica]

Tempo di accesso[modifica]

Il tempo di accesso (o latenza) è il tempo richiesto per soddisfare la richiesta dell'utente di lettura o scrittura:

  • lettura: è il tempo che intercorre tra l'istante in cui il processore fornisce l'indirizzo e l'istante in cui la memoria fornisce l'MFC, che è il segnale di controllo che avvisa che il dato è stato letto;
  • scrittura: è il tempo che intercorre tra l'istante in cui il processore fornisce il dato e l'istante in cui la memoria riceve il dato.

Un'efficiente gestione dei livelli di memoria riduce i tempi di accesso: i dischi magnetici e ottici hanno infatti un elevato tempo di accesso a causa di limitazioni meccaniche.

Alla fine dell'accesso non è detto che la memoria sia già pronta per iniziare un altro ciclo, cioè per leggere/scrivere un nuovo dato.

Tempo di ciclo[modifica]

Il tempo di ciclo è il tempo che intercorre tra un ciclo di accesso e l'altro, cioè tra l'istante in cui la memoria principale riceve la richiesta di lettura/scrittura e l'istante in cui la memoria risulta pronta per una nuova lettura/scrittura. Ad esempio, nella scrittura è necessario aspettare che la memoria, dopo aver ricevuto il dato dal processore, lo scriva internamente. Il tempo di ciclo è quindi più lungo del tempo di accesso, o al più uguale.

Tasso di trasferimento[modifica]

L'accesso alle memorie secondarie non avviene a singoli byte ma a blocchi (dell'ordine di kilobyte), perché si devono effettuare delle operazioni meccaniche preliminari di preparazione che richiedono un primo tempo di accesso per avviare la lettura/scrittura del blocco. Pertanto si deve cercare di minimizzare il numero degli accessi sfruttando il più possibile l'accesso a blocchi → il tasso di trasferimento di una memoria secondaria è la velocità di lettura sequenziale del blocco, e si misura in bit per secondo (bps).

Altri parametri[modifica]

  • consumo
  • portabilità
  • dimensione

Modi di accesso[modifica]

  • accesso casuale: (es. RAM) ogni byte ha un indirizzo, e il tempo di accesso è lo stesso per qualsiasi byte;
  • accesso sequenziale: (es. nastri) il tempo di accesso dipende da quanto l'ordine di accesso segue l'ordine in cui sono memorizzati i da­ti;
  • accesso diretto: (es. disco) ogni blocco ha un indirizzo, e l'accesso è casuale per l'individuazione del blocco e sequenziale all'interno del blocco stesso;
  • accesso associativo: a ogni parola è associata una chiave binaria; le memorie ad accesso associativo sono molto costose.

Conservazione dei dati[modifica]

L'alterabilità è la possibilità di modificare la memoria: le ROM non hanno alterabilità, le RAM sì.

La volatilità è l'incapacità di mantenere i dati memorizzati alla rimozione dell'alimentazione.

In una memoria con tecnologia Destructive Readout, i dati dopo che vengono letti vengono cancellati dalla memoria → vanno persi se non vengono riscritti successivamente in memoria.

Alcune memorie dinamiche hanno bisogno periodicamente di operazioni di refreshing, cioè di lettura e immediata riscrittura di tutti i dati, affinché non vadano persi.

Le memorie possono avere dei guasti, cioè delle differenze di comportamento da quello previsto; comprendono mancanze di risposta o bit scritti con valore sbagliato (per cause come le radiazioni). I guasti permanenti persistono a ogni tentativo, e non sono più riparabili; i guasti transitori capitano una volta sola. Le frequenze di guasto si dicono rispettivamente Mean Time To Failures (MTTF) e Mean Time Between Failures (MTBF).