2013-04-02 5 views
6

Nehmen wir an, 4 Threads laufen auf 4 separaten Kernen eines Multicore x86-Prozessors, und sie teilen keine Daten, ist es möglich, die 4 progammatically zu machen Cores verwenden separate und vordefinierte Teile des gemeinsam genutzten L2-Caches.Ist es möglich, Teile der geteilten L2-Caches verschiedenen Kernen zuzuweisen

+3

Hier ist eine interessante Arbeit zu diesem Thema, http://www.eecg.toronto.edu/~tamda/papers/softpart.pdf – MetallicPriest

+0

Ich mag besonders den Begriff * problematisch * ... ;-) – Axel

+0

Oh, Ich sah die Empfehlung der Rechtschreibprüfung nicht problematisch, als ich progammatisch tippte, LOL! – MetallicPriest

Antwort

2

Verwenden wir zwei Begriffe, exklusive und gemeinsame Caches anstelle von L1, L2, L3, L4-Caches. Verschiedene CPU-Familien beginnen, den Cache auf verschiedenen Ebenen zu teilen. In den vorgestellten Begriffen ist die ursprüngliche Frage - ist es möglich geteilten Cache in die Teile zu teilen, von denen jeder ausschließlich von einer der CPU/Kerne verwendet wird? Es gibt keine klare Antwort. Außerdem gibt es zwei Antworten, die einander entgegengesetzt sind.

1) Erste und allgemeine Antwort: NEIN. Cache wird standardmäßig in Hardware verwaltet. Es gibt nur wenige Steuerhebel des Caches, auf die in Software zugegriffen werden kann, wie das Aktivieren/Deaktivieren des Cachespeichers für den gesamten Speicher oder den definierten Speicherbereich. Wenden Sie die angegebene Richtlinie für Cache-Flushing (Durchschreiben/Zurückschreiben) an. Nein, hauptsächlich aufgrund der Tatsache, dass es für die Verwaltung in Hardware entwickelt wurde. Es gibt also keine nützliche Schnittstelle, die es erlaubt, sie in Software vernünftig zu verwalten.

2) Zweite Antwort: Ja. Tatsächlich Cache, der so entworfen ist, dass jede Zeile des Caches Daten aus dem spezifizierten Satz von Speicherzeilen speichern kann. Aus diesem Grund stellt der Speichermanager sicher, dass diese Cache-Zeile ausschließlich von dieser CPU verwendet wird, wenn der Speichermanager garantiert, dass dieselbe CPU eine CPU/Kern besitzt und alle Speicherzeilen verwendet, die ausschließlich der gleichen Cache-Zeile zugeordnet sind. Es ist eine sehr knifflige Problemumgehung. Und es hat sehr begrenzte Vorteile und hat schwerwiegende Nachteile: Speicherlayout ist sehr fragmentiert, Cache-Nutzung ist unausgewogen, komplizierte Speicherverwaltung, sehr hadrware-abhängig (Details finden sich in dem von "MetallicPriest" zur Verfügung gestellten Papier).

Resume: es ist theoretisch möglich und fast unmöglich in der Praxis.