1.一种固态硬盘智能垃圾回收与调度方法,其特征在于,包括各个通道主机IO队列CH_IO,可中断垃圾回收IO队列GC_IO,GC缓冲区BufGC,IO调度模块和GC决策模块;
CH_IO保存主机接口发送至各个通道的用户IO请求,即主机端的读写请求;GC_IO保存可中断垃圾回收的VB块的有效页读/写请求和VB块的擦除请求;BufGC暂存VB块的有效页;IO调度模块负责调度各CH_IO队列和GC_IO队列中的请求;GC决策模块负责决定垃圾回收操作方式,此外,也负责不可中断的垃圾回收;
对于每个通道,当有新的写请求到达,其GC决策模块的工作过程如下:G1、判断该通道剩余空闲空间比例U是否大于不可中断垃圾回收触发阈值THhard;
当U<THhard时,产生不可中断垃圾回收,执行G2;
当U≥THhard时,执行G3;
其中,NBfree为空闲的闪存块数,NBtotal为总的闪存块数;
G2、根据式 选择得分最小的闪存块作为GC的VB块,暂停本通道的主机IO响应,在本通道内完成不可中断GC,然后执行G9;
其中,NPvalid为该通道闪存块中的有效页数,NPtotal为该通道闪存块的总页数;
G3、判断是否有正在进行的可中断垃圾回收,采用CH_IGC_flag进行标志;若没有,即CH_IGC_flag=0,执行G4;否则,执行G9;
G4、判断该通道剩余空间比例U是否小于可中断垃圾回收触发阈值THsoft;
当U<THsoft时,执行G5;
当U≥THsoft时,执行G9;
G5、判断该通道可中断GC的VB块是否为空;若是,执行G6;否则,执行G7;
G6、根据式 选择得分最小的闪存块设置为VB块,然后执行G7;
其中,age为此块包含的数据页上次无效化距现在的时间,erase_count为块的擦除次数;
G7、判断GC缓冲区BufGC是否有足够空间容纳VB块的有效页;若有足够空间,则执行G8;
否则,执行G9;
G8、设置该通道的CH_IGC_flag=1,生成对VB块有效页的读、写请求和对VB块的擦除请求,并加载至GC_IO队列;然后执行G9;
G9、结束本次垃圾回收决策。
2.根据权利要求1所述的一种固态硬盘智能垃圾回收与调度方法,其特征在于,IO调度模块工作过程如下:如果某个通道的CH_IO不为空或者SSD的GC_IO不为空的时候,进行如下的调度过程:S1、判断该通道的CH_IO队列是否为空;若不为空,调度CH_IO中的请求直到空为止;然后执行S2;
S2、判断GC_IO队列是否为空;若不为空,执行S3;否则,结束本次IO调度;
S3、判断GC_IO队列中是否有满足下面2个条件之一的请求:条件一,属于该通道的读请求或擦除请求;
条件二,写请求且该写请求对应的读请求已经完成;
若存在这样的请求,取出第一个请求,执行S4;若没有,则结束本次IO调度;
S4、根据取出请求的类型进行相应的响应;具体如下:若是读请求,则将该通道的数据读取到GC缓冲区BufGC中;
若是写请求,则将GC缓冲区BufGC中的数据写入到该通道;
若是擦除请求,则将该通道下对应闪存块擦除,并清除该通道的CH_IGC_flag标志,即设置CH_IGC_flag=0;并设置VB块号为空,即设置VB=‑1;
S5,跳回到S1进行执行。
3.根据权利要求1所述的一种固态硬盘智能垃圾回收与调度方法,其特征在于,进一步,GC决策过程中不可中断垃圾回收触发阈值THhard和可中断垃圾回收触发阈值THsoft需要满足THhard<THsoft;这两个阈值可以采用固定阈值,也可以采用自适应阈值。
4.根据权利要求1或2或3所述的一种固态硬盘智能垃圾回收与调度方法,其特征在于,进一步,GC缓冲区BufGC既可以利用SSD内部的数据缓冲进行实现,也可以增设一个专门的缓冲用来实现。