Blog Alkis Blog #39 - Welcher RAM? Und wieviel? Und warum überhaupt?

Incredible Alk

Moderator
Teammitglied
Willkommen zum nächsten „Wunschblog“!
Nachdem mich in den letzten Wochen doch einige Anfragen nach einem „RAMBlog“ erreicht haben beuge ich mich dem Wunsch der Community und schreibe mal einige Seiten über allerlei Dinge bezüglich Arbeitsspeicher runter, die immer wieder in den Threads auftauchen. Da das Thema sehr umfangreich ist wird der Eintrag hier mit Sicherheit der Rekordhalter was seine Länge angeht werden.


Eins vorweg: Der Blog hier dient ausdrücklich nicht dazu, im Detail zu erklären wie und warum RAM funktioniert – dies wird in den Weiten des Internetzes auf Wunsch sehr detailliert erklärt. Ebenfalls möchte ich hier keine Benchmarktiraden von mir geben, da es diese erstens ebenfalls tonnenweise im Netz gibt und zweitens schneller überholt sind als 100 Klicks auf diesem Blog angekommen sind. Es geht hier vor allem darum, typische Fragen etwas näher und vor allem von der praktischen Seite zu betrachen, die ständig wiederkehrend in diversen Threads auftauchen. Takt oder Latenz, single- oder dualrank, Speichercontroller, Kompatibilitäten, Kühler, Preise usw…. mal von einem weniger durchtechnisierten Standpunkt aus betrachtet und für einen nicht-Nerd möglichst verständlich.


Warum überhaupt?

Los geht’s! Bevor ich etwas auf die Details eingehe sollte man schon grundsätzlich klären, was RAM eigentlich ist und wozu man ihn überhaupt braucht. Erste Überraschung: Heutzutage in den meisten Fällen streng technisch gar nicht mehr! Woher diese steile These kommt gleich mehr. Kurzer Ausflug in die Geschichte. Die ersten Mikroprozessoren waren vergleichsweise simple Chips, die nicht viel mehr konnten als „lese Daten [aus Massenspeicher] aus, verarbeite Daten, schreibe Daten zurück“. Und daran hat sich bis heute auch wenig geändert, grundsätzlich machen CPUs noch immer nichts anderes. Wie bekannt ist sind CPUs in ihrer Verarbeitungsgeschwindigkeit über die letzten Jahrzehnte aber extrem beschleunigt worden und das speziell im Punkt „verarbeite Daten“. Dies hatte zur Folge, dass CPUs irgendwann so schnell im Verarbeiten der Daten waren, dass das auslesen und zurückschreiben selbiger zum Flaschenhals wurde und nebenbei oftmals auch heute noch ist. Um schneller zu werden, mussten Daten schneller zur CPU und wieder von dort weggeschafft werden als das klassische Massenspeicher konnten – ein schneller Zwischenspeicher musste her, der häufig genutzte Daten vorhält und diese möglichst schnell bereitstellen kann. Diese Aufgabe sollte eine neue Speichertechnik übernehmen, die einen wahlfreien Zugriff (random access) schnell durchführen konnte, unser heutiger RAM. Was wir heute klassisch als RAM betrachten ist dabei synchron betriebener, dynamischer RAM, daher der Ausdruck „SD-RAM“. Das „SD“ wird zwar heute meist einfach weggelassen bzw. durch „DDR“ ersetzt, technisch korrekt nutzen wir aber noch immer „DDR-SD-RAM“ - aktuell in der 4. Generation. Der Grund für die Wahl von synchron und dynamisch ist, dass man hier vergleichsweise viel Speicher auf kleiner Fläche bzw. mit wenigen Transistoren unterbringen kann und der Speicher trotzdem sehr fix ist. Diese RAM-Sorte war selbst in sehr frühen Ausbaustufen schon sehr, sehr viel schneller als Massenspeicher aber schnell wurde klar, dass auch der neue RAM viel zu langsam war, um mit den extrem schnellen Geschwindigkeitsschüben der CPUs (damals gabs die noch…) mitzuhalten. Man brauchte also etwas noch schnelleres… und das gab es: nämlich die statische statt dynamische Variante unseres RAMs: Sogenannter SRAM. Dieser hat jedoch einen entscheidenden Nachteil: SRAM-Zellen benötigen sehr viel Platz und Energie. Selbst mit aktuellen Fertigungstechnologien würden nur ein paar Hundert MB auf einen RAM-Riegel passen und tonnenweise Strom fressen. Also wurde SRAM nur als zusätzlicher, noch schnellerer Zwischenspeicher eingesetzt und in die CPU selbst integriert – heute kennt man das als CPU-Cache. Natürlich ging auch hier der Fortschritt seinen Weg und wo noch vor 20 Jahren 32 Mebibyte Arbeitsspeicher eine ganze Menge waren gibt es heute bereits CPUs, die derartige SRAM-Mengen als Cache vorrätig halten. Hier schließt sich der Kreis zur steilen These weiter oben: Wer eine solche CPU besitzt könnte theoretisch Windows98 und alle vergleichbar komplexen Programme rein im Cache der CPU ausführen ohne einen RAM-Riegel zu benutzen…es ist tatsächlich so, dass der wirklich ausführbare Teil heutiger Programme nahezu immer so klein ist, dass er vollständig in den (L3-)Cache der CPU passt – RAM in seiner klassischen Form ist oftmals nur dazu da, zu verarbeitende Rohdaten zu liefern.


