Calcolatori elettronici/Introduzione alle memorie

Indice del libro

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

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).