Wie wird die Anzahl der Cache-Misses berechnet?

Hey, ich habe hier eine Übungsaufgabe die ich nicht gelöst bekomme.
Die Problemstellung lautet folgendermaßen:

"In einer wissenschaftlichen Anwendung werden Partikel simuliert, die durch ihre aktuelle Positon~r und Geschwindigkeit ~v im dreidimensionalen Raum sowie ihre Masse m modelliert werden. Außerdem wird jedem Partikel eine ID zugewiesen. Die entsprechend gestaltete Datenstruktur sieht wie folgt aus:

typedef struct { 
  uint32_t id; 
  float m; float rx, ry, rz; //position 
  float vx, vy, vz; //velocity
} particle_t;

particle_t *particles =calloc(1000000,sizeof(*particles));

Die Datenstruktur ist somit 32 Byte groß. Die einzelnen Elemente der Struktur liegen dabei hintereinander, also ohne Lücken, im Speicher.

Die Simulation verwendet eine Million Partikel und berechnet deren Bewegung über mehrere Zeitschritte. Pro simuliertem Zeitschritt führt die Anwendung je Partikel folgende Berechnungsvorschrift aus (Aktualisierungsvorgang):

r = r + v * dt (r,v Vektoren)

Gehen Sie davon aus, dass Speicherreservierungen mit calloc() immer an der Grenze einer Cachezeile (Vielfache von 64 Byte) beginnen! Die Cache-Größe1 des Prozessors, auf dem das Programm ausgeführt wird, beträgt 256 KB. Eine Cachezeile umfasst 64 Byte.

Frage 1:

Wie viele Cache-Misses werden pro Aktualisierungsvorgang durchschnittlich beobachtet, wenn alle Partikel aktualisiert werden? Begründen Sie Ihre Antwort

Frage 2:

Die Implementierung der Simulation wird nun geändert. Statt eines Arrays von Strukturen (s.o.) werden für alle Elemente der Struktur eigene Arrays mit jeweils einer Million Elementen verwendet. Wie viele Cache-Misses treten nun im Durchschnitt pro Aktualisierung auf? Begründen Sie Ihre Antwort! Welchen der beiden Implementierungsansätze wählen Sie?"

Ich weiß leider nicht wie ich das angehen soll, und finde auch nichts dazu in der Vorlesung (Das einzige wo Cache-Misses vorkommen ist das False-Sharing-Problem)

Wichtig ist mir nicht die lösung, sondern es zu verstehen. Ich bin für jede hilfe dankbar!

Computer, Technik, Speicher, Informatik, Technologie, Cache
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.