Leiden Multi-Core-CPUs in der heutigen Welt immer noch unter sinkenden Renditen?

8

In anderen Fragen wurde gezeigt , dass Mehrkernprozessoren aufgrund des Zustands von Computeranwendungen unter sinkenden Renditen leiden. Ist das in der heutigen Welt noch so?

Umfassen die meisten neuen Anwendungen Multithreading und nutzen daher mehrere Kerne? Wenn nicht, können die neueren 64-Bit-Betriebssysteme die Kerne nutzen, indem sie Aufgaben / Prozesse verschiedenen Kernen zuweisen? Oder leiden Multi-Core-Prozessoren weiterhin unter den gleichen (oder ähnlichen) sinkenden Renditen?

Bitte sichern Sie alle Ansprüche mit Referenzen.

Rishimaharaj
quelle
2
Auf einem x64-Betriebssystem zu sein, würde keinen Unterschied machen, wenn Sie ein Programm mit mehreren Threads haben. Die Unterschiede in der Compilerlandschaft zwischen 2008 und 2012 sind enorm. Bis es eine einfache Möglichkeit gab, eine Aktion über mehrere Threads hinweg auszuführen, ist es sinnlos, eine CPU zu haben, die mehrere Threads gleichzeitig ausführen kann. Noch heute ist es nicht einfach genug, das zu tun.
Ramhound

Antworten:

7

Es hängt stark davon ab, was Sie tun.

Für reguläres altes Word und Excel und Minesweeper und was auch immer deine Mutter sonst noch benutzt, ein Kern ist immer noch genug und mehr als zwei sind ein Overkill. Diese Arten von Anwendungen verbringen die meiste Zeit im Leerlauf und warten auf Benutzereingaben.

Für Spiele profitieren Sie von mindestens zwei. Danach kommt es auf das Spiel an. Theoretisch könnten Sie jeden KI-Gegner in einem separaten Thread ausführen, aber die zentrale Spiellogik lässt sich nicht einfach parallelisieren - Sie benötigen einen Ort, an dem alle Ergebnisse zu einem kohärenten Spielzustand zusammengefasst werden. Es gibt also normalerweise einen "Haupt" -Thread, auf den jeder wartet.

Für Multimedia, Real Number Crunching und Wissenschaft zählt jeder Kern. Dies sind Aufgaben, die entweder von Natur aus Multithreading-Aufgaben sind oder einfach ausgeführt werden können, und die Entwickler haben einen starken Anreiz, die gesamte verfügbare Verarbeitungsleistung zu nutzen.

Hauptbenutzer mögen Multitasking. Torrent, VirtualBox, Screenshot, Video, Minecraft und Surfen im Internet werden alle gleichzeitig ausgeführt. Sie werden also davon profitieren, dass jede CPU-hungrige App ihren eigenen Kern hat. Heutzutage ist es beliebt, dein Spiel live zu streamen. Das sind also zwei Kerne für das Spiel, mindestens einer für den Encoder-Thread und mindestens einer für den Rest des Systems. Das sind mindestens 4 Kerne.

