存储装置和写高速缓存数据退避方法与流程

文档序号:12157239阅读:297来源:国知局
存储装置和写高速缓存数据退避方法与流程

本发明的实施方式涉及存储装置和写高速缓存数据退避方法。



背景技术:

近年来的存储装置例如磁盘装置,为了实现从主机系统(主机)访问的高速化而通常具备高速缓存(cache)。高速缓存用于保存由来自主机的写命令确定的数据(写数据)以及根据来自主机的读命令而从盘读出的数据。

高速缓存通常使用易失性存储器来实现。因此,高速缓存所保存的写数据(即写高速缓存数据)会因向磁盘装置供给电力的切断(电源切断)而消失。

为了避免因该电源切断而导致的写高速缓存数据的消失,也即,为了保护写高速缓存数据避免电源切断的影响,以往以来提出了各种方法。作为这些方法的代表,已知以下的第1以及第2方法。

第1方法是在电源切断时使用备用电源使写高速缓存数据从高速缓存退避(转移保存)到闪速ROM(Flash ROM)这样的非易失存储器的方法。使用该第1方法提供的写高速缓存数据保护功能也被称为断电保护(Power Loss Protection)功能。

第2方法是在接受(领受)由写命令确定的写数据时在一定的条件下使写高速缓存数据从高速缓存退避到盘(盘介质)的特定区域(退避区域)的方法。使用该第2方法提供的写高速缓存数据保护功能也被称为介质高速缓存(Media Cache)功能。

在断电保护功能的适用中,使用备用电源使写高速缓存数据退避到非易失存储器。因此,高速缓存能够保存的写数据量由能够从备用电源供给电力的时间(即可备用(备份)时间)以及向非易失存储器写入数据的速度决定。另一方面,在介质高速缓存功能的适用中,会产生到将写高速缓存数据退避到盘的退避区域为止的时间延迟。因此,要求缩短对写高速缓存数据进行退避所需的时间。上述的断电保护功能和介质高速缓存功能的至少一方例如也通过固态硬盘(SSD)这样的、磁盘装置以外的存储装置来提供。



技术实现要素:

本发明的实施方式提供一种能够缩短使写高速缓存数据进行退避所需的时间的存储装置以及写高速缓存数据退避方法。

实施方式的存储装置包括非易失性存储介质、易失性存储器和控制器。所述非易失性存储介质包含用户数据区域。所述易失性存储器包含高速缓存区域以及高速缓存管理区域。所述高速缓存区域用于将由写命令特定而应该写到所述用户数据区域的写数据作为写高速缓存数据进行保存,所述高速缓存管理区域用于保存与所述写高速缓存数据相关的管理信息,所述管理信息包含根据所述写命令的接受而计算的所述写高速缓存数据的压缩大小。所述控制器执行退避处理,该退避处理用于基于所述管理信息对未退避到退避区域的需要压缩的写高速缓存数据进行压缩,并将所述压缩后的写高速缓存数据写到所述退避区域。

附图说明

图1是表示实施方式涉及的磁盘装置的典型结构的框图。

图2是表示图1所示的高速缓存管理表的数据构造例的图。

图3是表示该实施方式中的写数据接受处理的典型步骤的流程图。

图4是表示在该实施方式中以高速缓存管理记录为单位而执行的写回处理(write back)的典型步骤的流程图。

图5是表示该实施方式中的第2退避处理的典型步骤的流程图。

图6是用于说明第2退避处理的图。

图7是表示该实施方式中的第1退避处理的典型步骤的流程图。

图8是用于说明第1退避处理的图。

图9是表示该实施方式中的高速缓存恢复处理的典型步骤的流程图。

具体实施方式

参照附图来说明本发明的实施方式。

图1是表示实施方式涉及的磁盘装置的典型结构的框图。磁盘装置是存储装置的一种,也被称为硬盘驱动器(HDD)。因此在以下的说明中,将磁盘装置标记为HDD。图1所示的HDD包括头盘组件(HDA)11、控制器12、闪速ROM(FROM)13、动态RAM(DRAM)14以及备用电源15。

HDA11包括盘110。盘110例如是在其一方的面具有以磁方式记录数据的记录面的非易失性存储介质(medium)。也即,盘110具有存储区域111。HDA11还包括头、主轴马达以及致动器等周知的要素。但是,图1中省略了这些要素。

控制器12例如可使用将多个元件集成在单个芯片上的被称为片上系统(System-on-a-Chip,SOC)的大规模集成电路(LSI)来实现。控制器12包括主机接口控制器(以下,称为HIF控制器)121、盘接口控制器(以下,称为DIF控制器)122、高速缓存控制器123、读/写(R/W)通道124、CPU125、静态RAM(SRAM)126以及数据压缩/解压缩电路128。

HIF控制器121经由主机接口20与主机连接。HIF控制器121接受从主机传送的命令(写命令、读命令等)。HIF控制器121还控制主机与高速缓存控制器123之间的数据传送。

DIF控制器122控制高速缓存控制器123与R/W通道124之间的数据传送。高速缓存控制器123控制HIF控制器121与DRAM14之间的数据传送以及DIF控制器122与DRAM14之间的数据传送。

R/W通道124处理与读/写关联的信号。R/W通道124将从盘110读出的信号(读信号)通过模拟/数字转换器转换成数字数据,从数字数据译码出读数据。R/W通道124还从数字数据中提取头的定位所需的伺服数据。R/W通道124还对写数据进行编码。

