Ответы:
В этом есть много компромиссов.
Википедия также:
Несмотря на наличие дополнительных транзисторов, уменьшение проводов заземления и разрядных линий обеспечивает более плотную компоновку и большую емкость памяти на микросхему. Кроме того, флэш-память NAND, как правило, может содержать определенное количество неисправностей (ожидается, что флэш-память NOR, используемая для ПЗУ BIOS, будет безошибочной). Производители пытаются максимизировать объем полезного хранилища, уменьшая размер транзистора ниже размера, в котором они могут быть надежно сделаны, до размера, при котором дальнейшее уменьшение увеличит число неисправностей быстрее, чем увеличит общий объем доступной памяти.
Таким образом, флэш-память NOR может быть проще, но даже не настолько плотна.
Если взглянуть на довольно приличное сравнение PDF.
NOR имеет более низкое энергопотребление в режиме ожидания, прост для выполнения кода и имеет высокую скорость чтения.
NAND имеет намного более низкую активную мощность (запись битов происходит быстрее и дешевле), более высокую скорость записи (намного), значительно более высокую емкость, намного более низкую стоимость на бит и очень проста в использовании для хранения файлов. из-за более низкой скорости чтения при использовании его для выполнения кода вам действительно нужно его скрыть.
Процитирую небольшой раздел с большой таблицей над ним ...
Вспышка NAND дешевле, поэтому вы можете использовать ее, если можете. Недостатком является то, что это не так надежно. NAND flash работает быстрее в большинстве операций, за исключением небольшого чтения с произвольным доступом. Если вы хотите прочитать пару байтов со случайного адреса в памяти, NOR быстрее. Для больших операций чтения из памяти NAND работает достаточно хорошо и фактически превосходит NOR для достаточно больших кусков.
Большинство встроенных операционных систем содержат код для исправления ошибок в NAND Flash. Есть также микроконтроллеры с аппаратной коррекцией ошибок. Настоящая проблема возникает во время загрузки - загрузчики первого уровня не имеют кода, исправляющего ошибки, и они еще не настроили контроллер памяти для запуска аппаратного ECC. Это небольшая проблема: вы не можете загрузить код ECC без ошибок, потому что вы еще не загрузили код ECC.
Чтобы обойти эту проблему, некоторые производители памяти указывают определенную область чипа, которая гарантированно не содержит ошибок (первые 4 КБ или что-то в этом роде). Вы помещаете туда загрузчик с программным обеспечением ECC (например, U-boot ), считываете его без ошибок, а затем используете его для считывания ядра вашей ОС, исправляя ошибки по мере продвижения. Вы также можете хранить загрузчик в последовательной флэш-памяти и просто использовать флэш-память NAND для больших объектов, таких как ядро ОС или файловая система.
Я нашел эту заметку о применении Atmel полезной: http://www.atmel.com/dyn/resources/prod_documents/doc6255.pdf
NOR допускает произвольный доступ, а NAND - нет (только доступ к странице).
Из Википедии :
Вспышки NOR и NAND получают свои названия из структуры взаимосвязей между ячейками памяти. Во флэш-памяти NOR ячейки подключаются параллельно линиям битов, что позволяет считывать и программировать ячейки индивидуально. Параллельное соединение ячеек напоминает параллельное соединение транзисторов в затворе CMOS NOR. Во флэш-памяти NAND ячейки соединены последовательно, напоминая вентиль NAND. Последовательные соединения занимают меньше места, чем параллельные, что снижает стоимость флэш-памяти NAND. Само по себе это не предотвращает индивидуальное чтение и программирование ячеек NAND.