盘装置以及盘装置的控制方法与流程

文档序号:15614912发布日期:2018-10-09 21:07阅读:110来源:国知局

本实施方式涉及盘装置以及盘装置的控制方法。



背景技术:

在盘装置中,指令依次向指令队列(commandqueue)入队(enqueue),之后,从指令队列出队(dequeue)的指令被执行。在盘装置中,指令执行时,存在寻道时间以及旋转等待时间等机械的等待时间。该机械的等待时间取决于盘介质内的物理地址而发生变化。为了使盘装置的访问(access)性能提高,希望适当地进行诸如将保存于指令队列的指令适当重新排列等对于指令队列的处理。



技术实现要素:

一个实施方式提供能够适当地进行对于指令队列的处理的盘装置以及盘装置的控制方法。

根据一个实施方式,提供具有盘介质、指令队列和控制器的盘装置。盘介质按照地址记录数据。指令队列将指令依次入队。控制器根据入队到指令队列的指令或者从指令队列出队的指令,将与盘介质中的地址对应地分组得到的多个组(group)重新分组。控制器基于重新分组得到的多个组,进行对于指令队列的处理。

附图说明

图1是表示实施方式所涉及的盘装置的构成的图。

图2是表示实施方式中的指令入队时的工作(动作)的流程图。

图3的(a)以及(b)是表示实施方式中的指令入队时的工作的图。

图4的(a)以及(b)是表示实施方式中的指令入队时的工作的图。

图5是表示实施方式中的指令出队时的工作的流程图。

图6的(a)以及(b)是表示实施方式中的指令出队时的工作的图。

图7的(a)以及(b)是表示实施方式中的指令出队时的工作的图。

图8是表示实施方式的变形例中的指令入队时的工作的流程图。

图9的(a)以及(b)是表示实施方式的变形例中的指令入队时的工作的图。

图10的(a)以及(b)是表示实施方式的变形例中的指令入队时的工作的图。

图11是表示实施方式的另一变形例中的指令出队时的工作的流程图。

图12的(a)以及(b)是表示实施方式的另一变形例中的指令出队时的工作的图。

图13的(a)以及(b)是表示实施方式的另一变形例中的指令出队时的工作的图。

具体实施方式

以下,参照附图,详细地说明实施方式所涉及的盘装置。此外,本发明不由这些实施方式所限定。

(实施方式)

使用图1对实施方式所涉及的盘装置10进行说明。图1是表示盘装置10的构成的图。

盘装置10具有盘介质11、主轴马达12、hsa(headstackassembly,头臂组件)13、头放大器14、易失性存储器15、rwc(read/writechannel,读写通道)16、hdc(harddiskcontroller,硬盘控制器)17、cpu(centralprocessingunit,中央处理单元)18、马达驱动器20以及非易失性存储器21。

盘介质11在表面以及背面分别具有记录数据的记录面s。盘介质11通过主轴马达12旋转驱动。盘装置10中设置有多个盘介质11。另外,在盘装置10中使用的所有的记录面s中设定有物理地址,该物理地址是表示记录面s上的物理位置的位置信息。主轴马达12由从马达驱动器20供给的电流(或者电压)驱动。

hsa13具有头h、头悬架131以及vcm(voicecoilmotor,音圈马达)132。头h按盘介质11的每个记录面s而设置。头h具有写入头wh以及读取头rh。写入头wh用于向盘介质11写入数据。读取头rh用于从盘介质11读出数据。

头悬架131支承头h,相对于各个头h而设置。vcm132由从马达驱动器20供给的电流(或者电压)驱动。头悬架131和vcm132构成致动器。致动器通过vcm132的驱动,控制头悬架131所支承的头h移动到盘介质11的记录面s上的预定位置。通过这种hsa13的构成,头h能够在盘介质11的记录面s的半径方向上移动。

马达驱动器20对主轴马达12供给电流或者电压,以预定转速驱动主轴马达12。另外,马达驱动器20通过将由cpu18指定的电流或者电压供给到vcm132,驱动致动器。

