Сделай Сам Свою Работу на 5

Проблемы и альтернативы флэш-памяти





Миниатюризация флэш-памяти уже перешла порог 10 нм. Ообъявлена новая технология TLC (Triple Level Cell), позволяющая хранить три бита в ячейке; TLC дешевле и плотнее, чем SLC и MLC. Однако корпоративное будущее флэш-памяти далеко не безоблачно — например, обеспечение надежности и долговременности хранения требует усложнения системного ПО и увеличения объемов резервной памяти, которой уже сейчас может быть вдвое больше, чем основной. Вместе с тем на текущий момент серьезной конкурентоспособной альтернативы по отношению к флэш-памяти нет, но имеется ряд перспективных подходов.

Резистор с памятью (Memristor). Эффект перехода проводника в измененное состояние при прохождении электрического тока был обнаружен сэром Хэмфри Дэви , учителем Майкла Фарадея, раньше, чем получили свои названия три основных пассивных элемента: сопротивление, индуктивность и конденсатор. Но до 2008 года, то есть 200 лет, этот эффект не находил практического применения, пока в HP Labs не занялись исследованием тонких пленок из диоксида титана. Оказалось, что мемристоры могут стать заменой не только флэш-, но и других типов памяти, причем на пути мемристоров, по утверждению исследователей, нет серьезных технологических проблем, и к исходу нынешнего деятилетия они могут стать основой для коммерческих изделий. Через тонкую пленку двухкомпонентного полупроводникового материала TiO2 $2 нижний индекс$ пропускают ток, приводящий к изменению кристаллической структуры и увеличению сопротивления на несколько порядков, причем при отключении источника тока это изменение сохраняется.



Магнито-резистивная память с произвольным доступом (Magneto-resistive Random-Access Memory, MRAM). Создание MRAM стало возможным благодаря открытию в 1988 году эффекта гигантского магнитного сопротивления, за которое в 2007 году физикам Альберту Феру и Петеру Грюнбергу была присуждена Нобелевская премия. MRAM объединяет преимущества традиционных полупроводниковых и магнитных технологий. В отличие от DRAM, в MRAM данные записываются не с помощью электрических зарядов, а путем магнитной поляризации элементов памяти, что обеспечивает энергонезависимость — возможность сохранять записанные в ячейки данные при отключении питания. MRAM состоит из двух ферромагнитных слоев, разделенных тонким слоем диэлектрика. Один из слоев представляет собой постоянный магнит определенной полярности, а намагниченность другого слоя изменяется под действием внешнего поля. Логически MRAM организована как сетка из отдельных ячеек, содержащих элемент памяти и транзистор. Известно несколько способов записи — от простейшего (но энергоемкого) до технологии переноса спинового момента. Считывание намного проще — достаточно измерить электрическое сопротивление ячейки.



С 1995 года агентство DARPA финансировало работы в этой области с участием компаний IBM, Motorola и Honeywell, а Hewlett-Packard, Matsushita, NEC, Fujitsu, Toshiba, Hitachi и Siemens вели собственные исследования. Однако пока до серьезной коммерциализации никто не дошел. Стоит отметить, что компания «Крокус Наноэлектроника», совместное предприятие Роснано и франко-американской Crocus Technology, запустила первую очередь MRAM на территории технополиса «Москва».

Память с изменением фазового состояния (Phase-change memory или PRAM). Появлением PRAM мы обязаны Стэнфорду Овшинскому, которого за его преданность науке и независимость мышления сравнивают с Эйнштейном, а за количество изобретений — с Эдисоном. Овшинский изучал способность халькогенидного стекла (chalcogenide glass) переходить из аморфного в кристаллическое состояние и обратно под воздействием тепла. В середине 50-х независимо от Овшинского халькогенидные стеклообразные полупроводники были открыты Б. Т. Коломийцем и Н. А. Горюновой в Физико-техническом институте им. А. Ф. Иоффе — признано, что это открытие положило начало физике неупорядоченных полупроводников.



