Sei sulla pagina 1di 26

Università degli Studi dell’Insubria

Dipartimento di Scienze Teoriche e Applicate

Architettura degli elaboratori

Memoria
Banco di Memoria

Un blocco funzionale capace di memorizzare un certo numero m di


parole di un certo numero n di bit ciascuna
quindi nessuna differenza con un banco di registri… ma, m molto
più grande!
Capacità totale (in bits): m × n
Più spesso, espressa in byte: basta dividere per 8

Indirizzamento:
serviranno k bit per esprimere un indirizzo, con
minimo k tale che 2k ≥ m
cioè k = log2 m

Le due operazioni eseguibili sul banco sono:


lettura, ovvero si prelevano gli n bit memorizzati in una parola
scrittura, ovvero si memorizzano in una parola n bit
Architettura degli elaboratori - 19 - Memoria
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 105 a 1011 bit – o anche superiori
(molte migliaia o milioni di bit)
Avremo bisogno di ottimizzare e semplificare i circuiti
(spesso, sacrificando efficienza e semplificando le funzionalità)
Poi, costruiamo banchi di memoria ancora più capienti
assemblando componenti di memoria più semplici
Architettura degli elaboratori - 20 - Memoria
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

Architettura degli elaboratori - 21 - Memoria


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

indirizzo
5
Porta di accesso
(in lettura e scrittura) Dato in componente
al banco di memoria 64
32x64 bits
Dato out
64

CK (clock)

Architettura degli elaboratori - 22 - Memoria


Banco di memoria da 32 x 64 bit
possibile implementazione
dato in
64

D
32 31 30 29 28 2
E
C I I I I I I
L L L L L L
R0 R1 R2 R3 … R30 R31

5
ind U U U U U U
64 64 64 64 64 64

CK MUX
64

dato out
Architettura degli elaboratori - 23 - Memoria
Banco di memoria ad un bus solo
(Bus bidirezionale)
Il tipico banco di memoria ha uno solo bus,
usato sia in lettura che in scrittura.
Quindi si può eseguire una sola operazione alla volta,
lettura oppure scrittura
Come implementare un bus di questo tipo (detto «bidirezionale»)?
E’ necessario un nuovo tipo di porta che consenta la NON
interferenza fra le uscite e le entrate nel bus: il tri-state buffer

Altro uso del tri-state buffer,


unire le uscite di 2 o più componenti in un unico bus,
per costruire banchi di memoria grandi
Come garantire la non interferenza fra le uscite dei vari
componenti?
Stessa soluzione: il tri-state buffer

Architettura degli elaboratori - 24 - Memoria


Tri-State Buffer
(buffer a tre stati)
È un dispositivo elementare modellabile come un contatto in una delle
tre possibili condizioni:
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) vale 0,
il gate forza lo stato di alta impedenza Z

E I U
0 0 Z
I U
0 1 Z
1 0 0
E
1 1 1
Architettura degli elaboratori - 25 - Memoria
Funzionamento

I U I U
0 0 0 0

E interruttore chiuso
ingresso di
controllo 1

I U I U
1 1 1 1

E interruttore chiuso
1

I U I U
0o1 Z 0o1 Z

E interruttore aperto
stato di alta
0 oppure 1 0 impedenza

Architettura degli elaboratori - 26 - Memoria


Nota: un tri-state buffer
è molto diverso da una porta AND
A e B valgono 0 oppure 1

A 0 A Z

0 0
$!&@£$! B

B B B B
non
leggibile!

1 1
Circuito corretto
Circuito non corretto! (fintantochè uno solo dei due bit di controllo vale 1)

Architettura degli elaboratori - 27 - Memoria


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

1: passa corrente a (relativamente) bassa tensione


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

Architettura degli elaboratori - 28 - Memoria


Usi di un Tri-state buffer:
per un MUTEX
Un’implementazione di MUTEX molto scalabile
ma non necessariamente veloce
Questo:

DEC

bus

E’ un modo di implementare questo:


MUX

Architettura degli elaboratori - 29 - Memoria


Usi di un Tri-state buffer:
OE (Output Enable)

bus di input

input input input

DISPOSITIVO DISPOSITIVO DISPOSITIVO


CORE A B C

output output output

OE (A) OE (B) OE (C)

bus di output

Architettura degli elaboratori - 30 - Memoria


Usi di un Tri-state buffer:
CS (Chip Select)

bus di input

CS (A) CS (B) CS (C)

input input input

