
作者/采购订单
编辑/Po
制作/阿保1990
美食家:兄弟,什么是储藏室?当我买手机或电脑时,销售人员总是说我会买一个大内存的。三星很好,品牌很大,几乎没有什么问题。我只需要看看哪一个内存大,然后买那个。
吉歌:好吧,这是一个很长的故事。让我慢慢来。让我先问你一个问题。你还记得上周三你午餐吃了什么菜吗?
吃瓜的人群:嗯,我已经不记得了
看,如果你没有记非易失性存储器技术不断更新和改进,从早期的不可擦除PROM到后来的光可擦除EPROM、电可擦除EEPROM,以及现在的主流闪存。现在RAM领域中也有非易失性静态存储器,如铁电存储器(FRARM)、相变存储器(PRAM)、磁存储器(MRAM)和电阻存储器。因此,市场认为功耗易失性设备是RAM,这是不准确的。
事实上,这里有一个简单的理解:每次手机关机并重新打开时,都需要重新启动软件。此时,启动软件需要放在FLASH中,因为断电后程序仍然可以保存,所以可以启动。但是,您的吃鸡游戏不需要立即启动,并且无法访问此界面。因此,这部分数据保存在DDR中。一旦停电,这部分数据将不可用,您需要重新输入此游戏才能继续。
2.存储的发展历史
1.存储器主要由DRAM、NAND FLASH和NOR FLASH组成。
在众多的半导体存储器中,DRAM和NAND闪存的市场规模最大,都在数百亿美元左右。其中,DRAM在2018年的市场规模已经达到1000亿美元。此外,NOR Flash在存储芯片方面拥有更大的市场空间,其市场规模随着功能手机的消失而逐渐缩小。然而,近年来,随着新兴市场的崛起,NOR Flash的市场空间逐渐恢复。

存储行业出现于20世纪60年代,是半导体行业的一个重要分支。其市场规模已从数十亿美元逐渐增长到现在的近1000亿美元,约占整个半导体行业的25%。DRAM和闪存是存储芯片行业占比最高的两个分支,其总销售额占整个存储芯片行业90%以上的市场份额。
存储行业的发展过程大致可以分为三个阶段。1990年之前,DRAM是存储芯片市场的主要产品,伴随着少量的EPROM和EEPROM。从1990年到2000年,N OF Flash开始逐渐占据一定的市场份额。2000年后,NAND闪存开始经历爆炸式增长,其市场规模接近DRAM。然而,NOF Flash的市场规模在2006年达到峰值后逐渐下降,但在过去两年中开始呈现小幅上升的趋势。

2.存储行业正在从美国转向日本,从日本转向韩国。
从下图中可以看出,随着历史的发展,存储行业的主要参与者发生了重大变化,主导地位逐渐从美国公司(1969-1984)转移到日本公司(1985-1996),最后转移到韩国公司(1996年至今)。
目前,存储行业的主要参与者包括来自韩国的三星和SK海力士;日本东芝、Armor、日立、NEC;
美国的美光、英特尔、西部数据等。

3.NAND FLASH开发简介
经过50年的发展,闪存已经从EPROM发展到NOR、2D flash,再到现在的3D flash。

经过50年闪存芯片的发展,闪存的容量迅速增加。在20世纪之前,主流的NOF FLASH存储容量通常在100MB以下。到2004年,闪存存储容量进入GB时代,从2004年增加到2011年的128GB。2013年3D NAND闪存技术的实践进一步提高了闪存的容量,从128GB增加到现在的2TB。

NAND FLASH原厂粒子的竞争格局大致可以分为三个阶段:
在2013年第四季度之前,三星、Armor、Magnum、海力士和英特尔是五大NAND闪存制造商,几乎占据了NAND闪存颗粒市场的全部份额。
2013年第四季度至2017年第三季度,西部数据作为另一家主要的NAND闪存制造商加入了竞争,并获得了巨大的市场份额,导致Armor的市场份额下降了约10%,三星的市场份额减少了5%。
2017年第三季度之后,包括长江存储在内的其他制造商逐渐占据了一定的市场份额,打破了几乎被前六大制造商垄断的市场格局。

4.DRAM发展简介
自美国Advanced Memory推出第一款1K DRAM以来,已有50多年的历史,该产品创造了1万亿美元的产值。DRAM市场格局正在迅速变化。从20世纪80年代的百花齐放,到2000年的战国之争,再到目前的寡头垄断,全球DRAM市场的参与者正在不断变化。