В PRAM используется тот факт, что в кристаллической фазе электрическое сопротивление халькогенида мало, а в аморфной — велико, что можно применить для двоичной записи. Переключение состояний осуществляется путем нагрева материала электрическими импульсами. Такая операция записи в отличие от флэш-памяти не требует стирания записанных ранее данных, что сокращает время. Скорость записи составляет порядка 10 наносекунд, что вполне сопоставимо со скоростью DRAM, при том что PRAM энергонезависима. Однако запись производится путем нагрева ячейки памяти — как следствие, для работы микросхемы требуется больше энергии, что означает повышенные токи и напряжения по сравнению с флэш-памятью. Долгое время лидером в области PRAM была компания Numonyx, но с 2014 года (после поглощения ее компанией Micron) это направление развивает только Samsung.

Память на доменной стене (Domain-Wall Memory, DWM). В основе DWM лежит перемещение магнитных доменов в нанотрубках с помощью спиновых токов (отсюда ее второе название — «беговая дорожка»). Магнитные домены перемещаются вдоль наноскопических трубок, и когда домен проходит мимо магнитных головок, расположенных вдоль трубки, происходит его переориентация. Первый образец такой памяти был продемонстрирован в 2008 году, и потенциально она может обеспечить существенно большую плотность записи, чем флэш-память, однако имеются проблемы, связанные с низкой скоростью перемещения магнитных доменов по нанотрубкам. На скорость передвижения влияют неоднородности в трубках.

Атомная память (Atomic memory). В январе 2012 года группа исследователей из IBM объявила о создании памяти, в которой для хранения одного бита достаточно 12 атомов — такая плотность на два порядка превышает все известные способы хранения. Работа выполнена совместно с немецким исследовательским центром German Center for Free-Electron Laser Science. Пока речь не идет о практическом применении этой памяти — ученым удалось лишь с помощью сканирующего туннельного микроскопа собрать атомную структуру и записать в нее девиз корпорации IBM «Think» в коде ASCII. Важно, что эта работа открывает возможность классическим цифровым компьютерам выйти на атомарный уровень, доступный квантовым компьютерам.

***

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

История возникновения твердотельных накопителей (SSD) начинается с 1978 года, когда компанией StorageTek был разработан первый полупроводниковый накопитель на основе RAM-памяти. Следующим шагов к современности стал 1982 год, ознаменовавшийся появлением полупроводникового накопителя на базе RAM-памяти (скорость считывания данных - 320 МБит/с). Год 1995 стал годом появления прародителя современных SSD накопителей (компания M-Systems презентовала полупроводниковый накопитель на основе flash-памяти). 2008 год ознаменовался выходом в свет твердотельного накопителя современного образца со скоростью записи считывания 240 и 260 Мб\сек соответственно от компании Mtron Storage Technology.

 

. SSD технология

накопитель твердотельный интерфейс

SSD (solid state drive, накопитель на твёрдотельной памяти, твёрдотельный накопитель - рус.) - накопитель информации, основанный на чипах энергонезависимой памяти, которые сохраняют данные после отключения питания. Являются относительно новым видом носителей информации, а первое проявление и развитие, чипы энергонезависимой памяти получили от Flash накопителей и обычной RAM памяти.

Содержит такие же интерфейсы ввода-вывода как и современные жёсткие диски. В SSD не используются движущиеся части и элементы как в электромеханических устройствах (жёсткие диски, дискеты), что исключает вероятность износа механическим путём.

Архитектура и функционирование твердотельных накопителейSSD накопителинакопители, которые были построенные на основе энергонезависимой памяти (NAND SSD), появились относительно недавно, но в связи с гораздо более низкой стоимостью (от 2 долларов США за гигабайт) начали уверенное завоевание рынка. На сегодняшний день скорость записи \ чтение SSD накопителей на уровне с традиционными жесткими дисками, с учетом использования интерфейса подключения SATA3 (до 6 Гб\сек.)SSD накопителидиски, построенные на основе энергозависимой памяти характеризуются очень большой скоростью чтения, записи и поиска информации. Главным недостатком накопителей RAM SSD, это высокая стоимость (до 800 у. е. за 1 Гб). RAM SSD накопители зачастую используются в системах управления баз данных и графических центрах. Для сохранения данных при отключении питания применяются аккумуляторы, либо система резервного копирования.