CPU125作为图1所示的HDD的主控制器发挥功能。CPU125按照控制程序来控制HDD内的至少一部分要素。该至少一部分包括各控制器121~123,在本实施方式中控制程序被预先保存于盘110的特定区域。但是,控制程序也可以被预先保存于FROM13。

SRAM126是易失性存储器。SRAM126的存储区域的一部分用作用于保存高速缓存管理表127的高速缓存管理区域。数据压缩/解压缩电路128进行由CPU125指定的写高速缓存数据的压缩或解压缩。数据压缩/解压缩电路128还计算假设了对写数据实施压缩处理的情况下的压缩处理后的数据的大小(size:体积、空间、规模)。此外,也可以取代数据压缩/解压缩电路128而使用数据压缩器以及数据解压缩器。

FROM13是可改写的非易失性存储器。在FROM13的存储区域的一部分预先保存有初始程序的装入程序(IPL)。IPL也可以预先保存于只读的非易失性存储器例如ROM。CPU125例如通过在向HDD供给了电力之后执行IPL,将盘110所保存的控制程序的至少一部分装载到SRAM126或DRAM14。FROM13的存储区域的另外的一部分用作退避区域(第1退避区域)130。退避区域130用作通过断电保护功能实现的写高速缓存数据的退避目的地。

DRAM14是比SRAM126低速的易失性存储器。在本实施方式中DRAM14的存储容量比SRAM126的存储容量大。DRAM14的存储区域的一部分用作高速缓存(高速缓存区域)140。高速缓存140用于将从主机传送来的写数据(即由来自主机的写命令确定的写数据)以及从盘110读取的读数据作为写高速缓存数据以及读高速缓存数据进行保存。

此外,DRAM14的存储区域的另外的一部分也可以用于保存高速缓存管理表127。同样,SRAM126的存储区域的另外的一部分也可以用作高速 缓存140。另外,也可以将DRAM14和SRAM126各自的存储区域视为1个易失性存储器的存储区域的一部分。

盘110的存储区域111的一部分用作退避区域(第2退避区域)112,该存储区域111的另外的一部分用作用户数据区域113。退避区域112例如是不能被用户访问的系统区域的一部分,用作通过介质高速缓存功能实现的写高速缓存数据的退避目的地。退避区域112的领头(先头)地址以及末尾地址分别设为X以及Y(图6)。写高速缓存数据从退避区域112的领头地址开始依次被退避(写入)。在本实施方式中,为了管理写高速缓存数据的最新的写开始位置,使用退避数据末尾地址Xf。退避数据末尾地址Xf在初始状态下与退避区域112的领头地址X一致。每次从退避区域112的退避数据末尾地址Xf开始写入写高速缓存数据时,退避数据末尾地址Xf被增加所写入的数据的长度。因此,退避数据末尾地址Xf实际上表示最后被写入写高速缓存数据的区域的末尾地址的下一地址。

用户数据区域113例如用于保存由来自主机的写命令确定的写数据。表示保存该写数据的用户数据区域113内的物理位置的地址(即物理地址)与由写命令确定的逻辑地址(更详细而言是逻辑块地址LBA)相关联。

备用电源15在例如从主机向HDD的电力供给切断了的情况下产生电力。即备用电源15根据向HDD的电力供给的切断(电源切断),产生用于维持该HDD的必要最小限的工作的电力。所产生的电力被供给到HDD内的至少控制器12(更详细而言是控制器12内的高速缓存控制器123、CPU125、SRAM126以及数据压缩/解压缩电路128)、FROM13以及DRAM14。

在本实施方式中,由备用电源15产生的电力例如用于将头撤回到离开盘110的部位(所谓的斜坡)。该电力还用于将高速缓存140所保存的写高速缓存数据(更详细而言是未退避的写高速缓存数据)退避到FROM13内的退避区域130。为产生该电力,备用电源15使用主轴马达(更详细而言是使盘110旋转的主轴马达)的反电动势。但是,备用电源15也可以使用通过从主机施加于HDD的电源电压而充电的电容器来产生电力。

图2表示高速缓存管理表127的数据构造例。高速缓存管理表127用于保持高速缓存管理记录。在图2所示的例子中,高速缓存管理记录CMR1~CMRn保持在高速缓存管理表127的n个条项(entry)中。为了简化说明,设为全部高速缓存管理记录CMR1~CMRn都根据来自主机的写命令WCMD1~WCMDn而生成。也即,设为高速缓存管理记录CMR1~CMRn用于高速缓存140所保存的写高速缓存数据WCD1~WCDn的管理。高速缓存管理记录CMR1~CMRn各自的长度一定。

高速缓存管理记录CMRi(i=1,2,…,n)包括字段(field)201~209。字段201用于保持写高速缓存标记(第3标记)。写高速缓存标记表示高速缓存管理记录CMRi(写高速缓存数据WCDi)有效还是无效。

字段202用于保持退避标记(第2标记)。退避标记表示写高速缓存数据WCDi是否被退避到了盘110的退避区域112。字段203用于保持压缩请求标记(第1标记)。压缩请求标记表示在将写高速缓存数据WCDi退避到盘110的退避区域112或FROM13的退避区域130时是否应该压缩该写高速缓存数据WCDi。

