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.
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.
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.
źródło
Odpowiedzi:
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).
źródło
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ę.
źródło