Большинство современных твёрдотельных накопителей основаны на энергонезависимой NAND памяти.

Существуют гибридные версии SSD и HDD накопителей (рисунок 1).

 

Рисунок 1. Гибрид SSD и HDD накопителя

 

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

 

3. Устройство SSD накопители (на примере NAND памяти)

 

Рисунок 2. Устройство SSD

 

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

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

Память.

Практически все твёрдотельные накопители высокого, среднего и бюджетного класса используют энергонезависимую NAND(flash) память из-за её относительно низкой стоимости, способности сохранять данные без постоянного поддержания питания и возможность реализации технологии сохранения данных при неожиданном отключении питания.

Благодаря компактной компоновке чипов, производители могут выпускать SSD накопители в формфакторе 1.8; 2.5; 3.5 дюйма и меньше, если речь идёт о устройствах без защитных упаковок. Например для ноутбуков или внутреннего размещения в компьютере.

В большинстве SSD накопителей используется дешёвая MLC (Multi Level Cell) - память, которая может вмещать в одну ячейку более одного бита. Это очень результативно сказывается на цене готового изделия и способствует популяризации данных накопителей. Но есть у MLC памяти и большие недостатки. Это низкая долговечность ячеек и более низкая скорость записи и чтения, чем у накопителей на основе SLC (Single Level Cell).записывают только один бит в ячейку и это обеспечивает до 10 раз лучшую долговечность и до 2-х раз более высокую скорость в сравнении с MLC. Есть и один недостаток - цена накопителей на SLC памяти примерно в два раза выше чем цена накопителей на MLC памяти. Это обусловлено большими затратами на производство, а в особенности потому, что чипов SLC того же объёма, требуется в среднем в два раза больше для достижения того же объёма в сравнении с MLC.

Контроллёр SSD.

Главной задачей контроллера является обеспечение операций чтения / записи, и управление структурой размещения данных. Основываясь на матрице размещения блоков, в какие ячейки уже проводилась запись, а в какие еще нет, контроллер должен оптимизировать скорость записи и обеспечить максимально длительный срок службы SSD-диска. Вследствие особенностей построения NAND-памяти, работать с ее каждой ячейкой отдельно нельзя. Ячейки объединены в страницы объемом по 4 Кбайта, и записать информацию можно только полностью заняв страницу. Стирать данные можно по блокам, которые равны 512 Кбайт. Все эти ограничения накладывают определенные обязанности на правильный интеллектуальный алгоритм работы контроллера. Поэтому, правильно настроенные и оптимизированные алгоритмы контролера могут существенно повысить производительность и долговечность работы SSD-диска.

В контроллер входят следующие основные элементы: - как правило 16 или 32 разрядный микроконтроллер. Выполняет инструкции микропрограммы, отвечает за перемешивание и выравнивание данных на Flash, диагностику SMART, кеширование, безопасность.Correction (ECC) - блок контроля и коррекции ошибок ECC. Controller - включает адресацию, шину данных и контроль управления микросхемами Flash памяти. Controller - адресация, шина данных и управление DDR/DDR2/SDRAM кэш памятью. /O interface - отвечает за интерфейс передачи данных на внешние интерфейсы SATA, USB или SAS. Memory - состоит из ROM памяти и буфера. Память используется процессором для выполнения микропрограммы и как буфер для временного хранения данных. При отсутствии внешней микросхемы RAM памяти выступает в роли единственного буфера данных SSD.

На данный момент в SSD применяются следующие модели контроллеров:

Indilinx «Barefoot ECO» IDX110MO1«Barefoot» IDX110M00PC29AS21BA0JMF602JMF61288SS9174-BJP2S3C29RBB01-YK40SF-1200SF-1500T6UG1XBG

Практически все показатели SSD накопителя зависят от управляющего контроллёра. Он включает в себя микропроцессор, который управляет всеми процессами памяти с помощью специальной прошивки; и моста между сигналами чипов памяти и шины компьютера (SATA3, USB).

