SSD и иже с ним

О твердотельных накопителях или Solid-State Drives (SSD) сегодня говорить модно.
Им прочат великое будущее и много чего ещё.
Но так ли хорош SSD, как его малюют?
Попробуем разобраться.

Несколько общих слов

Под аббревиатурой SSD скрывается выражение Solid-State Drive.
Как правило, перевод этого выражения звучит так: твердотельный накопитель.
Что же в нём такого «твёрдого»?
В отличие от привычных всем жёстких дисков, внутри SSD нет никаких движущихся частей.
Это приводит к уменьшению энергопотребления, нагрева и делает накопители невосприимчивыми к встряскам, ударам и т.п.
К тому же они совершенно бесшумны.

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

Сдайте ваши данные в ячейки 1F88-AE43

Краеугольным камнем любой флэш-памяти является ячейка (cell).
Ячейка по сути своей является транзистором с плавающим затвором.
Последний отличается от обычного транзистора (его устройство проходят в школьном курсе физики) наличием особой области, в которой электроны могут «задерживаться» на длительный срок — до 10 лет.
За счёт этого и происходит хранение информации.

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

SSD и иже с ним
Ячейка памяти

Следующим принципиальным отличием является тип ячейки по количеству хранимых данных.
Бывают Single Level Cell (SLC) и Multi Level Cell (MLC).
Первый тип позволяет хранить только один бит данных и работать с ним, второй — два и более бита.
Использование SLC позволяет достичь более высоких скоростей работы, но этот тип памяти дороже.
MLC, в свою очередь, медленнее и дешевле.
Причём этот параметр являются определяющим для конечной скорости всего накопителя: среднее время доступа к ячейкам MLC в 2 раза выше, чем к SLC.
Тип памяти всегда указывается производителем, поэтому можно легко сориентироваться.
Обратите внимание на то, что зачастую накопители на базе MLC могут оказаться даже медленнее традиционных HDD и стоить при этом намного дороже.

SSD и иже с ним
NOR-память
SSD и иже с ним
NAND-память

No speed limit

Итак, обычный флэш-накопитель и SSD работают на совершенно одинаковых физических элементах — ячейках памяти.
Откуда же получаются такие высокие скорости работы у SSD – до 230 Мбайт/с у Intel X25-M в режиме чтения.
Для сравнения, скорость чтения у WD Velociraptor в 2(!) раза меньше. Весь секрет заключается в том, что с ячейками памяти можно работать параллельно.

Представим себе такую ситуацию — необходимо считать файл, который занимает n условных блоков.
Для удобства примем, что размер блока одинаков для SSD и HDD (часто так и бывает).
Время доступа к блоку тоже будем считать одинаковым.
Как будет считывать данные жёсткий диск?
Его головка будет последовательно проходить блоки и читать с них информацию.

А что же SSD?
Твердотельный накопитель может работать с несколькими потоками информации сразу!
Можно представить утопическую в общем случае ситуацию, когда у SSD имеется n каналов.
Тогда вся необходимая информация будет считана за … время доступа к одному блоку!
За это же время HDD успеет прочесть только один блок.
Особенно сильно прирост заметен при одновременном считывании нескольких файлов.

Каждый блок NAND-памяти может работать на скоростях 5-40 МБайт/с.
Количество каналов в современных устройствах чаще всего лежит в пределах от 4 до 10.
Отсюда можно посчитать максимальную пропускную способность таких девайсов … до 400 МБайт/с, т.е. раза в 3-4 выше таковой для обычных HDD.
На практике же она не пересекает заветный порог в 250 МБайт/с (см. выше).

To be or not to be? Проблемы скорости записи

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

Это время жизни ячейки!
Дело в том, что каждая NAND-ячейка имеет очень ограниченный ресурс циклов перезаписи.
Как говорится — ничто не вечно в этом мире.
Типичное количество циклов для MLC-памяти равняется 10000.

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

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