字段204用于保持分配给写命令WCMDi的命令接受序号。命令接受序号根据高速缓存管理记录的生成而增加。字段205用于保持开始LBA。开始LBA包含于写命令WCMDi,表示由该写命令WCMDi确定的写数据WDi的逻辑上的范围的领头位置。

字段206用于保持写数据WDi作为写高速缓存数据WCDi进行保存的高速缓存140的地址(即高速缓存地址)。字段207用于保持写数据WDi的大小(即写数据大小)Swd。

字段208用于在写高速缓存数据WCDi被退避到退避区域112或130的情况下保持其退避目的地的地址(盘地址或存储器地址)。字段209用于保持写高速缓存数据WCDi的大小(写高速缓存数据大小)Swcd。但是,在对字段203设置了压缩请求标记的情况下,写高速缓存数据大小Swcd表示该写高速缓存数据WCDi被压缩之后的该写高速缓存数据WCDi的大小(长度)、即压缩后的写高速缓存数据的大小(压缩大小)。

接着,对在电源切断时能够使用备用电源15从高速缓存140退避到FROM13的退避区域130的写高速缓存数据的量(以下称为可退避大小Ss)进行说明。可退避大小Ss主要由备用电源15能够进行电力供给的时间(即可备用时间)T和FROM13的写入速度v来决定。可备用时间T也是能够从高速缓存140向FROM13的退避区域130退避写高速缓存数据的时间(即能够进行退避动作的时间)。

如果可备用时间T为1秒且FROM13的写入速度v为1MB(兆字节)/秒,则可退避大小Ss为1MB。该情况下,为了在电源切断时保全高速缓存140内的写高速缓存数据,需要将该高速缓存140内的未退避的写高速缓存数据的大小(量)始终压制在1MB以内。

因此,在本实施方式中,CPU125为了监视高速缓存140内的未退避的写高速缓存数据的量而利用计数器(未退避高速缓存数据计数器)CNTnsd。计数器CNTnsd的初始值为零,每当写高速缓存数据(写数据)被保存(接受)到高速缓存140时,对计数器CNTnsd加上所保存的写高速缓存数据的大小(写高速缓存数据大小)Swcd。另外,每当写高速缓存数据被写到盘110的退避区域112或用户数据区域113时,从计数器CNTnsd减去写高速缓存数据大小Swcd。

接着,对本实施方式中的动作进行说明。首先,参照图3对写数据接受处理进行说明。图3是表示写数据接受处理的典型步骤的流程图。写数据接受处理在CPU125经由HIF控制器121接受到来自主机的写命令的情况下执行。另外,写数据接受处理也在存在未接受的写数据的情况下执行。

设为从主机经由主机接口20向图1所示的HDD发送了写命令WCMDj。该写命令WCMDj包括表示应该保存由该写命令WCMDj确定的写数据的逻辑区域的领头位置的开始LBA以及该写数据的大小(写数据大小)Swd的信息。

写命令WCMDj由HIF控制器121接受。所接受到的写命令WCMDj被转发给CPU125。于是,CPU125与高速缓存控制器123以及数据压缩/解压缩电路128合作,如下所述来执行写数据接受处理。

首先,CPU125判定是否能够接受由所接受到的写命令WCMDj确定的写数据(B301)。在本实施方式中,在高速缓存140以及高速缓存管理表127中分别存在空区域以及空条项的情况下,判定为能够接受所确定的写数据(B301的“是”)。

该情况下,CPU125基于可退避大小Ss、计数器CNTnsd以及所确定的写数据的大小Swd,判定CNTnsd与Swd之和(CNTnsd+Swd)是否为可退避大小Ss以下(B302)。也即,即使为接受了所确定的写数据,CPU125也判定未退避高速缓存数据的大小是否控制在可退避大小Ss以内。

如果B302的判定为“否”,则CPU125停止所确定的写数据的接受(更详细而言是所确定的写数据向高速缓存140的保存)。然后,CPU125使用介质高速缓存功能来执行用于将当前高速缓存140所保存的未退避的写高速缓存数据全部退避到盘110的退避区域112的第2退避处理(B303)。通过该第2退避处理,CPU125能够重新在高速缓存140接受(保存)与可退避大小Ss相当的数据量的写高速缓存数据。

与此相对,如果B302的判定为“是”,则CPU125判断为即使将所确定的写数据保存到了高速缓存140、高速缓存140内的未退避的写高速缓存数据的大小也未超过可退避大小Ss。也即,CPU125判断为即使在刚刚将所确定的写数据保存到了高速缓存140之后产生了电源切断,也能够将高速缓存140内的未退避的写高速缓存数据在可备用时间T内全部退避到FROM13的退避区域130。

因此,作为用于将所确定的写数据保存到高速缓存140的前处理,CPU125生成用于将该确定出的写数据作为写高速缓存数据进行管理的高速缓存管理记录CMRj(B304)。对所生成的高速缓存管理记录CMRj的字段201~203不设置标记乃至F3。在高速缓存管理记录CMRj的字段205中,设定有写命令WCMDj所包含的开始LBA。在高速缓存管理记录CMRj的字段206中设定有高速缓存地址。该高速缓存地址表示保存所确定出的写数据的预定的高速缓存140内的空区域的领头位置。另外,在高速缓存管理记录CMRj的字段207中,设定有所确定出的写数据的大小(即实际 数据大小)作为写数据大小Swd。此外,高速缓存管理记录CMRj的字段208以及209例如为空白。

