Počítačový průmysl se už delší dobu potýká (a vypořádává) s problémy nestejného růstu rychlostí jednotlivých komponent. Dlouhou dobu nás například brzdily pevné disky, tento problém byl ale vyřešen (nebo na nějakou dobu odsunut) nástupem technologie SSD. Zdá se, že jsme se dostali blízko stropu pracovní frekvence procesorů, na což výrobci zareagovali představením vícejádrových architektur. Na obzoru je ale další výzva: rychlost externích pamětí. Přesněji řečeno: rychlost komunikace mezi výpočetní jednotkou a její pamětí. Do jisté míry se není čemu divit, vždyť externí paměti jsou jednou z posledních součástek v počítači, která si stále zachovala tradiční uspořádání komunikace prostřednictvím paralelních vodičů synchronizovaných samostatným hodinovým signálem. To se ale zřejmě začíná měnit.
Současné paměti
V současnosti se běžně setkáváme s různými typy pamětí SRAM a DRAM, architektura těchto pamětí však zůstává stále stejná. Paměťovou buňku SRAM tvoří bistabilní klopný obvod složený z šesti, případně čtyř tranzistorů, kdežto klasickou paměťovou buňku DRAM tvoří kondenzátor a pouze jeden tranzistor. Jednoduchý princip DRAM umožňuje velkou integraci a nízké výrobní náklady, ale protože kondenzátor uchovávající informací se postupně vybíjí, tak DRAM vyžaduje pravidelné obnovování uložených informací. SRAM je oproti DRAM rychlejší a nevyžaduje pravidelné obnovování. V rámci těchto dvou typů probíhá další vývoj především v rychlosti fungování samotného paměťového pole, ve způsobu komunikace paměťového čipu s okolím a v použití režimů šetření energie.
Jako příklad moderní paměti typu DRAM můžeme zvolit dobře známou DDR4 paměť, která se používá v osobních počítačích a mnoha jiných zařízeních. Tato paměť dosahuje celkové kapacity až 4 Gb a podporuje datové šířky 4 b, 8 b, nebo 16 b. Nevýhodou DDR4 paměti je menší maximální teoretická přenosová rychlost 51,2 Gb/s na jeden čip, navíc sdílená mezi čtení a zápis (nelze dělat obě operace současně). Nepleťme si tento pojem s DDR4 DIMM moduly, které obsahují několik paměťových čipů DDR4 na jedné destičce a mají tak mnohem větší kapacitu a díky datové šířce 64 také vyšší přenosovou rychlost.
Jedním z moderních typů paměti SRAM je QDR-IV (Quad Data Rate). Tato paměť umožnuje dosáhnout teoretické maximální přenosové rychlosti až 153,5 Gb/s při použití dvou portů o datové šířce 36 b. Limitujícím parametrem u této paměti může být malá celková kapacita dosahující jen 144 Mb. Využití těchto pamětí je spíš ve specializovaných zařízeních, kde jsou rychlost a nízká latence důležitější než kapacita.
Využití externích pamětí
Data v počítačových systémech přenášíme přes sběrnice, které postupem času stále zrychlují. Důsledkem toho potřebujeme také zvyšovat rychlosti pamětí tak, abychom data zvládli vysokou rychlostí nejenom přenášet, ale i číst a zapisovat. Podívejme se tedy na několik vybraných datových sběrnic a jejich teoretické přenosové rychlosti:
-
Ethernet 100GBASE – 100 Gb/s (v přípravě je Ethernet o rychlosti 400 Gb/s)
-
PCIe 3.0 x16 – 128 Gb/s (v přípravě PCIe 4.0 x16 o rychlosti 256 Gb/s)
-
Thunderbolt v3 – 40 Gb/s
-
USB 3.1 – 10 Gb/s
Z přehledu datových rozhraní je jasně patrné, že paměť DDR4 nám již nebude stačit pro rychlost datových sběrnic Ethernet 100GBASE nebo PCIe 3.0 x16. Když se navíc podíváme do blízké budoucnosti na nové generace těchto rozhraní, je jasné, že nebude stíhat ani paměť QDR-IV. Samozřejmě můžeme použít více pamětí v paralelním zapojení, a tak zvýšit rychlost. Bohužel tímto řešením nám vzroste počet datových vodičů, využitá plocha a také spotřeba, a to všechno může být problém.
Tato situace již dnes nastala u grafických karet, u kterých je nutné přenášet ohromné množství dat. Ještě stále používané paměti GDDR5 (varianta DDR pamětí pro grafické karty) už narazily na své limity. Společnost AMD jako první přišla u svých grafických karet s novým elegantním řešením, které nazvala HBM (High Bandwidth Memory). Tento typ paměti se integruje přímo na čip k CPU/GPU. Paměť je složena ze 4 vrstev DRAM pamětí a logické (komunikační) vrstvy. Díky umístění na společném čipu je možné propojit paměť a CPU/GPU datovými propoji o šířce až 1024 b, což umožňuje snadno dosáhnout vysoké rychlosti bez nereálně vysoké spotřeby energie.
Moderní sériové paměti
Bohužel ne pro všechny pro všechny aplikace je ekonomicky výhodné si navrhnout a vyrobit vlastní čip s HBM nebo podobnou pamětí. Proces návrhu čipu je tak nákladný, že se vyplatí jen pro následnou výrobu ve velmi velkých sériích. Přitom i v oblastech, kde odbyt v počtu kusů nikdy nebude tak veliký, je také potřeba dosahovat vysokého výpočetního výkonu – například špičkových síťových směrovačů na rychlostech 100 Gb/s a více se nikdy neprodá tolik jako grafických karet.
O samotné zpracování dat se často v takových případech starají vhodně nakonfigurovaná hradlová pole FPGA – jsou sice drahá, ale dokážou nahradit specializovaný ASIC čip, navíc bývají napřed v podpoře nových komunikačních standardů. Ale jaké k nim připojit externí paměti?
Jak už to tak bývá, kde je poptávka, tam vznikne i nabídka. Konsorcium silných hráčů, jakými jsou například Samsung, ARM, IBM, nebo Micron, definovalo standard sériové paměti Hybrid Memory Cube (HMC). Podobně jako HBM je i HMC složena z několika vrstev DRAM pamětí a z logické vrstvy, tyto vrstvy jsou vzájemně propojeny pomocí technologie TSV (through-silicon vias) – v podstatě vertikálních propojů mezi vrstvami křemíku. Rozdíl oproti HBM je v tom, že HMC paměť je vyrobena jako jeden samostatný čip. První verze HMC paměti může obsahovat čtyři nebo osm DRAM vrstev, každá taková jednotlivá vrstva má kapacitu 4Gb. Uvnitř HMC je každá paměťová vrstva navíc organizována vertikálně do 16 sloupců, jak je naznačeno na obrázku 1. Každý sloupec je funkčně nezávislý a má v logické vrstvě vlastní kontrolér. Každý takový kontrolér zajišťuje obnovování dat, které vyžadují použité DRAM paměti. U každého kontroléru může vzniknou fronta požadavků na konkrétní paměťový sloupec. Tyto požadavky jsou následně zpracovávaný podle potřeby, což nemusí odpovídat pořadí přijetí těchto požadavků. Pokud jsou požadavky na konkrétní paměťový sloupec přijímány pouze z jednoho sériového rozhraní, budou tyto požadavky zpracovány v pořadí jejich přijetí, ale pokud jsou požadavky na konkrétní paměťový sloupec přijímány z více sériových rozhraní současně, tak už není zaručeno zpracování těchto požadavků v pořadí jejich přijetí. V logické vrstvě se dále nachází všechny propoje mezi jednotlivými paměťovými sloupci a vstup-výstupními sériovými rozhraními, konfigurační registry, JTAG a BIST (built-in self-test).
S okolím může HMC komunikovat pomocí až 4 sériových rozhraní, každé rozhraní funguje v režimu full-duplex a má 16 vstupních a 16 výstupních sériových linek podporující rychlosti 10, 12,5 a 15 Gb/s na linku. V současnosti je již ve vývoji HMC druhé generace, která by měla maximální rychlost zdvojnásobit. Veškerá komunikace probíhá pomocí dvou typů paketů, první typ slouží k přenosu požadavku do HMC paměti a druhý typ slouží k přenosu odpovědi od HMC paměti. Každý paket se skládá z hlavičky, patičky a případně z přenášených dat. Hlavička i patička mají velikost 64 b, minimální délka paketu je tedy 128 b. V paketech můžeme přenášet data o délce 16, 32, 48, 64, 80, 96, 112, nebo 128 bytů. Zda se paket přenesl bez chyby, se kontroluje pomocí CRC čísla, které se přenáší v patičce každého paketu.
A jaká je vlastně maximální rychlost HMC paměti? Každý paměťový sloupec má teoretickou přenosovou rychlost 80 Gb/s, když sečteme všech 16 paměťových sloupců, vyjde nám přenosová rychlost 1260 Gb/s. Pokud budeme počítat s využitím všech 4 sériových rozhraní na maximální rychlosti, tak dostaneme maximální rychlost přenosu 960 Gb/s v obou směrech současně, celkem tedy 1920 Gb/s. Reálná rychlost přenosu dat bude nižší kvůli režii protokolu, ale i tak jsme na zcela jiných číslech než v případě DDR4 nebo QDR-IV.
Proč je tedy paměť HMC o tolik rychlejší než předchozí, když uvnitř obsahuje “obyčejnou” DRAM paměť? Hlavní příčina je v tom, že mnohem více využívá paralelizace, tedy principu, který je pro hardware zcela přirozený. Každý interní paměťový sloupec dosahuje vysoké propustnosti díky tomu, že pracuje na dostatečné datové šířce, navíc paměťových sloupců je uvnitř 16 (ve druhé generaci dokonce 32). Pokud je toto vše uvnitř čipu, nenarůstá příliš spotřeba. Jakmile bychom ale chtěli data přenášet po paralelní sběrnici podobně, jako to dělají DDR4 či QDR-IV, narazili bychom na obrovské problémy se spotřebou a mechanickou velikostí čipu – měl by prostě příliš mnoho nožiček. V případě DDR4 bychom potřebovali k dosažení rychlosti 960 Gb/s obousměrně celkem 38 DDR4 čipů, tedy 608 datových vodičů a k nim zhruba stejně tolik adresových a řídicích, podrobnější srovnání je uvedeno v níže tabulce. Pro srovnání: high-endové procesory Intel dnes mají pouzdro s 2011 piny. Sériové komunikační protokoly jsou obecně rychlejší, takže veškerá komunikace HMC paměti se zvládne přes “pouhých” 256 pinů (4 rozhraní po 16 linkách, každá linka má jeden diferenciální pár vodičů na každý směr).
Vlastnosti jednotlivých pamětí |
Parametry pamětí pro dorovnání maximální rychlosti HMC |
||||||
Paměť |
Počet datových vodičů |
Plocha čipu [mm2] |
Maximální teortická přenosová rychlost [Gb/s] |
Celkem čipů |
Celkem datových vodičů |
Celková plocha [mm2] |
|
DDR4 |
16 |
126 |
51,2 |
38 |
608 |
4788 |
|
QDR-IV |
72 |
441 |
153,5 |
13 |
936 |
5733 |
|
HMC |
256 |
961 |
1920 |
1 |
256 |
961 |
Závěr
Všechna ta čísla vypadají na pohled pěkně, ale to praktické použití? Dají se tyto paměti koupit, používá je vůbec někdo? Naštěstí situace už dnes vypadá velmi nadějně. Je to především díky tomu, že firma Micron paměti HMC skutečně vyrábí a dodává na trh. Na to reagují další výrobci, kteří tuto paměť integrují do svých produktů, byť zatím spíš pro různé experimenty. Například firmy Xilinx nebo OpenSilicon nabízejí vývojové platformy – desky s čipy FPGA a HMC na vyzkoušení jejich vzájemné komunikace. Druhá z těchto firem dokonce prodává řadič této paměti jako firmwarový modul pro FPGA. Kdo nechce utrácet, může využít open-source řešení s názvem OpenHMC, které vzniká na univerzitě v Heidelbergu. Dokonce ani Češi nezůstávají pozadu. Výzkumníci ze sdružení CESNET ve spolupráci s brněnskou firmou Netcope Technologies mají v plánu vytvořit hardwarový akcelerátor zpracování síťových dat na rychlosti 400 Gb/s. HMC nebo podobná technologie bude v takovém projektu téměř nutností.