Czy pamięć podręczna L3 jest współdzielona przez wszystkie rdzenie procesora Sandy-Bridge E Xeon?

12

W pokrewnym pytaniu zapytałem o zalety systemu dwuprocesorowego pod względem podwojenia pamięci podręcznej L3.

Zauważyłem jednak, że seria procesorów Xeon E5-2600 ma dokładnie 2,5 MB pamięci podręcznej L3 na rdzeń .

To prowadzi mnie do przekonania, że ​​system operacyjny rezerwuje 2,5 MB pamięci podręcznej L3 na rdzeń. Mam jednak również sprzeczne wrażenie, że pamięć podręczna L3 jest współdzielona przez wszystkie rdzenie. Zaskakująco mało informacji lub dyskusji na ten temat.

Moje główne obawy dotyczą tego, czy aplikacje działające w tle o niskim priorytecie mogą „zatrzymać” pamięć podręczną L3 i spowolnić wydajność aplikacji pierwszoplanowych o wyższym priorytecie. Dwa konkretne problemy z wydajnością, które motywują to pytanie.

  1. Kompilacja pewnego programu C ++ wymaga 25 minut na moim obecnym systemie programistycznym w VS 2008, podczas gdy w innym systemie działa znacznie szybciej, wymaga tylko 5 minut w VS 2008 z identycznymi ustawieniami - pomimo faktu, że mam prawie wysokiej klasy i7- 970 CPU i wystarczająca ilość pamięci RAM.

  2. Programy często uruchamiają się w moim systemie do 20 sekund (tj. Wyświetlają swoje główne okno); i na pokrewną notatkę, powłoka systemu Windows potrzebuje do 10 sekund, aby wyświetlić menu kontekstowe Eksploratora Windows (i powiązane zachowania również trwają tak długo), pomimo moich prób ograniczenia pozycji menu kontekstowego (obecnie jest może 10 dodatkowych poza domyślny).

Mój system z pewnością jest obciążony bardzo dużą liczbą aplikacji, które zainstalowałem (i odinstalowałem) przez lata, ale staram się jednak usprawnić system.

Mam też wiele działających w tle aplikacji o niskim priorytecie; w szczególności nadmiarowe oprogramowanie do tworzenia kopii zapasowych w chmurze, takie jak CrashPlan, które zwykle stanowi około 25% całkowitego wykorzystania procesora w tym 6-rdzeniowym 12-wątkowym systemie.

Dostanę nowy komputer. Wiem, że będę nadal uruchamiał wiele aplikacji działających w tle oraz instalował / odinstalowywał wiele programów. Gdybym pomyślał, że uzyskanie systemu z dwoma procesorami, który podwaja nie tylko rdzenie, ale pamięć podręczną L3, pomógłby przezwyciężyć straszliwą wydajność kompilatora C ++ i ogólne spowolnienie systemu, chętnie bym to zrobił.

Nie powinno być żadnego powodu, dla którego wysokiej klasy system działa tak wolno, nawet w przypadku wielu programów i aplikacji działających w tle. Ale jeśli wystąpią moje problemy bez względu na to, ile mocy procesora i pamięci podręcznej L3 daję systemowi, po prostu dlatego, że mam zainstalowanych i uruchomionych tak wiele programów i aplikacji działających w tle, nie chcę marnować 2500 USD na dwa procesory system, który nie pomoże rozwiązać mojego problemu.

Wszelkie sugestie, w szczególności dotyczące mojego pytania o to, czy pamięć podręczna L3 jest współużytkowana przez wszystkie rdzenie (takie, że aplikacje w tle o niskim priorytecie mogą wyobrażać sobie pamięć podręczną L3, spowalnianie programów o wyższym priorytecie), a raczej, jeśli jest ona powiązana z indywidualnymi rdzenie byłyby mile widziane.

