NAND и NOR: что они такое, и с чем их
едят
Думаю, многие, читая в новостях о
флэш-памяти, сталкивались с какими-то
странными ругательными сокращениями типа
NOR и NAND. При этом расшифровки значений, как
правило, не приводилось, и найти им какое-либо
объяснение вам, скорее всего, вряд ли
удалось. Попробуем внести хоть какую-то
ясность в этот вопрос.
Итак, сокращения NOR и NAND обозначают тип
логических элементов, используемых в
данной единице флэш-памяти. NOR обозначает
логический элемент ИЛИ-НЕ (NOT OR), а NAND — И-НЕ (NOT
AND). Но, поскольку мне сейчас не хочется
читать вам курс булевой алгебры и основ
цифровой логики, которая вам, к тому же, и не
нужна, остановимся лишь на результатах
использования этих технологий.
Основная функция накопителей на флэш —
хранить информацию. И отсюда вытекает
первое различие: достигнутые сегодня
плотности записи для технологии NAND
превосходят достигнутые в NOR, причем
разница измеряется в порядках. И требования
хранения больших объемов и компактности
однозначно определяют технологию
используемой флэш-памяти. Впрочем, это не
единственный критерий. Не менее важной
является возможность выполнять в памяти
записанный программный код, т.е. так
называемая XIP Capability (XIP — eXecute In Place). Такая
возможность существует у NOR-технологии и
отсутствует у NAND. Так получается, что
основным назначением памяти, произведенной
по технологии NAND, является хранение данных,
а по технологии NOR — хранение исполнимого
программного кода и, в меньшей степени,
данных (что обусловлено не только доступным
малым объемом — чуть позже мы вернемся к
этому).
Флэш-устройства делятся на части, которые
называются блоками. Это необходимо делать
для преодоления некоторых физических
ограничений и из ценовых соображений.
Запись в любом устройстве флэш
определенного блока может быть произведена
только если этот блок пуст или очищен. В
большинстве случаев получается так, что
операции записи должна предшествовать
операция стирания. И если в NAND-устройствах
операция стирания блока может быть
произведена сразу, то в NOR-устройствах
необходимо предварительно установить все
байты блока в ноль. Нужно также сказать что
типичное значение размера блока в NOR-устройствах
составляет 64 или 128 Кб (8-32 Кб у NAND), что в
сочетании с и так невысокими скоростями
работы флэш приводит к тому, что операции
записи со стиранием могут занимать до
нескольких секунд. Это и является
сдерживающим фактором применения NOR-флэша в
качестве носителя данных. А применение его
для хранения исполнимого кода возможно в
том случае, если он устраивает в плане
производительности — требования не должны
быть высокими. Время стирания памяти NAND
измеряется в миллисекундах и имеет первый
порядок. А малый размер блока в случае
неблагоприятных внешних условий
гарантирует потерю минимального объема
данных. Итак, подводя итог по этому абзацу:
операции чтения NOR несколько быстрее NAND;
операции же записи, наоборот, быстрее у NAND,
причем значительно; благодаря малому
размеру блока NAND в единицу времени
нуждается в меньшем числе стираний (что, как
мы увидим ниже, еще и способно продлить срок
ее функционирования в устройстве), которые
она проводит приблизительно на три порядка
быстрее, чем NOR.
NOR-флэш является устройством памяти с
произвольным доступом. Микросхемы NOR имеют
интерфейс, позволяющий произвести
адресацию и получить легкий доступ к
каждому отдельному байту. Интерфейс ввода-вывода
устройства памяти NAND значительно сложнее и
меняется от устройства к устройству и от
разработчика к разработчику. Одни и те же
выводы (зачастую их 8) используются для
передачи управляющих сигналов, адреса и
данных. Кроме того, в NAND-флэше доступ
осуществляют блоками обычно в 512 байт, т.е.
за одно обращение считывается или
записывается 512 байт. Доступ к каждому блоку
произвольный, но, так как нет возможности
обратиться к отдельному байту, память типа
NAND не является в известном смысле памятью
произвольного доступа. Выдача каждого
байта из 512-байтного блока осуществляется
на шину памяти последовательно, поэтому
уместно говорить о последовательном
доступе. Что и делают. Или о памяти со
страничной организацией. Теперь становится
понятней, почему NOR больше подходит для
хранения и выполнения программ, а NAND — для
хранения данных.
Схемотехнически ячейка памяти NAND
организуется проще: она имеет меньший
размер по сравнению с NOR, и это
соответственно приводит к повышению
плотности записи, уменьшению
энергопотребления и стоимости
производства.
Но у любой технологии не могут быть только
положительные стороны. В этом смысле NAND
тоже не исключение. Как и при эксплуатации
любых накопителей, возможны случайные
ошибки чтения и порча накопителя в целом.
Для устройств памяти флэш-типа актуально
говорить о безошибочном чтении, обработке
плохих блоков и числе циклов чтения/записи.
Явление ошибочного вычитывания битов (называется
bit-flipping) больше характерно для NAND-памяти, чем
для NOR. Вред от одного ошибочного бита
определяется типом данных, к которым он
принадлежит. Так, для мультимедийных данных
это окажется несущественным, но подобная
ошибка в программном коде или критически
важных данных может привести к весьма
трагическим результатам. Как я уже сказал,
для NOR-памяти это явление менее характерно,
а память на технологиях NAND нуждается в
использовании какого-то дополнительного
механизма обнаружения и коррекции ошибок.
Технологии производства NAND-памяти пока
несовершенны, и изначально память содержит
какое-то число неработающих элементов. Так
как в NAND группа запоминающих ячеек
объединяется в блок, то испорченная ячейка
в блоке приводит к неработоспособности
блока в целом, т.е. получается плохой блок.
Поэтому появляется необходимость
отслеживать состояние блоков и
использовать только рабочие, что
осуществить намного проще, чем произвести
память, абсолютно не содержащую плохих
страниц: такое производство оказывается
очень дорогим (похожая ситуация была в свое
время с LCD-панелями). По очевидным причинам
этот вид дефектов не характерен для NOR.
Рабочий ресурс микросхем флэш выражается в
минимально и максимально возможном числе
циклов стирания каждого отдельного блока (а
мы уже знаем, что каждая запись блока
обязательно сопровождается его
предварительным стиранием). Для памяти на
технологиях NOR оно составляет 10.000 и 100.000
циклов соответственно, для NAND — 100.000 и 1.000.000
циклов. Все предельно просто, и
комментировать нечего.
Использование NOR-памяти отличается
сравнительной простотой. Она не нуждается в
каких-либо дополнительных драйверах, а
может быть просто установлена и
использована. C NAND сложнее, так как разные
производители используют разные
интерфейсы, и для нее скорее всего
понадобится драйвер. Впрочем, несмотря на
то, что у NAND-памяти много преимуществ, вы не
должны думать, что NOR — это вчерашний день.
NOR-память сегодня находит применение в
многочисленных устройствах, не нуждающихся
в больших объемах и некритичных к
производительности. NAND находит применение
в тех областях, где бОльшая сложность по
применению оправдывается большИми
доступными объемами и производительностью.
По материалам компаний — производителей
флэш
M-Systems, Samsung и др.
Korg
© компьютерная
газета