СПОСОБ ТРАНСЛЯЦИИ АДРЕСОВ В ПОДСИСТЕМАХ ХРАНЕНИЯ ДАННЫХ НА ОСНОВЕ FLASH НАКОПИТЕЛЕЙ
Сибиряков М.А1., Сухих А.В.2
1,2Аспирант, Поволжский государственный технологический университет
СПОСОБ ТРАНСЛЯЦИИ АДРЕСОВ В ПОДСИСТЕМАХ ХРАНЕНИЯ ДАННЫХ НА ОСНОВЕ FLASH НАКОПИТЕЛЕЙ
Аннотация
Рассмотрены особенности адресации при работе с данными на HDD и SSD, показаны различия во внутренних структурах этих типов носителей. Приведен механизм трансляции адресов FTL, используемый при записи (чтении) на FLASH накопители типа NAND.
Ключевые слова: уровень предобразования адресов; твердотельные накопители; трансляция адресов.
Sibiryakov M.A.1, Sykhikh A.V.2
1,2Postgraduate student, Volga State University of Technology
METHOD OF ADDRESS TRANSLATION ON STORAGE SUBSYSTEMS BASED ON FLASH DRIVE
Abstract
The paper under discussion shows features of addressing data on the HDD and SSD, shows the differences in the internal structures of these types of media. Address translation mechanism - FTL, used when writing (reading) to FLASH storage type NAND, are discussed in detail.
Key words: flash translation layer; flash drive; address translation.
Твердотельные накопители на основе Flash-памяти становятся все более популярным решением при проектировании высокопроизводительных систем хранения. На тех участках, где требуется максимальная производительность дисковой подсистемы с минимальными задержками, применение твердотельных накопителей является порой единственным возможным вариантом, опережая по производительности самые быстрые RAID-массивы на жестких дисках корпоративного уровня. Процесс чтения/записи данных на SSD происходит несколько иначе, чем на HDD носитель, это обуславливается различием во внутренней архитектуре. Основное отличие лежит в использовании промежуточного уровня трансляции адресов - FTL. Flash Translation Layer (FTL) – уровень предобразования адресов для использования флеш-памяти.
Что такое FTL и почему он необходим?
Для работы с SSD требуется отображение адресов между LBA (Logical Block Addressing — механизм адресации и доступа к блоку данных на жёстком диске, при котором системному контроллеру нет необходимости учитывать геометрию самого жесткого диска (количество цилиндров, сторон, секторов на цилиндре); контроллеры современных жестких дисков в качестве основного режима трансляции адреса используют LBA) и физическим местонахождением данных [2]. Для того, чтобы произвести запись на определенную область физического носителя информации, данные с этой области должны быть предварительно удалены на уровне блоков. При использовании одного адреса LBA FTL преобразует его и происходит физическая запись информации в различные зоны флеш-накопителя. Далее рассматривается флеш-память типа NAND, которая используется в большинстве SSD накопителей [1].
Как работает FTL?
Контроллер жестких дисков компьютера или системы хранения предполагает получить доступ к HDD (устройству LBA). HDD состоит из секторов (обычно размером 512 Байт или 4 Кбайт). SSD в свою очередь состоит из банков, блоков и страниц. FTL производит трансляцию секторного доступа (как в HDD) в блочный доступ (к SSD). Метаданные используются для отображения логических адресов в физические.
Конфигурация HDD и SSD
HDD состоит из секторов: 1 сектор – 512 байт, либо 4 Кбайт с эмуляцией в 512 байт.
SSD состоит из:
– 1 страница = 8 Кбайт + 512 байт
– 1 блок = (8 Кбайт + 512 байт) * 128 страниц = 1 Мбайт + 64 Кбайт
– 1 слой = (1 Мбайт + 64 Кбайт) * 4096 блоков = 4 Гбайт + 256 Мбайт
– 1 матрица = (4 Гбайт + 256 Мбайт) * 2 слоя = 8 Гбайт + 512 Мбайт
– 1 банк = (8 Гбайт + 512 Мбайт) * 2 матрицы = 16 Гбайт + 1 Гбайт
– 1 устройство = (16 Гбайт + 1 Гбайт) * 64 банка = 1 Тбайт + 64 Гбайт
Страница (рис. 1) – самая маленькая адресуемая единица для операций чтения и программирования. Резервные данные (Spared data) используются для хранения ECC (error-correcting code – кода коррекции ошибок) и для маркировки неисправностей страницы. Размер, отводимый под резервные данные, может быть разным и зависит от конкретного устройства [1].
Блок (рис. 2) – самая маленькая единица, доступная для стирания информации. В каждом блоке обычно находится 128 или 256 страниц. Страницы, находящиеся в составе одного блока, должны быть записаны последовательно, но чтение может производиться в произвольном порядке.
Матрица (рис. 3) может содержать до четырех слоев. Каждый слой имеет свой регистр страниц и регистр кэша для переключения между входными и выходными потоками данных. Регистры также содержат данные об операциях с массивами (чтение/программирование).
Возвращаясь к технологии FTL: каждая файловая система, получающая доступ к устройству памяти, должна записать не менее 4Кбайт информации. NAND FLASH может записывать не меньше одной страницы за одну операцию записи, либо несколько страниц за раз. Поскольку запись производится в страницу, а не в сектор HDD диска, требуется создать адресную карту «виртуальных секторов», к которой обращается хост (таким образом происходит эмуляция адресов HDD диска). Также требуется фактическая адресная карта NAND контроллера, по которой физически записываются данные.
Процесс преобразования адресов
Процесс преобразования адресов показан на рис. 4.
1 – от хоста приходит команда на запись
|
|
Рис. 4. Процесс записи данных в NAND FLASH
2 – команда помещается в очередь команд
3 – блок управления буфером обрабатывает команду
4 – команда помещается в очередь событий для дальнейшего выполнения
5 – адрес команды (LBA) отображается на физический адрес NAND и временно хранится в DRAM
6 – преобразование адресов в FTL (рис. 5):
7 – теперь данные могут быть записаны в NAND
Механизм FTL предоставляет хост-системе эмуляцию работы с LBA, хотя фактически запись ведется не на HDD, а на SSD носитель.
Рис. 5. Процесс преобразования адресов в FTL
Список литературы
Sykes R., "Critical Role of Firmware and Flash Translation Layers in Solid State Drive Design" / Sykes R. - Flash Memory Summit 2012, Santa Clara, CA.
От хранения данных к управлению информацией. [Пер. с англ.] / под редакцией G.Somasundaram, Alok Shrivastava – СПб.: Питер, 2010. – 544 с.