Dan Nissenbaum
źródło
Dobre pytanie, na które osobiście nie mam dobrej odpowiedzi, prócz powiedzenia, że ​​miałem wrażenie, że L3 został udostępniony. Chciałbym tylko zapytać, dlaczego nazywasz te Xeony „drugiej generacji”, skoro „Xeon” jest produktem Intel od dekady. (Jeśli jest to analogicznie do układów Sandy Bridge i3 /
5/7
Intel określa linię procesorów i7-2600 jako „drugiej generacji” ( ark.intel.com/products/family/59136/... ). Przez „Xeon drugiej generacji” rozumiem równoważne wydanie procesorów architektury Xeon Sandy-Bridge E z 6 marca 2012 r. ( En.wikipedia.org/wiki/... ).
Dan Nissenbaum
1
To jest analogia, którą myślałem, że tworzysz. Jest zły (to są i7s drugiej generacji, ale nie są to Xeony drugiej generacji), a ja zmienię tytuł IMO ... Spodziewałem się znaleźć pytanie na temat 12-letnich procesorów, które mogą zatrzymać wielu ludzi od kliknięcia tutaj. Może zmienić „2. generację” na „Sandy Bridge-E”.
Shinrai
stackoverflow.com/questions/944966/...
Ciro Santilli 4 病毒 审查 六四 事件 法轮功

Odpowiedzi:

13

Na tych procesorach każdy rdzeń fizyczny ma własną pamięć podręczną L2. Pamięć podręczna L3 jest współużytkowana przez wszystkie rdzenie i obejmuje wszystkie - to znaczy wszelkie dane znajdujące się w pamięci podręcznej L2 dowolnego rdzenia również znajdują się w pamięci podręcznej L3.

Chociaż może to wydawać się stratą miejsca w L3, w rzeczywistości sprawia, że ​​L3 jest nieoceniony przy przyspieszaniu operacji pamięci między rdzeniami. Podstawowym celem pamięci podręcznej L3 jest działanie jako centrala i obszar przejściowy dla rdzeni. Na przykład, jeśli jeden rdzeń chce wiedzieć, czy region pamięci może być buforowany przez inny rdzeń, może sprawdzić pamięć podręczną L3. Jeśli informacje były przetwarzane przez jeden rdzeń, a następnie muszą być przetwarzane przez inny rdzeń, przekazują je przez pamięć podręczną L3 zamiast wolniejszej pamięci poza układem. Poza tym jego wpływ na wydajność nie jest aż tak duży, z wyjątkiem niezwykłych algorytmów - pamięć podręczna L2 jest wystarczająco duża dla małych rzeczy, a pamięć podręczna L3 jest zbyt mała dla dużych rzeczy.

Tak więc, chociaż każdy rdzeń ma własną pamięć podręczną L2 256 KB i efektywnie 256 KB zarezerwowaną w pamięci podręcznej L3, równowaga jest współdzielona przez wszystkie rdzenie. Mniej ważna aktywność w innych rdzeniach może zaszkodzić wydajności ważniejszego zadania korzystnego z korzystania z przestrzeni L3. Ale z powodów, o których wspomniałem, generalnie nie ma to znaczącego wpływu w praktyce i generalnie nie warto się martwić o optymalizację operacji „masowych danych” (takich jak kompresja i skanowanie) w celu zminimalizowania zanieczyszczenia pamięci podręcznej. (Na przykład przy użyciu operacji innych niż czasowe).

David Schwartz
źródło
0

Rozumiem, że wszystkie poziomy pamięci podręcznej są implementowane bezpośrednio na układzie, a L2 i L3 są jednym w tym samym (że tylko Intel rozpoznaje różnicę, AMD je łączy). Mając to na uwadze, wyobrażam sobie, że pamięć podręczna L3 na procesorach nie jest dzielona między procesorami na płycie głównej z podwójnym gniazdem. Ma to również sens, biorąc pod uwagę, że typowe jest oddzielne kanały pamięci do pamięci RAM na procesor.

Ktoś mnie popraw, jeśli się mylę.

Stephen R.
źródło
L2 i L3 wcale nie są tym samym. W najnowszych projektach Intela L1 / L2 są zorientowane na rdzeń i małe (zunifikowane L2 32k L1 I $ i D $ / 256k), podczas gdy L3 jest włączone i współdzielone przez GPU i wszystkie rdzenie. L1 / L2 są fizycznie oddzielne, ale w pewnym sensie służą podobnym celom (tj. Zapewniają szybki dostęp do pamięci dla jednego rdzenia). Włączający L3 ma jeszcze jeden cel: spójność między rdzeniami (i GPU). Zobacz odpowiedź @ DavidSchwartz.
Peter Cordes,