Ansis Māliņš
quelle
1
Im Allgemeinen ist eine gute Spiel-KI weitaus schwieriger als die Abstimmung mehrerer Aktionen. Das ist nur eine schicke Ergänzung. Zweitens setzen Sie Spiele voraus, die einen einzigen zentralen Spielstatus haben. Das ist auch nicht unbedingt wahr. Selbst wenn dies der Fall ist, ist dies nicht unbedingt ein Hindernis für das Einfädeln. Beispielsweise werden physikalische Berechnungen typischerweise parallel durchgeführt. Und schließlich haben Spiele auch einen großen Grafik-Rendering-Teil, der auch zum Threading führt.
MSalters
Ich bezweifle, dass ein einzelner Kern jemals die richtige Wahl ist (fügen Sie einfach eine sehr langsame Formel in Excel ein ...), und ich denke, Sie vereinfachen dies ein wenig. Was ist zum Beispiel mit der Funktion Turbo Core (AMD) / Turbo Boost (Intel) auf neueren Prozessoren? Dadurch kann mein Hex-Core-AMD die Hälfte seiner Kerne parken und die andere Hälfte mit einer schnelleren Taktrate ausführen - und Intels Version ist meiner Meinung nach noch feiner abgestimmt -, sodass der Prozessor im laufenden Betrieb für die erforderliche Arbeit neu optimiert werden kann es. Macht das sie zu einer besseren Wahl? Das Problem kann nur durch reale Messungen und Benchmarks genau angegangen werden.
DMA57361
Ich stimme @ DMA57361 voll und ganz zu. Vor einigen Jahren kaufte mein Onkel mehrere AMD-Computer mit einem Kern für seine Kinder im Teenageralter. Hintergrundprozesse (Windows Update ist der ungeheuerlichste Täter) machten sie regelmäßig minutenlang praktisch unbrauchbar, indem die CPU maximal genutzt wurde.
Dan spielt
Vergiss das Hyperthreading nicht. Fortgeschrittenere Intel-Prozessoren können einen zusätzlichen Prozessorkern simulieren, indem sie einen zusätzlichen Satz von Registern in jedem Kern bereitstellen und es Threads ermöglichen, verschiedene Teile jedes Prozessorkerns gleichzeitig zu verwenden, um die Multitasking-Leistung weiter zu steigern.
bwDraco
3D-Rendering ist ein weiteres, das einen großen Vorteil zeigt. Wenn Sie Animator oder Grafikdesigner sind und viele Renderings ausführen; Jede professionelle Software hat den Vorteil, dass sie jeden Kern Ihres Computers nutzen kann (und mehr bei vernetzten Clustern). Die Leistung wird linear mit der Anzahl der Kerne skaliert.
Jason C
5

Ich fürchte, die Antwort lautet immer noch, wie immer: "Es hängt davon ab, was Sie tun."

Ja, das Hinzufügen von immer mehr Kernen führt zu sinkenden Erträgen, und dies ist immer dann der Fall, wenn Sie jeweils nur eine Anwendung ausführen .

Selbst in einer gut gemachten Multithread-Anwendung werden viele der Aufgaben ausgeführt, die ausgeführt werden, um auf die langsamsten Komponenten in der Maschine zu warten - Festplatte, Netzwerk - ohne die offensichtliche Leistung für den Benutzer zu beeinträchtigen. Diese können nicht durch eine stärkere Parallelisierung verbessert werden, so dass eine theoretische Beschleunigungsgrenze für praktische Zwecke nicht erreichbar ist.

Es ist erwähnenswert, dass es nur wenige "große" Anwendungen gibt, die nicht über mehrere Threads verfügen (sehen Sie sich einfach das Task-Manager-Äquivalent Ihres Betriebssystems an, es sollte Ihnen sagen können, wie viele zu jedem Prozess gehören - mein Firefox verwendet derzeit beispielsweise 31 ).

Natürlich ist das Ausführen mehrerer nicht voneinander abhängiger Anwendungen durch diese Grenzwerte nicht so eingeschränkt. Wenn Sie mehr Kerne hinzufügen, können Sie mehr Anwendungen gleichzeitig ausführen, ohne die Verarbeitungsleistung zu beeinträchtigen (Festplatten-, Netzwerk- usw. Leistung lässt sich jedoch nicht so gut skalieren). In der Praxis ist auch dies mit sinkenden Renditen verbunden, da die Verwaltung der Arbeitsverteilung zwischen Kernen, Kommunikationspipelines usw. unvermeidlich mit einem Overhead verbunden ist.

In diesem Beitrag von Tom's Hardware (aus dem Jahr 2009) wird beispielsweise versucht, die Leistung einiger Multi-Core-Prozessoren unter gleichzeitigen Anwendungen zu untersuchen. Dabei wird ein Spiel neben einem AVG-Scan ausgeführt (beide sind wahrscheinlich Multithread-Prozessoren). Die Quad-, Tri- und Dual-Core-Prozessoren arbeiten nur mit dem Spiel ähnlich, fügen jedoch den gleichzeitigen AVG-Scan hinzu und die Leistung (gemessen am durchschnittlichen FPS) sinkt um 22%, 40% bzw. 59%.

