Architetture dei Calcolatori Clocking Elementi di Memoria Elementi

Transcript

Architetture dei Calcolatori Clocking Elementi di Memoria Elementi
Clocking
Il segnale di Clock definisce quando i segnali
possono essere letti e quando possono essere
scritti
Fronte di discesa (negativo)
Architetture dei Calcolatori
(Lettere A-I)
Falling edge
Tecnologie per la Memoria e Gerarchie di Memoria
Periodo di clock
Ing.
Ing. Francesco Lo Presti
Fronte di salita (positivo)
Rising edge
Freq. clock = 1/(Periodo di Clock)
e.g., Periodo di 10 nsec ⇒ 100 MHz
Periodo di 1 nsec ⇒ 1 GHz
Opzioni per gli elementi di memoria
Latch sensibili al livello
Flip-Flop master-slave/edge-triggered
Memoria
Elementi di Memoria
Elementi di Memoria
Latch SetSet-reset
R
S
1
Q
!Q
Latch D sensibile al livello
R
S
Q(t+1)
!Q(t+1)
1
0
0
1
0
1
1
0
0
0
Q(t)
!Q(t)
1
1
-
-
Problemi con i latch: corse critiche …
Elemento
di Memoria
Logica
Combinatoria
Elementi di memoria usati compe input ed output
nello stesso ciclo
clock
Q
❍
D
❍
clock
!Q
D
❍
Q
❍
Dipende dai tempi di propagazione dei diversi percorsi
Il latch e’
e’ transparente quando il clock e’
e’ alto (l
(l’ingresso e’
copiato in uscita)
uscita)
Memoria
Ciclo deve durare abbastanza da permettere all’
all’uscita
della rete combinatoria di stabilizzarsi
Ma non troppo a lungo da permettere al nuovo valore di
ripropagarsi attraverso la rete combinatoria
Difficile garantire entrambe le condizioni
2
Memoria
3
Elementi di Memoria
Periodo del Ciclo di Clock
Soluzione:
Soluzione: FlipFlip-Flops che cambiano lo stato (Q) solo
sui fronti del segnale di clock (master(master-slave)
D
D
D
Q
D
D-latch
clock
clock
Q
Q
!Q
!Q
D-latch
!Q
clock
T
clock
Il periodo T deve essere scelto lungo abbastanza
Q
da garantire che l’output del circuito combinatorio
sia stabilizzato
Master (primo DD-latch) copia in Q l’ingresso quando il
clock e’
e’ alto (lo slave (secondo
(secondo D-latch) e’
e’ bloccato e
non cambia stato )
Slave copia il valore del master quando il clock va a 0
(il master e’
e’ bloccato nel suo stato di memoria ed
eventuali cambi all’
all’ingresso non vengono letti)
letti)
Vincolo sul ciclo di clock
❍ Il ciclo di clock deve durare abbastanza da rispettare il
ritardo piu’
piu’ lungo possibile della rete combinatoria Memoria
❍
❍
Deve esserlo prima del periodo di apertura di del flipflip-flop
(set(set-up time)
Deve rimanere stabile per un certo tempo (hold(hold-time)
D
Set-up time
4
Assunzioni
Hold time
Setup e hold time per
un flip-flop D (clock
sul fronte di discesa)
Memoria
C
5
Registro
Metodologia edgeedge-triggered
Comportamento tipico
❍ Leggere il contenuto di elementi di memoria
❍ I valori sono input di una o piu’
piu’ reti combinatorie
❍ Scrivere i risultati in uno o piu’
piu’ elementi di memoria
Registro
❍ Simile ad un flip flop D eccetto
N bit di ingresso e uscita
Input Write
❍
State
element
1
Combinational
logic
State
element
2
one clock cycle
D
Q
D-latch
clock
D1
Write:
Write:
Se negato (0): i dati in uscita (Data
Out) non cambiano
Se asserito (1): i dati in uscita (Data
Out) divengono uguali ai dati in
ingresso (Data In)
clock
D0
D
Dn-1
D
Q1
!Q
Q
D-latch
clock
Si assume che gli elementi di memoria sono scritti
!Q
Q
D-latch
clock
Q0
Qn-1
!Q
ad ogni ciclo di clock
❍
Altrimenti si aggiunge un esplicito segnale di write
❍
La scrittura avviene solo quando occorre la transizione
di
Memoria
livello attiva ed il segnale di controllo e’ affermato
In AND con il clock
clock
6
Write
Memoria
7
Banco di registri (2)
Banco di registri (register file)
Un banco di registri può essere implementato con un
Banco di registri ad accesso rapido per
multiplexer per ciascuna porta read,
read, un decoder per ciascuna
porta write ed un array di registri costruiti partendo da flipflipflop D
Esempio: implementazione di due porte read per un banco di
registri composto da n registri
memorizzare temporaneamente gli operandi
usati nelle istruzioni
Nel MIPS il banco dei registri è composto da
32 registri generali
❍
Due porte in lettura da 32 bit
❍
Una porta in scrittura da 32 bit
Read data 1/2
Read register
number 1
Register 0
Write data
❍
Register 1
Tre porte per selezionare i registri da 5 bit
Register n – 1
Read register #1 (#2) : primo (secondo
(secondo))
registro da leggere
Write register: registro da scrivere
❍
Read data 1
M
u
x
Read data 2
Register n
Read register
number 2
Write:
Write: segnale di controllo
❍
M
u
x
In AND con il clock (non mostrato)
Solo se Write=1 il valore in Write data e’
e’
scritto nel registro indicato da Write Reg.
Memoria
8
Banco di registri (3)
Memoria
9
Principali tecnologie per RAM
Esempio: implementazione di una porta write per
Le memorie RAM sono di due tipi
un banco di registri composto da n registri
❍
❍
Memorie statiche:
statiche: Static Random Access Memory (SRAM)
Memorie dinamiche:
dinamiche: Dynamic Random Access Memory (DRAM)
Memorie statiche
❍
Il singolo elemento corrisponde ad un latch/
latch/flipflip-flop
Memorie dinamiche
❍
❍
❍
Il singolo elemento corrisponde ad un condensatore ed un
transistor
L’informazione è memorizzata sotto forma di carica del
condensatore
Richiedono un refresh periodico dell’
dell’informazione
Le memorie statiche sono (rispetto a quelle dinamiche)
❍
❍
❍
❍
Memoria
10
Più
Più veloci (5ns vs. 5050-100ns)
Più
Più costose (6 transistor per bit)
Persistenti (non è richiesto il refresh)
refresh)
Più
Più affidabili
Memoria
11
Memoria Principale, Cache e Tecnologie
SRAM
Realizzata con matrici di latch
Prestazioni della memoria principale
❍
Latenza
❍
❍
Altezza H (# celle indirizzabili)
indirizzabili)
Dinamica in quanto ha bisogno di essere rinfrescata periodicamente
periodicamente
(8 ms)
ms)
Indirizzi di memoria divisi in due parti (memoria come una matrice
matrice
2D):
❍
Chip Select
❍
Output Enable
❍
Din
❍
Memoria
Per Leggere
Write Enable
❍
Struttura di una SRAM 4x2
Tecniche realizzative diverse
Il buffer three-state è
❍
Chip Select, Output
Enable, Address e
Dout
Memoria
Realizzazione SRAM
❍
Chip Select, Write
Enable, Address e Din
12
incorporato nei flip-flop
che formano le celle di
base di una SRAM
(buffer controllato dal
segnale Enable)
Tutti i latch di una
colonna sono collegati
alla stessa linea di
output
Il decoder serve ad
abilitare in
lettura/scrittura una
certa linea
rispetto a quelle del register file
Grandi Mux,
Mux, Decoder non sono pratici
Per evitare il Mux in uscita
una linea condivisa i cui vari elementi di
memoria sono tutti collegati
Il collegamento alla linea avviene
tramite un buffer a tre stati
Un dispositivo a tre stati, in base
ad un segnale di controllo, si
comporta:
(b) controllo=1: come circuito chiuso
Dout
8
❍
=1 per abilitare alla scrittura
No refresh (6 transistor/bit vs. 1 transistor)
Dimensione: DRAM/SRAM = 4-8
Costo/Tempo di Ciclo: SRAM/DRAM = 8-16
8
Per Scrivere
=1 per abilitare l’uscita del chip su
un bus condiviso
SRAM
SRAM
32K*8
Write Enable
=1 per poter leggere e scrivere
RAS o Row Access Strobe
CAS o Column Access Strobe
La memoria cache usa
Chip Select
Output Enable
contemporaneamente
Esempio Chip 32k*8
DRAM
15
Address
Non e’
e’ possibile scrivere e leggere
Banda
La memoria principale è
❍
Larghezza W (# latch per cella)
cella)
Spesso piccolo W=1,4,8
Tempo di accesso: tempo tra quando arriva la richiesta e la parola
Tempo di ciclo: tempo tra richieste
❍
❍
Din[1]
Write enable
13
Din[0]
D
D
C latch Q
Enable
D
D
D
C latch Q
Enable
D
D
D
C latch Q
Enable
D
D
D
D
C latch Q
Enable
0
2-to-4
decoder
D
C latch Q
Enable
1
Address
D
C latch Q
Enable
2
D
C latch Q
Enable
D
C latch Q
Enable
3
Dout[1]
Dout[0]
(c) controllo=0: come circuito aperto
Memoria
14
Memoria
15
Struttura di una SRAM 4Mx8
Memoria DRAM
Per evitare grandi decoder si usa decodifica a due livelli
DRAM sono meno costose, piu’
piu’ capienti, ma piu’
piu’ lente rispetto
❍
alle SRAM
Decoder piu’
piu’ piccolo + batteria di mux
❍
5-10 volte meno veloci
Cella di memoria con un transistor+capacita’
transistor+capacita’
❍
Il condensatore memorizza il contenuto della cella ed il
transistor è usato per accedere alla cella (tramite Word Line)
Word line e’
e’ attivato sulla base dell’
dell’indirizzo richiesto
I condensatori mantengono i valori
memorizzati per alcuni ms
Necessario il refresh dinamico delle
DRAM, effettuato leggendo,
leggendo, e subito
dopo riscrivendo i valori appena letti
Es SRAM 4Mx8 (22 bit indirizzo)
indirizzo)
❍
❍
❍
Suddiviso in 8 blocchi da 4Mbit (4Kx1024 bit)
Parte alta indirizzo [21[21-10] seleziona la medesima riga da ogni
blocco di 4Kx1024bit attraverso un decoder (12 a 4096)
Parte bassa indirizzo [9[9-0] seleziona un singolo bit dei 1024 in
output dai vari blocchi
❍
Memoria
Il refresh avviene ad intervalli fissi,
fissi,
occupa il 2% del tempo, ed avviene
per righe
16
Memoria
DRAM: Decodifica su due livelli
SSRAM e SDRAM
DRAM usa un decoder a due livelli
Synchronous SRAM e DRAM (SSRAM e SDRAM)
❍
❍
❍
❍
❍
Indirizzo di memoria (n bit) suddiviso in row address (n/2 bit) e
column address (n/2 bit)
Accesso di riga seguito da accesso di colonna
Segnale di controllo RAS: Row Address Strobe
Segnale di controllo CAS: Column Address Strobe
Segnali inviati consecutivamente sugli stessi pin
permettono di aumentare la banda di
trasferimento
❍
❍
Indirizzo 22 bit suddiviso in 11
bit per la riga e 11 bit per la
colonna
Accesso ottimizzato a bit di
memoria consecutivi
Tramite i column latches
celle consecutive di memoria
stanno sulla stessa riga
Row address
❍
Row
decoder
11-to-2048
Address[10–0]
Possibilita’
Possibilita’ di specificare (tramite MMU) che si vuole
trasferire dalla memoria un burst di dati
Burst=sequenza
Burst=sequenza di celle consecutive, specificato da un
indirizzo di partenza ed dalla lunghezza
Le celle sono contenute all’
all’interno di una stessa riga
– Quindi nei column latches
La memoria trasferisce una delle celle del burst sul bus dati
ad ogni ciclo di clock
Migliore Banda di Trasferimento
Esempio: Memoria DRAM 4Mx1
(4 Mbit)
Mbit) con una matrice
2048x2048
17
2048 × 2048
array
Column latches
Column address
Mux
Memoria
Dout
18
Memoria
19
Problema: Divario delle prestazioni CPUmemoria
Tipi di Memoria a Semiconduttore
SRAM (Static
CPU
Capacità: 2x / 3 anni
Velocità: 2x / 3 anni
RAM): a flipflip-flop,
flop, molto veloce (~5
nsec)
nsec)
DRAM (Dynamic RAM): basata su capacità
capacità parassite;
richiede refresh, alta densità
densità, basso costo (~70 nsec)
nsec)
SSRAM/SDRAM (Synchronous DRAM)
Prestazioni
❍
1000
Sincrona (scambia dati con il processore in sincronia con un
segnale di clock esterno), prestazioni migliori
PROM (Programmable ROM)
EPROM (Erasable PROM): raggi UV
“Legge di Moore”
100
Divario di prestazione
processore-memoria:
(aumenta 50% / anno)
10
DRAM
Capacità: 4x / 3 anni
Velocità: 2x / 10 anni
1
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
EEPROM: cancellabile elettricamente
Flash Memory:
Memory: tipo di EEPROM
Tempo
Memoria
20
Obiettivo: Illusione di una Memoria Grande, Veloce
ed Economica
La memoria di un calcolatore è implementata come una gerarchia
di memoria
❍
Come creare una memoria che sia grande,
economica e veloce (per la maggior parte del
tempo)?
❍
21
Gerarchia di memoria
Osservazioni:
❍ Le memorie di grandi dimensioni sono lente
❍ Le memorie veloci hanno dimensioni piccole
❍
Memoria
Differenti tempi di accesso e di costo corrispondenti ai diversi
livelli di memoria
CPU
Aumenta il tempo di
accesso
Gerarchia
Parallelismo
Aumenta la capacità
di memorizzazione
Diminuisce il costo
per bit
Livello 1
Livello 2
.
.
.
Livello n
Dimensione della memoria ad ogni livello
Memoria
22
Memoria
23
Principio di località
Gerarchia di memoria (2)
Obiettivi della gerarchia di memoria:
❍ Fornire all’
all’utente una quantità
quantità di memoria pari a quella
disponibile nella tecnologia più
più economica
❍ Fornire una velocità
velocità di accesso pari a quella garantita
dalla tecnologia più
più veloce
Osservazione: i programmi accedono ad una porzione
relativamente piccola del loro spazio di indirizzamento
Esistono due tipi differenti di località
località
1. Località
Località temporale (nel tempo): se un elemento (dato o
istruzione) è stato acceduto, tenderà
tenderà ad essere acceduto
nuovamente in un tempo ravvicinato
2. Località
Località spaziale (nello spazio): se un elemento (dato o
istruzione) è stato acceduto, gli elementi i cui indirizzi sono
vicini tenderanno ad essere acceduti in un tempo ravvicinato
Esempio
Processor
Control
On-Chip
Cache
Registers
Datapath
Second
Level
Cache
(SRAM)
Main
Memory
(DRAM)
Speed (ns): 1
10
100
Size (bytes): 100
K
M
Secondary
Storage
(Disk)
10,000,000
(10 ms)
G
Tertiary
Storage
(Tape)
❍
❍
Probabilità
di
riferimento
10,000,000,000
(10 sec)
T
Memoria
24
Principio di località (2)
2. Località
Località spaziale
❍ Spostando blocchi contigui di parole al livello superiore
❍
25
Costituito dalla memoria cache
Livelli di memoria inclusivi
❍ Tutti i dati sono memorizzati nel livello più
più basso
❍ Un livello superiore, più
più vicino al processore, contiene un
sottoinsieme di informazioni dei livelli inferiori
Memoria di
Livello Inf.
Migrazione dei dati fra livelli della gerarchia
❍ I dati vengono di volta in volta copiati solo tra livelli
adiacenti
Blk X
Dal Processore
Memoria
calcolatore è implementata come una gerarchia di
memoria
Solo il livello più
più alto della gerarchia di memoria è
a contatto diretto con il processore
Tenendo gli elementi acceduti più
più frequentemente vicino
al processore
Al Processore Memoria di
Superiore
n
Spazio di indirizzamento 2 -1
Basandosi sul principio di località
località, la memoria di un
Località
Località temporale
❍
0
Gerarchia di memoria (3)
Come sfruttare la:
1.
I programmi contengono cicli: le istruzioni ed i dati saranno
acceduti ripetutamente (località
località temporale)
Gli accessi agli elementi di un array presentano un’
un’elevata località
località
spaziale; nell’
nell’esecuzione di un programma è altamente probabile
che la prossima istruzione sia contigua a quella in esecuzione
Blk Y
Memoria
26
Memoria
27
Migrazione dei dati
Memoria Cache
Blocco: la minima unità
unità di informazione che può essere
trasferita tra due livelli adiacenti
Hit (successo): il dato richiesto dal processore è presente in
un blocco del livello superiore
In caso contrario si ha un miss (fallimento):il livello inferiore
della gerarchia deve essere acceduto per recuperare il blocco
contenente il dato richiesto
La memoria principale (DRAM) è sempre più
più lenta del processore e
tende a rallentarlo
Sono disponibili memorie più
più veloci (SRAM) ma solo per dimensioni
limitate
La cache opera alla velocità
velocità del processore, e quindi nasconde la
“lentezza”
lentezza” della memoria
Processore
❍
Scopo della cache: disaccoppiare le velocità
velocità di processore e RAM
Contiene le ultime porzioni di memoria acceduta: se il processore
processore
richiede l’l’accesso ad una di esse evita un accesso alla memoria
Funziona bene sfruttando il principio di località
località dei riferimenti
Memoria
28
Memoria
Hit rate e tempo medio di accesso in
memoria
Strategia di Utilizzo della Cache
La prima volta che il processore richiede dei dati si
ha un cache miss
❍
29
Hit rate: frazione degli accessi in memoria risolti nel livello
superiore della gerarchia di memoria
I dati vengono caricati dalla memoria principale e vengono
copiati anche nella cache
Hit rate = numero di hit / numero di accessi in memoria
Le volte successive, quando il processore richiede
Miss rate: 1 – (Hit rate)
l’accesso ad una cella di memoria
❍
Se il dato è presente in un blocco contenuto nella cache,
la richiesta ha successo ed il dato viene passato
direttamente al processore
Tempo medio di accesso in memoria (AMAT):
AMAT = c h+ (1(1-h)m
Si verifica un cache hit
❍
❍
Altrimenti la richiesta fallisce ed il blocco contenente il
dato viene anche caricato nella cache e passato al
processore
❍
❍
❍
Si verifica un cache miss
Obiettivo: aumentare quanto più
più possibile il tasso
di cache hit
❍
Memoria
30
c: hit time (tempo di accesso alla cache)
h: hit rate
1-h: miss rate
m: miss penalty=access time + transfer time (tempo per accedere al
livello inferiore della gerarchia di memoria più
più tempo per trasferire
il blocco dal livello inferiore della gerarchia)
Hit time << miss penalty
Memoria
31
Come è gestita la gerarchia di memoria?
Registri ↔ Memoria
❍ Dal compilatore (programmatore?)
Cache ↔ Memoria
❍ Dall’hardware
Memoria ↔ Dischi
❍ Dall’hardware e dal sistema operativo (memoria virtuale)
❍ Dal programmatore (file)
Memoria
32