找回密码
 请使用中文注册

固态硬盘的性能阻碍——读写延迟

2023-5-6 09:05| 发布者: 开心| 查看: 8| 评论: 0

阅读字号:

摘要:   在剖析读写延迟的来源之前,我们还是先来回顾一下固态硬盘的架构。从下图可以清晰的了解到,固态硬盘主要由主控,DRAM缓存以及NAND闪存构成。主控负责的任务主要是We ...
      在剖析读写延迟的来源之前,我们还是先来回顾一下固态硬盘的架构。从下图可以清晰的了解到,固态硬盘主要由主控,DRAM缓存以及NAND闪存构成。主控负责的任务主要是Wear Leveling, Garbage Collection(垃圾回收), Bad Block Management(坏块管理), ECC纠错等. 同时,在主控中,与主机对接的是Host interface,Host与固态硬盘的之间的通信协议可以是PCIe,SAS或者SATA等,和NAND闪存对接的是NAND controller.


  了解了固态硬盘的结构之后,我们需要再认识一下主机和固态硬盘数据通信的逻辑关系。从主机的角度来看,对固态硬盘进行的操作均是逻辑上的读写内容。而从NAND闪存的角度讲,主机要求的逻辑上的读写,实际到NAND闪存后,变成了物理上的读,写,擦除等执行操作。


  我们知道,固态硬盘的好坏以及用户体验集中归因于带宽,IOPS,延迟,一致性等。其中,固态硬盘的延迟,大部分原因在于NAND闪存的读写延迟造成的。

  垃圾回收是固态硬盘延长寿命,减少读写次数的手段。在垃圾回收过程中,会增加数据的搬迁,擦除等操作,所以垃圾回收也会带来一定程度的写入延迟。不过,这个写入延迟并不是直接的,而是由DRAM等造成的间接延迟。


  从上图,我们可以看到,在4KB随机写, 队列深度QD=1的情况下,有些固态硬盘的写入延迟超过了200ms。虽然这200ms并不能让我们有深刻的感觉,但对于高性能系统而言,这个200ms是灾难性的。

  如果说,写入延迟是垃圾回收间接造成的,那么读取延迟则是垃圾回收带来的直接恶果。因为,在垃圾回收启动之后,固态硬盘的主控将需要做垃圾回收的区块中的数据搬迁到spare区域,然后在数据搬迁完成后再擦除整个区块的内容。这个过程影响了固态硬盘的读取速度。这也是当我们的固态硬盘在写入一段时间之后,性能会变慢的原因,因为内部启动了垃圾回收的步骤。


  从上图,可以看到,在4KB随机写, 队列深度QD=1的情况下,有些固态硬盘的读取延迟超过了35ms。

  如果对NAND闪存先发了一个read block1 page2的命令,之后接着再发个erase Block0的命令,这个时候,读取延迟会因为后面的erase操作增大了延迟了,此时延迟的大小基本等于NAND读取时间tR加上块擦除时间tErase.


  同样,如果对NAND闪存先发了一个read block2 page3的命令,之后接着再发个program Block0 page1的命令,这个时候,读取延迟会因为后面的program操作增大了延迟了,此时延迟的大小基本等于NAND读取时间tR加上后面program的时间tPROG.

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-8-27 00:44 , Processed in 0.174046 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部