Фильтр по тематике

Твердотельные диски — надёжное решение для ответственных применений. Часть 2

В статье проведён сравнительный анализ эффективности применения накопителей информации на твердотельных и жёстких дисках, сделан обзор существующих форматов твердотельных дисков. Описаны проблемы, характерные для NAND-памяти, и показано, как на основе программного обеспечения TrueFFS® можно справиться с этими проблемами, сделав достоинства NAND-памяти по ёмкости, производительности, надёжности и цене доступными для потребителей.

1583 0
Твердотельные диски — надёжное решение для ответственных применений. Часть 2

Часть 2

Природа ошибок NAND-памяти

Память NAND использует уникальный метод для организации хранимых данных, который не позволяет им быть доступными посредством стандартных вызовов файловой системы. Помимо этого, различные технологии в меньшей или большей степени подвержены разного рода ограничениям, уменьшающим время жизни накопителей и снижающим общую производительность. С внедрением новых технологий, таких как NAND с плотностью 4 бита на ячейку, эти ограничения становятся экспоненциально более сложными, чем при переходе от SLC (1 бит на ячейку) к MLC (2 бита на ячейку).

Цикл записи/стирания

Перед записью новых данных на накопитель ранее записанные данные должны быть стёрты для освобождения места. Этот процесс известен как цикл записи/стирания. Так как уменьшаются размеры производимых кристаллов с целью размещения большего их количества на каждой подложке и увеличивается плотность ячеек, то возрастает вероятность ошибок, что требует более сложной организации цикла записи/стирания. Всё это в итоге приводит к более быстрому расходованию ресурса накопителя и увеличению потребления энергии.

Инверсия битов

Иногда во флэш-памяти отдельный бит может быть ошибочно инвертирован или определён как инверсный. В ряде случаев, например при просмотре фотографий или прослушивании музыки, одна такая инверсия обычно оказывается несущественной: пользователь даже не заметит её. Однако если инверсия бита произошла в операционной системе, конфигурационных файлах или в другой важной информации, это может привести к ошибкам в системе и полному зависанию. Повторное чтение при определении ошибки может помочь решить проблему. Но если бит инвертирован фактически, то должен быть применён специальный алгоритм определения и коррекции ошибок (EDC/ECC).

Парное соединение битов

В MLC NAND-памяти возможна такая ситуация, когда два бита из разных файлов могут быть записаны в одну ячейку. Как и в любой энергонезависимой памяти, одиночный бит может быть искажён по различным причинам, включая электрические помехи при записи или программные ошибки. Когда искажается один бит, то парный ему по ячейке бит тоже искажается.

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

Без технологии управления, такой как TrueFFS, эффект от парного соединения битов в одной ячейке может привести к различным проблемам, например непредсказуемым изменениям в файлах, пропаданию записной книжки в мобильном устройстве или даже зависанию ОС. Усугубляет ситуацию то, что схемы парного соединения отличаются у различных поставщиков NAND-памяти и даже у различных поколений памяти от одного поставщика.

Ошибки сохранения данных

Ячейки флэш-памяти должны поддерживать стабильность уровня напряжения для обеспечения сохранения данных в момент обращения в соответствии с требованиями приложения. В процессе записи или стирания утечка через плавающий затвор стремится медленно изменить напряжение ячейки на уровень, отличный от начального. Изменённый уровень может быть ошибочно интерпретирован как другое логическое значение.

Случайно распределённые дефектные блоки

Из соображений эффективности производства MLC NAND-накопители сознательно поставляются с 5% случайно распределённых дефектных блоков. В дополнение к «начальным» дефектным блокам, которые появляются при производстве, нормальный износ при стирании и записи вызывает появление новых недоступных блоков. В силу этого работа с NAND-устройствами требует начального сканирования накопителя на наличие дефектных блоков и маркирования, чтобы гарантировать отсутствие доступа к ним. Невыполнение данных требований или выполнение без обеспечения надлежащей степени надёжности результатов может с высокой вероятностью привести к отказам конечного устройства и даже к его полному выходу из строя.

Ограниченный ресурс

Отдельные ячейки на всех устройствах флэш-памяти любой технологии имеют ограниченное число циклов записи/стирания, которое они могут выдержать до того, как вероятность ошибки возрастёт до неприемлемого уровня. Потенциально возможное число циклов записи/стирания зависит от специфики применённой технологии. В области памяти, которая близка к своему лимиту, проявляются отдельные ошибки записи, которые становятся более частыми и более значимыми. В конечном итоге сектор становится недоступным. Без технологии управления, такой как TrueFFS, всё больше и больше секторов будут становиться недоступными. Ёмкость памяти постепенно уменьшается, в данных могут появляться случайные ошибки, коды приложений и ОС могут начать быстро искажаться, увеличивается вероятность полного повреждения приложения.

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