接着,CPU125将所生成的高速缓存管理记录CMRj保存于高速缓存管理表127的空条项(B305)。接着,CPU125通过高速缓存控制器123使所确定出的写数据保存到由在高速缓存管理记录CMRj的字段206中设定的高速缓存地址所指定的高速缓存140内的区域(B306)。在B306中,CPU125还通过数据压缩/解压缩电路128算出假设了对所确定出的写数据实施压缩处理的情况下的压缩处理后的写数据的大小(压缩数据大小)Scwd。根据所确定出的写数据的数据模式(pattern),并不限于所算出的大小Scwd小于所确定出的写数据的大小Swd。

因此,CPU125判定所算出的大小Scwd是否小于所确定出的写数据的大小(即实际数据大小)Swd(Scwd<Swd)(B307)。如果Scwd<Swd(B307的“是”),则CPU125如下所述来执行B308以及B309,以使得执行在所确定出的写数据的退避时将该写数据作为对象的压缩处理。首先,在B308中,CPU125对计数器CNTnsd加上Scwd。也即,CPU125将计数器CNTnsd增加Scwd。接着,在B309中,CPU125对高速缓存管理表127所保存的高速缓存管理记录CMRj的字段203设置压缩请求标记。在B309中,CPU125还对高速缓存管理记录CMRj的字段209设定Scwd作为写高速缓存数据大小Swcd。然后,CPU125进入B312。

另一方面,如果不是Scwd<Swd(B307的“否”),则CPU125对计数器CNTnsd加上Swd(B310)。也即,CPU125将计数器CNTnsd增加Swd。接着,CPU125对高速缓存管理表127所保存的高速缓存管理记录CMRj的域209设定Swd作为写高速缓存数据大小Swcd(B311)。请注意对此时的高速缓存管理记录CMRj的字段209不设置压缩请求标记。也即,高速缓存管理记录CMRi维持压缩请求标记被清除的状态。由此,能抑制在对所确定出的写数据进行退避时将该写数据作为对象的压缩处理。CPU125在执行了B311后,进入B312。

在B312中,CPU125对高速缓存管理表127内的高速缓存管理记录 CMRj的字段201设置写高速缓存标记。接着,CPU125通过HIF控制器121将表示写命令WCMDj结束的状态报告给主机(B313)。然后,CPU125结束写数据接受处理。此外,在B301的判定为“否”的情况下,CPU125立即结束写数据接受处理。该情况下,等待写命令WCMDj的执行。

接着,参照图4对本实施方式的写回处理进行说明。图4是表示以高速缓存管理记录为单位而执行的写回处理的典型步骤的流程图。写回处理是用于将高速缓存140所保存的写高速缓存数据写到盘110的用户数据区域113的处理。

CPU125为了进行写回处理,例如从在高速缓存管理表127中设置了写高速缓存标记的高速缓存管理记录的群(即有效的高速缓存管理记录的群)中按能够最适当地访问该高速缓存管理记录的群所表示的写范围的顺序来选择高速缓存管理记录。高速缓存管理记录的群与来自主机的写命令的群对应。因此,高速缓存管理记录的选择等效于按能够最适当地访问与有效的高速缓存管理记录的群对应的写命令的群所表示的写范围的顺序来选择写命令。能够最适当地访问的顺序例如是指使为了切换写范围而产生的寻道工作所需的时间以及旋转等待时间最小化的顺序。

通过高速缓存管理记录选择实现的上述的效果,取决于高速缓存管理表127内的有效的高速缓存管理记录的数量。因此,在高速缓存140所保存的写高速缓存数据的量受限制的情况下得不到充分的效果。但是,在本实施方式中,通过第2退避处理(图3的B303),能够重新在高速缓存140接受与可退避大小Ss相当的数据量的写高速缓存数据。并且,通过CPU125反复进行第2退避处理,能够接受与高速缓存140的存储器大小相当的数据量的高速缓存数据。由此,根据本实施方式,CPU125能够按使得访问时间最小化这样的最佳的顺序来执行写回处理。

为了进行写回处理,设为CPU125从高速缓存管理表127中选择了高速缓存管理记录CMRi。于是,CPU125将由高速缓存管理记录CMRi管理的高速缓存140内的写高速缓存数据WCDi写到盘110的用户数据区域113(B401)。CPU125与高速缓存控制器123以及DIF控制器122合作 来执行该动作(即写回动作)。另外,CPU125为了进行该写回动作,基于周知的地址转换表来确定与由高速缓存管理记录CMRi中的开始LBA以及写数据大小Swd指定的逻辑上的写范围关联的物理上的写范围。写高速缓存数据WCDi被写到用户数据区域113内的所确定出的写范围。

接着,CPU125基于是否对高速缓存管理记录CMRi的字段202设置了退避标记,判定写高速缓存数据WCDi是否完成了退避到退避区域112(B402)。如果B402的判定为“否”,则CPU125从计数器CNTnsd减去高速缓存管理记录CMRi的字段209所设定的写高速缓存数据大小Swcd(=Scwd或Swd)(B403)。也即,CPU125将计数器CNTnsd减少Swcd。执行该减法运算的理由如下。

如从前述的写数据接受处理可知的那样,在高速缓存管理记录CMRi被保存到了高速缓存管理表127的情况下(图3的B305),对计数器CNTnsd加上Swcd(=Scwd或Swd)(图3的B308或B310)。该加法运算是设想电源切断时的向FROM13内的退避区域130退避写高速缓存数据WCDi而执行的。但是,如本实施方式所示,在写高速缓存数据WCDi被写到了盘110的用户数据区域113的情况下(B401),不需要该写高速缓存数据WCDi向退避区域130的退避。因此执行上述的减法运算(B403)。