目前,DRAM芯片的市场格局由三星、SK海力士和美光主导。三大巨头的市场份额总计超过95%,而三星的一家公司的市场份额已接近50%。寡头垄断的格局使中国企业对DRAM芯片的议价能力较低,使DRAM芯片成为中国受限制最严重的基础产品之一。
0
3.国内重要存储制造商介绍
在过去的两年里,由于美帝的制裁,存储已经成为许多企业的瓶颈产品。在经历了17年的涨价和无限交货期的痛苦日子后,越来越多的企业正在参与存储的研发,并加快推出新产品。国内存储企业包括巨晨集团、长江存储、兆易创新(603986,股吧)、合肥长鑫、紫光集团等。以下是对具有独特特色的企业的简要介绍。
1
1.聚晨集团EEPROM市场份额最高的国内企业
聚晨有限公司目前拥有三条产品线:EEPROM、音圈电机驱动芯片和智能卡芯片。2019年,EEPROM收入占比88.14%,这是公司的核心业务。聚晨有限公司在全球EEPROM芯片市场上占有第三大市场份额,在EEPROM手机摄像头市场占有40%以上的份额。其客户群基本覆盖了国内顶级手机制造商,是该细分领域无可争议的领先企业。
2
该公司在1.01u的基础上实现了128KBit产品的大规模生产㎡ 2018年EEPROM存储单元。此外,公司将继续加大研发投入,开发新的EEPROM产品,增强公司的股份竞争力。
3
2.兆易创新,国内领先的NOR闪存制造商
兆易创新是一家全球芯片设计公司,致力于各种类型的存储器、控制器和外围产品的设计和开发。公司在最初的NOF Flash的基础上不断研发,先后推出了NAND Flash和MCU。其中,NOF Flash的营收占比超过70%。兆易创新的SPI NOF Flash在中国市场占有率第一,也是……
全球三大供应商之一。2O20Q1兆易创新NOF Flash的市场份额达到18.8%,累计出货量超过130亿件,年出货量超过28亿件。
4
NOF闪存按容量可分为高容量、中容量和低容量。该创新主要提供中低容量NOF闪存产品,随着美光和赛普拉斯在低端NOF闪存市场的退出以及公司技术能力的进步,其市场份额持续增加。随着市场空间和市场份额的同步提升,未来公司NOF Flash的销量仍有显著提升空间。
5
2019年,兆易创新GD25的SPI NOR闪存全系列产品通过了AECQ100认证,成为唯一一款全国生产的汽车标准闪存产品。它可以为汽车前端市场和需要汽车标准产品的特定应用提供高性能、可靠的闪存解决方案。2020年,该公司推出了中国首款2Gb高性能SPI NOR闪存产品,主要针对需要高容量存储、高可靠性和超高速数据吞吐量的工业、汽车、Al和SG相关应用领域。
6
3.长江存储3D NAND闪存
长江存储成立于2016年7月,总部位于武汉,是一家IDM存储企业,专门从事3D NAND闪存芯片的设计、生产和销售。它是紫光集团旗下重要的存储芯片制造商。截至目前,长江存储已在武汉、上海、北京等地建立了研发中心,在全球拥有5000多名员工,其中包括约2000名研发工程师。该公司于2016年底开工建设,并于2018年底实现32层3D NAND的量产。该公司开创了XtakIng技术的先河,并利用该技术成功开发了64层3D NAND。256Gb(32GB)TLC 3D NAND于2019年下半年大规模生产。
7
长江存储由湖北紫光国奇科技、国家集成电路基金、湖北科技投资、湖北国信产业投资基金共同控制,湖北紫光国奇科技为第一大股东,占比51.04%。
8
长江存储专注于3D NAND闪存业务,于2020年4月10日推出第三代产品128层3D NAND存储芯片。它直接跳过了96层,加快了追赶外国制造商先进技术的步伐。128层的3D NAND将与海外制造商的差距缩小到了一年。未来,128层QLC版本将率先应用于消费级固态硬盘,并逐步进入企业级服务器、数据中心等领域,以满足未来5G和AI时代多样化的数据存储需求。
9
4.合肥长鑫,国内领先的DRAM制造商
目前,中国只有一家DRAM制造商,合肥长鑫。合肥长信成立于2016年,由合肥工业投资集团牵头,专注DRAM方向。2017年,兆易创新与合肥市工业投资公司签署协议,预算180亿元,在合肥开展19nm 12英寸DRAM项目。兆易创新最初投资36亿元,并同意公司未来收购合肥工业投资有限公司在该项目中的股权。同时,双方同意合肥长信将优先使用合肥长信的子公司春力集成,用于兆易创新的OEM利基产品项目。
昌信通过合作和协议获得专利,避免了福建金华的悲剧。2019年5月,合肥长鑫对外宣布,其DRAM技术源自启梦达,通过合作获得了超过1000万份DRAM相关技术文件和1.6万项专利。随后,合肥长信与Polaris Innovations Ltd和Blue Platinum World签署了iT协议,获得了DRAM芯片技术文件和专利许可。
/2.jpg“/>0
5.北京君正(300223,股吧)收购有机硅,专注进军汽车DRAM领域
在汽车领域,大多数人都知道ISSI是一家制造商。NAND FLASH和DDR都非常有名,在整个汽车领域都很有名。好消息是,它现在完全由一家中国公司控制。2019年,北京君正宣布计划通过发行股票和支付共计72亿元现金的方式收购北京思诚100%的股权结构,并获得了证监会的批准。下图是整个股权的示意图。
1
与三星电子、美光科技等全球存储行业领导者主要定位于通用领域不同,ISSI的集成电路芯片产品主要定位于汽车电子、工业、通信等专业化产品领域,毛利率较高,市场需求相对稳定。随着领先的IDM制造商逐渐增加对更先进的通用存储芯片制造工艺的投资,他们在传统和工业级产品上的产能逐渐减少,他们正在逐渐放弃一些小规模的市场。
2
北京思诚以Fabless模式运营,专注于集成电路产品的研发和设计。凭借多年的研发积累,其芯片产品性能、极端环境下的可靠性和稳定性处于行业前列,使其产品在整机和汽车客户的市场上更具竞争力。它旨在为汽车和工业客户提供高传输速度。高容量存储芯片可以保持良好的出货量。
3
4.存储简介
1) 存储器,也称为主存储器,是一种可以由CPU直接寻址的存储空间,由半导体器件制成
2) 存储器的特点是存取速度快
4
记忆的作用
1) 临时存储CPU计算数据
2) 通过硬盘等外部存储器交换的数据
3) 确保CPU计算的稳定性和高性能
5
上图清楚地显示了使用不同的存储大小和速度,并且顶部的存储容量较小。例如,L1和L2高速缓存的容量非常小,但速度非常快,价格相对昂贵。
6
向下看DDR、NOR、NAND、硬盘驱动器等等,你会发现容量在增加,但通信速度会变慢。如果你从硬盘复制数据,它通常会达到50MB/S,谢天谢地,但DDR可以达到2133MHz的速度。在相同容量的情况下,存储设备越低,价格就越便宜。
7
到了科普的时候,假设室内烟头不小心烧到了垃圾桶,那么首先要灭火的就是桌子上水杯里的水。然后,如果它还没有熄灭,那就是厨房里盆里的水。接下来是家里水龙头里的水,最后是消防局救援车里的水。
尽管消防车里的水越来越多,但它无法水解到足以到达火灾的程度。打119电话是不可能的。我的垃圾桶着火了,当消防部门赶到时,估计房子里已经完全空了。因此,目前需要最快的解决方案。虽然杯子里的水是最快的,但有80%的机会扑灭这种烟头产生的火。如果仍然不能使用,可以使用厨房水池中的水。尽管这两个容器中的水不多,但它们的效率是最快的。
如果火势很大,应该是水管里的水或消防通道里的水来救。如果这两种都救不了,应该是消防叔叔消防车高压水里的水。有了这个概念,我们来看看L1和L2缓存的内容。
芯片内部缓存简介:
"/>8
上图是全智T7芯片的内部手册示意图。您可以从许多芯片手册中看到,有I缓存、D缓存和L2缓存。这是上图中L1和L2高速缓存芯片的内部高速缓存。
缓存是存储子系统的一个组件,用于存储程序经常使用的指令和数据,这是缓存的传统定义。从广泛的角度来看,Cache是快速设备保留的缓冲区,用于缓解访问慢速设备的延迟,可以在最大限度地提高数据传输速率的同时掩盖访问延迟。
高速缓存是位于CPU和内存之间的临时内存,其容量比内存小,但交换速度更快。高速缓存中的数据是内存的一小部分,但CPU将在短时间内访问这一小部分。当CPU调用大量数据时,它可以避开内存,直接从缓存中调用以加快读取速度。由此可见,在CPU中添加Cache是一种高效的解决方案,使整个内存存储成为一个既有缓存速度又有内存容量的存储系统。缓存对CPU性能有很大影响,主要是由于CPU的数据交换顺序以及CPU和缓存之间的带宽。
缓存的工作原理
1.阅读顺序
当CPU想要读取一段数据时,它首先查找缓存,如果找到,它会立即读取并发送给CPU进行处理;
如果没有找到,可以以相对较慢的速度从内存中读取,并将其发送到CPU进行处理。同时,可以将该数据所在的数据块调用到高速缓存中,以便将来可以从高速缓存中读取整个数据块,而无需再次调用内存。
正是这种读取机制导致CPU在从缓存中读取时具有非常高的命中率,这意味着CPU读取的下一个数据的90%都在缓存中,而只需要从内存中读取大约10%。这大大节省了CPU直接读取内存的时间,也消除了CPU读取数据时等待的需要。总的来说,CPU读取数据的顺序是先缓存,然后是内存。
2.缓存分类
以前,我们将缓存视为一个整体,现在我们需要对其进行分类和分析。从奔腾开始,英特尔将缓存分为L1和L2,通常是一级缓存和二级缓存。
在以前的概念中,一级缓存被集成到CPU中,并被称为片上缓存。在L1中,还存在数据高速缓存和指令高速缓存。它们用于存储数据和执行该数据的指令,并且CPU可以同时访问这两个缓存,从而减少了由竞争缓存引起的冲突,并提高了处理器性能。
在P4处理器中,使用称为动态跟踪高速缓存的高级一级指令高速缓存。它直接连接到执行单元和动态跟踪引擎,可以快速找到执行的指令,并将指令的顺序存储在跟踪缓存中。这减少了主执行循环的解码周期,并提高了处理器的计算效率。
以前,二级缓存没有集成到CPU中,而是集成在主板上或与CPU相同的电路板上,因此它也被称为片外缓存。但从P III开始,由于技术的进步,二级缓存被集成到CPU核心中,并以与主频相同的速度运行,结束了二级缓存和CPU宽频划分的历史,使二级缓存与一级缓存在性能上相等,并实现了更高的传输速度。L2Cache只存储数据,因此它不区分数据缓存和指令缓存。在不改变CPU核心的情况下,增加二级缓存的容量可以提高性能。同一核心的高端CPU和低端CPU之间的差异往往在于二级缓存,这表明了二级缓存的重要性。当前CPU中一级缓存和二级缓存之间的唯一区别是读取顺序。
3.读取命中率
CPU在缓存中找到有用的数据被称为命中,只有当缓存中没有CPU需要的数据时,它才会访问内存。理论上,在具有二级缓存的CPU中,读取一级缓存的命中率为80%。也就是说,CPU从一级缓存中找到的有用数据占总数据的80%,其余20%从二级缓存中读取。由于无法准确预测要执行的数据,读取L2的命中率也在80%左右。因此,剩余的数据必须从内存中调用,但这已经是一个相对较小的比例了。在一些高端CPU中,我们经常听说L3缓存。它是为读取二级缓存后的未命中数据而设计的缓存。在具有三级缓存的CPU中,只有大约5%的数据需要从内存中调用,这进一步提高了CPU效率。
为了确保CPU访问期间的高命中率,缓存中的内容应该被某种算法替换。
一种常用的算法是“最近最少使用的算法”,它消除了过去一段时间内访问次数最少的行。因此,有必要为每一行设置一个计数器。LRU算法将命中该行的计数器重置为零,并将其他行的计数器加1。当需要替换时,删除行计数器中计数值最高的数据行。这是一种高效科学的算法,其计数器重置过程可以从缓存中消除一些不再需要的频繁调用的数据,提高缓存的利用率。
本期将首先解释芯片上的缓存,以下问题将涵盖E2PROM、NOR FLASH、NAND FLASH、EMMC和DDR的内容。
以下主要介绍在断电后仍然可以保存程序的设备,如FLASH。在我们实际的产品设计中,我们经常会遇到这些类型的存储,如E2PROM、NOR FLASH、NAND FLASH、EMMC等。今天,我将重点介绍这些类型在汽车应用中的具体应用和注意事项。
5.具有低功耗和高擦除计数的EEPROM的优选解决方案
EEPROM的全名是“电可擦除可编程只读存储器”,w……
ch可以擦除现有信息,并在计算机或专用设备上重新编程。它通常用于即插即用。在存储容量不大且需要频繁更新的情况下,EEPROM由于其数百万次擦除和更快的写入速度,与闪存相比是更好的选择。
近年来,EEPROM越来越多地集成到SOC芯片中,还可以与AMOLED、指纹、触摸、摄像头、蓝牙、无线等芯片组合形成模块。EEPROM具有多功能性、稳定耐用的数据存储以及各种小容量规格,可以满足相机模块、可穿戴设备和其他设备的参数存储要求。
9
也许你会说,Ji Ge没有那么多需要擦除次数的使用场景,它不会达到一百万次。吉哥,我给你讲一个场景,汽车液晶仪表板的总里程目前是通过液晶仪表板EEPROM存储的。每过一段时间,总里程数就会增加,而这些数据也会发生变化。它将被写入EEPROM。想象一下,如果你每分钟都写,那么你将不得不在10年内写5256000次。当然,这并没有那么夸张,车辆已经连续运行了10年,EEPROM的存储大小也需要多次写入才能被覆盖和擦除。并不是每次写入时都会直接重写,因此EEPROM的使用寿命无法满足车辆的使用寿命。
此外,在娱乐中央导航系统中,电源故障后需要维护一些数据。一个常见的功能是电源故障记忆,例如用户的最后一个广播节目在哪个频道,这提供了更好的用户体验。在这一点上,每次都需要使用EEPROM来维护这些数据,因为用户的最终关机状态是不同的,比如这次听MP3歌曲,下次听FM广播频道。在这一步上,有必要闪存EEPROM,为了防止突然停电,许多ter1方法在固定时间存储个性化用户数据以进入EEPROM。即使突然停电,它仍然存储突然停电前的最新用户操作。
由于EEPROM的容量有限,该设备的主要用途是存储一些参数,也存储需要频繁重写的数据。无法存储启动程序等,因为当前ARM架构的启动程序无法放置在EEPROM中。
6、 NOR FLASH和NAND FLASH最佳合作伙伴
美食家:什么样的伴侣是最好的?
吉歌:这么说吧。吃过槟榔的朋友都知道,槟榔最好的伴侣是香烟。俗话说,槟榔配香烟有无穷的力量。
0
吉歌在做机顶盒的时候,很多项目都配置了NOR FLASH+NAND FLASH。起初,我不明白为什么要这样做。在许多情况下,它是基于客户的高级安全要求。这种配置需要什么样的安全要求?NAND FLASH的存储容量完全符合程序的要求,NOR FLASH的存在是没有原因的。经过深入了解,我终于明白了背后的原因。我将首先解释原因,然后我们将慢慢谈论FLASH的内部架构。
1.NOR的成本相对较高,在读写数据时不容易出错。总的来说,它更适合存储少量的代码。
2.Nand闪存的成本相对较低。数据读取和写入在使用过程中容易出错,因此通常需要有相应的软件或硬件数据验证算法,统称为ECC。由于其相对较大的容量和较低的价格,它适合存储大量数据。它在嵌入式系统中的作用相当于PC上的硬盘驱动器,用于存储大量数据。
因此,机顶盒的一个常见应用组合是使用小容量的No Flash来存储启动代码,例如uboot。在系统启动之后,包括SDRAM在内的相应硬件被初始化。然后,Nand Flash上的Linux内核被读取到内存中,在完成需要完成的操作后,它跳到SDRAM来执行内核。内核解压缩后,它开始运行。最后,Linux内核启动后,转到Nand Flash并挂载根文件,例如jffs2、yaffs2等,挂载完成后,运行初始化脚本,启动控制台交互,然后运行……
通过控制台与内核进行交互。这就完成了整个系统启动过程。然而,NorFlash存储Uboot,Nand Flash存储Linux的内核映像和根文件系统,剩余的空间被划分为一个数据区。
1.NAND FLASH基本介绍
1
上图显示了FLASH的存储原理,它使用浮门技术来存储数据。存储电荷的量取决于施加到图中外部栅极的电压,该电压控制是对存储单元充电还是释放存储单元。数据的表示方式是存储电荷的电压是否超过特定阈值Vth。
事实上,这非常简单,即通过存储的电荷是否超过阈值Vth来确定高电平和低电平。想想法律是如何决定一个人是否有完整的民事行为的。年龄是决定你是否达到18岁的一个重要指标。
2
看到这里,吃瓜群众会问,吉哥,这里的存储只有0和1吗?这意味着什么,以及淘宝上一些写为SLC、MLC和TLC的TF卡之间的区别。
3
根据内部存储数据单元中的不同电压电平,即单个存储单元存储的是1位数据还是多位数据,Nand Flash可以分为SLC、MLC和TLC。
1.SLC,单电平单元:
只存储一位数据的单个存储单元,表示为1或0
如上所述,对于数据的表示,存储在单个存储单元中的内部电荷的电压与特定阈值电压Vth相比,如果它大于该Vth值,则意味着1。相反,如果它小于Vth,则意味着0
对于nand Flash数据写入1,它是控制外部栅极充电,以便存储的电荷足够。如果它超过阈值Vth,则它指示1。对于写入0,这意味着将其放电并将电荷减少到小于Vth,即0。
2.MLC,多级单元:
与SLC相对应的是,它是一个单一的存储单元,可以存储多个比特,如2比特、4比特等。实现机制相对简单,就是控制内部电荷的量,将其划分为多个阈值,通过控制内部电荷量来实现我们需要的不同数据的存储。
例如,如果输入电压是Vin=4V,那么我们可以设计2的阈值为2的幂,其中Vin=1V的1/4、Vin=2V的1/4,Vin=3V的3/4和Vin=4V,分别表示2位数据00、01、10和11。对于写入数据而言,这意味着充电。通过控制内部电荷的量,可以相应地表示不同的数据。
对于读取,它是通过相应的内部电流实现的,然后通过一系列解码电路来解析存储的数据。这些特定的物理实现需要精确的设备和技术来实现精确的数据写入和读取。
类似地,TLC也持有相同的原理,除了单个存储单元可以存储3位数据,这被称为2到3次方=8电平单元。
这实际上可以用这种简单的方式来理解。SLC就像把你的学费分为两类:一类是18岁之前的学费,另一种是18岁之后的学费,每类都是10W元。然后你可以得到20WRMB,而MLC通过将其分为四个阶段:小学、中学、高中和大学而更加完善。如果每个阶段仍然是10WRMB,那么您可以获得40WRMB。把自己想象成一个存储设备,你收到的钱越多,你存储的数据就越多。当然,一个人的表现并没有太大的差异。如果是一个班级或一所学校,总的总结差距会很大。
那么,为什么要为SLC构建FLASH呢?TLC有这么多的存储容量,但当你考虑到FLASH的写入寿命时,它也有没有充满电的风险,因为放电实际上很容易。如果你把它分为更多的电平,那么某个电压电平就越有可能无法精确满足,寿命就越短,读取时间就越长。
4
2.NAND FLASH的物理体系结构层分析
5
在解释NAND FLASH的体系结构之前,让我们先看一下库。每个人都去过图书馆,你通常是怎么在图书馆找到书的?首先,去不同的楼层,因为不同楼层的书的大致范围不同。电话……
哲学、化学、人文学科和小说都分布在不同的楼层。然后,根据书架上的分类,有些仍然按年龄分类,有些则按国籍分类,然后在书架上找到相应的书。
6
上图是我公司常用的Magnesia NAND FLASH MT29F1G08BAEAH4:E数据表中的描述。
让我们根据上面图书馆的书来提供一个有趣且易于理解的解释:
FLASH可以理解为一个库。我们看看图书馆里的书的数量,书越多,FLASH的容量就越大。每本书代表一个字节的数据容量。
1.nand flash由许多块组成,这里对应的块对应于库的层数。如果你想一想楼层越多,你的书就越多,这里的Magnolia NAND FLASH有1024个块,这意味着图书馆有1024层。用四川话来说,地板确实有点高,帽子被忽略了。
7
2.每个区块包含许多页面。这相当于图书馆一层楼有多少个房间,而这里的镁闪光灯每个街区有64页,这意味着每层楼有64个房间。
3.每页的数据大小相当于一个房间里有多少本书。在这里,我们看到Magnolia的规范被写为1页=(2K+64)字节。
8
每个人都去过图书馆,看到了一个小书架。在三个大书架前,有一个小书架,用来放置一些找不到归还的书,等待工作人员稍后整理归还。
每个页面对应一个称为空闲区域/冗余区域的区域。在Linux系统中,这个区域通常被称为OOB,它最初基于Nand Flash的硬件功能:数据在读写时相对容易出错。因此,为了确保数据的正确性,必须有相应的检测和纠错机制。这种机制被称为EDC(错误检测码)/ECC,因此设计了冗余区域,用于放置数据的验证值。
这里多余的数据是ECC数据,专用的NAND FLASH用于验证正常数据,因为FLASH的特性决定了数据容易翻转。最初,1是在这个位置写的,但外部门意外放电,现在它读取0。需要采取纠正措施。稍后我们将有机会介绍ECC验证的原理。
9
硬件通常支持512字节的数据,对应于用于存储验证生成的ECC值的16个字节,并且这512个字节通常被称为扇区。对于大小为2K+64字节的页面,它们基于512字节被划分为区域a、B、C和D,而下面64字节的OOB区域被划分为16个字节,每个字节被称为E、F、G和H区域,对应于存储数据区域a、B、C和D的ECC值。因此,在规范书中经常可以看到以下信息,表明以下是OOB区域。
在图书馆的理解中,每个房间有4个大书架,每个书架上有512本书。一个小书架可以容纳16本登记册,这样一个房间就有2048本有用的书和64本登记册。
要在一个块中对每个页面进行编程,它必须是连续的,而不是随机的。例如,如果一个块中有128个页面,则只能先对页面0进行编程,然后对页面1进行编程,。。。。,并且不能是随机的,例如,首先是第3页,然后是第1页、第2页、第0页、第4页。。。
3.NAND FLASH的一些读写功能
刚才说过,我们的图书馆有1024层,每层有64个房间。每个房间有2048本有用的书籍和64本用于会计和验证的书籍。
这个图书馆的馆长是一位记忆力不好的老人。如果你想从950楼的2号房间借第10本书,导演肯定不会记得是《红楼梦》还是《西游记》。
在这一点上,策展人会给你做这个手术。你可以直接把950层第二个房间里的所有书打包借给你。你可以把它们拿回去看看第10本是什么。虽然你很不愿意,但没有办法。要想知道这个房间里有哪本书,你必须把房间里所有的书都借出去。
0
我记得我们男人……
一个房间里有4个书架,每个书架上有512本书。如果你想知道第二个书架上的第一本书是什么,上图所示的架构就是NAND Flash的电连接方法。NAND闪存的连接方式是串联的。要读取上图中黄色字线的数据,需要增加所有其他字线的电压。在加压之后,漏极和源极电极处于导电状态。也就是说,要知道上图中红色框中的数据,需要连接蓝色框中的数字。因此,NAND闪存读取的数据的最小单位是页面,不能直接运行程序。所有数据必须先读取到ARM,然后才能运行。
让我们来看看其他存储设备的读取特性。N0R闪存是串联的,可以通过直接测量相应的位线和源线之间的连接来获得数据,而无需对字线加压。它不仅实现了位读取,而且大大提高了数据读取的速度。通过实现位读取,程序可以在NOR闪存上运行,这就是所谓的片上执行。
1
为什么NAND FLASH不能在XIP芯片上执行
1.从理论上讲,这是可能的,也已经被证实是可能的。然而,由于NAND闪存的物理特性,无法完全保证读取的数据/代码是正确的。事实上,这很少被使用。因为如果XIP真的需要Nand闪存,除了读取速度慢之外,还需要确保数据验证,以确保读取和要执行的代码/数据是正确的。否则,系统很容易失控。
2.NAND FLASH每次读取页面中的数据。如果你仔细想想,老师希望你从中文书中背课本。每次你直接把一本书扔给老师,背下一张目录,这怎么能直接算作背诵呢。
我们之前谈到过读数据,有人说写数据很简单,就像玩五子棋一样。无论下黑棋还是白棋,你只需要填写即可。这不仅仅是构建块并在相应的位置上写0或1。这确实是NOR闪存或硬盘驱动器的操作。NAND FLASH具有一些特殊功能。
Flash的擦除操作基于块块,块块对应于许多其他存储设备,并使用位作为最小读/写单元。Flash一次擦除整个块:发送擦除命令后,一个块被一次擦除,公共块大小为128KB/256KB。。,擦除所有到1,这意味着里面的所有内容都是0xFF。由于它是一次性擦除的,擦除时间相对较短,可以描述为闪存,因此被称为闪存。一些中文翻译是闪存。
可以理解为,有一天,图书馆10楼的第二个房间需要进行编程,也就是翻新。这时,图书馆馆长命令人们用《西游记》替换10楼的所有书籍,然后当需要编程时,需要从1变为0的地方用《红楼梦》替换,这非常快。
吃瓜群众:吉哥,根据你的意思,NAND FLASH编程可以从1变为0。它也可以从0更改为1吗?
NAND FLASH的编程是从1变为0。从物理上讲,可以实现每个比特从0到1的变化。然而,对于实际的物理实现,出于效率考虑,如果每个存储单元可以单独控制,即0到1,则意味着对每个存储单元单独充电。所需的硬件实现复杂而昂贵,并且无法像以前那样实现块擦除操作,速度过快会失去Flash的许多功能。在写入数据之前,需要先将其擦除,并且在写入数据前内部数据将变为0xFF,这意味着将相应的位从1更改为0。
可以看出,NAND闪存与常规存储设备在读写操作方面存在一些显著差异,主要是在读写的最小单位、擦除的最小单位方面,最重要的一点是在写入数据之前必须擦除NAND闪存。
2
7.使用nand-scrub命令的工程师应注意
在Nand Flash中,如果一个块包含一个或多个坏比特,它就会成为坏块。坏块的稳定性无法保证,这意味着你写的数据是正确的,或者如果你写得正确,它可能不一定是r……
d正确。对于正常块,写入和读取都是正常的。
事实上,这相当于图书馆某一层的问题,不能用于图书存储。通常情况下,有两种情况会出现问题。一种是,当图书馆维修时,已知地板损坏,并在交付时进行标记。这个地板将来不会用来放书,另一个是它在使用过程中因年久失修而损坏。此时的常见做法是将这个地板上的书移到尚未使用的地板上,并将其标记为无法使用的地板。
类似地,NAND闪存中有两种类型的坏块:
一种类型是当你离开工厂时,这意味着你购买的新的和未使用的Nand Flash可能包含坏块。这种类型的坏块,称为工厂(屏蔽)坏块或初始坏/无效块,在出厂前标记为坏块。
具体标记是,对于常用的2K页面大小的Nand Flash,它是块中第一个页面的oob起始位置的第一个字节。如果它不是0xFF,则表明它是一个坏块。相应地,所有正常块、良好块和内部的所有数据都是0xFF。
第二种类型是在使用过程中生成的。由于使用过程过长,擦除过程中出现错误,表明块已损坏。在程序操作过程中,它也应该被发现并标记为坏块。具体标记位置同上。这种类型的块被称为破旧坏块。
对于坏块的管理,在Linux系统中,它被称为坏块管理。有一个相应的表来记录好块和坏块的信息,以及坏块是否可以从工厂获得或稍后生成。这个表被称为坏块表。在Linux内核MTD架构下的Nand Flash驱动程序和Uboot中的Nand闪存驱动程序中,如果您在加载驱动程序后不添加参数来主动请求跳过坏块扫描,那么您将主动扫描坏块,并建立必要的BBT,以备将来在坏块管理中使用。
当谈到好块和坏块时,Nand Flash保证:
1.关于好的,可以使用的块的数量达到了一定的数量,比如三星的K9G8G08U0M。整个闪存总共有4096个块。出厂时,确保好块至少为3996个,这意味着如果你购买该型号的新nand闪存,最坏的情况可能是3096-3996=100个坏块。然而,事实上,现在出厂的有缺陷的砌块相对较少,绝大多数发生在长时间使用期间。
2.确保第一块是好的,并且通常是相对耐用的。确保这一点的主要原因是,在许多Nand Flash坏块管理方法中,第一个块用于存储上述BBT。否则,所有块都具有相同的错误概率,这使得难以管理甚至难以找到BBT的位置。如果只使用NAND闪存而不使用NOR闪存,那么uboot将被放置在第一个块中。如果此块损坏,则无法保证机器能够启动。出于安全原因,一些amlogic平台可能会将uboot复制到以前的块中。当块0无法启动时,主芯片还支持从blcok 1启动,这需要CPU内置程序代码。
就像图书馆一样,如果你想去其他楼层,第一层必须保证好,否则你就无法乘坐电梯去其他楼层了,这是同样的原则。
一般来说,不同型号Nand Flash的数据手册中也提到了它们自己的Nand Flash允许的最大坏块数量。例如,如上所述,Magnesia NAND FLASH MT29F1G08BAEAH4具有最多100个坏块。
对于坏块的标记,本质上只有相应闪存上某些字节的数据不是0xFF,所以只要是数据,就可以读写。这意味着可以写入其他值,这会破坏坏的块标记信息。通常不建议在出厂时擦除损坏块的标记信息。
uboot中有一个命令,上面写着“nand-scratch”,可以擦除块的所有内容,包括坏的块标记,无论它们是出厂的还是以后使用时新标记的。一般来说,不建议使用此选项。最好使用“nand-erase”只擦除好块,而不擦除已经标记有坏块的块。
8.Nand Flash中的特殊硬件结构
由于nand flash与其他常见设备相比具有独特的特性,因此也有针对特定设备的特殊设计。因此,有必要解释……
n一些特殊的硬件功能:
页面寄存器:由于Nand Flash中读取和编程操作的最小单元是页面,因此在Nand Flash的硬件设计中考虑了这一功能。对于每一块,都有一个对应的区域专门用于存储要写入物理存储单元或刚从物理存储单元读取的数据。一页数据本质上是一个缓冲区,这是一个数据缓冲区,但它只是一个不同的名称。在数据表中,它被称为页面寄存器,翻译成页面寄存器,实际上被理解为页面缓存,这更合适。
3
只有在写入页面缓存并发出相应的第二阶段编程的确认命令0x10之后,才能开始实际的编程动作,并将页面缓存中的数据逐渐写入物理存储单元。
在上一期中,我们重点介绍了NAND FLASH本身的一些独特特性,例如在写入之前需要擦除,以及可能出现坏块。因此,许多汽车制造商通过评估当前的容量冗余并确保在产生坏块后有足够的空间防止数据移动来评估NAND FLASH。
本期关注NAND FLASH的一些操作功能,以及如何控制和读取它。本期内容有点核心,需要有一些专业知识的人才能阅读。我们将在下一期继续科普文章。
9.NAND FLASH硬件特性介绍
4
上图显示了Magnolia NAND FLASH MT29F1G08BAEAH4引脚对应的功能。简单翻译如下:
1.I/O0~I/O7:用于输入地址/数据/命令,输出数据
2.CLE:命令锁存启用。在输入命令之前,在模式寄存器中设置CLE启用
3.ALE:地址锁存启用:在输入地址之前,在模式寄存器中设置ALE启用
4.CE#:芯片使能,芯片被使能。在操作Nand Flash之前,必须在操作之前选择此芯片
5.RE#:读取启用。读取数据之前,请使CE#有效。
6.WE#:写入启用。在写入数据之前,请使WE#有效。
7.WP#:写保护
8.R/B#:就绪/忙碌输出,主要用于检测发送编程/擦除命令后这些操作是否已完成。Busy表示编程/擦除操作仍在进行中,而Ready表示操作已完成
9.Vcc:电源,电源
10.Vss:接地,接地
11.N.C:未连接,未定义,未连接。
NAND FLASH实际项目示意图
5
6
在上图中,我们可以发现有两个地方需要上拉电阻器R/B#:和WP#,其他地方是直接连接的CPU和nand闪存。通过查询flash的数据表,我们可以发现这两个引脚是开漏输出,需要上拉电阻。
7
可以看出,在电路设计中,WP#引脚的一端连接到上拉电阻器,另一端通过二极管和0欧姆电阻连接到CPU复位引脚。CPU主芯片平台的复位为低电平复位,当WP#引脚为低电平时,写保护有效。这样做的目的是在复位期间,即当CPU复位引脚为低电平时,WP#引脚也是低电平二极管电压,这是写保护状态。在复位期间,CPU引脚状态不确定,很容易误操作闪光灯。这样做的目的是实现硬件,在CPU重置期间,闪存是写保护的,不允许写入。
此解决方案可用于解决数据丢失、无法启动、无法节省断电内存以及因停电而导致的数据擦除等问题。
为什么需要ALE和CLE
例如,由于Nand Flash只有8个I/O并且是可重用的,所以使用命令锁存使能(CLE)和地址锁存使能够(ALE)。也就是说,它可以传输数据、地址和命令。为了区分您当前正在传输的内容,您需要首先发出CLE命令,并告诉Nand Flash的控制器我要传输的命令就是该命令,然后才能根据传入的内容采取相应的操作。否则,在Nand Flash中,你怎么知道你是在传递数据、地址还是命令,就不可能执行正确的操作。
高级标签……
只有8个I/O引脚的Nand闪存
1.减少外围引脚:与并行端口的No Flash的48或52引脚相比,它确实大大减少了引脚数量,从而使封装后的芯片尺寸小得多。如今,芯片正朝着更小的尺寸、更强的功能和更低的功耗发展。减小芯片尺寸是一大优势。同时,减少芯片接口也意味着使用该芯片的相关外围电路将更加简化,避免了繁琐的硬件布线。
2.提高系统的可扩展性,因为芯片大小的变化和芯片中与物理大小对应的addr引脚的完整数量不会像其他设备那样发生其他变化。对于所有addr引脚,这些引脚的数量都会增加,例如容量增加一倍,地址空间/寻址空间增加一倍。因此,地址线/addr引脚的数量将增加一个。对于使用统一的8 I/O引脚的Nand Flash来说,由于所有外部设备都提供了相同的8引脚,内部芯片大小的变化或其他变化不需要外部用户(例如编写Nand Flash驱动程序的用户)关心,只是为了确保新芯片仍然遵循相同的接口,定时和命令。这提高了系统的可扩展性。
CE不在乎技术
8
Nand flash支持一种名为CE不在乎的技术,这意味着如果你不在乎你是否选择了一部电影,有些人可能会问,
如果没有选择,它还能运行吗?答案是,这项技术主要用于当时不需要选择芯片,但操作仍然可以继续的情况。在一些应用中,如录音、音频播放等,外部使用的微秒时钟周期被认为是相对较小的2us。当读取页面或编程页面时,这是一个Nand-Flash操作,串行访问周期为20/30/50ns,所有这些都是纳秒。假设这里是50ns,一旦您发出相应的读取或写入命令,您只需要Nand-Flash内部操作即可将数据读取或写入内部数据寄存器。在这里,如果你可以取消切片选择,那么CE#是低有效的,取消切片选择就是拉高电平。这将需要一微秒的时间才能发送下一个外部命令,即在微秒范围内,即2us-50ns≈2us。在此期间,取消芯片选择可以很小地降低系统功耗,但多次操作可以大大降低整体功耗。
总之,简单的解释是,由于某些外部应用程序的频率相对较低,Nand Flash的内部操作速度较快,大多数特定的读写操作都是在选择芯片时等待外部命令输入,这会产生多余的功耗。这种“不关心芯片选择”的技术是在Nand Flash相对快速的内部操作完成后取消芯片选择,以节省系统功耗。当下一个外部命令/数据/地址输入到来时,再次选择芯片,操作可以正常继续。通过这种方式,总体上可以大大降低系统功耗。
10.NAND FLASH读取操作的详细解释
以最简单的读取操作为例,解释如何理解序列图,并将序列图中的需求转换为代码。在解释时序图之前,我们先弄清楚我们需要做什么:也就是说,我们需要从nand flash中的某个页面读取我们想要的数据。要实现这个功能,将涉及到几个部分的知识,至少很容易想到需要使用哪些命令,如何发布这些命令,如何计算所需的地址,如何读取我们需要的数据,等等。
就像你去图书馆借书一样,想想这是一个什么样的过程。首先,你必须告诉图书管理员你想借还是还书,然后告诉图书管理员想借的地方,最后,把图书卡或借阅文件交给图书管理员。此时,请耐心等待书籍被借阅。
下面,我们将逐步解释需要做什么以及如何做:
1.需要什么命令
首先,了解用于读取数据的命令很重要。
以下是数据表中的一组命令:
9
很容易看出,要读取数据,我们需要使用read命令,这需要2个周期。第一个周期发送0x00,第二个周期发送0x……
.
2.发送命令前的准备工作以及时序图中每个信号的具体含义
一旦你知道要使用什么命令,就要学习如何发送它们。
0
Nand Flash数据读取操作顺序图
注:此图片来自Magnolia型号MT29F1G08BAEAH4:E的nand闪存数据表。
让我们一起来看一下,我在图中特别标记的①侧的红色垂直线。
红色垂直线所在的时刻是在读取操作的第一个周期中的命令0x00被发送之前。让我们看看它在那一刻穿过的几条线对应的是什么值,并进一步了解为什么需要这个值。
红色垂直线交叉的第一条线是CLE。你还记得前面介绍的存储和启用命令的引脚吗?CLE,将CLE设置为1意味着您将通过I/O多路复用端口向Nand Flash发送命令,而不是地址或其他类型的数据。只有将CLE设置为1并使其生效,才能通知内部硬件逻辑。您将收到的下一个命令将是一个命令,内部硬件逻辑将把收到的命令放在命令寄存器中,以实现正确的操作。否则,如果不将CLE设置为1并使其生效,硬件将不知所措,不知道您传递的数据或命令是数据还是命令。
第二行,即CE#,此时的值为0。这个原理很简单。由于要向Nand Flash发送命令,必须首先选择它,因此请确保CE#处于低级别才能使其生效,即芯片选择有效。
第三行是WE#,意思是写使能。因为下一步是向nand Flash写入命令,为了使WE#有效,它被设置为低电平。
第四行表示ALE为低级别,ALE为高级别有效,这意味着使其无效。相应地,前面的介绍使CLE有效,因为要获得的数据是命令,而不是地址。如果在某些其他情况下,例如将来输入地址时,有必要使其有效,并使CLE无效。
第五行RE#处于高电平且无效。可以看出,只有当接下来的6个阶段为低时,它才有效,因为在那时,需要发生读取命令来读取数据。
第六行是我们将要介绍的重点,它是可重用的输入和输出I/O端口。目前,还没有输入数据。接下来,在不同的阶段,不同的数据/地址将被输入或输出。
第七行R/B#为高电平,表示R/就绪。在后一阶段5中,内部硬件在第四阶段接收外部读取命令,然后逐位将页面的数据发送到页面寄存器。在此期间,系统工作繁忙,属于繁忙阶段。因此,R/B#变为低电平,表示忙碌状态。
在介绍了①时刻每个信号的值以及为什么是这个值之后,我相信每个人都会逐渐分析不同信号在随后的每个时刻的对应值,从而更容易理解具体的操作顺序和原理。
3.如何计算我们要传入的地址
在介绍读取数据的详细过程之前,还有一件事要做,那就是了解我们需要访问的地址,如何分解它们,并逐渐传入,以便硬件能够识别它们。
在这里,让我们以MT29F1G08BAEAH4:E为例。这个nand flash总共有1024个块,每个块中有64页。每页为2K+64字节。假设我们想访问第1000个块第25页1208字节的地址,我们需要首先计算具体地址:
物理地址=块大小×块号+页面大小×页面号+页面内地址=1000×128K+2K×25+1208=0x7D0CCB8。接下来,我们来看看如何将这个实际的物理地址转换为nand Flash所需的格式。
在解释地址的组成之前,我们先来看看数据表中地址周期的介绍:
1
图Nand Flash地址周期组成
结合时序图的2级和3级,我们可以看到这个nand闪存地址总共有4个周期、2个列周期和2个行周期。
对于对应的,我们可以看到,实际上,列地址CA0到CA10在页面地址内。11位地址范围是从0到2047,即2K,而额外的A11理论上可以表示2048到4095。然而,在现实中,上述规范规定,当CA11为1时,CA必须为0,所以我们只能……
se 2048到2112最多表示页面内的oob区域,其大小为64字节。
PA0至PA5,也称为页码,是可用于定位特定页面的页码。它由6位控制,最多可寻址64页。一个符合规范的块有64页。
其中,BA6~BA15表示对应的块号,它属于哪个块,具有10位控制,寻址范围为1024个块。
//可见:地址的传输顺序是页面地址、页码和块号。从小到大。
在简要解释了地址组成后,很容易分析上面例子中的地址:
0x7D0CCB8=0111 1101 0000 1100 0000 1100 1011 1000,分配给4个地址周期,即:
第一个循环,CA7~CA0:1011 1000=0x B8
第2个循环,CA11~CA8:0000 1100=0x 0C
第三次循环,BA7-PA0:0000 1100=0x 0C
第4个循环,A27~A20:0111 1101=0x 7D
请注意,在上图中,*L对应于低电平。由于未使用这些位,因此必须在数据表中将其设置为0,这就是为什么上面第二个循环中的高4位为0.000的原因。因此,我们接下来要介绍的是,如果我们想访问第1000个块的第25页上的字节1208,我们需要传入的地址分为四个周期,传入两列地址:0xB8和0x0C,然后传入两行地址:0x0C和0x7D,以便硬件能够识别它们。
4.读取操作过程说明
0
准备工作终于完成了,现在我们可以开始解释上图中标记的1-6个阶段对读取操作的具体含义。
操作准备阶段:这是一个读取操作,因此首先在图5中读取命令的第一阶段发出0x00,表示硬件应该首先准备,然后读取下一个操作。
发送两个周期的列地址。也就是说,页面上的地址,指示我想从哪里开始读取页面上的数据。
接下来,再传入三个行地址。对应的是页码。
然后针对读取操作的第二个周期发出命令0x30。接下来,它是关于硬件本身的。
Nand Flash的内部硬件逻辑负责根据您的要求,根据传入地址找到哪个页面在哪个块中,然后将整个页面的数据逐位移动到页面缓存中。在此期间,您所能做的就是读取状态寄存器并检查相应位的值,即R/B#位。如果是1或0,则表示系统正忙,并且仍处于“繁忙”状态。如果为1,则表示系统已完成工作并且正忙。整个页面的数据都已移动到页面缓存中,您现在可以读取所需的数据。
在这里。有些人可能会问,这个页面总共有2048+64个字节。如果我传入一个页内地址,如上面给出的1028值,并且只想读取1028到2011的数据,而不是页面开头地址0处的整个页面,那么从整个页面读取数据不是浪费了内部硬件吗?答案是,这确实非常浪费,效率可能看起来不高,但实际上,这就是它的做法。此外,读取整个页面的数据所需的时间相对较少,并且在读取完数据后,内部数据指针将位于您刚刚设置的1208的位置。
接下来,在忙碌了半天之后,是时候“偷走”系统的劳动成果了,呵呵。通过首先将您需要读取的字节/字写入Nand Flash控制器的数据寄存器,然后您可以进入Nand闪存控制器的FIFO,逐位读取您想要的数据。
此时,整个Nand Flash读取操作完成。
对于其他操作,您可以使用上面的分析一点一点地查看数据表,根据里面的序列图分析具体的操作过程,然后将其与代码进行比较,以更好地了解它是如何实现的。
11.NAND FLASH与NOR FLASH结合的优缺点
3
一种常见的应用程序组合是使用小容量的No Flash来存储启动代码,例如uboot。系统启动后,初始化相应的硬件,包括SDRAM,然后将Nand Flash上的Linux内核读入内存。在做了必要的事情之后,它跳到SDRAM来执行内核。
这样做的好处是NAND本身有坏块的可能性,因此为了确保安全启动,许多需要高级安全性的产品必须标记为从NOR Flash启动uboot。此外,从NOR闪存启动具有启动速度快的优点。优势……
NAND闪存的ge是其大容量,但读取速度不快,无法与NOR闪存相比。例如,一些需要启动速度的产品应用,如车载液晶仪表,这类产品通常配置NOR FLASH+EMMC以快速启动,但当然,在Cypress平台上直接访问hyperflash会更快。
4
12.NAND闪存的ECC验证的简单说明
让我们首先谈谈为什么ECC验证是必要的。事实上,在前一篇文章中,我们提到,由于NAND闪存本身的不稳定性,存在位翻转现象,因此存在写入闪存的数据与读取的数据不同的情况。在这一点上,需要一个验证机制来防止不正确的读数并加以纠正。
5
事实上,这类似于去银行存钱。如果你存了1W,过几天去银行取钱,你会发现只剩下9000了。这时,你将拿出存单,寻找银行理论。上次你清楚地保存了1W,你必须和我一起纠正缺失的1000。事实上,这就是NAND闪存的ECC测试原理。如果你发现有不正确的数据读取和存储,你需要纠正它。当然,这里纠正的数据是有限的,并不是所有的数据错误都可以纠正。
ECC验证是在奇偶校验的基础上发展起来的,奇偶校验将数据块视为矩阵,并使用矩阵的行和列的奇偶校验信息生成ECC验证码。它可以检测和纠正单比特错误和检测双比特错误,但不能保证检测到双比特以上的错误。它克服了传统奇偶校验的局限性,即只能检测奇数位的错误、冗长的验证码,并且无法校正。每个nbit的Ecc值可以满足2nt幂位数据包的验证要求。
6
7
当将数据写入Nand Flash Page时,我们为每256个字节生成一个ECC校验和,称为原始ECC校验和并将其存储在Page的OOB数据区域中。当从Nand Flash读取数据时,我们每256个字节生成一个ECC校验和,称为新的ECC校验和。
在验证时,基于上述ECC生成原理不难推断:原始ECC校验和和和从OOB区域读取的新ECC校验和将是逐位XOR。如果结果为0,则表示没有错误。如果3字节XOR结果中的11位为1,则表示存在可以校正的位错误;如果3字节XOR结果中只有一位为1,则表示OOB区域中存在错误;所有其他情况都表明存在无法纠正的错误。
-----看完整篇文章后,既然你已经在这里看到了,如果你觉得它很好,请随时点击“观看”。
欢迎关注这个公众号,谢谢你的亲吻。
本文首发于微信公众号:Po 1990。文章内容属于作者个人观点,不代表和讯网络的立场。投资者应据此操作,并承担风险。
7月15日消息,据国外媒体报道,日本第二大航空公司日本航空JAL计划在2025开展使用“飞行汽车”的业务。
1900/1/1 0:00:00财联社讯,从“2025战略”到“RoadmapE”再到如今的“2030战略”,发展新能源始终是大众清晰且坚定的转型目标。
1900/1/1 0:00:00曲艳丽文有学者测算,撒哈拉沙漠1的面积铺设光伏发电板,足以满足全世界的用电需求。在中东,石油储备充足,但光伏仍然被大力推行。“最关键是便宜。
1900/1/1 0:00:00原创正解局出品正解局原创文章,转载请联系微信:zjjms2020正解局ID:zhengjieclub前人挖坑,后人遭殃。特朗普在位的时候乱冲乱撞,现在该拜登头疼了。
1900/1/1 0:00:00盖世汽车讯据外媒报道,福特野马MachE创下电动汽车效率的吉尼斯世界纪录,在JohnoGroats和LandsEnd之间的840英里路线上,实现平均每千瓦时电量续航654英里。
1900/1/1 0:00:00盖世汽车讯据外媒报道,大金工业株式会社开发一种可用于电动汽车的制冷剂,可将续航里程提升高达50。该公司计划于2025年将这一产品投入商用。
1900/1/1 0:00:00