头放大器14使从rwc16输入的与写入数据相应的写入信号(电流)流通到头h。另外,头放大器14将从头h输出的读取信号(由头h从盘介质11读出的读取数据)进行放大,供给到rwc16。

rwc16是信号处理电路。rwc16将从hdc17输入的写入数据进行编码(码调制)并输出到头放大器14。另外,rwc16根据从头放大器14传送来的读取信号对读取数据进行解码(码解调)并输出到hdc17。

hdc17进行经由i/f总线在与主机装置hc之间所进行的数据的收发的控制等。hdc17包括未图示的主机接口(主机i/f)电路。

cpu18按照非易失性存储器21或者盘介质11所存储的固件,进行盘装置10整体的控制。例如,cpu18执行由头h进行的读取或者写入的控制处理、控制盘介质11的记录面s上的头的位置的伺服控制处理等各种控制处理。固件包括在盘装置10启动时最初所执行的初始固件以及盘装置10的通常工作所使用的控制用固件。

此外,也能够将包括rwc16、hdc17以及cpu18的硬件结构视作控制器19。控制器19能够作为单芯片的集成电路(片上系统)构成。控制器19的封装体能够配置在收容盘介质11、主轴马达12、hsa13的壳体(未图示)的外侧的印刷电路基板上。

非易失性存储器21连接于控制器19的cpu18,构成为能够由cpu18进行重写。

易失性存储器15由dram(dynamicram,动态随机存取存储器)或者sram(staticram,静态随机存取存储器)等易失性存储器构成。易失性存储器15包含指令队列151、缓冲区(buffer)152以及工作域(workingarea)153。工作域153由控制器19为了暂时保存数据等而使用。例如,cpu18将盘介质11的管理信息区域所保存的组管理信息153a、组登记信息153b以及逻辑物理变换表153c经由头h、头放大器14、rwc16、hdc17读出并保存于工作域153。

指令队列151将由hdc17接收到的多个指令按接收到的顺序进行排队(queuing)。多个指令的每一个包括用于访问盘介质11的逻辑地址。指令队列151是等待矩阵缓冲区,各指令按入队的顺序出队。即指令队列151具有fifo(先进先出)构造。此外,指令队列151在进行了后述的重排序(reordering)处理,所保存的指令被重新排列时,能够按与入队的顺序不同的顺序出队。

缓冲区152具有写入缓冲区152a以及读取缓冲区152b。写入缓冲区152a暂时地保存根据指示向盘介质11写入写入数据的指令(例如写入指令)而向盘介质11写入的数据。读取缓冲区152b暂时地保存根据指示从盘介质11读出读取数据的指令(例如读取指令)而从盘介质11读出的数据。

写入指令包含由盘装置10管理的逻辑扇区中的、写入数据的写入目的地的逻辑扇区的开头lba(logicalblockaddress,逻辑块地址)以及写入数据长度。另外,读取指令包含由盘装置10管理的逻辑扇区中的、要读出的读取数据被存储的逻辑扇区的开头lba以及读取数据长度。lba也被称作逻辑地址。

工作域153内的逻辑物理变换表153c是使逻辑地址与物理地址关联的信息,在通常状态下能够不被改写地固定地使用。因此,在盘装置10中,只要多个指令的逻辑地址连续,就能够推定为由该多个指令访问的物理地址也连续。在此,物理地址例如包括柱面号码及扇区号码的组合。柱面号码是识别柱面的号码。柱面是多个盘介质11中的跨上下相对应的多个磁道的存储区域的单位。扇区号码是识别在一个磁道内的扇区位置的号码。即,物理地址对于其一部分信息,在各磁道内,分别连续地分配于盘介质11中的相邻的多个磁道。此外,物理地址包含头号码(记录面号码),对于在柱面内上下相邻的多个磁道,也能够连续地分配。

在指令队列151中,指令按照从主机装置hc接收的顺序排队,但在根据指令进行随机访问处理的情况下,若按照接收顺序执行指令,则包括寻道时间和旋转等待时间的机械的等待时间可能会增加。因此,控制器19(cpu18)进行将指令队列151内的指令重新排列以使得成为从与开头lba对应的物理地址更近的指令起依次排队的状态的重排序处理。由此,期待随着根据指令执行的访问盘介质11的工作的机械的等待时间的减少。

