发明名称 用于SSD的多通道动态读写调度方法
摘要 本发明公开了一种用于SSD的多通道动态读写调度方法,该方法根据轮转调度策略选择写请求的目标通道,记录该通道上的读请求序列,同时将主机端发送的写请求缓存在SSD的写缓冲中,当写缓冲中的数据量累积达到指定阈值时,分析目标通道上的读请求序列,找出其中的热点数据,将热点数据预取到写缓冲以提高读请求的命中率,然后将写缓冲累积的写请求调度到目标通道执行,在执行写请求的同时响应排队等待的读请求,最终将累积的写请求执行完毕。本发明具有各通道写入均衡、SSD使用寿命长、写请求对读请求影响小、垃圾回收对读请求影响小、读延迟低的优点。
申请公布号 CN103135945B 申请公布日期 2014.11.26
申请号 CN201310096932.6 申请日期 2013.03.25
申请人 中国人民解放军国防科学技术大学 发明人 肖侬;陈志广;卢宇彤;周恩强;刘芳;所光;谢旻;董勇;张伟
分类号 G06F3/06(2006.01)I 主分类号 G06F3/06(2006.01)I
代理机构 湖南兆弘专利事务所 43008 代理人 赵洪;谭武艺
主权项 一种用于SSD的多通道动态读写调度方法,其特征在于实施步骤如下:1)在SSD内预先配备一个基于DRAM的写缓冲,在所述写缓冲中初始化用于指定SSD当前通道的目标通道、用于记录目标通道累计写请求数目的写请求计数器、用于缓存写请求的地址和数据的FIFO队列、用于记录目标通道上读请求的读请求序列,所述读请求序列为哈希表,所述哈希表的每一项记录包含逻辑地址以及逻辑地址的访问次数;2)根据轮转调度策略从SSD的多个通道中选择一个目标通道,跳转执行下一步;3)接受主机端发送的读写请求,跳转执行下一步;4)判定读写请求的请求类型,如果请求类型为读请求,跳转执行步骤5);如果请求类型为写请求,跳转执行步骤7);5)判定所述读请求是否为指向目标通道的读请求,若读请求指向目标通道则跳转执行步骤6),否则将读请求的数据从闪存芯片取出后直接返回给用户,等待在下一个读写请求到来时跳转执行步骤3);6)将读请求记录至目标通道的读请求序列中,并将读请求的数据从闪存芯片中读出返回给用户,所述将读请求记录至目标通道的读请求序列中时,首先判断读请求的逻辑地址是否已经存在于所述哈希表中,如果已经存在则将所述哈希表中所述逻辑地址的访问次数加1;否则将读请求的逻辑地址添加至所述哈希表中,并将对应的访问次数设置为1;等待在下一个读写请求到来时跳转执行步骤3);7)将写请求的地址和数据加入FIFO队列中,跳转执行下一步;8)通过所述写请求计数器将写请求数目进行累加,跳转执行下一步;9)检测写请求数目是否大于指定阈值,如果大于指定阈值则跳转执行步骤10);否则等待在下一个读写请求到来时跳转执行步骤3);10)分析目标通道的读请求序列,根据目标通道的读请求序列中逻辑地址的访问次数从SSD中预取读请求访问热点数据,跳转执行下一步;11)从所述FIFO队列中取出第一个写请求,在目标通道中分派该写请求所需的空间,等待该写请求处理完毕后跳转执行步骤12);12)检测目标通道上是否有等待的读请求,如果有读请求排队等待则跳转执行步骤13),否则,跳转执行步骤14);13)处理目标通道上排队等待的读请求,如果读请求与所述写缓冲中的读请求访问热点数据发生命中,则直接将所述写缓冲中命中的数据返回到主机端,否则从SSD中将读请求的请求数据返回到主机端,跳转执行下一步;14)检查FIFO队列中的写请求是否处理完毕,若处理完毕,则跳转执行步骤2)重新选择新的目标通道;否则,则跳转执行步骤11);所述步骤10)的详细步骤如下:分析目标通道的哈希表中的所有记录,依次处理哈希表中的逻辑地址,如果一个逻辑地址的访问次数大于1,将逻辑地址对应的数据预取到SSD的写缓冲,每预取一个逻辑地址对应的读请求访问数据,则将所述逻辑地址从哈希表中删除;同时根据逻辑地址的访问次数将预取的数据进行分组,在预取数据时如果SSD的写缓冲空间不足,则将访问次数低于当前逻辑地址对应访问次数的分组中的数据全部释放,在所述哈希表中的逻辑地址全部处理完毕以后跳转执行步骤11)。
地址 410073 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院