Rond 1: Minneshantering

Minnesbandbredden, alltså hur snabbt processorn kan läsa eller skriva till primärminnet, är en enormt viktig faktor i jakten på prestanda. Den påverkar hur snabbt processorn kan hämta programkod och kopiera data, så även nätverkstrafik och filkopieringar går snabbare med en snabb minnesbuss.


Olika ddr3-dimmar kan ha helt olika prestanda när det gäller klockfrekvens, svarstider och förmåga att snabbt leverera data kontinuerligt. Var noga med att köpa rätt typ!

Så gott som alla servrar använder ddr3-minnen, och för att få snabbare åtkomst till minnet finns det framför allt två viktiga faktorer att laborera med: bredden och klockfrekvensen.

Bredden är i praktiken en fråga om hur många kanaler man har till minnesmodulerna, en till fyra per processor är det normala.
Klockfrekvensen på minneskanalerna varierar också mellan olika processorer, dessutom kan minnesbussarna behöva klockas ned ifall man har många moduler installerade.

Ofta får man fördröjningar i storleksordningen 100 nanosekunder innan svaret kommer från minnet, när man räknar med processorernas interna fördröjning.

Det är mycket längre tid än klockcyklerna som en modern processor arbetar med, vilket innebär att den ofta måste vänta en lång stund på att få det första svaret på ett minnes­anrop.


När vi fäller upp en Xeon E5-processor ser vi sockeln som heter LGA 2011. Talet 2011 syftar på antalet kontaktstift.

Därefter kan man fortsätta att hämta sammanhängande sjok av data från minnet i full hastighet till cachen i förväg, utifall att programkoden skulle fortsätta att läsa information sekventiellt en stund.

Men varje gång som processorn får en cache-miss och måste göra ett nytt anrop till det fysiska ram-minnet förlorar den alltså massor av värdefulla klockcykler i väntan på data.

Krigshistoria

För tio år sedan, våren 2003, vände AMD upp och ned på hela serverbranschen. De lanserade sin nya processorserie för servrar, Opteron, och den var överlägsen Intels x86-processorer.
En av anledningarna till Opterons höga prestanda var en switch som gjorde minnesåtkomsten mycket snabbare än den front side-buss som Intel använde på den tiden.

Opteron introducerade också nya 64-bitars instruktioner utöver de gamla vanliga 32-bitars. Plötsligt blev programmen effektivare och minneshanteringen mycket mindre tillkrånglad än tidigare. Ett par år senare kom de första tvåkärniga Opteron-processorerna – också med det var man alltså före Xeon.

Under den här tiden kändes Intel rätt trötta. De hade inte vidareutvecklat Xeon på ett tag bortsett från att skruva upp klockfrekvensen. Orsaken till att Intel satt x86-utvecklingen på sparlåga var den nya, tekniskt eleganta Itanium som man ville göra till ny de facto-standard i servrar.

Det här blev en av de dyraste felbedömningarna som ett företag någonsin har gjort, för Opteron gav liknande prestanda till bara en bråkdel av Itaniums pris – till och med billigare än Xeon.
Det skulle dröja över ett år innan Intel hade kopierat Opterons 64-bits-instruktioner till sina Xeon-processorer, och många fler år innan Xeon fick lika bra minneshantering som konkurrenten.