CPU125在执行了B403时进入B404。另一方面,如果B402的判定为“是”,则作为已经执行了与B403相当的减法运算(图5的B510)的情况,CPU125跳过B403而进入B404。在B404中,CPU125通过清除高速缓存管理表127所保存的高速缓存管理记录CMRi中的写高速缓存标记,使该高速缓存管理记录CMRi无效化(或释放)。CPU125在执行了B404时,结束写回处理。此外,B404可以未必执行,也可以是高速缓存管理记录CMRi遵循周知的LRU(Least Recently Used:最近最少使用)原则而无效化。

接着,参照图5对图3所示的写数据接受处理所包含的第2退避处理(图3的B303)的详细内容进行说明。图5是表示第2退避处理的典型步骤的流程图。如前所述,第2退避处理在图3的流程图所示的写数据接受 处理中未退避高速缓存数据的大小超过可退避大小Ss的情况(B302的“否”)下执行。

首先,CPU125为了依次参照高速缓存管理表127内的高速缓存管理记录,将指示高速缓存管理表127内的条项的条项指针i设定为初始值1(B501)。然后,CPU125参照由条项指针i指示的高速缓存管理表127内的第i个条项所保存的高速缓存管理记录CMRi(B502)。

接着,CPU125判定在高速缓存管理记录CMRi中是否设置了写高速缓存标记(B503)。如果设置了写高速缓存标记(B503的“是”),则CPU125判定在高速缓存管理记录CMRi中是否设置了退避标记(B504)。如果未设置退避标记(B504的“否”),则CPU125判定在高速缓存管理记录CMRi中是否设置了压缩请求标记(B505)。

如果设置了压缩请求标记(B505的“是”),则CPU125进入B506。与此相对,如果未设置压缩请求标记(B505的“否”),则CPU125进入B507。

在B506中,CPU125如下所述来执行退避动作,该退避动作用于对由高速缓存管理记录CMRi管理的写高速缓存数据WCDi进行压缩,并将压缩后的写高速缓存数据写(退避)到退避区域112。首先,CPU125请求高速缓存控制器123读取由高速缓存管理记录CMRi管理的写高速缓存数据WCDi,并且请求数据压缩/解压缩电路128对所读取的写高速缓存数据WCDi进行压缩。

于是,高速缓存控制器123从由高速缓存管理记录CMRi中的高速缓存地址以及写数据大小Swd确定的高速缓存140的区域读取写高速缓存数据WCDi。所读取的写高速缓存数据WCDi被输入到数据压缩/解压缩电路128。数据压缩/解压缩电路128对所输入的写高速缓存数据WCDi进行压缩。压缩后的写高速缓存数据WCDi经由高速缓存控制器123传送到DIF控制器122。CPU125请求DIF控制器122从退避区域112的退避数据末尾地址Xf开始写入压缩后的写高速缓存数据WCDi。于是,DIF控制器122执行所请求的写入。CPU125将退避数据末尾地址Xf设定到高速缓存 管理表127内的高速缓存管理记录CMRi的字段208中来作为退避目的地地址。

另一方面,在B507中,CPU125如下来执行用于将写高速缓存数据WCDi不压缩而写到退避区域112的退避动作。首先,CPU125请求高速缓存控制器123读取写高速缓存数据WCDi。请注意此时CPU125没有请求数据压缩/解压缩电路128对所读取的写高速缓存数据WCDi进行压缩。

高速缓存控制器123根据来自CPU125的请求,从高速缓存140中读取写高速缓存数据WCDi。所读取的写高速缓存数据WCDi穿过数据压缩/解压缩电路128而经由高速缓存控制器123传送到DIF控制器122。CPU125请求DIF控制器122从退避区域112的退避数据末尾地址Xf开始写入所读取的写高速缓存数据WCDi(即非压缩的写高速缓存数据WCDi)。于是,DIF控制器122执行所请求的写入。CPU125将退避数据末尾地址Xf设定到高速缓存管理表127内的高速缓存管理记录CMRi的字段208中来作为退避目的地地址。

CPU125在执行了B506或B507时,将退避数据末尾地址Xf更新(更详细而言是增加)由B506或B507写入的数据的长度(B508)。接着,CPU125根据上述的退避动作,对高速缓存管理记录CMRi的字段202设置退避标记(B509)。接着,CPU125根据退避动作,从计数器CNTnsd减去高速缓存管理记录CMRi所设定的写高速缓存数据大小Swcd(=Scwd或Swd)(B510)。此外,也可以在B509之前执行B510。

CPU125在执行了B509以及B510时,进入B511。另一方面,如果在高速缓存管理记录CMRi中未设置写高速缓存标记(B503的“否”),CPU125判断为写高速缓存数据WCDi被写到了盘110的用户数据区域113。该情况下,不需要写高速缓存数据WCDi的退避,因此CPU125跳过B504~B510而进入B511。另外,在高速缓存管理记录CMRi中设置了退避标记的情况下(B504的“是”),CPU125也跳过B505~B510而进入B511。

