• Non ci sono risultati.

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
18
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

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 = 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

(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 – 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

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

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 (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’ necessaria 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

Memoria

Architettura degli elaboratori - 24 -

Tri-State Buffer (buffer a tre stati)

È un dispositivo elementare modellabile come un contatto in una di tre 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

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

0 o1 Z 0 o1 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

A 0

0

B 1

B

$!&@£$!

Circuito non corretto!

A 0

Z

B 1

B

B

Circuito corretto

(fintantochè uno solo dei due bit di controllo vale 1)

A e B valgono 0 oppure 1

non leggibile!

(6)

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)

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 -

Usi di un Tri-state buffer:

per un MUTEX

Un’implementazione di MUTEXmolto scalabile ma non necessariamente veloce

Questo:

E’ un modo di implementare questo:

DEC

MUX

bus

(7)

Usi di un Tri-state buffer:

OE (Output Enable)

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)

CORE

Usi di un Tri-state buffer:

CS (Chip Select)

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

(8)

CS (Chip Select) e OE (Output Enable)

Memoria

Architettura degli elaboratori - 32 -

DISPOSITIVO A input

output

bus di input

bus di output

DISPOSITIVO B input

output

DISPOSITIVO C input

output CORE

Usi di un Tri-state buffer:

Bus bidirezionali, di input/output

bus di input / output

CORE

DISPOSITIVO A input output

DISPOSITIVO B input output

DISPOSITIVO C input output

(9)

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

Memoria

Architettura degli elaboratori - 34 -

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

lettura da B

(10)

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

Memoria

Architettura degli elaboratori - 36 -

bus di input / output

CORE

DISPOSITIVO A input output

DISPOSITIVO B input output

DISPOSITIVO C input output

scrivere in C

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

