Привет, 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 лет.

Комментарии (39)


  1. invekc
    14.04.2016 14:46
    +1

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


  1. viktorivanov11
    14.04.2016 17:56

    У вас все интереснее и интереснее. Так держать!


  1. dmitryrodionof
    14.04.2016 17:56
    +1

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


  1. leek
    14.04.2016 17:56
    +1

    Мне кажется производители накопителей нарочно держат планку высокого гига на SSD, чтобы выжать все соки из обычных винтов. Хотя это всего лишь мое мнение.


    1. Retifff
      15.04.2016 11:37
      +1

      Ну, учитывая, что производители SSD в большинстве своем довольно слабо связаны с производством обычных винчестеров (производят какие-то микросхемы наверно, но вряд ли это основная статья дохода), а связаны скорее с производством оперативной памяти, мне кажется, что вы ошибаетесь. Скорее всего они стремятся «выжать все соки» из новой технологии и получить максимальные прибыли.


  1. alexkiprov13
    14.04.2016 17:56

    Интересно, спасибо! Полагаю в Trion 150 поставили контроллер от тошибы вместо бейрфут чтобы снизить стоимость накопителя


    1. loly_girl
      15.04.2016 18:28

      Там фисон перемаркированный.


  1. Tagat
    14.04.2016 17:57

    Интересно, а нельзя ли достичь скоростей SSD на обычных магнитных дисках? Использовать не одну считывающую-записывающую головку, а десятки (или сотни?) неподвижных? Расположить их на «мосту» от центра диска до края в шахматном порядке, чтобы перекрыть все дорожки и исключить потери времени на позиционирование? Использовать для такого «моста» технологии выращивания кристаллов для процессоров, чтобы получить считывающие-записывающие головки требуемых размеров? Возможно ли такое воплотить с помощью современных технологий миниатюризации?


    1. DagothNik
      14.04.2016 19:21

      Тут как с троллейбусом из буханки. "… Но зачем?"


    1. Moog_Prodigy
      14.04.2016 20:02
      +1

      Головки современных HDD и так делают при помощи фотолитографии — как микросхемы. А выгода от параллелизма головок теряется, начиная от числа головок >2. Имеется в виду 2 блока головок на разных сторонах диска.


      1. Mad__Max
        16.04.2016 01:35

        Ну в предлагаемом (чисто теоретическом) варианте выигрыш был бы и существенный. Tagat же предлагал накрыть неподвижными головками вообще все дорожки разом. (как разница между лазерными и светодиодным принтерами)
        В результате бы поимели:
        — сокращение времени поиска до 0 (т.к. двигать головки в поисках нужной вообще не нужно — достаточно электронике выбрать нужную из массива, какая будет считывать), осталось бы только время задержки равное в среднем половине оборота диска. Что равно минимум двукратному увеличение скорости со случайным доступом
        — при нормальной реализации алгоритма read ahead (который и так в дисках имеется, нужно только модифицировать), кратный рост скорости линейного чтения — при запросе какого-то куска данных, можно заранее сразу читать следующие дорожки идущие за считываемой другими головками и потом отдавать эти данные уже из буфера(кэша). Ну а если не понадобится(алгоритм ошибся) — просто выкинем из кэша эти данные.
        — полную ликвидацию шума от головок при поиске данных (знаменитый треск/хруст головок)
        — снижение энергопотребления и нагрева — при активной работе, на привод головок довольно существенная часть энергии уходит
        — упрощение механической части диска и повышение надежности

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


    1. VaalKIA
      15.04.2016 21:56

      Если проводить аналогию с оптическими дисками, в которых штраф на перемещение головки ещё больше чем у винчестеров, то вот: http://www.ixbt.com/storage/kenwood-truex.html
      Не взлетело, потому что это всего-лишь костыли и проблему, де факто — не решают.


  1. CooLeroff
    14.04.2016 17:57
    +1

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

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


    1. abstracto
      14.04.2016 18:32

      разница в стоимости завода по производству. и эта стоимость высока. часть цены по созданию производственной линии включено в стоимость чипа и пока чипы не окупят стоимость завода, никто снижать цену не будет (если не фактор конкуренции). заводы по производству HDD окупили себя уже 10 раз, а заводы по SSD скорее всего ещё нет. как эти деньги вернутся, так они начнут более охотно снижать цену.
      P.S. я использую слово завод как некоторую условность, а не как реальное производственное помещение.


    1. vorphalack
      15.04.2016 03:18
      +3

      «инертным газом» заполняются только новомодные гелиевые диски, в остальных просто обеспыленый воздух, который через хитрый воздуховод(а то и просто дырку с фильтром) сообщается с окружающей средой с целью выравнивания давления


    1. SchmeL
      15.04.2016 14:48

      Как написали выше, есть отлаженные десятилетиями бизнес процессы, конвейеры и станки, что позволило отбить инвестиции на производственные мощности. SSD тоже будет снижаться в цене, но со временем. Первые 3.5 HDD тоже были дорогими.


  1. Carry
    14.04.2016 18:42

    Интересен вопрос с надежностью (ходя слухи что плохо).
    Могу ли я записать видео с фотками и положить в шкаф на пару-тройку лет?
    CD/DVD-R стираются, давно перешел на жесткие диски. С ними от лежания в шкафу пока ничего не произошло.
    Я не готов, и нет знакомых кто бы пробовал так сделать с современными объемными SSD.


    1. a5b
      14.04.2016 19:09
      +1

      слухи что плохо

      Пост geektimes ("все плохо") — https://geektimes.ru/post/250406/ "Отключённый промышленный твердотельник может потерять данные за неделю" (atomlib, Редактор Geektimes, 14 мая 2015 в 21:22), по альтернативной интерпретации некоторых слайдов презентации
      http://web.archive.org/web/20141031164835/http://www.jedec.org/sites/default/files/Alvin_Cox%20%5BCompatibility%20Mode%5D_0.pdf


      PCWorld с пояснениями от автора (Alwin Cox, Элвин Кокс) той презентации
      http://www.pcworld.com/article/2925173/debunked-your-ssd-wont-lose-data-if-left-unplugged-after-all.html — слайды показывают что будет с SSD после его износа и хранении после этого при повышенных температурах:


      It was intended to help data center and enterprise customers understand what could happen to an SSD—but only after it had reached the end of its useful life span and was then stored at abnormal temperatures. It’s not intended to be applied to an SSD in the prime of its life in either an enterprise or a consumer setting.…
      Even a worn-out SSD would still go a year without data loss, according to the original presentation, and that’s while being stored at 87 degrees Fahreneit the entire time.…
      Smith and Cox said the intent of the original presentation was to illustrate a worst-case scenario. What if the truck with the SSDs from the data center broke down, in the Arizona desert in July, on the way to the archiving center?


    1. Sleepwalker_ua
      14.04.2016 22:25

      чем крупнее техпроцесс, тем меньшее влияние оказывают температуры, ЭМИ и прочие лежания на полке.
      Хотя в принципе и современный SSDшник может в прохладном шкафу пролежать несколько месяцев с минимальным риском потери данных. ПОтом нужно будет его подключить, конечно, чтоб он поработал некоторое время, и можно обратно на полку.


  1. Dmis
    14.04.2016 20:32
    +1

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


    1. Vilgelm
      15.04.2016 01:06

      Небольших объемов они не очень уж и дорогие, под систему поставить можно (даже нужно, низкая производительность hdd сводит на нет производительность остального железа). А хранить данные на ssd не вижу смысла, для этого hdd есть.


    1. Jump
      15.04.2016 03:35
      +1

      Цена уже нормальная и доступная, особенно после скачка доллара, когда HDD подорожали вслед за долларом, а цена SSD практически не изменилась.
      Ну и надо понимать что далеко не для всех дисков важен быстрый доступ и куча IOPS, поэтому в большинстве случаев нужен небольшой SSD под горячие данные — система, файл подкачки, профили пользователей, БД.
      А остальные данные которые больше хранят, чем работают с ними вполне неплохо размещаются на HDD.

      Современный SSD под систему размером 120-240Гб стоит 4-10тыс, вполне доступно рядовому пользователю.
      И сейчас уже можно говорить о массовом замещении.


      1. maldalik
        15.04.2016 06:58

        Только вы забываете что к этому доступному диску за 4 тыс большинству все равно придется придется докупать жесткий диск.
        И эти 4 тыс вы заплатите по сути за то, что б у вас система грузилась на минуту быстрее. Да и файлы подкачки и БД, вроде как противопоказаны SSD дискам,.Так как там идет постоянная перезапись данных…
        По мне так я найду более приличное приложение таким деньгам.


        1. Ilyasyakubov
          15.04.2016 14:53

          вы утрируете. не только система грузится быстрее, но и все остальное работает значительно быстрее, особенно это заметно на тяжелых приложениях типа браузера или photoshop


          1. maldalik
            18.04.2016 07:55

            Хм, браузер стал уже тяжелым приложением??? А насчет фотошопа, да тут верю что будет быстрее, но многие ли реально работают с фотошопом? Что б его так загрузить.


            1. Sleepwalker_ua
              19.04.2016 00:43

              эннадцать вкладок с Javascript (тут все зависит от объемов кода, конечно) ставят в тупик даже современную офисную машинку, однако. А если в фоне крутится еще что-то, работающее с диском (торрент, например), а оперативки немного, то серфинг превращается в лагающее издевательство над собственными нервами.
              Ну а еще просто бывают страницы, которые весят по 100-200 метров…


  1. sweetbrick
    14.04.2016 22:29

    «чтобы заставить ждать CPU» — так CPU к диску вроде как не обращается.
    Адресное пространство процесса отображается на страницы по 64кб, и поддержание актуальности в памяти их кэша лежит на ос, равно как и кэширование чтения/записи диска.
    Поправьте, если ошибаюсь.


    1. Jump
      15.04.2016 03:40

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


      1. sweetbrick
        15.04.2016 10:10

        Конечно. Принципиальное значение ssd исключение задержек доступа к записи в блочном устройстве -диске.
        Правильнее было сказать, не cpu, а программа ожидает.


    1. Nubus
      15.04.2016 05:39

      Не все можно загрузить в DDR (даже сейчас) и некоторые активные приложения ждут именно диска. Вспомнить загрузку уровней в играх или сохранение большого макета в 3d приложении. Сейчас это занимает намного меньшее время даже для HDD чем во времена 200х когда 80ГБ диски с 7200 оборотов были в новинку, или за 80 проводными IDE коннекторами охотились :)


      1. sweetbrick
        15.04.2016 10:33

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


  1. Sergey_datex
    14.04.2016 23:04
    +1

    Почти все правильно, только у MLC ресурс 10к только у первых поколений был, а те на которых построены массовые SSD — 2-3-5к, чаще 3.
    У TLC соответственно 5к вы не найдете никогда, чаще 500-1000 циклов.


    1. Jump
      15.04.2016 03:44

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


  1. anushirvan
    15.04.2016 11:37
    +1

    Производители заявляют о ресурсе перезаписей для MLC, например, 3000 циклов. Для ssd объемом 480GB это 1440TB. Но гарантия при этом дается только на 72TBW. Вопрос вот в чем, эти 72TB включают в себя «усиление записи»? В программе CrystalDiskInfo у меня отображается 23TB хост записей на диск. Усиление записи включено в эти 23TB?


    1. Mad__Max
      15.04.2016 21:15
      +1

      Смотря что там конкретно написано. Host Writes обычно НЕ включают усиление записи, а показывает сколько всего данных подлежащих записи получил контроллер снаружи (от ОС).
      Бывает в Смарт параметрах еще указывается total NAND writes — этот показатель уже включает все. А поделив одно на другое можно как раз получить «коэффициент усиления».

      Часто он не обозначен, и в одной из «vendor specific» или reserved полей сидит. У Kingston например в атрибуте №233 (или E9 в HEX) записано.


  1. black_semargl
    18.04.2016 10:34

    А вот интересно, нельзя ли сделать такой контроллер, который бы поддерживал деградацию типа записи в ячейки TLC -> MLC -> SLC?
    Ведь как понимаю, проблема в том, что схема перестаёт надёжно различать различия в уровнях напряжения в ячейке.
    Вот тут бы и уменьшить их количество…


    1. Moog_Prodigy
      19.04.2016 16:42

      Думаю, можно. Этакий ExSMART. Но боюсь, невыгодно производителям. Если такой диск выпустят, многие озадачатся вопросом — «О! А что, так можно было?» и вспомнят гигабайты невовремя пропавших данных…


    1. Mad__Max
      19.04.2016 20:23

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


    1. loly_girl
      20.04.2016 00:28

      Фисоновские (и не только) контроллеры так делают с MLC. Часть памяти отводится под псевдо-SLC-кэш, а когда место заканчивается, то ячейки переводятся обратно в MLC-режим.