Функции современного SSD контроллёра:

·Чтение запись и кеширование.

·Коррекция ошибок (ECC).

·Шифрование (AES).

·Возможность S.M.A.R.T мониторинга.

·Пометка и запись о нерабочих блоках для добавления их в чёрный список.

·Сжатие данных.

Все контроллёры памяти нацелены на параллельно подключенную NAND память. Так как шина памяти одного чипа очень мала (максимум 16 бит), используются шины многих чипов подключенных параллельно. К тому же, отдельно взятый чип отнюдь не обладает отличными характеристиками, а наоборот. Например высокую задержку ввода-вывода. Когда чипы памяти параллельно объединены, эти задержки скрываются, распределяясь между ними. Да и шина растёт пропорционально каждому добавленному чипу, вплоть до максимальной пропускной способности контроллёра.

Многие контроллёры, умеют использовать SATA 6 Гбит/c, что в купе с контроллёрами поддерживающими скорость обмена данными 500 мб/c, даёт ощутимый прирост производительности в чтении / записи и полное раскрытие потенциала SSD накопителя.

Кэш память.

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

 


Рисунок 3. Кэш память

 

Но в твёрдотельных накопителях она несёт ещё одну важную функцию. Часть прошивки и самые часто изменяющиеся данные находятся в ней, сокращая износ энергозависимой NAND памяти. В некоторых контроллёрах, не предусмотрено использование кеш памяти, но тем не менее они достигают высоких показателей в скорости.

 

4. Интерфейсы для подключения SSD

 

Самыми распространёнными интерфейсами для SSD потребительского класса являются SATA 6 Гбит/c, PCI-Express и USB 3.0. Все эти интерфейсы способны обеспечить нужную пропускную способность для любого SSD накопителя.

В портативных устройствах вроде ноутбуков и планшетных компьютеров, наиболее часто встречаются компактные SSDнакопители с интерфейсом mini PCI-Express (mSATA).

 

. Как работает SSD накопитель

 

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

А вот при изменении / стирании данных в SSD накопителе не так все просто. Микросхемы NAND флэш-памяти оптимизированы для секторного выполнения операций. Флеш-память пишется блоками по 4 Кб, а стирается по 512 Кб. При модификации нескольких байт внутри некоторого блока контроллер выполняет следующую последовательность действий:

считывает блок, содержащий модифицируемый блок во внутренний буфер/кеш;

модифицирует необходимые байты;

выполняет стирание блока в микросхеме флэш-памяти;

вычисляет новое местоположение блока в соответствии с требованиями алгоритма перемешивания;

записывает блок на новое место.

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

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

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

Раньше в интерфейсе ATA просто не было команд для физической очистки блоков данных после удаления файлов на уровне ОС. Для HDD они просто не требовались, но появление SSD заставило пересмотреть отношение к данному вопросу. В результате в спецификации ATA появилась новая команда DATA SET MANAGEMENT, более известная как Trim. Она позволяет OC на уровне драйвера собирать сведения об удаленных файлах и передавать их контроллеру накопителя.

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

Но для реализации Trim необходима поддержка этой команды прошивкой накопителя и установленным в ОС драйвером. На данный момент только самые последние модели SSD «понимают» TRIM, а для старых накопителей нужно прошить контроллер для включения поддержки этой команды. Среди операционных систем команду Trim поддерживают: Windows 7, Windows Server 2008 R2, Linux 2.6.33, FreeBSD 9.0. Для остальных ОС необходимо инсталлировать дополнительные драйвера и утилиты.

Например, для SSD от Intel существует специальная утилита SSD Toolbox, которая может выполнять процедуру синхронизации с ОС по расписанию. Кроме оптимизации, утилита позволяет выполнять диагностику SSD и просматривать SMART-данные всех накопителей компьютера. С помощью SMART, можно оценить текущую степень износа SSD - параметр E9 отражает оставшееся количество циклов очистки NAND-ячеек в процентах от нормативного значения. Когда величина, уменьшаясь от 100, дойдет до 1, можно ожидать скорое появление «битых» блоков.

 

