Меню

Ssd способ хранения информации

Анатомия накопителей: SSD

Твёрдый, как камень

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

Первые шаги на этом пути были сделаны компанией Toshiba, предложившей в 1980 году концепцию флеш-памяти. Четыре года спустя она создала NOR-память, а в 1987 году — NAND-память. Первый коммерческий накопитель с использованием флеш-памяти (solid state drive, или SSD) был выпущен SunDisk (позже переименованной в SanDisk) в 1991 году.

Большинство людей начало своё знакомство с твердотельными накопителями с так называемых USB-флешек. Даже сегодня их структура в целом напоминает конструкцию большинства SSD.

Слева показан один чип NAND-памяти SanDisk. Как и SRAM, он используется в кэшах ЦП и GPU. Он заполнен миллионами «ячеек», созданных из модифицированных транзисторов с плавающим затвором. В них используется высокое напряжение для записи и стирания заряда в отдельных участках транзистора. При считывании ячейки на участок подается пониженное напряжение.

Если ячейка не заряжена, то при подаче пониженного напряжения ток течёт. Это даёт системе понять, что ячейка имеет состояние 0; в противоположном случае она имеет состояние 1 (т.е. при подаче напряжения ток не течёт). Благодаря этому чтение из NAND-памяти выполняется очень быстро, но запись и удаление данных не так быстры.

Самые лучшие ячейки памяти, называаемые одноуровневыми ячейками (single level cells, SLC), имеют только одну величину заряда, создаваемого на участке транзистора; однако существуют и ячейки памяти, способные иметь несколько уровней заряда. В общем случае всех их называют многоуровневыми ячейками (multi-level cells, MLC), но в отрасли производства NAND-памяти аббревиатурой MLC обозначают 4 уровня заряда. Другие типы имеют похожие названия: трёхуровневые (triple level, TLC) и четырёхуровневые (quad level, QLC) имеют, соответственно, 8 и 16 различных уровней заряда.

Это влияет на то, сколько данных можно хранить в каждой ячейке:

  • SLC — 1 уровень = 1 бит
  • MLC — 4 уровня = 2 бита
  • TLC — 8 уровней = 3 бита
  • QLC — 16 уровней = 4 бита

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

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

Эту функцию контролирует управляющий чип, показанный справа. Ещё он выполняет те же задачи, что и чип LSI, используемый в HDD. Однако в приводах с вращающимися дисками есть отдельные чипы для DRAM-кэша и встроенного ПО Serial Flash, а в USB-флешке оба контроллера встроены. И поскольку они проектируются так, чтобы быть дешёвыми, особой функциональности вы от них не получите.

Но благодаря отсутствию подвижных частей можно с уверенностью ожидать, что производительность флеш-памяти будет выше, чем у HDD. Давайте посмотрим на показатели с помощью CrystalDiskMark:

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

Однако у этого теста есть ещё одна незаметная особенность. Тест USB-памяти обеспечивает подключение только по стандарту USB 2.0, который имеет максимальную скорость передачи всего 60 МБ/с, а HDD использовал порт SATA 3.3, обеспечивающий пропускную способность в 10 раз больше. К тому же использованная технология флеш-памяти довольно проста: ячейки имеют тип TLC и выстроены в длинные параллельные полосы; такая компоновка называется плоской (planar) или двухмерной (2D).

Флеш-память, используемая в лучших современных SSD, имеет тип SLC или MLC, то есть она работает чуть быстрее и изнашивается чуть медленнее, а полосы согнуты пополам и выстроены стоймя, образуя вертикальную или трёхмерную структуру ячеек. Также в них используется интерфейс SATA 3.0, хотя всё чаще применяется более быстрая система PCI Express через интерфейс NVMe.

Давайте взглянем на один такой пример: Samsung 850 Pro, в котором использованы эти хитрости с вертикальным расположением.

В отличие от тяжёлого 3,5-дюймового привода Seagate, этот SSD имеет размер всего 2,5 дюйма и намного тоньше и легче.

Откроем его (спасибо Samsung за использование таких дешёвых болтов Torx, которые чуть не развалились при демонтаже. ) и увидим, почему:

В нём почти ничего нет!

Читайте также:  Способы эффективного управления муниципальной собственностью

Ни дисков, ни рычагов, ни магнитов — просто одна печатная плата, состоящая из нескольких чипов.

Так что же мы тут видим? Небольшие чёрные чипы — это регуляторы напряжения, а остальные выполняют следующие функции:

  • Samsung S4LN045X01-8030: трёхъядерный процессор на основе ARM Cortex R4, занимающийся обработкой инструкций, данными, коррекцией ошибок, шифрованием и управлением износом
  • Samsung K4P4G324EQ-FGC2: 512 МБ памяти DDR2 SDRAM, используемой для кэша
  • Samsung K9PRGY8S7M: каждый чип — это 64 ГБ 32-слойной вертикальной флеш-памяти NAND типа MLC (в сумме 4 чипа, два расположены на другой стороне платы)

