Czy procesory wielordzeniowe nadal odczuwają malejące zyski w dzisiejszym świecie?

8

W innych pytaniach wykazano, że ze względu na stan aplikacji komputerowych procesory wielordzeniowe mają coraz mniejsze zyski. Czy tak jest nadal w dzisiejszym świecie?

Czy większość nowych aplikacji obejmuje wielowątkowość, a zatem korzysta z wielu rdzeni? Jeśli nie, to czy nowsze 64-bitowe systemy operacyjne wykorzystują rdzenie, przypisując zadania / procesy do różnych rdzeni? Czy też procesory wielordzeniowe nadal odczuwają takie same (lub podobne) malejące zwroty?

Kopię zapasową wszelkich roszczeń należy opatrzyć referencjami.

rishimaharaj
źródło
2
Bycie w systemie operacyjnym x64 nie zrobiłoby żadnej różnicy, jeśli masz program z wieloma wątkami. Różnice w krajobrazie kompilatora między 2008 a 2012 rokiem są ogromne. Dopóki nie istniał łatwy sposób wykonywania akcji w wielu wątkach, posiadanie procesora z możliwością wykonywania wielu wątków jednocześnie jest w pewnym sensie bezcelowe. Nawet dzisiaj nadal nie jest to wystarczająco łatwe.
Ramhound,

Odpowiedzi:

7

To zależy w dużej mierze od tego, co robisz.

W przypadku zwykłych starych programów Word, Excel i Saper oraz wszystkiego innego, czego używa Twoja mama, jeden rdzeń wciąż wystarcza, a więcej niż dwa to przesada. Tego rodzaju aplikacje spędzają większość czasu na biegu jałowym, czekając na dane wejściowe użytkownika.

Do grania zyskasz co najmniej dwa. Następnie zależy to od gry. Teoretycznie możesz uruchomić każdego przeciwnika AI w osobnym wątku, ale centralna logika gry nie może być łatwo zrównoleglona - potrzebujesz jednego miejsca, w którym wszystkie wyniki są zebrane, aby stworzyć spójny stan gry. Więc zwykle jest jeden „główny” wątek, na który wszyscy czekają.

W przypadku multimediów, łamania liczb rzeczywistych i nauki liczy się każdy rdzeń. Są to zadania z natury wielowątkowe lub takie, które można łatwo wykonać, a twórcy mają silną motywację do korzystania z całej dostępnej mocy obliczeniowej.

Zaawansowani użytkownicy lubią wielozadaniowość. Torrent, VirtualBox, zrzuty ekranu, wideo, minecraft i przeglądanie stron internetowych działają jednocześnie. Będziesz więc czerpać korzyści z każdej wymagającej procesora aplikacji mającej swój rdzeń. W dzisiejszych czasach popularne jest transmitowanie na żywo swojej gry. To dwa rdzenie dla gry, przynajmniej jeden dla wątku kodera i przynajmniej jeden dla reszty systemu. To co najmniej 4 rdzenie.

Ansis Māliņš
źródło
1
Ogólnie rzecz biorąc, dobra sztuczna inteligencja w grze jest znacznie trudniejsza niż pogodzenie wielu akcji. To tylko fantazyjny dodatek. Po drugie, zakładasz, że gry mają jeden centralny stan gry. To niekoniecznie prawda. Nawet jeśli tak, niekoniecznie stanowi to barierę dla wątków. Np. Obliczenia fizyki wykonuje się zwykle równolegle. I wreszcie, gry mają również dużą część do renderowania grafiki, co również prowadzi do wątków.
MSalters
Wątpię, czy jeden rdzeń jest zawsze właściwym wyborem (po prostu wstaw naprawdę powolną formułę do Excela ...) i myślę, że trochę przesadzasz. Co na przykład z funkcją Turbo Core (AMD) / Turbo Boost (Intel) w nowszych procesorach? Pozwala mojemu sześciordzeniowemu procesorowi AMD zaparkować połowę swoich rdzeni i uruchomić drugą połowę z większą częstotliwością zegara - i sądzę, że wersja Intela jest jeszcze bardziej drobnoziarnista - dzięki czemu procesor może ponownie zoptymalizować w locie do pracy wymaganej od to. Czy to czyni ich lepszym wyborem? Problem ten można rozwiązać tylko w rzeczywistych pomiarach i testach porównawczych.
DMA57361
Całkowicie zgadzam się z @ DMA57361 Kilka lat temu mój wujek kupił kilka jednordzeniowych komputerów AMD dla swoich nastoletnich dzieci. Procesy w tle (Windows Update jest najbardziej skandalicznym sprawcą) regularnie czyniły je praktycznie bezużytecznymi przez kilka minut, zwiększając moc procesora.
Dan Is Fiddling By Firelight
Nie zapomnij o hyperthreading. Bardziej zaawansowane procesory Intel mogą symulować dodatkowy rdzeń procesora, zapewniając dodatkowy zestaw rejestrów w każdym rdzeniu i umożliwiając wątkom korzystanie z różnych części każdego rdzenia procesora w tym samym czasie w celu dalszego zwiększenia wydajności wielozadaniowości.
bwDraco
Renderowanie 3D jest kolejnym, które wykazuje dużą zaletę. Jeśli jesteś animatorem lub grafikiem i wykonujesz wiele renderingów; całe oprogramowanie na poziomie profesjonalnym ma tę zaletę, że wykorzystuje każdy rdzeń, jaki ma do zaoferowania maszyna (i więcej w przypadku klastrów sieciowych). Wydajność będzie skalowana liniowo z liczbą rdzeni.
Jason C
5

Obawiam się, że odpowiedź jest, jak zawsze, „zależy od tego, co robisz”.

