Leiden Multi-Core-CPUs in der heutigen Welt immer noch unter sinkenden Erträgen?

2786
rishimaharaj

In anderen Fragen wurde gezeigt , dass Multi-Core-Prozessoren aufgrund des Zustands von Computeranwendungen an sinkenden Erträgen leiden. Ist das in der heutigen Welt noch immer so?

Umfassen die meisten neuen Anwendungen Multi-Threading und nutzen daher mehrere Kerne? Wenn nicht, können die neueren 64-Bit-Betriebssysteme die Kerne nutzen, indem sie Aufgaben / Prozesse verschiedenen Kernen zuordnen. Oder leiden Multi-Core-Prozessoren immer noch unter denselben (oder ähnlichen) sinkenden Erträgen?

Bitte sichern Sie Ihre Ansprüche mit Referenzen.

9
Auf einem x64-Betriebssystem zu sein, macht keinen Unterschied, wenn Sie ein Programm mit mehreren Threads haben. Die Unterschiede in der Compilerlandschaft zwischen 2008 und 2012 sind enorm. Bis es einen einfachen Weg gab, eine Aktion über mehrere Threads hinweg auszuführen, ist es sinnlos, eine CPU mit der Fähigkeit, mehrere Threads gleichzeitig auszuführen, auszuführen. Das ist auch heute noch nicht leicht genug. Ramhound vor 11 Jahren 2

4 Antworten auf die Frage

7
Ansis Māliņš

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

Für normales altes Word und Excel und Minesweeper und was auch immer Ihre Mutter verwendet, ist ein Kern immer noch ausreichend und mehr als zwei sind ein Overkill. Diese Anwendungen verbringen die meiste Zeit im Leerlauf und warten auf Benutzereingaben.

Beim Spielen 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 Spielelogik kann nicht leicht parallelisiert werden. Sie benötigen einen Ort, an dem alle Ergebnisse zusammengefügt werden, um einen zusammenhängenden Spielzustand zu bilden. Daher gibt es normalerweise einen "Haupt" -Thread, auf den alle warten.

Für Multimedia, echtes Zahlen-Crunching und Wissenschaft zählt jeder Kern. Dies sind Aufgaben, die entweder inhärent multithreading sind oder einfach ausgeführt werden können, und die Entwickler haben einen starken Anreiz, die gesamte verfügbare Verarbeitungsleistung zu nutzen.

Power User mögen Multitasking. Torrent, VirtualBox, Screenshots, Videos, Minecraft und Web-Browsing laufen gleichzeitig. Sie profitieren also davon, 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 ein weiterer für den Encoder-Thread und mindestens ein weiterer für den Rest des Systems. Das sind mindestens 4 Kerne.

Im Allgemeinen ist eine gute Spiel-KI viel schwieriger als das Abgleichen mehrerer Aktionen. Das ist nur eine schicke Ergänzung. Zweitens setzen Sie Spiele voraus, die einen einzigen zentralen Spielzustand haben. Das stimmt auch nicht unbedingt. Auch wenn dies der Fall ist, ist dies nicht unbedingt ein Hindernis für das Einfädeln. Beispielsweise werden physikalische Berechnungen normalerweise parallel durchgeführt. Und schließlich haben Spiele auch einen großen Grafik-Rendering-Teil, der auch zum Threading führt. MSalters vor 11 Jahren 1
Ich bezweifle, dass ein einzelner Kern * immer * die richtige Wahl ist (fügen Sie einfach eine wirklich langsame Formel in Excel ein ...) und ich denke, Sie vereinfachen ein wenig. Wie sieht es zum Beispiel mit der Turbo Core (AMD) / Turbo Boost (Intel) -Funktion auf neueren Prozessoren aus? Damit kann mein AMD mit Sechskernhälften die Hälfte der Kerne parken und die andere Hälfte mit einer schnelleren Taktfrequenz betreiben - und Intels Version ist, glaube ich, noch feinkörniger, so dass der Prozessor im laufenden Betrieb für die erforderliche Arbeit neu optimiert werden kann es. Ist das eine bessere Wahl? Das Problem kann nur durch reale Messungen und Benchmarks genau angegangen werden. DMA57361 vor 11 Jahren 0
Ich stimme völlig mit @ DMA57361 überein. Vor einigen Jahren kaufte mein Onkel mehrere Single-Core-AMD-Computer für seine Kinder. Hintergrundprozesse (Windows Update ist der ängstlichste Übertreter), machten sie regelmäßig für einige Minuten praktisch unbrauchbar, indem die CPU maximal ausgelastet wurde. Dan Neely vor 11 Jahren 0
Vergiss das Hyperthreading nicht. Fortgeschrittene Intel-Prozessoren können einen zusätzlichen Prozessorkern simulieren, indem in jedem Kern ein zusätzlicher Satz von Registern bereitgestellt wird und Threads die gleichzeitige Verwendung unterschiedlicher Teile jedes Prozessorkerns zulassen, um die Multitasking-Leistung weiter zu steigern. bwDraco vor 9 Jahren 0
Auch das 3D-Rendering weist einen großen Vorteil auf. Wenn Sie ein Animator oder Grafikdesigner sind und viele Renderings ausführen; Alle professionellen Softwarelösungen haben den Vorteil, von jedem Kern Ihrer Maschine zu profitieren (und mehr von vernetzten Clustern). Die Leistung wird linear mit der Anzahl der Kerne skaliert. Jason C vor 9 Jahren 0
5
DMA57361

