SSD内部体系结构的一些知识

本来是一次组会汇报,被跳过了。
那就把知识分享给大家吧。
B站视频链接

PPT百度网盘链接
提取码:yuhe。

将PPT中用到的知识备注在这里备注一下:

在NVMe SSD内部,处理I/O请求有四个主要过程。

1. HIL从主机端的提交队列中获取请求,将请求插入设备级队列;
2. HIL首先要对每个请求进行粒度分割。将请求分为多个事务(transaction),每个事务的大小是闪存页的大小(flash page size)。
3. 在FTL层,固件判断请求是写请求还是读请求。若为写请求且SSD支持写缓存,则由FTL内的Cache Management单元将每个事务的数据保存在DRAM的写缓存区中,并通知HIL准备回送响应数据;若非以上情况,则FTL通过Address Translation单元将每个事务的LPA转换为PPA,并将事务插入芯片级别的队列。之后transaction scheduling单元来解决事务之间的资源争用,将可以执行的事务发送到闪存芯片的控制器(Flash Chip Controller)。
最后,当一个请求对应对的所有事务都完成了,FTL通知HIL回送响应。

在Flash存储器中,I/O请求的操作单位是页(page);擦除的操作单位是块(block)。
在SSD使用一段时间后,一个块内将同时有有效页面和无效页面。
由于闪存的颗粒的物理特点,颗粒被写入数据不能覆盖数据,再次写入数据只能先擦除再写入。
写操作中的擦除操作包括三个步骤:
1. FTL将更新的逻辑页对应的物理页面(不再使用)标为无效页;
2. 将原块中剩下的有效页的数据转写到其他空闲的块中;
3. 将此块上的数据删除。
这个步骤也是SSD中垃圾回收(Garbage Collection, GC)机制的工作内容。
这样,SSD在写操作中,执行了一次垃圾回收,显然会影响写操作时延性能。

现代的SSD中采用异地更新 (out-of-palce update) 策略来更新物理页。
在要更新一个闪存页的数据时,不执行擦除操作,而是由FTL中的Address Translation单元为I/O事务分配一个新的空闲块上的空闲物理页地址,并更新缓存地址映射表。
然后将原来的闪存块中对应物理页的数据标记为无效,等待垃圾回收机制(GC)被触发时统一回收该闪存块。
这样新数据能够较快地写入新数据块。

稳态是在SSD中所有的闪存页/地址都被至少写入一次之后,SSD写入带宽趋于稳定的一种状态。对于实体SSD,快速进入稳态的方式是:先对SSD的所有地址进行顺序写操作,然后再进行随机写操作,能够将SSD中的所有地址都至少写过一次。
稳态对SSD性能的影响如下:
1. 在稳态下,SSD固件中的维护方法,比如垃圾回收(Garbage Collection)方法才会发挥作用。GC方法的执行会干涉用户的I/O请求的执行,并且会显著影响SSD设备的持久性能。
2. 在稳态下,写缓存空间不足,影响写操作的性能。进入稳态后,写缓存的空间不足,在新写操作到来时会导致缓存回收(cache evictions);还会使Flash后端的写流量增大。
3. (当前应用程序的物理数据放置,高度依赖于SSD的使用历史和之前进程的数据放置。)在稳态下,SSD flash芯片中空闲的物理页面较少。在新的I/O请求到来时,还有哪些空闲物理页可以使用,取决于在此前I/O操作是如何使用物理页的。因此,从闪存芯片层级来讲,I/O请求此时并不能完全利用闪存芯片之间的并行性。
综上,也就是说在稳态下,SSD的性能指标几乎会到达一个最低点,也是设备性能的下限。

对于业界的测试工作来说,稳态下的测试结果才能真正说明设备的性能水平。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值