0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么使用SSD才能避免越写越慢?

SSDFans 来源:未知 作者:胡薇 2018-06-02 10:58 次阅读

垃圾回收(Garbage Collection,GC)是FTL的一个重要任务。我们虚构一个小小的SSD空间,来讲垃圾回收原理,以及与之紧密联系的WA(Write Amplification,写放大)和OP (Over Provisioning,预留空间)等概念。

麻雀虽小五脏俱全。翠花,上麻雀。

图1-1 虚构的小小SSD空间

我们假设该SSD底层有4个通道(Channel,CH0-CH3),连接着4个Die (每个Channel上的Die可并行操作),假设每个Die只有6个闪存块(Block0-Block5),所以一共24个闪存块。每个闪存块内有9个小方块,每个小方块的大小和逻辑页大小一样。24个闪存块中,我们假设其中的20个闪存块大小为SSD容量,就是主机端看到的SSD大小;另外4个闪存块是超出SSD容量的预留空间,我们称之为OP (Over Provisioning)。

好,一个SSD摆在我们面前,蛋蛋开始写小电影了。

图1-2 主机写入4个逻辑页数据后

我们顺序写入4个逻辑页,分别写到不同通道上的Die上,这样写的目的是增加底层的并行性,提升写入性能。

用户继续顺序写入,固件则把数据交错写入到各个Die上,直到写满整个SSD空间(主机端看到的)。如下:

图1-3 用户空间写满后的SSD

整个盘写满了(从用户角度来看整个用户空间写满了,但在闪存空间,由于OP的存在,并没有写满),如果蛋蛋想放入更多的小电影,怎么办?不能怎么办,只能把看过的小电影割爱删除了,腾出空间放新的小电影。

继续拷入小电影。

图1-4 删除4个逻辑页后再次写入4个逻辑页

假设还是从逻辑页1开始写入。这个时候,SSD会把新写入的逻辑页写入到所谓的OP空间。对SSD来说,不存在什么用户空间和OP空间,它只看到闪存空间。主机端来数据,SSD就往闪存空间写。上面有人红了,怎么回事?因为逻辑页1-4的数据已更新,写到新的地方,那么之前那个位置上的逻辑页1-4数据就失效了,过期了,变垃圾了。用户更新数据,由于闪存不能在原位置覆盖写,固件只能另找闪存空间写入新的数据,因此导致原闪存空间数据过时,形成垃圾。

继续顺序写入,红色方块越来越多(垃圾数据越来越多)。所有闪存空间都写满后,小SSD世界就是下面这个样子:

图1-5 闪存空间写满

等所有Die上的Block 5写满后,所有Die上的Block 0也全红了(这些数据都是垃圾)。

现在不仅整个用户空间都写满,整个闪存空间都满了。如果用户想继续写入后续的逻辑页(36之后的) ,怎么办?

这个时候,就需要垃圾回收了。我们暂时从之前的SSD系统中走出来,看看什么是垃圾回收。

这里需要说明的是,实际中是不会等所有闪存空间都写满后才开始做GC的,而是在满之前就触发GC,这里只是为描述GC而做的假设。

垃圾回收,就是把某个闪存块上的有效数据(图4-19中绿色的)读出来,重写,然后把该闪存块擦除,就得到新的可用闪存块了。

图1-6 垃圾回收示例

图中,Block x上面有效数据为A,B,C,Block y上面有效数据为D,E,F,G,红色方块为无效数据。垃圾回收机制就是先找一个可用Block z,然后把Block x和Block y的有效数据搬移到Block z上面去,这样Block x和Block y上面就没有任何有效数据,可以擦除变成两个可用的闪存块。

图1-7 擦除垃圾数据块变成可用数据块

回到我们的小小SSD系统中来。

上例中,由于我们是顺序写入,垃圾集中在Block 0上,上面没有任何有效数据,我们把它们擦除就可以腾出新的写入空间。用户就可以把新的数据写入到垃圾回收完成的Block 0上了。 从这个例子中,我们可以看到:顺序写,即使是闪存空间写满后的写(Full Drive写),性能也是比较好的,因为垃圾回收可以很快完成(也许仅仅只要一个擦除动作)。

但现实是残酷的:用户写入数据,更多的可能是随机写入数据。下面是一个闪存空间经历随机写满后的样子:

图1-8 随机写满闪存空间后的SSD

用户如果继续往SSD上写入数据,那么SSD怎么处理?当然需要做垃圾回收。 可世道变了,SSD内部状况比之前看到的复杂多了,垃圾数据分散在每个闪存块上,而不是集中在某几个闪存块上。这个时候,如何挑选需要回收的闪存块呢?是的,挑垃圾比较多的闪存块来回收,因为有效数据少,要搬移的数据少,这样腾出空闪存块的速度快。

对上面每个闪存块的垃圾数(红色方块)做个统计:

表1-1 每个闪存块上垃圾数据统计

由于我们是同时往4个通道上写,我们需要每个通道都有一个空闲的闪存块,因此,我们做垃圾回收时,不是回收某个闪存块,而是所有通道上都要挑一个。一般选择每个Die上块号一样的所有闪存块做垃圾回收。上例中,Block 0上的垃圾数量最多(24个红色方块,最多),因此我们挑Block 0作为垃圾回收的闪存块(这里忽略PE count等因素,只看垃圾数)。 回收完毕,我们把之前Block 0上面的有效数据(绿色方块)重新写回到这些闪存块(这里,我们假设回收的有效数据和用户数据写在同一个闪存块,实际,它们可能是分开写的)。

图1-9 做完垃圾回收后的BLOCK0可以继续写入数据

这个时候,有了空闲的空间(白色方块),用户就可以继续写入数据了。

江湖传言:SSD越写越慢。没错,其实这是有科学依据的:可用闪存空间富裕时,SSD是无需做GC的,因为总有空闲的空间可写。SSD使用早期,由于没有触发GC,无需额外的读写,所以速度很快。慢慢的会发现SSD变慢了,主要原因是SSD需要做GC。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2658

    浏览量

    115295
  • 固态硬盘
    +关注

    关注

    11

    文章

    1330

    浏览量

    56443

原文标题:固态硬盘越写越慢是真的吗?

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SSD是什么意思,什么是SSD

    、SONY等一大批国外实力厂家的不断开发研究,SSD市场已经全面开花了。不过不要担心,中国第一款SSD已经由深圳亿正存储科技公司于2007年1月1日宣布研发完成,并可以大批量进行生产,而且读与速度均大于
    发表于 03-25 16:20

    SSD1289寄存器函数

    ;}这是一个例程的关于SSD1289寄存器的一个函数,有两点不明白:1、这个 (u32)0x6c000000中的0x6c000000代表什么,为什么有这个数字,难道涉及SSD1289的寄存器地址范围?2
    发表于 03-21 21:12

    安卓手机越慢。这是为什么呢?

    根据第三方的调研数据显示,有77%的Android手机用户承认自己曾遭遇过手机变慢的影响,百度搜索“Android 卡慢”,也有超过460万条结果。在业内,Android手机一直有着“越慢
    发表于 09-05 09:50

    我是用ssd做引导盘启动,怎么做才能用网口读写ssd里面的文件

    我是用ssd做引导盘启动,怎么做才能用网口读写ssd里面的文件
    发表于 04-21 18:18

    labview程序运行越慢的现象

    一次循环显示画面后,会停留一小段时间,约几秒。然后进入下一次循环。运行时间久,两次循环之间停留的时间会越来久。每次显示后,数据都要进行处理。但并没有进行存储。所以应该没有出现数据不断堆积在内存中的问题。请问这是什么原因呢?如果要查找原因应该怎么做呢?
    发表于 12-07 14:27

    急求!!!vi运行时间久,运行速率越慢怎么办

    了其他所以的程序和窗口,不会存在内存,cpu负荷不过来的问题。挺奇怪的是一模一样的vi我放在一台配置较差的笔记本上跑,传输频率特别稳,半小时除了鼠标没移动的时候,其他基本都是500hz的频率收数据。两台电脑labview我是安装的同一个版本,真的是不懂为什么一台高配电脑运行越慢
    发表于 05-01 14:51

    ALIENTEK开发板实验28里面的实时时钟越慢

    这个实时时钟越慢啊,应该是软件上面的问题,请问应该修改那个参数啊,还是说这个STM32的RTC就是不准确的啊??????请高手指点迷津!
    发表于 03-09 04:35

    EMWIN越慢的原因是什么?

    在LPC1788上跑了个EMWIN,前面几次切换画面(或其他动作)都很快,但在后面会越来越慢,半天没响应,请问是怎么回事?(就是只有两个画面也会这样)
    发表于 08-25 08:02

    SSD用久了速度会下降,这究竟是为什么呢?

    SSD用久了速度会下降,这究竟是为什么呢?造成SSD越慢的原因有哪些呢?
    发表于 06-18 08:49

    【原创视频】如何避免OCL电路交失真设计

    大家上午好!今天给大家带来【如何避免OCL电路交失真设计】讲解视频,我们会持续更新,有问题可以留言一同交流讨论。上期回顾:运放+三极管实现恒流源
    发表于 12-09 09:02

    【原创视频】旋变驱动电路OCL电路避免失真设计

    大家下午好!今天给大家带来【旋变驱动电路OCL电路避免失真设计】讲解视频,我们会持续更新,有问题可以留言一同交流讨论。上期回顾:如何避免OCL电路交失真设计
    发表于 12-13 18:02

    SSD越用越慢怎么办

    SSD早已是主流攒机的标配,有些更陪伴小伙伴有一段日子了,有些问题也开始暴露出来了,最明显的当然就是明显降速问题。为啥SSD的速度。特别是存储速度会下降呢?有没有啥方法能它的速度恢复正常,至少让降速别那么夸张呢?
    的头像 发表于 05-20 14:37 2964次阅读

    SSD为什么会越用越慢,究竟是哪方面的原因

    首先SSD的写入方式意味着它无法直接覆盖数据,全新的SSD因为此前无数据可以随意写入,但使用一段时间后,SSD就需要先进行空间回收擦除再进行写入,会导致速度变慢。
    发表于 01-14 11:41 1081次阅读

    SSD越用越慢的原因分析

    每当选购电脑时,你会发现,配置存储介绍总是不一样,要么纯固态(SSD),要么纯机械,要么固态+机械的组合硬盘。
    发表于 01-21 10:11 2036次阅读
    <b class='flag-5'>SSD</b>越用<b class='flag-5'>越慢</b>的原因分析

    忆联SSD智慧算法关注用户痛点,为消费级SSD带来极致性能与功耗体验

    随着智能设备的演进,PC的形态越来越丰富,超极本、游戏本、PC平板二合一等不断涌现,PC端对SSD性能、功耗的要求也日益增高,用户面临SSD越用越慢SSD健康状态无法监测等痛点。
    的头像 发表于 01-04 10:52 1081次阅读