《FTL之垃圾回收、写放大和OP 》总结
来自 http://www.ssdfans.com/?p=1840:
写放大WA:
对空盘来说(未触发GC),写放大一般为1,即Host写入多少数据,SSD写入闪存也是多少数据量(这里忽略SSD内部数据的写,如映射表的写入)。在Sandforce控制器出来之前,写放大最小值为1。但是由于Sandforce控制器内部具有实时数据压缩模块,它能对Host写入的数据进行实时压缩,然后再把它们写入到闪存。举个例子,Host写入8KB数据,经压缩后,数据变为4KB,如果这个时候还没有垃圾回收,那么写放大就只有0.5。

一共36个方块,其中有12个有效数据块,我们做完垃圾回收后,需把这12个有效数据块写回:

后面还可以写入24个方块的Host数据。因此,为了写这24个方块的Host数据,SSD实际写了12个方块的原有效数据,再加上该24个方块的Host数据,总共写入36个方块数据,按照写放大定义。WA= 36/24 = 1.5 。
写放大越大,意味着写入闪存的数据越多,对闪存磨损就越厉害,因此,SSD设计的一个目标不是没有蛀牙,而是让WA尽量小。减小写放大,可以使用前面提到的压缩办法(主控决定),顺序写也可以减小写放大(垃圾集中,但顺序写可遇不可求),还有就是增大OP (这个可控)。
增大OP怎么就能减小写放大
先定义OP比例=(闪存空间-用户空间)/用户空间。
还是以前面SSD空间为例,SSD容量是180个小方块,当OP是36个小方块时,整个SSD空间为216个小方块,OP比例是36/180= 20%。那么180个小方块的Host数据平均分摊到216个小方块时,每个小方块的平均有效数据为180/216 = 0.83,一个Block上的有效数据为0.83*9 = 7.5,也就是一个Block上面平均有7.5个小绿块和1.5个小红块。为了写1.5个Host数据方块,需要写9个方块的数据(原有7.5个有效数据,加1.5个Host数据),写放大是9/1.5 = 6。
如果整个SSD闪存空间不变,还是216个小方块,调整OP比例至72个小方块 (OP比例50%),因此,SSD容量就变成144个小方块。144个小方块的Host数据平均分摊到216个小方块时,每个小方块的平均有效数据为144/216 = 0.67,一个Block上的有效数据为0.67*9 = 6,也就是一个Block上面平均有6个小绿块和3个小红块。为了写3个Host数据方块,需要写9个方块的数据(原有6个有效数据,加3个Host数据),写放大是9/3 = 3。
从中看出,OP越大,写放大减小。很好理解,OP越大,每个Block有效数据越少,垃圾越多,因此需要重写更少的数据,因此写放大越小。同时,由于GC需要重写的数据越少,SSD满盘写性能也越好。
OP大小和写放大以及SSD耐写性的关系见下图:

总结一下: WA越小越好,因为越小意味着对闪存损耗越小,可以给闪存延年益寿;OP越大越好,OP越大,意味着写放大越小,意味着SSD写性能越好。
《FTL之垃圾回收、写放大和OP 》总结的更多相关文章
- 《FLASH PROGRAMMING 那些事》总结
注明来自 http://www.ssdfans.com/?p=5589 以MLC为例: 对FGF(Floating Gate Flash)技术的,MLC programming一般分两步走:先prog ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- [原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法
MDK开发环境从V4升级到V5后,支持包不再是集成到开发环境当中,而是封装在PACK中,需要自行安装,比较麻烦. 搭建MDK开发环境以及破解的方法,在前面的文章中有详细说明,这里不再赘述,有兴趣的可以 ...
- Turtelizer 2 provide JTAG Flash programming and debugging of ARM based boards via USB
http://www.ethernut.de/en/hardware/turtelizer/ Introducing Turtelizer 2 Overview Turtelizer 2 had be ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...
- Programming Internal Flash Over the Serial Wire Debug <SWD> Interface -- EFM32
1 Debug Interface Overview 1.1 Serial Wire Debug Serial Wire Debug (SWD) is a two-wire protocol for ...
- Error:Flash Download Failed-"Cortex-M3"
Error:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/H ...
- STM32F4读写内部FLASH【使用库函数】
STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多.平时写的代码,烧写完之后还有大量的剩余.有效利用这剩余的FLASH能存储不少数据.因此研究了一下S ...
- Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...
- Stm32_调试出现 Error:Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...
随机推荐
- CRC16
http://www.stmcu.org/chudonganjin/blog/12-08/230184_515e6.html 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特 ...
- clone命令
git clone <repository> <directory> git clone https://nulab.backlog.jp/git/BLG/tutorial.g ...
- bootstrap基础学习三篇
bootstrap的排版 1.标题 Bootstrap 中定义了所有的 HTML 标题(h1 到 h6)的样式 2.代码如下: <div class="container"& ...
- Amazon(vpc)对等网络
对等连接测试 1.1 东京账户A创建对等连接 注意,双方的vpc网段不能重复,如果重复会造成无法配置路由表 输入双方信息 账户ID和VPC 1.2 东京账户A查看 查看连接信息 显示正在处理接受,需要 ...
- 概览C++之const
1.C语言中const与 C++中的const void main() { const int a = 10; int *p = (int*)&a; *p = 20; printf(" ...
- Pokémon Go呼应设计:让全世界玩家疯狂沉迷
引言:什么样的呼应设计会让移动游戏玩家沉迷?那必须为玩家构建一个属于玩家本人或者被玩家认可的虚拟环境.或者说是被玩家认可的虚拟世界.在移动游戏时代.想要做到这一点并不easy.但Pokémon Go却 ...
- 论坛模块_版块管理_增删改查&实现上下移动
论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...
- iOS开发之 -- 帧动画的使用
在项目的开发过程中,我们经常会遇到使用动画的时候,比如我们在请求接口直接开始一个动画,请求结束后结束动画,下面我就给大家展示一个很方便的帧动画的用法: 代码如下: .h #import <Fou ...
- ubuntu-查看本机的ip地址
打开终端中执行:ifconfig -a命令即可,如下图所示白色背景信息即是. 说明: enp0s3 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址 ...
- 在Eclipse中显示.project和.classpath和.setting目录
在Eclipse中显示.project, .classpath, .gitignore文件和.setting文件夹 在Eclipse中使用git,并显示.gitigonre文件,进行项目管理 在Ecl ...