Minnesrecensioner är, enligt min mening, faktiskt ganska svåra att göra. Det finns gott om minnessatser tillgängliga som är trevliga och billiga, och det enkla sättet att skilja mellan dem i en recension är vanligtvis syntetiska – utan alltför mycket ansträngning kan vi hitta minnesjämförelseartiklar online som enbart handlar om syntetiska material. Nackdelen med syntetmaterial är att de sällan efterliknar verkliga prestanda. När förfrågningarna kom in för en jämförelse av minnespaket som finns tillgängliga på marknaden, blev jag förvånad över att hitta verkliga exempel där minne verkligen är viktigt med betydande marginaler och riktmärken att matcha. Spola framåt en månad eller så, och vi har sammanställt en serie tester som utnyttjar några av de mest minnesbegränsade exemplen som är vanliga för de flesta användare – IGP-prestanda med minne från DDR3-1333 till DDR3-2400. Inuti den här recensionen har vi också blandat in lite kodning, komprimering, och du kanske blir förvånad över att höra att USB 3.0-prestanda också påverkas av minneshastigheten. I den här artikeln tittar vi också på och granskar minnespaketen som G.Skill graciöst har tillhandahållit från deras varumärken Ares, Sniper, RipjawsX, RipjawsZ och TridentX.
Minne i ett nötskal
Grafisk prestanda handlar om vektorberäkningar – att flytta data från minnet till beräkningsenheterna för beräkning och sedan placera ut dem igen vid behov. High end grafikkort gör detta ganska bra, med high end NVIDIA GTX680 grafikkort som uppnår en nominell bandbredd på ~192 GB/s. I jämförelse har integrerad grafik en tuff tid. Deras huvudsakliga minneslagring är systemminnet, som kan variera från 10 GB/s till 50 GB/s beroende på plattform. Det finns arkitektoniska beslut som fattas under båda omständigheterna (diskret och IGP) för att minska betydelsen av minnesbandbredd, och programvara kan skrivas för att dölja minnesbandbredden eller minneslatensproblem. Men faktum kvarstår fortfarande att minnesbandbredd är nyckeln och avgörande för ett stort antal verkliga tillämpningar och användningsscenarier.
Minnets framtid är minst sagt lite mystisk. Nuvarande moderna system kör DDR3 SDRAM som kan variera i hastighet från 800 MHz till 3000 MHz, vilket också varierar i pris, prestanda, strömförbrukning och om minneskontrollern klarar en sådan hastighet. Dessa 3000 MHz-moduler kostar en ganska stor slant och är känd för att bara fungera med 1 av 10 Ivy Bridge-processorer. Den omedelbara framtiden för minnet ligger fortfarande i DDR3 – nästa iteration, DDR4, är fortfarande flera år bort. Vi får höra att på Intel-sidan är Haswell DDR3, liksom Broadwell, Haswell-ersättaren. Rapporter förväntar sig att DDR4 kommer att vara mindre än 10 % av marknaden i slutet av 2014 (tidig användning i high end-utrymmet), men 50 %+ över 2015. DDR4 förväntas ha en bashastighet på 2 133 MHz upp till 3 200 MHz för den första entusiasten applikationer – även om det med tanke på entusiasternas ökade hastigheter skulle kunna skjutas upp till 4266 MHz+ under utvecklingscykeln. DDR4 förväntas också vara en enda modul per kanal, vilket banar väg för en upp-till-quad-kanal i mainstream-arenan.
Det finns också spännande teknologier som utvecklas i minnesutrymmet, för både NAND och DRAM – memristorer, ReRAM, stacked memory, spintronics et al. Om historien är något att gå efter, så länge dessa teknologier inte hindras av patent, troll eller fysik, kan var och en leda till att intressanta produkter kommer ut på marknaden. Även om vi kan behöva vänta flera år, och chansen är stor att bara en eller två kommer att komma igenom för sina respektive marknader, och resten kommer att gå vägen för Betamax och HD-DVD.
Tillbaka till vårt DDR3-minne, G.Skill var vänlig nog att ge oss flera kit för denna översikt över minnesprestanda. De flesta DDR3-kit som säljs för de allra flesta användare kommer i hastigheter från 1333 MHz till 2133 MHz. Allt över DDR3-2133 är definitivt i entusiastsortimentet, och som sådan skickade G.Skill oss också ett DDR3-2400-kit för att testa för denna översikt. I sinom tid har vi också ett DDR3-2666-kit att testa, så håll utkik efter den recensionen.
Inte allt om MHz
Men minne handlar inte bara om MHz, precis som datorhastighet inte bara handlar om MHz och kärnor. Att bestämma när minnet ska nås, vilka fördröjningar som ska sättas på plats mellan läs- och skrivcykler är subtimingerna. Dessa undertider är utan tvekan viktigare än MHz-talet, som vi kommer att se i recensionen. De viktigaste tidpunkterna som visas för allmänheten är följande:
CAS-latens (CL)
RAS till CAS (tRCD)
RAS Precharge (tRP)
Rad aktiv tid (tRAS)
Radcykeltid (tRC)
Kommandohastighet (CR)
För en mycket omfattande inblick i minnet, gick vår senaste stora minnesartikel in på obscent djup av hur minnet fungerar. Vänligen läs den här, så ska jag erkänna att jag inte förstår den efter att bara ha läst den, men jag behöver en penna och papper när jag går igenom den noggrant. En av de viktigaste bilderna av den minnesartikeln är följande:
Här visas ett par “rygg mot rygg” läser. Vårt exempel Row Cycle Time (tRC) låter oss överföra upp till 16 byte data med en minsta sidöppningstid på 24T med hjälp av CL-tRCD-tRP-tRAS timings på 6-6-6-18
Med hjälp av denna bild, från vänster för att skriva, kan vi förklara vad tidpunkterna betyder till en viss grad:
tRAS bestämmer hur lång tid det tar mellan initiering och kravet på att minnesraden ska laddas. Inom denna tRAS behöver vi en tRCD för att initiera kolumnen i raden från vilken vi skulle vilja läsa. Efter tRCD är CL, som ger en läs latens. Det finns också andra funktioner som tillåter läsning över flera kolumner inom tRAS, men för att flytta till nästa rad måste tRAS avslutas och tRP tillåter nästa rad att laddas i förväg.
Allt detta betyder att:
Om tRAS är ett lågt tal går det snabbt att läsa från olika rader. Om det är en hög siffra är det lättare att läsa från olika kolumner.
Om CL är ett lågt tal går det snabbare att läsa inifrån en rad (och kolumnerna).
Om tRCD är låg kan fler CL initieras inuti tRAS.
Om tRP är låg är den totala tiden (tRAS+tRP) för att hoppa mellan radavläsningarna snabbare.
När vi köper ett minneskit får vi oftast ett SKU-nummer och en beskrivning av modulerna till hands. Låt oss titta på det första kitet vi kommer att testa idag:
F3-1333C9Q-16GAO
4×4 GB DDR3-1333 9-9-9-24 1,50V
Den första raden beskriver modulen i form av en SKU, som möjliggör lagerkontroll. I det här fallet gör G.Skills namnschema det enkelt – F3 betyder DDR3; 1333C9 betyder 1333 MHz med CL9; Q betyder quad module kit; 16G betyder att det är ett 16GB kit; A betyder Ares varumärke; och O betyder att vårt kit är orangefärgat.
Den andra raden är lite mer läsbar. Först får vi storleken på satsen (4×4 GB) sedan hastigheten (DDR3-1333). Därefter kommer subtimingerna, som alltid kommer att visas i ordningen CL-tRCD-tRP-tRAS. Det betyder att våra tre huvudsakliga undertider är 9-9-9 och tRAS är 24. Den sista informationen är spänningen i kitet.
Så vad kan jag göra åt undertider?
Som en allmän regel är lägre bättre. Minnessatser på marknaden kommer att variera i sina undertider – du kan köpa DDR3-1333 9-9-9, DDR3-1600 11-11-11 hela vägen upp till DDR3-3000 12-14-14. Frågan blir då om du vill välja mellan två liknande kit. Föreställ dig följande kit:
DDR3-1333 9-9-9
DDR3-1600 10-10-10
DDR3-1866 11-11-11
I många scenarier kan en entusiast ta en titt på dessa siffror och tala om för en användare att dessa kit är likvärdiga – att öka minneshastigheten men att öka latenserna för subtiming orsakar liknande prestanda. Det finns ett sätt att avgöra om ett kit kan vara bättre än ett annat, och det är att titta på den kalkylerbara latensen för kitet.
Att beräkna detta värde är en tillräckligt enkel formel:
2000 x (CL / Hastighet ) = Latens i nanosekunder (ns)
Så för de tre kiten ovan:
DDR3-1333 9-9-9 har en latens på 13,5 ns
DDR3-1600 10-10-10 har en latens på 12,5 ns
DDR3-1866 11-11-11 har en latens på 11,79 ns
Denna latens berättar i huvudsak vilket kit som är snabbast vid icke-sekventiell läsning. Icke-sekventiell läsning är viktig i många olika scenarier, såsom videospel där användaren kan utföra en av en miljard olika åtgärder och som sådan måste olika delar av minnet laddas.
Nackdelen med detta test är att det inte tar hänsyn till på varandra följande läsningar. När vi har att göra med konvertering, videoredigering eller något som kräver att en stor datamängd ska läsas sekventiellt, måste vi titta på hur länge läsningar bearbetas.
Sättet att kontrollera detta med DDR3 är som följer:
Cykeltid i ns = 1000 / (minneshastighet / 2)
Bittid i ns = 1000 / Minneshastighet
Tiden för att läsa ett enda ord med data (ord är en teknisk term som betyder 64 bitar) ges av cykeltiden multiplicerad med CL. Tiden för att läsa åtta ord är cykeltiden multiplicerad med CL och lägg sedan till sju stycken bittid. Låt oss gå igenom minnespaketen ovan med denna metod.
DDR3-1333 9-9-9 har en cykeltid på 1,5 ns och en bittid på 0,75 ns
Tiden för att läsa ett ord är 1,5*9 = 13,5 ns
Tiden för att läsa åtta ord är 13,5 + 7 * 0,75 = 18,75 ns
DDR3-1600 10-10-10 har en cykeltid på 1,25 ns och en bittid på 0,625 ns
Tiden för att läsa ett ord är 1,25 * 10 = 12,5 ns
Tiden för att läsa åtta ord är 12,5 + 7 * 0,625 = 16,875 ns
DDR3-1866 11-11-11 har en cykeltid på 1,07 ns och en bittid på 0,536 ns
Tiden för att läsa ett ord är 1,08 * 11 = 11,79 ns
Tiden för att läsa åtta ord är 11,79 + 7 * 0,536 = 15,54 ns
I både sorteringsläsningen och långläsningen vinner DDR3-1866 11-11-11 av de tre kiten. Men tänk om det inte var så tydligt?
Följande kit har följande tider och resultat:
DDR3-2000 vid 9-9-9 läser ett ord på 9 ns och åtta ord på 12,5 ns
DDR3-1666 vid 7-7-7 läser ett ord på 8,75 ns och åtta ord på 13,125 ns
Detta betyder att DDR3-2000-satsen borde vara bättre för längre läsarbetsbelastningar, medan DDR3-1666-satsen borde vara bättre för slumpmässiga läsningar.
Jag bör betona (och lägga till en ansvarsfriskrivning) att denna jämförelse är på hög nivå, eftersom vi bara pratar om minneshastighet och CAS-latens – allt annat spelar sin roll, och jag rekommenderar starkt att du läser Rajinders minnesartikel för att få en djupare titt om hur allt detta fungerar.
Personligen använder jag dessa formler när jag överklockar konkurrenskraftigt – om jag har två kit, varav ett kan göra DDR3-2000 6-7-7 och det andra är DDR3-2666 11-13-13, kan jag bestämma vilken som är mer lämplig för riktmärket i fråga.
Kommandohastighet
Denna roliga lilla siffra i slutet citeras ofta som 1T eller 2T beroende på minnessatsen, hur många moduler som är installerade och moderkortets inställningar. Kommandohastigheten är adress- och kommandoavkodningsfördröjningen, i huvudsak fördröjningen mellan åtkomst till och avkodning av data – denna fördröjning gör att minnestiden kan nås utan fel.
I en idealisk värld bör det inte finnas någon latens, men i prestandatester med en inställning på 1T visas det vara snabbare än 2T för syntetiska riktmärken. Huruvida en användare kan känna skillnaden (i huvudsak justerar den också toppbandbredden) är diskutabelt, men ju långsammare kit som standard, desto större skillnad kommer att märkas mellan de två alternativen. Argumentet finns också att en inställning på 2T gör att kitet kan överklockas högre.
Som standard väljs 2T vanligtvis för minneskit som innehåller fler moduler – om en modul i satsen inte kan prestera med den angivna hastigheten med 1T-timing, kommer standardinställningen till 2T att se till att fler moduler klarar binningsprocessen.
Standarder och problemet med minne
I motsats till de mest populära föreställningarna, fungerar inte minnespaket som det anges direkt. Antalet gånger jag har gått igenom ett stort LAN-evenemang och hittat folk som spelar spel på $2000+ vattenkylda system, bara för att upptäcka att deras kit med DDR3-2400 faktiskt körs på DDR3-1333 förvånar mig. Det är mycket vanligare än du tror, och det finns förmodligen någon du känner som är boven till detta. Att se till att minnet är inställt på sin nominella hastighet är en viktig del av processen, och som entusiast har vi ett jobb att se till att så är fallet.
Bortsett från detta är detta en viktig punkt – när vi köper en processor kör den alltid med den angivna hastigheten. När vi kopplar in den i systemet krävs inget fifflande. Om jag varje gång jag installerade en processor var tvungen att gå in i BIOS och justera den så att den går över 1,2 GHz eller 1,6 GHz, skulle jag bli irriterad. Så varför finns det denna diskontinuitet på minnessidan? Varför måste vi gå in i BIOS för att justera minneshastigheten till vad det står på lådan?
Problemet beror till stor del på kompatibilitet. När en processor är installerad i kortet så vet processorn att den kommer in i ett kort som har rätt sockel, den vet att det kommer att finnas stift för ett visst antal PCIe-banor eller för dataöverföring till chipset. Den vet också att det kommer att finnas minne i änden av några stift som körs på en utsedd multiplikator som dikteras av BIOS. Problemet med minne är att minnet inte vet var det kommer att kopplas in.
En DDR3-modul eller -sats kan anslutas till vilket DDR3-kompatibelt moderkort som helst och paras ihop med AMD, Intel eller någon annan processor som kan DDR3, till exempel serverdelar. Eftersom processordesignen nu sätter in minneskontrollern på själva processorn, kan kapaciteten hos den minneskontrollern variera kraftigt. På en Xeon-processor kan systemet bara acceptera maximalt 1600 MHz på grund av de kapabla multiplikatorerna, så det skulle vara dumt att försöka starta upp systemet med ett 2133 MHz-kit som försöker tillämpa full hastighet. Vi skulle kunna koppla in DDR3-2666-kit till ett Sandy Bridge-system, men minneskontrollern skulle vägra att köra på 2666 MHz. Ta dock samma moderkort och en Ivy Bridge-processor så borde minnet kunna fungera. Sen i den högre delen, kom ihåg att jag nämnde att det finns DDR3-3000-minneskit som bara fungerar med 10% av Ivy Bridge i7-3770K-processorer? Det finns det också. Jag skulle kunna koppla in ett fyramodulers DDR3-kit till ett 990FX-kort, ett P67-moderkort, ett B75-moderkort eller något trevligt och obskyrt. Minnet vet inte vilken processor eller minneskontroller det kommer att få, men processorn vet att det kommer att få DDR3 när det är inkopplat. Det finns många fler variabler på minnessidan som är oförutsägbara.
Med det sagt, vi har sett några Kingstons minne med plug-and-play-funktioner. Det här minnet var begränsat i hastighet, tillgänglighet och slog inte fast på det sätt som det borde. När vi pratar med minnesleverantörer, är det huvudsakliga hindret för att detta tillämpas globalt moderkorten själva – moderkortet bör kunna känna igen ett plug-and-play-kit och sedan justera därefter. Det finns redan satta standarder på plats (JEDEC, XMP – mer senare om dessa), så om plug-and-play inte fungerar kommer hastigheten att sänkas ner till den som fungerar. Det låter enkelt, men hur bekräftar vi att minnet fungerar? Om den startar upp i ett operativsystem, eller om den överlever 72 timmars MemTest86 eller Linpack? Vill folk vänta 3 dagar för att få systemet i den hastighet som satsen är klassad? Svaret är nästan säkert nej, därför är vi begränsade till att justera en BIOS-inställning för att få den hastighet vi vill ha.
Jag har spridit tanken på att ha programvara med minnessatsen för att aktivera XMP genom operativsystemet, men det främsta hindret för det är behovet av att programvaran ska fungera med alla tillgängliga moderkort. Nästa tanke var om moderkortstillverkarna kunde skapa programvaran, för att aktivera en JEDEC- eller XMP-inställning vid nästa uppstart genom programvara. Som väntat var svaret komplikationen av så många moduler och så många moderkort. Svaret på detta nya problem skulle vara att inkludera standarder till minnet och moderkorten så att allt fungerar – men det finns redan standarder. För att detta ska fungera skulle det krävas ett djupt partnerskap mellan en moderkortstillverkare och en minnesleverantör, vilket potentiellt skulle hjälpa försäljningen från båda sidor. Vi får se.
Under tiden, se till att dina vänner och familj kör deras minne med nominell hastighet!
Tillräckligt! Var är allt minne?
Denna recension tar hänsyn till fem kit från DDR3-1333 till DDR3-2400. Stort tack till G.Skill för att du försåg oss med dessa minnessatser, ett av varje från deras Ares-, RipjawsX-, Sniper-, RipjawsZ- och TridentX-serier. Specifikt har vi följande kit:
4 x 4 GB DDR3-1333 9-9-9-24 1,50 V : F3-1333C9Q-16GAO (Ares)
4 x 4 GB DDR3-1600 9-9-9-24 1,50 V : F3-12800CL9Q-16GBXL (RipjawsX)
4 x 4 GB DDR3-1866 9-10-9-28 1,50 V : F3-14900CL9Q-16GBSR (Sniper)
4 x 4 GB DDR3-2133 9-11-10-28 1,65 V : F3-17000CL9Q-16GBZH (RipjawsZ)
4 x 4 GB DDR3-2400 10-12-12-31 1,65 V : F3-2400C10Q-16GTX (TridentX)
Under de kommande sidorna tar vi en genomgång av alla dessa kit.