15Aug

Jak obliczyć prędkość procesora w procesorach wielordzeniowych?

click fraud protection

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

Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, grupy napędów społecznościowych Q & A.

Pytanie

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

Czy słusznie jest na przykład powiedzieć, że procesor z czterema rdzeniami, każdy pracujący z częstotliwością 3GHz, to tak naprawdę procesor działającyprzy częstotliwości 12 GHz?

Kiedyś wdałem się w argument "Mac vs. PC"( który zresztą NIE jest tematem tego tematu. .. który był w gimnazjum) ze znajomym, który twierdził, że komputery Mac są reklamowane tylko jako maszyny 1GHz, ponieważ byłydwuprocesorowe G4s, każdy działający z częstotliwością 500 MHz.

instagram viewer

W tamtym czasie wiedziałem, że jest to bzdura z powodów, które wydają mi się oczywiste dla większości ludzi, ale właśnie zobaczyłem komentarz na tej stronie internetowej dotyczący efektu "6 rdzeni x 0,2 GHz = 1,2 GHz" i to pozwoliło mi znowu pomyśleć oczy istnieje realna odpowiedź na to pytanie.

To jest bardziej lub mniej filozoficzne / głębokie pytanie techniczne dotyczące semantyki obliczania prędkości zegara. Widzę dwie możliwości:

  1. Każdy rdzeń faktycznie wykonuje obliczenia x na sekundę, więc całkowita liczba obliczeń wynosi x( rdzenie).
  2. Prędkość zegara to raczej liczba cykli, przez które przechodzi procesor w ciągu sekundy, więc dopóki wszystkie rdzenie pracują z tą samą prędkością, prędkość każdego cyklu zegara pozostaje taka sama, bez względu na liczbę rdzeniistnieć.Innymi słowy, Hz =( core1Hz + core2Hz +. ..) / rdzenie.

Jaki jest więc właściwy sposób określenia całkowitej prędkości taktowania, a co ważniejsze, czy możliwe jest stosowanie natywnej jednootworowej nomenklatury w systemie wielordzeniowym?

Odpowiedzi

SuperUser Mokubai pomaga wyjaśnić sprawę.Pisze on:

Głównym powodem, dla którego czterordzeniowy procesor 3GHz nigdy nie jest tak szybki jak pojedynczy rdzeń 12 GHz, jest sposób działania zadania na tym procesorze, tj. Jedno-gwintowy lub wielowątkowy. Prawo Amdahla jest ważne, biorąc pod uwagę rodzaje zadań, które wykonujesz.

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

10: a = a + 1 20: goto 10

Następnie zadanie zależy w dużym stopniu od wynikupoprzedniego przebiegu i nie może uruchomić wielu kopii bez zniekształcania wartości "a", ponieważ każda kopia otrzymywałaby wartość "a" w różnym czasie i zapisywałaby ją inaczej. Ogranicza to zadanie do pojedynczego wątku, a zatem zadanie może być uruchamiane tylko na jednym rdzeniu w danym momencie, jeśli miałoby działać na wielu rdzeniach, a następnie nastąpiłoby uszkodzenie synchronizacji. Ogranicza to do 1/2 mocy procesora systemu dwurdzeniowego lub 1/4 w systemie czterordzeniowym.

Teraz wykonaj 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ąPodziel się na 4 osobne programy, takie jak pierwszy i uruchom w tym samym czasie, każdy z nich może efektywnie wykorzystać pełną moc jednego z rdzeni bez problemu z synchronizacją, w tym miejscu wkracza prawo Amdahla.

Więc jeśli masz aplikację z pojedynczym gwintem wykonującą obliczenia z brutalną siłą, pojedynczy procesor 12 GHz wygrałby ręce, gdybyś mógł jakoś podzielić zadanie na oddzielne części i wielowątkowe, wtedy 4 rdzenie mogłyby zbliżyć się, ale nie całkiem osiągnąć, ten sam występ, zgodnie z Prawem Amdahla.

Najważniejszą cechą systemu wieloprocesorowego jest szybkość reakcji. Na maszynie z pojedynczym rdzeniem, która działa ciężko, system może wydawać się powolny, ponieważ przez większość czasu może być używany przez jedno zadanie, a inne zadania są uruchamiane tylko w krótkich seriach pomiędzy większymi zadaniami, co powoduje, że system wydaje się powolny lub juddery. W systemie wielordzeniowym ciężkie zadanie dostaje jeden rdzeń, a wszystkie inne zadania grają na innych rdzeniach, wykonując swoje zadania szybko i sprawnie.

Argument "6 rdzeni x 0,2 GHz = 1,2 GHz" to śmieci w każdej sytuacji, z wyjątkiem sytuacji, gdy zadania są idealnie równoległe i niezależne. Istnieje wiele zadań, które są bardzo równoległe, ale nadal wymagają jakiejś formy synchronizacji. Hamulec ręczny to transkoder wideo, który jest bardzo dobry w używaniu wszystkich dostępnych procesorów, ale wymaga procesu rdzeniowego, aby pozostałe wątki były wypełnione danymi i zbierały dane, które zostały wykonane.

  1. Każdy rdzeń wykonuje x obliczeń na sekundę, więc całkowita liczba obliczeń to x( rdzenie).

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

  1. Prędkość zegara to raczej liczba cykli, przez które przechodzi procesor w przestrzeni sekundy, więc dopóki wszystkie rdzenie pracują z tą samą prędkością, prędkość każdego cyklu zegara pozostaje taka sama, bez względu na liczbę rdzeniistnieć.Innymi słowy, Hz =( core1Hz + core2Hz +. ..) / rdzenie.

Myślę, że błędem jest myślenie, że 4 x 3GHz = 12GHz, przy założeniu, że matematyka działa, ale porównujesz jabłka do pomarańczy, a sumy nie są właściwe, GHz nie można po prostu dodać do każdej sytuacji. Zmieniłbym go na 4 x 3GHz = 4 x 3GHz.

Czy chcesz coś dodać 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.