• Non ci sono risultati.

Le due operazioni eseguibili sul banco sono:lettura, ovvero si prelevano i m bit memorizzati in una parolascrittura, ovvero si memorizzano in una parola m bit

N/A
N/A
Protected

Academic year: 2021

Condividi "Le due operazioni eseguibili sul banco sono:lettura, ovvero si prelevano i m bit memorizzati in una parolascrittura, ovvero si memorizzano in una parola m bit"

Copied!
19
0
0

Testo completo

(1)

Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate

Architettura degli elaboratori

Memoria

Marco Tarini

Dipartimento di Scienze Teoriche e Applicate marco.tarini@uninsubria.it

Banco di Memoria

Un blocco funzionale capace di memorizzare un certo numero m di parole di un certo numero n di bit ciascuna

Capacità totale (in bit!): m x n

Spesso espressa in byte: dividere per 8, ovviamente

Indirizzamento:

serviranno k bit per esprimere un indirizzo, con 2k= m

cioè k = log2n

Le due operazioni eseguibili sul banco sono:

lettura, ovvero si prelevano i m bit memorizzati in una parola scrittura, ovvero si memorizzano in una parola m bit

Memoria

Architettura degli elaboratori - 19 -

(2)

Banco di memoria: considerazioni

Le strutture interne delle memorie sono molto varie; sono disponibili numerose tecnologie di memoria

Il modo più naturale per realizzare una memoria è costruire una matrice di bistabili, completandola con reti combinatorie di controllo per gestire l’accesso alle parole (come già visto per il register file)

Funzionalmente, un banco di memoria è molto simile ad un register file Detto altrimenti, un register file è un banco di memoria

di capienza piccolissima, es 32x32 = 1024 bit

Le capienze tipiche di un banco di memoria sono molto superiori:

da 105a 1011bit

(migliaia, milioni o svariati miliardi di bit)

Avremo bisogno di ottimizzare e semplificare i circuiti

(spesso, sacrificando efficienza e semplificando le funzionalità) Costruiamo banchi di memoria grandi

con componenti di memoria più seplici

Memoria

Architettura degli elaboratori - 20 -

Banco di memoria: considerazioni

Prima semplificazione: riduciamo il numero di bus il banco di registri visto aveva tre «bus»:

due di uscita (da cui leggere i contenuti attuali)

e uno di ingresso (da cui immettere i contenuti da memorizzare) Un componente di un banco di memoria più semplice ha due soli bus:

uno di ingresso e uno di uscita

(3)

Es: un componente di memoria da 32x64 bit con 1 bus di uscita e 1 bus di entrata

Memoria

Architettura degli elaboratori - 22 -

Porta di accesso (in lettura e scrittura) al banco di momoria

indirizzo Dato in

CK (clock)

componente

32x64 bits

64 5

Dato out 64

Banco di memoria da 32 x 64 bit possibile implementazione

Memoria

Architettura degli elaboratori - 23 -

CK

64 64

R0 U

L I

R1 U

L I

64

R2 U

L I

64

R3 U

L I

64

R30 U

L I

64

R31 U

L I

D E C

32 31 30

64

64

29 28 2

ind 5

MUX

dato in

dato out

(4)

Banco di memoria ad un bus solo

Il tipico banco di memoria ha uno solo bus:

da un banco, eseguiamo una sola operazione alla volta, lettura oppure scrittura

Come implementare un bus bidirezionale?

E’ necessaria una nuova porta (per pilotaggio delle uscite del componente) che consenta la NON interferenza fra le uscite e le entrate nel bus: il tri-state buffer

Inoltre, per costruire banchi di memoria grandi vogliamo unire le uscite di 2 o più componenti in un unico bus

Come garantire la non interferenza fre le uscite dei vari componenti?

Stessa soluzione: il tri-state buffer

Memoria

Architettura degli elaboratori - 24 -

Tri-State Buffer (buffer a tre stati)

È il circuito elementare modellabile come un contatto a tre posizioni:

in stato di bassa impedenza consente di avere in uscita o il livello alto (1) o il livello basso (0)

in stato di alta impedenza (Z) isola elettricamente l’uscita

quando un apposito ingresso di controllo E (Enable) non è attivo, il gate forza lo stato di alta impedenza

I U

E

E I U

0 0 Z

0 1 Z

1 0 0

1 1 1

(5)

Funzionamento

Memoria

Architettura degli elaboratori - 26 -

I U

E

I U

1

1 1 1 1

I U

E

I U

0

X Z X Z

I U

E

I U

1

0 0 0 0

interruttore chiuso

interruttore chiuso

interruttore aperto

stato di alta impedenza 0 oppure 1

ingresso di controllo

Nota: un tri-state buffer

è molto diverso da una porta AND

Memoria

Architettura degli elaboratori - 27 -

A 0

0

B 1

B

$!&@£$!

Circuito non corretto!

A 0

Z

B 1

B

B

Circuito corretto A e B valgono 0 oppure 1

non leggibile se B=1 !

(6)

Nota: il valore Z (alta impedenza) è molto diverso da 0

1: passa corrente a (relativamente) bassa tensione 0: passa corrente a (relativamente) alta tensione Z: non passa corrente (è isolato)

Per misurare la tensione, devo avere corrente se faccio confluire due cavi con 0 e 1 in un cavo, ottengo un cavo illeggibile / rumoroso / casuale se faccio confluire due cavi con 0 e Z in un cavo, ottengo un cavo con 0

se faccio confluire due cavi con 1 e Z in un cavo, ottengo un cavo con 1

se faccio confluire due cavi con Z e Z in un cavo, ottengo un cavo con Z

Memoria

Architettura degli elaboratori - 28 -

Tri-State Buffer : uso tipico OE (Output Enable)

DISPOSITIVO A input

output

bus di input

bus di output

DISPOSITIVO B input

output

DISPOSITIVO C input

output

OE (C)

OE (B)

OE (A)

CORE

(7)

Tri-State Buffer : uso tipico CS (Chip Select)

Memoria

Architettura degli elaboratori - 30 -

DISPOSITIVO A input

output

bus di input

bus di output

DISPOSITIVO B input

output

DISPOSITIVO C input

output

OE (C)

OE (B)

OE (A)

CS (C)

CS (B)

CS (A)

CORE

CS (Chip Select) e OE (Output Enable)

Memoria

Architettura degli elaboratori - 31 -

DISPOSITIVO A input

output

bus di input

bus di output

DISPOSITIVO B input

output

DISPOSITIVO C input

output CORE

(8)

Tri-State Buffer : uso tipico bus bidirezionali, di input/output

Memoria

Architettura degli elaboratori - 32 -

bus di input / output

CORE

DISPOSITIVO A input output

DISPOSITIVO B input output

DISPOSITIVO C input output

Tri-State Buffer : uso tipico bus bidirezionali, di input/output

bus di input / output

CORE

DISPOSITIVO A input output

DISPOSITIVO B input output

DISPOSITIVO C input output

(9)

CS e OE

CS - Chip Select:

isola elettricamente il dispositivo quando non è selezionato (i suoi input, e spesso, anche i suoi output)

quando si manda il segnale sul bus, solo il dispositivo con CS=1 ascolta, gli altri è come se non ci fossero

per il dispositivo con CS è 1 è come essere l’unico sul bus OE - Output Enable:

isolare elettricamente le uscite del dispositivo (ma non le entrate) utile per condividere tanti dispositivi in uscita su uno stesso bus in pratica, consente di implementare un mutex

economico e scalabile (ma non tanto efficiente)

Memoria

Architettura degli elaboratori - 34 -

DEC

MUX

bus

Un banco di memoria

con un solo bus di input/output

Memoria

Architettura degli elaboratori - 36 -

Porta di accesso (in lettura e scrittura) al banco di memoria

RD e WR = comandi di lettura e scrittura