Warum erzähle ich das alles? Es geht darum zu verstehen, dass ein RAM-Zugriff für die CPU zunächst mal einen worst case darstellt, denn eigentlich sollten alle zu verarbeitenden Daten bereits im Cache der CPU liegen. Dass dem möglichst häufig so ist wird von ausgeklügelten Sprungvorhersagen und Prefetchern moderner CPUs sichergestellt – dass eine CPU wirklich auf Daten aus dem RAM warten muss ist also tatsächlich in den meisten Fällen die Ausnahme – bloß wenn es passiert ists performancetechnisch schlimm, denn ein RAM-Zugriff dauert im Vergleich zum CPU-Cache roundabout 50-100x länger – für die CPU eine halbe Ewigkeit. Man möchte also alle nötigen Daten immer schon in den großen Caches der CPU haben und vermeiden, dass man was einzelnes was fehlt in den RAM „suchen gehen“ muss.


Takt oder Latenzen?

Hier kommt nun das ständige Thema Taktrate gegen Latenzen ins Spiel. Grob gesagt bestimmt die Taktrate des RAMs seine Bandbreite (wie viele Daten er pro Zeiteinheit übertragen kann) und die Latenz des RAMs wie lange er braucht um ein ganz bestimmtes Datenpaket zu finden und zu liefern. Letzteres ist wie oben beschrieben der schlimmste Fall der für die CPU eintreten kann – sie braucht einen Datensatz zwingend zum weitermachen aber dieser ist noch nicht im Cache. Glücklicherweise sind die genannten Algorithmen mittlerweile so gut, dass das vergleichsweise sehr sehr selten vorkommt. Fast immer kann eine CPU heutzutage „erraten“, welche Daten wohl als nächstes gebraucht werden und die schon mal in den Cache vorladen während man noch mit was anderem beschäftigt ist. Dadurch, dass Caches heute sehr groß sind ists auch nicht so tragisch wenn man mehr hinein lädt als wirklich gebraucht wird – das wird nach Beendigung der Berechnung einfach wieder verworfen. An der Stelle wird nun klar, dass die Bandbreite einen sehr sehr viel größeren Einfluss auf die Performance haben muss als die Latenz, denn letztere ist überhaupt nur dann relevant, wenn die CPU vorher salopp gesagt falsch (oder gar nicht) geraten hat und Daten die gebraucht werden nicht sowieso schon da sind. Dies ist der Grund, warum hohe Taktraten beim RAM viel wichtiger sind als schnelle Latenzen – und der Grund, warum die immer wieder gemachte Milchmädchenrechnung von „Takt durch Latenz = Performance“ völliger Stumpfsinn ist. Die allermeisten Anwendungen würden übertrieben gesagt auf DDR4-4000 CL30 noch schneller laufen als auf DDR4-3000 CL15 – einfach weil die Latenzen fast immer völlig wurscht sind.

Nun sagte er „fast“ und „die allermeisten“. Tja, alles hat natürlich einen Haken. Es gibt blöderweise Anwendungen, die von ihrer Art her sehr sehr ungünstig für die „Vorhersage“ der CPU sind – weil man die kommenden Berechnungen nicht sinnvoll vorhersagen kann. Beispiele dafür sind Datenkompression mit großen Wörterbüchern oder auch manche Kryptomining-Algorithmen. Bei ersterem liegt es in der Natur der Sache dass die CPU nicht erraten kann, wie die noch zu komprimierenden Daten aussehen werden, bei letzterem sind Algorithmen absichtlich so definiert dass sie schwer berechenbar sind um eine Blockchain „stabiler“ und sicherer gegen ASICs zu machen (das ist aber ein anderes Thema). Auch hier gibt es einen intelligenten Trick der CPU: Wenn ich nicht erraten kann, was ich als nächstes brauche, lade ich alles in den Cache was überhaupt möglich ist. Das geht super wenn 7ZIP Daten mit einem 8 MiB großen Wörterbuch komprimieren soll und die CPU mehr als 8 MiB Cache hat – und nicht mehr, wenn das Wörterbuch auf einmal 64 MiB groß ist – deswegen gibt’s hier extreme Performancesprünge. Sobald die nötigen Daten nicht mehr in den Cache passen und auch nicht mehr im Voraus erraten werden kann was als nächstes gebraucht wird werden die Latenzen wichtig. Denn dann kommt es ständig vor, dass die CPU eine Information in den RAM suchen gehen muss – bei diesen speziellen Anwendungen ist es also durchaus wichtig, auf kurze Latenzen zu achten und hier wäre der erwähnte DDR4-3000 CL15 auch deutlich überlegen.

Es kommt also wie immer darauf an, was genau man mit seiner Hardware so anstellt, ob nun hohe Taktraten oder schnelle Latenzen die bessere Wahl sind – oder ob es völlig egal ist (dazu später mehr). Wir raten deswegen dazu, hohen Taktraten immer den Vorzug vor schnellen Latenzen zu geben, weil die Anwendungen, die davon eher profitieren, die mit großem Abstand häufigsten sind. Latenzkritische Anwendungen sind wirklich vergleichsweise selten – und Workloads die ausschließlich solche Anwendungen nutzen und zeitkritisch sind (beispielsweise Altcoin-CPU-Miningrigs) noch seltener.


Mythen und Märchen

