




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 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 SLC15 2 1 2 MLC15 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 第三章 NAND Flash 动态坏块管理算法31 61 3 1 NAND Flash 坏块管理 31 33 3 1 1 坏块管理概念的提出31 32 精品文档 2欢迎下载 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 损耗平衡56 58 3 3 1 损耗平衡原理和使用意义56 57 3 3 2 损耗平衡算法57 58 3 4 垃圾回收机制58 61 精品文档 3欢迎下载 NANDNAND FLASHFLASH 内存详解与读写寻址方式内存详解与读写寻址方式 一 内存详解一 内存详解 NAND 闪存阵列分为一系列 128kB 的区块 block 这些区块是 NAND 器件中最小 的可擦除实体 擦除一个区块就是把所有的位 bit 设置为 1 而所有字节 byte 设置为 FFh 有必要通过编程 将已擦除 的位从 1 变为 0 最小的 编程实体是字节 byte 一些 NOR 闪存能同时执行读写操作 见下图 1 虽然 NAND 不能同时执行读写操作 它可以 采用称为 映射 shadowing 的方法 在 系统级实现这一点 这种方法在个人电脑上已经沿用多年 即将 BIOS 从速率较 低的 ROM 加载到速率较高 的 RAM 上 NAND 的效率较高 是因为 NAND 串中没有金属触点 NAND 闪存单元的大小比 NOR 要小 4F2 10F2 的原因 是 NOR 的每一个单元都需 要独立的金属触点 NAND 与硬盘驱动器类似 基于扇区 页 适合于存储连续的数据 如图片 音 频或个人电脑数据 虽然通过把数据映射到 RAM 上 能在 系统级实现随机存取 但是 这样做需要额外的 RAM 存储空间 此外 跟硬盘一样 NAND 器件存在坏 的扇区 需要纠错码 ECC 来维持数据的完整性 存储单元面积越小 裸片的面积也就越小 在这种情况下 NAND 就能够为当今 的低成本消费市场提供存储容量更大的闪存产品 NAND 闪存用于几乎所 有可 擦除的存储卡 NAND 的复用接口为所有最新的器件和密度都提供了一种相似的 引脚输出 这种引脚输出使得设计工程师无须改变电路板的硬件设计 就能从 更小的密度移植到更大密度的设计上 NANDNAND 与与 NORNOR 闪存比较闪存比较 NAND 闪存的优点在于写 编程 和擦除操作的速率快 而 NOR 的优点是具有随机 存取和对字节执行写 编程 操作的能力 见下图图 2 NOR 的随 机存取能力支 持直接代码执行 XiP 而这是嵌入式应用经常需要的一个功能 NAND 的缺点 是随机存取的速率慢 NOR 的缺点是受到读和擦除速度慢的性 能制约 NAND 较 适合于存储文件 如今 越来越多的处理器具备直接 NAND 接口 并能直接从 NAND 没有 NOR 导入数据 NAND 的真正好处是编程速度快 擦除时间短 NAND 支持速率超过 5Mbps 的持续 写操作 其区块擦除时间短至 2ms 而 NOR 是 750ms 显然 NAND 在某些方面 具有绝对优势 然而 它不太适合于直接随机存取 对于 16 位的器件 NOR 闪存大约需要 41 个 I O 引脚 相对而言 NAND 器件仅 需 24 个引脚 NAND 器件能够复用指令 地址和数据总线 从而 节省了引脚数 精品文档 4欢迎下载 量 复用接口的一项好处 就在于能够利用同样的硬件设计和电路板 支持较 大的 NAND 器件 由于普通的 TSOP 1 封装已经沿用多年 该功能 让客户能够把 较高密度的 NAND 器件移植到相同的电路板上 NAND 器件的另外一个好处显然 是其封装选项 NAND 提供一种厚膜的 2Gb 裸片或能够支持最 多四颗堆叠裸片 容许在相同的 TSOP 1 封装中堆叠一个 8Gb 的器件 这就使得一种封装和接口能 够在将来支持较高的密度 精品文档 5欢迎下载 图 2 NOR 闪存的随机存取时间为 0 12ms 而 NAND 闪存的第一字节随机存取速 度要慢得多 NOR 闪存的随机存取时间为 0 12ms 而 NAND 闪存的第一字节随机存取速度要慢 得多 NANDNAND 基本操作基本操作 以 2Gb NAND 器件为例 它由 2048 个区块组成 每个区块有 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 总线 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 指令寄存器中 精品文档 6欢迎下载 5 地址锁存使能 Address Latch Enable ALE 当 ALE 为高时 在 WE 信号的 上升沿 地址被锁存到 NAND 地址寄存器中 6 就绪 忙 Ready Busy R B 如果 NAND 器件忙 R B 信号将变低 该信号 是漏极开路 需要采用上拉电阻 数据每次进 出 NAND 寄存器都是通过 16 位或 8 位接口 当进行编程操作的时候 待编程的数据进入数据寄存器 处于在 WE 信号的上升沿 在寄存器内随机存 取或移动数据 要采用专用指令以便于随机存取 数据寄存器输出数据的方式与利用 RE 信号的方式类似 负责输出现有的数据 并增加到下一个地址 WE 和 RE 时钟运行速度极快 达到 30ns 的水准 当 RE 或 CE 不为低的时候 输出缓冲器将为三态 这种 CE 和 RE 的组合使能输 出缓冲器 容许 NAND 闪存与 NOR SRAM 或 DRAM 等其它类型 存储器共享数据总 线 该功能有时被称为 无需介意芯片启动 chip enable don t care 这种 方案的初衷是适应较老的 NAND 器件 它们要求 CE 在整个周期为低 译注 根 据上下文改写 图 4 输入寄存器接收到页编程 80h 指令时 内部就会全部重置为 1s 使得用 户可以只输入他想以 0 位编程的数据字节 精品文档 7欢迎下载 图 5 带有随机数据输入的编程指令 图中加亮的扇区显示 该指令只需要后面 跟随着数据的 2 个字节的地址 所有 NAND 操作 开始时 都提供一个指令周期 表 1 当输出一串 WE 时钟时 通过在 I O 位 7 0 上设置指令 驱动 CE 变低且 CLE 变高 就可以实现一个指令周期 注意 在 WE 信号的上升沿上 指令 地址 精品文档 8欢迎下载 或数据被锁存到 NAND 器件之中 如表 1 所示 大多数指令在第二个指令周期之 后要占用若干地址周期 注意 复位或读状态指令例外 如果器件忙 就不应 该发送新的指令 以 2Gb NAND 器件的寻址方案为例 第一和第二地址周期指定列地址 该列地址 指定页内的起始字节表 注意 因为最后一列的位置是 2112 该最后位置的地址就是 08h 在第二字节中 和 3Fh 在第一字节中 PA5 0 指定区块内的页地 址 BA16 6 指定区块的地址 虽然大多编程和读操作需要完整的 5 字节地址 在页内随机存取数据的操作仅 仅用到第一和第二字节 块擦除操作仅仅需要三个 最高字节 第三 第四和第 五字节 来选择区块 精品文档 9欢迎下载 总体而言 NAND 的基本操作包括 复位 Reset FFh 操作 读 ID Read ID 00h 操作 读状态 Read Status 70h 操作 编程 Program 操作 随机数据输 入 Random data input 85h 操作和读 Read 操作等 选择内置 NAND 接口的处理器或控制器的好处很多 如果没有这个选择 有可能 在 NAND 和几乎任何处理器之间设计一个 无粘接逻辑 glueless 接口 NAND 和 NOR 闪存的主要区别是复用地址和数据总线 该总线被用于指定指令 地址 或数据 CLE 信号指定指令周期 而 ALE 信号指定地址周期 利 用这两个控制 信号 有可能选择指令 地址或数据周期 把 ALE 连接到处理器的第五地址位 而把 CLE 连接到处理器的第四地址位 就能简单地通过改变处理器 输出的地址 任意选择指令 地址或数据 这容许 CLE 和 ALE 在合适的时间自动设置为低 为了提供指令 处理器在数据总线上输出想要的指令 并输出地址 0010h 为 了输出任意数量的地址周期 处理器仅仅要依次在处理器地址 0020h 之 后输出 想要的 NAND 地址 注意 许多处理器能在处理器的写信号周围指定若干时序参 数 这对于建立合适的时序是至关重要的 利用该技术 你不必采用任何粘 接 逻辑 就可以直接从处理器存取指令 地址和数据 多级单元 多级单元 MLC 的每一个单元存储两位 而传统的 SLC 仅仅能存储一位 MLC 技 术有显著的密度优越性 然而 与 SLC 相比 下表 其速度或可靠性稍逊 因 此 SLC 被用于大多数媒体卡和无线应用 而 MLC 器件通常被用于消费电子和 其它低成本产品 精品文档 10欢迎下载 如上所述 NAND 需要 ECC 以确保数据完整性 NAND 闪存的每一个页面上都包括 额外的存储空间 它就是 64 个字节的空闲区 每 512 字节的扇区 有 16 字节 该区能存储 ECC 代码及其它像磨损评级或逻辑到物理块映射之类的信息 ECC 能在硬件或软件中执行 但是 硬件执行有明显的性能优势 在编 程操作期间 ECC 单元根据扇区中存储的数据来计算误码校正代码 数据区的 ECC 代码然后 被分别写入到各自的空闲区 当数据被读出时 ECC 代码也被读 出 运用反操 作可以核查读出的数据是否正确 有可能采用 ECC 算法来校正数据错误 能校正的错误的数量取决于所用算法的 校正强度 在硬件或软件中包含 ECC 就提供了强大的系统级解决方案 最 简 单的硬件实现方案是采用简单的汉明 Simple Hamming 码 但是 只能校正单 一位错误 瑞德索罗门 Reed Solomon 码提供更为强大的纠错 并被目前的控 制器广为采用 此外 BCH 码由于比瑞德索罗门方法的效率高 应用也日益普 及 要用软件执行 NAND 闪存的区块管理 该软件负责磨损评级或逻辑到物理映射 该软件还提供 ECC 码 如果处理器不包含 ECC 硬件的话 编程或擦除操作之后 重要的是读状态寄存器 因为它确认是否成功地完成了 编程或擦除操作 如果操作失败 要把该区块标记为损坏且不能再使用 以前 已 编写进去的数据要从损坏的区块中搬出 转移到新的 好的 存储块之中 2Gb NAND 的规范规定 它可以最多有 40 个坏的区块 这个数字在器件的生命 周期 额定寿命为 10 万次编程 擦除周期 内都适用 一些有坏块的 NAND 器件能 够出厂 主要就归根于其裸片面积大 管理器件的软件负责映射坏块并由好的 存储块取而代之 利用工厂对这些区块的标记 软件通过扫描块可以确定区块的好坏 坏块标记 被固定在空闲区的第一个位置 列地址 2048 如果在 0 或 1 页的列地址 2048 上的数据是 non FF 那么 该块要标记为坏 并映射出系统 初始化软件仅 仅需要扫描所有区块确定以确定哪个为坏 然后建一个坏块表供将来 参考 小心不要擦除坏块标记 这一点很重要 工厂在宽温和宽电压范围内测试了 精品文档 11欢迎下载 NAND 一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作 但是 将来可能会失效 如果坏块信息被擦除 就无法再恢复 二 二 NANDNAND FLASHFLASH 读写寻址方式读写寻址方式 NAND Flash 的寻址方式和 NAND Flash 的 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 为单位完 成的 而 编程 读取是按照 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 器件为例 因为 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 的高低 因此 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 Flash 的地址表示为 Block Address Page Address in block halfpage pointer Column Address 精品文档 12欢迎下载 地址传送顺序是 Column Address Page Address Block Address 由于地址只能在 I O 7 0 上传递 因此 必须采用移位的方式进行 例如 对于 512Mbit x8 的 NAND flash 地址范围是 0 0 x3FF 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 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 步 精品文档 13欢迎下载 NandNand FlashFlash 结构与读写分析及结构与读写分析及 NandNand FlashFlash 寻址方式寻址方式 ZZ ZZ 看 vivi 代码的 head S 的时候 看到 copy myself 的部分 尤其 nand read ll 函数 看不太明白 不了解 nand flash 原理 结合 nand flash 的 datasheet 和网上的文章 对那个函数就大概了解一点了 下面的内容也是别人转载的 我继续转载 内容好像有点乱 我只看了一点点 对其寻址明白了一点 暂时就这样了 暂 时还没需要继续研究 有需要在研究 Nand Flash 结构与读写分析 NAND Flash 的数据是以 bit 的方式保存在 memory cell 一般来说 一个 cell 中只能存储一个 bit 这些 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 Main 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 address 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 精品文档 14欢迎下载 pointer Column Address 地址传送顺序是 Column Address Page Address Block Address 由于地址只能在 I O 7 0 上传递 因此 必须采用 移位的方式进行 例如 对于 512Mbit x8 的 NAND flash 地址范围是 0 0 x3FF 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 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 area 的容量为 256word 仍相当于 512byte 但是 这个时候没有所谓 的 1st halfpage 和 2nd halfpage 之分了 所以 bit8 就变得没有意义了 也就是这 个时候 bit8 完全不用管 地址传递仍然和 x8 器件相同 除了 这一点之外 x16 的 NAND 使用方法和 x8 的使用方法完全相同 norflash 和 nandflash 的区别 norflash 中可以运行程序 nandflash 不可以 Nor flash 按 sector 可擦除 按 bit 可读写 Nand Flash 按 Block 可擦除 按 Page 可读写 最主要是寻址方式不同 Nand Flash 寻址方式 NAND Flash 的寻址方式和 NAND Flash 的 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 为单位完 成的 而 编程 读取是按照 page 为单位完成的 所以 按照这样的组织方式可以形成所谓的三类地址 Block Address Page Address Column Address 精品文档 15欢迎下载 首先 必须清楚一点 对于 NAND Flash 来讲 地址和命令只能在 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 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 共 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 Flash 的地址表示为 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 0 x3FF 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 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 步 精品文档 16欢迎下载 精品文档 17欢迎下载 NANDNAND FlashFlash ArchitectureArchitecture Architecture NAND Flash 是由 4096 個 Blocks 所組成的 每個 Block 是由 128 個 Pages 所組 成的 而每個 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 的每個 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 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 精品文档 18欢迎下载 Copy Back Program Copy 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 因為它不像 一般的讀取 寫入指令將資料存取到外部記憶體 Memory 而是將資料存在內 部 頁緩衝器中 所以會比一般的讀取加上寫入少了將資料讀寫到外部記憶體的 時間 執行上也更快且更有效率 Figure 3 Copy Back Program 1 Random data input output 當對 Page 的資料做讀寫時 必須將 1 整頁的所有資料都存在於外部記憶體中 當外部的 RAM 不夠大時 無法一次存放整個頁的資料 故利用 NAND Flash 的 Internal Page Buffer 來存放整個頁的資料 並使用 Random Data Input Output 就可以對頁中任意位址的資料做存取 對 1 頁裡的資料做一般的讀寫時 資料都是 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 NAND Flash Memory 的同 1 個 page 不能做重覆寫入的行為 再者 在寫入 1 個 sector 資料之前 必須要有抹除 1 個 Block 的資料才能做寫入的動作 但抹除 1 個 Block 的動作需要耗費相當多的時間 此舉造成了 NAND Flash 效能下降的 最大原因 為了改善效能 最有效的方法就是減少 Erase 的次數 因此有了 Mapping Table 精品文档 19欢迎下载 Mapping Table 的管理分為 Block level Sector level 以及改良的 Hybrid level Block level 的 address mapping 是指 1 個 Logical Block 對應到 1 個 Physical Block 它的 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 的動作 而造成效能的下降 此外轉換單位大 每次寫入的單位也大 因此會帶來額外 的資料寫入成 本 而 Sector 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 level 和 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 level 的 mapping table 找出 Data Block 10 因為對應 sector 裡內容 是空的 因此就直接寫入 Data Block 10 裡 而寫第 3 筆資料時 sector 4 由 Block level 的 mapping table 找到 Data Block 10 但裡面已有寫入的資 料 故改由 sector level 的 mapping table 找尋空的 Log Block 寫入第 3 筆 資料 在寫第 4 筆資料時 sector 4 因為 sector level 的 mapping table 裡 已有 mapped 的 Log Block 故將第 4 筆資料依序寫入對映的 Log Block 裡 精品文档 20欢迎下载 而在讀取時 會先由 Sector level 的 mapping table 裡 找出最新的資料 而 Log Block 裡沒有的資料 則由 Block Level mapping table 裡找到的 Data Block 裡 Garbage Collection 主要是用於將不必要存在且浪費空間的 Block 做回收 來增加可用的 Block 數 當需要新 的 Log Block 時 會從已經使用的 Log Block 裡選取符合回收條件的 Block 來做 Garbage Collection 如 free sector 低於 threshold 值 被選定要回收的 Log Block 會和它的 Data Block 做 merge 的動作 意即選取 新的 Data Block 將 Log Block 中 sector 資料 copy 到此新的 Data Block 中 再將原先 Data Block 中剩餘的 sector 資料複製到此新的 Data Block 中 更新 block level table 對應到新的 Data Block 並將 sector level table 裡將剛才回收的 Log Block 移除 原先的 Log Block 和 Data Block 做抹除的動 作 即完成 Garbage Collection 了 例如 Figure 4 中 要將 Log block pbn 20 做回收時 會將此 log block 中最 新的資料 sector 4 複製到新的 Data Block 中 假設為 pbn 12 再將它的 Data block pbn 10 中 其餘的資料 sector 5 複製到新的 Data Block pbn 12 中 並將 block level table 中對應到 pbn 20 的資料改為對應 到 pbn 12 即新的 data block 再將 sector level table 中 pbn 20 回收的 log block 這筆資料刪除 最後將 pbn 20 pbn 10 舊的 block 做抹除的動作即 可 Merge 在一種特殊情況下 可以做 switch 的動作 例如像 Figure 4 中 Log Block pbn 30 裡是照 sector 的順序寫入 因此它的 Data Block pbn 11 裡的 資料都是不需要使用的舊資料 要做 Garbage Collection 只需要將 Log Block 和 Data Block 對調即可 即 block level table 裡對應到 pbn 11 這筆 資料改為對應到 pbn 30 而 sector level table 裡對應到 pbn 30 這筆刪除 然後將舊的 Data Block pbn 11 抹除就達到 Garbage Collection 了 Figure 7 Garbage Collection Operation 3 當在做 Garbage Collection 時 會希望用最少的 cleaning work 來獲得最多的 free space 因此會選擇最多 garbage 的 segment 來做回收 另外 將資料的 型態分為靜態和動態的資料 其中 Read only data 屬於靜態資料 即一旦創 造就不會去修改它 而動態資料是會被修改的 動態資料依其資料修改頻率分 為 cold data 較少修改的資料 和 hot data 修改頻繁的資料 依不同的資料型態 做資料搬移時的方式也分為三種 精品文档 21欢迎下载 Read only Data mix with dynamic data 當要被回收的 segment 中有 read only data 時 會先將所有的 read only data 搬到新的 segment 裡 若此新的 segment 又會被回收時 之前搬移過的 read only data 仍然會再被搬移一次 另外 當一個 segment 中的資料都為 read only data 時 則此 segment 永遠不會被回收的 Figure 8 Repeatedly migrating read only data when they are mixed with dynamic data 9 Cold data mix with hot data 當要被回收的 segment 中有 cold data 和 hot data 時 因 cold data 更改的頻 率較少 在 cleaning 的期間 cold data 有較高的可能性為 valid 的 因此會將 cold data 搬移到新的 segment 裡 Figure 9 Migrating cold data when they are mixed with hot data 9 Data have high locality of reference 當要被回收 segment 中的 data 是有高度被參考性的 這些 hot data 在 cleaning 的過程中仍可能是 valid 但在被搬移到新的 segment 時 hot data 又被更新一次而成為 garbage 這類的搬移即稱為 useless migration Figure 10 Useless migration when hot data are updated soon after being migrated 9 Wear Leveling 當在使用 Flash 時 常會對某個檔案做修改的動作 當此時檔案變動而要用到 更多的 Page 且 Flash 中仍有空的 Block 時 會將空的 Block 配置給此檔案來 使用 若 Flash 中已經沒有空的 Block 時 則會執行 Garbage
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社工岗的考试试题及答案
- 湖北顺丰面试题及答案
- 脐静脉考试题及答案
- 空中比划考试题及答案
- 税收筹划考试题及答案
- 打工生活考试题及答案
- 会务筹备面试题及答案
- 临床营养科普知识试题及答案2025版
- 临床医学专科内科试题及答案2025版
- 临床医学检验试题回顾及答案2025版
- 第一二单元月考综合试卷(试题)四年级上册数学沪教版
- 2025-2030中国土地估价行业标准体系完善与国际化发展研究
- 2025级新生军训开训仪式动员大会
- 2025年医院处方审核规范考核试题(附答案)
- 2025年天津市辅警招聘考试考试试题库附答案详解(黄金题型)
- 2025版旧房翻新基础装修合同范本
- 铅衣消毒管理办法
- 2025新村级后备干部考试题库(附含答案)
- 寄宿学校班主任培训课件
- 秋季肌肤护理课件
- 泪腺肿瘤护理课件
评论
0/150
提交评论