I dispositivi di memoria

Download Report

Transcript I dispositivi di memoria

CALCOLATORI ELETTRONICI
I dispositivi di memoria
I dispositivi di memoria
Linguaggi ad alto livello/
Applicazioni
SW
“Informatica”
Sistema operativo
Assembler
ISA
Architettura di un calcolatore
Memoria
I/O
Reti sequenziali
HW
CPU
Reti combinatorie
Algebra di Boole e aritmetica binaria
Codifica binaria dell’informazione
“Elettronica”
BASI FISICO-MATEMATICHE
2
Indirizzamento di memoria e interfacce da
parte della CPU (richiamo)
MEMORIA
CPU
PRINCIPALE
INTERFACCE
DI I/O
Bus dati
Bus degli indirizzi
Bus dei segnali di comando
In questo schema a blocchi la CPU genera i segnali di indirizzo e di
comando per la memoria e le interfacce e per questo motivo è detta
agente master del bus. Il bus risulta essere così strutturato:
Bus dati bi-direzionale
Bus degli indirizzi uni-direzionale
Bus dei segnali di comando uni-direzionale
3
Spazio di indirizzamento in memoria
(richiamo)
• 
La memoria principale è vista dalla CPU come un vettore M[0..2n-1] di 2n elementi detti celle o parole di memoria;
questo vettore è detto “spazio di indirizzamento in memoria”. In questo spazio vengono “mappati” i dispositivi
fisici di memoria (chip).
• 
L’indice i che identifica la cella M[i] si chiama indirizzo della cella ed è una
configurazione binaria di n bit
• 
Nella maggior parte dei calcolatori ogni cella è composta da 8 bit (un byte); in questo caso si dice che la memoria è
organizzata in byte; il byte è quindi la più piccola quantità di memoria indirizzabile
0FFFF FFFFH (4 G - 1)
Pentium
4 GB
8086
1 MB
8085
64 KB
8 bit
0000F FFFFH (1M -1)
00000 FFFFH (64K -1)
00000 0000H
Conviene rappresentare gli indirizzi in codice
esadecimale (0..FH): ogni cifra esadecimale
corrisponde a 4 bit (es. 0000b è 0H , 0001b è
1H, 1010b è 0AH, 1011b è 0BH, 1100b è 0CH,
1111b è 0FH)
Quantità comunemente utilizzate per esprimere la
dimensione di uno spazio di indirizzamento:
Kilobyte
1KB
210 Byte
1024 B
Megabyte
1MB
220 Byte
1.048.576 B
Gigabyte
1GB
230 Byte
1.073.741.824 B
La dimensione dello spazio di indirizzamento è uno dei parametri che
caratterizzano l’architettura della CPU
4
Spazio di indirizzamento in I/O (richiamo)
•  Così come i dispositivi di memoria, anche le interfacce di ingresso/
uscita sono mappate in uno spazio di indirizzamento
•  Le interfacce di I/O possono essere mappate in uno spazio distinto
da quello della memoria oppure nello stesso; in quest’ultimo caso si
dice che l’I/O è mappato in memoria (memory mapped I/O)
•  Lo spazio di indirizzamento in I/O è solitamente più piccolo dello
spazio di indirizzamento in memoria (es: nelle architetture Intel IA16
e IA32 lo spazio di indirizzamento in I/O è di 64 KB)
0FFFFH
00000H
8 bit
La modalità con cui vengono mappate le interfacce di I/O è uno dei parametri che
caratterizzano l’architettura della CPU
5
Struttura del bus di sistema (richiamo)
•  I segnali del bus di sistema sono suddivisi in tre gruppi
•  Il bus dati è costituito da m segnali che portano istruzioni e operandi; m è multiplo di
8 secondo una potenza di 2 (es. 8, 16, 32, 64 bit). Il bus dati è identificato dal vettore
di bit D[m-1..0]
•  Il bus degli indirizzi è costituito dai segnali che identificano la posizione delle
informazioni trasferite nello spazio di indirizzamento a cui si intende accedere; il bus
degli indirizzi è solitamente identificato dal vettore di bit A[n-1..0] (es. n= 16, 20, 24,
32, 36, 64)
•  Il bus dei segnali di comando è composto dai segnali che comandano i trasferimenti
di dati sul bus; esempi di segnali di comando sono:
–  il comando con cui la CPU esegue una lettura nello spazio di indirizzamento in memoria
(MRDC#)
–  il comando con cui la CPU esegue una scrittura in memoria (MWRC#)
–  il comando con cui la CPU esegue una lettura nello spazio di indirizzamento in I/O (IORDC#)
–  il comando con cui la CPU esegue una scrittura in I/O (IOWRC#)
Il parallelismo dei bus, ovvero il numero di segnali di cui è costituito un bus, è un altro parametro
caratteristico dell’architettura della CPU
6
Condizione di visibilità di un dispositivo da
parte del software
• 
Condizione necessaria affinché un dispositivo fisico (memoria, interfaccia, o altra
entità) sia accessibile al software è:
–  il dispositivo deve essere mappato in uno spazio di indirizzamento
• 
Mappare un dispositivo in uno spazio di indirizzamento significa:
–  associare al dispositivo una finestra di indirizzi in quello spazio di indirizzamento
• 
Si accede ai dispositivi mappati in uno spazio di indirizzamento con i cicli di bus
FFFFH
…
FFFFFFFFH
D4
0701H
D2
D1
…
F000000H
0700H
…
…
01FFH
1FFFFFFH
…
…
…
0100H
D3
D1: 0100H – 01FFH (256 bytes)
D2: 0700H (1 byte)
D3 e D4 sono mappati in uno spazio di
indirizzamento di 4GB
…
1000000H
…
0000H
D1 e D2 sono mappati in uno spazio di
indirizzamento di 64KB
D3: 10000000H – 1FFFFFFFH (256 MBytes)
D4: F0000000H - FFFFFFFFH (256 MBytes)
00000000H
7
Dimensione della finestra occupata da un
dispositivo
• 
Un dispositivo accessibile attraverso il bus, sia esso un dispositivo di memoria
( es. RAM, EPROM, FLASH, register file), una interfaccia (es. un registro di uscita,
un’interfaccia per leggere lo stato di interruttori, una porta parallela, una porta
seriale) occupa in generale n = 2k posizioni nello spazio di indirizzamento
• 
n rappresenta il numero di oggetti di 8 bit indirizzabili all’interno del dispositivo
(es. numero di celle di memoria nelle RAM e nelle EPROM, il numero di registri in
un register file, il numero di registri di transito, di stato o di comando nelle interfacce
di I/O)
• 
k è fortemente variabile al variare del dispositivo:
–  In generale nei dispositivi di input/output (es. le interfacce) k è piccolo
–  in generale nei dispositivi di memoria k è grande (es. per una RAM da 128
KB si ha k =17)
8
Caratteristiche ai morsetti di un dispositivo
indirizzabile su una finestra di n = 2K byte
Qualunque dispositivo da m bit con all’interno n = 2k elementi indirizzabili separatamente ha al
suo interno un decoder di k variabili con ingresso di enable che seleziona i singoli oggetti
indirizzabili
Solitamente il dispositivo si interfaccia al bus attraverso i seguenti segnali:
• 
indirizzi ( A[k-1..0] ): sono le k variabili decodificate dal decoder e individuano il byte a cui si
intende accedere all’interno del chip (offset nel chip)
• 
dati ( D[m..0] ): definiscono la porta bidirezionale che consente di scambiare dati con l’esterno
• 
chip select (CS*) detto anche “chip enable” (CE*): è il segnale di enable del decoder; se CS*
non è attivo il chip non è indirizzato
• 
comandi
– 
– 
Read Command (RD*), detto anche Output Enable (OE*) : è il comando di lettura
Write Command (WR*): è il comando di scrittura
A[k-1..0]
CS*
RD*
WR*
Dispositivo da 8 bit che occupa n=2k
posizioni contigue in uno spazio di indirizzamento
con bus dati da 8 bit
D[7..0]
BD[7..0]
9
Memorie EPROM
EPROM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VCC
VPP
A16
A15
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
•  Memorie non volatili a sola lettura
PGM*
NC
A14
A13
A8
A9
A11
OE*
A10
CE*
D7
D6
D5
D4
D3
GND
128K × 8
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
• Capacità a multipli di 2:
32K, 64K, 128K, 256K……
Ciclo di lettura: temporizzazioni
Ai
CE*
Tce
Toe
OE*
Di
Tacc
10
Datasheet EPROM: National 27C256
32K x 8
11
Le ROM come circuiti di memoria
BA[n-1..0] (Bus indirizzi)
n
BA[k-1..0]
k
ROM 2k×8
A0
A1
Ak-1
D
E
C
Cella
m0
m1
Bit di
[1,6]
programmazione
m2k-1
BA[n-1..k]
n-k
Rete di
decodifica
MEMRDC#
(Bus comandi)
CE*
OE*
BD[7..0] (Bus dati) 8
D7
D6
D0
BD7 BD6
BD0
12
EPROM: tempi di accesso
13
Are you ready?
Per leggere per esempio dalla memoria l’istruzione da eseguire, la CPU genera un ciclo di bus di lettura
in memoria. La memoria sarà abbastanza veloce da portare in uscita sul bus dati il codice dell’istruzione
in un periodo di clock (per consentire di essere campionato da IR rispettando il tempo di set-up)?
tSU
Clock
BA[31..0]
tSU
Ciclo di bus con
0 stati di wait
PC
MRDC#
BD[31..0]
BA[31..0]
SI
Istruzione
Ciclo di bus con
1 stato di wait
PC
NO
MRDC#
BD[31..0]
Istruzione
RAM Statica: Datasheet (CY7C199 32K x 8)
15
Struttura di una RAM (SRAM)
0
m-1
0
j
CD
CD
CD
A[n-1..0]
n
CE*
i
OE*
(Lettura)
WE*
(Scrittura)
CD
CD
CD
In una SRAM i bit di informazione
sono memorizzati in una matrice
di latch di tipo CD.
Se la RAM ha n indirizzi e m
linee dati (D[m-1..0]), la matrice
ha 2n righe e m colonne.
Le operazioni di lettura/scrittura
sono effettuate con parallelismo
pari a quello della riga.
OPERAZIONE DI SCRITTURA:
Se CE*=0 e WE*=0 viene scritta la
riga (m bit) corrispondente
all’indirizzo corrente.
2n-1
CD
CD
CD
OPERAZIONE DI LETTURA:
Se CE*=0 e OE*=0 viene letta la
riga (m bit) corrispondente
all’indirizzo corrente.
D[m-1..0]
m
16
La cella di una RAM statica da 2n x m bit
(Lettura)
OE*
BD[m-1..0]
CE*
Dm-1 Dj
i,0
EN 0
D0
Q
C
D
A[n-1..0]
n
D
E
C
i
i,j
C
Q
D
i,m-1
2n -1
Q
D
WE*
(Scrittura)
C
Riga i-esima
17
Ciclo di lettura in RAM
OE*
CE*
A[n-1..0]
EN
n
D
E
C
i
i,j
C
Q
Dj
D
(MEMRD#)
18
Ciclo di scrittura in RAM
CE*
i,j
EN
A[n-1..0]
n
D
E
C
i
C
Q
D
Dj
WE*
(MEMWRC#)
C
Set-up
Hold
Scrittura
19
RAM: temporizzazioni
20
SRAM vs DRAM
SRAM
DRAM
Numero di transistor/bit
4-6
1
Refresh
NO
SI
Capacità
M
M*4 ÷ M*8
Es : 1MB
Es : 8MB
Costo
€ * 8 ÷ €* 16
€
Velocità
Cycle time = Access time =
T/8 ÷ T/16
Cycle time T > Access time
Normale impiego
Es: 10ns
Es: Access time 75ns
Cycle time 90ns
Cache
Memoria principale
21