Zum Thema Latenzen möchte ich noch in einem Abschnitt auf die elendige Thematik eingehen, die ständig wieder in den Foren runtergepredigt wird, davon aber leider nicht richtig wird. Immer wieder wird geschrieben, dass die Zugriffszeiten (in ns) sich über die letzten Jahrzehnte ja gar nicht viel verbessert haben. Und dann wird gerechnet. Der gute alte DDR-400 CL2 hatte eine theoretische Zugriffszeit von 10 ns. Heute haben wir DDR4-3200 CL16 und siehe an: Ebenfalls rechnerisch 10 ns. Bis hierhin stimmt das alles auch – blöderweise werden dann hier schon Schlussfolgerungen gezogen ohne auch nur einen Schritt weiter zu denken. Mal ehrlich: Glaubt man hier wirklich, dass die Horden von Ingenieuren die die letzten zig Jahre mit der Weiterentwicklung von DRAM beschäftigt waren nicht einfallsreicher waren, als Taktrate gegen Latenz einzutauschen? Natürlich nicht.

Stellvertretend für viele viele Techniken die dazu führen, dass DDR4-3200 CL16 sehr wohl in der Praxis viel, viel schnellere Zugriffe erlaubt als DDR-400 CL2 möchte ich Prefetching und vor allem Speichercontrollertechnik in den Raum werfen. Es ist, soviel ist sicherlich nach dem Lesen der letzten Abschnitte klargeworden, die Ausnahme, dass eine CPU ein ganz bestimmtes Datenpaket in den RAM suchen geht. Nahezu immer werden ganze Reihen von aufeinanderfolgenden Daten ausgelesen – entweder weil sowieso klar ist, dass man sie braucht, oder weil die CPU im Zweifel einfach rät und was nach einem benötigten Datenwort im Speicher steht vorsichtshalber mal mitlädt. Schauen wir mal, wie der RAM und die Latenz darauf reagiert, wenn eine CPU sagen wir mal nicht nur ein Datenwort sondern gleich 8 aufeinanderfolgende Datenwörter haben will. Der gute alte DDR-400er braucht dafür theoretisch 27,5 ns (die Rechnung erspare ich dem Leser), da er übertrieben gesagt alle 8 Datenwörter nacheinander holen gehen muss. Auch hier gibt’s schon Optimierungen (sonst würde es ja 8 x 10 = 80 ns dauern), dennoch ist das doch ziemlich langsam vor allem, da es heute wahrscheinlich die Ausnahme ist, dass eine CPU NICHT gleich 8 oder mehr Zellen gleichzeitig anfordert. Unser DDR4-3200 braucht für die gleiche Aufgabe rund 12 ns. Die Zugriffszeit des Riegels ist also mehr als doppelt so schnell. Grund ist das 8x Prefetching des DDR4-Standards – die 8 Datenwörter werden sowieso ausgelesen aber nur dann übertragen wenn sie tatsächlich angefordert sind.

Weiterer wenn nicht der Hauptgrund für die Performancesteigerungen des RAMs über die letzten Jahre sind massive Verbesserungen am Controller des RAMs. RAM selbst ist im Wesentlichen nur eine riesige Ansammlung von adressierbaren Speicherzellen. Die komplette Logik dahinter, was man wie wann optimalerweise tut um die maximale Leistung aus dem Speicher zu holen ist Sache des Speichercontrollers. Diese Aufgabe ist derart wichtig, dass bereits zu Athlon64-Zeiten der Speichercontroller vom Board/Chipsatz direkt in die CPU integriert wurde und seitdem fester Bestandteil dieser ist. Alleine durch die Optimierung von Ansprache, Verwaltung und Organisation von RAM sind massive Leistungssteigerungen erzielt worden – was nur dann möglich ist, wenn der RAM selbst die Verbesserungen mitmacht – neue effizientere Befehle der Speichercontroller sind in den Spezifikationen der DDR-Generationen enthalten. Die Integration des Speichercontrollers in die CPU brachte massive Latenzverbesserungen in der Praxis – denn alle Nanosekundenwerte die bisher genutzt wurden sind THEORETISCHE Werte des Riegels, die tatsächlichen Zeiten liegen weit, weit darüber. Denn vom Moment „CPU will Datenwort 9783456823“ bis „Datenwort liegt im Cache“ vergeht weit mehr Zeit als die vielleicht 10 ns Zugriffszeit des RAM-Moduls. Schließlich muss zunächst der Befehl an den Speichercontroller gehen, dieser muss ihn verarbeiten und zum Modul schicken. Das Modul legt das Datenwort an seine Pins an und der Controller muss wieder abholen, verarbeiten und in den Cache der CPU schicken. Zu Zeiten als der Controller noch im Chipsatz integriert war waren das Zeiten von Hunderten von Nanosekunden – selbst heute, mit hochentwickelten vollintegrierten IMCs liegen wir noch im Bereich von ~ 50-80 ns für solche Anfragen (wer will kanns bei sich mit AIDA64 nachmessen…). Ob der RAM-Riegel an sich nun 10 oder 12 oder 15 ns benötigt ist wie man sehen kann in der gesamten Verarbeitungskette einer solchen Anfrage fast vernachlässigbar. Ohne noch weiter ins Detail zu gehen ist die Speicherperformance auf ein einfaches „Takt pro Latenz“ herunter zu brechen offensichtlich äußerst kurzsichtig.


Was bringts?


Sinnvollerweise folgt nun die Frage danach, was das ganze Bremborium um sehr schnellen RAM dann nun in der Praxis wirklich bringt – und die Antwort darauf ist zumeist ein sehr ernüchterndes „wenig bis gar nichts“. Denn um wirklich deutliche Performancesteigerungen durch schnellen RAM zu erhalten müssen zwei Dinge (gleichzeitig!) gegeben sein.

