nand flash basics

nand flash basics

nand flash page size, block size

page是NAND Flash上最小的读/写单位(一个page上的单元共享一根字符线Word line),块是最小的擦除单位(。不同厂牌不同型号颗粒有不同的page和block大小。

4KB的页尺寸,256KB的块尺寸。图中4096字节用于存储数据,另外128字节用来做管理和ECC用。

from: https://zhuanlan.zhihu.com/p/423739433

nand flash写之前要先erase

nand flash不支持就地更新(in place update),需要先erase再写,

因为写不能使bit从0变为1,只能从1变为0,erase就是将bit转为1

nand flash顺序、随机读写性能特点

NAND型闪存的特点是读性能和顺序写性能较高,但随机写性能相对较低。闪存随机写性能差的原因,主要由闪存的物理特性导致,即NAND型闪存无法执行就地更新操作,必须先擦除,再写。对于大多数应用而言,随机写的IO频繁度要远高于顺序写,这将导致频繁的垃圾回收操作,影响读写性能

ERASE/TRIM/DISCARD/SANITIZE的区别

总体上来说,ERASE/TRIM/DISCARD三者很相似,SANTIZE差异比较大。总体区别如下表格所示

 

擦除命令

 

 

Erase

Trim

Discard

Sanitize

argument

0x00000000

0x00000001

0x00000011

N/A

unit

Erase group

Write block

Write block

N/A

Operation

moving the mapped host address range to the unmappedhost address range

moving the mapped host address range to the unmappedhost address range

moving the mapped host address range to the unmappedhost address range

Removedfrom unmapped user address space

 

Read the region applied

All 0 or 1 (depending on memory tech.)

All 0 or 1 (depending on memory tech.)

Don’t care (Some or all of the original data)

N/A

Interrupt

N/A

重置Device(使CMD0,CMD15,或使用eMMC的硬件重置)或电源故障将终止任何挂起和运行中的Trim命令,这样将会导致在这样操作中的数据处在一个未知的状态。

重置Device(使CMD0,CMD15,或使用eMMC的硬件重置)或电源故障将终止任何挂起和运行中的Discard命令,这样将会导致在这样操作中的数据处在一个未知的状态。

当Sanitize操作完成了之后,在未映射的host地址空间内将不会有数据存在。当Sanitize操作被HPI或Powerfailure中断后,未映射的host地址空间状态将无法得到保护,Host必须写入extendedCSD[165]SANITIZE_START来重新初始化Sanitize操作并允许Sanitize操作来确保未映射的host地址空间里的数据已被清除。

 

 

from: https://www.likecs.com/show-203366921.html

擦除组(EraseGroup)

Erase翻译过来是抹去、擦除的意思。eMMC中可擦除的单位称为“擦除组”,擦除组是用写入块(writeblocks,Device的基本可写单位)来测量的。擦除组的大小是一个设备特殊参数,当ERASE_GROUP_DEF(ecsd[175])设置为不可用的时候,擦除组的大小在CSD中定义;当ERASE_GROUP_DEF设置为可用的时候,擦除组的大小在EXT_CSD中定义。

当ERASE_GROUP_DEF(EXT_CSD[175])=0时

size of erasableunit = (ERASE_GRP_SIZE[46:42] + 1) * (ERASE_GRP_MULT[41:37] + 1)

size of writeprotect = (WP_GRP_SIZE [36:32] +1) * erasableunit 

当ERASE_GROUP_DEF(EXT_CSD[175])=1时

size of erasableunit = 512Kbyte × HC_ERASE_GRP_SIZE(ecsd[224])

size of writeprotect = 512KB * HC_ERASE_GRP_SIZE *HC_WP_GRP_SIZE

from: https://www.likecs.com/show-203366921.html

write block size

512 bytes

SLC缓存

Afterburner™ 是至誉科技开发的性能增强技术,利用 SLC 缓存来提高连序读写速度。与战斗机中使用的afterburner技术不同,至誉科技的 Afterburner™ 技术可在关键时刻提供短暂的额外性能。

Afterburner™ 的原理是将存储装置的一部分 3D TLC 闪存记忆体配置为 SLC 缓存,使 3D TLC 闪存能够模仿 SLC 的性能优势——尤其是写入性能的部分。Afterburner™ 会在不影响性能的情况下自动将写入 SLC 缓存的数据移至 3D TLC 闪存区内。

不同于喷射机的是,至誉科技的 Afterburner™ 技术完全自动化。不需要人为调整,就能带给您优异的存储性能。

from: https://exadrive.com.cn/afterburner-tech/

 

eMMC 分区管理

https://linux.codingbelief.com/zh/storage/flash_memory/emmc/emmc_partitions.html#user-data-area

https://blog.csdn.net/weixin_44773006/article/details/105125490

nand flash OP

https://www.techtarget.com/searchstorage/definition/overprovisioning-SSD-overprovisioning

https://www.seagate.com/cn/zh/tech-insights/ssd-over-provisioning-benefits-master-ti/

pSLC

https://zhuanlan.zhihu.com/p/258640200

emmc trim, discard, background command

trim,discard命令是将nand block invalidate,这样在garbage collection时将会跳过这些invalid page,不再将他们copy到另外的位置,所以可以减少GC的工作量,这可以提高random write performance,同时因为减少了数据copy,从而对nand flash的寿命是有益的。

trim、discard命令中的地址需要对齐到the boundary of multiple pages size,否则在后续的GC过程中可能会存在某些page是valid的需要copy到另外的地方造成overhead。

background command是host在没有IO request给到device的情况下在将emmc power off(比如手机没有在使用进入睡眠模式)前,host给device发送此command,device收到command后会执行pending activity,比如garbage collection,wear leveling。通过这样方式,host在给device发送write request时,可以降低此时触发进入GC的几率,因为此时FTL已有足够的free page来完成此write request,这样同样可以提高random write performance。

reference: https://cosmoss-jigu.github.io/pages/pubs/trim-kim-gcce14.pdf

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-11-05 19:31  aspirs  阅读(231)  评论(0编辑  收藏  举报