У нас есть 2-битные ячейки флеш-памяти, несколько чипов памяти и много кэша, что должно обеспечить повышенную производительность. Почему? Вспомним, что запись данных во флеш-память — довольно медленный процесс, но наличие нескольких флеш-чипов позволяет выполнять запись параллельно. У USB-флешки нет много DRAM для хранения данных, готовых к записи, поэтому отдельный чип тоже в этом поможет. Вернёмся в CrystalDiskMark…

Улучшение оказалось огромным. Скорость и чтения, и записи стала значительно выше, а задержки намного меньше. Что ещё нужно для счастья? Меньше и легче, нет подвижных деталей; к тому же SSD потребляют меньше энергии, чем механические дисковые накопители.

Разумеется, за все эти преимущества имеют свою цену, и здесь слово «цена» используется в буквальном смысле: вы же помните, что за 350 долларов можно купить HDD на 14 ТБ? Если брать SSD, то за эту сумму удастся приобрести только 1 или 2 ТБ. Если вы хотите накопитель такого же уровня, то пока лучшее, что вы можете сделать — это потратить 4 300 долларов на один SSD корпоративного уровня ёмкостью 15,36 ТБ!

Некоторые производители изготавливали гибридные HDD — стандартные жёсткие диски, на печатных платах которых было размещено немного флеш-памяти; она используется для хранения данных на дисках, к которым часто осуществляется доступ. Ниже показана плата из гибридного накопителя Samsung ёмкостью 1 ТБ (иногда называемого SSHD).

В правом верхнем углу платы находятся чип NAND и его контроллер. Всё остальное примерно такое же, как и в модели Seagate, которую мы рассматривали в предыдущем посте.

Мы можем в последний раз воспользоваться CrystalDiskMark, чтобы посмотреть, есть ли какая-то ощутимая выгода от использования флеш-памяти в качестве кэша, но сравнение будет нечестным, так как диски этого накопителя вращаются со скоростью 7200 rpm (а у HDD WD, который мы использовали для аутопсии — всего с 5400 rpm):

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

Несмотря на это, более качественное тестирование показало улучшение производительности HDD с встроенным SSD. Однако дешёвая флеш-память, скорее всего, выйдет из строя намного быстрее, чем качественный HDD, поэтому гибридные накопители, вероятно, не стоят нашего внимания — индустрия производства накопителей гораздо сильнее заинтересована в SSD.

Прежде чем мы двинемся дальше, стоит упомянуть, что флеш-память — не единственная технология, используемая в твёрдотельных накопителях. Intel и Micron совместно изобрели систему под названием 3D XPoint. Вместо записи и стирания зарядов зарядов в ячейках для создания состояний 0 и 1, для генерации битов в этой системе ячейки изменяют своё электрическое сопротивление.

Intel рекламировала эту новую память под брендом Optane, и когда мы протестировали её, производительность оказалась выдающейся. Как и цена системы, но в плохом смысле. Накопитель Optane всего на 1 ТБ сегодня стоит более 1 200 долларов — в четыре раза больше, чем SSD такого же объёма на основе флеш-памяти.

Третьим и последним накопителем, который мы исследуем в следующей статье, будут оптические приводы.

Источник

Твердотельные накопители. Внутреннее устройство и принципы их построения

Наши клиенты часто интересуются внутренним устройством твердотельных накопителей. Чем определяется надежность накопителей? Почему нельзя хранить важные данные на флешках, и бывают ли надежные флешки? Зачем в контроллеры SSD-накопителей ставят многоядерные процессоры? Почему флешки больших объемов пишут быстро, а малых объемов медленно? Многие вопросы требуют длительного погружения в тему, а некоторые отпадают сами собой после небольшого ликбеза по внутреннему устройству твердотельных накопителей, о том и пойдет речь.

USB-флеш-накопитель, карта памяти microSD/SD, SSD-накопитель представляют собой, на первый взгляд, разные устройства, хотя на самом деле являются «близкими родственниками». Все три типа устройств относятся к твердотельным накопителям на основе NAND флеш-памяти. Забавный факт, именуемые в быту «SSD-диски» не являются дисками в прямом смысле. Название «диск» исторически унаследовано от жестких магнитных дисков (Hard Disk Drive — HDD).

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

В состав твердотельных накопителей входят:

  • Контроллер – основной элемент твердотельного накопителя, выполняющий функции чтения, записи, контроля целостности данных и исправления битовых ошибок, возникающих в структуре NAND флеш-памяти. С одной стороны, контроллер подключается к хосту через внешний интерфейс SATA / USB / SD / PCIe, с другой – к микросхемам NAND флеш-памяти через интерфейс подключения ONFI / Toggle
  • NAND флеш-память – массив микросхем, формирующих объем памяти накопителя
