Jeśli kiedykolwiek robiłeś wiele zakupów porównawczych dla nowego procesora, być może zauważyłeś, że wszystkie rdzenie wydają się mieć prędkość, a nie kombinację różnych. Dlaczego? Dzisiejszy post z pytaniami i odpowiedziami dla SuperUser zawiera odpowiedź na pytanie zaciekawionego czytelnika.
Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - części Stack Exchange, grupy witryn internetowych z pytaniami i odpowiedziami.
Pytanie
Czytnik SuperUser Jamie chce wiedzieć, dlaczego rdzenie procesora mają tę samą prędkość zamiast różnych:
Ogólnie rzecz biorąc, kupując nowy komputer, należy określić, który procesor kupić, na podstawie oczekiwanego obciążenia komputera. Wydajność w grach wideo jest zwykle określana przez szybkość pojedynczego rdzenia, podczas gdy aplikacje, takie jak edycja wideo, są określane przez liczbę rdzeni. Jeśli chodzi o to, co jest dostępne na rynku, wszystkie procesory wydają się mieć mniej więcej taką samą prędkość, a główne różnice to większa liczba wątków lub rdzeni.
Na przykład:
- Intel Core i5-7600K, częstotliwość podstawowa 3,80 GHz, 4 rdzenie, 4 wątki
- Intel Core i7-7700K, częstotliwość podstawowa 4,20 GHz, 4 rdzenie, 8 wątków
- AMD Ryzen 5 1600X, częstotliwość podstawowa 3,60 GHz, 6 rdzeni, 12 wątków
- AMD Ryzen 7 1800X, częstotliwość podstawowa 3,60 GHz, 8 rdzeni, 16 wątków
Dlaczego widzimy ten wzorzec rosnącej liczby rdzeni, mimo że wszystkie rdzenie mają tę samą częstotliwość taktowania? Dlaczego nie ma wariantów z różnymi częstotliwościami taktowania? Na przykład dwa „duże” rdzenie i wiele małych rdzeni.
Zamiast, powiedzmy, czterech rdzeni 4,0 GHz (tj. 4 × 4 GHz, maksymalnie 16 GHz), co powiesz na procesor z dwoma rdzeniami pracującymi z 4,0 GHz i czterema rdzeniami z 2,0 GHz (tj. 2 × 4,0 GHz + 4 × 2,0 GHz, maksymalnie 16 GHz)? Czy druga opcja byłaby równie dobra w przypadku obciążeń jednowątkowych, ale potencjalnie lepsza w przypadku obciążeń wielowątkowych?
Zadaję to jako pytanie ogólne, a nie konkretnie w odniesieniu do procesorów wymienionych powyżej lub konkretnego obciążenia. Jestem po prostu ciekawy, dlaczego wzór jest tym, czym jest.
Dlaczego wszystkie rdzenie procesora mają tę samą prędkość zamiast różnych?
Odpowiedź
Współautor SuperUser bwDraco ma dla nas odpowiedź:
Jest to znane jako heterogeniczne przetwarzanie wielokrotne (HMP) i jest powszechnie stosowane w urządzeniach mobilnych. W urządzeniach opartych na ARM, które implementują duży mały , procesor zawiera rdzenie o różnych profilach wydajności i mocy, tj. niektóre rdzenie działają szybko, ale pobierają dużo energii (szybsza architektura i / lub wyższe zegary), podczas gdy inne są energooszczędne, ale wolne (wolniejsza architektura i / lub niższe zegary). Jest to przydatne, ponieważ zużycie energii ma tendencję do nieproporcjonalnego wzrostu w miarę zwiększania wydajności po przekroczeniu określonego punktu. Chodzi o to, aby uzyskać wydajność, gdy jej potrzebujesz, i żywotność baterii, gdy jej nie potrzebujesz.
Na platformach stacjonarnych zużycie energii jest znacznie mniejszym problemem, więc nie jest to naprawdę konieczne. Większość aplikacji oczekuje, że każdy rdzeń będzie miał podobną charakterystykę wydajności, a procesy planowania dla systemów HMP są znacznie bardziej złożone niż planowanie dla tradycyjnych symetrycznych systemów wieloprocesorowych (SMP) (technicznie system Windows 10 obsługuje HMP, ale jest przeznaczony głównie dla urządzeń mobilnych urządzenia korzystające z ARM big.LITTLE).
Ponadto większość dzisiejszych procesorów do komputerów stacjonarnych i laptopów nie jest ograniczona termicznie ani elektrycznie do punktu, w którym niektóre rdzenie muszą działać szybciej niż inne, nawet w przypadku krótkich serii. Po prostu trafiliśmy na ścianę jak szybko możemy wykonać poszczególne rdzenie , więc wymiana niektórych rdzeni na wolniejsze nie pozwoli na szybsze działanie pozostałych rdzeni.
Chociaż istnieje kilka procesorów do komputerów stacjonarnych, które mają jeden lub dwa rdzenie zdolne do pracy szybciej niż inne, ta możliwość jest obecnie ograniczona do niektórych bardzo zaawansowanych procesorów Intel (znanych jako Turbo Boost Max Technology 3.0) i wiąże się tylko z niewielkim wzrostem wydajność dla tych rdzeni, które mogą działać szybciej.
Chociaż z pewnością jest możliwe zaprojektowanie tradycyjnego procesora x86 zarówno z dużymi, szybkimi rdzeniami, jak i mniejszymi, wolniejszymi rdzeniami w celu optymalizacji pod kątem obciążeń mocno wątkowych, spowodowałoby to znaczną złożoność konstrukcji procesora i aplikacje raczej nie będą go odpowiednio obsługiwać.
Weź hipotetyczny procesor z dwoma szybkimi Jezioro Kaby (7.generacji) i osiem wolnych Goldmont Rdzenie (Atom). Będziesz mieć w sumie 10 rdzeni, a mocno-wątkowe obciążenia zoptymalizowane dla tego rodzaju procesorów mogą zwiększyć wydajność i wydajność w porównaniu ze zwykłym czterordzeniowym procesorem Kaby Lake. Jednak różne typy rdzeni mają bardzo różne poziomy wydajności, a wolne rdzenie nie obsługują nawet niektórych instrukcji obsługiwanych przez szybkie rdzenie, takich jak AVX (ARM pozwala uniknąć tego problemu, wymagając zarówno dużego, jak i małego rdzenia, aby obsługiwały te same instrukcje).
Ponownie, większość aplikacji wielowątkowych opartych na systemie Windows zakłada, że każdy rdzeń ma taki sam lub prawie taki sam poziom wydajności i może wykonywać te same instrukcje, więc tego rodzaju asymetria może skutkować mniej niż idealną wydajnością, być może nawet ulega awarii, jeśli używa instrukcji nieobsługiwanych przez wolniejsze rdzenie. Chociaż Intel mógłby zmodyfikować wolne rdzenie w celu dodania zaawansowanej obsługi instrukcji, tak aby wszystkie rdzenie mogły wykonywać wszystkie instrukcje, nie rozwiązałoby to problemów z obsługą oprogramowania dla heterogenicznych procesorów.
Inne podejście do projektowania aplikacji, bliższe temu, o czym prawdopodobnie myślisz w swoim pytaniu, polegałoby na wykorzystaniu GPU do przyspieszenia wysoce równoległych części aplikacji. Można to zrobić za pomocą interfejsów API, takich jak OpenCL i CUDA . Jeśli chodzi o rozwiązanie jednoukładowe, AMD promuje sprzętową obsługę akceleracji GPU w swoich APU, która łączy tradycyjny procesor i zintegrowany procesor graficzny o wysokiej wydajności w tym samym układzie, co Heterogeniczna architektura systemu , chociaż nie spotkało się to z dużym zainteresowaniem branży poza kilkoma specjalistycznymi zastosowaniami.
Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych zaawansowanych technicznie użytkowników Stack Exchange? Sprawdź cały wątek dyskusji tutaj .
Źródło zdjęcia: Mirko Waltermann (Flickr)