18 Aug 2019 - 07:37--=[Computer]=----=[Computer]=----=[Musica]=----=[Musica]=----=[Geometra]=----=[Geometra]=----=[Download]=----=[Download]=----=[Link]=----=[Link]=----=[Articoli]=----=[Articoli]=--
Indice Computer Computer/ Hardware/ Memoria centrale/


La memoria è la componente del calcolatore in cui vengono immagazzinati e da cui vengono acceduti i dati e i programmi, la memoria centrale o principale è la memoria che può essere acceduta direttamente dal processore.
Una memoria è composta da celle o locazioni di memoria; ogni cella di memoria è in grado di memorizzare una parola di memoria, ovvero, una sequenza di bit di lunghezza fissata; ogni cella è caratterizzata da:
1) un indirizzo, che è un numero che identifica la cella e ne consente l'accesso;
2) un valore, che è la sequenza di bit memorizzata dalla cella.
Una memoria fornisce operazioni di lettura e scrittura.


Struttura di una memoria centrale

L'immaggine mostra la struttura semplificata di una memoria centrale.
Celle


Caratteristiche delle memorie centrali

Le caratteristiche principali di una memoria centrale sono:
1) capacita, il numero di bit che possono essere memorizzati, misurati in byte e multipli di byte;
2) velocità d'accesso, che misura la velocità di esecuzionedelle operazioni di lettura/scrittura;
3) volatilità, le memorie RAM (random access memory) possono essere sia lette che scritte ma i dati memorizzati vengono persi allo spegnimento del calcolatore, le memorie ROM (read only memory) permettono solo la lettura dei dati che vi sono memorizzati in modo permanente.


Codici di correzione degli errori

Le memorie dei calcolatori fanno a volte degli errori a causa di disturbi sulla linea elettrica o per altri motivi. Per prevenire questi errori alcune memorie usano codici di identificazione e di correzione degli errori. L'uso di questi codici consiste nell'aggiungere dei bit a ogni parola della memoria in maniera opportuna. Quando si legge una parola dalla memoria i bit in eccesso vengono controllati per vedere se si è verificato un errore.


Memoria cache

Storicamente le CPU sono sempre state più veloci delle memorie. Man mano che sono migliorate le memorie sono migliorate anche le CPU e quindi si è mantenuta la differenza. In effetti, poiché è possibile mettere sempre più circuiti in un solo chip, i progettisti di CPU hanno sfruttato la possibilità per incrementare il pipelining e la superscalarità, rendendo così le CPU ancora più veloci. Dopo che la CPU ha inviato una richiesta alla memoria, la parola che serve non arriverà che dopo molti cicli di CPU. Più è lenta la memoria, più cicli dovrà fare la CPU. Vi sono due modi per affrontare questo problema. Il modo più semplice consiste nel far partire i READ di memoria quando si incontrano, continuando ad eseguire, ma fermando la CPU se un'istruzione cerca di usare la parola della memoria prima che questa sia arrivata. Più è lenta la memoria, più spesso si presenterà questo problema e più alta la penalità quando questo si verifica. Ad esempio, se il ritardo della memoria è di 10 cicli è molto probabile che una delle seguenti 10 istruzioni cercherà di usare il risultato della lettura.
L'altra soluzione consiste nell'avere macchine che non possono essere fermate (messe in stallo), ma che richiedono ai compilatori di generare un codice che non usi il risultato della lettura finché non arriva.
La memoria piccola e veloce si chiama cache, dove le parole di memoria più usate vengono tenute in una cache. Quando la CPU ha bisogno di una parola, prima controlla nella cache e solo se la parola non c'è va alla memoria centrale. Se gran parte delle parole si trovano nella cache, i tempi di accesso medi si possono ridurre notevolmente. Quindi dipendono dalla quantità di parole che si trovano nella cache.
Le istruzioni di un programma vengono lette da locazioni consecutive della memoria e gran parte del tempo di esecuzione viene passato in loop, (ciclo) in cui un numero limitato di istruzioni vengono eseguite ripetutamente.
Gli accessi in memoria eseguiti a corti intervalli di tempo tendono a usare solo una piccola parte della memoria totale viene chiamata principio di località ed è alla base di tutti i sistemi di cache. Quando viene indirizzata una parola, quella parola e alcune di quelle vicine vengono trasportate dalla memoria principale alla cache, in modo che la volta seguente la parola sia accessibile più velocemente.
Se una parola viene letta o scritta k volte in un breve intervallo di tempo, il calcolatore richiederà un accesso alla memoria lenta (principale) e poi k - 1 accessi alla memoria veloce (cache). Più grande è k e più migliorano le prestazioni.
Siamo in grado di formalizzare questo calcolo introducendo c, il tempo di accesso alla cache, m, il tempo di accesso alla memoria, e h, l'hit ratio (percentuale di successo), che rappresenta la frazione di tutti gli accessi che sono soddisfatti dalla cache e il miss ratio (percentuale di insuccesso) che è 1 - h.