在重排序处理中,控制器19(cpu18)进行如下评价:选择在指令队列151中排队的指令,求取在接着当前正在执行的指令来执行该选择出的指令的情况下的机械的等待时间,决定机械的等待时间成为最小的指令。评价对象的指令数增加得越多,评价的时间越容易增加,重排序处理的时间越容易增多。

为了缩短重排序处理的时间,需要用于限定评价对象的指令数的机制。例如在为了限定评价对象的指令数,对在指令队列151中排队的全部指令进行当前正在执行的指令的开头lba是否落入了针对最终lba判断为接近的范围内的判断的情况下,该判断需要时间,因此重排序处理的时间可能会增加。

与此相对地,只要预先将盘介质11的物理地址所对应的逻辑地址在每个连续的地址范围内划分为多个组,进行当前正在执行的指令属于哪个组的判断,就能够通过简易的判断来限定评价对象的指令数,因此,判断的时间缩短,由此能期待重排序处理的时间的缩短。

因此,控制器19(cpu18)将组管理信息153a以及组登记信息153b保存于工作域153。组管理信息153a是用于管理由控制器19(cpu18)针对在指令队列151中排队的指令所分配的组的信息。组管理信息153a包含对于多个组的每一个关联了识别组的信息、组的开头lba和组的指令数而得到的信息(参照图3的(a)、(b))。在组管理信息153a中,各组对应于连续的逻辑地址的范围。连续的逻辑地址大致对应于连续的物理地址,因此在一个组内,可以认为盘介质11中的存储区域的物理位置大致连续。

控制器19(cpu18)根据各指令的开头lba属于组管理信息153a的哪个逻辑地址的范围(组),对各指令分配组并登记于组登记信息153b。组登记信息153b是根据在指令队列151中排队的指令发生变化(入队或者出队)而被更新的信息,由控制器19(cpu18)改写。组登记信息153b是对于在指令队列151中排队的指令的每一个关联了识别指令的信息与根据指令的逻辑地址所分配的组而得到的登记信息(参照图3的(a)、(b))。组是进行重排序处理的单位。

控制器19(cpu18)在指令从指令队列151出队并开始执行时,确定当前正在执行的指令所属的组,进行对登记于该组的各指令进行评价的重排序处理。

随着易失性存储器15的容量增加,指令队列151的深度加深(数量增多),分配于各组的指令数趋于增多。例如当指令访问集中于某个特定的地址范围时,会导致分配于对应的组的指令数增加。在该情况下,若对与当前正在执行的指令对应的组的全部指令进行评价,则应该落在当前正在执行的指令处理时间以下的重排序处理的时间容易超过指令处理时间而变长。由此,可能要使接下来的指令的执行开始等待直至重排序处理的完成等、发生固件开销(overhead)。

与此相对地,考虑诸如不评价组内的全部指令而按照排队的升序来限定数量等对组内的一部分指令进行评价的方法。在该方法中,在具有与当前正在执行的指令的最终lba接近的lba的指令包含于没有进行评价的指令的情况下,重排序处理的精度容易降低。

于是,根据本实施方式,在盘装置10中,通过动态地进行重新分组以使得所包含的指令数落入预定范围内,实现对抑制重排序处理的时间增加和抑制重排序处理的精度降低的兼顾。

即,在指令集中于某个特定的地址范围的情况下,属于特定的组的指令有可能会增加。在该情况下,能够在组内进行重排序评价的指令的数量变少,可能会发生无法选择更有效的指令的情况。因此,以使属于组的指令不会变为一定数量以上的方式进行组的分割、用于抑制组数增加的合并。

具体而言,控制器19根据指令入队到指令队列151这一情况或者指令从指令队列151出队这一情况,将组管理信息153a中的多个组重新分组。另外,控制器19根据组管理信息153a的更新,对组登记信息153b进行更新。