RD = 1 e WR = 0: eseguiamo una lettura RD = 0 e WR = 1: eseguiamo una scrittura RD = 0 e WR = 0: il banco di memoria è inattivo RD = 1 e WR = 1: NO, errore

k

m

indirizzo

dato

RD (lettura)

CK (clock)

2

k

x m bits

WR (scrittura)

(10)

Un Memory Bank (da 32x64 bit)

con un bus di uscite ingressi unificato

Memoria

Architettura degli elaboratori - 37 -

bus data

componente memoria 32x64 bit

in out

indirizzo CS

64

ind RD WR

5

control

CS = RD + WR OE = RD

bus indirizzo

CS∙OE CS∙OE

Quando RD = 0 WR = 0 : componente isolato Quando RD = 1 WR = 0 : bus funziona in  Quando RD = 0 WR = 1 : bus funziona in 

Costruire memorie grandi

N componenti di memoria possono essere assemblati per ottenere banchi di memoria più grandi

O per ottenere memorie con parole più lunghe. Per es:

2 Componenti da 32x64in un banco da 32x128

una componente fornisce i 64 bit HIGH, e l’altra i 64 LOW della parola finale (HIGH = most significant, LOW = least significant) O per ottenere memorie con più parole. Per es:

4 Componenti da 32x64 in un banco da 128x64

una componente memorizza tutte le parole di indirizzo 00…..

una componente memorizza tutte le parole di indirizzo 01…..

una componente memorizza tutte le parole di indirizzo 10…..

una componente memorizza tutte le parole di indirizzo 11…..

CS a 1 solo per la componente attiva.

OE a 1 solo su quella componente, e se lettura.

O entrambe le cose contemporaneamente. Per es: …

(11)

128

componente HIGH 32x64 bit

in out

componente LOW 32x64 bit

in out

Un Memory Bank da 32x128 bit

implementato con 2 componenti da 32x64 bit

Memoria

Architettura degli elaboratori - 39 -

bus data

ind ind

128

ind

5

bus indirizzo

CS∙OE

CS∙OE CS∙OE

64 64

128

64 64

RD

WR

control

CS = RD + WR OE = RD

CS∙OE

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

Memoria

Architettura degli elaboratori - 40 -

bus data

componente 00 32x64 bit

in out

ind

componente 01 32x64 bit

in out

ind

componente 10 32x64 bit

in out

ind

componente 11 32x64 bit

in out

ind

CS00 CS01 CS10 CS11

7

64

ind RD WR

5 2

control 4 4

CS00,01,10,11

OE00,01,10,11

bus indirizzo

CS00

OE00 CS00

∙OE00 CS01

OE01 CS01

∙OE01 CS10

OE10

CS10

∙OE10 CS11

OE11 CS11

∙OE11

(12)

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

Memoria

Architettura degli elaboratori - 41 -

bus data

componente 00 32x64 bit

in out

ind

componente 01 32x64 bit

in out

ind

componente 10 32x64 bit

in out

ind

componente 11 32x64 bit

in out

ind

0 1 0

7

64

ind RD WR

5 2

control 4 4

CS00,01,10,11

OE00,01,10,11

bus indirizzo

01 1 0

10111

= 0,1,0,0

= 0,1,0,0

0

0 1 0 0

0 0 0 0

ESEMPIO:

lettura all’indirizzo0110111

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

bus

componente 00 32x64 bit

in out

ind

componente 01 32x64 bit

in out

ind

componente 10 32x64 bit

in out

ind

componente 11 32x64 bit

in out

ind

0 1 0

7

ind RD WR

5 2

control 4 4

CS00,01,10,11

OE00,01,10,11

bus indirizzo

01 1 0

10111

= 0,1,0,0

= 0,0,0,0

0

0 0 0 0

0 1 0 0

ESEMPIO:

scrittura all’indirizzo0110111

(13)

componente 0 - HIGH 32x64 bit

in out

componente 0 - LOW 32x64 bit

in out

componente 1 - HIGH 32x64 bit

in out

componente 1 – LOW 32x64 bit

in out

Un Memory Bank da 64x128 bit