Erstens: Die Leistung von CPU/RAM muss der Flaschenhals sein. Wenn eine andere Komponente so langsam ist dass die CPU immer auf diese warten muss bringt der beste RAM nichts.
Zweitens: Die Anwendung muss sehr bandbreitenlastig sein – bedeutet der Schritt „Verarbeiten der Daten“ muss schneller fertig sein als „Einlesen der Daten“ und „Zurückschreiben der Daten“.

Diese beiden Dinge kommen beim normalen Endanwender nur sehr selten gleichzeitig vor bzw. es gibt nur selten Szenarien, in denen sowas provoziert wird. Nehmen wir den normalen Spieler da draußen. Wenn keine besonderen Einstellungen gewählt werden ist der heutige Gamer in Zeiten von hochauflösenden TFTs mit schnellen Bildwiederholraten selbst bei schneller GPU so gut wie immer im Grafiklimit. Es ist ab einem gewissen Punkt völlig egal, ob eine 100€, 300€ oder 2000€-CPU verwendet wird, die fps bleiben die gleichen, da die Grafikkarte der Flaschenhals ist. Hier ist es entsprechend auch egal ob der RAM mit 2000, 3000 oder 4000 MHz taktet. Damit die CPU bzw. der RAM hier einen entscheidenden Unterschied macht müssen die Einstellungen schon (meist mit Gewalt) so gewählt werden, dass die GPU eben nicht mehr limitiert… und da beginnt dann wieder die Diskussion warum wir CPUs und RAM in 720p testen da den Zusammenhang wahrscheinlich auch in 10 Jahren noch nicht jeder verstanden hat. Und selbst hier ist der reine Einfluss des RAMs normalerweise nicht besonders hoch – sprich ein einstelliger Prozentbereich. Nur vereinzelt hat man Situationen wo das Spielgefühl tatsächlich profitiert da schneller RAM vor allem die minimum FPS positiv beeinflusst entgegen der durchschnittlichen oder maximalen fps. Alles in allem geht der Nutzen für Spieler also ziemlich gegen Null.


Beachten wir den typischen „am-PC-Arbeiter“. Hier ist es so, dass 99+% aller Aufgaben die vom Normalverbraucher so erledigt werden heutzutage nicht mehr durch die Geschwindigkeit des Rechners sondern von der Geschwindigkeit des Arbeiters davor begrenzt sind. Die üblichen Aufgaben die hier erledigt werden, von surfen über Musik, Videos zu eMails, Textverarbeitung, Präsentationen, Tabellenkalkulationen, hier und da mal was drucken und so weiter belasten moderne CPUs und RAMs selbst wenn alles gleichzeitig gemacht werden soll nur wenige Prozent. Hier ist es erst recht egal welcher RAM genutzt wird. Erst wenn sehr spezielle Anwendungen genutzt werden wo noch immer die Rechenleistung den Arbeiter begrenzt kann RAM wichtig werden – aber auch hier ist es selten. Denn auch wenn eine sehr hohe Rechenleistung erforderlich ist ist meist der „Verarbeitung der Daten“-Schritt innerhalb der CPU der limitierende – beispielsweise Videokompression. Hier ist je nach gewählten Codecs/Einstellungen eine sehr hohe Rechenleistung erforderlich, allerdings kann der RAM viel schneller neue Daten (Frames) in den Cache der CPU laden als diese sie je verarbeiten könnte. Daher ist auch hier der Leistungsgewinn durch schnelleren RAM nahezu Null (nahezu deswegen, weil der RAM nötig wird wenn nicht alle zu verarbeitenden Daten gleichzeitig in den Cache passen...). Erst wenn wie oben erwähnt Workload, Anwendung und so weiter genau „passen“ wird der RAM selbst zum Flaschenhals und entsprechend schnellerer RAM zum leistungssteigernden Bauteil im PC.


Einziger Punkt, der in naher Zukunft und bereits jetzt dazu führen wird, dass RAMs tendentiell wieder mehr in den Vordergrund rücken und die Leistung wieder nennenswert beeinflussen: Die Zeiten, in denen eine CPU auf den RAM zugreift sind ja schon lange vorbei – heutzutage haben PCs ja 4, 8, 12 oder noch mehr CPUs verbaut. Werden all diese Kerne ausgelastet steigt natürlich auch entsprechend der Bedarf an heranzuschaufelnden Daten. Dem wurde in den vergangenen Jahren bereits dadurch entgegen gewirkt, dass man mehrere Channels gleichzeitig etabliert hat und so die (theoretische) Bandbreite des Arbeitsspeichers schnell verdoppeln, verdreifachen usw. kann („Dual-Channel“, „Triple-Channel“,…). Bei „handelsüblichen“ Kernzahlen ist der Effekt noch nicht besonders groß, da die Größenordnung 50 GB/s, die ein dual-Channel aus aktuellem DDR4-Speicher so an eine CPU senden kann auch für 8 Kerne nahezu immer völlig ausreichend ist. Bei sehr hohen Kernzahlen siehts dagegen anders aus – nicht umsonst gibt es Server-CPUs mit aktuell bis zu 28 (Intel) oder 32 (AMD) kernen mit Hexa-Channel und Octa-Channel. Kommt hier noch eine Anwendung ins Spiel, die tatsächlich nach viel Bandbreite verlangt wird RAM auf einmal extrem wichtig: Beispielsweise bricht die Renderingleistung eines AMD Epyc mit 32 Kernen massiv ein wenn statt Octa-Channel „nur“ noch Quad-Channel genutzt wird – wenn so viele Kerne Daten anfordern wird’s für den RAM tatsächlich sehr eng. Dennoch ist das für den kleinen Heimanwender aktuell und wohl auch noch in Zukunft kaum ein Thema. Hier ist eines viel entscheidender:


