In einer verwandten Frage fragte ich nach dem Vorteil eines Dual-CPU-Systems in Bezug auf die Verdoppelung des L3-Cache.
Ich habe jedoch festgestellt, dass die Xeon E5-2600-CPU-Serie genau 2,5 MB L3-Cache pro Kern hat .
Dies lässt mich glauben, dass das Betriebssystem 2,5 MB L3-Cache pro Kern reserviert. Ich habe aber auch die Widersprüchlichkeit Eindruck , dass der L3 - Cache wird geteilt zwischen allen Kernen. Es gibt überraschend wenig Informationen oder Diskussionen darüber.
Mein Hauptanliegen ist, ob Hintergrundanwendungen mit niedriger Priorität den L3-Cache "belasten" und die Leistung für Vordergrundanwendungen mit höherer Priorität verlangsamen könnten. Zwei spezifische Leistungsprobleme, die ich habe, motivieren diese Frage.
Das Kompilieren eines bestimmten C ++ - Programms erfordert auf meinem aktuellen Entwicklungssystem in VS 2008 25 Minuten, während es auf einem anderen System erheblich schneller geht und auf VS 2008 mit identischen Einstellungen nur 5 Minuten benötigt - trotz der Tatsache, dass ich ein nahezu High-End-i7- habe. 970 CPU und ausreichend RAM.
Es dauert oft bis zu 20 Sekunden, bis Programme auf meinem System ausgeführt werden (dh ihr Hauptfenster anzeigen). In einem verwandten Fall benötigt die Windows-Shell bis zu 10 Sekunden, um das Windows Explorer-Kontextmenü anzuzeigen (und verwandte Verhaltensweisen dauern ebenfalls ungefähr so lange), obwohl ich versucht habe, die Kontextmenüeinträge einzuschränken (es gibt derzeit möglicherweise 10 zusätzliche darüber hinaus der Standard).
Mein System ist sicherlich mit einer sehr großen Anzahl von Anwendungen geladen, die ich im Laufe der Jahre installiert (und deinstalliert) habe, aber ich gebe mein Bestes, um das System trotzdem zu optimieren.
Ich habe auch viele Hintergrundanwendungen mit niedriger Priorität ausgeführt; Insbesondere redundante Cloud-Backup-Software wie CrashPlan, die in der Regel etwa 25% der gesamten CPU-Auslastung dieses 6-Kern-12-Thread-Systems ausmacht.
Ich werde einen neuen Computer bekommen. Ich weiß, dass ich weiterhin viele Hintergrundanwendungen ausführen und viele Programme installieren / deinstallieren werde. Wenn ich der Meinung wäre, dass ein Dual-CPU-System, das nicht nur die Kerne, sondern auch den L3-Cache verdoppelt, dazu beitragen würde, die schreckliche Leistung des C ++ - Compilers und die allgemeine Systemverlangsamung zu überwinden, würde ich dies gerne tun.
Es sollte keinen Grund geben, warum ein High-End-System selbst bei vielen Programmen und Hintergrundanwendungen so langsam arbeitet. Aber wenn meine Probleme auftreten, egal wie viel CPU-Leistung und L3-Cache ich dem System gebe, einfach weil ich so viele Programme und Hintergrundanwendungen installiert und ausgeführt habe, möchte ich keine zusätzlichen 2.500 US-Dollar für eine Dual-CPU verschwenden System, das nicht hilft, mein Problem zu lösen.
Irgendwelche Vorschläge, insbesondere in Bezug auf meine Frage, ob der L3-Cache von allen Kernen gemeinsam genutzt wird (so dass Hintergrundanwendungen mit niedriger Priorität möglicherweise den L3-Cache belasten, Programme mit höherer Priorität verlangsamen) oder ob er an Einzelpersonen gebunden ist Kerne, wäre dankbar.
quelle
Antworten:
Auf diesen CPUs verfügt jeder physische Kern über einen eigenen L2-Cache. Der L3-Cache wird von allen Kernen gemeinsam genutzt und ist inklusive. Das heißt, alle Daten, die sich im L2-Cache eines Kerns befinden, befinden sich auch im L3-Cache.
Dies scheint zwar eine Verschwendung von L3-Speicherplatz zu sein, macht den L3 jedoch für die Beschleunigung von Inter-Core-Speicheroperationen von unschätzbarem Wert. Der Hauptzweck des L3-Cache besteht darin, als Schalttafel und Bereitstellungsbereich für die Kerne zu fungieren. Wenn ein Kern beispielsweise wissen möchte, ob ein Speicherbereich möglicherweise von einem anderen Kern zwischengespeichert wird, kann er den L3-Cache überprüfen. Wenn Informationen von einem Kern verarbeitet wurden und der nächste von einem anderen Kern verarbeitet werden muss, geben sie diese über den L3-Cache und nicht über den langsameren Off-Chip-Speicher weiter. Darüber hinaus ist die Auswirkung auf die Leistung bis auf ungewöhnliche Algorithmen nicht so groß - der L2-Cache ist groß genug für kleine Dinge und der L3-Cache ist zu klein für große Dinge.
Während also jeder Kern seinen eigenen 256-KB-L2-Cache und effektiv 256 KB im L3-Cache reserviert hat, wird das Guthaben von allen Kernen gemeinsam genutzt. Weniger wichtige Aktivitäten in anderen Kernen können die Leistung einer wichtigeren Aufgabe beeinträchtigen, die von der Verwendung des L3-Speicherplatzes profitiert. Aus den von mir genannten Gründen ist dies in der Praxis im Allgemeinen kein wesentlicher Effekt, und es lohnt sich im Allgemeinen nicht, sich über die Optimierung von "Massendaten" -Operationen (wie Komprimierung und Scannen) hinaus Gedanken zu machen, um die Cache-Verschmutzung zu minimieren. (Zum Beispiel mit nicht-zeitlichen Operationen.)
quelle
Nach meinem Verständnis sind alle Cache-Ebenen direkt auf dem Chip implementiert und L2 und L3 sind ein und dasselbe (dass nur Intel den Unterschied erkennt, AMD kombiniert sie). Vor diesem Hintergrund würde ich mir vorstellen, dass der L3-Cache auf CPUs nicht von den CPUs auf einem Motherboard mit zwei Sockeln gemeinsam genutzt wird. Dies ist auch sinnvoll, wenn man bedenkt, dass es normalerweise üblich ist, separate Speicherkanäle zum RAM pro CPU zu sehen.
Jemand korrigiert mich, wenn ich falsch liege.
quelle