implementato con 4 componenti da 32x64 bit

Memoria

Architettura degli elaboratori - 43 -

bus data

ind ind ind ind

CS0 CS0 CS1 CS1

6

128

ind RD WR

5 1

control 2 2

CS0,1 OE0,1

bus indirizzo

CS0

∙OE0

CS0

∙OE0 CS0

∙OE0

CS0

∙OE0

CS1

∙OE1

CS1

∙OE1 CS1

∙OE1

CS1

∙OE1

Costruire memorie ancora più grandi

Assemblando blocchi di memoria potremmo ottenere memorie ancora più grandi, e così via.

Vogliamo ottenere memorie di GBytes! Questo «scala»?

Problemi:

Numero enorme di Flip-Flop: troppo caro?

Soluzione: passare a DRAM (vedo dopo) Lunghezza dei cavi diviene eccessiva?

Soluzione: disporre i bit memoria spazialmente in una griglia 2D con righe e colonne («organizzazione a matrice»)

Il circuito eccede cmq quello che possiamo stampare in un Chip?

Soluzione: disporre la memoria in un Chip esterno alla CPU Anzi: tanti Chip!

Pilotati da CS e OE.

Memoria

Architettura degli elaboratori - 44 -

(14)

Organizzazione a matrice

Le memorie le immaginiamo come vettori (1-dimensionali) di parole Ma le memorie di elevata capacità spesso hanno una struttura fisica interna a matrice (2-dimensionale)

scopo: ridurre i collegamenti interni

In tal caso sono di solito presenti due comandi aggiuntivi (RAS e CAS), per l’accesso alla memoria

Memoria

Architettura degli elaboratori - 45 -

Banco di memoria in un chip:

Sono disponibili componenti integrati di memoria di svariate capacità Per esempio: 64 K  8, 1 M  8, 1 M  1, 256 M  1, …

Tuttavia, per ottenere memorie di capacità elevata, occorre aggregare più componenti di memoria, realizzando un banco di memoria

(15)

Esempio

Si desidera ottenere un banco di memoria da 2 M  16 bit Indirizzo da 21 bit

Dati da 16 bit

Si dispone di 4 chip di memoria da 1 M  8 ciascuno

Indirizzo da 20 bit Dati da 8 bit

Il numero di chip è sufficiente:

4 (1 M  8) = 32 Mbit e 2 M  16 = 32 Mbit Implementazione (traccia):

matrice 2  2 (2 righe di 2 chip di memoria ciascuna)

Memoria

Architettura degli elaboratori - 47 -

Morale: la Memoria Centrale di un computer

Morale: la memoria centrale di un computer è molto grande ma ha un bus dati unificato, di lettura e scrittura

(quindi in ogni dato momento: o ci si legge, o ci si scrive) è esterna alla CPU, in un chip separato (lentezza) è di tipo DRAM (consumo, lentezza)

totale: tanti cicli di clock per eseguire una scrittura o lettura.

Il register file è molto piccolo ma ha tanti bus di lettura e scrittura

(per es: due letture e una scrittura per colpo)

è stampata nello stesso Chip della GPU, bella vicina alla ALU (fa parte del circuito integrato nella GPU)

è di tipo SRAM (velocissima)

Totale un ciclo di clock per fare più letture e scritture

Come possiamo avere il meglio dei due mondi? See next lecture.

Memoria

Architettura degli elaboratori - 48 -

(16)

Tecnologie di memoria

Esistono svariate tecnologie di memoria Differiscono per:

capacità della memoria

tempo di accesso a una parola (in lettura o in scrittura)

politica di accesso: lettura e scrittura, sola lettura, programmabilità sul campo

stabilità: volatile o persistente costo

Memoria

Architettura degli elaboratori - 49 -

RAM Statica (SRAM)

Memoria RAM (Random Access Memory) realizzata con bistabili Capacità medio-piccola

Tempo di accesso molto breve Funziona in lettura e scrittura

Volatile: senza alimentazione il contenuto della memoria svanisce Usi: svariati, in particolare come cache

