Wie berechnen Sie die Prozessorgeschwindigkeit auf Multi-Core-Prozessoren?
Das Aufkommen kostengünstiger Multi-Core-Prozessoren für Endverbraucher wirft die Frage auf, wie viele Anwender die tatsächliche Geschwindigkeit eines Multi-Core-Systems effektiv berechnen können. Ist ein 4-Kern-3Ghz-System wirklich 12 GHz? Lesen Sie weiter, während wir nachforschen.
Die heutige Question & Answer-Sitzung wird von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-Gruppe von Q & A-Websites.
Die Frage
SuperUser Reader NReilingh war neugierig, wie sich die Prozessorgeschwindigkeit für ein Multicore-System tatsächlich berechnet:
Ist es richtig, zum Beispiel zu sagen, dass ein Prozessor mit vier Kernen, die jeweils mit 3 GHz arbeiten, tatsächlich ein Prozessor ist, der mit 12 GHz läuft?
Ich geriet einmal in ein Argument "Mac vs. PC" (das übrigens NICHT der Schwerpunkt dieses Themas ist ... das war schon in der Mittelschule) mit einem Bekannten, der darauf bestand, dass Macs nur als 1-GHz-Maschinen beworben werden, weil sie dual sind -Prozessor G4s laufen jeweils mit 500MHz.
Zu der Zeit, als ich wusste, dass dies aus Gründen, die ich für die meisten Menschen offensichtlich halte, Hogwash war, sah ich gerade einen Kommentar auf dieser Website mit dem Effekt „6 Kerne x 0,2 GHz = 1,2 GHz“, und das brachte mich erneut dazu, darüber nachzudenken, ob Es gibt eine echte Antwort darauf.
Dies ist also eine mehr oder weniger philosophische / tiefgehende technische Frage zur Semantik der Taktgeschwindigkeitsberechnung. Ich sehe zwei Möglichkeiten:
- Jeder Kern führt tatsächlich x Berechnungen pro Sekunde durch, daher ist die Gesamtzahl der Berechnungen x (Kerne)..
- Die Taktrate ist vielmehr eine Zählung der Anzahl von Zyklen, die der Prozessor innerhalb einer Sekunde durchläuft. Solange alle Kerne mit der gleichen Geschwindigkeit laufen, bleibt die Geschwindigkeit jedes Taktzyklus gleich, egal wie viele Kerne vorhanden sind . Mit anderen Worten, Hz = (Kern1Hz + Kern2Hz +…) / Kerne.
Was ist also der geeignete Weg, um die gesamte Taktrate zu bezeichnen, und was noch wichtiger ist, es ist sogar möglich, die Single-Core-Geschwindigkeitsnomenklatur auf einem Multi-Core-System zu verwenden?
Die Antwort
SuperUser-Mitwirkende Mokubai hilft beim Aufräumen. Er schreibt:
Der Hauptgrund, warum ein Quad-Core-Prozessor mit 3 GHz niemals so schnell wie ein 12-GHz-Single-Core ist, liegt in der Funktionsweise der auf diesem Prozessor ausgeführten Task, d. H. Single-Threaded oder Multithreading. Das Amdahlsche Gesetz ist wichtig, wenn Sie die Art der Aufgaben berücksichtigen, die Sie ausführen.
Wenn Sie eine Aufgabe haben, die von Natur aus linear ist und Schritt für Schritt genau ausgeführt werden muss, z. B. (ein sehr einfaches Programm)
10: a = a + 1
20: gehe zu 10
Dann hängt die Aufgabe stark vom Ergebnis des vorherigen Durchlaufs ab und kann nicht mehrere Kopien von sich selbst ausführen, ohne den Wert von zu beschädigen
'ein'
da jede Kopie den Wert von bekommen würde'ein'
zu verschiedenen Zeiten und schreiben Sie es anders zurück. Dadurch wird die Task auf einen einzelnen Thread beschränkt, sodass die Task immer nur zu einem bestimmten Zeitpunkt auf einem einzelnen Core ausgeführt werden kann. Wenn sie auf mehreren Cores ausgeführt wird, kann dies zu einer Synchronisierung führen. Dies begrenzt ihn auf die Hälfte der CPU-Leistung eines Dual-Core-Systems oder auf 1/4 in einem Quad-Core-System.Nun nehmen Sie eine Aufgabe wie:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: gehe zu 10
Alle diese Zeilen sind unabhängig voneinander und könnten in vier separate Programme wie das erste aufgeteilt werden, die gleichzeitig ausgeführt werden können und jeweils die volle Leistung eines der Cores ohne Synchronisationsproblem nutzen können. Dies ist das Gesetz von Amdahl kommt hinein.
Wenn Sie also eine Single-Threaded-Anwendung haben, die Brute-Force-Berechnungen durchführt, würde der 12-GHz-Prozessor die Oberhand gewinnen. Wenn Sie die Aufgabe irgendwie in einzelne Teile und Multi-Threaded aufteilen können, dann könnten die 4 Kerne in die Nähe kommen, jedoch nicht ganz. die gleiche Leistung wie nach Amdahls Gesetz.
Die Hauptsache eines Multi-CPU-Systems ist die Reaktionsfähigkeit. Auf einer einzigen Kernmaschine, die hart arbeitet, kann das System als träge erscheinen, da die meiste Zeit von einer Task verwendet werden kann und die anderen Tasks nur in kurzen Stößen zwischen der größeren Task ausgeführt werden, was zu einem System führt, das träge oder ruckelig erscheint . Bei einem Multi-Core-System erhält die schwere Aufgabe einen Kern, und alle anderen Aufgaben spielen auf den anderen Kernen und erledigen ihre Arbeit schnell und effizient.
Das Argument „6 Kerne x 0,2 GHz = 1,2 GHz“ ist in jeder Situation Müll, es sei denn, die Aufgaben sind vollkommen parallel und unabhängig. Es gibt eine ganze Reihe von Aufgaben, die sehr parallel sind, aber sie erfordern immer noch eine Art Synchronisation. Handbrake ist ein Videotranscoder, der sehr gut alle verfügbaren CPUs verwenden kann, aber es erfordert einen Kernprozess, um die anderen Threads mit Daten zu füllen und die Daten zu sammeln, mit denen sie fertiggestellt sind.
- Jeder Kern führt tatsächlich x Berechnungen pro Sekunde durch, daher ist die Gesamtzahl der Berechnungen x (Kerne)..
Jeder Kern ist in der Lage, x Berechnungen pro Sekunde durchzuführen, vorausgesetzt, dass die Arbeitslast parallel ist. In einem linearen Programm haben Sie nur einen Kern.
- Die Taktrate ist vielmehr eine Zählung der Anzahl von Zyklen, die der Prozessor innerhalb einer Sekunde durchläuft. Solange alle Kerne mit der gleichen Geschwindigkeit laufen, bleibt die Geschwindigkeit jedes Taktzyklus gleich, egal wie viele Kerne vorhanden sind . Mit anderen Worten, Hz = (Kern1Hz + Kern2Hz +…) / Kerne.
Ich denke, es ist ein Irrtum, zu glauben, dass 4 x 3 GHz = 12 GHz die Mathe funktioniert, aber Sie vergleichen Äpfel mit Orangen und die Summen sind einfach nicht richtig, GHz kann nicht einfach für jede Situation addiert werden. Ich würde es auf 4 x 3 GHz = 4 x 3 GHz ändern.
Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.