6. Устройство ячейки NAND памяти

 

Самой распространенной архитектурой флэшпамяти является архитектура NAND (рис. 4), соответствующая логической операции «И-НЕ». Операция NAND дает нулевое значение только в том случае, когда все операнды равны нулю, и единичное значение во всех остальных случаях. Архитектура NAND подразумевает последовательный способ подключения транзисторов, при котором сток каждого транзистора связан с истоком соседнего транзистора, а в серии нескольких последовательно соединенных транзисторов только один из них оказывается подключенным к линии битов. Причем при рассмотрении архитектуры соединения речь не идет конкретно о транзисторах с плавающим затвором.

 

Рисунок 4. Архитектура NAND

 

Рассмотрим группу таких последовательно соединенных транзисторов (без плавающего затвора) (рис. 5). В случае если управляющее напряжение на затворах всех транзисторов равно пороговому значению, то все транзисторы находятся в открытом состоянии и выходное напряжение (напряжение на битовой линии) будет низким, что соответствует логическому нулю. Если же входное напряжение хотя бы на одном транзисторе будет низким (ниже порогового значения), то есть если хотя бы один транзистор будет находиться в запертом состоянии, то напряжение на битовой линии будет высоким, что соответствует логической единице. Получаем таблицу истинности входных напряжений на затворах транзисторов (напряжений на линии слов) и выходного напряжения на битовой линии, соответствующую таблице истинности логической функции «И-НЕ» (NAND). Именно поэтому такая схема объединения транзисторов и получила название NAND.

 

Рисунок 5. Соединение транзисторов по схеме NAND

 

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

В сравнении с архитектурой NOR данная архитектура, в силу особенностей технологического процесса производства (объединение стоков и истоков соседних транзисторов и гораздо меньшее количество проводников), позволяет добиться более компактного расположения транзисторов, а следовательно, хорошо масштабируется. В отличие от NOR-архитектуры, где запись информации производится методом инжекции горячих электронов, в архитектуре NAND запись осуществляется методом туннелирования FN, что позволяет реализовать более быструю запись, чем для архитектуры NOR.

Естественно, возникает вопрос: каким образом в архитектуре NAND можно получить доступ к отдельно взятой ячейке памяти (прочитать содержимое ячейки)? Ведь если хотя бы один из транзисторов в такой последовательно соединенной группе будет находиться в закрытом состоянии (что можно трактовать как наличие заряда на плавающем затворе соответствующего транзистора), то напряжение на битовой линии будет высоким независимо от состояния остальных ячеек. Для того чтобы получить доступ к отдельно взятой ячейке, недостаточно просто подать пороговое значение напряжения на затвор транзистора, соответствующего этой ячейке, и измерить напряжение на битовой линии. Еще нужно, чтобы все остальные транзисторы при этом находились в открытом состоянии. Для этого на затвор транзистора, соответствующего ячейке памяти, чье содержимое необходимо прочитать, подается пороговое значение напряжения, а на затворы всех остальных транзисторов - напряжение, превышающее пороговое значение и достаточное для образования канала проводимости даже при наличии заряда на плавающем затворе, но недостаточное для эффекта квантового туннелирования зарядов. В таком случае все эти транзисторы переходят в открытое состояние и напряжение на битовой линии определяется наличием или отсутствием заряда на плавающем затворе транзистора, соответствующего ячейке памяти, к которой реализуется доступ.

Логическая структура nand флэшпамяти

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

