3.4 为啥越用越慢?NAND闪存的读写过程
SSD与传统HDD有着不同的架构和原理,读写数据的过程也是不一样的,这种原理上的不同带给SSD优异的性能,但是也决定了SSD固有的一些缺点。
HDD磁盘有扇区、柱面之分,SSD的基本组成也有Page(页面)、Block(区块)、Plane(平面)之分,page是最基本的组成,大小一般是4KB,,每个block通常包含64个page,容量是256KB,也有128个page的,容量就是512KB,不过目前主流的25nm工艺闪存普遍都是8KB page容量,128个page配置。
多个block再组成plane,而plane就是就是闪存中的一颗核心(die)了,而我们看到的闪存片其实是多颗die封装在一起的,一般是2-8颗,而整个SSD上则会由多片闪存组成。
实际上,如果SSD内部是以die颗粒的RAID 0模式组建的,那么block层级之上还有一个band之分,它是RAID 0模式中所有芯片的同一块block区块的总和。
简单的描述就是这样:page→block→band→plane-die→闪存片→SSD。
数据读写的主要过程就在page、block以及band三个层面上。
在系统中,数据写入是以page为单位的,SSD写入新数据擦除原有的数据,但是擦除过程只能以block为单位,要清除就得擦除整个block单元,哪怕只写入了一个page的文件。
在一篇国外博文中找到一个非常简单形象的SSD写数据的描述,我们来看看SSD到底是怎么写入数据的。
这里为了简化说明,假设每个block只有12个page,每个page大小1Byte。
无数据的情况就是这样的,SSD性能最好的状态
打开笔记本程序
输入1234并保存
这个文件的大小正好是4Byte
写入到SSD就是占用了block A的4个page
改变原来的文档内容,变成56781234
现在文档大小变成了8B
保存时SSD不能直接覆盖原有文件,需要重新占用8个page文件
现在就是这个样子了
Block A实际上已经写“脏”了,要恢复性能就需要删除整个block区块,此时需要把有用的数据拷贝到另一个空白blokc中然后再清除Block A。
数据写入到空白的block B中
实际过程中数据显然不是只有这么简单,略微复杂一点的情况就如上图所示,1234.txt文档占用了8个page,xyz.dll也是占用8个page,但是分别在两个block区块中,word.doc文件也是占用了两个block,其中占满一个,另一个占用了8个page。
此时如果用户删除了xyz.dll文件,那么数据就要重新洗牌,Block B中的1234.txt重新拷贝到block A中,dock文件中的4B也要写入block A中,还有多余的4个page要再占用block D的4个page空间,而block E中的数据是满的,不需要移动,此时的排列就如上图所示,腾出来的block B和block C也就可以清除数据以恢复性能了。
上述过程还只是非常简单的例子,如果是真实的应用环境情况会更复杂,SSD需要不断地在各个block之间进行写入-转移-清空操作,而且SSD的写入速度与擦除速度相差很大,这也会影响SSD的性能发挥。
总之,SSD的特性决定了它的写入方式,不能直接覆写数据使得SSD多了擦除的操作,而写入单位与擦除单位的不统一又让SSD不停地在各个Block区块之间折腾,而写入数据的延迟约为0.2ms,但擦除操作需要2ms左右,SSD用久了需要擦除的区块就会越多,性能自然也会变慢。
这些问题都是SSD必须处理的,影响可大可小,也让很多人开始对SSD的可靠性不放心,下一个关注点自然就是SSD的使用寿命了。
我匿名了 2014-03-28 06:39
能不能做一个新版SSD的测评?
已有9次举报支持(30) | 反对(3) | 举报 | 回复
157#
游客 2012-12-18 14:53
支持(55) | 反对(0) | 举报 | 回复
137#
游客 2016-02-03 23:25
建兴睿速T9 就是Marvell 88SS9187主控!怎么市面上没有呢?我都在用了!
已有1次举报支持(5) | 反对(3) | 举报 | 回复
160#
Tech学前班 2016-01-23 11:12 | 加入黑名单
而且我认为 存储设备哪有什么默认的 OP空间 一说,完全就是单位转化造成的数值的差异,U盘、机械硬盘、SSD、TF卡、SD卡 等等 要是都有人为的OP空间,想想一下 这个世界上所有的OP空间加起来是多么巨大的浪费?对于把利益放在第一位的厂商来说,这完全就是不可能发生的事情!
已有2次举报支持(4) | 反对(6) | 举报 | 回复
159#
Tech学前班 2016-01-23 11:06 | 加入黑名单
3.6.1中 OP空间 那段我觉得有错 “256GB容量SSD的宣称字节数是256,000,000,000,而闪存的真实容量是256x1024x1024x1024=274,877,906,944字节,如果按厂商的方式换算就是275GB左右了” 这句话中 256乘以1024 应该就错了吧。
已有3次举报3.6.2中 SSD可用容量 这句话 “也就人是说从晶圆厂的1024转到SSD厂商的1000,然后再从这个1000的比列转回到操作系统的1024,容量还会再减少一次。”我觉得是错的。现在的储存设备不论是厂商还是晶圆厂都是 按照 1kb=1000字节 来计算的吧。
拿例子中 256GB 硬盘来计算 实际可用容量是 256,000,000,000/1024/1024/1024=238.42GB
OP=(256-238.42)/238.42=7.37% 这样才对啊
支持(6) | 反对(2) | 举报 | 回复
158#
游客 2014-03-27 16:21
孔压下
已有1次举报支持(3) | 反对(0) | 举报 | 回复
156#
游客 2013-10-30 18:23
支持(3) | 反对(0) | 举报 | 回复
155#
ngcw1986大学生 2013-09-07 15:19 | 加入黑名单
154#
游客 2013-08-31 21:21
支持(7) | 反对(0) | 举报 | 回复
153#
游客 2013-08-15 18:08
支持(4) | 反对(0) | 举报 | 回复
152#
philip管理员 2013-08-08 16:41 | 加入黑名单
支持(15) | 反对(0) | 举报 | 回复
151#
lancon 2013-07-12 22:16 | 加入黑名单
支持(12) | 反对(0) | 举报 | 回复
150#
游客 2013-06-21 20:00
支持(3) | 反对(0) | 举报 | 回复
149#
游客 2013-05-04 17:32
支持(10) | 反对(0) | 举报 | 回复
148#
游客 2013-04-19 00:51
支持(5) | 反对(1) | 举报 | 回复
147#
游客 2013-04-18 15:28
支持(3) | 反对(1) | 举报 | 回复
146#
游客 2013-02-18 14:55
145#
游客 2013-02-18 10:18
支持(3) | 反对(0) | 举报 | 回复
144#
游客 2012-12-31 21:04
支持(4) | 反对(0) | 举报 | 回复
143#
游客 2012-12-29 23:57
支持(1) | 反对(0) | 举报 | 回复
142#
游客 2012-12-29 13:35
支持(1) | 反对(0) | 举报 | 回复
141#
游客 2012-12-28 22:42
支持(3) | 反对(0) | 举报 | 回复
140#
游客 2012-12-27 11:11
支持(2) | 反对(1) | 举报 | 回复
139#
kingterrors学前班 2012-12-18 14:57 | 加入黑名单
支持(2) | 反对(0) | 举报 | 回复
138#
游客 2012-12-14 13:43
支持(2) | 反对(0) | 举报 | 回复
136#
游客 2012-12-09 23:26
支持(2) | 反对(0) | 举报 | 回复
135#
游客 2012-12-06 10:58
支持(21) | 反对(6) | 举报 | 回复
134#
游客 2012-12-03 14:45
支持(1) | 反对(2) | 举报 | 回复
133#
游客 2012-12-02 00:21
支持(1) | 反对(0) | 举报 | 回复
132#
游客 2012-11-27 18:32
支持(1) | 反对(0) | 举报 | 回复
131#
提示:本页有 1 个评论因未通过审核而被隐藏
加载更多评论