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