Memoria (informatica)
parte del computer destinata a conservare i dati nel tempo Da Wikipedia, l'enciclopedia libera
parte del computer destinata a conservare i dati nel tempo Da Wikipedia, l'enciclopedia libera
La memoria, in informatica, è un elemento di un computer o di un suo sottosistema e ha il compito di garantire la persistenza dei dati e\o delle istruzioni dei programmi[1]. Esistono diversi tipi di memoria e la loro realizzazione fisica dà vita ai vari supporti di memorizzazione esistenti.
La memorizzazione di informazioni in memoria e il loro successivo recupero sono funzioni fondamentali nei processi di elaborazione dei dati. La capacità dei supporti di memoria elettronici di immagazzinare grandi quantità di dati in poco spazio e la velocità con cui è possibile prelevare un'informazione fa parte delle motivazioni chiave per lo sviluppo dell'elettronica, portando per esempio alla nascita dei database moderni. È anche possibile inserire ed eliminare programmi da una stessa memoria. Ciò fa sì che un computer possa teoricamente eseguire infiniti programmi nell'arco della sua esistenza, rendendo possibile una macchina di Turing con una memoria di capienza finita.
Una memoria può essere considerata astrattamente come una sequenza finita di celle in cui ogni cella contiene una sequenza finita di bit, normalmente gestiti a gruppi di otto detti byte. Pertanto lo spazio fisico della memoria può essere immaginato come una sequenza di posizioni, ognuna contenente un byte. Ogni posizione è individuata da un preciso indirizzo di memoria, normalmente espresso tramite un numero intero positivo. Ad oggi tra le tecnologie che implementano questo modello astratto, le più diffuse sono la memoria elettronica, la memoria magnetica e la memoria ottica.
L'architettura di von Neumann, che rappresenta il modello semplificato di calcolatore, mostra come vengono impiegate le memorie. Una macchina di Von Neumann è divisa in una parte destinata alle elaborazioni, detta processore, ed una parte destinata alla memorizzazione, detta memoria centrale. La memoria centrale contiene sia i dati su cui il processore opera, sia i programmi che forniscono le istruzioni che il processore deve effettuare.
Più in particolare, le operazioni che la CPU può fare sulla memoria di un computer sono fondamentalmente le seguenti:
Per parlare indifferentemente di lettura o di scrittura, si usa il termine accesso. Per esempio, per indicare che una memoria è veloce sia in lettura che in scrittura, si dice che ha un basso tempo di accesso. Mentre l'operazione di cancellazione dei dati in memorie volatili in realtà non esiste in quanto più propriamente si può parlare di sovrascrittura dei dati, é diverso invece il concetto di cancellazione per il caso delle memorie non volatili dove, in base alle tecnologia utilizzata, ogni locazione può necessitare di una sequenza di inizializzazione del settore chiamata più propriamente cancellazione. Le memorie EEPROM ad esempio hanno semplicemente dei tempi lunghi di cancellazione del singolo byte rispetto alla lettura e scrittura, invece per le memorie flash la cancellazione avviene in blocchi di pagine scrivibili chiamati settori; successive letture dei bit dopo una cancellazione si osserva che i dati hanno tutti lo stesso valore, di norma il valore "1" binaro e la scrittura permette di invertire lo stato del bit a "0" binario, ma non da "0" a "1", rendendo necessaria un nuovo ciclo di cancellazione e scrittura. Le periferiche SSD contengono soffisticati controller al fine di ottimizzare i cicli di scrittura e rendere la memoria simile e a un disco rigido, ma non senza complicazioni.
La memoria informatica si può classificare secondo vari criteri:
Nell'architettura dei calcolatori, si distinguono due tipi di memoria: la memoria primaria, che lavora a più diretto contatto con il processore, costituita fondamentalmente da memoria RAM, memoria ROM, memoria Cache, e la memoria secondaria di cui maggiori rappresentanti sono gli hard disk, ma anche supporti rimovibili come dischi floppy, CD, DVD, nastri magnetici, memorie flash di ogni tipo ed altro ancora.
Le memorie per computer possono usare varie tecnologie che forniscono prestazioni e costi molto variabili. Spesso per le memorie veloci ma dall'alto costo unitario si usa l'espressione "memoria centrale" o "memoria primaria", mentre per le memorie dal basso costo unitario ma lente si usa l'espressione "memoria di massa" o "memoria secondaria".
Collegata alla scheda madre tramite connettori chiamati socket ed alla CPU tramite il BUS di sistema, la memoria primaria, chiamata anche memoria centrale o memoria principale, contiene dati ed istruzioni prelevati dalla memoria di massa in attesa che questi siano a loro volta prelevati ed elaborati dal microprocessore, lavorando dunque in maniera strettamente accoppiata con esso ed essendo quindi assimilabile ad una memoria di transito o appoggio.
Molto spesso si tratta di memoria RAM e memoria cache e nelle moderne architetture dei processori è spesso incorporata nella scheda CPU o direttamente nel chip del processore stesso. È una parte importante del computer in quanto dalle sue dimensioni in termini di capacità di immagazzinamento dipende la quantità massima di dati che possono essere prelevati e di conseguenza elaborati dal processore in condizioni di monotasking e multitasking, ed è quindi considerata a tutti gli effetti un parametro prestazionale del computer stesso. Qualora la memoria primaria venga esaurita molti sistemi di elaborazione moderni sono in grado di implementare il cosiddetto meccanismo della memoria virtuale come estensione provvisoria della memoria primaria.
Per realizzare una memoria principale vengono normalmente utilizzate tecnologie a semiconduttore (cioè vengono utilizzati circuiti integrati a base di silicio).
Tale memoria è costituita da numerosissime celle di memoria, dispositivi bistabili, capaci cioè di assumere due stati stabili alternativi attraverso i quali è possibile memorizzare la quantità minima di informazione (1 bit). Le operazioni che possono essere effettuate su questo componente sono due: lettura (load) e scrittura (store). Poiché nella realtà quotidiana le scelte possibili in vari casi sono molte più di due, un bit non è più sufficiente a rappresentarle e pertanto si è pensato di unire più celle di memoria in registri di memoria. Se con un solo bit è possibile ottenere solo due diversi stati, con due celle (2 bit) è possibile rappresentare 22 alternative, con l'associazione di 3 celle (3 bit) 23 alternative, e così via... In particolare, la dimensione del registro più diffusa è quella da 8 bit. L'unione di 8 bit forma infatti 1 byte di memoria, il primo multiplo del bit, il quale può rappresentare fino a 256 possibili combinazioni diverse (28). In un registro di memoria le operazioni di lettura/scrittura avvengono contemporaneamente su tutte le celle facenti parte del registro. In memorie con registri da 1 byte, quindi, vengono lette 8 celle alla volta.
Ogni registro di memoria è denotato da un indirizzo.
Nell'operazione di lettura sulla memoria principale la CPU assume una posizione master rispetto alla memoria che è lo slave. I due componenti sono collegati tra loro dal bus di sistema.
Il processo consiste essenzialmente nella seguente sequenza di operazioni:
MAR, PC e MDR sono registri speciali dell'unità centrale della macchina.
La scrittura consiste principalmente nelle seguenti operazioni:
La memoria centrale è organizzata come una tabella di celle, ciascuna delle quali è denotata da un indirizzo (celle che contengono una sequenza di bit; ogni bit può rappresentare l'informazione 0 oppure 1 tramite un diverso stato elettrico). Ogni cella ha una dimensione prefissata e gli indirizzi delle celle variano tra 0 e n, dove n è una potenza di 2.
Le operazioni che la memoria può effettuare sono due: lettura (load) e scrittura (store).
Bisogna distinguere tra vari tipi di memorie primarie, a seconda della funzione svolta e delle loro caratteristiche peculiari. Di seguito vengono elencate quelle più importanti.
La fase di trasferimento da memoria di sistema a memoria cache viene attuata da un apposito circuito che prende il nome di MMU (Memory Management Unit). La MMU svolge anche il compito di gestione virtuale della memoria.
Inoltre c'è da far notare che a causa della dispersione della carica del condensatore, di capacità estremamente piccola, vi è bisogno di un rinfresco continuo dell'informazione. A questo compito è dedicato un canale del circuito di DMA che ad intervalli regolari (153 ms) deve necessariamente rinfrescare l'intera memoria del sistema per evitare la perdita irrimediabile dei dati e quindi il collasso di funzionamento del computer.
Una particolare versione di memorie dinamiche viene utilizzata per la gestione dei video. In questi dispositivi si sfrutta l'azione del refresh, precedentemente richiamata per gestire le informazioni che dovranno periodicamente essere inviate al video evitando di passare quindi attraverso la CPU che renderebbe molto più lento il trasferimento dei dati.
La tecnologia utilizzata attualmente per la realizzazione di memoria video è la GDDR (Graphics Double Data Rate).
La memoria secondaria, chiamata anche memoria ausiliaria o memoria di massa, è un'unità che si aggiunge alla memoria primaria (o centrale) dell'elaboratore per accrescerne le capacità di memorizzazione. Consiste in una classe di dispositivi che non sono posti a diretto contatto con il processore. Di conseguenza i dati in essi contenuti non vengono persi una volta spento il processore stesso.
Qui sotto sono elencate le varie categorie di memorie secondarie:
Un altro tipo di memorie secondarie, però ancora in fase di sviluppo, sono le memorie olografiche. Queste nuove tecnologie olografiche di archiviazione, avranno il pregio di poter memorizzare i dati non su una superficie (come fanno i supporti attuali) ma su un volume: queste nuove memorie saranno dunque caratterizzate da una elevata capacità di archiviazione ed in più da tempi di accesso brevi.
Tra le varie idee, il modo più promettente per archiviare più immagini olografiche sullo stesso mezzo è utilizzare differenti angoli di divergenza tra i due laser. Cambiando l'angolo di incidenza del raggio di lettura è possibile infatti leggere pagine diverse. Ci sono però alcune problematiche che ostacolano la realizzazione di queste nuove memorie; le più importanti sono:
Il motivo principale che spinge i ricercatori alla realizzazione di queste memorie, è che la registrazione di dati su media magnetici ed ottici arriverà velocemente a scontrarsi con i limiti fisici dei supporti e quindi le memorie, che ora sono adeguate, potrebbero non essere più sufficienti per le necessità future.
La tipica memoria può essere sia letta che scritta. Questi dispositivi sono detti memorie a lettura-scrittura.
Tuttavia sono utilizzate anche memorie che vengono scritte solo in fase di inizializzazione, e per le quali non è possibile la scrittura nell'uso normale. Tale inizializzazione può essere effettuata in modo incrementale dalla stessa apparecchiatura con cui vengono riletti i dati scritti. Questi dispositivi sono detti memorie scrivibili una sola volta, o WORM (Write Once, Read Many).
Alternativamente, può essere necessario scrivere tutti i dati con un'apposita apparecchiatura esterna prima di poter usare la memoria in lettura. Questi dispositivi sono detti memorie a sola lettura, o ROM (Read-Only Memory).
Ecco gli esempi più diffusi per ognuno dei tre suddetti tipi:
In base alla capacità di memorizzare in maniera permanente i dati si distinguono due tipi di memoria:
I difetti della volatilità sono i seguenti:
Nonostante i loro difetti, le memorie volatili sono molto utilizzate, in quanto hanno tempi di accesso molto inferiori a quelli di altre memorie.
Per le memorie a lettura-scrittura, il tempo di lettura è normalmente vicino al tempo di scrittura, per cui si parla genericamente di tempo di accesso. Per le memorie scrivibili una sola volta, la scrittura può essere molto più lenta della lettura; in tal caso, dato che la memoria verrà letta molte volte, si considera come più significativo il tempo di lettura.
In generale, il costo unitario (cioè per byte) delle memorie cresce al crescere della velocità di lettura. Pertanto, la classificazione per velocità di lettura coincide sostanzialmente con la classificazione per costo unitario.
In base a tale criterio, si ha la seguente gerarchia: