Respostas:
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 :
NOR e NAND flash obtêm seus nomes da estrutura das interconexões entre as células de memória. No flash NOR, as células são conectadas em paralelo às linhas de bit, permitindo que as células sejam lidas e programadas individualmente. A conexão paralela de células se assemelha à conexão paralela de transistores em uma porta CMOS NOR. No flash NAND, as células são conectadas em série, semelhante a uma porta NAND. As conexões em série consomem menos espaço que as paralelas, reduzindo o custo do flash NAND. Não impede, por si só, que as células NAND sejam lidas e programadas individualmente.