Відповіді:
Є багато компромісу на це.
Вікіпедія також:
Незважаючи на додаткові транзистори, скорочення проводів заземлення та бітових ліній дозволяє щільніше розташувати і збільшити ємність зберігання на мікросхемі. Крім того, спалах NAND, як правило, може містити певну кількість несправностей (очікується, що спалах NOR, як це використовується для BIOS ROM, буде відмовлений). Виробники намагаються максимально збільшити об'єм зберігання, зменшивши розмір транзистора нижче розміру, де вони можуть бути надійно зроблені, до розміру, коли подальше зменшення швидше збільшить кількість несправностей, ніж збільшить загальний доступний запас.
Отже, спалах NOR може вирішуватись простіше, але навіть не є таким щільним.
Якщо ви поглянете на досить пристойний PDF-файл порівняння.
NOR має меншу потужність у режимі очікування, простий у виконанні коду та має високу швидкість читання.
NAND має набагато меншу активну потужність (запис бітів швидше і менша вартість), більш високу швидкість запису (на багато), набагато більшу ємність, набагато меншу вартість за біт і дуже простий у використанні для зберігання файлів. завдяки меншій швидкості читання при використанні його для виконання коду вам справді потрібно приманити його в таран.
Цитувати невеликий розділ із великою таблицею над ним ...
Спалах NAND дешевший, тому ви хочете використовувати його, якщо зможете. Недолік - це не настільки надійно. Спалах NAND швидший у більшості операцій, за винятком - невеликі зчитування з випадкового доступу. Якщо ви хочете прочитати пару байт з випадкової адреси в пам'яті, 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 читатись і програмуватися індивідуально.