在B511中,CPU125使条项指针i增加一。接着,CPU125判定增加 后的条项指针i是否超过了表示高速缓存管理表127内的末尾条项的imax(在图2中,imax=n)(B512)。如果增加后的条项指针i未超过imax(B512的“否”),则CPU125返回到B502。如此,CPU125针对高速缓存管理表127内的全部高速缓存管理记录CMR1~CMRn反复执行从B502开始的一系列处理。然后,如果增加后的条项指针i超过了imax(B512的“是”),则CPU125结束第2退避处理。

图6是用于说明上述的第2退避处理的图。如图6所示,在高速缓存140中保存有写高速缓存数据WCD1~WCDn。写高速缓存数据WCDi(i=1,2,…,n)通过图2所示的高速缓存管理表127所保存的高速缓存管理记录CMRi进行管理。为了简化说明,设为写高速缓存数据WCD1~WCDn在本次的第2退避处理开始的时刻全都未写到盘110。另外,在图6中,设为写高速缓存数据WCD1~WCDn中的例如写高速缓存数据WCD1、WCD2以及WCDn是请求了压缩的数据(压缩对象数据),写高速缓存数据WCD3是未请求压缩的数据(非压缩对象数据)。

该情况下,首先,写高速缓存数据WCD1被读取并被压缩,该压缩后的写高速缓存数据WCD1如箭头600_1所示被写入(退避)到退避区域112中的从领头地址X开始的区域。根据该写入,退避数据末尾地址Xf从X更新为X1。

接着,写高速缓存数据WCD2被读取并被压缩,该压缩后的写高速缓存数据WCD2如箭头600_2所示,被写到退避区域112中的从地址X1(Xf=X1)开始的区域。根据该写入,退避数据末尾地址Xf从X1更新为X2。

接着,写高速缓存数据WCD3被读取,该读取的写高速缓存数据WCD3不被压缩而如箭头600_3所示,被写到退避区域112中的从地址X2(Xf=X2)开始的区域。根据该写入,退避数据末尾地址Xf从X2更新为X3。

以下,后续的写高速缓存数据被读取,在被压缩后写到退避区域112或不被压缩而写到退避区域112。然后,写高速缓存数据WCDn被读取并 被压缩,该压缩后的写高速缓存数据WCDn如箭头600_n所示,被写到退避区域112中的从地址Xn-1(Xf=Xn-1)开始的区域。根据该写入,退避数据末尾地址Xf从Xn-1更新为Xn。

如此,在本实施方式中,写高速缓存数据WCD1~WCDn的至少一部分在被压缩后被写到退避区域112。由此,向退避区域112写入所需的时间,比写高速缓存数据WCD1~WC全都不压缩而写入的情况缩短。若设为写高速缓存数据WCD1~WCDn整体的平均压缩率例如为20%,则向退避区域112写入所需的时间比写高速缓存数据WCD1~WC全都不压缩而写入的情况缩短20%。而且,在本实施方式中,写高速缓存数据WCD1~WCDn(在被压缩后或不被压缩)按序列写到退避区域112。由此,向退避区域112写入所需的时间进一步缩短。

接着,在本实施方式中,参照图7对用于在电源切断时将高速缓存140所保存的未退避的写高速缓存数据退避到FROM13的退避区域130的第1退避处理进行说明。图7是表示第1退避处理的典型步骤的流程图。

设为CPU125例如检测到从主机向HDD的电力供给已切断。该情况下,CPU125使用断电保护功能来执行图7的流程图所示的第1退避处理。

在B701中,最初,CPU125依次参照高速缓存管理表127所保存的全部高速缓存管理记录,确定对应该写到FROM13的退避区域130的写高速缓存数据进行管理的高速缓存管理记录。具体而言,CPU125确定设置了写高速缓存标记且清除了退避标记的高速缓存管理记录(第1状态的高速缓存管理记录)。此时,CPU125也确定仅设置了写高速缓存标记的高速缓存管理记录即有效的高速缓存管理记录(第2状态的高速缓存管理记录)。由第1状态的高速缓存管理记录所管理的写高速缓存数据未退避到盘110的退避区域112以及FROM13的退避区域130。由第2状态的高速缓存管理记录所管理的写高速缓存数据未写到盘110的用户区域111。第1状态的高速缓存管理记录的群包含在第2状态的高速缓存管理记录的群中。

在本实施方式中,第2状态的(有效的)高速缓存管理记录的群从退 避区域130的领头位置开始写入。并且,由第1状态的高速缓存管理记录所管理的全部写高速缓存数据在被压缩后或不被压缩而以接着第2状态的高速缓存管理记录的方式写到退避区域130。

为了进行这样的写入,CPU125基于第1状态的高速缓存管理记录以及第2状态的高速缓存管理记录,决定应该被退避的写高速缓存数据的退避目的地地址。退避目的地地址基于第1状态的高速缓存管理记录的群的数据大小和第2状态的高速缓存管理记录各自的字段207所设定的写高速缓存数据大小Swcd来决定。第1状态的高速缓存管理记录的群的数据大小基于该第1状态的高速缓存管理记录的数量来决定。

接着,CPU125基于退避目的地地址来更新高速缓存管理表127所保存的第2状态的高速缓存管理记录。即,CPU125对第2状态的高速缓存管理记录各自的字段208设定所决定出的退避目的地地址。由此,CPU125结束B701的执行。

接着,CPU125将第2状态的(即有效的)高速缓存管理记录的群作为高速缓存管理信息而从退避区域130的领头位置开始写入(B702)。然后,CPU125如下所述来执行与图5的流程图所示的第2退避处理中的B501~B507、B511以及B512相当的B703~B711。