Несмотря на тот факт, что флэшпамять позволяет получить доступ для чтения, записи и стирания отдельно взятой ячейки, для более эффективного использования элементарных ячеек памяти они были объединены в массивы с четырехуровневой структурой. На низшем уровне находится элементарная ячейка памяти, а элементарные ячейки, объединенные в массив, вмещающий 4 Кбайт данных, называются страницей памяти. 128 таких страниц образуют блок памяти размером 512 Кбайт (иногда в блок памяти входит 64 страниц), а 1024 блока - массив размером 512 Мбайт. Таким образом, логическая структура объединения ячеек в массивы довольно проста. Страница подобна кластеру (сектору) в жестком диске и представляет собой минимальный размер данных, с которым работает флэшпамять. Однако между кластером жесткого диска и страницей флэшпамяти существует принципиальная разница при выполнении операций чтения, записи и удаления. Так, если в жестком диске кластер можно прочитать, записать и удалить, то во флэшпамяти операции чтения и записи возможны страницами по 4 Кбайт, а стирание данных - только блоками по 512 Кбайт. Причем как только информация записана на страницу, она не может быть перезаписана до тех пор, пока не будет очищена (удалена).

Особенности операций записи данных в SSD-дисках

Итак, как мы уже отмечали, запись и чтение данных в NAND флэшпамяти возможны страницами по 4 Кбайт, а стирание данных - только блоками по 512 Кбайт. Вообще, процесс записи информации на SSD-диски сильно отличается от аналогичного процесса с HDD-дисками. С этим, к примеру, связано то, что производительность SSD-дисков меняется со временем, а скорости последовательного и выборочного доступа к флэшпамяти отличаются друг от друга. Для того чтобы объяснить эти явления, рассмотрим более подробно процессы записи на HDD- и SSD-диски.

В случае жестких дисков HDD наименьшая единица информации, которой оперирует система управления жесткого диска, носит название сектора или блока. В HDD размер сектора равен 4 Кбайт (в новых моделях) или 512 байт. Для адресации секторов (блоков) на диске используется метод LBA (Logical Block Addressing), при котором каждый блок, адресуемый на жестком диске, имеет свой порядковый номер - целое число, начиная с нуля (то есть первый блок LBA = 0, второй LBA = 1 и т.д.).

Преимущество метода LBA заключается в том, что системному контроллеру нет необходимости учитывать геометрию самого жесткого диска (количество цилиндров, сторон, секторов на цилиндре).

Теперь рассмотрим процесс записи данных на HDD-диск. Если данные записываются, к примеру, в блок LBA c определенным номером, то это означает, что они будут размещаться в определенном месте (на определенном цилиндре, дорожке и секторе) на диске. И сколько бы раз ни перезаписывался этот блок, данные всегда будут помещаться в одно и то же физическое место на диске, соответствующее номеру блока LBA. Если данные записываются в LBA-блоки с разными номерами, то это означает, что на диске они будут размещаться в разных местах, которые соответствуют номерам LBA-блоков. Если, к примеру, требуется записать на HDD-диск какойлибо файл, то первоначально он разбивается на блоки, каждому из которых присваивается определенный логический LBA-номер, а каждому логическому LBA-номеру соответствует жестко заданное место на диске.

Если же данные удаляются, то есть пользователь удаляет файл на уровне операционной системы, то на самом деле они не удаляются с диска, а просто соответствующие данным логические LBA-адреса на уровне операционной системы помечаются как свободные и могут в дальнейшем использоваться (данные могут перезаписываться). Важно, что контроллер самого HDD-диска ничего об этом не знает, однако для HDD-диска это не проблема, поскольку переписать LBA-блоки для HDD-диска не составляет труда.

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

Во флэшпамяти данные преимущественно записываются последовательно, то есть они всегда записываются порциями по 4 Кбайт в следующую по порядку свободную страницу флэшпамяти. При этом логический адрес записываемой страницы (LBA) сопоставляется с физическим адресом (PBA), то есть с адресом расположения во флэшпамяти.

Для соответствия между логическими и физическими адресами (LBA-PBA mapping) предназначена специальная таблица соответствия логических и физических адресов. Эта таблица размещается в оперативной памяти SSD-диска.

При получении запроса на запись контроллер выделяет соответствующее число свободных страниц и заносит в таблицу соответствие между LBA- и PBA-адресами. Если же данные перезаписываются (то есть требуется записать данные с логическими адресами, которые уже заняты), то контроллер SSD-диска выделяет следующие свободные страницы памяти, а в таблице соответствия логических и физических адресов помечает страницы, в которые эти данные были записаны ранее, как содержащие устаревшую информацию. Важно, что при этом реально страницы с устаревшими данными не перезаписываются (как в HDD-дисках) и не удаляются.