控制器19若识别到指令入队到指令队列151,则对该指令分配组管理信息153a中的组,并且将该指令登记于组登记信息153b,求取该所分配的组的指令数。控制器19将求得的指令数与阈值th1进行比较,判断指令数是否超过了阈值th1。控制器19在指令数超过了阈值th1的情况下,将该组分割从而重新分组并将组管理信息153a更新,按照该更新,重构并更新组登记信息153b。由此,能够使组管理信息153a中的各组的指令数处于某个范围内(即,即使评价组内的全部指令,重排序处理的时间也落入指令处理时间以下的指令数的范围内)。其结果,控制器19能够一边抑制重排序处理的时间增加一边高精度地进行重排序处理,并能够根据其处理结果适当地将指令队列151内的指令重新排列。

另外,控制器19若识别到指令从指令队列151出队,则在将该指令从组登记信息153b删除后,分别求取该指令所被分配的组的指令数和与该组相邻的组的指令数。控制器19将指令所被分配的组的指令数和与该组相邻的组的指令数的合计与阈值th2进行比较,判断合计是否小于阈值th2。控制器19在合计小于阈值th2的情况下,将该组与相邻的组合并从而重新分组并将组管理信息153a更新,按照该更新,重构并更新组登记信息153b。由此,能够一边将组管理信息153a中的各组的指令数维持在某个范围内(即,即使评价组内的全部指令,重排序处理的时间也落入指令处理时间以下的指令数的范围内)一边减少组的个数。其结果,控制器19能够减少管理组所需的时间,能够抑制重排序处理的时间增加。

此外,只要设为阈值th2<阈值th1,则能够抑制频繁地反复进行分割与合并,能够使关于由控制器19进行的分割与合并的控制处理稳定。

例如,控制器19根据指令入队到指令队列151这一情况,如图2~图4所示那样,将多个组中的一个以上的组进行分割从而重新分组。图2是表示指令入队时的控制器19的工作的流程图。图3、图4是表示指令入队时的控制器19的工作的图。在图3、图4中,用cm+“号码”示出了来自主机装置hc的指令的接收顺序。

控制器19在从主机装置hc接收到指令时,将该指令入队到指令队列151(s1)。控制器19取得接收到的指令的访问目的地的开头lba。控制器19参照组管理信息153a,将包括所取得的开头lba的组决定作为应该登记接收到的指令的组(s2)。控制器19参照组登记信息153b,将接收到的指令作为所决定的组内最后的指令追加到组登记信息153b(s3)。

控制器19基于组管理信息153a以及/或者组登记信息153b,求取追加了接收到的指令的组的指令数。例如,控制器19参照组管理信息153a,计算“当前的组的指令数”+1,由此求取追加了指令的组的指令数。或者,控制器19在组登记信息153b中,对追加了接收到的指令的组的指令数进行计数,由此求取追加了接收到的指令的组的指令数。

控制器19将追加了接收到的指令的组的指令数与阈值th1进行比较,判断追加了接收到的指令的组的指令数是否超过了阈值th1(s4)。在追加了接收到的指令的组的指令数没有超过阈值th1的情况下(s4:否),处理向s7前进。

控制器19在追加了指令的组的指令数超过了阈值th1的情况下(s4:是),以将该组分割的方式更新组管理信息153a(s5)。

例如,对阈值th1=7且如图3的(a)所示那样对指令cm7、cm10、cm12、cm17、cm18、cm20、cm23所属的组gr0追加了指令cm24的情况进行说明。控制器19基于组管理信息153a,求取组gr0的当前的指令数7+1=8。控制器19对组gr0的指令数“8”与阈值th1(=7)进行比较,判断为组gr0的指令数超过了阈值th1。控制器19根据该判断结果,如图3的(b)所示那样更新组管理信息153a,将现组gr0分割成组gr0、gr1,将其他现组gr1~gr4重新编号为组gr2~gr5。此时,控制器19以使各组gr0、gr1的指令数落入预定范围内的方式将现组gr0重新分组成组gr0、gr1。