首先,CPU125将指针i设定为初始值1(B703)。然后,CPU125参照由条项指针i指示的高速缓存管理表127内的第i个条项所保存的高速缓存管理记录CMRi(B704)。

如果在高速缓存管理记录CMRi中设置了写高速缓存标记以及压缩请求标记且未设置退避标记(B705的“是”、B706的“否”以及B707的“是”),则CPU125与高速缓存控制器123以及数据压缩/解压缩电路128合作来执行B708。在B708中,CPU125对由高速缓存管理记录CMRi管理的写高速缓存数据WCDi进行压缩,从退避区域130中的由该高速缓存管理记录CMRi中的退避目的地地址所指定的位置开始写入(退避)压缩后的写高速缓存数据。CPU125在执行了B708后,进入B710。

另一方面,如果在高速缓存管理记录CMRi中设置了写高速缓存标记 且未设置退避标记以及压缩请求标记(B705的“是”、B706的“否”以及B707的“否”),则CPU125与高速缓存控制器123合作来执行B709。在B709中,CPU125将写高速缓存数据WCDi不压缩而从退避区域130中的由高速缓存管理记录CMRi中的退避目的地地址所指定的位置开始进行写入。

CPU125在执行了B709后,进入B710。另外,如果在高速缓存管理记录CMRi中未设置写高速缓存标记(B705的“否”),则CPU125跳过B706~B709而进入B710。另外,在高速缓存管理记录CMRi中设置了写高速缓存标记且设置了退避标记的情况下(B705的“是”以及B706的“是”),CPU125也进入B710。

在B710中,CPU125将条项指针i增加一。接着,CPU125判定增加后的条项指针i是否超过了imax(=n)(B711)。如果增加后的条项指针i未超过imax(B711的“否”),则CPU125返回到B704。如此,CPU125针对高速缓存管理表127内的全部高速缓存管理记录CMR1~CMRn反复执行从B704开始的一系列处理。

图8是用于说明上述的第1退避处理的图。如图8所示,在高速缓存管理表127中保存有高速缓存管理记录CMR1~CMRn,为了简化说明,设为该高速缓存管理记录CMR1~CMRn全都是第1状态以及第2状态的高速缓存管理记录。另外,在图8中,设为写高速缓存数据WCD1~WCDn中的例如写高速缓存数据WCD1、WCD2以及WCDn是请求了压缩的数据(压缩对象数据),写高速缓存数据WCD3是未请求压缩的数据(非压缩对象数据)。

该情况下,首先,高速缓存管理记录CMR1~CMRn的群如箭头800所示,作为高速缓存管理信息而被写到退避区域130中的从领头地址开始的写范围810。也即,高速缓存管理记录CMR1~CMRn按其顺序被写到写范围810。写范围810的大小与高速缓存管理记录CMR1~CMRn整体的大小相等。

接着,写高速缓存数据WCD1被读取并被压缩,该压缩后的写高速缓 存数据WCD1如箭头801_1所示,被写到继写范围810之后的写范围811-1。写范围811-1的大小与压缩后的写高速缓存数据WCD1的大小相等,写范围811-1的领头地址由写高速缓存数据WCD1中的退避目的地地址指定。

接着,写高速缓存数据WCD2被读取并被压缩,该压缩后的写高速缓存数据WCD2如箭头801_2所示,被写到继写范围811_1之后的写范围811-2。写范围811-2的大小与压缩后的写高速缓存数据WCD2的大小相等,写范围811-2的领头地址由写高速缓存数据WCD2中的退避目的地地址指定。

接着,写高速缓存数据WCD3被读取,该读取的写高速缓存数据WCD3不被压缩而如箭头801_3所示,被写到继写范围811_2之后的写范围811-3。写范围811-3的大小与写高速缓存数据WCD3的大小相等,写范围811-3的领头地址由写高速缓存数据WCD3中的退避目的地地址指定。

以下,后续的写高速缓存数据被读取,在被压缩后或不被压缩而写到继写范围811_2之后的写范围。然后,写高速缓存数据WCDn被读取并被压缩,该压缩后的写高速缓存数据WCDn如箭头801_n所示,被写到退避区域130内的写范围811_n。写范围811-n的大小与写高速缓存数据WCDn的大小相等,写范围811-n的领头地址由写高速缓存数据WCDn中的退避目的地地址指定。

如此,在本实施方式的第1退避处理中,与原来的数据大小相比通过压缩处理削减了数据量的写高速缓存数据,在被压缩后被写到FROM13的退避区域130。由此,在电源切断时,能够削减向FROM13退避的写高速缓存数据的数据量,能够缩短将未退避到盘110的写高速缓存数据退避(写)到FROM13所需的时间。另外,能够增大在备用电源15的可备用时间T内能够退避到FROM13的写高速缓存数据的数据量。也即,能够增大能够保存到高速缓存140的写高速缓存数据的数据量(即可退避大小Ss),能够提高写高速缓存性能。

接着,在本实施方式中,参照图9对用于将退避到了FROM13的退避区域130的高速缓存管理记录以及写高速缓存数据分别恢复到高速缓存管理表127以及高速缓存140的高速缓存恢复处理进行说明。图9是表示高速缓存恢复处理的典型步骤的流程图。高速缓存恢复处理在再次开始从主机向HDD供给电力的情况下执行。

