2 - Katedra Informatyki > Home

Transkrypt

2 - Katedra Informatyki > Home
Architektura systemów komputerowych
Pamięć główna, pamięć cache
Cezary Bolek
Katedra Informatyki
Plan wykładu
Szybkość pamięci
Pamięć główna
SRAM
DRAM
Pamięć podręczna
Zasady lokalności
Mapowanie bloków pamięci
mapowanie bezpośrednie
mapowanie skojarzeniowe pełne
mapowanie sekcyjno-skojarzeniowe
Architektura systemów komputerowych
Cezary Bolek
2
Technologia
Static RAM (SRAM)
Ułamki nanosekund
$2000 – $5000 za GB
Dynamic RAM (DRAM)
50ns – 70ns
$20 – $75 za GB
Dyski magnetyczne
5ms – 20ms
$0.20 – $2 za GB
Architektura systemów komputerowych
Cezary Bolek
3
RAM – Random Access Memory
Macierz komórek pamięciowych
RAM
n
Pamięć ulotna
Address
Przechowuje dane tak długo, jak jest zasilana
Data
m
CS
R/W
Dostęp swobodny - Random Access
Czas dostępu praktycznie taki sam do kaŜdej komórki pamięci
Sygnał sterujący – Chip Select (CS)
Wybór aktywnego układu
Sygnał sterujący – Read/Write (R/W)
Operacja – Odczyt/Zapis
Układ RAM 2n × m RAM: n-bitowy adres i m-bitowe dane
Architektura systemów komputerowych
Cezary Bolek
4
Przykładowa struktura pamięci RAM
Dekoder kolumny
Wybór kolumny do
odczytu/zapisu
10
...
Wybór wiersza do odczytu/zapisu
Row address
Row Decoder
Dekoder wiersza
1024 × 1024
Cell Matrix
Macierz komórek pamięci
...
2D array of tiny memory cells
Data
Wzmacniacze odczytu/zapisu
Sense/write amplifiers
R/W
...
Wzmacnianie sygnałów danych
Sterowanie/wzmacnianie danych wejściowych
10
Te same linie sygnałowe dla wej. i wyj.
Architektura systemów komputerowych
Column Decoder
Column address
Cezary Bolek
5
Komórka pamięci statycznej - SRAM
Static RAM (SRAM) – szybka lecz droga
Stosowana najczęściej jako pamięć cache
Krótki czas dostępu
6 tranzystorów MOS
(znikomy prąd w stanie statycznym)
Word line
Realizacja
Vcc
Dwa inwertery
Dwa tranzystory sterujące –
wybór komórki do odczytu/zapisu
Dekoder wiersza wybiera
linie wiersza (word line)
bit
bit
Typowa komórka SRAM
Architektura systemów komputerowych
Cezary Bolek
6
Komórka pamięci dynamicznej - DRAM
Dynamic RAM (DRAM): wolna ale tania, duŜa gęstość upakowania
komórek
Stosowana najczęściej jako główna pamięć operacyjna
Realizacja:
Kondensator (typu trench)
Word line
Tranzystor sterujący
Bit przechowywany jako ładunek w kondensatorze
Pass
Transistor
Pamięć musi być okresowo odświeŜana
Z uwagi na wyciek ładunku z pojemności
Capacitor
OdświeŜanie
bit
Odczyt kaŜdego wiersza i ponowny zapis w celu
odświeŜenia stanu ładunku pojemności
Architektura systemów komputerowych
Typowa komórka DRAM
Cezary Bolek
7
Cykl odświeŜania pamięci DRAM
Okres cyklu odświeŜania – dziesiętne części milisekundy
OdświeŜanie musi być odniesione do całej pamięci
KaŜdy wiersz pamięci jest czytany i zapisywany ponownie
w celu odzyskania stanu ładunku
Cykle odświeŜania wpływają na szybkość pamięci
Napięcie
poziom 1
1 zapisana
odświeŜenie
odświeŜenie
odświeŜenie
Napięcie
progowe
Napięcie
poziom 0
0 przech.
Cykl
odświeŜania
Architektura systemów komputerowych
Czas
Cezary Bolek
8
Spadek wydajności spowodowana odświeŜaniem
Przykład:
Układ DRAM 256 Mb
Organizacja wewnętrzna: macierz 16K × 16K komórek
Wiersze muszą być odświeŜane przynajmniej co 50 ms
OdświeŜenie wiersza trwa 100 ns
Jaki jest udział cykli odświeŜania w ogólnym czasie pracy ?
Rozwiązanie:
OdświeŜenie wszystkich 16K wierszy trwa: 16 × 1024 × 100 ns =
1.64 ms
Strata 1.64 ms na kaŜde 50 ms
Spadek wydajności = 1.64 / 50 = 3.3%
Architektura systemów komputerowych
Cezary Bolek
9
Trend przy produkcji pamięci DRAM
Do 1996 pojemność pamięci zwiększana czterokrotnie co 3 lata
Od 1996 podwajana co 2 lata
Rok
1980
1983
1985
1989
Pojemność
64
256
1
4
Kbit
Kbit
Mbit
Mbit
Koszt MB
Łączny czas
dostępu do
nowego wiersza
Czas dostępu do
kolumny w
danym wierszu
$1500.00
$500.00
$200.00
$50.00
250 ns
185 ns
135 ns
110 ns
150 ns
100 ns
40 ns
40 ns
1992
16 Mbit
$15.00
90 ns
30 ns
1996
64 Mbit
$10.00
60 ns
12 ns
1998
128 Mbit
$4.00
60 ns
10 ns
2000
256 Mbit
$1.00
55 ns
7 ns
2002
512 Mbit
$0.25
50 ns
5 ns
2004
1024 Mbit
$0.10
45 ns
3 ns
Architektura systemów komputerowych
Cezary Bolek
10
Poszerzanie szyny danych
Układy pamięci mają z reguły wąskie szyny danych
Poszerzenie szerokości szyny danych (p-krotne)
Zastosowanie p układów RAM i podanie tych samych sygnałów na
magistralę adresową
Zastosowanie tych samych sygnałów sterujących dla CS oraz R/W
CS
R/W
CS
Address
R/W
CS
...
Address
Data
Data
m
..
R/W
Address
Data
m
Szerokość szyny danych = m × p bitów
Architektura systemów komputerowych
Cezary Bolek
11
Zwielokrotnienie rozmiary pamięci 2k krotnie
Address
Zastosowanie dekodera k na 2k wybierającego jeden z 2k
układów
Młodsze n bitów podawane na wejścia adresowe wszystkich układ.
Starsze k bitów dekodowane w celu wybrania (CS) jednego z układ.
n+k k
n
k to 2k
decoder
Wspólne szyny danych układów
Tylko wybrany (CS) czyta/zapisuje dane
...
CS
R/W
CS
R/W
Address
Address
Data
Data
m
Architektura systemów komputerowych
m
m
Cezary Bolek
CS
...
R/W
Address
Data
Data width = m bits
m
12
Luka wydajności procesor-pamięć
CPU: 55% na rok
Performance
1000
Prawo Moore’a
100
Luka wydajności
procesor-pamięć:
(rośnie 50% co roku)
10
DRAM: 7% na rok
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
1
1980 – Brak pamięci cache w procesorach
1995 – Dwupoziomowa pamięć cache w procesorach
Architektura systemów komputerowych
Cezary Bolek
13
Potrzeba stosowania pamięci podręcznej (Cache)
Rosnąca luka wydajności między procesorem a pamięcią
Czas realizacji instrukcji przez procesor – poniŜej 1 ns
Pamięć główna potrzebuje ponad 50 ns w celu odczytania danych
KaŜda instrukcja procesora przynajmniej raz odwołuje się do pamięci
Pobranie kodu instrukcji z pamięci
Odczyt, zapis danych na których operuje program
Ograniczona szybkość pamięci zmniejsza wydajność pracy procesora
Pamięć podręczna pozwala wypełnić lukę wydajności procesor-pamięć
główna
Pamięć podręczna jest małą lecz bardzo szybka
Architektura systemów komputerowych
Cezary Bolek
14
Typowa hierarchia pamięci
Rejestry
Typowy rozmiar < 1 KB
Czas dostępu < 0,5 ns
Cache poziomu 1 (8 – 64 KB)
Procesor
Czas dostępu: 0,5 – 1 ns
Cache poziomu 2 (512KB – 8MB)
Rejestry
L1 Cache
Pamięć główna (1 – 4 GB)
L2 Cache
Czas dostępu: 50 – 70 ns
Pamięć masowa (> 200 GB)
Szybsze
Czas dostępu: 2 – 10 ns
Czas dostępu: milisekundy
Większe
Szyna danych
Memory
Magistrala I/O
HDD, etc
Architektura systemów komputerowych
Cezary Bolek
15
Zasady lokalności dostępu do danych
Programy odwołują się do niewielkiej części przestrzeni adresowej
W danej chwili tylko niewielka porcja instrukcji i danych jest wykorzystywana
Zasada lokalności w czasie
JeŜeli realizowany był dostęp do określonych instrukcji lub danych, to
wkrótce nastąpi to ponownie
W pętli, te same instrukcje odczytywane są wielokrotnie podczas kaŜdej
iteracji
Instrukcje naleŜące do podprogramów są najczęściej odczytywane
wielokrotnie
Zasada lokalności w przestrzeni
jeśli jakaś instrukcja lub dana była raz odczytana, to inne instrukcje lub dane
blisko niej będą równieŜ odczytane
Sekwencyjne odczytywanie instrukcji
Dostęp do danych tablicowych (trawersowanie)
Architektura systemów komputerowych
Cezary Bolek
16
Czym jest pamięć cache ?
Szybka pamięć (krótki czas dostępu) wykonana najczęściej
w technologii SRAM
Przechowująca podzbiór wykonywanych instrukcji oraz
analizowanych danych, pierwotnie umieszczonych w pamięci
głównej (operacyjnej)
Stosowana w celu redukcji czasu dostępu do pamięci
Cache korzysta z zasady lokalności w czasie...
Przechowując ostatnio odczytane dane blisko procesora
Cache korzysta z zasady lokalności w przestrzeni...
Odczytując przyległe do siebie instrukcje i dane
Celem jest:
Zwiększenie wydajności dostępu do instrukcji i danych
WywaŜenie stosunku kosztu-szybkości podsystemu pamięci
Architektura systemów komputerowych
Cezary Bolek
17
Pamięć podręczna na ścieŜce danych
Data_in
Data
Cache
m
u
x
WriteData
m
u
x
Address
Rw
Rd
m
u
x
ALU result
File
Address
m
u
x
B
Register
Rt
A
L
U
Rw
Rs
ALU result
Ext
m
u
x
Rw
Instruction
PC
m
u
x
Instruction
Cache
Instruction
00
PCSrc
A
Imm16
B
Imm26
Imm16
Next
PC
NPC
Inc
Control
Address
Data
Interfejs między CPU i pamięcią
Pamięć główna
Architektura systemów komputerowych
Cezary Bolek
18
Prawie wszystko jest pamięcią podręczną
W architekturze systemu komputerowego prawie wszystkie
podsystemy korzystają z koncepcji pamięci podręcznej !
Rejestry: cache dla zmiennych – zarządzane programowo
Cache poziomu 1: cache dla cache poziomu 2
Cache poziomu 2: cache dla pamięci głównej
Pamięć główna: cache dla pamięci masowej
Przechowywanie programów i danych, z których korzystają
Pamięć masowa moŜe być traktowany jako rozszerzenie pamięci
głównej
Architektura systemów komputerowych
Cezary Bolek
19
Aspekty realizacji pamięci cache
Mapowanie bloku pamięci
Kojarzenie bezpośrednie, mapowanie bezpośrednie - direct mapped
Kojarzenie dowolne, mapowanie skojarzeniowe pełne - full associative
Kojarzenie zestawami/kanałami, mapowanie sekcyjno-skojarzeniowe - set
associative
Identyfikacja bloku pamięci
Adres bloku
Znacznik
Indeks
Strategia wymiany bloków pamięci
Zastępowanie
Najdawniej uŜywany LRU (Least Recently Used)
Najrzadziej uŜywany (Least Frequently Used)
Kolejka FIFO
Strategie zapisu
Zapis przeźroczysty - write-through
Zapis zwrotny - write-back
Architektura systemów komputerowych
Cezary Bolek
20
Mapowanie bezpośrednie bloku pamięci
Blok pamięci: zestaw komórek pamięci przesyłanych
pomiędzy pamięcią główną a pamięcią cache
Bezpośrednio mapowana pamięć podręczna
Dany blok moŜe znajdować się tylko w jednym miejscu w cache
Dla danego przykładu:
000
001
010
011
100
101
110
111
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Pamięć
główna
Indeks pamięci cache =
najmłodsze 3 bity
adresu pamięci głównej
Architektura systemów komputerowych
Cezary Bolek
21
Znaczniki i bity aktualności
Skąd wiadomo, który blok pamięci jest przechowywany w
danym wierszu cache ?
Informacja o adresie zapisywana jest razem z danymi
Wystarczą tylko bardziej znaczące bity określane mianem
znacznika (tag)
JeŜeli w danym wierszu nie ma danych, nie odpowiadają
adresowi lub są nieaktualne
Bit aktualności – validity bit: 1 = są, 0 = nie ma
Dane są odczytywane/zapisywane z/do pamięci głównej i pamięci
cache
Architektura systemów komputerowych
Cezary Bolek
22
Mapowanie bezpośrednie – przykład 1/6
8 wierszy pamięci cache, 1 blok = słowo
Stan początkowy
Nr wiersza
Bit akt.
Znacznik
(indeks)
(Validity)
(Tag)
000
0
001
0
010
0
011
0
100
0
101
0
110
0
111
0
Architektura systemów komputerowych
Dane
Cezary Bolek
23
Mapowanie bezpośrednie – przykład 2/6
Adres
Adres (binarnie)
Trafienie?
Blok cache
22
10 110
Nie
110
Nr wiersza
Bit akt.
Znacznik
(indeks)
(Validity)
(Tag)
000
0
001
0
010
0
011
0
100
0
101
0
110
1
111
0
Architektura systemów komputerowych
10
Cezary Bolek
Dane
Mem[ 10110 ]
24
Mapowanie bezpośrednie – przykład 3/6
Adres
Adres (binarnie)
Trafienie?
Blok cache
26
11 010
Nie
010
Nr wiersza
Bit akt.
Znacznik
(indeks)
(Validity)
(Tag)
000
0
001
0
010
1
011
0
100
0
101
0
110
1
111
0
Architektura systemów komputerowych
Dane
11
Mem[ 11010 ]
10
Mem[ 10110 ]
Cezary Bolek
25
Mapowanie bezpośrednie – przykład 4/6
Adres
Adres (binarnie)
Trafienie?
Blok cache
22
10 110
Tak
110
26
11 010
Tak
010
Nr wiersza
Bit akt.
Znacznik
(indeks)
(Validity)
(Tag)
000
0
001
0
010
1
011
0
100
0
101
0
110
1
111
0
Architektura systemów komputerowych
Dane
11
Mem[ 11010 ]
10
Mem[ 10110 ]
Cezary Bolek
26
Mapowanie bezpośrednie – przykład 5/6
Adres
Adres (binarnie)
Trafienie?
Blok cache
16
10 000
Nie
000
3
00 011
Nie
011
16
10 000
Tak
000
Nr wiersza
Bit akt.
Znacznik
(indeks)
(Validity)
(Tag)
10
Dane
000
1
001
0
010
1
11
Mem[ 11010 ]
011
1
00
Mem[ 00011 ]
100
0
101
0
110
1
10
Mem[ 10110 ]
111
0
Architektura systemów komputerowych
Mem[ 10000 ]
Cezary Bolek
27
Mapowanie bezpośrednie – przykład 6/6
Adres
Adres (binarnie)
Trafienie?
Blok cache
18
10 010
Nie
010
Nr wiersza
Bit akt.
Znacznik
(indeks)
(Validity)
(Tag)
000
1
10
Mem[ 10000 ]
001
0
Dane
010
1
10
11
Mem[ 10010
11010 ]
011
1
00
Mem[ 00011 ]
100
0
101
0
110
1
10
Mem[ 10110 ]
111
0
Architektura systemów komputerowych
Cezary Bolek
28
Bezpośrednio mapowana pamięć podręczna
Adres w pamięci dzielony jest na:
Adres bloku: identyfikacja bloku w pamięci
Offset bloku: identyfikacja bajtów w bloku
Adres pamięci
Adres bloku
Tag
Indeks offset
V Tag
Dane bloku
Adres bloku jest dalej dzielony na:
Indeks: numer wiersza cache, bezp. dostęp
Znacznik (Tag): najbardziej znaczące bity adresu
bloku w pamięci
Indeks = Adres bloku mod Liczba wierszy (blok.) cache
Znacznik (tag) musi być takŜe zapisany w pamięci
cache
W celu identyfikacji bloku
W cache musi być takŜe zapisany bit aktualności
(valid bit)
By oznaczyć aktualność danych
Architektura systemów komputerowych
=
Dane
Trafienie
Cezary Bolek
29
Bezpośrednio mapowana pamięć podręczna
Trafienie odczytu cache: blok znajduje się w
pamięci cache
Adres pamięci
Adres bloku
Indeks adresuje blok (wiersz) w pamięci cache
Znacznik adresu porównywany jest ze znacznikiem
Tag
Indeks offset
V Tag
Dane bloku
w cache
Gdy tagi równe, blok jest aktualny – trafienie (hit)
W przeciwnym przypadku: chybienie (miss)
Gdy liczba wierszy (bloków) cache – równa 2n
n bitów uŜywanych do indeksowania cache
Gdy liczba bajtów w bloku – równa 2b
b bitów uŜywanych do wyznaczenia przesunięcia w
bloku (offset)
Dla 32 bitowej szyny adresowej
32 – n – b bitów uŜywanych na znacznik (tag)
Rozmiar pamięci cache = 2n+b bajtów
=
Dane
Trafienie
Architektura systemów komputerowych
Cezary Bolek
30
Mapowanie adresu w blokach cache
Przykład
Bezpośrednio mapowana pamięć podręczna z 256 blokami
Rozmiar bloku = 16 bajtów
Wyznaczyć tag, indeks oraz offset dla adresu: 0x01FFF8AC
Adres bloku
Rozwiązanie
20
32-bitowy adres dzieli się na:
Tag
8
4
Indeks offset
4-bitowe pole przesunięcia bajtu (byte offset), gdyŜ rozmiar bloku = 24 =
16 bajtów
8-bitowy indeks cache, gdyŜ istnieje 28 = 256 bloków (linii) w cache
20-bitowe pole znacznika (tag)
Offset = 0xC = 12 (4 najmniej znaczące bity adresu)
Indeks cache = 0x8A = 138 (kolejne 8 młodszych bitów adresu)
Tag = 0x01FFF (starsze 20 bitów adresu)
Architektura systemów komputerowych
Cezary Bolek
31
Trafienia i chybienia w cache – przykład
Niewielka bezpośrednio mapowana pamięć podręczna
złoŜona z 32 bloków
Cache jest początkowo pusta, rozmiar bloku = 16 bajtów
Następujące adresy pamięci są odczytywane:
1000, 1004, 1008, 2548, 2552, 2556 (dziesiętnie).
Dokonać mapowania bloków cache i określić czy nastąpiło trafienie
bądź chybienie
23
Rozwiązanie:
1000 = 0x3E8
1004 = 0x3EC
1008 = 0x3F0
2548 = 0x9F4
2552 = 0x9F8
2556 = 0x9FC
Tag
5
4
Indeks offset
indeks cache = 0x1E
indeks cache = 0x1E
indeks cache = 0x1F
indeks cache = 0x1F
indeks cache = 0x1F
indeks cache = 0x1F
Architektura systemów komputerowych
Cezary Bolek
Chybienie (pierwszy dostęp)
Trafienie
Chybienie (pierwszy dostęp)
Chybienie (róŜne tagi)
Trafienie
Trafienie
32
Przykład procesora: Intrinsity FastMATH
Procesor MIPS do urządzeń wbudowanych
Dzielony cache: I-cache (rozkazów) and D-cache (danych)
kaŜdy 16KB: 256 wierszy po 16 słów
Architektura systemów komputerowych
Cezary Bolek
33
Mapowanie skojarzeniowe pełne
Blok moŜe być umieszczony w dowolnym miejscu pamięci
cache ⇒ brak indeksowania
Dla m bloków:
Potrzeba zastosować m komparatorów
Adres
porównujących znaczniki
Rozmiar danych pamięci cache = m ×
V Tag Blok danych
2b
V Tag Blok danych
=
Pamięć podręczna z pełnym
mapowaniem skojarzeniowym –
Fully Associative Cache
Architektura systemów komputerowych
bajtów
Tag
V Tag Blok danych
=
=
offset
V Tag Blok danych
=
mux
Trafienie
Cezary Bolek
Dane
34
Mapowanie sekcyjno-skojarzeniowe
Sekcja jest grupą bloków, które mogą być indeksowane
Blok mapowany jest najpierw do sekcji
Indeks sekcji = Adres bloku mod Liczba sekcji w cache
Dla m bloków w sekcji (m-droŜne odwzorowanie):
m znaczników (tagów) jest sprawdzanych przez m komparatorów
Dla 2n sekcji indeks sekcji składa się z n bitów
Rozmiar danych cache = m × 2n+b bajtów (z 2b bajtami na blok)
Nie licząc znaczników (tagów) i bitów waŜności (validity bit)
Cache mapowany bezpośrednio posiada jeden blok na kaŜdą
sekcję (m = 1)
Pamięć pełna skojarzeniowa posiada tylko jedną
sekcję (2n = 1 czyli n = 0)
Architektura systemów komputerowych
Cezary Bolek
35
Mapowanie sekcyjno-skojarzeniowe – schemat
Adres
V Tag Blok danych
V Tag Blok danych
Tag
V Tag Blok danych
Index
offset
V Tag Blok danych
Sekcja
=
=
=
=
mux
m-droŜne odwzorowanie
Trafienie
Architektura systemów komputerowych
Cezary Bolek
Dane
36
Liczba bloków na sekcję – przykład
Pamięć cache z 8-mioma blokami
DwudroŜna pamięć
sekcyjno-skojarzeniowa
JednodroŜna pamięć
sekcyjno-skojarzeniowa
(mapowana bezpośrednio)
CzterodroŜna pamięć
sekcyjno-skojarzeniowa
OśmiodroŜna pamięć sekcyjno-skojarzeniowa (pełne mapowanie skojarzeniowe)
Architektura systemów komputerowych
Cezary Bolek
37
Ile bloków na sekcję ?
Zwiększenie liczby wierszy w sekcji zmniejsza liczbę
chybień
Ale niezbyt imponująco…
Symulacja systemu z 64KB pamięcią D-cache,16-słowowe
bloki, SPEC2000
1-droŜna: 10,3% (mapowanie bezpośrednie)
2-droŜna: 8,6%
4-droŜna: 8,3%
8-droŜna: 8,1%
Architektura systemów komputerowych
Cezary Bolek
38
Mapowanie sekcyjno-skojarzeniowe – przykład
Architektura systemów komputerowych
Cezary Bolek
39
Koniec
Architektura systemów komputerowych
Cezary Bolek
4
0