Quais são as diferenças e onde você usaria cada uma?
Há muitas vantagens e desvantagens.
Wikipedia também:
Apesar dos transistores adicionais, a redução de fios terra e linhas de bits permite um layout mais denso e maior capacidade de armazenamento por chip. Além disso, normalmente é permitido que o flash NAND contenha um certo número de falhas (espera-se que o flash NOR, como é usado para uma ROM do BIOS, esteja livre de falhas). Os fabricantes tentam maximizar a quantidade de armazenamento utilizável diminuindo o tamanho do transistor abaixo do tamanho em que podem ser feitos com segurança, para o tamanho em que reduções adicionais aumentariam o número de falhas mais rapidamente do que o armazenamento total disponível.
Portanto, o flash NOR pode ser mais fácil, mas não é tão denso.
Se você der uma olhada em um PDF de comparação bastante decente.
O NOR possui menor poder de espera, é fácil para a execução do código e possui uma alta velocidade de leitura.
O NAND possui uma potência ativa muito menor (a gravação de bits é mais rápida e com menor custo), maior velocidade de gravação (em grande parte), capacidade muito maior, custo muito menor por bit e é muito fácil para o armazenamento de arquivos. devido à sua velocidade de leitura mais baixa ao usá-lo para execução de código, você realmente precisa fantasma-lo para ram.
Para citar uma pequena seção com uma grande mesa acima dela ...
O flash NAND é mais barato, então você deseja usá-lo se puder. A desvantagem é que não é tão confiável. O flash NAND é mais rápido na maioria das operações, com a exceção notável sendo pequenas leituras de acesso aleatório. Se você deseja ler alguns bytes de um endereço aleatório na memória, a NOR é mais rápida. Para leituras de memória grande, o NAND se sai razoavelmente bem e, na verdade, supera o NOR para pedaços grandes o suficiente.
A maioria dos sistemas operacionais incorporados inclui código para corrigir os erros no NAND Flash. Existem também microcontroladores com correção de erros de hardware. O problema real acontece no momento da inicialização - os carregadores de inicialização de primeiro nível não possuem código de correção de erros e ainda não configuraram o controlador de memória para executar o ECC do hardware. É um problema de galinha e ovo - você não pode carregar o código ECC sem erros, porque ainda não o carregou.
Para contornar esse problema, alguns fabricantes de memória especificarão uma determinada região do chip que é garantida como livre de erros (os primeiros 4 kB ou algo assim). Você coloca um carregador de inicialização com o software ECC (como o U-boot ), lê-o sem erros e depois o usa para ler o kernel do sistema operacional, corrigindo os erros à medida que avança. Você também pode armazenar um carregador de inicialização em um flash serial e apenas usar o flash NAND para coisas grandes, como um kernel do sistema operacional ou sistema de arquivos.
Achei útil esta nota de aplicação do Atmel: http://www.atmel.com/dyn/resources/prod_documents/doc6255.pdf
NOR permite acesso aleatório, mas NAND não (somente acesso à página).
Da Wikipedia :
fonte