(quadno 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;

(in pratica, per implementare un MUTEX con le usite dei dispositivi) CS = 0 , OE = 0  NON USATO.

(11)

CS e OE

Se il bus è bidiezionale, 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

Memoria

Architettura degli elaboratori - 38 -

Un banco di memoria

con un solo bus di input/output

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: non consentito

k

m

indirizzo

dato

RD (lettura)

CK (clock)

2

k

x m bits

WR (scrittura)

(12)

Un Memory Bank (da 32x64 bit)

con un bus di uscite ingressi unificato

Memoria

Architettura degli elaboratori - 41 -

bus data

componente memoria 32x64 bit

in out

indirizzo RD + WR

64

ind

5 bus indirizzo

RD∙WR RD∙WR

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

Un Memory Bank (da 32x64 bit)

con un bus di uscite ingressi unificato

bus

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 CS = 0 : componente isolato Quando CS = 1 OE = 1 : bus funziona in dir  Quando CS = 1 OE = 0 : bus funziona in dir 

(13)

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: …

Memoria

Architettura degli elaboratori - 43 -

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

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

(14)

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

Memoria

Architettura degli elaboratori - 45 -

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

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,1,0,0

0

0 1 0 0

0 0 0 0

ESEMPIO:

lettura all’indirizzo0110111

(15)

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

Memoria

Architettura degli elaboratori - 47 -

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,0,0,0

0

0 0 0 0

0 1 0 0

ESEMPIO:

scrittura all’indirizzo0110111

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

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

(16)

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

Note e spiegazioni:

per indicizzare una delle 128 parole, mi servono 7 bit

i 2 bit più significativi = l’indice del blocco in cui cercare la parola i 5 bit meno significativi = l’indice della parola in di quel blocco Analogia intuitiva (in base 10):

Ho un hotel composto da 10 piani (da 0 a 9), e 100 stanze in ogni piano (da 00 a 99)

L’hotel ha quindi 10x100 = 1000 stanze, (da 000 a 999) La stanza 749 sarà la stanza 49 del piano 7

Memoria

Architettura degli elaboratori - 49 -

Un Memory Bank da 128x64 bit

implementato con 4 componenti da 32x64 bit

Note e spiegazioni (continua):

Oppure (ancora in base 10):

Ho un hotel composto da 100 piani (da 00 a 99), e 1000 stanze in ogni piano (da 000 a 999)

L’hotel ha quindi 100.000 stanze (wow), (da 00000 a 99999) La stanza 15249 sarà la stanza 249 del piano 15

Piani: 10^2 cifre per identificare un piano: 2.

Stanze per piano: 10^3cifre per identificare un piano: 3.

Stanze: 10^2 x 10^3 = 10^(2 + 3)

Cifre per indicizzare una stanza: 2+3= 5.

249 = le tre cifre meno significative di 15249 = 15249 MOD 10^3 15 = le tre cifre più significative di 15249 = 15249 DIV 10^3 (questo trucco richiede di avere 10^n, n intero, stanze per piano!) Lo stesso principio vale usando la base due invece che dieci

(17)

Esercizio

Costruire le parti che negli esempi producono i bit di CS e OE

Hint: usare i blocchi funzionali combinatorinoti

Memoria

Architettura degli elaboratori - 51 -

control

C O R E

PERIFERICA O DISPOSITIVO

input output

Bus: note

m n

p

m, n e p: larghezze dei componenti del BUS.

Il BUS di controllo è quello meno omogeneo .

BUS dei dati

BUS degli indirizzi

BUS di controllo

(18)

Il bus: note

Un bus che connette un core

(es, l’unità centrale di un computer, o CPU) ad una periferica

(nel nostro caso, un banco di memoria o un insieme di banchi) è costituito da una serie di connessioni su cui viaggiano segnali tipicamente divisi in:

data

(nel nostro caso: la parola da leggere o da scrivere) (nel nostro caso: su cavi bidirezionali)

segnali di indirizzo

(nel nostro caso: l’indirizzo del dato dal leggere o da scrivere) (nel nostro caso: monodirezionali, verso la periferica)

alcuni segnali di controllo

(nel nostro caso: CS e OE per ogni banco di memoria) (nel nostro caso: monodirezionali, verso la periferica)

Memoria

Architettura degli elaboratori - 53 -

Banco di memoria realizzati in un chip:

(chip di memoria)

Negli esempi abbiamo visto memory bank ancora molto piccoli.

La dimensione di memory bank realizzato in un chip è limitata da quante porte (e quindi transistor) riesco ad alloggiare nel chip Un memory bank reale può essere ad esempio:

1 M  32

cioè 2^(20)  32

cioè ~un milione di parole da 32 bit bit per l’indirizzo: 20

bit per ogni parola: 32 Oppure per es

64 K  8, 1 M  8, 1 M  1, 256 M  1 Prossimamente:

e aggregando più chip di memoria nei modi visti si ottengono memory bank su più chip ancora più capienti

Riferimenti

Documenti correlati

[r]

I biologici, infatti, sia in monoterapia sia in associazione al methotrexate (MTX), agiscono più rapidamente ri- spetto ai DMARDs e sono in grado di ridurre l’attività della

2427- bis del Codice Civile e si compone di Stato Patrimoniale, Conto Economico e Nota Integrativa.I criteri utilizzati nella formazione del bilancio chiuso al

In linea con la politica aziendale che si prefigge il costante miglioramento dei propri prodotti, Nissan International si riserva il diritto di modificare in qualsiasi momento

4 .1 Gli interruttori automatici aperti e scatolati 4.1.1 Interruttori aperti Emax E1-E2-E3-E4-E6 Comunicazione Modbus: supervisione e telecontrollo Gli interruttori

Il dispositivo risponde al master asserendo il segnale di DEVSEL e il segnale TRDY: ha inizio la fase dei dati. Essendo IRDY e TRDY asseriti, viene trasferito il

Chiamata anche asincrona e spesso identificata con la sigla RS-232-C era l’interfaccia più comune e semplice fino all’introduzione delle USB Veniva utilizzata per collegare i

Progettare il Sottosistema di Calcolo (SCA) di un processore RISC, con organizzazione pipeline, con il minor numero di stadi, atto a supportare l’esecuzione delle seguenti