首先,CPU125将保存到了FROM13的退避区域130的高速缓存管理信息即第2状态的高速缓存管理记录的群恢复到高速缓存管理表127(B901)。设为此时退避区域130处于图8所示的状态。该情况下,通过B901的执行,高速缓存管理记录CMR1~CMRn按其顺序被恢复到高速缓存管理表127。

接着,CPU125与高速缓存控制器123合作来将退避到了退避区域130的写高速缓存数据恢复到高速缓存140(B902)。但是,在已退避的写高速缓存数据被压缩了的情况下,CPU125请求数据压缩/解压缩电路128对该压缩着的写高速缓存数据进行解压缩。CPU125能够基于在对已退避的写高速缓存数据进行管理的高速缓存管理记录中是否设置了压缩请求标记来判定该写高速缓存数据是否被压缩。

数据压缩/解压缩电路128根据来自CPU125的解压缩请求对从CPU125经由高速缓存控制器123向该数据压缩/解压缩电路128输入的写高速缓存数据进行解压缩。由此,解压缩后的写高速缓存数据被恢复到高速缓存140。如果没有从CPU125请求解压缩的情况下,向数据压缩/解压缩电路128输入的写高速缓存数据穿过该数据压缩/解压缩电路128而传送到DRAM14,被恢复到高速缓存140。

接着,CPU125将退避到了FROM13的退避区域130的写高速缓存数据的总大小设定给计数器CNTnsd(B903)。在本实施方式中,高速缓存管理记录CMR1~CMRn的总大小被设定给计数器CNTnsd。

接着,如果存在退避到了盘110的退避区域112的写高速缓存数据,则CPU125与DIF控制器122以及高速缓存控制器123合作来将该写高速缓存数据恢复到高速缓存140(B904)。在退避到了退避区域112的写高 速缓存数据被压缩了的情况下,CPU125请求数据压缩/解压缩电路128对该压缩后的写高速缓存数据进行解压缩。CPU125能够基于在对已退避的写高速缓存数据进行管理的高速缓存管理记录中是否设置了压缩请求标记来判定该写高速缓存数据是否被压缩。

数据压缩/解压缩电路128根据来自CPU125的解压缩请求,对从CPU125经由高速缓存控制器123向该数据压缩/解压缩电路128输入的写高速缓存数据进行解压缩。由此,解压缩后的写高速缓存数据被恢复到高速缓存140。如果没有从CPU125请求解压缩的情况下,向数据压缩/解压缩电路128输入的写高速缓存数据穿过该数据压缩/解压缩电路128而传送到DRAM14,被恢复到高速缓存140。最后,CPU125将FROM13的退避区域130以及盘110的退避区域112所保存的数据删除(B905),结束高速缓存恢复处理。

根据本实施方式,通过对写高速缓存数据进行压缩来对该压缩后的写高速缓存数据进行退避,能够缩短退避处理所需的时间。由此,在通过断电保护功能实现的退避处理(第1退避处理)中,在可备用时间T内能够退避的写高速缓存数据的量增大,因此能够增大可退避大小Ss。另外,在通过介质高速缓存功能实现的退避处理(第2退避处理)中,能够缩短将写高速缓存数据写到盘110的退避区域112所需的时间。该效果等效于缩短处理写命令的时间。

在所述实施方式中,CPU125判定是否对由来自主机的写命令特定的写数据(写高速缓存数据)整体进行压缩。但是,也可以不针对写数据整体而以构成该写数据的一定大小(例如512字节)的逻辑块为单位来判定是否进行压缩。逻辑块是从主机访问HDD时的最小的访问单位。

在所述实施方式中,CPU125具有断电保护功能以及介质高速缓存功能,执行第1以及第2退避处理。但是,CPU125也可以只具有断电保护功能和介质高速缓存功能的任一方,只执行第1和第2退避处理的任一方。

特别是在可退避大小Ss比所述实施方式大的情况下,例如在可退避大小Ss与高速缓存140的大小同等的情况下,未必需要介质高速缓存功能(第 2退避处理)。这样的状态例如能够在备用电源15具有使用通过从主机施加于HDD的电源电压而充电的电容器来产生电力的结构的情况下实现。其理由是因为相比于所述实施方式而能够充分增大可备用时间T。

同样,在可退避大小Ss比所述实施方式小的情况下,例如在可退避大小Ss小于数百KB(千字节)的情况下,未必需要断电保护功能(第1退避处理)的全部处理。该情况下,CPU125仅将有效的高速缓存管理记录的群退避到FROM13的退避区域130即可,在完成向盘110的退避区域112写入写高速缓存数据的时刻,通过HIF控制器121将表示对应的写命令的结束的状态报告给主机即可。

另外,所述实施方式将存储装置是磁盘装置的情况作为前提。但是,存储装置也可以是具有包含非易失性存储器(例如NAND存储器)的群在内的非易失性存储介质的SSD这样的半导体驱动器单元。

根据以上说明的至少一个实施方式,能够缩短退避写高速缓存数据所需的时间。

说明了本发明的几个实施方式,但是这些实施方式是作为例子而举出的,没有限定发明范围的意图。这些新的实施方式能够以其他的各种各样的方式来实施,在不脱离发明要旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含于发明的范围或要旨内,并且包含于权利要求所记载的发明及其等同的范围内。

本申请享受以美国临时专利申请62/205029号(申请日:2015年8月14日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。

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