Рассмотрим различные микросхемы флеш-памяти, поддерживаемые подсистемой MTD. Устройства флеш-памяти поставляются в двух вариантах: NAND и NOR флеш-память. Хотя оба варианта созданы примерно в одно время (NOR была представлена Intel, а NAND - Toshiba в конце 1980 года), NOR быстрее вошла в мир встраиваемых устройств, поскольку она проще в использовании. Однако, когда встраиваемые системы эволюционировали к необходимости иметь больше места для хранения (например, медиаплееры и цифровые камеры), для приложений хранения данных стала популярной NAND Flash. Уровень MTD также первоначально развивался вокруг NOR Flash, а поддержка NAND была добавлена позднее. Таблица 4.1 сравнивает два этих типа флеш-памяти.
Таблица 4.1 Сравнение NOR и NAND Flash
|
NOR
|
NAND
|
Доступ к данным
|
К данным можно обращаться в случайном порядке, так же как к SRAM. Операциями с флеш-памятью могут быть:
Процедура чтения: чтение содержимого флеш-памяти.
Процедура стирания: стирание - это процесс установки всех битов флеш-памяти в 1. Стирание в микросхемах NOR происходит в терминах блоков (называемых областями стирания).
Процедура записи: запись - это процесс изменения во флеш-памяти 1 в 0. После того, как бит стал 0, он не может быть записан, пока блок не будет стёрт, что означает установку всех битов в блоке в 1.
|
В микросхемах NAND флеш пространство разделено на блоки, которые также разделены на страницы. Каждая страница разделена на обычные данные и дополнительные (out-of-band) данные. Дополнительные данные используются для того, чтобы хранить метаданные, такие как ECC (Error-Correction Code, Код для коррекции ошибок) данные и информацию о неисправном блоке. NAND флеш, как и NOR флеш, имеет три основные операции: чтение, стирание и запись. Однако, в отличие от NOR, к данным которой можно обращаться в произвольном порядке, чтение и запись в NAND флеш выполняются в терминах страниц, тогда как стирание происходит в терминах блоков.
|
Подключение к плате
|
Подключается как обычное устройство SRAM к шинам адреса и данных процессора.
|
Существуют несколько способов подключения NAND флеш к CPU, зависящих от производителя. Для доступа к NAND выполняется соединение выводов данных и команд к обычно 8 выводам ввода-вывода на микросхеме флеш-памяти.
|
Выполнение кода
|
Код может быть выполнен прямо из NOR, поскольку она подключена непосредственно к шинам адреса и данных.
|
Если код находится в NAND флеш, для запуска он нуждается в копировании в память.
|
Производительность
|
Флеш-память NOR характеризуется медленным стиранием, медленной записью и быстрым чтением.
|
Флеш-память NAND характеризуется быстрым стиранием, быстрой записью и быстрым чтением.
|
Неисправные блоки
|
Неисправные блоки в микросхемах NOR флеш не ожидаются, поскольку они были разработаны, чтобы хранить системные данные.
|
Эти микросхемы были разработаны в основном как устройства хранения медиа-данных с более низкой ценой, поэтому стоит ожидать, что они имеют неисправные блоки. Обычно такие микросхемы флеш-памяти поставляются с помеченными неисправными участками. Также сектора NAND флеш больше страдают от проблемы переключения битов, когда бит становится перевернутым во время записи; это обнаруживается алгоритмами коррекции ошибок, называемых ECC/EDC, которые выполняются либо в оборудовании, либо в программном обеспечении.
|
Применение
|
В основном используются для выполнения кода. На NOR флеш могут находиться загрузчики, потому что код из такой флеш-памяти может быть выполнен напрямую. Такая флеш-память довольно дорогая и она обеспечивает меньшие плотности памяти и имеет относительно более короткую продолжительность жизни (приблизительно 100 000 циклов стирания).
|
Используются главным образом в качестве устройств хранения для встраиваемых систем, таких как приставки к телевизорам и MP3-плееры. Если вы планируете использовать плату только с NAND, вам придётся добавить дополнительное ПЗУ загрузки. Они предлагают высокие плотности при более низких ценах и имеют более длительный срок службы (около 10 в 6-ой степени циклов стирания).
|
Микросхемы NOR флеш бывают двух видов: старые не-CFI и новые, CFI совместимые. CFI расшифровывается как Common Flash Interface (Стандартный Интерфейс Флеш-памяти) и является отраслевым стандартом для обеспечения совместимости микросхем флеш-памяти одного и того же поставщика. Микросхемы флеш-памяти, как и любое другое устройство памяти, всегда находятся в стадии эволюции, новые микросхемы заменяют старые очень быстро; это означало бы переписывание драйверов флеш-памяти. Часто такие изменения были бы изменениями в конфигурации, такими как время ожидания стирания, размеры блоков, и тому подобное. Чтобы избежать этих усилий, были введены стандарты CFI, которые позволяют поставщикам флеш-памяти сделать так, чтобы данные конфигурации считывались с устройств флеш-памяти. Так, чтобы системное ПО могло бы опросить устройства флеш-памяти и изменить свою конфигурацию. MTD поддерживает набор команд CFI от Intel и AMD.
Поддержка NAND флеш была добавлена в конце серии ядер версии 2.4; наряду с NFTL (NAND Flash Translation Layer, Уровнем Трансляции NAND Флеш) она может монтировать обычные файловые системы, но поддержка JFFS2 была добавлена только для ядра версии 2.6. Ядро версии 2.6 можно считать хорошим вариантом для использования флеш-памяти типа NAND.
|