Естественно, что ошибкам, связанным с ограниченным ресурсом циклов записи/стирания, в гораздо большей степени подвержены устройства флэш-памяти с плотностью 2 (MLC) и 4 бита на ячейку, чем с плотностью 1 бит на ячейку (SLC).

Ограничения MLC и 4-битовой технологии флэш-памяти

Увеличение плотности битов в ячейке NAND-памяти уменьшает её стоимость и размер, но при этом усиливает влияние типичных ограничений флэш-памяти, потенциально уменьшая надёжность, производительность, срок службы и в перспективе усложняя проблемы интеграции.

Технология одноуровневой ячейки (SLC) предполагает хранение одного бита данных в ячейке и использование двух уровней напряжения, технология многоуровневой ячейки (MLC) – двух битов данных в ячейке при четырёх уровнях напряжения, а 4-битовая технология – соответственно четырёх битов данных в ячейке при шестнадцати уровнях напряжения (рис. 2).


Хотя 4-битовая технология представляется на сегодняшний день наиболее передовой и выгодной NAND-технологией, именно с ней связаны наибольшие сложности. Расстояние между соседними уровнями напряжения в многоуровневых (2-битовых и 4-битовых) ячейках меньше, чем в одноуровневых, что влияет на надёжность сохранения данных. Распознавание уровней напряжения в таких ячейках по сравнению с SLC-ячейками является более сложной и требующей большей точности задачей, сопряжённой с более высокой вероятностью ошибок чтения и записи. Кроме того, флэш-память с плотностью 4 бита на ячейку более чувствительна к воздействию токов утечки и влиянию паразитной ёмкости, которые могут непредсказуемо действовать на уровни напряжения в ячейках, негативно сказываясь на надёжности, производительности и энергопотреблении. Переход к 60-нанометровой технологии ещё больше обострил проблемы надёжности, сделав процесс производства флэш-памяти более трудным для моделирования и более тяжёлым в реализации.

Из-за увеличенной сложности управления в многоуровневой NAND-памяти такие основные операции, как чтение страницы из буфера, запись в буфер, удаление, требуют больше времени, чем в одноуровневой памяти, что в конечном счёте вынуждает искать компромисс между производительностью и надёжностью. В этих условиях трудно переоценить значение современных технологий управления флэш-памятью, прежде всего TrueFFS, которая может обеспечить надёжность доступа к данным без уменьшения производительности системы.

Использование TrueFFS для преодоления ограничений флэш-памяти

TrueFFS использует механизмы, которые устраняют ограничения флэш-памяти, как те, которые проявились ещё в технологии SLC, так и те, которые в значительно более масштабной форме характерны для NAND-памяти с многоуровневой ячейкой. Далее представлено краткое описание этих механизмов.

Виртуальное динамическое распределение

Флэш-память организуется в физических блоках (также называемых стираемыми модулями), которые делятся на физические секторы (наименьшая область памяти в блоке чтения/записи). Стандартные файловые системные вызовы, определяющие количество секторов и цилиндров HDD, не могут быть использованы для доступа к данным во флэш-памяти.


Виртуальное динамическое распределение – это процесс преобразования модели HDD в ОС к физической модели флэш-диска (рис. 3). Такое преобразование обеспечивает высокую скорость доступа к данным. TrueFFS достигает этого кластеризацией связанных между собой данных, таких как секторы файла в одном блоке, и равномерным распределением по другим блокам несвязанных данных. Данный подход уменьшает фрагментацию и количество вызовов, необходимых для отображения различных физических блоков в окне памяти.

FTL (Flash Translation Layer) – это формат записи данных для стандартных промышленных флэш-дисков. Он даёт возможность эмулировать режим стандартного дискового накопителя отображением модели ОС на физическую модель флэш-диска, а именно физически определять, куда должны быть записаны данные. FTL позволяет использовать флэш-диски почти для любой файловой системы без изучения их внутренней структуры и уникального командного интерфейса.


Для эмуляции HDD стираемый модуль равномерно распределяется между равными по размеру блоками чтения/записи, которые имеют такой же размер, как секторы HDD (рис. 4).

Динамическое управление повреждёнными блоками

TrueFFS отслеживает все повреждённые блоки памяти, запоминает их расположение и не допускает их использования в последующих операциях. Это не только позволяет быть уверенным в целостности данных, но и увеличивает производительность, устраняя необходимость повтора операции записи.

Динамический и статический контроль уровня износа ячеек памяти

Количество циклов записи и стирания для каждого физического блока флэш-памяти ограничено. Этот предел падает с увеличением количества битов, содержащихся в одной ячейке: для флэш-памяти с одноуровневыми ячейками – это 100К циклов, с многоуровневыми ячейками – 10K циклов.

