Производительность твердотельных накопителей NVMe SSD иногда неуловима. Поэтому нам нужно заглянуть в таинственный SSD и проанализировать факторы, влияющие на производительность SSD с разных точек зрения. Нам также нужно подумать о том, как использовать программное обеспечение для хранения данных для оптимизации производительности твердотельных накопителей NVMe, чтобы он лучше мог использовать флэш-память в IDC. В этой статье кратко описываются твердотельные накопители, анализируются твердотельные накопители NVMe с точки зрения факторов, влияющих на производительность, а также приводятся некоторые соображения по поводу конструкции флэш-памяти.
Эволюция носителей
За последние годы индустрия хранения претерпела большие изменения. на сцене появилась полупроводниковая память. Полупроводниковые носители имеют естественные преимущества перед традиционными дисковыми носителями. Они намного лучше традиционных дисков с точки зрения надёжности, производительности и энергопотребления. NVMe SSD является сегодня широко распространённым полупроводниковым носителем данных. Он использует интерфейс PCIe для взаимодействия с хостом, что значительно повышает производительность чтения/записи и повышает производительность самого носителя данных.
Обычно твёрдотельные накопители NVMe для хранения данных используют внутреннюю флэш-память NAND. Сам носитель имеет такие проблемы, как асимметрия чтения/записи и короткий срок службы. Чтобы устранить предыдущие проблемы, твёрдотельные накопители NVMe используют Flash Translation Layer (FTL) для обеспечения того же интерфейса и режима использования для приложений верхнего уровня, что и обычный диск.
Как показано на приведённом выше рисунке, разработка полупроводниковых носителей информации значительно улучшила производительность ввода-вывода компьютерных систем. Между диском для хранения данных на основе магнитного носителя и процессором всегда существовал непростой разрыв в производительности. С развитием и инновациями новых носителей данных этот разрыв производительности исчезнет. С точки зрения всей системы узкое место производительности ввода-вывода смещается с внутреннего диска на ЦП и сеть. Как показано на следующем рисунке, при степени детализации доступа 4 КБ IOPS случайного чтения и IOPS записи SSM NVMe примерно в 5000 раз и в 1000 с лишним раз быстрее жёсткого диска со скоростью 15 000 об/мин соответственно. С дальнейшим развитием энергонезависимых носителей, полупроводниковые носители будут иметь ещё лучшую производительность и возможности ввода/вывода QoS.
Революция в сфере носителей информации привела к возможностям улучшения производительности систем хранения, а также ко многим проблемам при проектировании систем хранения. Дисковые системы хранения больше не подходят для новых носителей. Нам необходимо перестроить более рациональный стек программного обеспечения для новых носителей, чтобы повысить их производительность и избежать новых проблем, которые они вызывают. Реконструкция стеков программного обеспечения и систем хранения в последние годы для новых носителей была горячей темой в области хранения.
При разработке системы хранения на основе SSM NVMe, мы должны сначала ознакомиться с особенностями твёрдотельных накопителей NVMe и понять факторы, влияющие на производительность SSD. В процессе проектирования нам необходимо использовать программное обеспечение для оптимизации системы хранения на основе функций SSD.
Эволюция NAND Flash Media
В настоящее время основные твёрдотельные накопители NVMe используют флэш-память NAND в качестве носителя данных. В последние годы технология флэш-памяти NAND быстро развивалась, в основном в двух направлениях – увеличение плотности хранения за счет 3D-стекирования и увеличение количества бит на ячейку. 3D NAND flash стал стандартом для твердотельных накопителей. В настоящее время все основные твёрдотельные накопители используют эту технологию. Флэш-память NAND может хранить три бита на соту, которая обычно называется флеш-памятью NAND с тремя уровнями (TLC). В этом году плотность хранения одной ячейки увеличилась на 33% для хранения четырех битов, превратившись во флэш-память NAND с четырьмя уровнями ячеек (QLC). Непрерывное развитие флэш-памяти NAND привело к увеличению плотности хранения твёрдотельных накопителей. На сегодняшний день один 3,5-дюймовый SSD может иметь емкость до 128 ТБ, что намного больше, чем у обычного диска. На следующем рисунке показан процесс разработки и развития технологии флэш-памяти NAND за последние годы.
Как видно из приведенного выше рисунка, в процессе эволюции флэш-памяти NAND появились новые технологии энергонезависимой памяти. Intel уже выпустила память Apache Pass (AEP). Ожидается, что в будущем наступит эра полупроводниковых накопителей, где сосуществуют энергонезависимая память и флэш-память.
Программный анализ твёрдотельных накопителей – технология Multi-Queue
С точки зрения интерфейсов, твёрдотельные накопители NVMe мало чем отличаются от обычных дисков. Оба они являются стандартными блочными устройствами в среде ОС. Поскольку твёрдотельные накопители NVMe используют новейший протокол NVMe, программный стек для твердотельных накопителей NVMe значительно упрощен. Большая разница между традиционными SATA/SAS и NVMe заключается в том, что NVMe представляет механизм нескольких очередей, как показано на следующем рисунке.
Что такое технология множественных очередей?
Взаимодействие данных между хостом (сервером x86) и твёрдотельным накопителем осуществляется с использованием очереди «производитель-потребитель». Протокол расширенного интерфейса хост-контроллера (AHCI) определяет только одну интерактивную очередь. Соответственно, взаимодействие данных между хостом и жёстким диском может быть реализовано только через одну очередь. Это ограничение также распространяется на взаимодействие данных между многоядерным процессором и жёстким диском. В эпоху дискового хранилища одной очереди достаточно, потому что диски являются медленными устройствами. Все ядра ЦП используют одну общую очередь для взаимодействия с диском, что может привести к конфликту ресурсов между разными ядрами ЦП. Но издержки, вызванные таким конфликтом ресурсов, незначительны по сравнению с производительностью диска. Кроме того, модель с одной очередью имеет то преимущество, что она обеспечивает один планировщик ввода-вывода для одной очереди, чтобы оптимизировать порядок запросов ввода-вывода.
По сравнению с жёстким диском полупроводниковый накопитель имеет гораздо лучшую производительность. Протокол AHCI больше не применяется, и первоначальные предположения перестали существовать. В этом контексте появился протокол NVMe. Протокол NVMe заменяет протокол AHCI. Команды обработки на уровне программного обеспечения также были переопределены, и набор команд SCSI/ATA больше не используется. В эпоху NVMe периферия ближе к процессору. Сеть хранения данных, ориентированная на соединение, такая как SCSI (SAS) с последовательным подключением, больше не нужна. В отличие от предыдущих протоколов, таких как AHCI и SAS, протокол NVMe является упрощённой спецификацией протокола для новых носителей данных. С введением этого протокола периферийные устройства хранения подключаются к локальной шине ЦП, что значительно повышает производительность. Кроме того, многосерверный дизайн используется между хостом и SSD для адаптации к тенденции развития многоядерных процессоров. Это позволяет каждому ядру ЦП использовать независимую пару аппаратных очередей для взаимодействия с твёрдотельным накопителем.
С точки зрения программного обеспечения каждое ядро ЦП может создавать пару очередей для взаимодействия с твёрдотельным накопителем. Пара очередей состоит из очереди отправки и очереди завершения. Процессор помещает команды в очередь отправки, а SSD помещает завершения в связанную очередь завершения. Аппаратное обеспечение SSD и программное обеспечение хост-драйвера управляют головными и хостовыми указателями очередей для завершения взаимодействия с данными.
Углубленное понимание оборудования SSD
По сравнению с жёстким диском, самое большое изменение в твёрдотельных накопителях NVMe состоит в том, что изменился сам носитель данных. В настоящее время твёрдотельные накопители NVMe обычно используют 3D NAND flash в качестве носителя данных. NAND flash состоит из массива внутренних ячеек памяти и использует плавающий затвор или ловушку для хранения зарядов. Он поддерживает состояние хранения данных на основе суммы хранимых зарядов. Из-за влияния ёмкостного сопротивления, износа, старения и нарушения рабочего напряжения у памяти NAND возникает проблема утечки заряда, которая может привести к изменению хранимых данных. Поэтому, по сути, флэш-память NAND является ненадёжным носителем, поскольку она склонна к скачкообразным изменениям. Твёрдотельные накопители превращают ненадежную флэш-память NAND в надёжный носитель данных с помощью контроллеров и встроенного ПО.
Чтобы построить надёжное хранилище на таком ненадёжном носителе, внутри SSD была проделана большая работа. На аппаратном уровне твёрдотельные накопители должны разрешать часто встречающиеся биты в аппаратном блоке с кодом исправления ошибок (ECC). Каждый раз, когда данные сохраняются, аппаратный блок ECC вычисляет ECC для сохраненных данных. При считывании данных аппаратный блок ECC восстанавливает поврежденные битовые данные на основе ECC. Аппаратный блок ECC, встроенный в контроллер SSD, представляет возможности контроллера SSD. В эпоху хранения MLC технология кодека Bose-Chaudhuri-Hocquenghem (BCH) может исправлять 100-битные перевороты в данных 4 КБ. В эпоху хранения TLC, количество битовых битов значительно увеличивается. Нам необходимо использовать технологию кодека с проверкой чётности с низкой плотностью (LDPC), которая обладает более высокой способностью исправления ошибок. Мы можем использовать LDPC-декодирование с жёстким решением для восстановления данных, даже если в данных размером 4 КБ выполняется до 550-битных переворотов. На следующем рисунке сравниваются возможности декодирования с жёстким решением LDPC, BCH и декодирования с мягким решением LDPC. Мы можем увидеть, что декодирование с мягким решением LDPC имеет более сильную возможность исправления ошибок. Поэтому он обычно используется в случае неудачного декодирования. Недостаток декодирования с мягким решением LDPC заключается в том, что он увеличивает задержку ввода-вывода.
На программном уровне FTL спроектирован внутри SSD. Идея проекта FTL аналогична файловой системе с лог-структурой. FTL записывает данные, добавляя записи в файл журнала. Он использует таблицу сопоставления адресов LBA-PBA для записи метода организации данных. Одна из самых больших проблем в системе с лог-структурой – сборка мусора (GC). Высокая производительность ввода-вывода флэш-памяти NAND снижается при использовании в SSD из-за проблемы с сборкой мусора. Существует также серьезная проблема QoS ввода/вывода, с которой в настоящее время сталкиваются стандартные твёрдотельные накопители NVMe. Твёрдотельные накопители используют FTL для решения проблемы, из-за которой флэш-память NAND не может выполнять запись на месте, используют алгоритм выравнивания износа для решения проблемы неравномерного износа флэш-памяти NAND, используют алгоритм хранения данных для решения проблемы долгосрочной утечки заряда. NAND flash может использовать миграцию данных для решения проблемы чтения диатрибы. FTL является основной технологией для крупномасштабного применения флэш-памяти NAND и является важным компонентом твёрдотельных накопителей.
Флэш-память NAND имеет много блоков. Как показано на рисунке выше, флеш-чип NAND состоит из нескольких блоков, каждый из которых содержит несколько кристаллов. Каждый кристалл представляет собой независимую единицу хранения, которая состоит из нескольких плоскостей. Несколько плоскостей используют одну и ту же рабочую шину и могут быть объединены в один блок для одновременных операций в нескольких плоскостях. Каждая плоскость состоит из нескольких блоков. Блок является единицей стирания, а размер блока определяет гранулярность ГХ на уровне программного обеспечения SSD. Каждый блок состоит из нескольких страниц. Страница – это наименьшая единица записи (программирования), которая обычно составляет 16 КБ. Внутреннее программное обеспечение SSD (прошивка) должно в полной мере использовать эти параллельные устройства для создания высокопроизводительного накопителя.
Обычный твёрдотельный накопитель NVMe имеет простую физическую аппаратную структуру, которая состоит из большого количества флэш-памяти NAND. Эти флэш-памяти NAND контролируются системой на кристалле контроллера SSD (SoC). Программное обеспечение FTL работает внутри SoC и использует шину PCIe с несколькими очередями для взаимодействия с хостом. Для повышения производительности корпоративным SSD требуется встроенная динамическая оперативная память (DRAM). DRAM используются для кэширования данных для повышения производительности записи и для кэширования таблиц отображения FTL. Корпоративно-ориентированные твердотельные накопители обычно используют плоское сопоставление для повышения производительности, что требует большего использования памяти (0,1%). Объем памяти ограничивает разработку SSM-дисков большой емкости NVMe. Практическим методом решения этой проблемы является увеличение размера сектора. Стандартный твердотельный накопитель NVMe использует 4 КБ сектора. Для дальнейшего расширения ёмкости твёрдотельного накопителя NVMe некоторые производители использовали сектора размером 16 КБ. Популярность 16-килобайтных секторов ускорит продвижение SSD-накопителей большой ёмкости NVMe.