Как работает диск SSD и как он конкурирует с новейшими технологиями, такими как технология энергонезависимого хранения Intel Optane?
Чтобы понять, чем и почему SSD-диски отличаются от вращающихся, необходимо сказать несколько слов о диске HDD. Жесткий диск хранит данные на нескольких вращающихся магнитных дисках, называемых пластинами. К нему прикреплен рычаг привода с головками чтения/записи. Этот рычаг позиционирует головки над правильной областью привода для чтения или записи информации.
Поскольку головки дисков должны выравниваться по области диска, чтобы считывать или записывать данные (а диск постоянно вращается), существует время ожидания для доступа к данным. Привод может нуждаться в чтении из нескольких мест, чтобы запустить программу или загрузить файл, а это значит, что ему, возможно, придется подождать, пока пластины повернутся в правильное положение несколько раз, прежде чем он сможет выполнить команду. Если диск находится в спящем режиме или в режиме низкого энергопотребления, может потребоваться несколько секунд, чтобы диск заработал на полную мощность и начал выполнять требуемые операции.
С самого начала было ясно, что жесткие диски не смогут соответствовать скоростям, на которых могут работать процессоры. Задержка в жестких дисках измеряется в миллисекундах по сравнению с наносекундами для типичного процессора. Одна миллисекунда составляет 1 000 000 наносекунд, и обычно на жесткий диск уходит 10-15 миллисекунд, чтобы найти данные на диске и начать их чтение. Производители жестких дисков совершенствуют технологии для увеличения быстродействия: делают меньше размер пластины, устанавливают дополнительную кэш-память на диске и увеличивают скорости вращения шпинделя. Линейка продуктов VelociRaptor компании Western Digital имеет скорость вращения 10 000 об/мин, что является самой быстрой скоростью вращения шпинделя на потребительском рынке HDD. Некоторые диски для корпоративных целей вращаются со скоростью до 15 000 об/мин. Однако, даже самый быстрый вращающийся диск с самыми большими кэшами и самыми маленькими жесткими дисками все еще мучительно медленен для процессора.
Чем отличаются SSD
Твердотельные накопители называются именно так, потому что они не зависят от движущихся частей или вращающихся дисков. Вместо этого, данные сохраняются в пул флеш-памяти NAND. Сама NAND состоит из так называемых транзисторов с плавающим затвором. В отличие от конструкции транзисторов, используемых в DRAM, которые должны обновляться несколько раз в секунду, флеш-память NAND предназначена для сохранения информации даже при отсутствии питания. Это делает NAND типом энергонезависимой памяти.
Диаграмма выше показывает простой дизайн флеш-ячейки. Электроны хранятся в плавающем затворе, который затем читается как заряженный «0» или незаряженный «1». Именно так, во флеш-памяти NAND «0» означает, что данные хранятся в ячейке, это противоположно тому, как мы обычно думаем о «0» или «1». NAND flash организован в виде сетки. Весь макет сетки называется блоком, а отдельные строки, составляющие сетку, называются страницами. Типичные размеры страниц: 2 КБ, 4 КБ, 8 КБ или 16 КБ, от 128 до 256 страниц на блок. Поэтому размер блока обычно варьируется от 256 КБ до 4 МБ.
В приведенной выше таблице есть две вещи, на которые следует обратить внимание. Во-первых, обратите внимание, как добавление большего количества бит на ячейку NAND оказывает существенное влияние на производительность памяти. Причем, влияние на задержку записи больше, чем на задержку чтения. Типичная задержка трехуровневой ячейки (TLC) в 4 раза больше по сравнению с NAND одноуровневой ячейки (SLC) для чтения и в 6 раз больше для записи. Задержки стирания также значительно различаются. Влияние также не пропорционально - TLC NAND почти в два раза медленнее, чем MLC NAND, несмотря на то, что он содержит только на 50% больше данных (три бита на ячейку вместо двух). Это также верно для приводов QLC, которые хранят еще больше битов при разных уровнях напряжения в одной ячейке.
Причина, по которой TLC NAND медленнее, чем MLC или SLC, связана с тем, как данные перемещаются в ячейку NAND и выходят из нее. При использовании SLC NAND контроллер должен знать только, является ли бит 0 или 1. При использовании MLC NAND ячейка может иметь четыре значения - 00, 01, 10 или 11. При использовании TLC NAND ячейка может иметь восемь значений и QLC имеет 16 значений. Для считывания правильного значения из ячейки контроллер памяти должен использовать точное напряжение для определения того, заряжена ли какая-либо конкретная ячейка.
Чтение, запись и стирание
Одним из функциональных ограничений твердотельных накопителей является то, что перезапись данных происходит намного медленнее, чем считывание и запись на пустой диск. Это связано с тем, что твердотельные накопители считывают данные на уровне страницы (т.е. из отдельных строк в сетке памяти NAND) и могут записывать на уровне страницы, если соседние ячейки пусты. Но стирать данные они могут только на уровне блоков. Для стирания NAND флеш–памяти требуется высокое напряжение. Хотя теоретически можно стереть NAND на уровне страницы, требуемая величина напряжения воздействует на соседние ячейки вокруг перезаписываемых. Стирание данных на уровне блоков помогает избежать этой проблемы.
Единственный способ для SSD обновить существующую страницу - скопировать содержимое всего блока в память, стереть блок, а затем записать содержимое старого блока + обновленную страницу. Если накопитель заполнен и нет доступных пустых страниц, твердотельный накопитель должен сначала проверить блоки, помеченные для удаления, но еще не удаленные, стереть их, а затем записать данные на стертую страницу. Вот почему твердотельные накопители могут становиться медленнее по мере заполнения - почти пустой диск заполнен блоками, которые можно записать немедленно, а почти полный диск будет проходить через всю последовательность операций по проверке–копированию–стиранию–записи.
Если вы использовали твердотельные накопители, вы, вероятно, слышали о так называемой «сборке мусора» (garbage collection). Сборка мусора - это фоновый процесс, который позволяет диску снизить влияние на производительность цикла проверка–копирование–стирание–запись, выполняя определенные задачи в фоновом режиме.
Сборка мусора (англ. garbage collection) в программировании — одна из форм автоматического управления памятью. Специальный процесс, называемый сборщиком мусора (англ. garbage collector), периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями.
Поговорим о TRIM
TRIM (англ. to trim — подрезать) — команда позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных не несут полезной нагрузки и их можно не хранить физически.
Когда вы удаляете файл из Windows на обычном жестком диске, файл не удаляется сразу. Вместо этого операционная система сообщает жесткому диску, что она может перезаписать физическую область диска, на которой эти данные были сохранены, в следующий раз, когда ей потребуется выполнить запись. Вот почему можно восстановить файлы (и почему удаление файлов в Windows обычно не освобождает много места на физическом диске, пока вы не очистите корзину). С традиционным жестким диском ОС не нужно обращать внимание на то, где записываются данные или каково относительное состояние блоков или страниц. С SSD это важно.
Команда TRIM позволяет операционной системе сообщить SSD, что она может пропустить перезапись определенных данных при следующем удалении блока. Это снижает общий объем данных, которые записывает диск, и увеличивает срок службы SSD. И чтение, и запись повреждают флеш-память NAND, но запись наносит гораздо больший ущерб, чем чтение. К счастью, долговечность на уровне блоков не является проблемой современной флеш-памяти NAND.
Выравнивание износа и усиление записи
Поскольку твердотельные накопители записывают данные на страницы, но стирают данные в блоках, объем данных, записываемых на накопитель, всегда превышает фактическое обновление. Например, если вы вносите изменения в файл размером 4 КБ, весь блок, в котором находится файл 4 КБ, должен быть обновлен и переписан. В зависимости от количества страниц в блоке и размера страниц, может понадобиться записать данные объемом 4 МБ для обновления файла 4 КБ. Сборка мусора уменьшает влияние усиления записи, как и команда TRIM. Сохранение значительной части диска свободной и/или дополнительное выделение ресурсов производителем также может снизить влияние усиления записи.
Усиление записи (Write amplification) является нежелательным явлением, связанным с флеш-памятью и твердотельными накопителями (SSD), когда фактический объем информации, физически записываемый на носитель, превышает объем, предназначенный для записи.
Выравнивание износа используется для обеспечения равномерности записи/стирания блоков NAND, т.е. чтобы одни блоки не записывались и стирались чаще, чем другие. Несмотря на то, что выравнивание износа увеличивает ожидаемый срок службы диска и его долговечность за счет одинаковой записи в NAND, оно может фактически увеличить усиление записи. В других случаях для равномерного распределения записей по диску иногда необходимо записывать и удалять блоки, даже если их содержимое фактически не изменилось. Хороший алгоритм выравнивания износа стремится сбалансировать эти воздействия.
Контроллер SSD
Теперь становится понятно, что твердотельные накопители требуют гораздо более сложных механизмов управления, чем жесткие диски. Однако и у HDD есть свои технологические сложности. Например, механические проблемы, связанные с балансировкой нескольких головок чтения-записи в нанометрах над пластинами, которые вращаются со скоростью от 5400 до 10000 оборотов в минуту. Тот факт, что жесткие диски справляются с этой задачей, просто невероятен. Между тем стоимость HDD остается ниже стоимости SSD.
Контроллеры SSD имеют пул памяти DDR3 или DDR4, чтобы эффективней управлять самой NAND. Многие накопители также содержат одноуровневые кэши ячеек, которые действуют как буферы, увеличивая производительность накопителя, выделяя быстрые NAND для циклов чтения/записи. Некоторые накопители используют алгоритмы сжатия данных для уменьшения общего числа операций записи и увеличения срока службы накопителя. Контроллер SSD исправляет ошибки. Алгоритмы коррекции ошибок совершенствуются.
Производители SSD дисков не разглашают техническую информацию об алгоритмах, применяемых в контроллерах SSD. Большая часть производительности флеш-памяти NAND определяется базовым контроллером, и компании не хотят раскрывать ноу–хау, чтобы не дать конкурентам преимущество.
Интерфейсы
Сначала SSD использовали порты SATA, как и жесткие диски. В последние годы мы наблюдаем переход к дискам M.2 - очень тонким дискам длиной в несколько сантиметров, которые вставляются непосредственно в материнскую плату (или, в некоторых случаях, в монтажный кронштейн на переходной плате PCIe).
Диски NVMe обеспечивают более высокую производительность, чем традиционные драйверы SATA, поскольку они поддерживают более быстрый интерфейс. Обычные твердотельные накопители, подключенные через SATA, достигают максимальной скорости ~ 550 МБ/с с точки зрения реальной скорости чтения/записи. Диски M.2 способны работать значительно быстрее, в диапазоне 3,2 ГБ/с.
Новейшие технологии
NAND flash имеет большое преимущество по сравнению с жесткими дисками, но не без собственных недостатков и проблем. Ожидается, что емкость дисков и цена за гигабайт будут продолжать расти и падать соответственно, но маловероятно, что твердотельные накопители будут стоить дешевле HDD. Уменьшение размера является серьезной проблемой для флэш-памяти NAND - несмотря на совершенствование технологий в этой области, память NAND становится более хрупкой. Время хранения данных и производительность записи по сути ниже для 20-нм NAND, чем для 40-нм NAND, даже если плотность данных и общая емкость значительно улучшены. До сих пор мы видели накопители с 96 слоями на рынке, ожидается 128 слоев. В целом, переход к 3D NAND помог улучшить плотность без уменьшения размера и не полагаясь на планарное масштабирование.
До сих пор производители твердотельных накопителей обеспечивали более высокую производительность, предлагая большую пропускную способность и большее количество каналов на контроллер, а также использование кэшей SLC, о которых мы упоминали ранее. Тем не менее, в долгосрочной перспективе предполагается, что NAND будет заменен чем-то другим.
То, на что это будет похоже, все еще является предметом для обсуждения. И магнитная память, и память с фазовым переходом представили себя в качестве кандидатов, хотя обе технологии все еще находятся на ранних стадиях и должны разрешить некоторые вопросы, чтобы фактически конкурировать в качестве замены NAND. Будут ли потребители замечать разницу - вопрос открытый. Если вы перешли с HDD на SSD, а затем на более быстрый SSD, вы, вероятно, знаете, что разница в скорости между жестким диском и твердотельным накопителем намного больше, чем между SSD и более быстрым SSD, даже при копировании небольшого объема информации. Улучшение времени доступа от миллисекунд до микросекунд имеет большое значение, но улучшение их от микросекунд до наносекунд может оказаться за пределами человеческого восприятия.
Intel 3D XPoint (продается как Intel Optane) превратилась в одного из потенциальных конкурентов флеш-памяти NAND и единственную современную альтернативную технологию, имеющую массовое производство. Твердотельные накопители Optane не используют NAND - они построены с использованием энергонезависимой памяти, которая, как считается, реализована аналогично оперативной памяти. Задержка накопителя Optane составляет примерно половину от задержки флеш-памяти NAND (10 микросекунд против 20) и значительно более высокую долговечность (30 полных операций записи на диск в день по сравнению с 10 полными операциями записи на диск в день для высокопроизводительных твердотельных накопителей Intel).
Кто кого?
Первые твердотельные диски Optane дебютировали как отличное дополнение для процессоров Intel Kaby Lake и Coffee Lake. Optane также доступен в виде автономных дисков и различных корпоративных серверных решений. На данный момент Optane все еще слишком дорог, чтобы конкурировать с NAND flash по стоимости. Но то ли ещё будет. NAND будет востребован, по крайней мере, в течение ближайших 3–4 лет. Далее Optane начнет его вытеснять. Срок такого перехода будет зависеть от того, насколько успешно Intel и Micron смогут внедрить свою технологию и сможет ли 3D NAND flash получить 128 слоёв.