Видео: YouTube
Продолжаем обсуждение дисковой подсистемы. На нынешнем этапе мы наблюдаем внедрение технологии твердотельных накопителей информации. Они с большой скоростью вытесняют традиционные накопители на основе вращающихся дисков. Тройка ведущих производителей Seagate, Toshiba и Western Digital за год суммарно продали несколько десятков миллионов устройств и при этом спад составляет от 10 до 25 процентов по сравнению с предыдущим годом. Это означает только то, что эта ниша заполняется устройствами на основе нового принципа работы. Это использование микросхем энергонезависимой флэш памяти в качестве носителя информации.
Так обычно описывают светлое будущее, но предлагаю перейти от оптимизма к реализму. Возможно, мы счастливы пока не ведаем. Если сказать современным языком, то мы о многом не догадываемся, поэтому довольно дружелюбно относимся к новым технологиям. Естественно, маловероятно, что кто-то из нас окажется в производственных лабораториях этих самых SSD накопителей и сможет узнать объективную картину, касающуюся влияния условий использования устройств на их надежность. Или если сказать просто, реальны ли цифры надежности накопителей и как нужно их использовать чтобы было как в рекламе.
В любом случае, часть информации из жизни SSD накопителей может вас заинтересовать.
Устройство SSD накопителя
Итак, микросхемы флэш памяти связаны с контроллером накопителя таким образом, чтобы считывать и записывать порции данных, называемые страницами. Размер страницы как правило 2, 4, 8 или 16 килобайт. Удаление информации на микросхеме происходит не по одной странице, а группой страниц, называемой блоком. Блок содержит 128 или 256 страниц, что в переводе на объем памяти составит от 256 килобайт до 4 мегабайт. Все зависит от конкретной модели накопителя и определяется все программой контроллера. Контроллер накопителя состоит из процессора, многоканального контроллера микросхем памяти и контроллера буфера.
Контроллер SSD накопителя использует память с произвольным доступом (RAM) для буферизации страниц данных. Это похоже на кэш процессора, только находится на устройстве и используется не такая быстрая память, как в кэш процессора. Вот так коротко можно описать устройство накопителя типа SSD.
В сравнении с накопителями на жестких дисках, SSD накопители бесшумны, довольно стойкие к ударным нагрузкам, имеют низкое энергопотребление и малые массу с габаритами. Это лишь небольшая часть достоинств новой технологии. Все что в состоянии испортить идеальную картинку это ограничения на количество циклов перезаписи страниц флэш памяти. Повышенное напряжение при записи информации постепенно разрушает транзисторы, выполненные по современным технологическим нормам. Если постоянно производить запись информации в одно и то же место, то очень скоро наступит деградация ячеек флэш памяти.
Основной функцией контроллера SSD накопителя является балансировка данных. Это запись поступающих на хранения данных в различные участки памяти с меньшим количеством уже совершенных ранее записей. Таким образом, наступление деградации одного конкретного участка памяти не наблюдается, все страницы накопителя стареют более-менее с одинаковой скоростью.
Это все, конечно, только теоретически. На практике все зависит от совершенства алгоритма балансировки. И если такой идеальный алгоритм был бы изобретен, то специалистам из AceLab не было бы нужды раз за разом производить обратный инжениринг прошивки контроллеров с целью установить логику размещения файлов пользователя на микросхемах. Обратный инжениринг в данном случае представляет собой изъятие машинных кодов процессора и перевод их в форму языка ассемблера для дальнейшего внимательного изучения.
Количество бит на ячейку
Как мы уже поняли, алгоритмы размещения данных на флэш накопителе еще не остановились в своем развитии, а значит еще проходят стадию экспериментов. Если быть еще точнее, экспериментов, участниками которого являемся мы с вами. Но по правде сказать, лучшего способа не найти. Только при длительной эксплуатации в разных условиях и накоплении достаточной статистики лабораторные исследования находят свое реальное подтверждение. Потребители изучают свой опыт и опыт других и на этом основанием голосуют деньгами в пользу того или иного улучшения. Эксперименты проходят еще над одной важной характеристикой. Это количество бит на одну ячейку памяти. Само собой, большое количество бит на ячейку приводит к более высокой плотности хранения бит информации на одной микросхеме. Однако, тут стоит разобраться к каким последствиям это приводит.
SLC
Первоначальная технология хранения предусматривала один бит на ячейку и называется она SLC. Или ячейка с одним уровнем. Вернее сказать с одной границей между логическим нулем и единицей.
Считывающее устройство по уровню напряжения запертого в ячейке заряда определяет какой бит в ней хранится. Достаточно сравнить уровень напряжения с одним порогом. Необходимо отметить, что такая технология несмотря на относительно низкую плотность хранения бит в производстве обходится довольно дешево, имеет низкую задержку на чтение и запись информации. Количество циклов записи в память при такой технологии довольно велико и на текущий момент заявляется число до ста тысяч записей. Как мы уже понимаем, на этом инженерная мысль не остановилась.
MLC
На следующем этапе производители микросхем перешли на технологию хранения информации с несколькими порогами количества заряда, что делает возможным хранения нескольких бит информации на одном транзисторе. Разумеется, при этом необходимо иметь более сложную систему записи и чтения информации, способную формировать корректное напряжение записи и принимать решения при нескольких порогах. Такая технология называется MLC.
Множественный в этом случае означает четыре уровня напряжения. Столько уровней позволяет хранить два бита в одной ячейке памяти. Очевидным плюсом является увеличение плотности хранения информации, но при это появляется целый ряд ухудшений параметров. Несомненно стоимость таких микросхем повысилась, время доступа к данным увеличено и самое главное это при еще меньшей чем раньше толщине полупроводников разрушающее действие записывающего напряжения стало выше. А это означает значительное снижение циклов записи в такие микросхемы. По заявлению производителей сейчас это до десяти тысяч циклов.
TLC
Спустя каких-то пять лет уже представлена технология с еще более увеличенным количеством порогов уровня запертого заряда. Восемь уровней позволяет записывать три бита на одну ячейку. Такая технология была названа TLC.
Увеличение плотности хранения увеличилось, но и объявленные ранее недостатки проявляют себя еще больше. По заявлению производителей количество циклов записи теперь не превышает пять тысяч. Большой объем для хранения данных а точнее незанятая его часть положительным образом сказывается на возможностях балансировщика. Чем дольше можно размазывать данные по всем страницам тем дольше будет служить накопитель. Так что
не забивайте пространство ненужным хламом, держите больше свободного места.
Время доступа к данным еще больше увеличилось. А вот это уже натолкнуло на еще одно улучшение. Если часть пространства определить не как TLC, а как память с одним битом на ячейку, то можно использовать довольно быструю процедуру чтения и записи данных.
Такая выделенная область диска может быть использована как кэш область. Она, конечно, не быстрее, чем память буфера, но может быть гораздо объемнее. таким образом, ее можно считать кэшем второго уровня.
Про технология QLC уже не будем упоминать. Это дальнейшее увеличение числа хранимых бит на ячейку памяти.
Расширенный режим чтения
Это все очень похоже на быстрые шаги научно-технического прогресса. Мы как потребители получаем постоянное улучшение характеристик накопителей, но анализ прошивок контроллеров позволяет судить о постепенно накапливающихся костылях. Вкратце дело вот в чем, на работу устройства, дозирующего уровень записывающего напряжения очень сильно влияет температура.
В мире нанометров это особенно критично. Количество запертого в транзисторах заряда при одной и той же бытовой комбинации будет различно если температура изменится, например, от 30 до 70 градусов тепла. Вот представьте, как непросто теперь считывающему устройству. Сейчас мы поймем, почему время доступа к данным увеличивается. Для предотвращения ошибок чтения страница данных снабжается дополнительной порцией информации, где содержатся проверочная часть. Если говорить просто, то биты в странице данных являются участниками проверки на четность. Если количество единиц четно, то в проверочной части выставляется бит четности. Но все это в в сложной взаимосвязи, позволяющей не только диагностировать ошибку чтения, но и при достаточно низком количестве ошибочных бит еще и исправить ошибку.
Так вот при смещении количества запертого заряда в ту или иную сторону от нормы появляется огромное количество ошибочных бит. В любом случае, если корректирующая способность проверочной части недостаточна, то чтение данных невозможно.
Но тут на помощь поднесли костыли. Это так называемый расширенный режим чтения. Если удачно подобрать «подгоночные» коэффициенты и подвигать пороги в некоторой окрестности, то проверочная часть страницы данных поможет справиться с ошибками обычным способом. Думаю, не стоит говорить, что это увеличивает время доступа к данным.
В заключении хочется сказать, что пока костыли не вылезли из коробочки они все еще будут научно-техническим прогрессом. Пока это нас не касается лично все хорошо, а уж тем более все будет замечательно если имеется привычка почаще делать резервные копии ваших данных.