tupe opisovani nesmyslu z jinych webu by vam slo. Xeon E5 v4 totiž podporuje 1.54TB RAM / 2400MHz.
Ten test je průhledně zfušovaný. Skvěle to shrnul jeden comment na Techreportu:
"...So AMD showed off how badass they are when you don't put enough memory into the Intel system.
Just wait until Intel shows an Atom destroying the 1800X when the 1800X doesn't have a motherboard!..."
http://techreport.com/news/31549/amd-naples-platform-prepares-to-take-zen-into-the-datacenter
V prezentaci je jasne napsano,ze se jedna o hodnotu pro 16gb dimm. Coz neni uplne bez zajmu,amd zde vyuzije vetsiho poctu kanalu (rychlejsi) a vetsiho mnozstvi celkove ram. Je to samozrejme srovnani vybrane schvalne,ale me to docela zaujalo,16 gb moduly jsou totiz hodne levne oproti vyssim.
To moc není argument pro srovnání tohoto typu. Rozdil mezi nejlevnejsimi RegECC Kingston 16 a 32 GB na CZC je 3400CZK VS. 8800CZK, to je 4400CZK/16GB u 32GB modulu, to je úspora 28% při použití dvou modulů místo jednoho. A vyplatí se to? Jak vyčíslit ztrátu z potřeby většího místa v racku (plus energie, chlazení a pod.)? Prostě to srovnání nějaký kulhá a zbytečně shazuje test, který mohl být zajímavý.
A o kolik to zvedlo výkon a v které aplikaci?
Abyste mohl nad reálným přínosem mohl diskutovat, chtělo to právě osadit Intel stejným množstvím RAM. pak by bylo vidět který přístup v kombinaci s procesorovou architekturou je výhodnější. Takhle vám výsledek ovlivňuje ještě parametr "množství paměti".
No, on ten test byl asi docela nesikovne prezentovany (nebo interpretovane novinari, co AMD prezentovalo). To, ze ma AMD moznost osadit vice modulu a 2x tolik kanalu, je jednoznacna vyhoda pro memory contrained aplikace (a tem ostatnim to muze taky jen prispet, navic stejna konfigurace pameti je pak levnejsi, takze to v podstate zadne nevyhody nema). Jak moc melo vliv mensi mnozstvi pameti u Intelu na vykon v prvnim testu je mozne spekulovat - spravne by nemel byt zadny nebo skoro zadny, pokud je to memory constrained / cpu constrained benchmark (a samozrejme za predpokladu, ze se ta data cela pohodlne vesla do pameti - coz predpokladam, ze ano - protoze jinak by ten rozdil byl radove jiny)
Hezky ... a pak zjistis, ze realne v 99,9% aplikaci je rozdil 0,01%.
Kdykoli kupuju HW, davam do nej nejvetsi dostupny moduly co se daj sehnat. Protoze do budoucna je daleko hodnotnejsi volnej slot pro rozsireni ty RAM, nez 00prd vykonu navic.
A ze by kazdy jadro pristupovalo ke svymu modulu, tak to bych chtel videt, jak bys naprogramoval. To bys totiz musel pri kazdym spusteni ty aplikace resit na urovni HW, jak je zrovna RAMka organizovana, coz ti jaksi ten HW ani nerekne, takze bys sebou leda musel tahat databazi vzemoznyho HW, podobne jako to dela hwinfo a dalsi. A pak bys musel tak trochu ... vic ... vyradit z provozu system, aby sis moh zapisovat a cist tam kde chces ty, a ne kde ti prideli prostor system. Jo a jeste by sis musel sam ridit, na kterym jadre co pobezi, protoze on to system vubec nesoupe sem a tam podle toho jak se mu to zrovna hodi.
> To bys totiz musel pri kazdym spusteni ty aplikace resit na urovni HW, jak je zrovna RAMka organizovana, coz ti jaksi ten HW ani nerekne
To HW samozřejmě řekne operačnímu systému, viz NUMA, a CPU affinity pak má pochopitelně vliv i na alokaci paměti na shodném NUMA uzlu (velmi zjednodušeně).
Jo, tak to se urcite vyplati, koupit si jeden 128 GB modul misto 8x16GB, propustnost pameti sice bude zlomek te mozne, protoze vseho jaksi musi jit pres jeden modul, stat to bude nekolikanasobne vic, ale hlavne ze mas misto na rozsirovani, co kdyby nahodou :-D
Samozrejme, pokud to budeme porovnavat pri praci jedne aplikace, ktera navic neni zatizena propustnosti pameti (coz je presne ten duvod, proc to ve spouste benchmarku skutecne vyjde jako nula nula nic rozdil), tak ano, ale to neni uplne reprezentativni load vytizene serveru (napr. hypervisoru)
Úplně normálně to podporuje systém, dokonce i Widle :D Proto se paměti prodávají v balíčku po dvou kusech (aby byly stejný tolerance) a v BIOSu ne desce PC se dá zapnout dual channel RAM... Měl jsem to už dávno, ještě za 32b multicore. A na desce jsou banky s různou barvou, hádej proč?
Druhou sběrnicí pro RAM se z 64b modulu stane 128b modul (dvojnásobná propustnost) a navíc každá půlka té "paměti" může pracovat pro jiný jádro a dělat něco jinýho. V praxi je tam jader víc než pamětí a občas se čeká na sdílený data v jednom modulu, proto to nevyletí o 100%.
2Petr M: Ne, zadnej system to nepodporuje, system proste vidi hromadu RAM a na pozadavek o alokaci nejakou cast z ni prideli. Dokonce ani nemusi platit, ze ta pridelena pamet bude v jednom kuse, natoz ze bude v nejakym konkretnim modulu.
A barvicky tam rozhodne nejsou proto, aby bylo neco rychlejsi, sou tam proto, ze spousta desek/cpu podporuje jen nejaky konkretni konfigurace pameti, a je tudiz nekde popsano, jaky moduly v jaky organizaci je mozny do toho kteryho slotu napichat. Napriklad je treba vzdy osadit slot 0, a proto ma jinou barvu nez ostatni, protoze pri jednomodulovy konfiguraci je to jedinej osazenej slot. Pripadne sou barevne odliseny banky, ale to opet prozmenu predevsim proto, ze je nanejvys vhodny do nich davat moduly stejny, protoze jinak to mozna nebude fungovat.
A presne proto se i prodavaj moduly po dvou - aby spolu fungovaly.
Serverovy zelezo umi pak v tech modulet udelat treba zrcadlo (defakto pametovej raid). Ale rozhodne nemuzes urcit kterej modul bude pouzivat ktery jadro.
Je to trosku slozitejsi, nez jak si to predstavujes
U AMD mame (resp. meli jsme, u Ryzenu jsem to jeste nestudoval) dva rezimy:
Ganged - pamet se prokladanim rozdeli na stridajici se adresy podle bloku a chova se to podobne jako RAID 0, vysledkem je jedna sbernice s teoreticky dvojnasobnou propustnosti.
Unganged - obe sbernice jsou nezavisle, tzn. muzeme udelat nekolik nezavislych requestu.
Oboji funguje celkem dobre - ganged rezim je vyhodny v sirce pasma (zejmena pro vetsi requesty na MC), unganged se nejlepe vyuzije u multithreadovych aplikaci.
U Intelu se pouziva interleaving pameti, CPU rozdeluje pamet na jednotlive regiony a pristupuje k nim paralelne. Dale podporuje optimalizaci pristupu pomoci rankingu (v pripade vicerankovych modulu) v ramci jednoho kanalu. Cilem optimalizaci je snizit latenci pristupu k pameti. Takze pridelena pamet v kuse v modulu neni a to je vicemene i cilem.
Pointa celeho reseni je ale to, ze OS to nemusi do znacne miry resit - staci zahltit MC dostatecnym poctem dostatecne dlouhych pozadavku - coz se bezne deje, protoxe instrukce se zpracovavaji/dekoduji/vykonavaji out of order (a navic MC pozadavky jsou mnohem vice nizkourovnovou zalezitosti nez jedna x86 instrukce).
Kde to naopak OS musi resit (a resi, zcela bezproblemu), jsou NUMA systemy, kde je pomerne velky rozdil v pristupu k lokalni pameti CPU a k sdilene pameti. Ale to samozrejme vsechny serverove OS bezproblemu zvladaji a zajistuji tak lokalitu pametovych alokaci (coz je ale docela dobry napad obecne, treba kvuli caches).