Читайте также:  Что значит флаговый способ

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

NAND флеш-память

Микросхема NAND флеш-памяти – хранилище для информации пользователя (фотографии, фильмы, документы, системные файлы операционной системы и т.п.).

Остановимся на вопросах интерфейса доступа к данным и актуальных для твердотельных накопителей проблемах сохранности информации в NAND флеш-памяти.

Микросхему NAND флеш-памяти можно сравнить с архивом бумажных документов. Наподобие того, как бумаги хранятся в архиве, также электронные документы хранятся в памяти микросхем.

Важнейшими функциями любой системы хранения данных и архива являются:

  • Хранение данных — архив должен иметь условия, обеспечивающие сохранность бумаг
  • Доступ к информации — библиотекарь должен иметь возможность поработать с нужным документом, иначе архив бесполезен

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

Однако система хранения данных во флеш-памяти имеет следующие особенности:

  1. Заряд с затвора способен «утекать» со временем, что рано или поздно приведет к изменению данных. Например, как чернила на архивных бумагах со временем выцветают или растекаются, превращаясь в неразборчивые пятна. Чем дольше хранятся данные, тем меньше вероятность их потом прочитать.
  2. После записи одними и теми же цепями одинакового логического уровня заряда в разные ячейки из-за технологического разброса параметров транзисторов появится вероятность прочитать оттуда разные по величине значения заряда. (Бумага может иметь разные свойства впитывания и растекания чернил. Мелкий текст, написанный фломастером, не на каждой бумаге удастся прочитать.)
  3. Цепи записи и чтения заряда также не идеальны и имеют технологический разброс уровней напряжения программирования и порогов чтения логических уровней. (Похоже на то, как на бумажных носителях разные библиотекари по-разному могут разобрать текст, записанный разными авторами, потому что почерк у всех разный.)

Целью технологии разработки микросхем памяти является создание флеш-памяти с максимальным соотношением «качество/цена». Для хранения данных в накопителях
NAND флеш-память является весьма достойным решением по этому соотношению, о чем говорит рост рынка накопителей. Но соотношение «качество/цена» не то же самое, что «качество». От площади кристалла микросхемы прямым образом зависит стоимость микросхемы. Поэтому производители флеш-памяти постоянно стремятся увеличить плотность хранения данных в микросхемах памяти. Увеличение плотности ячеек памяти достигается за счет уменьшения размера самих ячеек, так и за счет объединения цепей записи и чтения зарядов ячеек. Причем, второе, в свою очередь, создаёт некоторые сложности в доступе к хранимым данным.

Понятия интерфейса доступа и правила доступа к NAND флеш-памяти:

  • Блок. Весь объем микросхемы разбит на блоки. Объем блока составляет порядка единиц мегабайт. (Например, в архиве, это книга или блокнот в переплете с прошитыми листами)
  • Стирание блока. Блок может быть стёрт, при этом каждый бит информации в нем будет установлен в «1». Нельзя стереть только часть блока. (Например, книгу можно выкинуть, но нельзя вырвать из книги лист, не нарушив целостность книги)
  • Страница. Блок разделен на страницы размером порядка десятков килобайт. (Например, книги и блокноты тоже имеют страницы)
  • Программирование страницы. В NAND флеш-память могут быть записаны (запрограммированы) одновременно данные всей страницы, биты устанавливаются при программировании в значения «0» или «1». (Например, чистые страницы книги или блокнота можно заполнить информацией только единожды)
  • Порядок программирования страниц. Страницы в пределах блока должны программироваться строго в порядке возрастания их номеров. (Например, последовательная запись информации в книгу или блокнот)
  • Порядок перезаписи. Каждая страница может быть запрограммирована только один раз. Для повторного программирования страницы необходимо стереть полностью блок. (Например, если в уже готовом издании книги необходимо заменить страницу, то придется перепечатать всю книгу и заново сделать переплет)

Перечисленные выше особенности NAND флеш-памяти выглядят довольно безобидно, на первый взгляд, но множество вопросов возникает при первой же попытке перезаписать часть данных (например, один сектор). Задачи записи и чтения непосредственно NAND флеш-памяти решает контроллер.

Контроллер

