- •Жесткие диски hdd
- •Магнитный принцип чтения и записи информации
- •Характеристики винчестеров
- •Жесткие диски ssd
- •Как быстро работают ssd?
- •Контроллер ssd
- •Структура ssd-диска: размер ячейки, страницы, блока nand-памяти
- •Зачем нужен Тримминг
- •Полевой транзистор с плавающим затвором
- •Устройство ячейки флэш-памяти
- •Преимущества ssd.
- •Недостатки ssd
- •Интерфейсы подключения
- •Гибридные диски sshd
- •Использование гибридных накопителей
- •Что такое ReRam?
- •Литература
Контроллер ssd
Главной задачей контроллера является обеспечение операций чтения/записи, и управление структурой размещения данных. Основываясь на матрице размещения блоков, в какие ячейки уже проводилась запись, а в какие еще нет, контроллер должен оптимизировать скорость записи и обеспечить максимально длительный срок службы SSD-диска. Вследствие особенностей построения NAND-памяти, работать с ее каждой ячейкой отдельно нельзя. Ячейки объединены в страницы объемом по 4 Кбайта, и записать информацию можно только полностью заняв страницу. Стирать данные можно по блокам, которые равны 512 Кбайт. Все эти ограничения накладывают определенные обязанности на правильный интеллектуальный алгоритм работы контроллера. Поэтому, правильно настроенные и оптимизированные алгоритмы контролера могут существенно повысить производительность и долговечность работы SSD-диска.
В контроллер входят следующие основные элементы:
Processor – как правило 16 или 32 разрядный микроконтроллер. Выполняет инструкции микропрограммы, отвечает за перемешивание и выравнивание данных на Flash, диагностику SMART, кеширование, безопасность.
Error Correction (ECC) – блок контроля и коррекции ошибок ECC.
Flash Controller – включает адресацию, шину данных и контроль управления микросхемами Flash памяти.
DRAM Controller - адресация, шина данных и управление DDR/DDR2/SDRAM кэш памятью.
I/O interface – отвечает за интерфейс передачи данных на внешние интерфейсы SATA, USB или SAS.
Controller Memory – состоит из ROM памяти и буфера. Память используется процессором для выполнения микропрограммы и как буфер для временного хранения данных. При отсутствии внешней микросхемы RAM памяти выступает в роли единственного буфера данных SSD.
На данный момент в SSD применяются следующие модели контроллеров:
Indilinx "Barefoot ECO" IDX110MO1
Indilinx "Barefoot" IDX110M00
Intel PC29AS21BA0
JMicron JMF602
JMicron JMF612
Marvel 88SS9174-BJP2
Samsung S3C29RBB01-YK40
SandForce SF-1200
SandForce SF-1500
Toshiba T6UG1XBG
Схема работы жесткого диска SSD
Структура ssd-диска: размер ячейки, страницы, блока nand-памяти
Для более эффективного использования элементарных ячеек памяти они были объединены в массивы с несколько уровневой структурой. Одна ячейка хранящая один (для SLC) или, как правило, два (для нынешнего поколения MLC) бита данных, объединена в группу названную страницей и вмещающую 4 КБ данных.
Далее 128 страниц объединены в блок объемом 512 КБ, а 1024 блока дают массив, представляющий 512 МБ. Управление данными в одном массиве обычно осуществляется одним контроллером.
Специальные алгоритмы для работы с SSD-дисками
Ввиду ограниченности циклов записи/стирания ячеек флеш-памяти разработчикам пришлось составить правильный алгоритм работы SSD-диска, позволяющий равномерно «изнашивать» всё его запоминающее пространство.
При модификации нескольких байт внутри некоторого блока контроллер выполняет следующую последовательность действий:
- считывает блок, содержащий модифицируемый блок во внутренний буфер/кеш;
- модифицирует необходимые байты;
- выполняет стирание блока в микросхеме флэш-памяти;
- вычисляет новое местоположение блока в соответствии с требованиями алгоритма перемешивания;
- записывает блок на новое место.
Вот тут и сказывается оптимизация ОС для работы с HDD. При удалении файлов операционная система не производит физическую очистку секторов на диске, а только помечает файлы как удаленные, и знает, что занятое ими место можно заново использовать. Работе самого накопителя это никак не мешает и разработчиков интерфейсов этот вопрос раньше не волновал. Если такой метод удаления помогает повысить производительность при работе с HDD, то при использовании SSD становится проблемой. В SSD, как и в традиционных жестких дисках, данные все еще хранятся на диске после того, как они были удалены операционной системой. Но дело в том, что твердотельный накопитель не знает, какие из хранящихся данных являются полезными, а какие уже не нужны и вынужден все занятые блоки обрабатывать по длинному алгоритму.
Прочитать, модифицировать и снова записать на место, после очистки затронутых операцией ячеек памяти, которые с точки зрения ОС уже удалены. Следовательно, чем больше блоков на SSD содержит полезные данные, тем чаще приходится прибегать к процедуре чтение>модификация>очистка>запись, вместо прямой записи. Вот здесь пользователи SSD сталкиваются с тем, что быстродействие диска заметно снижается по мере их заполнения файлами. Накопителю просто не хватает заранее стёртых блоков. Максимум производительности демонстрируют чистые накопители, а вот в ходе их эксплуатации реальная скорость понемногу начинает снижаться.
Поговорим об алгоритме записи/удаления.
После запроса на запись от операционной системы, контроллер носителя определяет размер и структуру информации. При наличии достаточного числа пустых блоков выделяется новый блок, на который и копируются переданные ОС для записи данные. Однако по мере заполнения диска и уменьшению достаточного числа пустых блоков данная операция существенно усложняется. Контроллер все чаще ищет максимально подходящий (по количеству свободных страниц), частично занятый блок и переписывает его в пустой блок, совмещая его с данными, пришедшими от ОС для записи, что полностью заполняет его. Старый блок затем очищается. При таком алгоритме мы получаем один полностью заполненный блок и один пустой, который зачисляется в группу пустых блоков, доступных для записи. При запросе на запись, контроллер использует только блоки из этой группы.
Операция удаления данных тоже напрямую зависит от объема и размещения удаляемых данных. Если вся информация, записана в одном блоке или в группе блоков, полностью занимая их, то блок/блоки попросту очищаются и помечаются как пустые и готовые для последующей записи с максимально возможной скоростью. Но данный идеальный случай встречается не всегда.
Если необходимо удалить не весь блок, а несколько страниц, находящихся в нем, то контроллер удаляет данные логически, не стирая их, а просто помечая данные страницы как удаленные. В дальнейшем оставшаяся информация будет скомпонована с новой, пришедшей для записи, и записана в пустой блок, а исходный блок, как уже было описано в алгоритме записи, будет полностью удален и помечен как пустой.
