Czy można na przykład powiedzieć, że procesor z czterema rdzeniami, z których każdy działa w paśmie 3GHz, jest w rzeczywistości procesorem pracującym w paśmie 12 GHz?
Kiedyś wdałem się w spór „Mac vs. PC” (który, nawiasem mówiąc, NIE jest przedmiotem tego tematu ... który był jeszcze w gimnazjum), ze znajomym, który nalegał, aby komputery Mac były reklamowane jako maszyny 1 GHz, ponieważ były dwuprocesorowe G4 pracujące z częstotliwością 500 MHz.
W tamtym czasie wiedziałem, że jest to pranie brudu z powodów, które moim zdaniem są 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 sprawiło, że znów pomyślałem o tym, czy jest na to prawdziwa odpowiedź.
Jest to więc mniej więcej filozoficzne / głębokie pytanie techniczne dotyczące semantyki obliczania prędkości zegara. Widzę dwie możliwości:
- Każdy rdzeń faktycznie wykonuje x obliczeń na sekundę, więc całkowita liczba obliczeń wynosi x (rdzenie).
- 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.
źródło
Odpowiedzi:
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)
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:
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ń 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ń.
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.
źródło
Inni przedstawili dobry argument z technicznego punktu widzenia. Zamiast tego zrobię kilka prostych analogii, które, mam nadzieję, wyjaśnią, dlaczego 4 * 3GHz nie jest równoważne 1 * 12GHz.
Na przykład jedna kobieta może wyprodukować jedno dziecko w ciągu dziewięciu miesięcy. Czy dziewięć kobiet będzie w stanie wyprodukować jedno dziecko w ciągu jednego miesiąca? Nie, ponieważ ciąża nie może być zrównoleglona (cóż, przynajmniej na tym poziomie technologicznym).
Oto kolejna: w niedawno odwiedzonej elektrowni wodnej jeden z generatorów był modernizowany. Musieli przetransportować stojan generatora statkiem. Jedna szósta stojana mogła być transportowana ciężarówką, ale musieli przewieźć cały stojan; więc musieli użyć jednego statku, a nie sześciu ciężarówek.
Innym przypadkiem może być precyzyjny harmonogram wydarzeń. Czasami procesory komputerowe są używane jako precyzyjne liczniki czasu (chociaż praktyka nie jest już zalecana, ze względu na zmienny zegar na większości procesorów. Zamiast tego należy użyć precyzyjnego timera zdarzeń). Jeśli założymy, że mamy procesor ze stosunkowo stabilnym zegarem 12 GHz, możemy go użyć do pomiaru czasu w znacznie wyższej rozdzielczości niż na procesorze z zegarem 3GHz. Bez względu na liczbę rdzeni 3GHz nie będziemy w stanie osiągnąć rozdzielczości rdzenia 12GHz. To tak, jakby mieć 4 zegary z 7-segmentowymi wyświetlaczami, gdzie każdy zegar wyświetla tylko prawidłowy czas w godzinach. Bez względu na to, jak poprawnie pokazują godziny, nie można ich używać do mierzenia przedziałów czasu w zakresie jednosekundowym.
źródło
Nie jestem ekspertem w tej dziedzinie, ale mam dyplom inżynierii komputerowej. W teorii (to jest bardzo koncepcyjny odpowiedź) czteroprocesorowym 3 GHz każdy procesor może być równoważne z jednym procesorem 12GHz jeśli, na przykład, cztery zestawy obliczeń potrzebnych do wykonania jednej wyniku końcowego. To się nazywa przetwarzanie równoległe.
Aby uprościć logikę, powiedzmy, że mówimy o procesorze dwurdzeniowym. Jeśli zestaw obliczeń byłby, powiedz:
następnie te dwa obliczenia mogłyby zostać wykonane na osobnych rdzeniach, a procesor xGHz byłby równoważny jednordzeniowemu procesorowi 2 * xGHz. Wynika to z faktu, że dwa obliczenia, choć wykonane z prędkością x, byłyby przetwarzane w tym samym czasie. Podczas gdy procesor z jednym rdzeniem mógłby to zrobić z prędkością 2 * x, ale jedna po drugiej. Jeśli dwa procesory wykonałyby ten kod w tym samym czasie, zakończyłyby się w tym samym czasie. Jeśli jednak kod byłby:
wówczas procesor dwurdzeniowy zająłby dwa razy więcej niż procesor jednordzeniowy, ponieważ w drugiej instrukcji wartość a jest zależna od pierwszej instrukcji, a zatem nie może być wykonywana równolegle. W ten sposób niektóre programy mogą korzystać z procesorów wielowątkowych.
Teoretycznie jednordzeniowy procesor 12 GHz zawsze może działać tak szybko (lub szybciej) niż czterordzeniowy procesor 3GHz, ale nie odwrotnie.
źródło
To skomplikowane pytanie, na które należy odpowiedzieć, ale krótka odpowiedź brzmi: nie
W rzeczywistych aplikacjach cztery procesory 3Ghz nie będą tak szybkie jak pojedynczy procesor 12 GHz z powodu nieefektywności. Mogą być bardzo blisko, ale NIE będą równe jednemu procesorowi pod względem mocy przetwarzania.
Powodem tego jest niewielka nieefektywność w przypadku programów, które mogą działać na więcej niż jednym procesorze. Zakładając, że dany program może działać równolegle, nadal będziemy mieli problemy z różnymi rdzeniami konkurującymi ze sobą o inne zasoby, takie jak pamięć RAM, a nawet problemy z pamięcią podręczną i synchronizacją wątków. Ponadto zawsze są części programów, których nie można zrównoleglać i które same muszą działać na jednym rdzeniu.
Spójrz na ten artykuł: http://en.wikipedia.org/wiki/Amdahl%27s_law
źródło
Wydaje się, że nie możemy powiedzieć, że 4 rdzenie przy 3 GHz można powiedzieć jako 12 GHz.
Różne ograniczenia, takie jak pamięć współużytkowana, rywalizacja z pamięcią podręczną i inne zasoby są wspólne dla wszystkich rdzeni, więc uruchomienie fragmentu kodu równolegle na tych rdzeniach nie będzie tak wydajne, jak uruchomienie go na procesorach 12 GHz (chociaż trudno jest zbudować taki procesor ).
Przeczytałem też gdzieś, że jeśli podwoimy tranzystory wbudowane w układ (CMP), przyspieszenie, które uzyskamy, to tylko 40%. Jest to także znacząca wskazówka dla tego tematu.
źródło
Jeśli chodzi o wykonywane cykle zegarowe, tak, procesor wielordzeniowy wykonuje pełne
x * cores
cykle pracy na sekundę. Zazwyczaj prędkości zegara są wyszczególnione dla poszczególnych rdzeni dla łatwiejszego porównania (w przeciwnym razie jak można łatwo porównać dwurdzeniowy układ 4GHz pracujący z częstotliwością 2GHz / rdzeń w porównaniu z czterordzeniowym układem 4GHz pracujący z częstotliwością 1GHz / rdzeń?).Niestety problem komplikuje się, gdy próbujesz porównać różne procesory w rzeczywistych aplikacjach.
Po pierwsze, większość procesorów wielordzeniowych ma pewne zasoby współdzielone między rdzeniami (np. Pamięć podręczna procesora). Muszą dzielić dostęp do tej pamięci podręcznej, więc nie można mieć obu rdzeni do przechowywania lub odczytu danych z pełną prędkością. Jest to często łagodzone w procesorach wielordzeniowych poprzez posiadanie wielu współużytkowanych pamięci podręcznych (np. Większość czterordzeniowych układów ma 2 pamięci podręczne, z których każda jest współdzielona przez parę rdzeni), w celu lepszego podziału szans na wąskie gardło we wspólnym zasobie.
Po drugie, być może mniej znane w świecie nietechnicznym, porównywanie prędkości zegara może czasem przypominać porównywanie jabłek i pomarańczy. Różne procesory wykonują różną ilość pracy w jednym cyklu zegara, więc powiedzenie, że masz 1 GHz w porównaniu z 1,2 GHz, brzmi świetnie, ale układ 1 GHz może faktycznie wykonać więcej pracy w danym przedziale czasu. Pentium 4 odwiodło ten punkt do domu, prowadząc do megahercowego mitu (którego nie znałem, dopóki nie napisałem tego nazwiska).
źródło
Dwa samochody jadące z prędkością 50 mil na godzinę nie sumują się do 100 mil na godzinę. To naprawdę jest takie proste. Szybkość zegara procesora nie jest miarą szybkości, z jaką praca jest wykonywana, lecz miarą szybkości zegara.
źródło