Контроллер обеспечивает подключение к хосту, и, собственно, представляется накопителем. В общем виде архитектура любого контроллера любого накопителя выглядит типично: имеются аппаратные блоки интерфейсов для обмена данными с хостом (EXT_IF) и NAND-памятью (FLASH_IF). Между блоками интерфейсов в обязательном порядке присутствует буферная оперативная память (MEM_BUF), предназначенная для оперативного кэширования данных и сглаживания потока записи/чтения данных. В контроллерах USB-накопителей буферная память составляет десятки килобайт и размещается непосредственно в самом контроллере. В высокопроизводительных системах, таких как SSD-накопители, используются внешние микросхемы памяти. Данные между интерфейсными блоками и буферной памятью передаются без непосредственного участия процессора по каналам прямого доступа к памяти (DMA, direct memory access). Участие процессора в передаче данных заключается в настройке каналов DMA и синхронизации работы блоков.

Читайте также:  Совокупность способов ведения экономическим субъектом бухгалтерского учета п 1 ст 8 закона 402 фз

Любой из подключаемых накопителей является «блочным устройством». Блочное устройство – это устройство, в котором данные хранятся в виде последовательной цепочки логических блоков, обращение к которым возможно по адресу Logical Block Address (LBA). Большинство устройств поддерживает размер блока в 512 байт, который называется «сектор». Сектор является минимальной дискретной информацией, которая может быть перезаписана на блочном устройстве. То есть для замены одного байта хост должен передать целиком сектор на устройство хранения.

Для программистов, работающих с накопителями на физическом уровне (запись/чтение по физическим адресам), вполне очевидно, что запись и чтение одного сектора не должны затрагивать ни коим образом данные других секторов. Также это очевидно для пользователя блочного устройства, но NAND флеш-память, как было сказано ранее, не предоставляет такой возможности. Для того, чтобы заменить один сектор в массиве памяти NAND, необходимо перезаписать весь блок NAND флеш-памяти, размер которого составляет мегабайты. Такой метод решения задачи крайне неэффективен, так как приводит к недопустимому снижению скорости записи в NAND флеш-память относительно ее потенциальных возможностей. К тому же так как операционная система часто пишет в одни и те же адреса устройства (например, записи FAT), то блоки NAND флеш-памяти быстро придут в негодность из-за ограниченного ресурса на стирание. Чтобы увеличить скорость записи/чтения данных и продлить срок службы NAND флеш-памяти, применяются более хитрые методы адресации, переводящие логические адреса (LBA) накопителя в физические адреса NAND флеш-памяти. Алгоритм трансляции адресов NAND флеш-памяти в зарубежной литературе называется Flash Translation Layer (FTL). Если посмотреть описание контроллеров SSD (например, компании Marvell), то можно увидеть, что в состав контроллера входит до 4 процессорных ядер. Такая высокопроизводительная система в SSD необходима в первую очередь для расчета адресов трансляции.

FTL, логическая и физическая адресация

Не существует единого универсального алгоритма FTL, удовлетворяющего все запросы пользователя, в которые входят:

  • скорость записи/чтения данных по последовательным адресам
  • скорость записи/чтения данных по случайным адресам
  • срок службы накопителя
  • надежность хранения данных
  • объем и тип применяемой памяти

Алгоритмы FTL могут отличаться как для разных типов накопителей (SD/USB/SSD), так и для одного типа. Например, существует разделение SSD по назначению: для серверов, для кэширования в персональном компьютере (ПК), для ноутбуков, для настольных ПК. При этом для каждого применения существуют свои приоритеты в требованиях и свои варианты реализации FTL. Каждый вариант FTL представляет собой компромисс параметров с учетом приоритетов конкретного применения накопителя.

Суть FTL – преобразование логических адресов устройства в физичеcкие адреса NAND флеш-памяти.

Каждому логическому LBA ставится область памяти в NAND. Это называется Logical Unit Number Table (LUN table). Для перезаписи логического блока стираются данные свободного физического блока, после чего происходит замена в LUN table, что создает для пользователя видимость перезаписи. От того, какого размера выбираются логические блоки, зависит размер LUN table (не во всех устройствах целесообразно иметь большие объемы памяти). Существуют два принципиально разных подхода в реализации FTL: блочная адресация и страничная адресация.

Блочная адресация

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

Преимуществом блочной адресации является малый размер LUN table, что актуально для устройств с малым объемом оперативной памяти, таких как USB-флеш-накопитель или карта памяти microSD. Недостатком является то, что размер блока довольно большой (порядка мегабайтов), и для перезаписи малых объемов данных (например, 512 байт) приходится переписывать весь блок.

Страничная адресация

В страничной адресации в LUN table сохраняются адреса физических страниц. Размер логического блока при этом составляет порядка десятков килобайт.

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

На практике в основном применяются гибридные алгоритмы, сочетающие в себе оба варианта адресации. Например, в компактных накопителях (USB-флеш-накопитель, карта памяти SD) основная часть объема адресуется блочным методом, в то время, как часть объема, к которой часто производится обращение, адресуется постранично.

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

Источник