De latency paradox
Zoals altijd bij geheugen hebben twee factoren invloed op de snelheid. Enerzijds de genoemde doorvoersnelheid (hoe snel is de informatie aangeleverd), anderzijds de latency oftewel wachttijd: hoe lang duurt het voordat de informatie is gevonden in het geheugen.
De belangrijkste latency bij werkgeheugen is de CAS (Column Address Strobe) latency. Deze specificatie wordt vaak verkeerd geïnterpreteerd. Simpel gezegd gaat het bij latency om de periode tussen de aanvraag van een opdracht en de verwerking ervan. In dit specifieke geval gaat het dus om hoeveel tijd er zit tussen het moment dat de geheugencontroller een stuk van het geheugen wil uitlezen, tot het moment dat de controller daadwerkelijk kan beginnen met deze data uit te lezen. Nadat de geheugencontroller het ramgeheugen heeft verteld dat een specifieke locatie in het geheugen moet worden uitgelezen, moet de betreffende data in een aantal klokcycli bij het gewenste onderdeel van de processor terechtkomen.
Hiermee hebben we twee variabelen die bepalen wat de latency van een geheugenmodule is. Ten eerste is er het aantal klokcycli voordat opgevraagde data op de juiste plek is (CAS Latency, ook wel afgekort tot CL). Ten tweede is er de duur van elke klokcyclus van het geheugen (gemeten in nanoseconden). Deze duur is afhankelijk van de snelheid van het werkgeheugen: hoe hoger de klokfrequentie, hoe minder tijd er tussen elke klokcyclus zit.
Bij werkgeheugen met een hogere kloksnelheid zien we vaak ook een hogere CAS latency. In de ideale situatie heb je ram met een hoge kloksnelheid en een lage CAS latency, maar vanwege de werking van sdram zijn deze twee variabelen redelijk omgekeerd evenredig aan elkaar verbonden: hoe hoger de kloksnelheid, hoe hoger de latency.
Generatie | Klokfrequentie (MHz) | Snelheid (MT/s) | Naamgeving | Klokcyclus (in ns) | CAS Latency (CL)* | True Latency (in ns) |
---|---|---|---|---|---|---|
DDR | 166,5 MHz | 333 MT/s | DDR-333 / PC-1600 | 6 ns | 2.5 | 15 ns |
DDR | 200 MHz | 400 MT/s | DDR-400 / PC-3200 | 5 ns | 3 | 15 ns |
DDR2 | 333,5 MHz | 667 MT/s | DDR2-667 / PC2-5333 | 3 ns | 5 | 15 ns |
DDR2 | 400 MHz | 800 MT/s | DDR2-800 / PC2-6400 | 2,5 ns | 6 | 15 ns |
DDR3 | 666,5 MHz | 1333 MT/s | DDR3-1333 / PC3-10600 | 1,5 ns | 9 | 13,5 ns |
DDR3 | 800 MHz | 1600 MT/s | DDR3-1600 / PC3-12800 | 1,25 ns | 11 | 13,75 ns |
DDR4 | 933 MHz | 1866 MT/s | DDR4-1866 / PC4-14900 | 1,07 ns | 13 | 13,93 ns |
DDR4 | 1066,5 MHz | 2133 MT/s | DDR4-2133 / PC4-17000 | 0,94 ns | 15 | 14,06 ns |
DDR4 | 1200 MHz | 2400 MT/s | DDR4-2400 / PC4-19200 | 0,83 ns | 17 | 14,17 ns |
DDR4 | 1333 MHz | 2666 MT/s | DDR4-2666 / PC4-21333 | 0,75 ns | 18 | 13,50 ns |
DDR4 | 1600 MHz | 3200 MT/s | DDR4-3200 / PC4-25600 | 0,625 ns | 22 | 13,75 ns |
*In de tabel zijn JEDEC-gecertificeerde CAS Latency's puur ter illustratie in relatie tot de True Latency gekozen. Dit zijn geen vaste waarden en op veel high-end modules zijn lagere latency's gebruikelijk.
True Latency
Wanneer je zowel de kloksnelheid als de CAS latency weet, kan je de zogenaamde ‘True Latency’ uitrekenen. Dit doe je door de CL te delen door de werkelijke snelheid, maal duizend. De formule is dus: CAS Latency / werkelijke snelheid * 1000 = True Latency in ns. Als voorbeeld nemen we twee ddr4-geheugenmodules; een is ddr4 2400CL16, de ander is ddr4 3200CL22. De True Latency van de eerste module is 16/1200*1000 = 13,33 ns. Bij de tweede module is dat 22/1600*1000 = 13,75 ns.
De latency’s van beide modules zitten erg dicht bij elkaar, maar de wat betreft kloksnelheid langzamere module heeft een lagere latency. Welke van de twee is sneller? Wat betreft doorvoersnelheid wint de module van 3200 MT/s het met gemak, terwijl als je puur naar latency kijkt de module van 2400 MT/s de snelste is. Het hangt van je toepassing af welke eigenschap de meeste voordelen biedt. Voor gaming zijn de latencies relatief belangrijk, maar ook hier verschilt per spel welke eigenschap belangrijker is: doorvoersnelheid of latency.
Met gelijke snelheden verdient de lagere CAS latency altijd de voorkeur. Het is ten slotte belangrijk om in het achterhoofd te houden dat de latency van werkgeheugen niet de latency is die je terugziet in geheugentests zoals bijvoorbeeld Aida64. Dat komt omdat de geheugencontroller van de processor ook een rol speelt in de totale latency, en het dus een optelsom van onderdelen is die hier aan bijdragen.
Aida64 Cache & Memory Benchmark.