[wege]mini schrieb:
Um zu wissen, dass ein DDR250 Modul mit CL2 schneller ist, als ein DDR300 Modul mit CL3, braucht man ja nun wirklich keine Versuche. Da reicht ein Taschenrechner.
Interessant ist, dass damals schon die CPUs bei "gleich schnellem" RAM besser mit dem Takt skaliert haben. Der DDR300 RAM ist mit 1.5 fach langsameren Timings 2% schneller als der DDR200 RAM. Auf dem Papier sind die gleich schnell.
Das mit dem Taschenrechner kannst du so nicht machen, weil Latenz und Taktrate für zwei verschiedene Flaschenhälse verantwortlich sind.
Mal so als Beispiel: Ich habe Code, der ein Bitmap aus dem Speicher einliest, per Pixel irgendeine simple Operation darauf ausführt und dann an anderer Stelle wieder in den Speicher schreibt. In diesem Fall tritt kein Konflikt auf, das heißt die CPU kann diese Operationen in beliebiger Reihenfolge ausführen und kann daher immer irgendwas anderes machen, während sie gerade auf Daten aus dem Speicher wartet. Daher ist hier die Taktrate vom Speicher ein Flaschenhals und man kann daher lineare Skalierung mit der der Datenrate erwarten.
Die Situation, dass die Ausführung aufgehalten wird, weil erstmal die komplette Signallaufzeit zum Speicher (also auch Latenz von CPU und Controller , nicht nur Speicher) abgewartet werden muss, versucht man immer tunlichst zu vermeiden. Dabei hilft out-of-order execution ungemein, aber am wichtigsten ist hier eigentlich eher der Cache. Wenn man richtig doll auf Daten herumhackt, sollte man die immer schön in Pakete schnüren, die in den Cache passen, weil die Performance sonst schnell von "instructions per cycle" zu "cycles per instructions" abrutschen kann.
Edit: Die Situation, dass zwei so unterschiedliche Einstellungen im Benchmark aufs selbe Ergebnis hinausläuft, ist also eher ein Zufall. Tendenziell ist bei gut optimiertem Code eher die Datenrate der Flaschenhals, was auch einer der Gründe ist, warum sich bei der Signallaufzeit so wenig getan hat. Eher das Gegenteil: Die tieferen Cache-Strukturen sowie komplexeren Interconnects von CPUs mit vielen Kernen verschlechtern die Latenz zusätzlich.