Die pure MENGE an RAM. Man halte sich vor Augen: Wenn RAM nur halb so schnell ist und entsprechend die Bandbreite halbiert ist hat das in aller Regel keinen merklichen Einfluss auf die tägliche Performance des PCs – aus oben genannten Gründen (ich will nicht wissen bei wie vielen PCs da draußen nur single-Channel läuft weil die Module falsch ins Board gesteckt wurden und niemand bemerkt es weils einfach nicht nennenswert langsamer ist…). Ist der RAM jedoch voll bzw. zu klein bemerkt wirklich jeder vor dem PC, wie unglaublich langsam die Mühle sofort wird. Denn Daten auf eine HDD/SSD holen gehen ist verglichen mit Daten aus dem Arbeitsspeicher holen mindestens um Faktor 1.000 langsamer, bei HDDs eher Richtung Faktor 1.000.000. Kurz und klar gesagt: Ob ein PC den man heute baut in 5 Jahren DDR4-3000 oder DDR4-4000er RAMs hat wird kaum jemand je bemerken. Ob er 8 GiB oder 16 GiB oder 32 GiB davon hat dagegen mit ziemlicher Sicherheit.


Was kaufe ich denn jetzt?


Wie sollte man sich also verhalten beim RAM-Kauf? Nachdem nun mit viel Text erläutert wurde wie die Zusammenhänge sind und was sinnvoll ist und was nicht gibt’s am Ende nur ein paar einfache Regeln. Zunächst sollte klar sein: Man muss natürlich keine Leistung verschenken. Es ist Unsinn, DDR4-2133er Riegel zu kaufen wenn 2400er oder 2666er quasi dasselbe kosten. Auf der anderen Seite ist es außer für Benchmarkpunktejäger völliger Unsinn, 4000er Riegel statt 3000er Riegel zu kaufen wenn letztere nur halb so teuer sind. Zum Zeitpunkt als diese Zeilen entstehen ist der „Sweetspot“ ungefähr im Bereich 2666-3200 MHz wo man sagen kann ein geringer Aufpreis gegenüber „langsamem“ RAM ist ok, darüber wird’s unverhältnismäßig teuer für das bisschen mehr Praxisleistung und ggf. Kompatibilitätsproblemen (dazu unten mehr). Viel wichtiger sollte es sein, möglichst viel RAM einzubauen – natürlich im sinnvollen Rahmen. 16 GiB 3000er RAM ist vor allem auf längere Zeiträume gesehen deutlich besser, als zum gleichen Preis 8 GiB 4266er zu erwerben. Natürlich muss man nicht gleich 64 GiB oder noch mehr einstecken, das kann sich je nachdem was man so treibt aber durchaus lohnen. Weiterhin sollte man seine Kaufentscheidung abhängig davon machen, in welches System der Ram eingesteckt werden soll – auch hier gibt’s wieder einige Dinge zu beachten.

Zunächst ist klar: Die Anzahl an Riegel richtet sich nach der Architektur der Plattform wie viele Channels man belegen kann und nicht zuletzt wie viele RAM-Slots überhaupt da sind. Eine Plattform die Quad-Channel unterstützt wird man natürlich sinnigerweise mit 4x4 GiB bestücken und nicht mit 2x8 GiB. Den Vorteil den mehr Channels bieten kann durch Taktrate nicht wettgemacht werden – man bedenke: lahmer DDR4-2133er RAM ist in einem Quad-Interface genauso schnell wie sauteurer überzüchteter DDR4-4266 im Dual-Channel!


Danach sollte ein Blick auf die offiziell unterstützten Taktraten des Speichercontrollers geworfen werden – die findet man entgegen mancher Unkenrufe ausdrücklich NICHT auf der Mainboardverpackung sondern bei den technischen Daten der CPU – denn hier ist der Controller nunmal drin. Hier treten dann die ersten Überraschungen auf – denn die Zahlen sind sehr viel kleiner als die schönen großen Werte auf den Boardpackungen. Der Grund ist einfach – Mainboardhersteller können alles auf ihre Boards schreiben da das Board übertrieben gesagt gar keinen Einfluss darauf hat wie schnell der RAM laufen kann. Natürlich gibt’s qualitative Unterschiede in den Leitungen des PCBs, den möglichen BIOS-Settings usw. aber in allererster Linie entscheidet der Speichercontroller darüber was geht und was nicht. Und da tauchen auf einmal Werte auf wie „maximal DDR4-2400“ und die Leute schauen komisch. Ja, es ist wirklich so, dass offizielle Maximalgeschwindigkeiten aktuell im Bereich von 2400-2666 MHz liegen, alles darüber ist inoffiziell bzw. OC. Und diese offiziellen Angaben beziehen sich auch nicht selten auf EINEN verwendeten singleranked Riegel. Werden dualranked-Module verwendet und davon noch mehrere sinkt der garantierte RAMtakt schnell ab auf teilweise bis runter zu DDR4-1866! Wir empfehlen also nicht nur deswegen keine sehr schnellen Riegel zu kaufen weil sie teuer sind und es praktisch kaum Mehrleistung bringt sondern auch deswegen weil solche Riegel in vielen Fällen nicht oder nur instabil laufen da derartige Taktraten schlichtweg nicht vorgesehen sind und stabiles OC hier genauso begrenzt ist wie in allen anderen Bereichen.