I'm afraid the answer is still, as it always has been, "it depends on what you're doing".

Yes, there are diminishing returns from adding more and more cores, and there always will be if you only run a single application at a time.

Even in a well made multi-threaded application, many of the tasks that are threaded out are done so to wait for the slowest components in the machine - hard drive, networking - without impacting the apparent performance to the user. These cannot be improved by greater parallelisation so any theoretical speed up limit is unreachable for practical purposes.

It's worth noting that there are few "big" applications that are not multi-threaded (just check out your OS's Task Manager equivalent, it should be able to tell you how many belong to each process - my Firefox is currently using 31, for example).

Of course, running multiple non-interdependent applications is not as constrained by these limits. As you add more cores you can run more applications concurrently with little drop in processing performance (hard drive, networking, etc performance doesn't scale as nicely, however). In practice, even this too is subject to diminishing returns as there is an unavoidable overhead to managing the distribution of work between cores, communication pipelines, and so on.

For example, this Tom's Hardware post (from 2009) attempts to look at performance of a few multi-core processors under simultaneous applications - running a game along side a AVG scan (both of which are probably multi-threaded). The quad-, tri- and dual-core processors all perform similarly with the game only, but add the simultaneous AVG scan and the performance (measured by average FPS) drops by 22%, 40% and 59% respectively.

So, while a quad core offered no performance boost over a dual core when running one intensive application, as soon as another intensive task appeared it did end up being twice as performant. Unfortunately, I can't find much else that investigates how well this scales with more cores and more intensive tasks.


And then you have to take note of modern features of processors such as Intel's Turbo Boost / AMD's Turbo Core. These particular features allow a multi-core processor it park cores (put them in to a slower, low power, mode) and use the spare energy to overclock the cores that remain active - allowing the processor to optimise itself to provide as much processing power as possible for the number of tasks it is presented with.

2
rishimaharaj

For adding fuel to the fire, I read here that Android is actually slowed down by having more than one core:

The use of multi-core processors can actually make Android devices slower, said Mike Bell, general manager of Intel's mobile and communications group, who blames Android's multi-threading capability, or lack thereof, for the operating system's difficulty in effectively handling powerful CPUs.

The more cores a device has, the more power it requires - and, for the time being, that amount of power is simply too much for Android devices to balance.

Hmm, würde es nicht besser sein, das in deine ursprüngliche Frage zu editieren? Journeyman Geek vor 11 Jahren 0
Ich denke, dass dieser ganze Thread in ein Community-Wiki / FAQ umgewandelt wird, und dachte, dass es am besten wäre, die Frage so zu belassen, wie sie ist, und diese separat hinzuzufügen. @Moderators - sollte diese Antwort mit der Frage zusammengeführt werden oder belassen werden? rishimaharaj vor 11 Jahren 0
0
bwDraco

Natürlich hängt es davon ab, was Sie tun, aber ja, die Erträge gehen zurück.

Einfache, alltägliche Anwendungen wie Textverarbeitung oder Web-Browsing profitieren kaum von mehr als zwei Prozessorkernen. Wissenschaftliche Computer- und Spieleanwendungen neigen dazu, vier (oder mehr) Kerne und / oder Hyperthreading-Fähigkeiten besser zu nutzen, da sie dazu neigen, die moderne Hardware optimal zu nutzen. Der Nutzen von mehr als vier Kernen ist jedoch begrenzt.

Darüber hinaus ist nicht alles rechengebunden. Das Hinzufügen von Prozessorkernen ist nicht hilfreich, wenn Ihre Workload E / A-gebunden ist. Wenn Sie jemals eine SSD installiert haben, um eine mechanische Festplatte zu ersetzen, wissen Sie wahrscheinlich, dass die tägliche Rechenleistung meistens durch den Speicher Ihres Computers eingeschränkt wird. In stark ausgelasteten Serverumgebungen, in denen eine große Anzahl von Kernen verwendet wird, damit das System eine große Anzahl von Benutzern und Anforderungen gleichzeitig verarbeiten kann, werden spezielle Festplatten-Arrays, SSD und andere Speichersysteme verwendet, um eine maximale Leistung unter Last sicherzustellen.