Arbeitsspeicher-Tuning - Latenzzeiten optimal einstellen
Beim Zusammenstellen eines Rechners achtet der potentielle Käufer auf viele Sachen: Leistungsfähigkeit des Prozessors, die technischen Features einer Grafikkarte, Größe und Performancewerte der Festplatte, und vieles mehr. Dabei setzt er sich mit vielen spezifischen Eigenschaften der einzelnen Komponenten auseinander, denn das PC-System soll ja auch bestens aufeinander abgestimmt sein und dafür "studiert" er zahlreiche Datenblätter.
Doch beim Arbeitsspeicher geben sich viele Computerinteressierte mit der Taktfrequenz zufrieden und können nicht ganz nachvollziehen, warum Markenspeicher deutlich teurer als NoName-Speicher sind. Und so entstehen Vorurteile, dass teurer Markenspeicher nur für Overclocker geeignet ist, die beim Übertakten qualitativ guten Speicher benötigen, der auch mit höheren Taktraten stabil läuft, oder das Markenspeicher in Servern eingesetzt wird, da dieser getestet wurde und einen reibungslosen Betrieb über einen langen Zeitraum garantiert.
Da diese Einsatzgebiete für die meisten Heimanwender uninteressant ist, wird beim Kauf lediglich darauf geachtet, dass der Takt des Arbeitsspeicher mit dem Systembus des Prozessors übereinstimmt, beispielsweise bei einem Athlon XP 3200+ mit FSB 200 Mhz, dass in dem System ein DDR PC400-Speicherriegel eingesetzt wird. Für den Otto-Normalanwender macht es dann relativ wenig Sinn, dass man für den Markenspeicher deutlich mehr bezahlen muss als für NoName-Speicher derselben Kategorie.
Doch die Funktionsweise des Arbeitsspeichers lässt sich nicht einfach nur auf die Taktfrequenz reduzieren, da mehrere Faktoren für die wirkliche Leistung des Arbeitsspeicher zuständig sind. Die Daten werden im Arbeitsspeicher durch einen relativ komplexen Mechanismus verwaltet, beispielsweise müssen Daten richtig adressiert werden, die Daten dann gelesen und geschrieben oder auch zwischengespeichert werden. Die genaue Funktionsweise wird später in diesem Artikel beschrieben. Diese "Mechanismen" (oder besser gesagt dessen Zeiten bei der Abwicklung) nennt man Timings, welche man dann in den Datenblätter von Speicherbausteinen lesen kann:
Und genau diese Timings sind maßgebend für die Leistung des Arbeitsspeichers, teilweise sogar mehr als die Taktrate! Je kürzer die Timings sind, desto schneller werden die oben kurz erläuterten Mechanismen durchgeführt, was zu deutlichen Leistungsgewinnen führt. Und hier wird auch der höhere Preis von Markenspeichern gerechtfertigt, denn ein NoName-Speicher hat in der Regel höhere Timing-Settings und ist somit langsamer als Markenspeicher. Dies hat weder was mit Übertakten noch mit überdurchschnittlichen Betrieb wie in Serversystemen zu tun. Da bei NoName-Speicher in der Regel schlechtere Speicherbausteine eingesetzt werden, können diese mit kürzeren Timing-Settings nicht betrieben werden.
Einführung: Was bedeutet "ns"?
Bevor es in diesem Artikel "an's Eingemachte geht", soll geklärt werden, was es mit der Bezeichnung ns im Bezug zum Arbeitsspeicher auf sich hat. Ausgesprochen steht ns für Nanosekunde und stellt somit einen Bruchteil einer Sekunde dar. Vor allem bei Grafikkarten aber auch bei herkömmlichen Arbeitsspeicher gibt diese Angabe an, für welche Taktrate der jeweilige Speicher geeignet ist und eifrige Overclocker können hieran erkennen, ob sich der Speicher gut übertakten lässt oder ob dieser nicht bereits ziemlich an seiner maximalen Taktfrequenz betrieben wird.
Wenn wir von einem Takt sprechen, meinen wir eigentlich eine Schwingung. Jeder ist sicherlich in der Schule schon einmal der Sinus-Funktion begegnet und genau damit lässt sich ein Takt beschreiben. Hat die Sinusfunktion ihren Ausgangspunkt wieder erreicht, so ist ein Takt abgeschlossen. Da sich die Sinusfunktion stets wiederholt, wird die Taktfrequenz dadurch bestimmt, wie oft diese innerhalb einer Sekunde ausgeführt wird. 1 Hz bedeutet also, dass die Sinusfunktion genau 1 Sekunde benötigt. Bei einem 4 Ghz Prozessor wird diese dann insgesamt 4.000.000.000 mal ausgeführt.
Je höher der Takt, desto weniger Zeit benötigt die Periode und desto "enger" wird das Schaubild.
Jetzt kann man sich folgende Frage stellen: "Wenn bei 1 Hz Taktfrequenz die Sinusfunktion genau 1 Sekunde benötigt, wie lange braucht sie dann bei einer Taktfrequenz von beispielsweie 500 Mhz?". Da 500 Mhz genau 500.000.000 Hz entsprechen, muss man nun einfach 1 Sekunde durch 500.000.000 teilen, um die Dauer einer Sinus-Periode zu berechnen. Das Ergebnis wäre dann genau 2ns. Eine Periode braucht also genau 2 Nanosekunden.
Damit ein Speicher also mit 500 Mhz betrieben werden kann, muss er aus Speicherbausteinen bestehen, bei denen ein Takt mindestens 2ns dauert. Soll der Speicher mit 600 Mhz getaktet werden, so werden Speicherbausteine mit 1,667 ns benötigt.
Timing-Einstellungen
Um die verschiedenen Timing-Optionen zu verstehen, sollte man nachvollziehen können, wie ein Speicher überhaupt organisiert ist. Ein Speicherbaustein ist aufgebaut wie eine Matrix, also aus Zellen, welche eine eindeutige Zeilen- und Spaltenadresse besitzt. Am besten kann man sich dieses Prinzip wie das bekannte Spiel "Schiffe versenken" vorstellen. Auf einem Spielfeld mit A-J Spalten und 1-10 Zeilen muss man erraten, wo sich die Schiffsflotte seines Gegenübers befindet. Mit einer Kombination aus Spalten- und Zeilenangabe (beispielsweise F9) versucht man, ein gegnerisches Schiff zu "versenken".
Nach demselben Prinzip geht die Logik des Speichercontrollers bzw. des Speichers vor, wenn eine bestimmte Information aus einer Speicherzelle gelesen werden soll. Dazu wird zuerst die Zeile und anschließend die Spalte bestimmt, um mittels des Schnittpunkts die Speicherzelle eindeutig zu bestimmen. Es gibt also so genannte Zeilen- (Row Adress Strobe) und Spaltenoperationen (Column Adress Strobe). Row ist die englische Bezeichnung für Zeile, Column steht für Spalte.
RAS-to-CAS-Delay (tRCD) - Zeilenoperationen
Und somit erklärt sich auch schon die erste Timing-Angabe "RAS-to-CAS-Delay (tRCD)", denn bei jedem Speicherzugriff sendet der Speichercontroller die zu adressierende Zeile an die Logik des Speichers. Die Zeit, die vergeht, bis die Zeile ausgelesen und in einen Art Zwischenspeicher gelegt wird, damit die Einträge in der Zeile anschließend weiterverarbeitet werden können, nennt man RAS-to-CAS-Delay, kurz tRCD. Übersetzt heißt dieser Begriff so viel wie "Verzögerung/Dauer zwischen Zeilen- (RAS) und Spaltenoperation (CAS)". Hat man nun im BIOS den Wert für tRCD auf 3.0 eingestellt, so dauert es genau drei Taktzyklen, bis dieser Vorgang abgeschlossen ist. Bei schnellem Arbeitsspeicher, bei dem es möglich ist, diesen Wert auf 2.0 zu stellen, dauert es nun nur noch zwei Taktzyklen. Hier ist der gleiche Vorgang also einen Takt schneller!
1. Schritt: Addressierung der Zeile
CAS Latency (CL) - Spaltenoperationen
Nachdem wir nun die richtige Zeile ausgelesen und in den Zwischenspeicher gelegt haben, benötigen wir noch die entsprechende Spalte, um die richtige Speicherzelle zu lokalisieren. Dazu sendet der Controller das CAS-Signal (Column Address Strobe). Anschließend wird der Inhalt der Zelle ausgelesen und in das Ausgaberegister gespeichert. Die Zeit, die während diesem Vorgangs vergeht, nennt man "CAS Latency (CL)". Da die Daten nun entgültig vorliegen, kann man sagen, das dies die Zeitdauer ist, nach der die Daten dem Prozessor tatsächlich nach Anlegen des Lesekommandos zur Verfügung stehen.
Nachdem die Zeile und nun auch die Spalte
festgelegt wurde, kann die Speicherzelle eindeutig identifiziert werden.
Das Ziel, aus einer bestimmten Zelle die Daten zu lesen, wurde also erfolgreich absolviert. Doch das Auslesen einer einzigen Zelle kommt wahrscheinlich so gut wie nie vor, denn in der Regel werden ganze Speicherbereiche gelesen. Das bedeutet, dass nach dem Auslesen einer Zelle direkt die nächste gelesen wird.
Page Hit + Page Miss - Dieselbe Zeile oder Zeile neu einlesen
Mit etwas Glück befindet sich die nächste auszulesende Zelle in derselben Zeile direkt neben der zuvor ausgelesenen Zelle. Diesen "Treffer" nennt man "Page Hit" und bewirkt, dass das Einlesen der Zeile (also RAS-to-CAS-Delay (tRCD)) entfällt. Es kann also sofort begonnen werden, den Inhalt der Zelle auszulesen und in das Ausgaberegister zu legen, so dass nur die Zeit der CAS Latency benötigt wird. Nur bei immer wieder aufeinanderfolgenden Page Hits kann der Speicher seinen optimalen Datendurchsatz und somit seine theoretische Leistung erreichen. Doch wie im richtigen Leben kann man nicht immer Glück haben und somit gibt es neben "Page Hits" auch "Page Misses".
RAS Active Time (t_RAS) und RAS Precharge Time (t_RP)
Befindet sich nämlich die nächste Zelle nicht in derselben Zeile, so muss die Zeile natürlich wieder neu eingelesen werden. Hier spricht man dann von einem "Page Miss". Bevor nun eine neue Zeile ausgelesen werden kann, muss die aktuelle Zeile zurückgeschrieben und sozusagen deaktiviert werden. Diesen Prozess nennt man "RAS Active Time (t_RAS)". Nach der RAS Active Time kommt die "RAS-Precharge-Time (t_RP)", bei der die Datenleitungen auf einen höheren Spannungspegel aufgeladen werden. Alles in allem kann man beide Latenzzeiten zusammenfassen und diese als Rückschreibe- und Vorbereitungsmaßnahmen beschreiben, die bei einem Page-Miss durchgeführt werden müssen. Aus diesem Grund werden beide Latenzen auch gerne zusammengefasst:
t_RAS und t_RP werden zu t_TC zusammengefasst
Ein Page-Miss sollte vermieden werden, da der Wechsel in eine neue Zeile deutlich länger dauert. Bei einem Page-Hit wird nur die Zeit CAS Latency (CL) benötigt, um Daten zu lesen. Dies würde dann je nach Speicher 2 oder 3 Taktzyklen in Anspruch nehmen. Bei einem Page-Miss werden selbst bei schnellsten Speicherriegeln mindestens 7 Taktzyklen gebraucht, um die Zeile zu deaktivieren (t_RAS). Anschließend wird das Auslesen der Zeile (t_RCD) gefolgt von dem Auslesen der Zelle (CL) durchgeführt.
Der gesamte Ablauf im Überblick
Mittlerweile sollte jedem klar sein, warum Timing-Einstellungen doch so wichtig sind. Wenn bei jedem Vorgang 1 oder 2 Taktzyklen mehr verbraucht werden, kann sich das am Ende zu einem stolzen Wert entwickeln. Der Speicher ist dann einfach nicht so effektiv, wenn er für die einzelnen Vorgänge mehr Zeit braucht.
Sichere Speichertimings | ||||
Speichertyp | PC100 (100Mhz) | PC133 (133Mhz) | PC1600 (100Mhz) | PC2100 (133Mhz) |
Cycle time (Periodendauer) | 10 ns | 7,5 ns | 10 ns | 7,5 ns |
CAS Latency (CL) | 3 Takte | 3 Takte | 2,5 Takte | 2,5 Takte |
RAS-to-CAS-Delay (tRCD) | 3 Takte | 3 Takte | 2 Takte | 3 Takte |
RAS Precharge Time (tRP) | 3 Takte | 3 Takte | 2 Takte | 3 Takte |
RAS Cycle Time (tRC) | 8 Takte | 9 Takte | 7 Takte | 9 Takte |
SPD - Serial Presence Detect
Damit sich der allgemeine Anwender nicht diverse Handbücher über seinen Arbeitsspeicher durchlesen und sich über die Timings informieren muss, gibt es auf jedem Speicherriegel einen kleinen Chip, in dem die Werte gespeichert werden. Diese Werte werden dann vom BIOS ausgelesen. Anhand der SPD (Serial Presence Detect) werden die Timings im BIOS automatisch gesetzt.
Möchte man die Einstellungen selbst vornehmen, muss man SPD im BIOS deaktivieren.
Arbeitsspeicher-Benchmarks
Getestet wird ein DDR-Speicher mit unterschiedlichen Taktfrequenzen und Timings:
1.) 133 Mhz, keine Timingoptimierungen
- CAS Latency: 2,5
- t_RCP: 3T
- t_RAS: 7T
- t_RCD: 3T
2.) 166 Mhz, keine Timingoptimierungen
- CAS Latency: 2,5
- t_RCP: 3T
- t_RAS: 7T
- t_RCD: 3T
3.) 133 Mhz, optimierte Timings
- CAS Latency: 2
- t_RCP: 2T
- t_RAS: 6T
- t_RCD: 2T
4.) 166 Mhz, optimierte Timings
- CAS Latency: 2
- t_RCP: 2T
- t_RAS: 6T
- t_RCD: 2T
SiSoftware Sandra 2003 (Integer-Berechnung)
133Mhz, Standard |
| |
166Mhz, Standard |
| |
133Mhz, Optimiert |
| |
166Mhz, Optimiert |
|
Es wird deutlich, dass optimierte Timingeinstellungen zu mehr Leistungssteigerungen führen als das reine Erhöhen der Taktfrequenz.