NAND и NOR: что они такое, и с чем их едят

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

компьютерная газета


Компьютерная газета. Статья была опубликована в номере 35 за 2004 год в рубрике hard :: digital

©1997-2024 Компьютерная газета