图4的(a)中表示属于现组gr0的各指令cm7、cm10、cm12、cm17、cm18、cm20、cm23的开头lba。如图4的(a)所示,说明针对现组gr0的开头lba“0”到现组gr1的开头lba“100”的地址范围,指令cm24被追加到图4的(b)所示的地址位置的情况。在该状态下,现组gr0被分割成组gr0、gr1以使得属于分割后的组gr0、gr1的指令数大致均等。

另外,在预计此后组gr0相较于组gr1指令数会变多的情况下,控制器19也可以以使组gr0的指令数变得少于组gr1的指令数的方式将现组gr0分割成组gr0、gr1。或者,在预计此后组gr0相较于组gr1指令数会变少的情况下,控制器19也可以以使组gr0的指令数变得多于组gr1的指令数的方式将现组gr0分割成组gr0、gr1。

控制器19根据更新后的组管理信息153a,将指令重新配置到组中(s6)。即,控制器19将组登记信息153b进行重构,更新组登记信息153b。

例如,如图3的(b)、图4的(b)所示,以使指令cm7、cm12、cm18、cm24属于组gr0且指令cm10、cm17、cm20、cm23属于组gr1的方式重构并更新组登记信息153b。

控制器19确定当前正在执行的指令的开头lba所属的组,进行如下评价:选择属于该组的各指令,求取在接着当前正在执行的指令执行所选择的各指令的情况下的机械的等待时间,决定机械的等待时间成为最小的指令的执行顺序(s7)。控制器19将保存于指令队列151的指令进行重新排列(重排序)以使得成为所决定的执行顺序(s8)。

另外,例如控制器19根据指令从指令队列151出队这一情况,如图5~图7所示那样,将多个组中的两个以上的组进行合并从而重新分组。图5是表示指令出队时的控制器19的工作的流程图。图6、图7是表示指令出队时的控制器19的工作的图。在图6、图7中,用cm+“号码”示出了来自主机装置hc的指令的接收顺序。

控制器19在指令的执行完成时,使指令队列151的开头的执行完成的指令从指令队列151出队(s11)。控制器19参照组管理信息153a,将出队的指令在组管理信息153a中从其所属的组删除(s12)。

控制器19基于组管理信息153a以及/或者组登记信息153b,求取删除了出队的指令的组的指令数和该组的前一组(即,在组管理信息153a内与该组相邻且开始lba比该组的小的组)的指令数。控制器19参照组管理信息153a,计算“当前的组的指令数”-1,由此求取删除了出队的指令的组的指令数,并且求取前一组的指令数。或者,控制器19在组登记信息153b中,对删除了指令的组的指令数进行计数,由此求取删除了指令的组的指令数,并且求取前一组的指令数。

控制器19求取删除了指令的组的指令数与前一组的指令数的合计。控制器19对该合计与阈值th2进行比较,判断合计是否在阈值th2以下(s13)。

控制器19在合计不在阈值th2以下的情况下(s13:否),基于组管理信息153a以及/或者组登记信息153b,求取删除了指令的组的指令数与后一组(即,在组管理信息153a内与该组相邻且开始lba比该组的大的组)的指令数的合计。控制器19对该合计与阈值th2进行比较,判断合计是否在阈值th2以下(s14)。在合计不在阈值th2以下的情况下(s14:否),处理向s18前进。

控制器19在删除了指令的组的指令数与前一组的指令数的合计在阈值th2以下的情况下(s13:是),以将删除了指令的组与前一组合并的方式更新组管理信息153a(s15)。

或者,控制器19在删除了指令的组的指令数与后一组的指令数的合计在阈值th2以下的情况下(s14:是),以将删除了指令的组与后一组合并的方式更新组管理信息153a(s16)。

例如,对阈值th2=6且如图6的(a)所示那样从指令cm2、cm4、cm5所属的组gr4删除了指令cm2的情况进行说明。控制器19基于组管理信息153a,求取组gr4的当前的指令数3-1=2。控制器19求取组gr4的指令数“2”与前一组gr3的指令数“5”的合计2+5=7。控制器19对合计“7”与阈值th2(=6)进行比较,判断为合计不在阈值th2以下,组gr3与组gr4的合并不适当。

