Современные SSD-накопители отличаются высокой скоростью как чтения, так и записи. В силу использования ячеек с высокой плотностью (TLC и QLC NAND) высокая скорость записи, как правило, является результатом использования кэша с технологией псевдо-SLC (pSLC) кэша, в котором память NAND работает в «ускоренном» режиме записи. Использование такого типа кэширования позволяет в разы ускорить запись относительно небольших объёмов данных. Недавно опубликованный отчёт заставляет задуматься: его авторы утверждают, что динамический pSLC-кэш, активно используемый в современных SSD, ускоряет процесс деградации ячеек и сказывается на скорости записи через считанные единицы циклов перезаписи. В этой статье мы рассмотрим, почему это происходит.
Современная NAND-память может функционировать в нескольких разных режимах, причём зачастую это одни и те же чипы NAND и даже один и тот же контроллер. Выбор конфигурации чипов NAND зависит от производителя.
В режиме SLC каждая ячейка хранит всего один бит данных, что существенно ускоряет операции записи по сравнению с конфигурациями более высокой плотностью. Кроме того, современные чипы NAND могут быть сконфигурированы с любой поддерживаемой контроллером плотностью. Более того, конфигурацию ячеек можно менять на лету, переключая TLC-ячейки в режим SLC и наоборот. Эти особенности и используются для создания pSLC (псевдо-SLC) кэша, который бывает двух типов:
В отличие от статического pSLC-кэша, где фиксированная часть NAND постоянно работает в режиме SLC, динамический pSLC-кэш использует часть свободных ячеек накопителя, временно переключая их в SLC-режим. У производителей SSD — полная свобода выбора. В зависимости от выбранных производителем диска настроек, динамический pSLC-кэш может занимать до 100% свободного места на диске (разумеется, его реальный объём будет меньше, т.к. основной массив NAND обычно конфигурируется с плотностью TLC или QLC). Соответственно, объём доступного кэша будет уменьшаться по мере заполнения накопителя. Чем больше заполнен SSD, тем меньше доступного пространства для динамического pSLC-кэша, и тем быстрее будет падать скорость записи данных.
На этапе записи данные сначала попадают в статический (если он есть), а затем в динамический pSLC-кэш. Когда оба типа кэша заполняются, начинается так называемая «свёртка» (folding), при которой данные перемещаются в основной массив NAND (например, в TLC-режим).
Запись на диск, в котором есть только статический pSLC-кэш, выглядит следующим образом (источник — исследование компании Swissbit Ag):
Если накопитель сконфигурирован с использованием динамического псевдо-SLC кэша (то есть, такого, объём которого зависит от свободного места на диске), график скорости записи будет выглядеть следующим образом:
Разница между двумя графиками очевидна. С использованием динамического pSLC-кэша накопитель может поддерживать высокую скорость записи гораздо дольше аналогичного по объёму накопителя, оборудованного только статическим pSLC-кэшем (первая ступенька на графике). Вторая ступень показывает скорость записи напрямую в ячейки, сконфигурированные в режиме TLC или QLC. Наконец, третья ступень — этап очень медленной записи, сопровождающейся «свёрткой» динамического кэша, в процессе которой ячейки переконфигурируются из состояния псевдо-SLC в состояние TLC, а данные из них, соответственно, переносятся.
Процесс свёртки включает несколько шагов, каждый из которых снижает производительность:
Эти операции требуют времени и ресурсов, что приводит к сильному падению скорости записи после заполнения буфера псевдо-SLC. Эта особенность SSD-накопителей хорошо изучена и учитывается профессиональными обозревателями, которые проводят специальные тесты, позволяющие определить конфигурацию pSLC буфера и скорости записи в буфер, напрямую в ячейки стандартной плотностью, и в процессе «свёртки». Однако «свёртка» — далеко не единственная проблема динамического буфера. Со временем скорость записи быстрых накопителей уменьшается, часто — в разы по сравнению с новыми экземплярами. Схематично этот процесс отображён на следующем графике:
Здесь непрерывная линия показывает скорость записи полного объёма данных на пустой новый накопитель, а пунктирная — запись того же объёма данных на пустой, но уже бывший в употреблении диск. Как видим, высокую скорость записи б/у накопитель может демонстрировать только на очень коротком отрезке — это объём статического pSLC-кэша (сравните этот график и тот, на котором изображена работа накопителя, оборудованного только статическим pSLC-кэшем). Далее запись ведётся напрямую в ячейки TLC памяти, которая втрое медленнее записи в псевдо-SLC кэш. Если накопитель совсем не имеет статического pSLC-буфера или объём этого буфера невелик, пользователь заметит замедление работы при записи данных. Если же объём статического кэша достаточно большой, то несмотря на деградацию динамического буфера пользователь может и не заметить падения производительности.
Данный эффект связан с феноменом деградации pSLC кэша. Почему это происходит?
Существует важный нюанс, который часто упускают из виду: у NAND-памяти ограничено не только количество циклов записи, но и число переключений между режимами TLC и pSLC. Причины этого следующие:
В частности, в индустриальных применениях (серверные SSD) переключение конфигурации ячеек между TLC и pSLC допускается только один раз; в таких дисках изначально настраивается статический pSLC-кэш, который больше не изменяется. Для потребительских SSD ограничения менее строгие, но ресурс переключений всё равно ограничен.
Когда ресурс переключений между режимами TLC и псевдо-SLC исчерпывается, динамический pSLC-кэш перестаёт функционировать. Если накопитель имел достаточный объём статического pSLC-кэша, пользователь может не заметить падения скорости записи. Но если в конфигурации накопителя был настроен только динамический кэш, скорость записи резко упадёт, и это станет очевидным.
Пользователь pcpartpicker (сотрудник известной компании PCPartPicker, владельцев онлайн-платформы для выбора и проверки совместимости различных компьютерных компонентов) опубликовал результаты тестирования множества моделей SSD, которое провела его компания. На Reddit было опубликовано две статьи (несмотря на названия, это разные тексты; в первом тексте в комментариях приводятся дополнительные результаты):
В рамках тестирования данные на диски перезаписывались несколько раз. Спустя определённое количество циклов перезаписи большинство протестированных SSD продемонстрировали деградацию скорости записи; степень деградации росла с каждым циклом до тех пор, пока скорость записи не достигала определённого для каждой модели минимума. Единожды деградировавшие диски более не возвращались к изначальным скоростям ни спустя два часа ожидания, ни после перезагрузки системы. На графике деградация выглядит следующим образом (изображение анимировано):
На графике видно, как с каждым циклом уменьшается объём доступного динамического кэша псевдо-SLC; начиная с восьмого цикла, очевидно, в качестве буфера используется только статический pSLC-кэш, а динамический — исчез, как будто его и не было.
Деградации подвержены не все модели. Ярким исключением является диск WD SN850X, степень деградации которого после всех циклов перезаписи составила пренебрежимые 7%.
Ниже — данные, сведённые в таблицу:
Более подробно о процессе тестирования и его методологии можно прочесть в оригинальных статьях. Для нас же представляет интерес то, что два года назад впервые был зафиксирована и документирована деградация скорости записи SSD, использующих псевдо-SLC буферизацию.
Все обозреватели тестируют новые накопители в начале их жизненного цикла. Новые экземпляры моделей с динамическим pSLC-кэшем демонстрирует высокую скорость записи (разумеется, с учётом особенностей по объёму и типам кэша). Однако уже после 10% использования ресурса ячеек (числа циклов программирования и стирания) производительность начинает постепенно падать, что связано с уменьшением пула ячеек, для которых доступно переключение режимов. В конце концов накопитель переходит в состояние, когда доступен только статический кэш, если он имелся в накопителе изначально.
В ветке на форуме AnandTech пользователи обсуждают деградацию скорости записи у накопителей SK Hynix P41 Platinum. На новом диске скорость записи — высокая:
Спустя короткое время — по утверждению пользователя, после записи всего 4ТБ данных, — скорость записи упала вдвое:
У пользователей ещё более старых накопителей этой модели наблюдается ещё более выраженное падение скорости записи:
Часто встречающийся на форумах совет — аппаратный сброс и полная очистка накопителя командой Secure Erase. Один из пользователей проделал сброс, и скорость записи на короткое время восстановилась, но уже через месяц скорость записи снова упала:
Только производитель может точно сказать, что стало причиной такого снижения производительности, однако симптомы очень похожи на те, которые возникают при деградации кэша псевдо-SLC.
Для уже имеющихся накопителей снизить влияние деградации можно, оставив существенную часть пространства на диске свободной. Покупать накопитель большого объёма для того, чтобы не использовать заметну долю его возможностей — как минимум странно, поэтому стоит обратить внимание на следующие рекомендации.
В статье The impact of SLC Cache in performance of an NVMe SSD провели исследование: у быстрого NVME-накопителя был отключён pSLC-кэш, после чего были сделаны замеры производительности. Результат можно увидеть на графиках:
Как следует из графиков, отключение pSLC-кэша привело к отсутствию «ступеньки» при записи больших объёмов данных. Вместо пика на небольшом отрезке с последующей медленной «свёрткой» на снизкой скорости накопитель с отключённым pSLC-кэшем демонстрирует равномерную скорость в 2100-2200 МБ/с. Парадоксальным образом при использовании накопителей для записи на них больших объёмов данных (например, образов дисков, которые снимаются с помощью соответствующих инструментов) диски без динамического pSLC-кэша и, возможно, диски после деградации динамического pSLC-кэша могут оказаться предпочтительнее экземпляров, в которых активен динамический pSLC-кэш большого объёма.
Исходными данными для этой статьи стали следующие исследования: