If-Koubou

Dlaczego rdzenie procesora mają taką samą prędkość zamiast różnych?

Dlaczego rdzenie procesora mają taką samą prędkość zamiast różnych? (Jak)

Jeśli kiedykolwiek robiłeś wiele porównań do zakupu 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 ciekawe pytanie czytelnika.

Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, społecznościowego forum z pytaniami i odpowiedziami.

Pytanie

Czytnik SuperUser Jamie chce wiedzieć, dlaczego rdzenie procesora mają tę samą prędkość, a nie różne:

Ogólnie rzecz biorąc, jeśli kupujesz nowy komputer, możesz określić, który procesor kupić, na podstawie oczekiwanego obciążenia pracą komputera. Wydajność w grach wideo jest zwykle określana przez szybkość pojedynczego rdzenia, podczas gdy aplikacje, takie jak edycja wideo, zależą od liczby rdzeni. Pod względem tego, 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ęcej wątków lub więcej 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 gwintów
  • AMD Ryzen 7 1800X, częstotliwość podstawowa 3,60 GHz, 8 rdzeni, 16 wątków

Dlaczego widzimy ten wzór rosnących rdzeni, ale wszystkie rdzenie mają tę samą prędkość zegara? Dlaczego nie ma wariantów z różnymi prędkościami zegara? Na przykład dwa "duże" rdzenie i wiele małych rdzeni.

Zamiast, powiedzmy, cztery rdzenie o częstotliwości 4,0 GHz (tj. 4 × 4 GHz, maksymalnie 16 GHz), to jak o procesorze z dwoma rdzeniami działającymi z częstotliwością 4,0 GHz i czterema rdzeniami pracującymi z częstotliwością 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ń z jednym gwintem, ale potencjalnie lepiej w przypadku obciążeń wielowątkowych?

Pytam to jako ogólne pytanie, a nie szczególnie w odniesieniu do procesorów wymienionych powyżej lub o jednym konkretnym obciążeniu pracą. Jestem tylko ciekawy, dlaczego wzór jest taki, jaki jest.

Dlaczego rdzenie procesorów mają tę samą prędkość, a nie różne?

Odpowiedź

Pomocnik SuperUser bwDraco ma dla nas odpowiedź:

Jest to tak zwane heterogeniczne przetwarzanie wielostanowiskowe (HMP) i jest szeroko stosowane na urządzeniach mobilnych. W urządzeniach opartych na ARM, które implementują big.LITTLE, procesor zawiera rdzenie o różnych parametrach wydajności i mocy, tzn. 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 wolniejsze ( wolniejsza architektura i / lub niższe zegary). Jest to użyteczne, ponieważ zużycie energii wzrasta nieproporcjonalnie, ponieważ zwiększasz wydajność, gdy przekroczysz określony punkt. Chodzi o to, aby uzyskać wydajność, gdy jej potrzebujesz i żywotność baterii, gdy tego nie robisz.

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ń ma podobną charakterystykę wydajności, a procesy szeregowania 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ść procesorów do komputerów stacjonarnych i przenośnych nie jest obecnie termicznie lub elektrycznie ograniczona do punktu, w którym niektóre rdzenie muszą działać szybciej niż inne, nawet w przypadku krótkich serii. Zasadniczo uderzyliśmy w ścianę o tym, jak szybko możemy wykonać pojedyncze rdzenie, więc zastąpienie niektórych rdzeni wolnymi 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 zdolność jest obecnie ograniczona do niektórych bardzo zaawansowanych procesorów Intel (znanych jako Turbo Boost Max Technology 3.0) i obejmuje tylko niewielki wzrost wydajność dla tych rdzeni, które mogą działać szybciej.

Choć z pewnością możliwe jest zaprojektowanie tradycyjnego procesora x86 z dużymi, szybkimi rdzeniami i mniejszymi, wolniejszymi rdzeniami, aby zoptymalizować je pod kątem obciążeń o dużej liczbie wątków, zwiększyłoby to znacznie złożoność projektu procesora, a aplikacje raczej go nie obsłużyły.

Weź hipotetyczny procesor z dwoma szybkimi rdzeniami Kaby Lake (7 generacji) i ośmioma wolnymi rdzeniami Goldmont (Atom). Miałbyś w sumie 10 rdzeni, a mocno obciążone obciążenia zoptymalizowane pod kątem tego rodzaju procesora mogą zwiększyć wydajność i wydajność w porównaniu do normalnego czterordzeniowego procesora Kaby Lake. Jednak różne typy rdzeni mają bardzo różne poziomy wydajności, a powolne rdzenie nie obsługują nawet niektórych instrukcji obsługiwanych przez szybkie rdzenie, takich jak AVX (ARM unika tego problemu, wymagając zarówno dużych, jak i LITTLych rdzenie obsługujących te same instrukcje ).

Ponownie, większość opartych na systemie Windows wielowątkowych aplikacji 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 ten rodzaj asymetrii prawdopodobnie spowoduje mniej niż idealną wydajność, być może nawet ulega awarii, jeśli używa instrukcji, które nie są obsługiwane przez wolniejsze rdzenie. Podczas gdy Intel mógł modyfikować wolne rdzenie w celu dodania zaawansowanej obsługi instrukcji, tak aby wszystkie rdzenie mogły wykonywać wszystkie instrukcje, to nie rozwiązałoby problemów z obsługą oprogramowania dla heterogenicznych procesorów.

Inne podejście do projektowania aplikacji, bliżej tego, o czym prawdopodobnie myślisz w swoim pytaniu, wykorzystywałoby GPU do przyspieszania bardzo 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ą akcelerację GPU w swoich APU, która łączy tradycyjny procesor i wydajne zintegrowane GPU w tym samym chipie, co Heterogeneous System Architecture, choć nie widziało to większego zainteresowania kilku specjalistycznych aplikacji.

Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.

Image Credit: Mirko Waltermann (Flickr)