Techniken zur Erhaltung der Daten im cache, Lokalität?

Für eine ultra-schnelle code ist es wichtig, dass wir halten die Lokalität der Referenz - halten, wie viel von den Daten, die eng zusammen verwendet, in der CPU-cache:

http://en.wikipedia.org/wiki/Locality_of_reference

Was sind die Techniken, dies zu erreichen? Könnte Leute geben Beispiele?

Ich daran interessiert Java und C/C++ - Beispiele. Interessant zu wissen, von Möglichkeiten, die Menschen benutzen, um zu stoppen viel cache tauschen.

Grüße

  • Sehen Sie diese Sprache unabhängige Frage Wie schreibt man code, der am besten nutzt den CPU-cache, um die Leistung zu verbessern
  • Sie nähern kann es von zwei Seiten: das Mischen der Daten im Speicher, ist ein Ansatz, mischen der Verarbeitung in der Zeit ist eine andere.
  • aber setzen 0.5 MB Daten in den RAM nicht garantieren, es wird alles in den cache an der gleichen Zeit?
  • Gut es könnten auch andere Prozesse, die auf andere CPU-Kerne, die im Wettbewerb für den cache. Aber wenn die CPU-cache ist groß genug für Sie und die anderen Prozesse, dann die 512 kB werden im cache. Um Sie im RAM, die CPU durch den cache, und da wir vermuteten, dass eine große-genug-cache der cache nicht verwerfen die Daten.
  • Wenn die Leute reden über die Lokalität, die größte Sorge ist, zu helfen, den Prozessor laden Sie den cache, wie der Prozess ausgeführt wird. Das ist, das problem zu lösen ist, was passiert, wenn der Speicher eigentlich nicht in den cache (einen anderen Prozess wurde ausgeführt, es passt nicht in Ihre L1, L2 oder L3-cache... Wenn die Datenmenge sehr klein ist, können Sie davon ausgehen, dass es in den cache, und erwarten Sie nicht zu viele Probleme haben (Hinweis: nehmen Sie an, und viele sind nicht garantiert).
  • also für SEHR schnelle Finanz-software, die Sie neu schreiben den Linux-OS, weil jeder einzelne OS-Prozess auftreten, die im hintergrund könnte potential kick aus der wertvollen Algorithmus Daten aus dem cache, und ersetzen Sie es mit.... <eine kleine Linux-OS Prozess Stück von Daten>?
  • Ich weiß nicht, wo Sie zu diesem Schluss gekommen aus... ich war noch nie auf den Handel, aber im Allgemeinen, wenn Sie haben ein Gerät, wo Sie brauchen Leistung, die Sie zwicken die OS. In meinem vorherigen Projekt, der kernel-scheduler wurde überarbeitet, und die box war sehr begrenzt, Dinge, die installiert und ausgeführt werden. Die Kernprozesse wurden an einen bestimmten Prozessor mit einer hohen Priorität, so dass einige spezifische Kerne frei zu gewinnen für andere Prozesse.

InformationsquelleAutor mezamorphic | 2012-03-22
Schreibe einen Kommentar