1.本发明涉及固态硬盘技术领域,尤其是涉及一种基于固态硬盘层差异特征的请求调度算法。
背景技术:2.固态硬盘的面世引领了硬盘市场的革新,大容量低成本表现优秀的固态硬盘已经取代了相当一部分的机械磁盘,而近年来固态硬盘的结构也有所改变,具体表现在由平面结构的存储颗粒升级至立体堆积的闪存颗粒,在提高容量的同时,也降低了存储的成本,但随之而来的是硬盘读写速度的差异化。
3.对于3d固态硬盘,其含有一个原始(尚未分配大请求)请求队列和若干条信道(channel),信道上的闪存芯片(flash chip)中包含很多的存储块(block),每个块中又有很多的层(layer),因此称之为3d结构,3d固态硬盘的部分物理结构如图3所示。对于好的固态硬盘,其主控制器含有请求调度模块,在这个模块中可以进行请求分配的操作,有助于提高固态硬盘的响应速度。
4.目前,大部分的固态硬盘采用rf
‑
fcfs(即读请求优先
‑
先到先服务)方案执行请求,此类硬盘做的调度方案是改变写请求的写入位置,其依据在于根据目前固态硬盘的闪存芯片上排队写请求的延迟,且仅仅根据请求的大小合计队列延迟;但是,现有的方案没有考虑到3d架构的固态硬盘的层差异特征,因此这样的方案并非是最优方案,可能导致将请求分配到响应时间较慢的闪存芯片上,使得子请求等待时间较长。
技术实现要素:5.为解决上述背景技术中提出的问题,本发明的目的在于提供一种基于固态硬盘层差异特征的请求调度算法。
6.为实现上述目的,本发明采取的技术方案为:
7.一种基于固态硬盘层差异特征的请求调度算法,所述固态硬盘为3d固态硬盘,具有若干条信道,每条信道上包含多个闪存芯片,每个闪存芯片中具有多个储存块,每个储存块具有多个层;
8.该算法包括如下步骤:
9.s1,传入待分配的子请求;
10.s2,利用预先建立的层速度差异模型以及当前每个闪存芯片上已经挂载的子请求的位置和大小,得到每个闪存芯片的总延迟;
11.s3,将待分配的子请求分配到步骤s2中得到的当前总延迟最低的闪存芯片中,并传出该子请求被分配到的位置;
12.其中,所述层速度差异模型用于提供不同层之间的访问速度差异系数。
13.在一些实施例中,在步骤s1前,还包括步骤:
14.s0,将请求传入到固态硬盘中,固态硬盘的主控模块将该请求拆分为若干个与层
空间大小相同的子请求,再分别传入每个子请求;
15.在步骤s3后,还包括步骤:
16.s4,重复步骤s1至s3,直到完成步骤s0中拆分得到的所有子请求的分配。
17.在一些实施例中,所述层速度差异模型中,将从底层到顶层中的所有层的访问速度设定为按一定比例增加,以得到一个层感知模块,该层感知模块用于反映出每层自身的速度属性。
18.在一些实施例中,步骤s2中,具体包括如下步骤:
19.s21,对于一个闪存芯片,设置闪存芯片所分配的子请求队列,以统计该闪存芯片上已经挂载的所有子请求的位置和大小;
20.s22,利用层速度差异模型,分别计算得到该闪存芯片上已经挂载的每个子请求的延迟,再进行求和,以得到该闪存芯片等待队列的总延迟;
21.s23,重复步骤s21和s22,以得到所有闪存芯片的总延迟。
22.与现有技术相比,本发明的有益效果是:
23.本发明提供的基于固态硬盘层差异特征的请求调度算法,考虑到3d固态硬盘的层差异特征,建立层速度差异模型,以在子请求的分配时,得到更精确的延迟时间计算结果,从而将子请求分配到当前延迟最低的闪存芯片上,相比传统的调度算法,能够减少大量的等待时间。
附图说明
24.图1为本发明提供的基于固态硬盘层差异特征的请求调度算法的示意图;
25.图2为利用本发明提供的算法与现有技术中的算法进行仿真试验时的写请求响应时间对比图;
26.图3为3d固态硬盘的部分物理结构的示意图;
27.图4为3d固态硬盘层速度差异的物理模型。
具体实施方式
28.为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合附图和具体实施方式,进一步阐述本发明是如何实施的。
29.3d固态硬盘具有若干条信道,每条信道上包含多个闪存芯片,每个闪存芯片中具有多个储存块,每个储存块具有多个层。3d固态硬盘最基本的存储单元是每个存储块中的层,经过研究发现,每个层访问数据的时间由于物理结构的因素影响而会呈现出一个逐渐变化的过程,顶部的层访问数据的速度可能比最底下的层访问速度要快1倍甚至几倍,3d固态硬盘层速度差异的物理模型如图4所示。
30.为了提高访问速度,一类方案是:基于闪存芯片的请求队列进行分发新到请求,固态硬盘的主控制器会先估计该闪存芯片上还有多久才可以有空余的传输带宽资源,再根据资源获取的时间来决定此请求将要放到哪个闪存芯片上,以此来降低请求等待的延迟时间。
31.由于闪存芯片的并行性,一个闪存芯片上在同一时刻只能传输一条命令或请求的数据,所以如果一个请求占用了该闪存芯片的传输通道,那么该闪存芯片就不能同时服务
其他的请求,因此,需要设计算法来高效的利用每一个闪存芯片。
32.传统的调度方案会根据请求的大小来粗略计算当前闪存芯片的延迟,然而,对于3d固态硬盘来说,仅仅只根据请求的大小和操作类型来计算是不够正确和科学的,容易存在错误估计的闪存芯片延迟。由于每个请求的位置不同,它们会访问不同的层,这势必会存在一个时间的差异,因此,本发明根据时间差异和请求的大小,重新估计闪存芯片的延迟,并将新的请求分配到最短的闪存芯片上,能够比传统方法减少大量的等待时间。
33.具体地,如图1所示,本发明提供了一种基于固态硬盘层差异特征的请求调度算法,其中固态硬盘为3d固态硬盘,该算法包括如下步骤:
34.s1,传入待分配的子请求;
35.s2,利用预先建立的层速度差异模型以及当前每个闪存芯片上已经挂载的子请求的位置和大小,得到每个闪存芯片的总延迟;
36.s3,将待分配的子请求分配到步骤s2中得到的当前总延迟最低的闪存芯片中,并传出该子请求被分配到的位置;
37.其中,所述层速度差异模型用于提供不同层之间的访问速度差异系数。
38.优选地,在步骤s1前,还包括步骤:
39.s0,将请求传入到固态硬盘中,固态硬盘的主控模块将该请求拆分为若干个与层空间大小相同的子请求,再分别传入每个子请求;
40.在步骤s3后,还包括步骤:
41.s4,重复步骤s1至s3,直到完成步骤s0中拆分得到的所有子请求的分配。
42.优选地,所述层速度差异模型中,将从底层到顶层中的所有层的访问速度设定为按一定比例增加,以得到一个层感知模块,该层感知模块用于反映出每层自身的速度属性。例如,可将顶层位置的访问速度设定为底层位置的访问速度的2倍,并将从底层到顶层的不同层的访问速度设定为按照一定比例来增加。可以理解的是,根据固体硬盘性能的实际情况,也可以以其他方案来设置层速度差异模型。
43.进一步地,步骤s2中,具体包括如下步骤:
44.s21,对于一个闪存芯片,设置闪存芯片所分配的子请求队列,以统计该闪存芯片上已经挂载的所有子请求的位置和大小;
45.s22,利用层速度差异模型,分别计算得到该闪存芯片上已经挂载的每个子请求的延迟,再进行求和,以得到该闪存芯片等待队列的总延迟;
46.s23,重复步骤s21和s22,以得到所有闪存芯片的总延迟。
47.一条闪存芯片总线只能同时传输一条请求,因此本发明设置了闪存芯片队列,用于统计分配在该闪存芯片上的请求信息,一般的传统方法只是通过请求的大小来估算其延迟,这不准确,这样子的延迟估计会导致把子请求分配到错误的闪存芯片上。
48.本发明提供的方案中,在子请求到达固态硬盘时,需要利用层速度差异模型计算闪存芯片上的延迟时间,将子请求的大小与和访问速度差异考虑进去,则这个估计的队列时间更加精确,同时也减少了等待的时间;因为之前已经分配的子请求地址已知,可以根据地址来得出该子请求的访问速度和延迟,并把该闪存芯片队列上的所有请求延迟求和,得到目前的总延迟,这就作为请求分配的重要依据,新到来的子请求将要依照目前延迟进行分配,找到目前延迟最低的闪存芯片即可。
49.固态硬盘的请求处理需要经过以下步骤,获取——分配——执行——数据传输。在分配阶段,本发明通过感知当前时间闪存芯片上的精确队列时间,然后将本请求分配至延迟最短的闪存芯片执行队列上,从而缩短了该请求从分配——执行的等待时间,降低写请求的延迟。如果有新到来的写请求,经过本发明提供的方案的处理,选择出延迟最低的闪存芯片,并经过固态硬盘处理器进入到相应闪存芯片,以此循环往复,服务请求。
50.为了验证本发明的有效性,在仿真试验中,与现有技术中的方案进行了对比,如图2所示。图2中,相邻的3个柱形从左到右依次表示未做任何优化处理的结果、按照现有技术中的方案进行处理的结果以及按照本发明提供的算法经过处理的结果。
51.可见,本发明的优化效果明显强于其他两种方案;对于写敏感的负载(即读写比较低,写请求居多的负载),本发明提供的算法的表现更为卓越。
52.综上,本发明提供的基于固态硬盘层差异特征的请求调度算法,考虑到3d固态硬盘的层差异特征,建立了层速度差异模型,以在子请求的分配时,得到更精确的延迟时间计算结果,从而将子请求分配到当前延迟最低的闪存芯片上,相比传统的调度算法,能够减少大量的等待时间。
53.最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围中。