Spezialfall Ryzen

Da nun zugrundeliegende Architekturen zur Sprache gekommen sind muss ein tieferes Detail noch Erwähnung finden, das so manche Aussage der vorangegangenen Absätze recht stark relativieren wird und auf das mancher wissendere Leser sicherlich schon lange gewartet hat. „Aber Ryzen wird sehr viel schneller mit schnellerem RAM!!!11eins“.
Stimmt.


Das hat aber mit all den beschriebenen Zusammenhängen da oben zunächst nichts zu tun. Es ist korrekt, dass Ryzen-CPUs sehr gut mit steigendem RAM-Takt skalieren, besonders bei multithread-Anwendungen. Das liegt aber NICHT daran, dass der RAM schneller ist oder die Bandbreite steigt, es liegt an einer architektonischen Eigenheit der ZEN-Architektur von AMD.

Mehrere CPU-Kerne in einem Die müssen miteinander kommunizieren können. Dies wurde über die Jahre auf verschiedene Möglichkeiten gelöst. Anfangs übder den manchen vielleicht noch bekannten „FSB“, den Front Side Bus. Das war streng genommen nicht mal eine direkte Kommunikation zwischen CPU Kernen sondern ein Überbleibsel aus der Singlecore-Ära. CPU0 musste um ein Datenpaket mit CPU1 zu tauschen dieses übertrieben gesprochen über den Chipsatz/Bus schicken was natürlich extrem lahm war. Dieser Flaschenhals wurde mit den ersten Core i CPUs beseitigt und der FBS ersetzt. Den Takt übernimmt ein reiner Taktgeber (BLCK), die Kommunikation erfolgt seitdem über diverse Direktverbindungen zwischen den CPU-Kernen, QPI-Links, Ringbus, Mesh, InfinityFabric usw, mit all ihren jeweiligen Vor und Nachteilen. Ryzen nutzt hier den genannten InfinityFabric. Dieser hat nun gegenüber seiner Konkurrenz ein paar Eigenheiten – denn er muss nicht nur zwischen CPU-Kernen kommunizieren können sondern auch von einem Die zum anderen (wie in Threadripper oder Epyc-CPUs). Daher ist diese Kommunikationstechnik nicht nur CPU-intern sondern hat auch „externe“ Schnittstellen. Dies führt ohne zu sehr abzuschweifen auch dazu, dass er mit dem RAM-Takt synchron laufen muss um unfallfrei zu funktionieren – und genau hier liegt der Grund für die Leistungssteigerung von Ryzen mit schnellem RAM: Wird ein schneller RAM verwendet ist die CPU gezwungen, den InfinityFabric mit hochzutakten da das System sonst schlicht nicht funktioniert. Eine Nutzung von schnellen RAM-Riegeln übertaktet sozusagen den Uncore-Bereich der CPU automatisch mit und beschleunigt die Kommunikation von Ryzen-CPU-Kernen untereinander ebenfalls. Das resultiert sofort in Mehrleistung durch diese Übertaktung ohne dass die RAM-Bandbreite damit direkt etwas zu tun hätte. Hier ist auch der Grund dafür zu suchen, warum Ryzen CPUs nicht derart hohe RAMfrequenzen erlauben wie Intel-CPUs die diesen Zusammenhang nicht haben. 4000er RAMs werden auf einer Ryzen-CPU nicht laufen weil die CPU ihren InfinityFabric schlicht nicht stabil so hochfrequent betreiben kann.



Ranks und Dies

Tja, was fehlt noch… achja, da wurde ja single- und dualranked erwähnt. Was ist das nun wieder? Das „ranking“ bezeichnet die Art und Weise, wie die einzelnen DRAM-Chips auf einem Riegel gruppiert sind. Werden sehr viele Chips (meist beidseitig) auf einem Modul angebracht müssen diese zu zwei Gruppen, sogenannte ranks, organisiert werden. Auch hier gibt’s Vor- und Nachteile beider Systeme. Singleranked-Module erreichen in der Regel etwas höhere Taktraten da sie weniger Chips besitzen, der Verwaltungsaufwand einfacher für den Speichercontroller ist, das Hintergrundrauschen des Signals geringer ist und nicht zuletzt weil die Chance kleiner ist einen „schlechten“ Chip drunter zu haben. Dualranked-Module können je nach Plattform dagegen an sich schon einen Performancevorteil haben, da die ranks parallel angesprochen werden können. Auch hier gibt’s wieder Situationen und Workloads in denen mal das eine, mal das andere besser ist – das sollte man sich für den Fall dass der wie üblich sehr kleine Unterscheid relevant ist dann für den konkreten Fall selbst zusammensuchen.


