NAND Flash 与 NOR Flash间的区别

2024-05-12 03:36
文章标签 区别 flash nand

本文主要是介绍NAND Flash 与 NOR Flash间的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

非易失性存储器是一种即使未通电也能保持其内容的存储器。非易失性存储器可以有不同的形式:

  • ROM – 只读存储器,数据写入一次,允许多次读取访问。

  • PROM – 可编程只读存储器,数据写入一次(不是在制造过程中,而是以后的任何时候),允许多次读取访问。

  • EPROM – 可擦除的可编程只读存储器,可以通过紫外线照射擦除内容后重新编程。

  • EEPROM – 电可擦除可编程只读存储器,可通过电压脉冲擦除。它可以被重写有限的次数。它仅在有限的时间内存储数据。

  • Flash EEPROM – 比EEPROM更先进,速度更快。允许以块的形式擦除和存储数据,但不允许以字节为单位。

Flash目前非常流行,主要有两种最流行的类型:NOR Flash和NAND Flash。

用途

  • NOR 内存用于存储代码和执行。允许快速随机访问内存阵列中的任何位置。
  • NAND存储器用于数据存储。需要相对较长的随机访问。编程和擦除比NAND存储器更容易。
  • NAND内存的成本比NOR内存便宜。

内存架构

  • NOR 和 NAND 闪存将信息存储在由浮栅晶体管制成的存储单元中。

  • 在 NOR 闪存中,每个存储单元的一端连接到源线,另一端直接连接到类似于 NOR 门的位线。

  • 在NAND闪存中,多个存储单元串联连接,类似于NAND门。
    NAND AND NOR

  • NOR闪存提供足够的地址线来映射所有存储器范围。它提供快速随机访问和较短的读取时间。缺点包括较大的单元尺寸,导致更高的bit成本以及较慢的写入和擦除速度,一旦NOR存储单元足够大,就会使其变得昂贵。

  • NAND存储单元体积更小,成本更低,具有更高的编程与擦除速度。但是,它的读取速度较低,不允许随机访问。代码执行是不同的,NAND内存比NOR内存更复杂,NAND闪存的代码执行是通过将内容隐藏到RAM来实现的,这与直接从NOR闪存执行代码不同。

  • NOR整个生命周期表现好 ,不会发生比特翻转。

  • NAND另一个主要缺点是存在坏块,NAND闪存在器件的整个生命周期内会发生比特翻转,因此需要在提供纠错码(ECC)功能。

内存容量

  • NAND存储器的密度远高于NOR闪存的密度,这主要是因为其每比特成本较低。
  • 由于其较高的密度,NAND闪存主要用于数据存储应用。

擦除、读取和写入

  • 在 NOR 和 NAND闪存中,存储器被组织成擦除块。此体系结构有助于在保持性能的同时保持较低的成本。例如,较小的块大小可实现更快的擦除周期。无论块有多小,需要的块数量越大,闪存的芯片尺寸就越大。

  • 由于其每比特成本较低,与 NOR 闪存相比,NAND 闪存可以更经济高效地支持更小的擦除块。

  • NAND 闪存中的擦除操作很简单,而在 NOR 闪存中,每个字节都需要用“0”写入才能擦除。这使得 NOR 闪存的擦除操作比 NAND 闪存慢得多。

  • 在NAND闪存中,使用多路复用地址和数据总线访问内存。典型的 NAND 闪存使用 8 位或 16 位多路复用地址/数据总线,并带有附加信号,例如芯片使能、写入使能、读取使能、地址锁存使能、命令锁存使能和就绪/忙。NAND闪存需要提供命令(读取、写入或擦除),然后是地址和数据。这些额外的操作使NAND闪存的随机读取速度大大变慢。例如,某NAND 闪存需要 30μS,而某NOR 闪存需要 120ns,NAND 的速度慢了 250 倍。

  • 为了克服或减少读取速度较慢的限制,内存通常以 NAND 闪存中的page形式读取,每页都是擦除block的较小细分。仅在每个读取周期开始时,才使用地址和命令周期按顺序读取一页的内容。

  • NAND 闪存的顺序访问持续时间通常低于 NOR 闪存设备中的随机访问持续时间。在NOR闪存的随机存取架构下,每个读取周期都需要切换地址线,从而累积顺序读取的随机存取。随着要读取的数据块大小的增加,NOR 闪存中的累积延迟变得大于 NAND 闪存。因此,NAND闪存的顺序读取速度更快。但是,由于 NAND 闪存的初始读取访问持续时间要长得多,因此只有在传输大型数据块时,性能差异才会显现出来。

  • NAND 和 NOR 闪存,在重新编程之前,都应擦除闪存设备。在这两种闪存技术中,只有当块为空时,才能将数据写入块。NOR Flash 的擦除操作已经很慢,这使得写入操作更加缓慢。在NAND闪存中,与读取类似,数据通常以page为单位写入或编程。

功耗

  • 在初始上电期间,NOR 闪存通常比 NAND 闪存需要更多的电流。但是,NOR 闪存的待机电流远低于 NAND闪存。两种闪存的瞬时有功功率相当。因此,有功功率由内存处于活动状态的持续时间决定。NOR 闪存在随机读取方面具有优势,而 NAND闪存在擦除、写入和顺序读取操作方面的功耗相对较低。

可靠性

  • 闪存存在一种称为比特翻转bit-flipping的现象,其中某些位可能会被反转。
  • 这种现象在NAND闪存中比在NOR闪存中更常见。出于良率考虑,NAND闪存在出厂时随机散布着随机的坏块。随着擦除和编程周期在NAND闪存的整个生命周期中继续进行,更多的存储单元会损坏。
  • 因此,坏块处理是NAND闪存的强制性功能。另一方面,NOR 闪存附带零坏块,在内存的生命周期内坏块累积非常低。
  • 因此,在存储数据的可靠性方面,NOR 闪存比 NAND 闪存更具优势。

数据保留

  • 可靠性的另一个方面是数据保留,NOR Flash具有优势。
  • 但是编程和擦除周期的数量也是同时需要考虑的重要特征。

这篇关于NAND Flash 与 NOR Flash间的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981491

相关文章

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Spring中@RestController和@Controller的使用及区别

《Spring中@RestController和@Controller的使用及区别》:本文主要介绍Spring中@RestController和@Controller的使用及区别,具有很好的参考价... 目录Spring中@RestController和@Controller使用及区别1. 基本定义2. 使

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

Java中的runnable 和 callable 区别解析

《Java中的runnable和callable区别解析》Runnable接口用于定义不需要返回结果的任务,而Callable接口可以返回结果并抛出异常,通常与Future结合使用,Runnab... 目录1. Runnable接口1.1 Runnable的定义1.2 Runnable的特点1.3 使用Ru

Java中Runnable和Callable的区别和联系及使用场景

《Java中Runnable和Callable的区别和联系及使用场景》Java多线程有两个重要的接口,Runnable和Callable,分别提供一个run方法和call方法,二者是有较大差异的,本文... 目录一、Runnable使用场景二、Callable的使用场景三、关于Future和FutureTa

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短