Контроллер флэш-памяти (или флэш-контроллер ) управляет данными, хранящимися на флэш-памяти (обычно NAND flash ), и взаимодействует с компьютером или электронным устройством . Контроллеры флэш-памяти могут быть разработаны для работы в средах с низким рабочим циклом , таких как карты памяти или другие подобные носители для использования в КПК , мобильных телефонах и т. д. Флэш-накопители USB используют контроллеры флэш-памяти, разработанные для связи с персональными компьютерами через порт USB с низким рабочим циклом. Флэш-контроллеры также могут быть разработаны для сред с более высоким рабочим циклом, таких как твердотельные накопители (SSD), используемые в качестве хранилища данных для систем ноутбуков и критически важных корпоративных массивов хранения данных . [1]
После первоначального изготовления флэш-накопителя флэш-контроллер сначала используется для форматирования флэш-памяти. Это гарантирует правильную работу устройства, отображает плохие ячейки флэш-памяти и выделяет запасные ячейки для замены будущих неисправных ячеек. Некоторая часть запасных ячеек также используется для хранения прошивки, которая управляет контроллером и другими специальными функциями для конкретного запоминающего устройства. Создается структура каталогов, позволяющая контроллеру преобразовывать запросы на логические сектора в физические местоположения на реальных чипах флэш-памяти. [1]
Когда системе или устройству необходимо считать данные из флэш-памяти или записать их во флэш-память, они будут взаимодействовать с контроллером флэш-памяти. Более простые устройства, такие как карты SD и USB-флеш-накопители, обычно имеют небольшое количество кристаллов флэш-памяти, подключенных одновременно. Операции ограничены скоростью отдельного кристалла флэш-памяти. Напротив, высокопроизводительный твердотельный накопитель будет иметь больше кристаллов, организованных с параллельными путями связи, чтобы обеспечить скорости, во много раз превышающие скорость одного кристалла флэш-памяти. [ необходима цитата ]
Флэш-память может выдерживать ограниченное количество циклов стирания программ. Если бы определенный блок флэш-памяти был запрограммирован и стерт многократно без записи в какие-либо другие блоки, один блок изнашивался бы раньше всех остальных блоков, тем самым преждевременно заканчивая срок службы устройства хранения. По этой причине флэш-контроллеры используют технику, называемую выравниванием износа , чтобы распределить записи как можно более равномерно по всем флэш-блокам в SSD. В идеальном сценарии это позволило бы записывать каждый блок на его максимальный срок службы, чтобы они все вышли из строя одновременно. [2]
Обычно контроллеры флэш-памяти также включают «слой трансляции флэш-памяти» (FTL), слой под файловой системой, который сопоставляет логические адреса блоков (LBA) хоста или файловой системы с физическим адресом флэш-памяти (логическое-физическое сопоставление). LBA ссылаются на номера секторов и на единицу сопоставления в 512 байт. Все LBA, которые представляют логический размер, видимый и управляемый файловой системой, сопоставлены с физическим местоположением (идентификатор блока, идентификатор страницы и идентификатор сектора) флэш-памяти. В рамках выравнивания износа и других алгоритмов управления флэш-памятью (управление плохими блоками, управление помехами чтения, безопасная обработка флэш-памяти и т. д.) физическое местоположение LBA может динамически часто меняться. Единицы сопоставления FTL могут различаться, поэтому LBA сопоставлены на основе блоков, страниц или даже подстраниц. В зависимости от модели использования более тонкая гранулярность сопоставления может значительно снизить износ флэш-памяти и максимально увеличить срок службы носителя на основе флэш-памяти. [3] [4] [5] В FTL также добавлена функция дедупликации для устранения избыточных данных и дублирующихся записей. [6]
Поскольку метаданные FTL занимают собственное флэш-пространство, им нужна защита в случае отключения питания. Кроме того, таблица отображения может износиться раньше, чем другие части флэш-памяти, преждевременно завершив срок службы устройства хранения. Обычно этого избегают в корпоративных устройствах, выделяя избыточное пространство для запасных частей, хотя для FTL также были предложены более долговечные формы хранения, такие как MRAM . [ необходима цитата ] Соотношение размера метаданных FTL и емкости хранилища обычно составляет 1:1000, например, флэш-накопитель емкостью 1 ТБ может иметь 1 ГБ метаданных FTL.
После того, как каждый блок твердотельного запоминающего устройства был записан один раз, флэш-контроллеру необходимо будет вернуться к некоторым начальным блокам, которые больше не содержат текущих данных (также называемые устаревшими блоками). Данные в этих блоках были заменены вновь записанными блоками, и теперь они ждут стирания, чтобы в них можно было записать новые данные. Это процесс, называемый сборкой мусора (GC). Все SSD, CF-карты и другие флэш-устройства хранения будут включать в себя некоторый уровень сборки мусора. Скорость, с которой флэш-контроллер будет это делать, может различаться. [7]