1.从闪存架构上来梳理
1.1 Package
Package上可能是封装单Die或者多Die堆叠的。
1.2 Target/LUN/Die
Target中有多LUN堆叠,或者单Die;
LUN是Die的逻辑对应;
Volume 是host对LUN操作的地址对象,可以通过操作Volume来实现操作CE选中Die等,所以可以理解为Volume是LUN的逻辑寻址单元。
1.3 Plane
为了提升闪存的读写速度,在每个闪存中设置了一个或者多个寄存器,例如镁光的data register和cache register,能够提升并行传输的速度。
1.3.1 multi-plane
multi-plane是在一个Die里面进行的,主要目的是加速,通过对多plane操作传输速度;思考问题,
- 可以使用任意个plane做multi-plane吗?
可以使用任意个Plane进行multi-plane操作
- 擦除也有multi-plane吗
擦出也有multi-plane,而且擦除multi-plane必须对同一编号的Block进行擦除,这是物理结构导致的,因为擦除就是施加大电压大电流,有物理结构上来看,NAND会把所有 Plane 的同编号 Block,连接到同一个高压驱动模块上;当执行 Multi-Plane 擦除时,只需要给这个高压模块加一次电,就可以同时给所有 Plane 的同编号 Block 施加擦除高压
- 读/写/擦除的multi-plane有什么区别
写:操作的页需要有相同的chip地址,die地址,不同block地址,page地址,但plane地址不同。
读:plane,block和page地址都可以不同。
擦除:操作的块需要有相同的chip地址,die地址,block地址,但plane地址不同。
1.3.2 Cache写和正常写
这个也是为了加速,由于SSD缓存写到Cache中的速度和Cache写到flash的Page中的速度不匹配,可以使用Cache写加快数据传输。
1.3.3 读干扰,写干扰会作用到整个Plane层面
读干扰和写干扰的的底层逻辑都是由于读写过程中,对一些不需要读写的WL施加了导通电压,造成了不必要的写入,这样的干扰会对Plane中的所有block造成影响。
有没有硬件隔离?例如同一个Plane上的每一个Block都有属于自己的WL。
1.3.4 擦除会作用到plane上去
擦除是对整个Block而言的,整个Plane都共用一套物理衬底,但在这块基底上,会通过离子注入工艺,划分出一个个独立的 P 型阱区(P-Well),这种电气隔离特性,可以控制某一块Block的擦除;但是擦除高压会通过硅基底的寄生电容,耦合到相邻 Block 的 P-Well 上,也就是擦除A‘block的时候,Plane里面的所有Block都会收到影响。
1.3.5 Plane的寻址选地址在哪
Plane的寻址地址在Block的最低位
1.4 Block
1.4.1 block是最小的擦除单元
1.4.2 写数据;先擦后写
1.4.3 Block内部的Page需要执行顺序写的规则
在物理地址上,Block内部的Page是必须执行循序写的要求,也就是Page -Page1 写到Page x,但是对host端输入的逻辑地址而言,可以是随机写的,也就是逻辑1到逻辑100,可以是逻辑1对应物理地址的block 4,Page 3,偏移地址 4;
1.4.4 Block里面所存的Cell单元的类型要一致,例如都是TLC的类型的Cell;
1.4.5 闪存寻址中Block本身无需按照循序读写。
1.5 Page
1.5.1 Page是最小的读写单元
Page的读写寻址是从按顺序Page 0-Page1-Page x的。
1.5.2 Page中空间的划分
用户空间和OOB区的划分是在Page中,OOB区存在坏块标记表,ECC纠错校验码等。
1.5.3 Block结构中一条WL代表着1个Page。
1.5.4 XLC对应的Page都在同一个Block里面。
读取XLC的Page可以是任意顺序,但是写入XLC必须按Lower->upper Page 顺序实现。
1.5.5 column地址是Page内的最小偏移地址
也是Page内某一个字节的读写起始地址,这个地址覆盖了用户数据区和OOB区。
1.5.6 Page下逻辑存在的Frame
Page下逻辑存在frame是一种数据形式,分为Data,spare,crc,Ecc,bcm
1.6 Cell
Cell是最小的储存单元,Cell里存储数据为1,2,3bit分别对应的闪存类型是:SLC,MLC,TLC.
例如MLC的一个Cell对应着2个Page。
1.6.1 读写擦除的电气原理
读:通过阈值电压来判断
写:正常都是先擦后写,擦过的Block中每个Cell都是”1“;给想要写入的WL上加入高压,实现数据”0“写入。
擦除:在衬底上施加高压
2.名词梳理
2.1 tPROG
就是Flash编程时间,发生在Cache缓存和Page的交互过程中,速度慢,是影响Flash性能的主要时间因素。
2.2 写放大
写放大=flash实际写入量/host写入量
垃圾回收,磨损均衡,读写干扰,各类搬移的情况。
3.闪存的特性
3.1.读干扰,写干扰和擦除干扰的区别
读干扰和写干扰是在读写过程中由于在非读写Page上添加的导通电压,导致的轻微写入,这种损伤是非永久性损伤,可以通过定期重读写消除;
擦除干扰是由于擦除次数过多导致绝缘氧化层变薄,电子更容易泄漏,这种是永久性损伤,长期用以形成坏块。
3.2.闪存坏点(bcm坏点管理)
闪存坏点就是数据的某个bit发生了错误;而bcm就是如果对坏点进行管理的方式?例如使用ECC纠错管理;怎么进行坏点管理?
3.3.闪存坏块
坏块就是当闪存块接近擦写最大次数的时候,会导致Cell永久性损伤,而且使用的越久,损伤的单元越来越多,而且ECC纠错都难以纠正过来,这样的闪存块就形成了坏块?
ECC纠错的单位是什么?
3.4.闪存的时序图
3.4.1 时序图上数据发送的顺序
按顺序是:命令--地址--数据
3.4.1 warmup
在高速数据的传输过程中不做Warmup容易出错,做warmup表现是数据采样之前就多发几个DQS,这几个DQS是带着数据的。
3.4.2 采样过程
在DQS的双边沿对稳定的数据进行采样。但是也分读和写,写的时候DQS双边沿对齐数据中心;读的时候双边沿对齐数据边沿。