DISPOSITIVO DISPOSITIVO DISPOSITIVO


CORE A B C

output output output

OE (A) OE (B) OE (C)

bus di output

Architettura degli elaboratori - 31 - Memoria


CS (Chip Select) e
OE (Output Enable)

bus di input

input input input

DISPOSITIVO DISPOSITIVO DISPOSITIVO


CORE A B C

output output output

bus di output

Architettura degli elaboratori - 32 - Memoria


Usi di un Tri-state buffer:
Bus bidirezionali, di input/output

Architettura degli elaboratori - 33 - Memoria


Usi di un Tri-state buffer:
Bus bidirezionali, di input/output

DISPOSITIVO DISPOSITIVO DISPOSITIVO


A B C

CORE input output input output input output

bus di input / output

Architettura degli elaboratori - 34 - Memoria


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

lettura da B

DISPOSITIVO DISPOSITIVO DISPOSITIVO


A B C

CORE input output input output input output

bus di input / output

Architettura degli elaboratori - 35 - Memoria


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

scrivere in C

DISPOSITIVO DISPOSITIVO DISPOSITIVO


A B C

CORE input output input output input output

bus di input / output

Architettura degli elaboratori - 36 - Memoria


CS e OE

Due nomi standard per i segnali che controllano le periferiche


CS - Chip Select:
isola elettricamente il dispositivo (quando non è selezionato)
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 a 1 è come essere l’unico sul bus
per i dispositivi con CS a 0 è come essere isolati dal bus
OE - Output Enable:
isola elettricamente le uscite del dispositivo
quando OE = 1, il dispositivo riversa il suo output sul buffer
quando OE = 0, l’output del dispositivo è ignorata
(quando CS = 0, allora anche OE = 0)
utile per usare lo stesso bus sia in uscita che in entrata
utile per condividere tanti dispositivi in uscita su uno stesso bus

Architettura degli elaboratori - 37 - Memoria


CS e OE

Se il bus è bidirezionale, posso usare CS e OE con questo significato:

CS = 0  PERIFERICA NON USATA (completamente isolata)


CS = 1, OE = 0  PERIFERICA USATA IN LETTURA
CS = 1, OE = 1  PERIFERICA USATA IN SCRITTURA (su BUS)

Architettura degli elaboratori - 38 - Memoria


Un banco di memoria
con un solo bus di input/output

indirizzo
k
Porta di accesso 2k x m bits
(in lettura e scrittura) dato
m
al banco di memoria
RD (lettura)
WR (scrittura)

CK (clock)

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 è isolato (inattivo)
RD = 1 e WR = 1: non consentito
Architettura degli elaboratori - 39 - Memoria
Un Memory Bank (da 32x64 bit)
con un bus di uscite/ingressi unificato

bus indirizzo
ind 5
0
Quando RD = 0 WR = 0 :
componente isolato
indirizzo
componente
memoria
32x64 bit
in out

RD∙WR RD∙WR

bus 64

dati
Architettura degli elaboratori - 40 - Memoria
Un Memory Bank (da 32x64 bit)
con un bus di uscite/ingressi unificato

bus indirizzo
ind 5
1
Quando RD = 0 WR = 0 :
componente isolato
indirizzo
componente Quando RD = 1 WR = 0 :
memoria bus funziona in lettura 

32x64 bit
in out

RD∙WR RD∙WR

bus 64

dati
Architettura degli elaboratori - 41 - Memoria
Un Memory Bank (da 32x64 bit)
con un bus di uscite/ingressi unificato

bus indirizzo
ind 5
1
Quando RD = 0 WR = 0 :
componente isolato
indirizzo
componente Quando RD = 1 WR = 0 :
memoria bus funziona in lettura 

32x64 bit Quando RD = 0 WR = 1 :


in out bus funziona in scrit. 

RD∙WR RD∙WR

bus 64

dati
Architettura degli elaboratori - 42 - Memoria
Un Memory Bank (da 32x64 bit)
con un bus di uscite/ingressi unificato

RD CS = RD + WR
control
WR OE = RD
bus indirizzo
ind 5
CS
Quando CS = 0 :
componente isolato
indirizzo
componente Quando CS = 1 OE = 1 :
memoria bus funziona in let. dir 

32x64 bit Quando CS = 1 OE = 0 :


in out bus funziona in scrit. dir 

CS∙OE CS∙OE

bus 64

dati
Architettura degli elaboratori - 43 - Memoria

Potrebbero piacerti anche