SSD并行性提升--高级命令
前言
前面两篇文章提到了关于GC的背景、GC带来的问题以及一些研究方法对GC的改善,今天本来想再补充关于GC优化的研究方法,但是在调研文献的时候发现我对提升SSD性能三个高级命令居然还是半生不熟😭,于是今天想着做小总结,大概讲一下这三个命令的实现细节。
一、高级命令(Advanced Commands)【1】
1、IDM(Internal Data Movement)
这节来讲一下GC里面为了减少数据迁移时间采用的IDM策略,也被称为copy back技术。基于该策略下,数据的迁移是在同一个plane中执行的,从而可以避免占用IO总线,以供其他读写请求使用,从而提升SSD的读写性能。但是需要保证源页和目标页所在的channel、chip、die和plane相同,并且页码的奇偶性也要相等,即奇数页必须只能迁移到奇数页,偶数页只能迁移到偶数页。
这个命令能有效降低数据迁移的延迟时间。但却会带来其他问题,由于ECC无法集成到闪存单元中,因此是在外部的闪存控制器中完成,如果执行copy back命令,数据进行迁移之前没有到闪存控制器中执行ECC纠错,会积累一定的误码率,当误码率超出ECC纠错能力时,数据丢失。基于这个问题是有一些相关文献进行研究的【2】【3】【4】,这里我放一下参考文献,大家感兴趣可以看看,或者哪一天我不摆烂了,我就讲讲。
2、多plane命令(Multi-plane)
通过该命令,可以实现在同一个die上的所有plane同时执行读、写或者擦除操作,通过该命令可以实现多个plane同时并行执行操作,有效利用了SSD内部的并行性设计。但是该命令还有一个严格的限制,就是并行执行的操作地址必须是相同的页地址(读操作和写操作)或者是相同的块地址(擦除操作)。如下图所示,可以同时执行位于channel0–package0–chip0–Die0上的plane0和plane1上page1的读写操作,但channel0–pacakage0–chip0–die1–plane0–page2和channel0–pacakage0–chip0–die1–plane0–page1的读写操作不能并行执行,因此多plane命令虽然可以有效利用SSD内部并行性来提升SSD性能,但限制比较大。
需要注意的是,这里的读操作指的是将数据从闪存单元中读出到plane的data register里,写操作指的是将暂存到plane的data register里的数据编程到闪存单元中,擦除操作指的是对当前块的衬底施加擦除电压实现放电操作。(一个完整的读写操作包括数据传输阶段、数据等待阶段以及数据刷新阶段,此处指的是数据的刷新阶段)
3、交错命令(Interleave)
该命令可以分为两种级别的交错操作,一种是基于相同Chip的不同Die上的交错操作,另一种是基于相同channel不同chip的交错操作,原理相同。以Die级为例,该命令下可以同时并行执行相同chip上不同die上多个page的读、写操作或者多个块的擦除操作。并且,不同于多plane命令,交错命令对页地址和块地址没有限制。如下图所示,展示了多plane命令和基于相同chip的交错命令的区别。如图a所示,多plane命令需要等到多个plane上的数据均通过数据总线传输到plane的data register上才可以执行并行操作;如图b所示,die级的交错命令允许当一个die上的数据先行到达data register后立即执行,并且在执行的过程中,由于IO总线空闲,因此可以同时执行die上的读写操作和IO总线上的数据传输,等到第二个数据传输到另一个die上的data register后,两个die(相同chip内)同时执行读写操作。
三、个人总结
其实基于以上介绍后,不难发现,虽然这三个命令都能提升SSD的并行性能,但是由于闪存的电路设计,这三个命令的受限都比较大。并且,主要瓶颈还是没得以解决,当host端发送大量IO请求时,即使能充分调度SSD的并行性能,但是IO数据总线的传输性能依旧不变,因此这种情况下IO数据总线会一直处于忙碌,大量的读写请求会因为IO总线忙碌而长时间被阻塞,不能被及时处理,而缓存的出现便能很好地分担IO总线的负担(后续再讲)。
reference
【1】Y. Hu, H. Jiang, D. Feng, L. Tian, H. Luo, and S. Zhang, “Performance impact and interplay of SSD parallelism through advanced commands, allocation strategy and data granularity,” in Proc. 25th Int. Conf. Supercomput., 2011, pp. 96–107.
【2】Wu F, Zhou J, Wang S, et al. FastGC: Accelerate garbage collection via an efficient copyback-based data migration in SSDs[C]//Proceedings of the 55th Annual Design Automation Conference. 2018: 1-6.
【3】Micron.2006.TN-29-15: NAND Flash Internal Data Move Introduction. (2006).
【4】Chang W, Lim Y, Cho J. An efficient copy-back operation scheme using dedicated flash memory controller in solid-state disks[J]. Proc. of the International Journal of Electrical Energy, 2014, 2(1).