A Flash Scheduling Strategy for Current Capping in Multi-Power-Mode SSDs
【背景&问题】SSD是一种低功耗设备,其运行功耗要比HDD低。然而随着SSD中并行能力的提升以及IO传输速率地增加。SSD运行功耗/峰值功耗的管理变得越来越重要,这涉及设备运行所支持的最大功耗以及成本问题。
【现有方法】
1.后台请求将会对功耗产生较大的影响,减少后台请求。
2.减少随机写请求(会触发频繁GC)来降低功耗。
3.监视芯片的状态(ready/busy),峰值电流主要通过控制busy 芯片的数量。-- 会限制整体的并行性。
4.在两个操作之间插入一段idle time来交错它们执行峰值。-- 没有考虑读写擦除操作类型对功耗的影响。
【本文方法】
本文考虑了读写擦除操作在执行过程中对电流的需求,并对其构建模型。例如,对于读操作,先在闪存芯片上读取数据,之后将读取的数据通过总线传输到SSD控制器。在此过程中,电流的变化如下图(a)所示。先是flash处于busy状态,电流逐渐上升,当数据读取结束后,用于flash的电流逐渐下降,bus总线电流上升。当数据传输结束后,bus上的电流逐渐降低。从上述过程中可以抽象出读取过程的电流变化(如灰色线所示)。可以建模为线性拟合的模型,如右上角所示。我们通过记录拐点处的值即可还原出整个过程的电流变化,也即可以计算出任意读请求处理时刻的电流值。对于写请求和擦除请求亦是如此。
当确定读写以及擦除操作的电流模型后,对于运行时期的总电流就可以计算出来。如果发现峰值电流高于阈值,此时就需要对下发的请求进行调度。确保闪存上处理的请求总电流峰值控制在阈值电流之内。
本文考虑了特定操作类型(读/写/擦除)各自在执行过程中的电流变化,因此可以更为细致地计算闪存电流峰值,并达到控制峰值电流的目的。
目前高密度闪存的功耗问题是一个值得关注的关键问题,尤其是针对一些终端设备对耗电限制的场景。过高的功耗也会带来额外的可靠性问题,影响用户的体验。
good luck!