Для увеличения ресурса устройств флэш-памяти необходим механизм, который равномерно распределяет операции записи данных по всем ячейкам памяти.

TrueFFS использует два типа контроля износа ячеек памяти: динамический и статический.

Динамический контроль. TrueFFS использует статистическое распределение для вновь записываемых данных. Логические секторы динамически отображаются в любой доступный физический сектор в соответствии с данными статистики на текущий момент времени.

Статический контроль. Области флэш-памяти могут содержать статичные файлы, характеризуемые секторами данных, которые остаются неизменными на протяжении длительного периода времени. Если использовать контроль износа ячеек только для заново записываемых данных, то статичные области никогда не будут участвовать в этом процессе. Для устранения этого ограничения TrueFFS принудительно перемещает данные из статических областей в динамические.

Оптимизация алгоритмов стирания

В TrueFFS включены алгоритмы, позволяющие минимизировать число операций стирания и оптимизировать операции над директориями, а также запускающие механизм Garbage collection — удаление ненужных данных и переупорядочение блоков динамически распределяемой памяти, необходимой для дальнейшей работы. С помощью Garbage collection TrueFFS оптимизирует размещение данных подобно операции дефрагментации для HDD.

Обнаружение и коррекция ошибок

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

Сохранение данных при отказе питания

Для обеспечения целостности данных при нормальном режиме работы, а также в случае отказа питания TrueFFS использует алгоритм «стирание после записи» вместо алгоритма «стирание перед записью». Использованные области памяти очищаются только после того, как полностью завершатся операции стирания и обновления виртуальной карты флэш-памяти. Это позволяет поддерживать информацию о распределении данных по ячейкам памяти логически последовательной даже в случае отказа питания. В оперативной памяти размещается только актуальная на текущий момент времени таблица данных карты распределения информации. При повторном включении питания после отказа или после перезагрузки эта таблица восстанавливается из флэш-памяти.

Кроме того, если прерывание операции записи при отказе питания привело к повреждению сектора, такой сектор помечается и никогда не будет участвовать в записи данных. Это экономит программное время при последующих операциях записи.

Сохранение данных при отказе питания намного сложнее осуществить в многоуровневой памяти из-за парного соединения битов. Предыдущий удачно записанный бит может быть повреждён последующей операцией записи вследствие парного соединения битов. Все это усугубляется тем, что каждая многоуровневая флэш-память имеет свои собственные уникальные характеристики. Однако TrueFFS преодолевает и эти проблемы.

Обнаружение и отслеживание случайно распределённых дефектных блоков

При первой операции записи в блок TrueFFS считывает данные и проверяет этот блок на работоспособность. При последующих операциях записи в данный блок памяти адаптивные алгоритмы определяют статус этого блока как рабочий, основываясь на предыдущих операциях, что позволяет исключить необходимость новых проверок и повысить производительность.

Заключение

Флэш-память, созданная по технологии NAND, — это довольно непредсказуемый материал, и связанные с нею проблемы по мере увеличения плотности ячеек и уменьшения геометрии кристаллов от поколения к поколению всё более и более нарастают, усложняя её интеграцию и увеличивая материальные затраты. Эти обстоятельства затрудняют разработку решений, которые могли бы использовать все преимущества NAND, являющейся самой передовой технологией из всех представленных в настоящее время на рынке.

Программное обеспечение TrueFFS, разработанное в своё время компанией M-Systems, делает возможным для производителей оборудования использование созданной по технологии NAND флэш-памяти, устраняя все её основные недостатки. Сочетание современных средств управления памятью, включающее код обнаружения и исправления ошибки (EDC/ECC), автоматическое обнаружение и отслеживание случайно распределённых дефектных блоков, алгоритмы контроля уровня износа ячеек, увеличивает производительность, надёжность, срок эксплуатации, ускоряет разработку и процесс интеграции, уменьшает суммарные затраты.

В накопителях на твердотельных дисках SSD компании M-Systems (теперь уже компании SanDisk) на уровне единого, конструктивно завершённого модуля заложены современные средства и реализованы передовые методы управления флэш-памятью, что позволяет производителям оборудования рассчитывать на высочайшую степень надёжности и лёгкую интеграцию SSD во все новейшие приложения, требующие хранения больших объёмов памяти. ● 

Автор — сотрудник фирмы ПРОСОФТ
Телефон: (495) 234-0636
E-mail: info@prosoft.ru

1583 0
Комментарии
Рекомендуем

«ИнСАТ» ИНН 7734682230 erid = 2SDnjdsVbdM
«ИнСАТ» ИНН 7734682230 erid = 2SDnjeV5JPd