Während ein Quad-Core beim Ausführen einer intensiven Anwendung keine Leistungssteigerung gegenüber einem Dual-Core bot, war er, sobald eine andere intensive Aufgabe auftauchte, doppelt so leistungsfähig. Leider kann ich nicht viel anderes finden, das untersucht, wie gut dies mit mehr Kernen und intensiveren Aufgaben skaliert.


Und dann müssen Sie die modernen Funktionen von Prozessoren wie Intels Turbo Boost / AMDs Turbo Core beachten. Diese besonderen Funktionen ermöglichen es einem Multi-Core-Prozessor, Kerne zu parken (sie in einen langsameren Modus mit geringem Stromverbrauch zu versetzen) und die verbleibende Energie zu verwenden, um die aktiven Kerne zu übertakten. Auf diese Weise kann der Prozessor sich selbst optimieren, um so viel Rechenleistung bereitzustellen möglichst für die Anzahl der Aufgaben, mit denen es präsentiert wird.

DMA57361
quelle
2

Um dem Feuer Treibstoff hinzuzufügen, habe ich hier gelesen , dass Android tatsächlich durch mehr als einen Kern verlangsamt wird:

Die Verwendung von Multi-Core-Prozessoren kann Android-Geräte tatsächlich langsamer machen, sagte Mike Bell, General Manager der Intel Mobil- und Kommunikationsgruppe, der die Multithreading-Fähigkeit von Android oder deren Fehlen für die Schwierigkeit des Betriebssystems verantwortlich macht, leistungsstarke CPUs effektiv zu handhaben.

Je mehr Kerne ein Gerät hat, desto mehr Strom wird benötigt - und vorerst ist diese Menge an Leistung für Android-Geräte einfach zu hoch, um sie auszugleichen.

Rishimaharaj
quelle
Hmm, würde es nicht besser funktionieren, dies in Ihrer ursprünglichen Frage zu bearbeiten?
Geselle Geek
Ich denke, dieser ganze Thread wird in ein Community-Wiki / FAQ konvertiert und dachte, es wäre am besten, die Frage so zu lassen, wie sie ist, und dies separat hinzuzufügen. @Moderators - sollte diese Antwort mit der Frage zusammengeführt oder unverändert bleiben?
Rishimaharaj
0

Natürlich hängt es davon ab, was Sie tun, aber ja, es gibt sinkende Renditen.

Einfache, alltägliche Anwendungen wie Textverarbeitung oder Surfen im Internet profitieren nur wenig von mehr als zwei Prozessorkernen. Wissenschaftliche Computer- und Spieleanwendungen nutzen in der Regel vier (oder mehr) Kerne und / oder Hyperthreading-Funktionen besser, da sie so konzipiert sind, dass sie die moderne Hardware optimal nutzen. Der Nutzen von mehr als vier Kernen ist jedoch begrenzt.

Darüber hinaus ist nicht alles rechnergebunden. Das Hinzufügen von Prozessorkernen hilft nicht, wenn Ihre Arbeitslast an E / A gebunden ist. Wenn Sie jemals eine SSD installiert haben, um eine mechanische Festplatte zu ersetzen, wissen Sie wahrscheinlich, dass die tägliche Computerleistung häufig durch den Speicher Ihres Computers eingeschränkt wird. In ausgelasteten Serverumgebungen, in denen eine große Anzahl von Kernen verwendet wird, um dem System die gleichzeitige Verarbeitung einer großen Anzahl von Benutzern und Anforderungen zu ermöglichen, werden spezielle Festplatten-Arrays, SSDs und andere Speichersysteme verwendet, um maximale Leistung unter Last sicherzustellen.

bwDraco
quelle