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, dh 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: goto 10
Dann hängt die Aufgabe in hohem Maße vom Ergebnis des vorherigen Durchlaufs ab und kann nicht mehrere Kopien von sich selbst ausführen, ohne den Wert von 'a'
zu beschädigen, da jede Kopie den Wert von 'a'
zu verschiedenen Zeitpunkten abrufen und unterschiedlich zurückschreiben würde. 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: goto 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.