Прощайте, считывающие головки! Или как работает флэш-память

Привет, Geektimes! Мы часто рассказываем о преимуществах SSD, развенчиваем мифы о твердотельных накопителях, вот недавно даже на производстве побывали. А как же, собственно, работает флэш-память? В чем отличие между разными типами NAND? Всех желающих разобраться в этих вопросах милости просим под кат.

Прощайте, считывающие головки! Или как работает флэш-память

Взгляд в прошлое

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

Поскольку блок головок диска должен совпадать с определенной областью (дорожкой) для считывания или записи данных, а диск вращается постоянно, необходимо некоторое время, прежде чем они смогут получить доступ к информации, и нужный сектор окажется под головкой, особенно если запросы хаотичны. И хотя задержка у HDD измеряется в миллисекундах, этого достаточно, чтобы заставить ждать CPU, задержка которого измеряется в наносекундах. В одной миллисекунде один миллион наносекунд, а в среднем жесткому диску необходимо от 10 до 15 миллисекунд для поиска информации и начало ее чтения. Да, сейчас есть решения, скорость вращения которых достигает 15 тысяч оборотов в минуту, но даже самый быстрый HDD не будет настолько быстрым, как хотелось бы.

Немного теории

Возможно, так бы мы с вами и довольствовались «очень» быстрыми HDD (как говорил Генри Форд: «если бы я спросил у людей, что они хотят, они бы попросили меня создать быстрых лошадей»), однако производители накопителей, среди которых и ваш покорный слуга, благо не стоят на месте. Появились SSD (Solid-state drives или твердотельные накопители), где информация хранится не на вращающихся дисках, а при помощи флэш-памяти NAND. На ней мы и остановимся подробно.

В случае с NAND информация хранится в массиве ячеек памяти — это транзисторы с плавающим затвором (Floating Gate). В зависимости от направления напряжения происходит перемещение электронов между Control Gate (управляющим затвором) и каналом NAND.

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

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

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

Ячейка с двумя транзисторами представляет собой модификацию однотранзисторной. В этом случае транзистор (обычный) изолирует битовую линию от транзистора с плавающим затвором.

Удаление заряда с плавающего затвора происходит при помощи подачи отрицательного напряжения на управляющий затвор (на исток — положительное напряжение). В результате имеем туннелирование Фаулера — Нордхейма: электроны перемещаются (туннелируют) из области плавающего затвора в исток.

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

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

Очевидно, отсутствие движущихся дисков (да и вообще подвижных частей) — одно из главных преимуществ SSD над жесткими дисками, и именно это дает твердотельным накопителям работать на скоростях, заметно превосходящих HDD. Для наглядности — вот сводная таблица по времени задержки различных типов NAND и HDD.

SLC, MLC, TLC — не просто аббревиатуры, они обозначают количество бит в каждой ячейке. Для SLC (Single) это один бит, для MLC (Multi) — два бита, для TLC (Triple) — соответственно, три бита. За счет этого MLC хранит в два раза больше информации, чем SLC, и это при том, что количество ячеек то же самое. В целом, принцип работы у этих типов NAND одинаковый, что нельзя сказать о выносливости.

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

SLC, MLC и TLC отличаются по выносливости. Если, к примеру, взять кристалл NAND плотностью 16 Гбит, получим SLC 16 Гбит при том, что в каждой ячейке один бит. Соответственно, для MLC это будет 32 Гбит, а для TLC — 48 Гбит. Правда, в последнем случае кристалл NAND все равно приходится резать, в итоге получается эквивалент 32 Гбит у MLC. Кто же по-вашему способен выдержаться самые большие изменения в напряжении?

С двумя уровнями (0,1) у SLC по этому параметру самый лучший показатель — этот тип NAND выдерживает широкий диапазон колебаний напряжения. С увеличением уровней этот диапазон уменьшается, поэтому у TLC с ее 8 уровнями и 3 битами в ячейке самое малое количество циклов перезаписи.

Поскольку с уменьшением кристалла уже давно возникли проблемы, на смену современной планарной флеш-памяти NAND приходит 3D NAND. Она меньше подвержена износу за счет отсутствия необходимости в подаче высокого напряжения при записи данных в ячейку. Производители активно развивают данное направление и дают технологии собственные названия (у Samsung — 3D V-NAND, у Toshiba — BiCS 3D NAND и так далее). Смысл в том, что в этом случае мы получаем цилиндр с верхним слоем в роли управляющего затвора, при этом внутренний слой выполняет роль изолятора. Сами Ячейки располагаются друг под другом, образуя стек. Управляющая логика размещается под массивом памяти, освобождается площадь чипа, где впоследствии находят себе «дом» ячейки памяти.

Немного практики

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

OCZ Trion 150

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

Контроллер распределяет запись в ячейки флеш-памяти, «руководит» чтение из ячеек памяти и TRIM (об этом чуть позже) — в общем, фраза «незаменимых у нас нет» — это не про него. Именно он контролирует передачу данных, как на SATA, так и на PCIe, распределяет информацию по NAND для меньшего износа. Без помощи прошивки, разумеется, здесь не обойтись.

К флэш-памяти контроллер подключается параллельно и, как видите, выполняет одну из ключевых ролей. В Trion 150, например, используется контроллер Toshiba, а в Vertex 460A 0 уже Barefoot 3 M10 от OCZ.

Ах да, чуть не забыли про кэш. Он является надежным спутником контроллера: как только дается команда изменить файл на SSD, блок сперва попадает в память кэша, где и происходит изменение. В это время неактуальные данные в NAND удаляются, а контроллер находит, куда же поместить информацию, которая была помещена в буфер. Главный принцип — выбрать ячейку с наименьшим износом, чем и занимается контроллер, после его команды измененные данные отправляются в новый «дом».

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

Минутка философии

Очевидно, по сравнению с обычными жесткими дисками NAND — настоящий прорыв, но и у нее есть свои проблемы и недостатки. Да, NAND имеет огромные перспективы в плане емкости накопителей, однако цена за гигабайт оставляет желать лучшего. Вряд ли в ближайшее время по этому параметру удастся «поймать» жесткие диски.

За счет использования SLC-кэшей и быстрых стандартов данных SSD стали еще более производительными, имеют хорошую пропускную способность. Тем не менее в долгосрочной перспективе предполагается, что на смену NAND все же придет что-то другое. И на самом деле, 3D NAND — первый «звоночек», который об этом свидетельствует.

Сейчас NAND, безусловно, на коне — как говорят, true king of the hill. И останется этим королем как минимум ближайшие 4-5 лет.

Источник

OCZ, флэш-память

Читайте также