Skocz do: nawigacji, wyszukiwania

MICLAB:Architektura Intel MIC - Struktura cache


Architektura akceleratorów obliczeniowych firmy Intel

dr inż. Łukasz Szustak, Politechnika Częstochowska, IITiS
mgr inż. Kamil Halbiniak, Politechnika Częstochowska, IITiS



Struktura pamięci podręcznej


Rdzenie w architekturze Intel MIC cechuje tradycyjna hierarchia pamięci podręcznej. Każdy rdzeń posiada dwupoziomową pamięć podręczną. Rozmiar pamięci podręcznej poziomu pierwszego wynosi 64KB, z czego połowa stanowi pamięć podręczną instrukcji programu (L1I), natomiast druga połowa to pamięć podręczna dla danych (L1D). Czas dostępu do niej to jeden cykl zegara. Rozmiar pamięci podręcznej poziomu drugiego wynosi 512 KB a czas dostępu do niej wynosi około 11 cykli zegara. Pamięć podręczna poziomu drugiego posiada sprzętowy prefetcher, umożliwiający pobieranie danych wyprzedzeniem. Oferuje ona również wsparcie dla korekcji błędów (ECC). Szczegółowa charakterystyka pamięci podręcznej koprocesora Intel Xeon Phi przedstawiona została w Tabeli 1.


Tabela 1. Charakterystyka pamięci podręcznej w architekturze Intel MIC
L1 cache L2 cache
Rozmiar 32KB + 32 KB 512 KB
Czas dostępu 1 cykl zegara 11 cykli zegara
Rozmiar linii 64 bajty 64 bajty
Asocjatywność 8-drożna 8-dorżna
Liczba banków 8 8
Spójność MESI MESI
Zastępowanie danych pseudo LRU pseudo LRU
Pobieranie danych z
wyprzedzeniem (Prefetching)
programowe programowe oraz sprzętowe


W architekturze Intel MIC nie występuje pamięć podręczna poziomu trzeciego. Współdzielenie pamięci podręcznej odbywa się poprzez magistralę łączącą wszystkie rdzenie na poziomie pamięci podręcznej poziomu drugiego. Rozmiar pamięci podręcznej ostatniego poziomu (LLC) uzależniony jest zatem od liczby rdzeni. W przypadku koprocesorów 57 rdzeniowych rozmiar LLC wynosi 28,5MB, natomiast 61 rdzeniowych 30,5 MB.


Produkty bazujące na architekturze Intel MIC zarządzanie pamięcią wirtualną przy pomocy 4 KB (standardowych), 64 KB (niestandardowych) oraz 2 MB (dużych i standardowych) stron pamięci. Pamięć podręczna, zarówno poziomu pierwszego jak i poziomu drugiego posiada własny bufor TLB (Translation Lookaside Buffer), który zawiera fragmenty tablicy stron pamięci głównej. Bufor ten posiada stałą liczbę wpisów i wykorzystywany jest do przyspieszenia translacji adresów fizycznych na adresy wirtualne. Każdy rdzeń posiada własny bufor TLB instrukcji (ITLB) oraz dwu-poziomowy bufor TLB danych (L1 oraz L2 DTLB). Dokładna charakterystyka TLB koprocesora przedstawiona została w Tabeli 2.


Tabela 2. Charakterystyka bufora TLB w architekturze Intel MIC
Bufor TLB Rozmiar strony Liczba wpisów Asocjatywność
L1 DTLB 4 KB
2 MB
64
8
4-drożna
L1 ITLB 4 KB 32 4-drożna
L2 DTLB 4 KB, 64 KB, 2MB 64 4-drożna


W przypadku L2 DTLB nie ma ograniczeń związanych z mieszaniem rozmiarów stron w odróżnieniu do pozostałych buforów (L1 ITLB oraz L1 DTLB). Użycie mniejszych stron pamięci spowoduje mniejsze odwzorowanie pamięci głównej. Dwu-megabajtowe strony pamięci w połączeniu z dużymi zestawami danych mogą zapewnić wzrost wydajności obliczeń, wynikający z większej ilości trafionych odwołań do bufora niż ma to miejsce w przypadku stron o rozmiarze 4 KB. Jednakże wykorzystanie stron o dużym rozmiarze wymaga alokacji pamięci przy użyciu dedykowanych do tego celu bibliotek. 64 KB strony pamięci nie są wspierane przez system operacyjny uruchomiony na koprocesorze. Zastosowanie ich wymaga instalacji dedykowanych dodatków do jądra systemu, przez co nie cieszą się zbyt wysoką popularnością.

Mechanizm translacji stron umożliwia aplikacjom wykorzystanie zdecydowanie większej przestrzeni adresowej niż jest to możliwe. Rozmiar fizycznego adresu jest zaimplementowany sprzętowo. Koprocesor wspiera 32-bitowe adresy fizyczne w trybie 32-bitowym, 36-bitowe rozszerzone adresy fizyczne w trybie 32-bitowym oraz 40-bitowe adresy w trybie 64- bitowym. Tryb 64-bitowy oferuje architektoniczne wsparcie dla aplikacji, dzięki czemu możliwe jest wykorzystanie 64-bitowych adresów liniowych, które mogą zostać wykorzystane do mapowania adresów fizycznych o rozmiarze mniejszym niż 64-bity. System operacyjny uruchomiony na koprocesorze wykorzystuje cztero-poziomową hierarchę stronnicowania. Adresy liniowe generowane przez aplikacje grupowane są według określonego przedziału długości zwanego stroną.



< Architektura Intel MIC - Jednostka wektorowa

Architektura Intel MIC - Pamięć główna >