闪存系统性能优化方向?NAND Cache Program(闪存缓冲编程) 原理与实战?_元存储
Hello 大家好, 我是元存储~
主页:元存储的博客_CSDN博客-深入理解SSD:固态存储特性与实践,深入浅出SSD:固态存储原理与特性,深入理解Flash:闪存特性与实践领域博主
前言
NAND Flash凭借其高性能、以及低成本等特性大受欢迎,是最为广泛的非易失存储介质。为了满足业务性能要求,人们想了许多方法来提升基于NAND Flash的系统性能, 本节我们带大家探索一下其中从Cache Program 是如何提升性能, 提升大不大?
1. 提升效果
话不多说, 先看提升效果。Cache Program 相对于简单的 Page program ,吞吐率从 4.4MB/s 提升到 4.8MB/s, 提升了 9%.
觉得还不错的就继续往下探索吧?
NAND Data register & Cache register
讲NAND Cache 操作之前, 就不得不先提 依赖的NAND 基础:Data Register 和 Cache Register
图. NAND 内部架构
Data register和Cache register串联并且和存储阵列(memory cell array)相连,目的就是加快IO buffers与存储阵列之间的读写操作
Data register:数据寄存器,也叫page register(页寄存器),每次能够存放一页的数据,和闪存介质交互的一个寄存器,这个寄存器有自己的地址,在不同手册中对应地址可能不同。
Cache register:缓冲寄存器,也是存放一页数据,是和Data register进行交互的一个寄存器,其也应该具有自己的地址。
外界数据从I/O和nand flash的交互实际上是通过寄存器之间进行的。
图 NAND Cache Register and Data Register 数据传输方向与延时
图片来源[4]
提供多一级的Cache register可以实现Cache读写模式,即在将Data register中的数据烧写到存储阵列时,可以将数据写入Cache register,这可以大幅提升NandFlash的写入速度。[2]
Cache操作
在写某个page时,数据从主控传输到对应plane的cache再把整个cache写到介质(flash)中,读刚好相反。而page register起到缓冲的作用,在读多个page时,当cache传输一个page数据时,page register提前把下一个page的数据准备好。
*内存的写入时间指的是page register到内存介质的时间,读刚好相反。
PROGRAM PAGE CACHE 时序
CMD Program的 NAND 命令是CMD 0x80- CMD 0x15。命令和标准的program 命令非常相近, 只是把 CMD 0x10 换成了 CMD 0x15.
CACHE编程实际上是标准的页编程命令的带缓冲编程模式,编程开始是发布SERIAL DATA INPUT(0x80)命令,随后是5个地址周期,以及页的全部或部分数据,数据copy到CACHE寄存器,然后发布CACHE WRITE(0x15)命令。数据在WE#的上升沿锁存到数据寄存器,在这个锁存期间,R/B#为低,锁存结束之后,R/B#变高,编程开始。
当R/B#变高之后,新的数据可以通过发布另一个CACHE PROGRAM命令来写入,R/B#保持低的时候由实际的编程时间来控制,第一次等于数据从CACHE寄存器写入到数据寄存器需要的时间,之后,只有数据寄存器的内容被编程进阵列之后,CACHE寄存器才能锁存到数据寄存器,所有,以后的R/B#为低的实际应该更长一些。
状态寄存器中反映CACHE R/B#的Bit6可以通过READ STATUS命令读出,以便确定什么时候,CACHE寄存器准备好接受新的数据了。
状态寄存器中反映R/B#的Bit5可以被查询,以确定什么时候当前编程周期的实际阵列编程完成。
如果仅使用R/B#来确定编程是否完成,那么编程序列的最后一页必须使用PROGRAM PAGE(0x10)来替代CACHE PROGRAM(0x15)。如果CACHE PROGRAM命令每次都使用,状态寄存器的Bit5必须用来确定编程是否结束。
当状态寄存器的bit6为1时,状态寄存器Bit0返回前一页的编程是否成功,当前PROGRAM操作的成功与否的状态是:Bit5为“1”(准备好状态)时的Bit0状态 [1]
图. Page Program 和 Cache Program 时序演示对比。
如果host 想终止 CMD Program, 只需要把最后一次的 NAND CMD 0x15 改为 0x10.
不同Page Size Cache Program性能对比
图 Cache Program vs. Page Program (tR=25 us, tWC = 25 ns, x8 I/O)
Cache Program 用于提升prorgam 的带宽速度,相对于标准的program, 在2KB page 提升25%, 而在 4KB page 提升 50%. 说明page 越大,提升效果越好。4KB 的效果好是因为写入的数据量翻倍了,而program 时,写入时间超过数据传输时间。 tWC 越大, Cache Program 带来的收益越大。
参考
[1] NAND flash cache编程_dengaoxin0873的博客-CSDN博客
[2] S5PV210体系结构与接口11:NandFlash & SD卡编程
S5PV210体系结构与接口11:NandFlash & SD卡编程_麦兜的学习笔记的博客-CSDN博客
[3] 三星nand flash之TLC Program和nand flash结构的理解
三星nand flash之TLC Program和nand flash结构的理解_nand flash program_654654654654654的博客-CSDN博客
[4] Improving NAND Throughput with Two-Plane and Cache Operations
https://www.mxic.com.tw/Lists/ApplicationNote/Attachments/2117/AN0268V2-Improving%20NAND%20Throughput%20with%20Two-Plane%20and%20Cache%20Operations.pdf
相关文章
- Xilinx平台SRIO介绍(二)SRIO IP核基础知识_子墨祭_srio
- 抖音web逆向教程_考古学家lx(李玺)
- 我用Python爬取1000封情书助力室友表白班花,却反转再反转...原来这就是班花的终极秘密!_五包辣条!
- FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用_孤独的单刀_fpga spi接口
- vue常用指令_jayLog_vue指令
- Vue3 实现路由跳转_云胡同学_vue3 路由跳转
- eslint 警告处理合集_HerayChen
- 商品信息SKU数据库设计_无恋-zx
- 基于BART的长文本生成demo_彩虹下的天桥
- uni-app判断是否是小程序/app/h5_we_前端全家桶_uniapp 判断是否小程序
- AndroidAnnotation无法生成下划线类问题记录_hiperion
- 肽核酸如何保存|包含偶氮苯单元的肽核酸(N-PNA)|99Tcm标记c-myc mRNA_遇见齐岳
- NLP LDA 主题模型 实践(使用中文)_Winter_Prince_lda nlp
- 怎么让 echarts 图表动起来?定时器解决它 ?? 大屏展示案例(动态仪表盘、动态柱状图)_Developer 小马_echarts 柱状图动画
- Colab运行YOLOv5训练自己的数据集_啥也不懂的研究生_colab yolov5
- 小程序打包体积过大的解决方案_LittleMoon_lyy_小程序打包时文件过大怎么办