ImageVerifierCode 换一换
格式:DOC , 页数:71 ,大小:847KB ,
资源ID:7700402      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7700402.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(NAND_FLASH_内存详解与读写寻址方式.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

NAND_FLASH_内存详解与读写寻址方式.doc

1、第一章 绪论 7-15 1.1 课题来源 7-8 1.2 研究背景与意义 8-14 1.2.1 Flash介绍 8 1.2.2 NAND Flash介绍 8-10 1.2.3 NAND Flash与NOR Flash比较 10-13 1.2.4 研究目的 13-14 1.3 论文章节安排 14-15 第二章 NAND Flash结构与原理 15-31 2.1 NAND Flash种类 15-17 2.1.1 SLC 15 2.1.2 MLC 15

2、17 2.2 NAND Flash结构 17-29 2.2.1 NAND Flash结构 17-22 2.2.2 NAND Flash的主要流程 22-29 2.2.2.1 读操作 22-23 2.2.2.2 页编程操作 23-25 2.2.2.3 块擦除操作 25-26 2.2.2.4 COPY-BACK编程 26-27 2.2.2.5 Two Plane相关操作 27-29 2.3 小结 29-31 第

3、三章 NAND Flash动态坏块管理算法 31-61 3.1 NAND Flash坏块管理 31-33 3.1.1 坏块管理概念的提出 31-32 3.1.2 坏块管理的一般方法 32-33 3.2 NAND Flash动态坏块管理算法研究与实现 33-56 3.2.1 NAND Flash动态坏块管理设计思想 33-35 3.2.2 动态坏块管理算法步骤流程及具体函数实现 35-55 3.2.3 动态坏块管理算法与一般坏块管理算法比较总结 55-56 3.3 损耗平衡 5

4、6-58 3.3.1 损耗平衡原理和使用意义 56-57 3.3.2 损耗平衡算法 57-58 3.4 垃圾回收机制 58-61NAND FLASH 内存详解与读写寻址方式 一、内存详解 NAND闪存阵列分为一系列128kB的区块(block),这些区块是 NAND器件中最小的可擦除实体。擦除一个区块就是把所有的位(bit)设置为"1"(而所有字节(byte)设置为FFh)。有必要通过编程,将已擦除 的位从"1"变为"0"。最小的编程实体是字节(byte)。一些NOR闪存能同时执行读写操作(见下图1)。虽然NAND不能同时执行读写操作

5、它可以 采用称为"映射(shadowing)"的方法,在系统级实现这一点。这种方法在个人电脑上已经沿用多年,即将BIOS从速率较低的ROM加载到速率较高 的RAM上。 NAND的效率较高,是因为NAND串中没有金属触点。NAND闪存单元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一个单元都需 要独立的金属触点。NAND与硬盘驱动器类似,基于扇区(页),适合于存储连续的数据,如图片、音频或个人电脑数据。虽然通过把数据映射到RAM上,能在 系统级实现随机存取,但是,这样做需要额外的RAM存储空间。此外,跟硬盘一样,NAND器件存在坏的扇区,需要纠错码(ECC)来维持数据的完整性。

6、 存储单元面积越小,裸片的面积也就越小。在这种情况下,NAND就能够为当今的低成本消费市场提供存储容量更大的闪存产品。NAND闪存用于几乎所 有可擦除的存储卡。NAND的复用接口为所有最新的器件和密度都提供了一种相似的引脚输出。这种引脚输出使得设计工程师无须改变电路板的硬件设计,就能从 更小的密度移植到更大密度的设计上。 NAND与NOR闪存比较 NAND闪存的优点在于写(编程)和擦除操作的速率快,而NOR的优点是具有随机存取和对字节执行写(编程)操作的能力(见下图图2)。NOR的随 机存取能力支持直接代码执行(XiP),而这是嵌入式应用经常需要的一个功能。NAND的缺点是随机存取的速

7、率慢,NOR的缺点是受到读和擦除速度慢的性 能制约。NAND较适合于存储文件。如今,越来越多的处理器具备直接NAND接口,并能直接从NAND(没有NOR)导入数据。 NAND的真正好处是编程速度快、擦除时间短。NAND支持速率超过5Mbps的持续写操作,其区块擦除时间短至2ms,而NOR是750ms。显然,NAND在某些方面具有绝对优势。然而,它不太适合于直接随机存取。 对于16位的器件,NOR闪存大约需要41个I/O引脚;相对而言,NAND器件仅需24个引脚。NAND器件能够复用指令、地址和数据总线,从而 节省了引脚数量。复用接口的一项好处,就在于能够利用同样的硬件设计和电路板,支持较大

8、的NAND器件。由于普通的TSOP-1封装已经沿用多年,该功能 让客户能够把较高密度的NAND器件移植到相同的电路板上。NAND器件的另外一个好处显然是其封装选项:NAND提供一种厚膜的2Gb裸片或能够支持最 多四颗堆叠裸片,容许在相同的TSOP-1封装中堆叠一个8Gb的器件。这就使得一种封装和接口能够在将来支持较高的密度。 图2 NOR闪存的随机存取时间为0.12ms,而NAND闪存的第一字节随机存取速度要慢得多 NOR闪存的随机存取时间为0.12ms,而NAND闪存的第一字节随机存取速度要慢得多 NAND基本操作 以2Gb NAND器件为例,它由2048个区

9、块组成,每个区块有64个页(见下图): 每一个页均包含一个2048字节的数据区和64字节的空闲区,总共包含2,112字节。空闲区通常被用于ECC、耗损均衡(wear leveling)和其它软件开销功能,尽管它在物理上与其它页并没有区别。NAND器件具有8或16位接口。通过8或16位宽的双向数据总线,主数据被 连接到NAND存储器。在16位模式,指令和地址仅仅利用低8位,而高8位仅仅在数据传输周期使用。 擦除区块所需时间约为2ms。一旦数据被载入寄存器,对一个页的编程大约要300μs。读一个页面需要大约25μs,其中涉及到存储阵列访问页,并将页载入16,896位寄存器中。 除了I/O

10、总线,NAND接口由6个主要控制信号构成: 1.芯片启动(Chip Enable, CE#):如果没有检测到CE信号,那么,NAND器件就保持待机模式,不对任何控制信号作出响应。 2.写使能(Write Enable, WE#): WE#负责将数据、地址或指令写入NAND之中。 3.读使能(Read Enable, RE#): RE#允许输出数据缓冲器。 4.指令锁存使能(Command Latch Enable, CLE): 当CLE为高时,在WE#信号的上升沿,指令被锁存到NAND指令寄存器中。 5.地址锁存使能(Address Latch Enable, ALE):当ALE为高

11、时,在WE#信号的上升沿,地址被锁存到NAND地址寄存器中。 6.就绪/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信号将变低。该信号是漏极开路,需要采用上拉电阻。 数据每次进/出NAND寄存器都是通过16位或8位接口。当进行编程操作的时候,待编程的数据进入数据寄存器,处于在WE#信号的上升沿。在寄存器内随机存取或移动数据,要采用专用指令以便于随机存取。 数据寄存器输出数据的方式与利用RE#信号的方式类似,负责输出现有的数据,并增加到下一个地址。WE#和RE#时钟运行速度极快,达到30ns的水准。 当RE#或CE#不为低的时候,输出缓冲器将为三态。这种CE#和

12、RE#的组合使能输出缓冲器,容许NAND闪存与NOR、SRAM或DRAM等其它类型 存储器共享数据总线。该功能有时被称为"无需介意芯片启动(chip enable don't care)"。这种方案的初衷是适应较老的NAND器件,它们要求CE#在整个周期为低(译注:根据上下文改写)。 图4 输入寄存器接收到页编程(80h)指令时,内部就会全部重置为1s,使得用户可以只输入他想以0位编程的数据字节 图5 带有随机数据输入的编程指令。图中加亮的扇区显示,该指令只需要后面跟随着数据的2个字节的地址 所有NAND操作 开始时,都提供一个指令周期(表1)。 当输出一串

13、WE#时钟时,通过在I/O位7:0上设置指令、驱动CE#变低且CLE变高,就可以实现一个指令周期。注意:在WE#信号的上升沿上, 指令、地址或数据被锁存到NAND器件之中。如表1所示,大多数指令在第二个指令周期之后要占用若干地址周期。注意:复位或读状态指令例外,如果器件忙, 就不应该发送新的指令。 以2Gb NAND器件的寻址方案为例,第一和第二地址周期指定列地址,该列地址指定页内的起始字节表: 注意:因为最后一列的位置是2112,该最后位置的地址就是08h(在第二字节中)和3Fh(在第一字节中)。PA5:0指定区块内的页地 址,BA16:6指定区块的地址。虽然大多编程和读操作需

14、要完整的5字节地址,在页内随机存取数据的操作仅仅用到第一和第二字节。块擦除操作仅仅需要三个 最高字节(第三、第四和第五字节)来选择区块。 总体而言,NAND的基本操作包括:复位(Reset, FFh)操作、读ID(Read ID, 00h)操作、读状态(Read Status, 70h)操作、编程(Program)操作、随机数据输入(Random data input, 85h)操作和读(Read)操作等。 选择内置NAND接口的处理器或控制器的好处很多。如果没有这个选择,有可能在NAND和几乎任何处理器之间设计一个"无粘接逻辑(glueless)" 接口。NAND和N

15、OR闪存的主要区别是复用地址和数据总线。该总线被用于指定指令、地址或数据。CLE信号指定指令周期,而ALE信号指定地址周期。利 用这两个控制信号,有可能选择指令、地址或数据周期。把ALE连接到处理器的第五地址位,而把CLE连接到处理器的第四地址位,就能简单地通过改变处理器 输出的地址,任意选择指令、地址或数据。这容许CLE和ALE在合适的时间自动设置为低。 为了提供指令,处理器在数据总线上输出想要的指令,并输出地址0010h;为了输出任意数量的地址周期,处理器仅仅要依次在处理器地址0020h之 后输出想要的NAND地址。注意,许多处理器能在处理器的写信号周围指定若干时序参数,这对于建立合适的

16、时序是至关重要的。利用该技术,你不必采用任何粘 接逻辑,就可以直接从处理器存取指令、地址和数据。 多级单元 多级单元(MLC)的每一个单元存储两位,而传统的SLC仅仅能存储一位。MLC技术有显著的密度优越性,然而,与SLC相比(下表),其速度或可靠性稍逊。因此,SLC被用于大多数媒体卡和无线应用,而MLC器件通常被用于消费电子和其它低成本产品。 如上所述,NAND需要ECC以确保数据完整性。NAND闪存的每一个页面上都包括额外的存储空间,它就是64个字节的空闲区(每512字节的扇区 有16字节)。该区能存储ECC代码及其它像磨损评级或逻辑到物理块映射之类的信息。ECC能在硬件或软件

17、中执行,但是,硬件执行有明显的性能优势。在编 程操作期间,ECC单元根据扇区中存储的数据来计算误码校正代码。数据区的ECC代码然后被分别写入到各自的空闲区。当数据被读出时,ECC代码也被读 出;运用反操作可以核查读出的数据是否正确。 有可能采用ECC算法来校正数据错误。能校正的错误的数量取决于所用算法的校正强度。在硬件或软件中包含ECC,就提供了强大的系统级解决方案。最 简单的硬件实现方案是采用简单的汉明(Simple Hamming)码,但是,只能校正单一位错误。瑞德索罗门(Reed-Solomon)码提供更为强大的纠错,并被目前的控制器广为采用。此外,BCH 码由于比瑞德索罗门方法的效率

18、高,应用也日益普及。 要用软件执行NAND闪存的区块管理。该软件负责磨损评级或逻辑到物理映射。该软件还提供ECC码,如果处理器不包含ECC硬件的话。 编程或擦除操作之后,重要的是读状态寄存器,因为它确认是否成功地完成了编程或擦除操作。如果操作失败,要把该区块标记为损坏且不能再使用。以前已 编写进去的数据要从损坏的区块中搬出,转移到新的(好的)存储块之中。2Gb NAND的规范规定,它可以最多有40个坏的区块,这个数字在器件的生命周期(额定寿命为10万次编程/擦除周期)内都适用。一些有坏块的NAND器件能 够出厂,主要就归根于其裸片面积大。管理器件的软件负责映射坏块并由好的存储块取而代之。

19、 利用工厂对这些区块的标记,软件通过扫描块可以确定区块的好坏。坏块标记被固定在空闲区的第一个位置(列地址2048)。如果在0或1页的列地址 2048上的数据是"non-FF",那么,该块要标记为坏,并映射出系统。初始化软件仅仅需要扫描所有区块确定以确定哪个为坏,然后建一个坏块表供将来 参考。 小心不要擦除坏块标记,这一点很重要。工厂在宽温和宽电压范围内测试了NAND;一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作,但是,将来可能会失效。如果坏块信息被擦除,就无法再恢复。 二、NAND FLASH读写寻址方式 NAND Flash的寻址方式和NAND Flash的

20、memory组织方式紧密相关。NAND Flash的数据是以bit的方式保存在memory cell,一般来说,一个cell中只能存储一个bit。这些cell以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。      这些Line会再组成Page,通常是528Byte/page或者264Word/page。然后,每32个page形成一个Block,Sizeof(block)=16kByte.      Block是NAND Flash中最大的操作单元,擦除就是按照block为单位完成的,而 编程/读取是按照

21、page为单位完成的。      所以,按照这样的组织方式可以形成所谓的三类地址:      -Block   Address      -Page    Address      -Column Address      首先,必须清楚一点,对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度可以是8位或者16位,但是,对于x16的NAND Device,I/O[15:8]只用于传递数据。      清楚了这一点,我们就可以开始分析NAND Flash的寻址方式了。      以528Byte/page 总容量512Mbit+512kbyte的NAND

22、器件为例: 因为,      1 block=16kbyte,      512Mbit=64Mbyte,      Numberof(block)=1024      1block=32page,      1page=528byte=512byte(Main Area)+16byte(Spare Area) 用户数据保存在main area中。      512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。因此

23、A8就是halfpage pointer,A[7:0]就是所谓的column address。      32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,例如512Mb 的NAND,共4096block,因此,需要12个bit来表示,即A[25:14],如果是1Gbit的528byte/page的NAND Flash,共8192个block,则block address用A[26:14]表示。而page address就是blcok address|page address in block NAND Fla

24、sh的地址表示为:       Block Address|Page Address in block|halfpage pointer|Column Address 地址传送顺序是Column Address,Page Address,Block Address。 由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。      例如,对于512Mbit x8的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。 以NAND_ADDR为例:      第1步是传递column address,就是NAND_ADDR[

25、7:0],不需移位即可传递到I/O[7:0]上而halfpage pointer即bit8是由操作指令决定的,即指令决定在哪个halfpage上进行读写,而真正的bit8的值是don't care的。      第2步就是将NAND_ADDR右移9位,将NAND_ADDR[16:9]传到I/O[7:0]上;      第3步将NAND_ADDR[24:17]放到I/O上;      第4步需要将NAND_ADDR[25]放到I/O上;      因此,整个地址传递过程需要4步才能完成,即4-step addressing。      如果NAND Flash的容量是256Mbit以下

26、那么,block adress最高位只到bit24,因此寻址只需要3步。 Nand Flash结构与读写分析及Nand Flash寻址方式【ZZ】 看vivi代码的head.S的时候,看到copy_myself的部分,尤其nand_read_ll函数,看不太明白,不了解nand flash原理,结合nand flash的datasheet和网上的文章,对那个函数就大概了解一点了 下面的内容也是别人转载的,我继续转载 Nand Flash结构与读写分析 NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这

27、些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line 会再组成Page,(Nand Flash 有多种结构,我使用的Nand Flash 是K9F1208,下面内容针对三星的K9F1208U0M),每页528Byte,每32 个page 形成一个Block, Sizeof(block)=16kByte 。1 block=16kbyte,512Mbit=64Mbyte,Numberof(block)=1024 1block=32page, 1page=528byte=512byte(Mai

28、n Area)+16byte(Spare Area) Nand flash 以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: --Block Address -- Page Address   --Column Address(即为页内偏移地址) 对于NAND Flash 来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。 512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由地址指针命令来选择,A[7:0]就是所谓的column addres

29、s。32 个page 需要5bit 来表示,占用A[13:9],即该page 在块内的相对地址。Block的地址是由A14 以上的bit 来表示,例如512Mb 的NAND,共4096block,因此,需要12 个bit 来表示,即A[25:14],如果是1Gbit 的528byte/page的NAND Flash,则block address用A[26:14]表示。而page address就是blcok address|page address in block, NAND Flash 的地址表示为: Block Address|Page Address in block|halfpage

30、 pointer|Column Address 地址传送顺序是Column Address,Page Address,Block Address。 由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。 例如,对于512Mbit x8 的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。以NAND_ADDR 为例: 第1 步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上,而halfpage pointer 即bit8 是由操作指令决定的,即指令决定在哪个halfpage

31、 上进行读写。而真正的bit8 的值是don\'t care 的。 第2 步就是将NAND_ADDR 右移9 位,将NAND_ADDR[16:9]传到I/O[7:0]上 第3 步将NAND_ADDR[24:17]放到I/O 上 第4 步需要将NAND_ADDR[25]放到I/O 上 因此,整个地址传递过程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是256Mbit 以下,那么,block adress 最高位只到bit24,因此寻址 只需要3 步。 下面,就x16 的NAND flash 器件稍微进行一下说明。 由于一个page 的main a

32、rea 的容量为256word,仍相当于512byte。但是,这个时候没有所谓 的1st halfpage 和2nd halfpage 之分了,所以,bit8就变得没有意义了,也就是这个时候 bit8 完全不用管,地址传递仍然和x8 器件相同。除了,这一点之外,x16 的NAND使用方法和 x8 的使用方法完全相同。 norflash和nandflash的区别 norflash中可以运行程序,nandflash不可以 Nor flash按sector可擦除,按bit可读写。Nand Flash按Block可擦除,按Page可读写。 最主要是寻址方式不同 *************

33、 Nand Flash 寻址方式 NAND Flash的寻址方式和NAND Flash的memory组织方式紧密相关。NAND Flash的数据是以bit的方式保存在memory cell,一般来说,一个cell中只能存储一个bit。这些cell以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Devi

34、ce的位宽。      这些Line会再组成Page,通常是528Byte/page或者264Word/page。然后,每32个page形成一个Block,Sizeof(block)=16kByte.      Block是NAND Flash中最大的操作单元,擦除就是按照block为单位完成的,而 编程/读取是按照page为单位完成的。      所以,按照这样的组织方式可以形成所谓的三类地址:      -Block   Address      -Page    Address      -Column Address      首先,必须清楚一点,对于NAND Flas

35、h来讲,地址和命令只能在I/O[7:0]上传递,数据宽度可以是8位或者16位,但是,对于x16的NAND Device,I/O[15:8]只用于传递数据。      清楚了这一点,我们就可以开始分析NAND Flash的寻址方式了。      以528Byte/page 总容量512Mbit+512kbyte的NAND器件为例: 因为,      1 block=16kbyte,      512Mbit=64Mbyte,      Numberof(block)=1024      1block=32page,      1page=528byte=512byte(Main

36、Area)+16byte(Spare Area) 用户数据保存在main area中。      512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。因此A8就是halfpage pointer,A[7:0]就是所谓的column address。      32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,例如512Mb 的NAND,共4096

37、block,因此,需要12个bit来表示,即A[25:14],如果是1Gbit的528byte/page的NAND Flash,共8192个block,则block address用A[26:14]表示。而page address就是blcok address|page address in block NAND Flash的地址表示为:       Block Address|Page Address in block|halfpage pointer|Column Address 地址传送顺序是Column Address,Page Address,Block Address。 由

38、于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。      例如,对于512Mbit x8的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。 以NAND_ADDR为例:      第1步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上而halfpage pointer即bit8是由操作指令决定的,即指令决定在哪个halfpage上进行读写,而真正的bit8的值是don't care的。      第2步就是将NAND_ADDR右移9位,将NAND_ADDR[

39、16:9]传到I/O[7:0]上;      第3步将NAND_ADDR[24:17]放到I/O上;      第4步需要将NAND_ADDR[25]放到I/O上;      因此,整个地址传递过程需要4步才能完成,即4-step addressing。      如果NAND Flash的容量是256Mbit以下,那么,block adress最高位只到bit24,因此寻址只需要3步。 NAND Flash Architecture Architecture NAND Flash是由4096個Blocks所組成的,每個Block是由128個Pages所組成的

40、而每個Page是由4KBytes的User Data加上128Bytes的Spare Data所構成的,故每個Block的容量為528Kbytes,每個Page的容量為4224Bytes。其中,Spare Data主要是用來存放ECC(Error Correcting Code)、Bad Block Information和File System的資料。   Figure 1.Flash Memory Geometry NAND Flash的操作特點為:抹除(Erase)的最小單位是Block,而讀取(Read)和寫入(Write)則是以Page為單位。因NAND Flash的每個

41、bit只能由1變為0,而不能從0變為1,所以對Flash做寫入時一定要將其對應的Block先抹除掉,才能做寫入的動作,也因此同樣 一個page只能夠寫入一次。 Constraints and Functionalities Constraints Sequential Page program 在一個Block裡,Page必須從LSB(least significant bit) Page依序寫到MSB(most significant bit) Page,隨意不照Page address來寫入是禁止的。另外,LSB是寫入的Pages中最小的位址,不一定是Page 0。  

42、 Figure 2.Sequential Page program [1] Partial Page program 在NAND Flash中,存取資料的最小單位是Page。在SLC Flash中,若想修改Page中的Data時可以更改部分的Bit而不需要將整個Page抹除後才更改。例如Page中的Data為1001011101,若想將Data改成1001010001,只需將其中的2個Bit更改為0即可,不用抹除後寫入。但之後的MLC Flash,已經不允許此功能了。 Performance-Improving Commands Copy Back Program Cop

43、y Back Program可以快速地將1頁的資料複製(Copy)到另1個指定的頁中,也對於垃圾收集(Garbage Collection)非常的有用。例如當1頁裡的資料壞掉造成整個區塊(Block)為損壞區塊(Bad Block, or Worn-Out Block)時,Copy Back Program可以有效率地將所有有效頁(Valid Page)的資料複製到指定的區塊中。 Copy Back Program是將1整頁的資料(來源Page)讀取且複製到內部頁緩衝器(Internal Page Buffer)中,再將它寫到另1整頁中(目標Page)。因為它不像一般的讀取、寫入指令將資料

44、存取到外部記憶體(Memory),而是將資料存在內部 頁緩衝器中,所以會比一般的讀取加上寫入少了將資料讀寫到外部記憶體的時間,執行上也更快且更有效率。 Figure 3.Copy Back Program [1] Random data input/output 當對Page的資料做讀寫時,必須將1整頁的所有資料都存在於外部記憶體中,當外部的RAM不夠大時,無法一次存放整個頁的資料,故利用NAND Flash的Internal Page Buffer來存放整個頁的資料,並使用Random Data Input/Output就可以對頁中任意位址的資料做存取。 對1頁裡的資料

45、做一般的讀寫時,資料都是Sequential的,但若想要隨意存取1頁裡的資料,如想要存取ECC的資料,便可使用Random data input/output跳至User Data的尾端去存取ECC的資料。 -Plane program NAND Flash Vendor將Memory Array分成2個Plane,可以同時對2個不同Block addresses做Read/Write/Erase的操作。   Figure 4.2-Plane Program [6] NAND-flash Management Issues Address Translation N

46、AND Flash Memory的同1個page不能做重覆寫入的行為。再者,在寫入1個sector資料之前,必須要有抹除1個Block的資料才能做寫入的動作,但抹除 1個Block的動作需要耗費相當多的時間,此舉造成了NAND Flash效能下降的最大原因。為了改善效能,最有效的方法就是減少Erase的次數,因此有了Mapping Table。 Mapping Table的管理分為Block level、Sector level以及改良的Hybrid level。 Block level的address mapping是指1個Logical Block對應到1個Physical Blo

47、ck,它的mapping table相對於sector-level的mapping table來的小,能夠節省mapping table所占RAM的使用量。但當Logical Block的個數少於Physical Block個數時,會發生Logical Block時常被overwrite的狀況,選定要overwrite的Logical block和它mapping的Physical Block都要將資料更新到新的Physical Block上,且做erase-before-write的動作,而造成效能的下降,此外轉換單位大,每次寫入的單位也大,因此會帶來額外的資料寫入成 本。 而Secto

48、r-Level的address mapping是1個Logical Sector可以對應到任1個Physical Block裡的Sector,雖然這種mapping的方式彈性佳,可以減少因轉換單位大而帶來額外的資料寫入成本,但是mapping table的Size過大,例如1GB的Flash,1個sector的大小為512byte的話,RAM就要維護二百萬筆的sector資訊。   Figure 5. 資料區塊,紀錄區塊,以及備用區塊的使用。 (a)完整的資料區塊(b)資料依序寫入紀錄區塊的可寫頁中(c)區塊鏈的Merge 改良的Hybrid level,擷取Block leve

49、l和Sector level的優點,採用Block level的方式,再加上有限數量的Block做為Sector level的mapping,除了讓mapping table的size限制住不至於龐大,也減少了erase-before-write的動作。Hybrid level中,將Physical Block取名為資料區塊(Data Block),因為資料不能直接更新於資料區塊裡,我們找了一段可寫的Block來紀錄更新的資料,並將它取名為紀錄區塊(Log Block)。經過一段時間的寫入,一個LBA(Logical Block Address)對應會對應一個資料區塊,而此資料區塊會跟著數個紀錄區塊,整個形成一個區塊鏈(Block Chain),如圖5(b)所示。   Figure 6.Hybrid Level mapping table [7] Hybrid Level在做write的時候,在寫第1、2筆資料時(sector 4,5),會由block l

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服