Úvod
Akcelerační karty pro zpracování vysokorychlostního síťového provozu, které vyvíjíme ve spolupráci s brněnskou firmou Netcope Technologies, mají v mnoha aplikacích značné nároky na rychlost a kapacitu paměti. Ať už jde o uložení filtračních pravidel firewallu, správu statistických záznamů o síťových tocích, či prosté bufferování dat, vždycky jsou naše nároky na hranici technických možností. A protože se už pomalu začínáme chystat na standard Ethernet 400 Gb/s, potřeba velmi rychlé paměti je opravdu aktuální.
Současné paměti
V současnosti naše karty používají paměti SRAM a DRAM. V rámci těchto dvou typů probíhá dnes 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. Základní princip je ale pořád stejný.
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 poř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 paralerním zapojení, a tak zvýšit rychlost – také to tak děláme! Bohužel tímto řešením nám roste počet datových vodičů, využitá plocha a také spotřeba, a to všechno brzy začne 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ů není tak veliký, je také potřeba dosahovat vysokého výpočetního výkonu. V našem projektu vyvíjíme především technologie pro měření statistik vysokorychlostního provozu. Takových zařízení se nikdy neprodá tolik jako grafických karet.
O samotné zpracování dat se na našich kartách 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 vzniknout 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říjmá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říjmá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).
Obr. 1.: Architektura HMC paměti
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á teoreticou 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. Platformu i řadič jsme si na CESNETu vyzkoušeli, abychom se s technologií seznámili.
Kdo nechce utrácet, může využít open-source řešení s názvem OpenHMC, které vzniká na univerzitě v Heidelbergu. Protože OpenHMC je stále v aktivním vývoji, naším plánem je využít tento řadič pro řízení pamětí HMC v budoucí generaci karet pro zpracování vysokorychlostního síťového provozu.
Jakub Cabal a Viktor Puš
Pozn.: Příspěvek je zkrácenou verzí článku uveřejněného na Root.cz.