Hiermit etwas zu tun hat auch die Bezeichnung mancher Herstellungschargen der DRAM-Hersteller. Diese beschriften ihre Chips wie alle Produzenten von Massenware mit Chargennummern die Rückschlüsse darüber zulassen, wann und wo die Fertigung stattfand oder welche Eigenschaften zu erwarten sind. Die Bezeichnungen sind dabei natürlich frei vom Hersteller wählbar. Aus den Chargennummern wird wenn bestimmte erstrebenswerte Eigenschaften hervortreten in der Nerdgemeinde nun schnell ein Kunstwort oder eine Abkürzung generiert anhand dessen sich der geneigte Nerd verständigen kann – berühmtestes Beispiel dürfte der Samsung-B-Die sein. Der Ausdruck stammt daher, dass bei Samsung gefertigte DDR4-DRAM-Chips in ihrer Chargennummer mit einem B oder einem E enden wobei die (größeren) B-Dies von Samsung dafür bekannt sind, gut übertaktbar zu sein und bei einem 8 GiB-Riegel garantiert ist, dass es sich um einen single-ranked Riegel handeln muss was besonders für Ryzen-Nutzer dank besserer Kompatibilität interessant ist. Das ists schon – simple as that.


Hitze und Bling-Bling

Am Ende bleibt noch ein letzter Punkt der häufiger mal diskutiert wird. Kühler, Beleuchtung und sonstiges Beiwerk von RAMs das mittlerweile sogar bis hin zu RAM-Dummys ausgeartet ist. Fangen wir mit dem an was schnell abgehandelt ist da es sich um reine Designfragen handelt: Beleuchtung. Ob ein RAM-Riegel nun leuchtet oder nicht, in welchen Farben er das tut oder ob es sogar auslastungsabhängig ist wie die Lichtorgel läuft ist zumindest technisch gesehen völlig irrelevant. Was dagegen so manchen etwas überraschen dürfte ist die Tatsache, dass auch der verwendete Kühlkörper in seiner Form, Größe und überhaupt die Anwesenheit eines solchen fast immer ebenfalls völlig irrelevant ist. Es gibt von den ganz wenigen extrem überzüchteten Riegeln (Richtung DDR4-5000 mit horrenden Spannungen) technisch absolut keinen Grund, warum DDR4-Chips gekühlt werden müssten. Die Abwärme solcher Chips ist unter nicht-extremen Betriebsbedingungen sehr sehr klein und die Temperaturbeständigkeit der Chips ist ähnlich hoch wie die vergleichbarer Halbleiterelemente wie CPUs und GPUs.


Unter üblichen Bedingungen werden DDR4-Chips selbst unter Last und „nackt“ kaum mehr als handwarm. Werden die Bedingungen schlechter (schlechte Gehäusebelüftung, Riegel stecken nah beieinander, lange Vollast usw.) könnens auch mal ein paar Grad mehr werden aber selbst dann sind Temperaturen jenseits der 60°C sehr sehr selten – und das ist noch weit vom technisch möglichen Limit entfernt. Es ist in manchen Fällen sogar so, dass das Designelement Kühlkörper (mehr als Design ist es ja nicht) sogar eher isoliert als kühlt wenn sie Kühler schlecht angebracht sind. Nicht selten kommt es vor, dass RAM-Riegel nach manuellem entfernen des Kühlers tatsächlich kühler sind als vorher!



Dennoch auch zu den Temperaturen von RAMs generell noch ein paar Worte – wenn schon rekordlanger Blog dann richtig!

Im Wesentlichen beeinflusst die Temperatur des RAMs die Geschwindigkeit und Art der Selbstauffrischungsrate. RAMs haben wie wahrscheinlich bekannt die Eigenschaft, dass sie flüchtig sind - bedeutet ist der Strom weg sind auch die Daten weg. Das stimmt in kurzen Zeitabschnitten nur bedingt, denn SD-RAM kann durchaus ohne Strom seine Daten halten… nur eben nur ein paar hundert Millisekunden lang. Damit die Daten im Betrieb sicher nicht verloren gehen müssen diese ständig alle paar Millisekunden aufgefrischt werden – das macht das Board automatisch, ohne dass der Nutzer etwas davon merkt. Nun ist es so, dass die Flüchtigkeit von SD-RAM schneller wird je heißer die Chips werden. Das hat einerseits zur Folge, dass man schon Passwörter aus dem RAM abgeschalteter PCs ausgelesen hat indem der RAM mit flüssigem Stickstoff schockgefrostet wurde und dadurch seine Daten über Minuten und Stunden halten kann, andererseits dass sehr heiße Chips ihre Daten bei normalem auffrischen verlieren würden und das Auffrischinterwall sowie seine Stärke angepasst werden muss – auch das geschieht automatisch. Warum ich das erzähle: Es geht darum die Dimensionen klarzumachen, was ein normaler Temperaturbereich zum Betrieb von DDR4-RAM ist. Denn das normale Auffrischungsintervall wird genutzt bei Temperaturen zwischen 0 und 85°C. Dieser Temperaturbereich ist für DDR4-Ram sozusagen „kalt“. Erst über 85°C wird die Auffrischungsfrequenz verdoppelt und die Ströme etwas angepasst – zwischen 85 und 95-120°C (Abhängig von Modell und Hersteller) ist für den RAM dann „heiߓ (offiziell heißt das „extended temperature mode“). Das bedeutet für uns Konsumenten: Wenn wir es schaffen unsere RAM-Chips unter 85°C zu halten im Betrieb sind wir technisch gesehen im absolut grünen Bereich. Und ehrlich, es ist gar nicht so leicht, einen modernen RAM-Riegel ohne absichtliche Gewalt in derartig hohe Temperaturregionen zu bringen, selbst ohne Kühler.




So, schätze dieses Mal muss der Glückwunsch an die Leser die bis hierhin durchgehalten haben aufgrund der besonderen Länge des Blogs besonders groß ausfallen. Sollte trotz der wall-of-text noch was unklar sein… ihr wisst ja wo man mich findet. :D
 
