Przy obniżaniu kosztów krzemu i rosnących potrzebach konsumentów producenci wydają się naciskać na jedną z dwóch rzeczy: szybkość zegara i / lub liczbę rdzeni. Z biegiem czasu nie wydaje się, aby szybkość taktowania procesorów rosła, ale liczba rdzeni procesorów.
Pamiętam zaledwie kilka lat temu, miałem ładny szybki jednordzeniowy procesor Pentium 4. Przejdźmy do przodu i nie sądzę, że można nawet kupić procesor jednordzeniowy (nie wspominając o rosnącym wzroście liczby procesorów wielordzeniowych, nawet w telefonach komórkowych ). Po drodze możemy znaleźć komputery z setkami rdzeni w ciągu kilku lat (i wiem, że wiele systemów operacyjnych już to obsługuje).
Czy bardziej korzystne dla ogólnej wydajności systemu jest zwiększenie prędkości zegara lub zwiększenie liczby rdzeni? Załóżmy, że wchodzimy w setki rdzeni pracujących razem lub prędkości zegara dziesięciokrotnie wyższe niż obecnie (niezależnie od tego, czy jest to fizycznie możliwe).
Jakie są przykłady typowych procesów (np. Szyfrowanie, kompresja plików, edycja obrazów / wideo), które przyniosą największe korzyści? Czy są jakieś procesy, które mogą być, ale obecnie nie są (z przyczyn technicznych) przyspieszane przez zwiększenie ich równoległości?
Załóżmy, że hipotetyczny procesor ma dokładnie taki sam projekt rdzenia (rozmiar słowa, szerokość bitu adresu, rozmiar magistrali pamięci, pamięć podręczna itp.), Więc jedynymi zmiennymi tutaj są szybkość zegara i liczba rdzeni. I znowu nie mówię o jednym, dwóch, a nawet czterech rdzeniach - wyobraź sobie dziesiątki do setek.
Odpowiedzi:
Należy wziąć pod uwagę dwie podstawowe sytuacje:
Procesor jest używany z komputerem, który wykonuje wyłącznie obliczenia dla jednego programu
Procesor jest używany do wielu programów działających jednocześnie
Pierwsza sytuacja ma miejsce, gdy „szybkość” procesora jest ważniejsza, ponieważ użytkownik chce mieć możliwość szybkiego i wydajnego wykonywania obliczeń. Sytuacje te zwykle dotyczą intensywnego przetwarzania obliczeń, tj. Obliczania liczb pierwszych do szyfrowania / deszyfrowania
Drugi polega na tym, że przydaje się wiele rdzeni, ponieważ każdy program można przypisać do osobnego rdzenia, uwalniając w ten sposób każdy program od wzajemnego „przewijania się”. W dzisiejszym świecie przeciętny użytkownik będzie używał swojego komputera do wielu programów jednocześnie, dzięki czemu przetwarzanie wielordzeniowe będzie pożądane.
Jednak wielordzeniowy ! = Większe prędkości lub wyższa wydajność we wszystkich przypadkach. Ponieważ większość programów jest napisana z myślą o przetwarzaniu na jednym rdzeniu * , nadal należy sprawdzić szybkość zegara. Należy wziąć pod uwagę ich kombinację (wraz z wieloma innymi czynnikami) .
* Istnieją pewne programy i mam nadzieję, że wkrótce zostaną utworzone kolejne, w których jednocześnie można używać wielu rdzeni. Przyszłość oprogramowania można znaleźć w tym „ Programowaniu równoległym ”:
źródło
Osobiście uważam, że kluczem jest liczba rdzeni. Rozwój oprogramowania został przeniesiony na systemy sieciowe, więc zasoby lokalne nie są już jedynymi dostępnymi zasobami. Najważniejszym czynnikiem w tym, jak teraz pracujesz, jest to, której sieci jesteś częścią.
Zwróć uwagę na przejście na mobilny Internet szerokopasmowy, stałą łączność, zdalny dostęp itp. Dzięki temu stała łączność wymaga żywotności baterii. Chociaż można dyskutować, które czynniki procesora są bardziej optymalne dla żywotności baterii (masz klasyczne równanie optymalizacji wartości pracy w funkcji czasu), osobiście uważam, że gdybyś musiał wybrać jeden, wybrałbym więcej rdzeni.
Intel pozwala teraz zasilać rdzenie na żądanie. Chociaż nie jest tak optymalna, jak brak rdzeni do spania, opcja użycia większej liczby rdzeni daje elastyczność uruchamiania większej liczby aplikacji z tej samej platformy sprzętowej.
źródło
Jak wspomina ChrisF w komentarzu, to zależy. Ale ponieważ takie odpowiedzi nie są tak naprawdę odpowiedziami, postaram się znaleźć kilka scenariuszy, w których jeden będzie bardziej korzystny od drugiego:
W większości popularnych procesów, o których wspominasz, liczba rdzeni nie będzie miała większego znaczenia, ponieważ większość pracy jest wykonywana w jednym wątku, który można wykonać tylko na jednym rdzeniu (jednocześnie). W przypadku takich procesów pojedynczy, ale bardzo wydajny rdzeń będzie działał lepiej niż kilka wolniejszych rdzeni. Zarówno szyfrowanie, jak i kompresja plików mogą być wyjątkami od tego, ale wiele zależy od tego, jakie algorytmy są używane i czy można je wykonywać równolegle.
Zapomniałeś jednak o jednym z najczęstszych zadań wykonywanych dzisiaj na komputerach: przeglądaniu. Kilka popularnych przeglądarek otwiera każdą kartę w osobnym procesie (jestem pewien, że Chrome to robi, ponieważ używam tego), co oznacza, że jeśli masz cztery karty otwarte w systemie czterordzeniowym, każde okno przeglądania może (teoretycznie) mają rdzeń „sam w sobie” (ignorując wątki i inne elementy systemu operacyjnego) i działają tak szybko, jakby nie były otwarte żadne inne karty / okna przeglądarki. Dla osób przeglądających z wieloma otwartymi kartami może to być znacząca poprawa wydajności bez konieczności budowania bardzo szybkich rdzeni procesora.
Kluczem do wiedzy, czy system wielordzeniowy z wolniejszymi rdzeniami będzie szybszy niż system jednordzeniowy z szybkim rdzeniem, jest wiedza, czy wykonasz wiele różnych rzeczy jednocześnie, czy kilka, ale ciężkich . Ponieważ będzie się to bardzo różnić w zależności od użytkownika, odpowiedź na twoje pytanie również.
Inne odpowiedzi również zawierają kilka ważnych punktów:
źródło
Po pierwsze, prędkości pojedynczych rdzeni tak naprawdę nie spadły tak bardzo. Jedynym powodem, dla którego obecna oferta Intela Sandy Bridge nie przewyższa jednordzeniowego Pentium 4 pod względem megaherców, jest to, że Intel nie ma konkurencji, więc nie muszą naciskać tak mocno.
Po drugie, taktowanie to nie wszystko, nawet na jednym rdzeniu. Patrząc na wydajność aplikacji, ponownie w porównaniu z Pentium 4, obecny asortyment Intel jest o około 50% szybszy na cykl zegara . Powody, dla których Sandy Bridge jest szybszy na cykl zegara niż Pentium 4 (Prescott jest jego ostatnią inkarnacją) są liczne, ale mają inteligentny kontroler pamięci, który ma tę samą matrycę z procesorem i wyższą równoległość poziomu instrukcji (ILP) przyczynić się do tego.
Równoległość na poziomie instrukcji oznacza w zasadzie, że procesor patrzy na instrukcje i ich zależności, a jeśli dwie instrukcje nie są od siebie zależne, procesor może rozpocząć ładowanie danych dla obu w tym samym czasie i ewentualnie zmienić kolejność instrukcji dla jednej z przybywają przed drugim.
Po trzecie, niektóre aplikacje rzeczywiście bardzo dobrze korzystają z wielu rdzeni. Na przykład Photoshop prawie zawsze woli więcej rdzeni niż częstotliwość robocza. To znaczy. nawet powolny czterordzeniowy prawie zawsze pokonuje dowolny dwurdzeniowy układ, a każdy dwurdzeniowy pokonuje dowolny jednordzeniowy układ. Tri-core to mieszana torba, często wygrywają z dual-core, ale nie zawsze.
Ogólnie aplikacje, które wykonują ten sam rodzaj operacji dla wielu różnych zestawów danych, najbardziej korzystają z równoległości. Na przykład kompresja wideo lub edycja zdjęć często mogą być dość łatwo zrównoleglone. Z drugiej strony gry komputerowe okazały się trudne do zrównoleglenia. Grafika na nich oczywiście jest bardzo dobrze równoległa, ale ta część jest wykonywana na GPU, a nie na CPU. Pozostała fizyka, księgowość w świecie gry i AI są trudniejsze do zrównania.
źródło
W rzeczywistości dzisiaj najważniejszym czynnikiem nie jest szybkość zegara procesora, wprowadzono wiele nowych funkcji, ponieważ ten „współczynnik porównania” stał się nieuzasadniony.
Dzisiaj musisz przyjrzeć się wielu czynnikom, aby wnioskować o wydajności procesorów. Rzeczy jak:
Faktycznie, gdy chcę porównać szybkość procesora i skonsultować PassMark z notebookcheck tabel porównawczych. Moim zdaniem testy porównawcze są najlepszym czynnikiem do pomiaru i porównywania szybkości i wydajności procesora.
źródło