然后,控制器19基于组管理信息153a,求取组gr4的后一组gr5的指令数“4”,并求取组gr4的指令数“2”与后一组gr5的指令数“4”的合计2+4=6。控制器19对合计“6”与阈值th2(=6)进行比较,判断为合计在阈值th2以下,组gr4与组gr5的合并适当。

控制器19根据该判断结果,如图6的(b)所示那样更新组管理信息153a,将现组gr4、gr5合并为组gr4。

例如图7的(a)中表示属于现组gr3~gr5的各指令的开头lba。如图7的(a)所示,对在现组gr4的开头lba“700”到现组gr5的最终lba“1000”的地址范围内删除了指令cm2的情况进行说明。在该情况下,如图7的(b)所示,将现组gr4、gr5合并,重新分组成开头lba“700”~最终lba“1000”的组gr4。尽管将现组gr4、gr5合并成组gr4,也能够使组gr4的指令数在阈值th2(=6)以下。

返回到图5,控制器19根据更新后的组管理信息153a,将指令重新配置到组中(s17)。即,控制器19将组登记信息153b进行重构,更新组登记信息153b。

例如在图6的(b)、图7的(b)的情况下,以使指令cm4、cm5、cm6、cm8、cm9、cm16属于组gr4的方式重构并更新组登记信息153b。

控制器19进行如下评价:选择排着队的指令,求取在接着当前正在执行的指令执行所选择的各指令的情况下的机械的等待时间,决定机械的等待时间成为最小的指令的执行顺序(s18)。控制器19将保存于指令队列151的指令进行重新排列(重排序)以使得成为所决定的执行顺序(s19)。

如上所述,根据实施方式,在盘装置10中,动态地将多个组进行重新分组以使得所包含的指令数落入预定范围内(例如阈值th1以下的范围内)。由此,能够兼顾抑制重排序处理的时间增加和抑制重排序处理的精度降低。因此,在指令访问集中于某个特定的地址范围的情况下,也能够使随机访问时的指令处理性能提高。

此外,进行了组的分割、合并的情况下的由控制器19实现的对易失性存储器15的访问的数据量比不进行组的分割、合并的情况下的由控制器19实现的对易失性存储器15的访问的数据量的两倍大。例如假设在第1指令入队到指令队列151时不进行组的分割、合并,在第2指令入队到指令队列151的情况下进行组的分割,或者在第3指令从指令队列151出队时进行组的合并。在该情况下,控制器19进行控制以使得:在将第1指令入队到指令队列151的情况下,对易失性存储器15访问的数据成为第1数据量,在将第2指令入队到指令队列151或者将第3指令从指令队列151出队的情况下,对易失性存储器15访问的数据成为比第1数据量的两倍大的第2数据量。

或者,虽然假设在指令接收时、完成时进行组的分割、合并,但也可以每隔一定时间或者在后台处理期间进行。

或者,如果在对包括当前正在执行的指令的开头lba的组进行了组的分割、合并后,到当前正在执行的指令的执行完成为止时间充裕,则也可以进一步对其他组进行组的分割、合并。

或者,也可以不仅将对指令分组处理这一情况适用于重排序处理,而且还适用于对于指令队列151的其他处理。作为对于指令队列151的其他处理,例如也可以使用于重复检查(在指令队列151中排队的指令的逻辑地址是否与当前正在执行的指令重复的检查)和/或高速缓存命中(cachehit)检查(与在指令队列151中排队的指令的逻辑地址对应的数据是否存储于高速缓存存储器(缓冲区152)的检查)。

或者,也可以取代组的分割,而进行移动组间的边界的处理。例如,控制器19根据指令入队到指令队列151这一情况,如图8~图10所示那样,移动组间的边界从而重新分组。图8是表示实施方式的变形例中的指令入队时的控制器19的工作的流程图。图9、图10是表示实施方式的变形例中的指令入队时的控制器19的工作的图。在图9、图10中,用cm+“号码”示出了来自主机装置hc的指令的接收顺序。

