Der Hauptgrund, warum ein Quad-Core-3GHz-Prozessor niemals so schnell ist wie ein 12-GHz-Single-Core, hängt damit zusammen, wie die auf diesem Prozessor ausgeführte Aufgabe funktioniert, dh Single-Threaded oder Multi-Threaded. Amdahls 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 genau schrittweise erledigt werden muss, wie z. B. (ein grob einfaches Programm)
10: a = a + 1
20: goto 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 'a'
zu beschädigen, da jede Kopie den Wert von 'a'
zu unterschiedlichen Zeiten erhalten und anders zurückschreiben würde. Dadurch wird die Aufgabe auf einen einzelnen Thread beschränkt, und daher kann die Aufgabe zu einem bestimmten Zeitpunkt immer nur auf einem einzelnen Kern ausgeführt werden. Würde sie auf mehreren Kernen ausgeführt, würde die Synchronisationsbeschädigung auftreten. Dies begrenzt es auf die Hälfte der CPU-Leistung eines Dual-Core-Systems oder 1/4 in einem Quad-Core-System.
Nehmen Sie nun eine Aufgabe wie:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Alle diese Leitungen sind unabhängig voneinander und können wie die erste in vier separate Programme aufgeteilt und gleichzeitig ausgeführt werden. Jedes dieser Programme kann die volle Leistung eines der Kerne ohne Synchronisationsprobleme effektiv nutzen. Dies ist Amdahls Gesetz kommt hinein.
Wenn Sie also eine Single-Thread-Anwendung haben, die Brute-Force-Berechnungen durchführt, würde der einzelne 12-GHz-Prozessor zweifellos gewinnen. Wenn Sie die Aufgabe auf irgendeine Weise in separate Teile und Multi-Thread-Anwendungen aufteilen können, dann könnten die 4 Kerne nahe kommen, aber nicht ganz reichen. die gleiche Leistung wie nach dem Amdahlschen Gesetz.
Die Hauptsache, die Ihnen ein Multi-CPU-System bietet, ist die Reaktionsfähigkeit. Auf einem Einzelkerncomputer, der hart arbeitet, kann das System träge erscheinen, da die meiste Zeit von einer Aufgabe verwendet wird und die anderen Aufgaben nur in kurzen Intervallen zwischen den größeren Aufgaben ausgeführt werden, was zu einem trägen oder ruckeligen System führt . Auf einem Multi-Core-System erhält die schwere Aufgabe einen Kern und alle anderen Aufgaben werden auf den anderen Kernen ausgeführt und erledigen ihre Aufgaben 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 gute Anzahl von Aufgaben, die sehr parallel sind, aber dennoch eine gewisse Form der Synchronisation erfordern. Handbrake ist ein Video-Trancoder, der alle verfügbaren CPUs sehr gut nutzt, aber einen Kernprozess benötigt, um die anderen Threads mit Daten zu füllen und die Daten zu sammeln, mit denen sie fertig sind.
- Jeder Kern führt tatsächlich x Berechnungen pro Sekunde durch, daher beträgt die Gesamtzahl der Berechnungen x (Kerne).
Jeder Kern ist in der Lage, x Berechnungen pro Sekunde durchzuführen, vorausgesetzt, die Arbeitslast ist parallel, und in einem linearen Programm haben Sie nur 1 Kern.
- Die Taktrate ist eher eine Zählung der Anzahl der Zyklen, die der Prozessor in einer Sekunde durchläuft. Solange alle Kerne mit derselben Geschwindigkeit ausgeführt werden, bleibt die Geschwindigkeit jedes Taktzyklus gleich, unabhängig davon, wie viele Kerne vorhanden sind . Mit anderen Worten, Hz = (Core1Hz + Core2Hz + ...) / Kerne.
Ich denke, es ist ein Trugschluss zu denken, dass 4 x 3 GHz = 12 GHz, wenn man die mathematischen Ergebnisse berücksichtigt, aber Sie vergleichen Äpfel mit Orangen und die Summen stimmen einfach nicht, GHz kann nicht einfach für jede Situation addiert werden. Ich würde es auf 4 x 3GHz = 4 x 3GHz ändern.