(17)

RAM Dinamica (DRAM)

La memoria SRAM consuma parecchi transistor per bit memorizzato (circa 6 transistor per bit)

La tecnologia DRAM usa circa 1 transistor per bit memorizzato Sfrutta il fenomeno dell’accumulo temporaneo di carica sul transistor Internamente contiene un circuito di rinfresco che rigenera le cariche sui transistor prima che queste svaniscano

Memoria

Architettura degli elaboratori - 51 -

RAM Dinamica (DRAM)

Memoria RAM realizzata come matrice di transistor, ad altissima densità

Capacità grande-grandissima Tempo di accesso medio Funziona in lettura e scrittura

Volatile: senza alimentazione il contenuto della memoria svanisce Usi: numerosissimi, la memoria centrale dei calcolatori normalmente è DRAM

Memoria

Architettura degli elaboratori - 52 -

(18)

ROM

Memoria ROM (Read Only Memory), realizzata come matrice di transistor

Capacità grande-grandissima Tempo di accesso medio Funziona in sola lettura

Persistente: il contenuto permane anche in assenza di alimentazione Usi: per memorizzare programmi permanenti, non modificabili; grandi volumi di produzione

Memoria

Architettura degli elaboratori - 53 -

PROM, EPROM, EEPROM

Capacità e tempo simili alla ROM Sola lettura e persistenti

Sono programmabili sul campo, tramite un apposito programmatore:

PROM: programmabile una volta sola EPROM: cancellabile con raggi UV

EEPROM: cancellabile elettricamente (si può anche scrivere un solo byte per volta)

Usi: piccoli volumi di produzione, prototipi

(19)

Memoria FLASH

Capacità e tempo simili alla DRAM (o solo di poco inferiori) Funziona in lettura e scrittura (la scrittura però è a blocchi di byte) Persistente: il contenuto permane anche in assenza di alimentazione Usi: dati multimediali (p. es. immagini statiche, sequenze video), programmi fissi ma periodicamente aggiornabili

Memoria

Architettura degli elaboratori - 55 -

Tabella riassuntiva

Memoria

Architettura degli elaboratori - 56 -

Tipo Categoria Modalità di

cancellazione Scrittura

byte Volatile Usi

specifici

SRAM lett/scritt elettrica si si cache

DRAM lett/scritt elettrica si si mem. centrale

ROM sola lett nessuna no no grandi vol.

PROM sola lett nessuna no no piccoli vol.

EPROM sola lett luce UV no no prototipi

EEPROM sola lett elettrica si (lenta) no prototipi FLASH lett/scritt elettrica a blocchi no multimedia

Le memorie cancellabili vengono talvolta qualificate come

“memorie prevalentemente a sola lettura” (read-mostly)

Riferimenti

Documenti correlati

Cortázar Continuidad de los parques alla creazione di un breve

Nella figura 3 è stato illustrato il sistema di controllo della posizione delle testine nel quale sono messi in evidenza i vari disturbi che agiscono sulla posizione delle testine.

Vediamo ora come la scelta di approssimare il sistema in catena chiusa con un sistema del secondo ordine con poli complessi coniugati ci permetta di tradurre le

I dati binari sono semplici sequenze di bits senza nessuna particolare codifica di conseguenza gli operatori bit-a-bit prendono come operandi solo espressioni a valore di tipo

memorizza gli n valori in n bytes successivi di memoria, la label A rappresenta il base address della sequenza (indirizzo della parola con i primi quattro bytes). • A:

o implementare una funzione virtuale nella classe base implementata nelle classi derivate (con output). o implementare una funzione virtuale nella classe base non implementata

Ci sono dentro anime diverse del- la critica e della storiografia letteraria, qui conciliate nel taglio del tutto aperto e in divenire di una specie di racconto in qualche

 Una volta creato il file, si possono salvare ad esempio dati di tipi primitivi se incapsuliamo il file dentro un DataOutputStream.  Questa classe estende FilterOutputStream (che