Il tempo di accesso medio = c + (1 - h) m.

Se h -> 1, tutti gli accessi si possono soddisfare leggendo la cache e il tempo di accesso si avvicina a c. Se h -> 0, viene richiesto ogni volta un accesso alla memoria e quindi il tempo di accesso si avvicina a c + m. In alcuni sistemi l'accesso alla memoria si può iniziare insieme alla ricerca nella cache in modo che, in caso non si trovi la parola nella cache, il ciclo di memoria sia già iniziato. Questa strategia richiede però che la memoria possa essere fermata in caso la parola si trovi nella cache e questo rende attivazione più complicata.

Bus

Utilizzando il principio di località come guida le memorie principali e le cache vengono divise in blocchi di dimensioni fisse. Questi blocchi all'interno della cache vengono comunemente chiamati cache line (linea di cache). Quando si verifica un cache miss tutta la cache line, non solo la parola richiesta, viene trasferita alla memoria centrale alla cache. Con dimensioni di riga di 64 byte, ad esempio, un accesso all'indirizzo di memoria 260 trasferirà la riga che comprende i byte da 256 a 319 in una cache line. Il funzionamento in questo modo è più efficiente che leggere parole singole, perché è più veloce leggere k parole tutte insieme che una parola k volte. Se le cache line contengono più di una parola, il numero di cache line è minore e quindi vi è meno overhead (meno errori nel trasferimento delle parole).
La progettazione delle cache svolge un ruolo sempre più importante per le CPU ad altre prestazioni. Un problema è rappresentato dalle dimensioni della cache. Più la cache è grande più migliorano le prestazioni. Un secondo problema è rappresentato dalle dimensioni della cache line. Una cache da 16KB si può suddividere in righe da 1K di 16 byte, righe da 2K di 8 byte e altre combinazioni. Un terzo problema riguarda la progettazione è se le istruzioni e i dati vengono tenuti nella stessa cache o in cache diverse. Una cache unificata (istruzioni e dati usano la stessa cache) è più semplice ed equilibra automaticamente i fetch delle istruzioni e i fetch dei dati. In ogni caso, si tende ad usare una split cache (con istruzioni in una cache e i dati in un'altra). Questa configurazione si chiama anche architettura Harvard che aveva memorie diverse per istruzioni e dati.
L'unità di fetch delle istruzioni deve accedere alle istruzioni allo stesso momento in cui l'unità di fetch dell'operando deve accedere ai dati.


Packaging e tipi di memoria

Dagli inizi della memoria a semi conduttori fino all'inizio degli anni '90 la memoria veniva prodotta, acquistata e installata su chip singoli.
Ora si usa un sistema diverso. Un gruppo di chip tipicamente 8 o 16, viene montato su una piccola scheda stampata e viene venduto come un'unità. Questa unità si chiama SIMM (Single Inline Memory Module) se la fila di connettori si trova da un lato della scheda oppure DIMM (Dual Inline Memory Module) se i connettori si trovano su ambedue i lati della scheda.

Ram

( non fate caso alla bruttezza di questa immaggine, andavo di fretta... :-) )

Una configurazione SIMM tipica potrebbe comprendere otto chip, di cui ognuno con 32 Mbit (4 MB), sulla SIMM. L'intero modulo avrebbe così 32 MB. Molti calcolatori hanno spazio per quattro moduli portando così la capacità totale a 128 MB quando si usano SIMM di 32 MB. Attualmente il metodo standard per il packaging della memoria è costituito da DIMM. Ogni DIMM è dotata da 84 connettori per parte ricoperti d'oro per un totale di 168 connettori. Una DIMM è in grado di fornire 64 bit di dati in una volta. Le capacità tipiche di una DIMM raggiungono 64 MB e li superano. Una DIMM di dimensioni inferiori, chiamata SO-DIMM (Small Outline DIMM) viene utilizzata nei calcolatori notebook. Sia SIMM che DIMM sono a volte dotate di un bit di parità o di correzione dell'errore,ma, poiché la media degli errori di un modulo è un errore ogni 10 anni, gran parte dei calcolatori general pourpose non comprendono circuiti per l'individuazione e la correzione degli errori.
--=[Home page]=----=[Home page]=----=[Forum]=----=[Forum]=----=[lingua]=----=[lingua]=----=[Statistiche]=----=[Statistiche]=----=[Cerca in questo sito]=----=[Cerca in questo sito]=----=[Info sul copyright]=----=[Info sul copyright]=----=[Scegli le impostazioni che preferisci]=----=[Scegli le impostazioni che preferisci]=----=[Scrivi al webmaster]=--
vPHPvHTMLvCSS