Wie wird die Anzahl der Cache-Misses berechnet?

1 Antwort

Was ich mir zusammenreime (was aber nicht stimmen muss)... Wenn man umgekehrt die Hits bertrachtet, also ob der zu berechnende Wert schon im Cache ist, hat man bei der ersten Variante immer, wenn eine struct in den Cache geladen wird, automatisch die Nächste mit im Cache, da die struct ja 32 Byte ist, eine Cachezeile 64 Byte. Das heisst, 50% Cache Hits (immer die 2. struct).

In der anderen Variante mit den Arrays lädt man mit dem 1. Element je 16 floats in eine Cachezeile (64/4), da die einzelnen Arrays an anderer Stelle im Speicher sind, für jedes der Arrays (sofern es da keine Kollisionen, etc. gibt, aber ein 16er Datenblock gesamt sind ja nur 512 Bytes, da ist Platz bis 256k). D.h. pro 16 Berechnungen sind die Werte 15 Mal im Cache, was eine Trefferrate von 94% ergibt.

Woher ich das weiß:Studium / Ausbildung – Informatiker

Was möchtest Du wissen?