|
在剖析读写延迟的来源之前,我们还是先来回顾一下固态硬盘的架构。从下图可以清晰的了解到,固态硬盘主要由主控,DRAM缓存以及NAND闪存构成。主控负责的任务主要是Wear Leveling, Garbage Collection(垃圾回收), Bad Block Management(坏块管理), ECC纠错等. 同时,在主控中,与主机对接的是Host interface,Host与固态硬盘的之间的通信协议可以是PCIe,SAS或者SATA等,和NAND闪存对接的是NAND controller.
垃圾回收是固态硬盘延长寿命,减少读写次数的手段。在垃圾回收过程中,会增加数据的搬迁,擦除等操作,所以垃圾回收也会带来一定程度的写入延迟。不过,这个写入延迟并不是直接的,而是由DRAM等造成的间接延迟。
如果说,写入延迟是垃圾回收间接造成的,那么读取延迟则是垃圾回收带来的直接恶果。因为,在垃圾回收启动之后,固态硬盘的主控将需要做垃圾回收的区块中的数据搬迁到spare区域,然后在数据搬迁完成后再擦除整个区块的内容。这个过程影响了固态硬盘的读取速度。这也是当我们的固态硬盘在写入一段时间之后,性能会变慢的原因,因为内部启动了垃圾回收的步骤。
如果对NAND闪存先发了一个read block1 page2的命令,之后接着再发个erase Block0的命令,这个时候,读取延迟会因为后面的erase操作增大了延迟了,此时延迟的大小基本等于NAND读取时间tR加上块擦除时间tErase.
|