Calcolatori elettronici/Introduzione alle memorie

Da WikiAppunti.
Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è A6. Introduzione alle memorie.
Gtk-go-back-ltr.svg  A5. Unità di controllo Gtk-home.svg  Calcolatori elettronici A7. Le memorie ad accesso casuale  Gtk-go-forward-ltr.svg

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

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

3 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 t il programma accede a una cella di memoria, è probabile che nell'istante successivo t+D acceda di nuovo alla stessa cella;
  • località spaziale: se all'istante t il programma accede alla cella di memoria all'indirizzo X, è probabile che nell'istante successivo t+D acceda alle celle vicine all'indirizzo X+e.

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

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

8 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 12 una memoria cache veloce e 9 la memoria principale vera e propria, realizzata con RAM dinamiche. Altre memorie cache sono utili all'interno del processore o montate sulla scheda madre.

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

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

Parametri[modifica]

Costo[modifica]

15 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]

17 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]

18 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]

19 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]

  • 27 consumo
  • portabilità
  • dimensione

Modi di accesso[modifica]

  • 21 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]

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

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

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

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

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

Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è A6. Introduzione alle memorie.
Gtk-go-back-ltr.svg  A5. Unità di controllo Gtk-home.svg  Calcolatori elettronici A7. Le memorie ad accesso casuale  Gtk-go-forward-ltr.svg