artykuły

DDR4 czy DDR3L do Core i5-6600K lub Core i7-6700K (Intel Skylake)? Test

79
1 listopada 2015, 16:37 Mateusz Skrycki

Taktowanie pamięci a opóźnienia

Choć to coraz mniej popularny mit, mamy wrażenie, że już zawsze będzie powracać niczym kolejna część Call of Duty na jesień. Przez wiarę w niemalże boską moc opóźnień dostępu do pamięci (CL) dla wielu osób moduły DDR4-2400 CL15 nigdy nie będą tak atrakcyjne jak DDR1-400 CL3 ze względu na duże opóźnienia. To kompletne niezrozumienie tematu.

Tę kwestię poruszaliśmy już wielokrotnie, chociażby w artykule dotyczącym DDR4, ale warto ją przypomnieć. Najbardziej zaawansowanych Czytelników, którym niestraszny jest gąszcz pojęć, skrótów i szczegółów technicznych, odsyłamy do kompendium wiedzy o DDR4.

Opóźnienia w dostępie do pamięci są wyrażane w liczbie cykli zegara. CL2 oznacza, że kontroler RAM musi czekać dwa cykle zegara na otrzymanie bajta danych z otwartej strony pamięci. Popularne i tanie moduły DDR3 mają dziś prędkość DDR3-1600 i opóźnienia CL10 10-10-27. Liczba 1600 to liczba milionów transferów na sekundę na magistrali DDR, co oznacza taktowanie z częstotliwością 800 MHz. Czas trwania jednego cyklu to 1/800 000 000 s, czyli CL10 oznacza opóźnienie 12,5-nanosekundowe.

Tymczasem w DDR4 o prędkości DDR4-2400 i opóźnieniu CL = 15 jeden cykl zegara trwa 1/1 200 000 000 s, a więc CL15 oznacza opóźnienie 12,5 ns.

Kontroler pamięci czeka na dane tak samo długo, choć względne opóźnienie wyrażone w liczbie cykli zegara wydaje się dłuższe. Ukochana przez osobników żyjących w zeszłym stuleciu pamięć DDR1-400 CL3 ma opóźnienie CL = 15 ns, a przepustowość – sześć razy mniejszą od DDR4-2400.

Mnożniki RAM

Kwestia mnożników pamięci może się wydawać na pierwszy rzut oka skomplikowana, choć jak to mówią, wszystko jest trudne, nim stanie się proste i gdy raz się to zrozumie, zostanie to w pamięci na zawsze. Ideę mnożników opisywaliśmy wraz z platformą Haswell-E. Skylake częściowo jest pod tym względem zbliżona. Przede wszystkim rozdzielono zegar bazowy (BLCK) oraz zegar taktujący łącza PCI Express i DMI, zniknął mnożnik BCLK i doszły połówkowe mnożniki RAM. Szczegółowo to zagadnienie przedstawiliśmy w artykule dotyczącym architektury Skylake. Ale po kolei.

Zacznijmy od tego, jakie rodzaje pamięci są oficjalnie obsługiwane przez wykorzystany do testów procesor, Core i7-6700K. To DDR4-1866, DDR4-2133, DDR3L-1333 oraz DDR3L-1600. Wszystkie szybsze opcje są traktowane jako podkręcanie i choć producenci je udostępniają i ułatwiają korzystanie z nich, to nie gwarantują ich poprawnego działania.

DDR-2133 jest tylko nazwą i nie oznacza, że pamięć jest taktowana z częstotliwością 2133 MHz. Powie nam o tym chociażby rozwinięcie angielskiego skrótu DDR: Double Data Rate. Tak więc rzeczywiste taktowanie pamięci DDR-2133 wynosi 1066 MHz.

Ta wiedza pozwala przejść do punktu mówiącego o tym, jak taktowanie jest liczone. Spójrzmy najpierw na równanie:

100,00 MHz (BCLK) × 4/3 (mnożnik odniesienia RAM) × 8 (mnożnik RAM) =

= 1066 MHz = DDR-2133


Zrozumienie go wymaga zagłębienia się w kolejne szczegóły techniczne.

  1. Wszystkie sygnały taktujące są otrzymywane z jednego zegara źródłowego (BCLK), domyślnie 100-megahercowego (pierwszy element równania).
  2. Nowością w platformie Skylake jest sposób regulowania taktowania BCLK. Odbywa się to bez wykorzystania mnożników i można zmieniać taktowanie z dokładnością 0,125 MHz.
  3. Z BCLK otrzymuje się taktowanie RAM-u, rdzeni x86 w procesorze oraz pamięci podręcznej L3 i magistrali pierścieniowej.
  4. Taktowanie RAM-u jest otrzymywane z BCLK i dwóch mnożników: pierwszy wynosi 1 lub 4/3, drugi zaś – od 6 do 40 i rosną one co 0,5 – jest to nowość wprowadzona w platformie Skylake (drugi i trzeci element równania).
  5. Pierwszy z tych mnożników można potraktować jako wybór, czy taktowanie pamięci ma być wielokrotnością 100 MHz czy 133 MHz.

Tak więc w celu uzyskania określonego taktowania pamięci można m.in. manipulować dwoma mnożnikami: mnożnikiem odniesienia RAM i mnożnikiem RAM (drugi i trzeci element równania). Dlatego pamięć DDR-2400 można uzyskać na dwa sposoby:

...pierwszy, który w UEFI może być opisany jako 100:100...

100,00 MHz (BCLK) × 1 (mnożnik odniesienia RAM) × 12 (mnożnik RAM) =

= 1200 MHz = DDR-2400

...oraz drugi, który często jest oznaczony jako 100:133...

100,00 MHz (BCLK) × 4/3 (mnożnik odniesienia RAM) × 9 (mnożnik RAM) =

= 1200 MHz = DDR-2400

Co to zmienia w praktyce? Doświadczony Czytelnik na pewno pamięta, że do tej pory w każdej platformie z niecałkowitymi mnożnikami typu 4/3 występowały różne niepożądane efekty wpływające na wydajność. W przesyłaniu danych między dwoma strefami układu pracującymi z różnymi prędkościami trzeba wykorzystać jakieś kolejki lub bufory; ich zachowanie często jest opisane ukrytymi parametrami, na które użytkownik nie ma wpływu. W platformie Skylake tego problemu nie zaobserwowaliśmy. Czasami wręcz... mnożniki pamięci będące wielokrotnością 133 MHz (z mnożnikiem odniesienia RAM 4/3) zapewniały minimalnie lepszą wydajność niż te będące wielokrotnością 100 MHz.

2