Wird der L3-Cache bei einer Sandy-Bridge E Xeon-CPU von allen Kernen gemeinsam genutzt?

Wird der L3-Cache bei einer Sandy-Bridge E Xeon-CPU von allen Kernen gemeinsam genutzt?

In einemVerwandte FrageIch habe nach dem Vorteil eines Dual-CPU-Systems im Hinblick auf die Verdoppelung des L3-Cache gefragt.

Mir ist jedoch aufgefallen, dass die Xeon E5-2600-CPU-Serie genau2,5 MB L3-Cachepro Kern.

Dies lässt mich glauben, dass das Betriebssystem 2,5 MB L3-Cache pro Kern reserviert. Ich habe jedoch auch den widersprüchlichen Eindruck, dass der L3-Cachegeteiltzwischen allen Kernen. Darüber gibt es überraschend wenig Informationen oder Diskussionen.

Meine größte Sorge ist, ob Hintergrundanwendungen mit niedriger Priorität den L3-Cache „beanspruchen“ und die Leistung für Vordergrundanwendungen mit höherer Priorität verlangsamen könnten. Zwei spezifische Leistungsprobleme, die ich habe, motivieren diese Frage.

  1. Das Kompilieren eines bestimmten C++-Programms dauert auf meinem aktuellen Entwicklungssystem in VS 2008 25 Minuten, während es auf einem anderen System wesentlich schneller geht und in VS 2008 mit identischen Einstellungen nur 5 Minuten benötigt – und das, obwohl ich eine nahezu High-End-CPU des Typs i7-970 und ausreichend RAM habe.

  2. Auf meinem System dauert es oft bis zu 20 Sekunden, bis Programme ausgeführt werden (d. h. ihr Hauptfenster anzeigen). Und in diesem Zusammenhang ist anzumerken, dass die Windows-Shell bis zu 10 Sekunden benötigt, um das Kontextmenü des Windows Explorers anzuzeigen (und verwandte Verhaltensweisen dauern ebenfalls etwa genauso lange), trotz meiner Versuche, die Kontextmenüeinträge zu begrenzen (derzeit gibt es neben dem Standardeintrag vielleicht 10 zusätzliche Einträge).

Mein System ist sicherlich mit einer sehr großen Zahl von Anwendungen belastet, die ich über die Jahre installiert (und deinstalliert) habe, aber ich gebe trotzdem mein Bestes, das System zu rationalisieren.

Außerdem laufen bei mir viele Anwendungen mit niedriger Priorität im Hintergrund, insbesondere redundante Cloud-Backup-Software wie CrashPlan, die zusammen etwa 25 % der gesamten CPU-Auslastung auf diesem 6-Core-12-Thread-System beanspruchen.

Ich werde mir einen neuen Computer zulegen. Ich weiß, dass ich weiterhin viele Hintergrundanwendungen ausführen und viele Programme installieren/deinstallieren werde. Wenn ich glauben würde, dass ein Dual-CPU-System, das nicht nur die Anzahl der Kerne, sondern auch den L3-Cache verdoppelt, dabei helfen würde, die schreckliche Leistung des C++-Compilers und die allgemeine Systemverlangsamung zu überwinden, würde ich es gerne tun.

DortsollenEs gibt keinen Grund, warum ein High-End-System so langsam läuft, selbst mit vielen Programmen und Hintergrundanwendungen. Aber wenn meine Probleme immer auftreten, egal wie viel CPU-Leistung und L3-Cache ich dem System zuteile, einfach weil ich so viele Programme und Hintergrundanwendungen installiert und ausgeführt habe, möchte ich nicht 2.500 Dollar zusätzlich für ein Dual-CPU-System verschwenden, das mein Problem nicht löst.

Ich bin für alle Vorschläge dankbar, insbesondere zu meiner Frage, ob der L3-Cache von allen Kernen gemeinsam genutzt wird (so dass Hintergrundanwendungen mit niedriger Priorität möglicherweise den L3-Cache beanspruchen und Programme mit höherer Priorität verlangsamen) oder ob er eher an einzelne Kerne gebunden ist.

Antwort1

Auf diesen CPUs hat jeder physische Kern seinen eigenen L2-Cache. Der L3-Cache wird von allen Kernen gemeinsam genutzt und ist inklusiv – das heißt, alle Daten, die sich im L2-Cache eines Kerns befinden, befinden sich auch im L3-Cache.

Dies mag zwar wie eine Verschwendung von L3-Speicherplatz erscheinen, macht L3 jedoch für die Beschleunigung von Speicheroperationen zwischen den Kernen unschätzbar wertvoll. Der Hauptzweck des L3-Cache besteht darin, als Schalttafel und Bereitstellungsbereich für die Kerne zu fungieren. Wenn beispielsweise ein Kern wissen möchte, ob ein Speicherbereich von einem anderen Kern zwischengespeichert werden könnte, kann er den L3-Cache überprüfen. Wenn Informationen von einem Kern verarbeitet wurden und als nächstes von einem anderen Kern verarbeitet werden müssen, werden sie über den L3-Cache und nicht über den langsameren externen Speicher weitergeleitet. Abgesehen davon ist der Leistungseinfluss nicht so groß, außer bei ungewöhnlichen Algorithmen – der L2-Cache ist groß genug für kleine Dinge und der L3-Cache ist zu klein für große Dinge.

Obwohl also jeder Kern seinen eigenen 256 KB großen L2-Cache hat und effektiv 256 KB im L3-Cache reserviert sind, wird der Rest von allen Kernen geteilt. Weniger wichtige Aktivitäten in anderen Kernen können die Leistung einer wichtigeren Aufgabe beeinträchtigen, die von der Nutzung des L3-Speicherplatzes profitiert. Aber aus den genannten Gründen ist dies in der Praxis im Allgemeinen kein signifikanter Effekt und es lohnt sich im Allgemeinen nicht, sich darüber Gedanken zu machen, außer die Optimierung von „Massendaten“-Operationen (wie Komprimierung und Scannen), um die Cache-Verschmutzung zu minimieren. (Zum Beispiel durch die Verwendung nicht-zeitlicher Operationen.)

Antwort2

Meines Wissens sind alle Cache-Ebenen direkt auf dem Chip implementiert und L2 und L3 sind ein und dasselbe (nur Intel erkennt den Unterschied, AMD kombiniert sie). In Anbetracht dessen würde ich mir vorstellen, dass der L3-Cache auf CPUs auf einem Dual-Socket-Motherboard nicht zwischen den CPUs geteilt wird. Dies ist auch sinnvoll, wenn man bedenkt, dass es üblich ist, separate Speicherkanäle für RAM pro CPU zu sehen.

Korrigiert mich jemand, wenn ich falsch liege.

verwandte Informationen