控制器19在进行了s1~s3的处理后,对追加了接收到的指令的组的指令数与阈值th1进行比较,判断追加了接收到的指令的组的指令数是否超过了阈值th1(s4)。控制器19在追加了接收到的指令的组的指令数超过了阈值th1的情况下(s4:是),比较该组的前后组的指令数(s21)。

控制器19在之前的组的指令数少于之后的组的指令数的情况下(s21:是),以使表示与之前的组的边界的开头lba向本组侧移动的方式进行重新设定(s22)。

控制器19在之前的组的指令数多于之后的组的指令数的情况下(s21:否),以使表示与之后的组的边界的开头lba向本组侧移动的方式进行重新设定(s23)。

例如,对阈值th1=7且如图9的(a)所示那样对指令cm1、cm14、cm15、cm19、cm20、cm22、cm23所属的组gr2追加了指令cm24的情况进行说明。控制器19基于组管理信息153a,求取组gr2的指令数7+1=8。控制器19对组gr2的指令数“8”与阈值th1(=7)进行比较,判断为组gr2的指令数超过了阈值th1。控制器19参照组管理信息153a,取得组gr2之前的组gr1的指令数=5和之后的组gr3的指令数=4。控制器19由于“之前的组gr1的指令数”>“之后的组gr3的指令数”,因此决定将组gr2与组gr3的边界向组gr2侧移动。控制器19根据该判断结果,如图9的(b)所示那样更新组管理信息153a,将组gr3的开头lba由700设为530。此时,控制器19以使各组gr2、gr3的指令数落入预定范围内的方式将组gr2、gr3重新分组。

例如图10的(a)中表示属于组gr2、gr3的各指令的开头lba。如图10的(a)所示,说明针对组gr2的开头lba“400”~组gr3的最终lba“750”的地址范围,指令cm24被追加到图10的(b)所示的地址位置的情况。此时,重新分组后,如图10的(b)所示那样将组gr2与组gr3的边界向组gr2侧移动以使得属于组gr2、gr3的指令数大致均等。

例如,在预计此后组gr2相较于组gr3指令数会变多的情况下,控制器19也可以以使组gr2的指令数变得少于组gr3的指令数的方式将组gr2与组gr3的边界向组gr2侧移动。或者,在预计此后组gr2相较于组gr3指令数会变少的情况下,控制器19也可以以使组gr2的指令数变得多于组gr3的指令数的方式将组gr2与组gr3的边界向组gr3侧移动。

控制器19根据更新后的组管理信息153a,将指令重新配置到组中(s6)。即,控制器19将组登记信息153b进行重构,更新组登记信息153b。

例如,如图9的(b)、图10的(b)所示,以使指令cm1、cm14、cm15、cm19、cm22、cm24属于组gr2且指令cm2、cm4、cm5、cm18、cm20、cm23属于组gr3的方式重构并更新组登记信息153b。

控制器19确定当前正在执行的指令的开头lba所属的组,进行如下评价:选择属于该组的各指令,求取在接着当前正在执行的指令执行所选择的各指令的情况下的机械的等待时间,决定机械的等待时间成为最小的指令的执行顺序(s7)。控制器19将保存于指令队列151的指令进行重新排列(重排序)以使得成为所决定的执行顺序(s8)。

此外,关于移动边界的处理(s21~s23),如果到当前正在执行的指令的执行完成为止时间充裕,则也可以进一步对与前后组的边界中的没有变更的一组边界进行。另外,如果时间还充裕,则也可以进一步对除包括当前正在执行的指令的开头lba的组以外的组进行。

由此,也能够兼顾抑制重排序处理的时间增加和抑制重排序处理的精度降低。

或者,也可以取代组的合并,而进行移动组间的边界的处理。例如,控制器19根据指令从指令队列151出队这一情况,如图11~图13所示那样,移动组间的边界从而重新分组。图11是表示实施方式的另一变形例中的指令出队时的控制器19的工作的流程图。图12、图13是表示实施方式的另一变形例中的指令出队时的控制器19的工作的图。在图12、图13中,用cm+“号码”示出了来自主机装置hc的指令的接收顺序。

