Skip to content

Jak obliczyć szybkość procesora na procesorach wielordzeniowych?

4 de sierpień de 2021
sshot5092c2322cada

Pojawienie się ekonomicznych wielordzeniowych procesorów klasy konsumenckiej stawia wielu użytkownikom pytanie: jak skutecznie obliczyć rzeczywistą prędkość systemu wielordzeniowego? Czy 4-rdzeniowy system 3 Ghz to naprawdę 12 GHz? Czytaj dalej, gdy badamy.

Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser — pododdziału Stack Exchange, społecznościowej grupy witryn internetowych z pytaniami i odpowiedziami.

Pytanie

Czytnik SuperUser NReilingh był ciekawy, jak faktycznie obliczana jest prędkość procesora dla systemu wielordzeniowego:

Czy słuszne jest stwierdzenie, że na przykład procesor z czterema rdzeniami pracującymi z częstotliwością 3 GHz jest w rzeczywistości procesorem pracującym z częstotliwością 12 GHz?

Kiedyś wdałem się w kłótnię „Mac kontra PC” (która, nawiasem mówiąc, NIE jest głównym tematem tego tematu… która była w gimnazjum) ze znajomym, który upierał się, że komputery Mac są reklamowane tylko jako maszyny 1 GHz, ponieważ są podwójne -procesor G4s każdy działający z częstotliwością 500 MHz.

W tamtym czasie wiedziałem, że to bzdury z powodów, które moim zdaniem są oczywiste dla większości ludzi, ale właśnie zobaczyłem komentarz na tej stronie dotyczący efektu „6 rdzeni x 0,2 GHz = 1,2 GHz” i to sprawiło, że ponownie się zastanowiłem, czy jest na to prawdziwa odpowiedź.

Jest to więc mniej lub bardziej filozoficzne/głębokie techniczne pytanie dotyczące semantyki obliczania szybkości zegara. Widzę dwie możliwości:

  1. Każdy rdzeń w rzeczywistości wykonuje x obliczeń na sekundę, więc łączna liczba obliczeń wynosi x (rdzenie).
  2. Szybkość zegara to raczej liczba cykli, które procesor przechodzi w ciągu sekundy, więc dopóki wszystkie rdzenie działają z tą samą szybkością, szybkość każdego cyklu zegara pozostaje taka sama bez względu na to, ile rdzeni istnieje . Innymi słowy, Hz = (rdzeń1Hz+rdzeń2Hz+…)/rdzenie.

Jaki jest zatem właściwy sposób określenia całkowitej częstotliwości zegara i, co ważniejsze, czy w systemie wielordzeniowym można w ogóle zastosować jednordzeniową nomenklaturę prędkości?

Odpowiedź

Współtwórcy SuperUser Mokubai pomaga wyjaśnić sytuację. On pisze:

Głównym powodem, dla którego czterordzeniowy procesor 3 GHz nigdy nie jest tak szybki, jak jednordzeniowy 12 GHz, jest sposób działania zadania uruchomionego na tym procesorze, tj. jednowątkowego lub wielowątkowego.Prawo Amdahlajest ważne przy rozważaniu rodzajów wykonywanych zadań.

Jeśli masz zadanie, które jest z natury liniowe i musi być wykonane dokładnie krok po kroku, takie jak (rażąco prosty program)

10: a = a + 1

20: goto 10

Wtedy zadanie zależy w dużym stopniu od wyniku poprzedniego przebiegu i nie może uruchomić wielu kopii samego siebie bez uszkodzenia wartości'a'ponieważ każda kopia otrzymywałaby wartość'a'w różnych momentach i pisząc to inaczej. Ogranicza to zadanie do jednego wątku, a zatem zadanie może być uruchomione tylko na jednym rdzeniu w danym momencie, jeśli miałoby działać na wielu rdzeniach, doszłoby do uszkodzenia synchronizacji. Ogranicza to do 1/2 mocy procesora systemu dwurdzeniowego lub 1/4 w systemie czterordzeniowym.

Teraz weź zadanie takie jak:

10: a = a + 1

20: b = b + 1

30: c = c + 1

40: d = d + 1

50: goto 10

Wszystkie te linie są niezależne i mogą być podzielone na 4 oddzielne programy, takie jak pierwszy i uruchamiane w tym samym czasie, z których każdy może efektywnie wykorzystać pełną moc jednego z rdzeni bez problemu z synchronizacją, tutajPrawo Amdahlawchodzi w to.

Więc jeśli masz jednowątkową aplikację wykonującą obliczenia typu brute force, pojedynczy procesor 12 GHz wygrałby, jeśli możesz w jakiś sposób podzielić zadanie na oddzielne części i wielowątkowe, wtedy 4 rdzenie mogą zbliżyć się, ale nie do końca, to samo wykonanie, zgodnie z prawem Amdahla.

Najważniejszą rzeczą, jaką daje system z wieloma procesorami, jest responsywność. Na jednordzeniowej maszynie, która ciężko pracuje, system może wydawać się powolny, ponieważ przez większość czasu może być używany przez jedno zadanie, a inne zadania działają tylko w krótkich odstępach między większymi zadaniami, co powoduje, że system wydaje się powolny lub nierówny . W systemie wielordzeniowym ciężkie zadanie otrzymuje jeden rdzeń, a wszystkie inne zadania grają na innych rdzeniach, wykonując swoje zadania szybko i wydajnie.

Argument „6 rdzeni x 0,2 GHz = 1,2 GHz” jest bzdurą w każdej sytuacji, z wyjątkiem sytuacji, gdy zadania są idealnie równoległe i niezależne. Istnieje wiele zadań, które są wysoce równoległe, ale nadal wymagają pewnej formy synchronizacji.Hamulec ręcznyto transkoder wideo, który bardzo dobrze wykorzystuje wszystkie dostępne procesory, ale wymaga podstawowego procesu, aby utrzymać inne wątki wypełnione danymi i zebrać dane, z którymi są robione.

  1. Każdy rdzeń w rzeczywistości wykonuje x obliczeń na sekundę, więc łączna liczba obliczeń wynosi x (rdzenie).

Każdy rdzeń jest w stanie wykonać x obliczeń na sekundę, zakładając, że obciążenie jest odpowiednie równolegle, w programie liniowym wszystko, co masz, to 1 rdzeń.

  1. Szybkość zegara to raczej liczba cykli, które procesor przechodzi w ciągu sekundy, więc dopóki wszystkie rdzenie działają z tą samą szybkością, szybkość każdego cyklu zegara pozostaje taka sama bez względu na to, ile rdzeni istnieje . Innymi słowy, Hz = (rdzeń1Hz+rdzeń2Hz+…)/rdzenie.

Myślę, że błędem jest myślenie, że 4 x 3 GHz = 12 GHz, jeśli matematyka działa, ale porównujesz jabłka do pomarańczy i sumy po prostu nie są właściwe, GHz nie może być po prostu sumowane dla każdej sytuacji. Zmieniłbym to na 4 x 3GHz = 4 x 3GHz.

Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych doświadczonych technologicznie użytkowników Stack Exchange?Sprawdź pełny wątek dyskusji tutaj.

Czy ten post był pomocny?