Frage

Ist es möglich, im CPU -Cache explizit statische Objekte zu erstellen, um sicherzustellen, dass diese Objekte immer im Cache bleiben, sodass jemals keine Leistung getroffen wird, damit sich jemals in RAM oder Gott verbieten kann - virtuelles HDD -Speicher?

Ich bin besonders daran interessiert, auf den großen L3 Shared Cache abzuzielen, der nicht beabsichtigt, L1, L2, Anweisungen oder einen anderen Cache zu zielen, nur den größten Speicherchub des Speichers, den es gibt.

Und nur um zu klären, um sich von anderen Themen zu unterscheiden, die ich vor dem Posten gesucht habe, bin ich nicht daran interessiert, den gesamten Cache zu privatisieren, nur wenige Klassen im Wert von Regionen.

War es hilfreich?

Lösung

Nein. Cache ist nicht adressierbar, sodass Sie keine Objekte darin zuweisen können.

Wie es scheint, dass Sie fragen wollten, ist: Kann ich sicherstellen, dass ich immer Cache -Hits bekomme, nachdem ich den Platz in virtuellem Speicher zugewiesen habe?

Dies ist eine kompliziertere Frage, und die Antwort lautet: teilweise.

Sie können auf jeden Fall vermeiden, auf die Festplatte ausgetauscht zu werden, indem Sie die Speicherverwaltungs -API Ihres Betriebssystems verwenden (z. mlock()) die Region als nicht pagbar zu markieren. Oder zu Beginn von "nicht ausgetauschtem Pool" zuweisen.

Ich glaube nicht, dass es eine ähnliche API gibt, um den Speicher in CPU -Cache einzubinden. Selbst wenn Sie CPU -Cache für diesen Block reservieren können, können Sie Cache -Misses nicht vermeiden. Wenn ein anderer Kern in den Speicher schreibt, wird das Eigentum übertragen, und Sie erleiden einen Cache -Miss und die zugehörige Busübertragung (möglicherweise zum Hauptspeicher, möglicherweise zum Cache des anderen Kerns).

Wie Mathew in seinem Kommentar erwähnt, können Sie den Cache -Miss auch parallel zu anderen nützlichen Arbeiten in der Pipeline erzwingen, damit die Daten bei Bedarf im Cache enthalten sind.

Andere Tipps

Sie können einen weiteren Thread ausführen, der die Daten überschlägt und ihn in den L3 -Cache bringt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top