Danke, das werde ich vielleicht mal meinem Dozenten in Technischer Informatik schicken. Er hat vor einigen Monaten ernsthaft behauptet, dass DRAM mit hoher Taktrate einfach höhere Latenzen hat und damit gar nicht schneller ist. Damals konnte ich keinen Beweis liefern, außer "Ich habe es mit verschiedensten Einstellungen getestet und es gibt einen messbaren Unterschied". Endlich mal etwas Aufklärung, das hatte es auch bitter nötig.
 
Dem Dozenten kannste den Wikiartikel zu SDRAM schicken, wenn ich mich recht erinnere gibts da nen extra Abschnitt darüber weil der Käse immer wieder gepredigt wird. Leider wird (nicht nur beim Thema RAM sondern praktisch überall) von den Leuten immer nur an der Oberfläche gekratzt und dann voreilige Schlüsse gezogen. Dass das Thema minimal komplexer sein könnte als "Takt hoch + Latenz hoch = selbe Performance" kommt denen gar nicht in den Sinn. Solche Leute sind in dem Thema eben so inkompetent dass sie genau deswegen selbst nicht bemerken wie inkompetent sie sind und selbst daran glauben was sie da erzählen (die Wissenschaft nennt das Dunning-Kruger-Effekt). Dem unterliegen wir alle in gewisser Weise, ich hab die Weisheit sicher auch nicht mit Löffeln gefressen und weiß auch sicher nicht alles über Arbeitsspeicher. Aber wie im Text schon erwähnt ist es nur ein kleiner Schritt darauf zu kommen, dass die mögliche Takterhöhung auf Kosten der möglichen Latenzen über so viele Generationen nicht dauerhaft durchgezogen worden wäre wenn es effektiv nichts bringen würde. SO extrem einflussreich ist die Marketingabteilung der großen Zahlen dann doch auch nicht - vor allem nicht bei der JEDEC. :D
 
Ja, die Wiki-Artikel zu SDRAM und Speichermodul und alles was in dem Zusammenhang steht, habe ich mir auch zu genüge angetan. Immerhin hat es mir geholfen zu verstehen, was ich da eigentlich gerade mache, wenn ich Latenzen einstelle.

Deine Meinung hierzu würde mich noch interessieren: Speichermodul – Wikipedia

Die Behauptung, Chipsätze könnten in der Regel nicht mehr als 8 Ranks verwalten ist denke ich schon mal widerlegt, weil der IMC schon seit Jahren in der CPU sitzt. Trotzdem würde es passen mit den 8 Ranks. Denn Mainstream-Boards (also Dual-Channel) besitzen ja maximal 4 Steckplätze, die man in Dual-Rank-Vollbestückung mit 4x2=8 Ranks belegt hat. Mit Single-Rank-Modulen käme man auf maximal 4 Ranks, was eine geringere Belastung für den IMC bedeutet und höhere Speichertakte erlaubt. In der Theorie müssten dann also 4 Single-Ranks die gleiche Leistung bringen können wie 2 Dual-Ranks, sofern Latenzen und Takt gleich sind, weil die Belastung für den IMC ja gleich ist und dieser im Zweifelsfall bei der gleichen Taktrate dicht macht. Kommt das so hin oder denke ich irgendwo wieder nicht mit? In beiden Speicherkanälen müssten dann ja jeweils zwei Ranks sein, die jeweils auch parallel angesprochen werden können.
 
"In der Theorie müssten dann also 4 Single-Ranks die gleiche Leistung bringen können wie 2 Dual-Ranks, sofern Latenzen und Takt gleich sind, weil die Belastung für den IMC ja gleich ist und dieser im Zweifelsfall bei der gleichen Taktrate dicht macht. Kommt das so hin oder denke ich irgendwo wieder nicht mit?"

Annähernd kommt das schon hin. Es ist im Detail (wie immer) komplizierter, da die Ranks je nach Aufteilung auch voneinander abhängig sind.
2 Ranks auf 2 Riegeln kann der Controller perfekt parallel ansprechen, 2 Ranks auf einem dualranked-Riegel nicht da die sich so manche Latenz und nunmal auch die Maximalbandbreite pro Slot teilen müssen. 4 SR-Riegel dürften im Grenzfall also etwas schneller sein als 2 DR-Riegel.
 
So mancher Artikel (eigentlich die meisten), den man hier kaufen soll, wäre mir den Euro nicht wert. Für diesen Blog hätte ich auch 5 Euros ausgegeben. Genügend in die Tiefe, ohne prahlerisch zu werden (''Schau mal, was ich alles weiß und du nicht!''), lang genug, um das Wichtigste zu sagen, das man zum Verstehen braucht, ohne in epische Breite zu gehen.

Kurz und knapp: Ich bleibe vorerst bei meinen 2x8 2666er-Vipern und steige irgendwann um auf 4x16 3000er-G.Skills ^^
 
Ich kann dir gern meine Kontonummer geben :ugly:
Nein Spaß beiseite, vielen Dank fürs Lob! Ich bin ja froh wenn sich der eine oder andere den ganzen Text tatsächlich antut. ;)
 
Wäre eigentlich angebracht, wenn das PCGH-Team diesen Artikel hier auf der Startseite verlinken würde. Dieser Blog ist viel informativer und lesenswerter als jeder PCGH+- oder Leserartikel.
 
Zurück