Risposte:
C'è un sacco di compromessi.
Wikipedia anche:
Nonostante i transistor aggiuntivi, la riduzione dei cavi di terra e delle linee di bit consente un layout più denso e una maggiore capacità di memorizzazione per chip. Inoltre, il flash NAND in genere può contenere un certo numero di errori (il flash NOR, come viene utilizzato per una ROM BIOS, dovrebbe essere privo di errori). I produttori cercano di massimizzare la quantità di memoria utilizzabile riducendo la dimensione del transistor al di sotto della dimensione in cui possono essere fatti in modo affidabile, alla dimensione in cui ulteriori riduzioni aumenterebbero il numero di guasti più velocemente di quanto aumenterebbe la memoria totale disponibile.
Quindi, il flash NOR può essere indirizzato più facilmente, ma non è nemmeno così denso.
Se dai un'occhiata a un PDF di confronto abbastanza decente.
NOR ha una potenza stand-by inferiore, è facile per l'esecuzione del codice e ha un'alta velocità di lettura.
La NAND ha una potenza attiva molto più bassa (la scrittura dei bit è più veloce e un costo inferiore), una velocità di scrittura più elevata (di molto), una capacità molto più elevata, un costo per bit molto più basso ed è molto facile da usare per l'archiviazione dei file. a causa della sua bassa velocità di lettura quando lo si utilizza per l'esecuzione del codice, è necessario fantasma su ram.
Per citare una piccola sezione con una grande tabella sopra di essa ...
Il flash NAND è più economico, quindi puoi usarlo se puoi. Lo svantaggio è che non è così affidabile. Il flash NAND è più veloce nella maggior parte delle operazioni, con la notevole eccezione delle letture di accesso casuale di piccole dimensioni. Se si desidera leggere un paio di byte da un indirizzo casuale in memoria, NOR è più veloce. Per letture di memoria di grandi dimensioni, NAND fa ragionevolmente bene e in realtà batte NOR per blocchi abbastanza grandi.
La maggior parte dei sistemi operativi integrati include codice per correggere gli errori in NAND Flash. Esistono anche microcontrollori con correzione dell'errore hardware. Il vero problema si verifica all'avvio: i bootloader di primo livello non dispongono di codice per la correzione degli errori e non hanno ancora configurato il controller di memoria per eseguire l'ECC hardware. È un po 'un problema a base di gallina e uovo: non puoi caricare il codice ECC senza errori perché non hai ancora caricato il codice ECC.
Per ovviare a questo problema, alcuni produttori di memoria specificheranno una determinata regione del chip che è garantita priva di errori (i primi 4 kB o qualcosa del genere). Metti lì un bootloader con software ECC (come U-boot ), lo leggi senza errori e poi lo usi per leggere il kernel del tuo sistema operativo, correggendo gli errori mentre procedi. Puoi anche archiviare un bootloader in un flash seriale e usare semplicemente NAND flash per cose di grandi dimensioni come un kernel del sistema operativo o un filesystem.
Ho trovato utile questa nota di applicazione Atmel: http://www.atmel.com/dyn/resources/prod_documents/doc6255.pdf
NOR consente l'accesso casuale, ma NAND no (solo accesso alla pagina).
Da Wikipedia :
NOR e NAND flash prendono il loro nome dalla struttura delle interconnessioni tra celle di memoria. Nel flash NOR, le celle sono collegate in parallelo alle linee di bit, consentendo alle celle di essere lette e programmate individualmente. La connessione parallela delle celle assomiglia alla connessione parallela dei transistor in una porta NOS CMOS. Nel flash NAND, le celle sono collegate in serie, simile a un gate NAND. Le connessioni in serie consumano meno spazio di quelle parallele, riducendo il costo del flash NAND. Di per sé, non impedisce alle cellule NAND di essere lette e programmate individualmente.