[Перевод] Как мы сделали PCIe RAM диск на базе DDR памяти

RAM диск, это PCIe диск построенный на базе чипов RAM памяти. Такой диск не может сохранять данные после отключения питания (если не используется поддерживающий аккумулятор), но обладает исключительно высокими скоростями чтения/записи (особенно для случая рандомного доступа), а также имеет неограниченный ресурс. Это важно в задачах, требующих большого количества циклов перезаписи информации, где даже профессиональные SSD диски не выживают долго. Для операционной системы RAM диск должен быть неотличим от SSD или HDD диска и не требовать специальных драйверов или настройки. В отличие от диска, виртуально размещённого в RAM памяти компьютера, где максимальный объём памяти ограничен 128–256 ГБ у лучших материнских плат, RAM диск для PCIe слота, в общем случае, не имеет лимитов объёма и может работать в любой материнской плате с PCIe слотом.

Этот проект начался несколько лет назад в рамках DC программы (*distributed computing — распределённые вычисления). Со временем скорость интернет-соединения выросла и основной проблемой скорости DC стала низкая скорость HDD. SSD частично решали эту проблему, но повышенный износ SSD, вызванный постоянной перезаписью заданий, отталкивал новых пользователей DC сети. Никому не хочется гробить свой недешёвый SSD ради абстрактной цели. Но ресурс и большая скорость записи/чтения с равномерной латентностью очень важны для DC вычислений, где задержка или сбой в каждом сегменте замедляет всю сеть вычислителей.

В этот момент наша команда сформировала образ будущего RAM диска на базе re-fan (*бывшей в употреблении и перепаянной) DDR памяти. Дело в том, что такая память стоит достаточно дёшево — примерно 40 центов за гигабайт для DDR3 — и хорошо доступна в больших количествах. Перепайка, выполненная с соблюдением температурных режимов, не вредит RAM чипам. Такие производители памяти как Kllisre, ZIFEI, TANBASSH, Rasalas etc. используют именно re-fan чипы. Они же установлены в большинстве бюджетных ноутбуков и планшетов Китайских производителей. Использование re-fan позволяет снизить стоимость конечного устройства до приемлемых значений без потери его характеристик или надёжности.

Вторым очевидным условием было то, чтобы будущий диск работал в системе также, как HDD или SSD диск и был бы полностью совместим с операционной системой и программными продуктами. Поэтому за основу был взят чип Silicon Motion SM2262EN. Этот чип поддерживает PCIe x4, NVME 1.3, собственную DDR память для буферизации и 8 каналов NAND/TLC памяти. Благодаря этому он может использовать всю доступную скорость PCIe x4 не теряя её.

Первая проблема таилась в том, что интерфейсы NAND и DDR памяти очень сильно отличаются и просто так подключить DDR вместо NAND не получится.

Вторая проблема была в том, что длина дорожек между DDR чипом и SM2262EN не может быть бесконечной. А чтобы набрать объём в 1 TB нам потребуется 256 чипов DDR памяти по 4GB каждый.

Напрашивалось использование FPGA в роли промежуточного звена между SM2262EN и DDR, но третья проблема состояла в том, что HMC FPGA не может адресовать такое количество чипов DDR памяти (данный диск возможен в версиях от 128 гигабайт до 2 терабайт).

Я не буду тратить ваше время на историю наших поисков, но, в итоге, мы пришли к архитектуре с четырьмя FPGA, равномерно распределёнными по плате, каждая из которых подключена к двум банкам по 32 чипа DDR и программно имитирует работу двух NAND чипов каждая.

Архитектура дискаАрхитектура диска

Благодаря этому решению SM2262EN не видит трюка и работает с памятью также, как с NAND чипами. Длины дорожек между FPGA и самым дальним DDR чипом в банке находятся в рамках допустимого и их импедансы могут быть согласованы, используя резисторы и DCI (*Digitally Controlled Impedance) технологию. Большая площадь 12-и слойной платы и изобилие свободного места позволило нам сократить множество пассивных компонентов используя межслойную ёмкость и сопротивление самих проводников. Данные решения тщательно обкатывались в HyperLynx и, затем, подтвердили работоспособность в прототипе. Пример такой трассировки изображён на рис. ниже.

image-loader.svg

Дополнительно на плате установлены управляемые источники питания (PIMC) и система загрузки с двумя чипами памяти BIOS, содержащими битстримы и настроечную информацию. Два чипа установлены из соображений надёжности. Также диск имеет индикатор нагрузки и семисегментный индикатор, на который выводятся статусы работы диска, коды самодиагностики и ошибок. Этот маленький помощник позволит оперативно диагностировать диск и выявлять проблемы. Ниже показан проект печатной платы и изготовленные образцы:

Чертёж печатной платы дискаЧертёж печатной платы дискаИзготовленные платыИзготовленные платы

Тестирование диска показало скорость чтения/записи на уровне 7000/6000 МБ/с соответственно, что является пределом для PCIeX4 gen 4 и приближается к пределу скорости DDR3 памяти (см. скриншот из этого видео).

18d1e7ab591865e63acbd6a30b82063c.jpg

Особенно примечательны результаты тестов RND4K Q32T16 и Q1T1 — такая скорость достигается за счёт особенностей работы банка памяти DDR чипов, представляющего собой виноградную гроздь из носителей малого объёма, что позволяет работать с ними параллельно и одновременно, в отличие от одного единственного NAND чипа. Нам не известны SSD диски, способные показать сравнимую скорость в таких тестах.

Сравнение секвентального и рандомного доступа (картинка стырена с вики).Сравнение секвентального и рандомного доступа (картинка стырена с вики).

На рисунке ниже показаны основные элементы управления DDRAM диском. Это индикатор нагрузки, дисплей и кнопка самотеста. После нажатия данной кнопки диск отключает весь обмен по PCIe и запускает тестирование всех своих элементов, включая чипы памяти. Все данные на диске будут уничтожены при этом. В течение теста индикатор показывает номер тестируемого банка памяти. Если тест пройден, индикатор покажет P = passed. В противном случае будет отображён код ошибки. Для удобства пользователя таблица расшифровки кодов ошибок нарисована на плате диска справа от индикатора. Во время работы индикатор мигает десятичной точкой с частотой 2 Гц. Это является признаком нормальной работы всех систем диска.

dbc206fee63bd1e802bc907ea941f711.JPG

С обратной стороны платы диска установлены чипы DDR памяти, накрытые радиатором. Радиатор необходим, т.к. чипы установлены очень плотно и снизу дополнительно подогреваются чипами FPGA и другими элементами устройства. Радиатор не только отводит лишнее тепло, но также выравнивает нагрев различных участков платы диска, что исключает перекос характеристик DDR чипов вызванный неравномерным нагревом. Использован сухой термоинтерфейс на базе термопрокладки от 3M.

61b320e94508d48eaa677a0b50bc367d.JPG

Для снижения механической нагрузки на PCIe разъём и упрощения установки диска в материнскую плату диск имеет выступ на плате, опирающийся на край разъёма. При необходимости этот выступ можно отломать, для этого предусмотрена линия разлома из просверленных в ряд отверстий. Однако, мы пока не встречали материнскую плату, где он бы мешал.

Во время ресурсных испытаний диск отработал 200 часов непрерывно под максимальной нагрузкой и чередующимися операциями чтения/записи. Никаких изменений в характеристиках диска отмечено не было. Ниже можно увидеть видео тестирования скорости:

Сейчас мы тестируем прототип RAM диска, использующего два чипа SM2262EN параллельно и работающего в слоте x8. Ожидаемо, скорость выросла вдвое.

© Habrahabr.ru