控制器19在进行了s11~s12的处理后,对删除了指令的组的指令数与阈值th3进行比较,判断删除了指令的组的指令数是否变为阈值th3以下(s31)。阈值th3是用于判断是否有增加属于组的指令数的余量的阈值,具有比阈值th1以及阈值th2小的值。

在删除了指令的组的指令数没有变为阈值th3以下的情况下(s31:否),处理向s17前进。

控制器19在删除了指令的组的指令数变为阈值th3以下的情况下(s31:是),比较该组的前后组的指令数。

控制器19在之前的组的指令数多于之后的组的指令数的情况下(s32:是),以使表示与之前的组的边界的开头lba向之前的组侧移动的方式进行重新设定(s33)。

控制器19在之前的组的指令数不多于(少于)之后的组的指令数的情况下(s32:否),以使表示与之后的组的边界的开头lba向之后的组侧移动的方式进行重新设定(s34)。

例如,对阈值th3=2且如图12的(a)所示那样从指令cm2、cm4、cm5所属的组gr3删除了指令cm2的情况进行说明。控制器19基于组管理信息153a,求取组gr3的指令数3-1=2。控制器19对组gr3的指令数“2”与阈值th3(=2)进行比较,判断为组gr3的指令数变为阈值th3以下。控制器19参照组管理信息153a,取得组gr3之前的组gr2的指令数=6和之后的组gr4的指令数=4。控制器19由于“之前的组gr2的指令数”>“之后的组gr4的指令数”,因此判断为应该将组gr2与组gr3的边界向组gr2侧移动。控制器19根据该判断结果,如图12的(b)所示那样更新组管理信息153a,将组gr3的开头lba由700设为600。此时,控制器19以使各组gr2、gr3的指令数落入预定范围内的方式将组gr2、gr3重新分组。

例如图13的(a)中表示属于组gr2、gr3的各指令的开头lba。如图13的(a)所示,说明在组gr2的开头lba“400”到组gr4的开头lba“750”的地址范围内,删除了指令cm2的情况。此时,重新分组后,如图13的(b)所示那样将组gr2与组gr3的边界向组gr2侧移动以使得属于组gr2、gr3的指令数大致均等。

另外,在预计此后组gr2相较于组gr3指令数会变多的情况下,控制器19也可以以使组gr2的指令数变得少于组gr3的指令数的方式将组gr2与组gr3的边界向组gr2侧移动。或者,在预计此后组gr2相较于组gr3指令数会变少的情况下,控制器19也可以以使组gr2的指令数变得多于组gr3的指令数的方式将组gr2与组gr3的边界向组gr3侧移动。

控制器19根据更新后的组管理信息153a,将指令重新配置到组中(s17)。即,控制器19将组登记信息153b进行重构,更新组登记信息153b。

例如,在图12的(b)、图13的(b)的情况下,以使指令cm14、cm15、cm19、cm26属于组gr2且指令cm4、cm5、cm22、cm25属于组gr3的方式重构并更新组登记信息153b。

控制器19确定当前正在执行的指令的开头lba所属的组,进行如下评价:选择属于该组的各指令,求取在接着当前正在执行的指令执行该所选择的指令的情况下的机械的等待时间,决定机械的等待时间成为最小的指令(s18)。控制器19将保存于指令队列151的指令进行重新排列以使得所决定的指令成为指令队列151的开头位置(接下来被出队的位置)(s19)。

此外,关于移动边界的处理(s32~s34),如果到当前正在执行的指令的执行完成为止时间充裕,则也可以进一步对与前后组的边界中的没有变更的一组边界进行。另外,如果时间还充裕,则也可以进一步对除包括当前正在执行的指令的开头lba的组以外的组进行。

由此,也能够兼顾抑制重排序处理的时间增加和抑制重排序处理的精度降低。

虽然对本发明的几个实施方式进行了说明,但是这些实施方式是作为例子提出的,并非旨在限定发明的范围。这些新实施方式能够以其他各种方式实施,在不偏离发明宗旨的范围内,可以进行各种省略、替换、变更。这些实施方式和/或其变形包含在发明的范围和/或宗旨中,并且,包含在技术方案所记载的发明和其等同的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1