Если же данные удаляются, то есть пользователь удаляет файл на уровне операционной системы, то, как и в случае HDD-диска, данные не удаляются с диска, а просто соответствующие данным логические LBA-адреса на уровне операционной системы помечаются как свободные и в дальнейшем могут быть использованы (данные могут перезаписываться). Важно, что контроллер самого SSD-диска ничего об этом не знает и считает соответствующие страницы памяти занятыми. То есть соответствующие страницы памяти не помечаются к удалению в таблице соответствия LBA- и PBA-адресов. Запись на SSD-диск в основном происходит последовательно, поэтому существует большая разница между записью на новый диск (на который данные еще не записывались) и на уже заполненный диск. Отметим, что заполненный диск с точки зрения пользователя может быть пустым, поскольку удаление данных с диска на уровне операционной системы еще не означает их реального удаления из флэшпамяти.

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

Естественно, при таком последовательном алгоритме записи неизбежна ситуация, когда весь диск будет заполнен, то есть на нем не останется блоков со свободными страницами, а будут лишь блоки, содержащие заполненные страницы с актуальными данными, и страницы, помеченные к удалению (рис. 6).

 

Рисунок 6. Запись данных на пустой и уже заполненный диски

 

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

Для того чтобы использовать блоки со страницами, помеченными на удаление, применяется метод переноса данных с помощью пустых и резервных блоков. Даже если пустых блоков в SSD-диске уже не осталось, всегда имеется определенное количество резервных блоков, применяемых для переноса данных. Чтобы удалить страницу с устаревшими данными, прежде нужно переместить из соответствующего блока страницы с актуальными данными в резервный свободный блок и уже потом удалить весь блок, содержащий страницы с устаревшими данными. Соответственно мы получаем частично занятый блок с перемещенными данными, доступный для записи, и пустой блок, который становится резервным. Однако в результате такого перемещения данных получается, что на SSD-диск приходится записывать больше данных, чем требуется. К примеру, если требуется записать всего одну страницу (4 Кбайт) и для этого нет свободного блока, то прежде нужно найти блок со страницами, помеченными на удаление. Если имеется блок, в котором помечена на удаление всего одна страница, то нужно переместить из этого блока в резервный блок остальные 127 страниц и дополнить его той одной страницей, которую нужно было записать. Затем блок со страницей, помеченной на удаление, стирается и становится резервным. Получается, что для записи всего одной страницы (4 Кбайт) приходится записывать 128 страниц (512 Кбайт), и это не считая того, что время тратится еще на чтение всего блока и его стирание. Именно поэтому скорость записи на новый диск (на который данные никогда не записывались) и на уже заполненный диск может кардинально различаться. Для того чтобы подчеркнуть принципиальную разницу в скорости записи на пустой и заполненный диски, используется такой показатель, как коэффициент усиления записи (Write Amplification), который показывает, во сколько раз больше данных приходится записывать, чем реально требуется. При записи на пустой диск коэффициент усиления записи равен единице, а при записи на заполненный диск он всегда больше единицы - его значение может колебаться от 2 до 25.

Рассмотренный пример является несколько идеализированным - в реальности механизм перемещения данных, то есть избавления от блоков со страницами, помеченными к удалению, используется по мере заполнения диска, причем с помощью как пустых, так и резервных блоков. Эту процедуру называют сбором «мусора» (Garbage Collection).

Существуют различные алгоритмы процедуры Garbage Collection, и разница между ними заключается в том, каким именно образом выбирается блок, используемый для перемещения данных. Понятно, что это должен быть блок, содержащий как можно больше страниц памяти, помеченных к удалению. Именно в этом случае можно минимизировать количество операций записи и, тем самым, уменьшить показатель Write Amplification. Кроме того, учитывая, что количество циклов перезаписи ячеек флэшпамяти ограничено, процедура Garbage Collection с выбором блока с наибольшим количеством страниц, помеченных к удалению, позволяет продлить время жизни SSD-диска.

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.