Głównym powodem, dla którego czterordzeniowy procesor 3GHz nigdy nie jest tak szybki jak pojedynczy rdzeń 12 GHz, jest sposób, w jaki działa zadanie uruchomione na tym procesorze, tj. Jedno- lub wielowątkowe. Prawo Amdahla jest ważne przy rozważaniu rodzajów wykonywanych zadań.
Jeśli masz zadanie 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
Następnie zadanie zależy w dużej mierze od wyniku poprzedniego przejścia i nie może uruchomić wielu kopii samego siebie bez uszkodzenia wartości, 'a'
ponieważ każda kopia otrzymywałaby wartość 'a'
w innym czasie i zapisywała ją w inny sposób. 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, nastąpiłoby uszkodzenie synchronizacji. Ogranicza to do 1/2 mocy procesora w systemie dwurdzeniowym lub 1/4 w systemie czterordzeniowym.
Teraz podejmij takie zadanie 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 można je podzielić na 4 oddzielne programy, takie jak pierwszy, i działają w tym samym czasie, każdy z nich jest w stanie efektywnie wykorzystać pełną moc jednego z rdzeni bez żadnego problemu z synchronizacją, tutaj prawo Amdahla wchodzi w to.
Więc jeśli masz aplikację z pojedynczym wątkiem, która wykonuje obliczenia z użyciem siły, pojedynczy procesor 12 GHz wygrałby bez wysiłku, jeśli możesz w jakiś sposób podzielić zadanie na osobne części i wielowątkowe, wówczas 4 rdzenie mogą zbliżyć się, ale nie do końca, taki sam występ, zgodnie z prawem Amdahla.
Najważniejsze, co daje system z wieloma procesorami, to szybkość reakcji. Na maszynie z jednym rdzeniem, która ciężko pracuje, system może wydawać się powolny, ponieważ większość czasu może być wykorzystana przez jedno zadanie, a inne zadania działają tylko w krótkich seriach pomiędzy większym zadaniem, co powoduje, że system wydaje się powolny lub niesprawiedliwy . W systemie wielordzeniowym ciężkie zadanie otrzymuje jeden rdzeń, a wszystkie pozostałe zadania działają na innych rdzeniach, wykonując swoje zadania szybko i wydajnie.
Argument „6 rdzeni x 0,2 GHz = 1,2 Ghz” jest śmieciem 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ą one pewnego rodzaju synchronizacji. Hamulec ręczny to transkoder wideo, który jest bardzo dobry w użyciu wszystkich dostępnych procesorów, ale wymaga podstawowego procesu, aby utrzymać pozostałe wątki wypełnione danymi i zebrać dane, z którymi są zrobione.
- Każdy rdzeń faktycznie wykonuje x obliczeń na sekundę, więc całkowita liczba obliczeń wynosi x (rdzenie).
Każdy rdzeń może wykonywać x obliczeń na sekundę, przy założeniu, że obciążenie jest odpowiednie równolegle, w programie liniowym masz tylko 1 rdzeń.
- Szybkość zegara jest raczej liczbą cykli, przez które przechodzi procesor w ciągu sekundy, więc tak długo, jak wszystkie rdzenie pracują z tą samą prędkością, prędkość każdego cyklu zegara pozostaje taka sama bez względu na liczbę rdzeni . Innymi słowy, Hz = (rdzeń 1 Hz + rdzeń 2 Hz + ...) / rdzenie.
Myślę, że błędem jest sądzić, że 4 x 3GHz = 12GHz, pod warunkiem, że matematyka działa, ale porównujesz jabłka do pomarańczy, a sumy są po prostu nieprawidłowe, GHz nie można po prostu zsumować w każdej sytuacji. Zmieniłbym to na 4 x 3GHz = 4 x 3GHz.