Как быть в таком случае?
Ответ прост — по возможности записывать данные не поверх старых, а в ещё свободные страницы и блоки.
В результате вся (да-да, абсолютно вся!) информация оказывается равномерно «размазана» по всему накопителю.
Такой подход может несколько увеличить время доступа (не критично), но без него никак нельзя.
В противном случае некоторые блоки будут слишком быстро деградировать и вскоре «умрут».

Пока у вас заполнено меньше 50-60% всей ёмкости SSD, то проблем не возникает.
Что происходит при превышении этого порога?
Дело в том, что к этому моменту практически наверняка использованы уже все ячейки памяти, которые некогда были свободными.

Что же, приходится прибегать к вынужденной процедуре стирания (а заодно и старения) блоков.
Чем больше занятого пространства, тем больше приходится стирать блоков.
А это приводит к резкому ухудшению скорости записи и быстродействию накопителя в целом.
Иногда можно наблюдать спад скорости на 40%, а то и больше!
Это много, очень много.

Контроллер — всему голова!

Что же отвечает за работу столь сложной структуры данных?
Контроллер.
Именно он определяет, что и куда надо писать.
Он осведомлён о том, сколько циклов перезаписи прошла каждая ячейка.
Во многом именно от контроллера зависит суммарный срок жизни накопителя.
От него же зависят все скоростные показатели SSD.
На данный момент самые лучшие контроллеры производит Intel.

Не случайно первые нетбуки, в которых использовались якобы твердотельные накопители, показали крайне низкую производительность.
Формально-то конечно их можно было назвать SSD, но по сути это были просто флэшки или их объединение с помощью устройств, подобных тому, что изображено на рисунке ниже.
У них не было главного — грамотного контроллера.

SSD и иже с ним
NAND-память

Кое-что ещё

Однако проблема производительности происходила ещё и от самой ОС и файловой системы.
Вся линейка операционок до Windows Vista включительно была оптимизирована исключительно для работы на HDD.
Не секрет, что все эти ОС довольно активно общаются с диском даже во время простоя.
Первый пробный шаг по работе с SSD был реализован в виде функции ReadyBoost.
Седьмые «окошки» уже могут использовать твердотельные накопители в качестве основных, но верность этого утверждения пока под вопросом.

Ещё более глубокие причины скрыты в файловых системах — NTFS и FAT не «заточены» для минимизации реальных обращений к накопителю.
Единственное спасение пока находится в мире UNIX-систем.
На данный момент уже разработаны специальные ФС для флэш-дисков: JFFS2 и YAFFS.

Они уже используются в некоторых продуктах, например в OpenMoko NeoFreeRunner.
Неплохие перспективы имеет и ZFS от компании Sun.
Загвоздка же в том, что самая популярная ОС в мире не поддерживает эти ФС, тогда как представители UNIX-мира полностью готовы для перехода на SSD.
Единственная файловая система, которая может работать с Windows, это exFAT.
Но это не более чем костыль.

Общие итоги

Итак, сведём воедино все минусы и плюсы твердотельных накопителей, которые сегодня были рассмотрены.

Положительные качества SSD таковы:

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

А теперь посмотрим на минусы:

— малая ёмкость накопителей,
— высокая себестоимость 1 Гб,
— относительно малое время жизни накопителя,
— проблемы с чтением/записью при заполненном диске.

Как видите, твердотельные накопители обладают и достоинствами, и недостатками.
Есть ли резон бежать в магазин и в срочном порядке менять свой верный жёсткий диск на SSD?
Пока что нет.
Технология пока что не до конца отработана, да и цена сильно смущает.
Но в любом случае рано или поздно SSD (или их потомки) наверняка вытеснят классические винчестеры.
Произойдёт это нескоро.
Компромиссным решением может быть покупка гибридного накопителя, который содержит в себе и пластины, и кусочек SSD.

Напоследок приведу список фирм, которые производят накопители: A-Data, Adtron, Intel, Samsung, SanDisk, SimpleTech, SuperTalent и Transcend.
Крупных NAND-чипмейкеров гораздо меньше: Hynix, Intel, Micron, Numonyx, Samsung.

Автор: Игорь Осколков