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