Tak, maleją zyski z dodawania coraz większej liczby rdzeni i zawsze będzie tak, jeśli uruchomisz tylko jedną aplikację na raz .

Nawet w dobrze wykonanej aplikacji wielowątkowej wiele wątków jest wykonywanych tak, aby czekać na najwolniejsze komponenty komputera - dysk twardy, sieć - bez wpływu na widoczną wydajność użytkownika. Nie można ich poprawić przez większą równoległość, więc teoretyczne ograniczenie przyspieszenia jest nieosiągalne ze względów praktycznych.

Warto zauważyć, że istnieje kilka „dużych” aplikacji, które nie są wielowątkowe (po prostu sprawdź odpowiednik Menedżera zadań systemu operacyjnego, powinien być w stanie powiedzieć, ile należy do każdego procesu - na przykład mój Firefox używa obecnie 31 ).

Oczywiście uruchamianie wielu niezależnych aplikacji nie jest tak ograniczone przez te ograniczenia. Gdy dodajesz więcej rdzeni, możesz uruchamiać więcej aplikacji jednocześnie przy niewielkim spadku wydajności przetwarzania (wydajność dysku twardego, sieci itp. Nie skaluje się jednak tak ładnie). W praktyce nawet to podlega zmniejszającym się zwrotom, ponieważ istnieje nieunikniony narzut związany z zarządzaniem rozkładem pracy między rdzeniami, rurociągami komunikacyjnymi i tak dalej.

Na przykład ten artykuł Tom's Hardware (z 2009 r.) Próbuje spojrzeć na wydajność kilku procesorów wielordzeniowych w jednoczesnych aplikacjach - uruchamiając grę obok skanu AVG (oba prawdopodobnie są wielowątkowe). Wszystkie czterordzeniowe, trzy- i dwurdzeniowe procesory działają podobnie z samą grą, ale dodają jednoczesne skanowanie AVG, a wydajność (mierzona średnim FPS) spada odpowiednio o 22%, 40% i 59%.

Tak więc, chociaż czterordzeniowy rdzeń nie oferował żadnego wzrostu wydajności w porównaniu z podwójnym rdzeniem podczas uruchamiania jednej intensywnej aplikacji, gdy tylko pojawiło się inne intensywne zadanie, okazało się, że jest dwukrotnie wydajniejsze. Niestety nie mogę znaleźć wiele innych rzeczy, które sprawdzałyby, jak dobrze to się skaluje z większą liczbą rdzeni i bardziej intensywnymi zadaniami.


A potem musisz wziąć pod uwagę nowoczesne funkcje procesorów, takie jak Turbo Boost Intela / Turbo Core AMD. Te szczególne funkcje pozwalają wielordzeniowemu procesorowi zaparkować rdzenie (ustawić je w wolniejszym trybie o niskiej mocy) i wykorzystać zapasową energię do przetaktowania rdzeni, które pozostają aktywne - pozwalając procesorowi zoptymalizować się, aby zapewnić tyle mocy przetwarzania w miarę możliwości dla liczby zadań, z którymi jest prezentowany.

DMA57361
źródło
2

Aby dodać paliwo do ognia, przeczytałem tutaj, że Android jest spowolniony przez posiadanie więcej niż jednego rdzenia:

Korzystanie z procesorów wielordzeniowych może faktycznie spowolnić urządzenia z Androidem, powiedział Mike Bell, dyrektor generalny grupy mobilnej i komunikacyjnej Intela, który obwinia zdolność Androida do wielowątkowości lub jej brak, z powodu trudności systemu operacyjnego w efektywnej obsłudze potężnych procesorów.

Im więcej rdzeni ma urządzenie, tym więcej mocy potrzebuje - i na razie ta ilość energii jest po prostu zbyt duża, aby urządzenia z Androidem mogły ją zrównoważyć.

rishimaharaj
źródło
Hmm, czy edytowanie tego w pierwotnym pytaniu nie działałoby lepiej?
Journeyman Geek
Myślę, że cały ten wątek zostanie przekonwertowany na wiki wiki / FAQ i pomyślałem, że najlepiej zostawić pytanie bez zmian i dodać je osobno. @Moderators - czy należy połączyć tę odpowiedź z pytaniem, czy pozostawić taką, jaka jest?
rishimaharaj
0

Oczywiście zależy to od tego, co robisz, ale tak, dochody maleją.

Proste, codzienne aplikacje, takie jak edytor tekstów lub przeglądanie stron internetowych, niewiele korzystają z posiadania więcej niż dwóch rdzeni procesora. Naukowe aplikacje komputerowe i do gier lepiej wykorzystują cztery (lub więcej) rdzenie i / lub funkcję hiperwątkowości, ponieważ mają one na celu maksymalne wykorzystanie nowoczesnego sprzętu, ale korzyści z więcej niż czterech rdzeni są ograniczone.

Ponadto nie wszystko jest ograniczone obliczeniowo. Dodanie rdzeni procesora nie pomoże, jeśli obciążenie jest ograniczone do operacji we / wy. Jeśli kiedykolwiek instalowałeś dysk SSD w celu wymiany mechanicznego dysku twardego, prawdopodobnie wiesz, że codzienna wydajność komputera jest ograniczona częściej niż przez pamięć komputera. W środowiskach o dużym obciążeniu serwera, w których wykorzystywana jest duża liczba rdzeni, aby system mógł obsługiwać jednocześnie dużą liczbę użytkowników i żądań, stosowane są wyspecjalizowane macierze dyskowe, dyski SSD i inne systemy pamięci masowej, aby zapewnić maksymalną wydajność pod obciążeniem.

bwDraco
źródło