本申请要求Yang等人的、提交于2013年10月31日、题为"Systems and Methods for Internal Disk Drive Data Compression"的美国专利申请No.61/898,420的(非临时申请的)优先权。上述临时专利申请的全文出于各种目的通过引用合并到本文中。
具体实施方式
本发明与用于数据存储压缩的系统和方法有关。
本发明的各个实施例提供了数据存储系统,包括:半导体装置,以及磁存储介质。半导体装置包括:主机接口电路,可操作用于从主机设备接收写指令,所述写指令包括写数据组;压缩电路,可操作用于压缩写数据组以产生压缩的数据组;以及写通道电路,可操作用于施加编码算法到压缩的数据组以产生编码的数据组。磁存储介质,可操作用于存储与编码的数据组对应的磁信号。
在上述实施例的某些实例中,系统进一步包括固态存储器设备,可操作用于存储写数据组以及向压缩电路传送写数据组。在一些情况下,固态存储器设备是随机存取存储器设备。在各种实例中,系统进一步包括数据流控制电路,可操作用于使得写数据组被存储到固态存储器设备,以及从固态存储器设备访问写数据组,以及提供写数据组到压缩电路。在一些这种实例中,数据流控制电路进一步可操作于:使得写数据组被存储到磁存储介质;以及当磁存储介质表现出无实质使用时从磁存储介质访问写数据组。在一个或更多个情况中,编码的数据组是压缩的编码数据组;以及使得写数据组被存储到磁存储介质包括:施加数据编码算法到写数据组以产生非压缩的编码数据组;以及存储非压缩的编码数据组到磁存储介质。在特定情况下,当磁存储介质表现出无实质使用时从磁存储介质访问写数据组包括施加数据解码算法到非压缩的编码数据组以产生写数据组。
本发明的其它实施例提供用于在硬盘驱动器中存储数据的方法。该方法包括:提供磁存储介质;提供固态存储器;接收所接收的写数据组;存储所接收的写数据组到所述固态存储器作为存储的写数据组;从所述固态存储器访问所存储的写数据组作为访问的写数据组;施加压缩算法到所访问的写数据组以得到压缩的数据组;编码所压缩的数据组以得到编码的数据组;以及存储所编码的数据组到所述磁存储介质。在一些情况下,固态存储器设备是随机存取存储器以及磁存储介质是硬盘驱动器的盘片。
在上述实施例的各种实例中,该方法进一步包括:存储所接收的写数据组到所述磁存储介质;以及在存储所接收的写数据组到所述固态存储器作为所存储的写数据组之前从所述磁存储介质取回所述写数据组。在编码的数据组是压缩的编码数据组的具体情况时,存储接收的写数据组到磁存储介质包括:编码接收的写数据组以产生非压缩的编码数据组;以及存储非压缩的编码数据组到磁存储介质。在一些情况下,当磁存储介质表现出无实质使用时从磁存储介质访问写数据组包括:施加数据解码算法到非压缩的编码数据组以恢复所接收的写数据组。
本发明的其它实施例提供了存储设备。这种存储设备包括:固态存储器设备,半导体装置,磁存储介质和读取/写入头。所述半导体装置包括:主机接口电路,可操作用于从主机设备接收写指令,其中所述写指令包括写数据组;压缩电路,可操作用于压缩所述写数据组以得到压缩的数据组;数据流控制电路,可操作用于使得所述写数据组被存储到所述固态存储器设备,以及从所述固态存储器设备访问所述写数据组以及提供所述写数据组到所述压缩电路;写通道电路,可操作用于施加编码算法到所压缩的数据组以得到编码的数据组。读取/写入头被相对于所述磁存储介质配置,以及可操作用于利用与所编码的数据组对应的信号磁化所述存储介质。在上述实施例的某些实例中,所编码的数据组是压缩的编码数据组;以及其中所述数据流控制电路进一步可操作用于:施加所述数据编码算法到所述写数据组以得到非压缩的编码数据组;存储所述非压缩的编码数据组到所述磁存储介质;从所述磁存储介质访问所述非压缩的编码数据组;以及施加数据解码算法到所述非压缩的编码数据组以得到所述写数据组。
转向图1,示出了根据本发明的一些实施例的包括依靠暂时存储器的内部数据压缩/解压缩的数据存储系统100。数据存储系统100包括数据控制电路190,暂时存储器180,以及磁存储介质178以及关联的控制电路(显示为盘片)。可使用例如计算机101通过主机接口120访问数据存储系统100。应当注意,计算机101可以是本领域中已知的能够提供用于存储的数据以及用于请求以前被存储的数据的任何设备。
与磁存储介质178相关联的控制电路包括电机控制器168以及主轴电机172。在操作中,数据请求(读取或者写入)被主机接口120接收。主机接口电路120控制去往/来自磁存储介质178的数据的寻址和时序。磁存储介质178上的数据由多组磁信号组成,当读取/写入头组件176正确地定位在盘片178之上时可以由读取/写入头组件176检测到多组磁信号。在一个实施例中,盘片178包括根据纵向的或者垂直的记录方案记录的磁信号。
响应于从计算机101接收的读请求,主机接口120提供控制信号到硬盘控制器166并且提供控制信号到电机控制器168。硬盘控制器166相对于磁存储介质178定位读取/写入头组件176。电机控制器168以确定的旋转速率(RPM)驱动主轴电机172以旋转磁存储介质。随着存储介质178被主轴电机172旋转,一旦读取/写入头组件176被定位邻近正确的数据磁道,代表磁存储介质178上的数据的磁信号就在与读取/写入头组件176对应的位置处被感测到。被感测的磁信号被提供为表示磁存储介质178上的磁数据的持续的,微小的模拟信号。这些微小的模拟信号通过前置放大器170从读取/写入头组件176传输到数据控制电路190。前置放大器170可操作用于放大从磁存储介质178访问的微小的模拟信号。
另外,到主机接口电路120,数据控制电路190包括数据流控制电路182,压缩/解压缩电路122,写通道电路130,写驱动器140,和读通道电路110。在通过从计算机101到主机接口电路120的读请求触发的读取操作期间,从磁存储介质178感测的数据通过前置放大器170被传输到读通道电路110。读通道电路110施加数据解码算法到接收数据以产生压缩数据。读通道电路110可以是本领域中已知的任何读通道电路。在本发明的一个特定实施例中,读通道电路包括数据检测器电路和数据解码器电路,都可通信地通过中央存储器耦接。在本发明的一个这样的实施例中,数据检测器电路是最大后验数据检测器电路,电路施加数据检测算法到通过前置放大器170接收的数据以产生检测的输出。检测的输出被存储到中央存储器。数据解码器电路可以是例如低密度奇偶校验解码器电路。数据解码器电路施加数据解码算法到检测的输出以产生压缩的数据组。
主机接口电路120提供到数据流控制电路182的命令,命令管理通过数据控制电路190的各种电路的数据流。更具体的,数据流控制电路182引导压缩数据从读通道电路110存储在暂时存储器180中。在本发明的一些实施例中,暂时存储器180是固态存储器设备。在一种特定情况中,暂时存储器180是DDR SDRAM。数据流控制电路182等待来自压缩/解压缩电路122的指示压缩/解压缩电路122的可用性的信号。当压缩/解压缩电路122变为可用时,数据流控制电路182访问之前存储到暂时存储器180的压缩数据并且将其提供到压缩/解压缩电路122。
压缩/解压缩电路122可以施加本领域中已知的任何压缩/解压缩算法。压缩/解压缩电路122施加解压缩算法到压缩数据以产生读取数据。读取数据是最初从计算机101接收的要写到磁存储介质178的数据。数据流控制电路182引导读取数据从压缩/解压缩电路122存储回到暂时存储器180,在暂时存储器180,读取数据等待通过主机接口电路120传输到计算机101。具体的,当主机接口电路120向数据流控制电路182发信号表示存在可用的带宽传输之前存储的读取数据时,数据流控制电路182使得从暂时存储器180访问之前存储的读取数据并且作为读取数据103提供到计算机101。
响应于从计算机101接收的写请求,主机接口120提供控制信号到硬盘控制器166并且提供控制信号到电机控制器168。硬盘控制器166相对于磁存储介质178定位读取/写入头组件176。电机控制器168以确定的旋转速率(RPM)驱动主轴电机172以旋转磁存储介质。一旦读取/写入头组件176被定位邻近正确的数据磁道,代表将被存储在磁存储介质178上的数据的信号通过数据控制电路190被提供到读取/写入头组件176,读取/写入头组件176将数据写入磁存储介质178上的磁信号。
在从计算机101到主机接口电路120的写入请求触发的写操作期间,写数据101从计算机101被提供到主机接口电路120。数据流控制电路182引导接收的写数据存储到暂时存储器180。数据流控制电路182等待来自压缩/解压缩电路122的表示压缩/解压缩电路122的可用性的信号。当压缩/解压缩电路122变为可用时,数据流控制电路182访问之前存储到暂时存储器180的写数据并且将其提供到压缩/解压缩电路122。
压缩/解压缩电路122施加压缩算法到写数据以产生压缩数据。数据流控制电路182引导压缩数据从压缩/解压缩电路122存储回到暂时存储器180,在暂时存储器180,其等待传输到写通道电路130。数据流控制电路182等待写通道(例如,写通道电路130,写驱动器140,和读取/写入头176的组合)的可用性。当写通道变为可用时,数据流控制电路182从暂时存储器180访问压缩数据并且提供访问数据到写通道电路130。作为处理的一部分,数据流控制电路182使得存储的压缩数据根据磁存储介质178的磁数据格式间隔尺寸被重新组合到固定格式尺寸。
接下来,写通道电路130施加数据编码算法到所接收的压缩数据以产生编码输出。在本发明的一些实施例中,编码算法是低密度奇偶校验编码算法。产生的编码输出被格式化为代码字提供到写驱动器140。写驱动器140可以是本领域中已知的任何电路,电路能够格式化或者准备用于传输到读取/写入头组件176的接收代码字。另外,写驱动器140创建并且保持日志条目,其将未压缩数据(例如,原始的主机数据)的逻辑块地址链接到磁存储介质178上的编码压缩数据被存储到的物理块地址。链接数据被提供到硬盘控制器166,在硬盘控制器166中链接数据基于通过请求主机提供的逻辑块地址引导访问存储的已压缩数据。接下来,读取/写入头176磁化磁存储介质178以代表编码数据。注意,通过在数据控制电路190内部执行压缩(也即在主机接口电路120和写通道电路130之间),不会在计算机101之间产生瓶颈,并且存储在磁存储介质178上的代码字的尺寸不会由于压缩而变化。
应当注意,在一些实施例中,多个压缩的数据组被再组合在一起成为与磁存储介质178容许的尺寸(例如,4KB)匹配的数据组尺寸。在一些情况下,数据可以使用单个格式比特被标记为不可压缩的。在这种情况下,数据没有被压缩或者是解压缩的。即使数据没有被压缩,然而其可以由于施加到压缩数据的再分组处理而分散跨过多个物理扇区。在相反的方向设置单个格式比特表示数据是可压缩的并且将受到上面讨论的压缩和解压缩。进一步地,应当注意,取决于特定实现方式,数据存储系统100可以与下面关于图2a-2b,图3和图4讨论的任意方法一致地操作。
应当注意,存储系统100可以被集成到更大的存储系统中,诸如,例如基于RAID(廉价磁盘冗余陈列或者独立磁盘冗余阵列)的存储系统。这样的RAID存储系统通过冗余,组合多个盘为一个逻辑单元来增加稳定性和可靠性。根据各种算法,数据可以分布跨越包括在RAID存储系统中的多个磁盘,并且被操作系统访问就像它是单个磁盘一样。例如,在RAID存储系统中数据可以被镜像到多个磁盘,或者在多个技术中可以被分成片段并且分布跨越多个磁盘。如果在RAID存储系统中少量磁盘故障或者变为不可用的,错误校正技术可以被用来基于来自RAID存储系统中的其它磁盘的数据的其余部分而再次创建缺失数据。在RAID存储系统中的磁盘可以是,但不限于,单独的存储系统诸如存储系统100,并且可以是为了增加的安全性而位于彼此靠近或者分布更广。在写操作中,写数据被提供到控制器,控制器例如通过镜像或者通过分解写数据将写数据存储到各磁盘。在读取操作中,控制器从磁盘取回数据。控制器随后得到所产生的读取数据,就好像RAID存储系统是单个磁盘一样。
与读通道电路110相关使用的数据解码器电路可以是,但不限于,如现有技术中已知的低密度奇偶校验(LDPC)解码器电路。这样的低密度奇偶校验技术可应用于在几乎任何通道上的信息传输或者在几乎任何介质中的信息存储。传输应用包括但不限于,光纤,射频信道,有线或者无线局域网,数字用户线路技术,无线蜂窝,在任何介质诸如铜或者光纤之上的以太网,有线通道诸如有线电视,和地球-卫星通信。存储应用包括但不限于,硬盘驱动器,压缩盘,数字视频盘,磁带和存储器件诸如DRAM,NAND闪存,NOR闪存,其它非易失性的存储器和固态驱动器。
另外,应当注意,存储系统100可以被改变以包括额外的固态存储器,固态存储器可以与磁存储介质178并行使用以提供额外的存储。在这种情况下,固态存储器直接接收和提供信息到读通道电路110。或者,固态存储器可以被用作高速缓存,在情况下,其提供比通过磁存储介质178提供的更快的访问时间。在这种情况下,固态存储器可以被配置在接口控制器120和读通道电路110之间,在情况下,当在固态存储器中请求数据不可用时或者当固态存储器没有足够的存储量以保持新写入的数据组时,固态存储器操作为到磁存储介质178的通道。
转向图2a-2b,流程图200示出了根据本发明的一个或更多个实施例的用于内部压缩/解压缩磁盘驱动数据的方法,方法当暂时存储器可用时依靠暂时存储器,当暂时存储器不可用时依靠磁存储介质。遵循流程图200,从主机(块203)接收请求。主机可以是本领域中已知的能够从存储介质读取数据或者写入数据到存储介质的任何设备。作为一个示例,主机可以是计算机。确定请求是否是写入请求(块205)。确定接收请求是写入请求(块205),接收(块210)写数据和对应的逻辑写入地址。
执行暂时存储器的旁路和处理(块212)。转向图2b,示出了块212的处理的细节。如图2b所示,确定暂时存储器是否可用(块224)。暂时存储器的可用性基于暂时存储器是否具有足够的空间存储写数据。在暂时存储器不可用的情况下(块224),接收的写数据被存储到磁存储介质(块229)上的暂时位置。确定磁存储介质是否是脱机(即,具有实质的不期望访问情况的时间段)和暂时存储器是否可用(块234)。在磁存储介质是脱机和暂时存储器可用的情况下(块234),从磁存储介质上的暂时位置访问写数据并且将其存储到暂时存储器(块239)。在写数据被写到磁存储介质的暂时位置之前被编码的情况下,则从存储介质上的暂时位置访问写数据的处理包括解码之前编码的数据以得到原始的写数据。
这种使用磁存储介质上的暂时存储器区域作为临时保持区域的方法允许实现低速度的压缩算法。当存在少数扇区要写入,数据可以被保持在暂时存储器设备中直到压缩完成。与此相反,当数据写入是连续的,慢速率的压缩器不能够实时压缩数据,因此非压缩数据被临时存储到磁存储介质上的暂时存储器区域直到数据写入的减慢允许临时存储数据的压缩。介质可以是暂时介质,或者它可以是数据通常存储在其中的介质。
随后从暂时存储器访问写数据,并且压缩电路施加数据压缩算法,其被应用于取回的数据以得到压缩数据,并且压缩数据被写回暂时存储器(块244)。数据压缩算法可以是本领域中已知的任何压缩算法。
确定编码电路是否可用(例如,不忙的)(块249)。在编码电路不忙的情况下(块249),从暂时存储器(块244)访问之前存储的压缩数据。访问的压缩数据被组合成尺寸与数据将被存储到的存储介质的格式尺寸(例如,4KB)匹配的片段。在这个时候,逻辑地址到物理地址的映射被更新以反映该组合,在这里,组合影响数据将被存储到的存储介质上的物理地址。编码算法被应用于压缩数据以得到编码数据,并且编码数据被写到在磁存储介质上的与写入地址对应的位置。在本发明的一些实施例中,数据编码电路是低密度奇偶校验编码电路。处理随后返回到图2a的块203。可选的,在暂时存储器可用(块224)的情况下,步骤返回到图2b的块215。
再一次参考图2a,写数据被存储到暂时存储器(块215)。逻辑写入地址最终被映射或者关联到存储介质上的可访问数据的物理地址。硬盘控制器保存将逻辑地址关联到物理地址的表。在本发明的一些实施例中,暂时存储器是固态存储器设备。在一个具体情况中,暂时存储器是DDR SDRAM。
随后确定压缩电路是否可用(例如,不忙)(块220)。在压缩电路可用的情况下(块220),从暂时存储器(块225)访问之前存储到暂时存储器的写数据,并且数据压缩算法被应用于取回的数据以得到压缩数据(块230)。数据压缩算法可以是本领域中已知的任何压缩算法。产生的压缩数据被存储回暂时存储器(块235)。
确定编码电路是否可用(例如,不忙)(块240)。在编码电路不忙的情况下(块240),从暂时存储器(块245)访问之前存储的压缩数据。访问的压缩数据被组合成尺寸与数据将被存储到的存储介质的格式尺寸(例如,4KB)匹配的片段。在这个时候,逻辑地址到物理地址的映射被更新以反映该组合,这里,组合影响数据将被存储到的存储介质上的物理地址。编码算法被应用于压缩数据的片段以得到编码的数据组(一个或多个)(块250)。在本发明的一些实施例中,数据编码电路是低密度奇偶校验编码电路。编码数据随后被写到磁存储介质的对应于原始的逻辑写入地址的物理位置(块255)。在本发明的一些实施例中,磁存储介质是硬盘驱动器的盘片。
可选的,在确定接收的请求不是写入请求的情况下(块205),确定接收的请求是否是读请求(块260)。在确定接收的请求是读请求的情况下(块260),接收将从其读取数据的逻辑读取地址(块265)。逻辑读取地址被映射到与存储了请求数据的存储介质位置对应的物理地址。这种从逻辑读取地址到物理地址的转换通过使用将逻辑地址关联到物理地址的表实现,当数据被存储到存储介质(例如,块245)时更新该表。从磁存储介质上的对应于物理地址的位置访问编码数据(块270)。编码数据随后通过解码电路被解码以得到压缩数据(块280)。数据解码电路可以包括低密度奇偶校验解码电路。产生的压缩数据被存储到暂时存储器(块285)。
随后确定解压缩电路是否可用(例如,不忙)(块290)。在解压缩电路可用的情况下(块290),从暂时存储器访问之前存储到暂时存储器的压缩数据(块295)。该处理包括重新组合在块245中的组合执行之前存在的原始压缩数据。数据解压缩算法被施加于所取回的数据以得到读取数据(块201)。数据解压缩算法基本上逆反了通过数据压缩算法施加的压缩,并且可以是本领域中已知的任何解压缩算法。产生的读取数据被存储回到暂时存储器(块206)。最终,从暂时存储器访问该读取数据并且将其提供到该请求主机(块211)。
为了收集垃圾(garbage)(被移动/去除或者删除的扇区),并且由于吞吐量原因压缩写到磁盘的未压缩数据,碎片整理和垃圾收集通常被用来读取压缩和非压缩数据,压缩仍然有效的数据并且再将它们写入进磁盘中。在这个处理中,LBA->PBA表需要被更新/保持。
转向图3,流程图300示出了根据本发明的一些实施例的用于依靠暂时存储器的内部压缩/解压缩磁盘驱动数据的方法。遵循流程图300,从主机接收请求(块303)。主机可以是本领域中已知的能够从存储介质读取数据或者写入数据到存储介质的任何设备。作为一个示例,主机可以是计算机。确定请求是否是写入请求(块305)。在确定接收的请求是写入请求的情况下(块305),接收写数据和对应的逻辑写入地址(块310),并且存储到暂时存储器(块315)。逻辑写入地址最终被映射或者关联到存储介质上的可访问数据的物理地址。硬盘控制器保持将逻辑地址关联到物理地址的表。在本发明的一些实施例中,暂时存储器是固态存储器设备。在一个具体情况中,暂时存储器是DDR SDRAM。
随后确定压缩电路是否可用(例如,不忙)(块320)。在压缩电路可用的情况下(块320),从暂时存储器访问之前存储到暂时存储器的写数据(块325),并且数据压缩算法被施加于所取回的数据以得到压缩数据(块330)。数据压缩算法可以是本领域中已知的任何压缩算法。产生的压缩数据被存储回到暂时存储器(块335)。
确定编码电路是否可用(例如,不忙)(块340)。在编码电路不忙的情况下(块340),从暂时存储器访问之前存储的压缩数据(块345)。访问的压缩数据被组合成尺寸与数据将被存储到的存储介质的格式尺寸(例如,4KB)匹配的片段。在这个时候,逻辑地址到物理地址的映射被更新以体现该组合,这里,组合影响数据被存储到的存储介质上的物理地址。编码算法被施加于压缩数据的片段以得到编码的数据组(一个或多个)(块350)。在本发明的一些实施例中,数据编码电路是低密度奇偶校验编码电路。编码数据随后被写到磁存储介质的对应于原始逻辑写入地址的物理地址(块355)。在本发明的一些实施例中,磁存储介质是硬盘驱动器的盘片。
可选的,在确定接收的请求不是写入请求的情况下(块305),确定接收的请求是否是读请求(块360)。在确定接收的请求是读请求的情况下(块360),接收将从其读取数据的逻辑读取地址(块365)。该逻辑读取地址被映射到与在存储介质上存储了数据的地址对应的物理位置。这种从逻辑读取地址到物理地址的转换通过使用将逻辑地址关联到物理地址的表实现,当数据被存储到存储介质(例如,块345)时,该表被更新。从磁存储介质上的对应于该物理地址的位置访问编码数据(块370)。该编码数据随后通过解码电路被解码以得到压缩数据(块380)。数据解码电路可以包括低密度奇偶校验解码电路。产生的压缩数据被存储到暂时存储器(块385)。
随后确定解压缩电路是否可用(例如,不忙)(块390)。在解压缩电路可用的情况下(块390),从暂时存储器访问之前存储到暂时存储器的压缩数据(块395)。该处理包括重新组合在块345中执行的组合之前存在的原始压缩数据。数据解压缩算法被施加于所取回的数据以得到读取数据(块301)。数据解压缩算法基本上逆反了通过数据压缩算法施加的压缩,并且可以是本领域中已知的任何解压缩算法。产生的读取数据被存储回到暂时存储器(块306)。最终,从暂时存储器访问读取数据并且将其提供到该请求主机(块311)。
在一些情况下,解压缩可以在主机方完成。在这种情况下,块306将被直接发送读取数据到主机的处理代替,并且块311被删去。
转向图4,流程图400示出了根据本发明的一些实施例的用于内部压缩/解压缩磁盘驱动数据的方法,该方法依靠暂时存储器以及磁存储介质。遵循流程图400,从主机接收请求(块403)。主机可以是本领域中能够从存储介质读取数据或者写入数据到存储介质已知的任何设备。作为一个示例,主机可以是计算机。确定该请求是否是写入请求(块405)。在确定该接收的请求是写入请求的情况下(块405),接收写数据和对应的逻辑写入地址,并且存储到暂时存储器(块410)。在本发明的一些实施例中,暂时存储器是固态存储器设备。在一个具体情况中,暂时存储器是DDR SDRAM。
从暂时存储器访问之前存储的写数据并且存储到磁存储介质上的暂时位置(块415)。该存储到磁存储介质的处理可以包括编码未压缩的写数据,并且写入编码的、未压缩的写数据到磁存储介质。在本发明的一些实施例中,磁存储介质是硬盘驱动器的盘片。
确定磁存储介质是否是脱机(例如,具有不期望访问情况的实质性的时间段)(块420)。在磁存储介质是脱机的情况下(块420),从磁存储介质上的暂时地址访问写数据并且将其存储到暂时存储器(块425)。在写数据在被写到该磁存储介质的暂时位置之前被编码的情况下,则从存储介质上的暂时位置访问写数据的处理包括解码之前编码的数据以得到原始的写数据。
随后从暂时存储器访问写数据,并且压缩电路施加的数据压缩算法被施加于取回的数据以得到压缩数据,并且压缩数据被写回暂时存储器(块430)。数据压缩算法可以是本领域中已知的任何压缩算法。
确定编码电路是否可用(例如,不忙)(块440)。在编码电路不忙的情况下(块440),从暂时存储器访问之前存储的压缩数据(块445)。访问的压缩数据被组合成片段,其尺寸与数据将被存储到的存储介质的格式尺寸(例如,4KB)匹配。在这个时候,逻辑地址到物理地址的映射被更新以体现该组合,这里,组合影响该数据将被存储到的存储介质上的物理地址。编码算法被施加于压缩数据以得到编码数据,并且编码数据被写到磁存储介质上的与写入地址对应的位置。在本发明的一些实施例中,数据编码电路是低密度奇偶校验编码电路。
可选的,在确定接收的请求不是写入请求的情况下(块405),确定该接收的请求是否是读请求(块460)。在确定该接收的请求是读请求的情况下(块460),接收将从其读取数据的逻辑地址(块465)。并且从磁存储介质访问对应于接收地址的编码数据,并且编码数据被存储到暂时存储器(块465)。该逻辑读取地址被映射到与存储介质上的存储了请求数据的位置对应的物理地址。这种从逻辑读取地址到物理地址的转换通过使用将逻辑地址关联到物理地址的表实现,当数据被存储到该存储介质(例如,块445)时,该表被更新。从磁存储介质上对应于物理地址的位置访问编码数据,并且所访问的编码数据被存储到暂时存储器。
确定解码电路是否可用(块470)。在解码电路可用的情况下(块470),随后确定磁存储介质是否是脱机的(例如,具有不期望访问情况的实质性的时间段)或者数据解压缩电路是否可用(块480)。在任意一种成立的情况下(块480),从暂时存储器访问编码数据,并且解码电路施加数据解码算法到编码数据以得到压缩数据,压缩数据被存储回到暂时存储器(块475)。数据解码电路可以包括低密度奇偶校验解码电路。随后从暂时存储器访问压缩数据(块485)。该处理包括重新组合在块445中执行的组合之前存在的原始压缩数据组。数据解压缩算法被施加于原始的压缩数据组以得到读取数据该数据解压缩算法基本上逆反了通过数据压缩算法施加的压缩,并且可以是本领域中已知的任何解压缩算法。产生的读取数据被存储回到暂时存储器。最终,从该暂时存储器访问读取数据并且提供到该请求主机(块490)。
应当注意,在以上申请中讨论的各种块可以在集成电路中与其它功能一起实现。这样的集成电路可以包括给出的块、系统或电路的全部功能,或者仅块,系统或电路的功能的子集。进一步地,块,系统或电路的各部件可以跨越多个集成电路实现。这样的集成电路可以是本领域中已知的任何类型的集成电路,包括但不限于,单片集成电路,倒装芯片集成电路,多芯片模块集成电路,和/或混合信号集成电路。也应注意本申请中讨论的块,系统或电路的各种功能可以在以软件或者固件实现。在一些这样的情况中,整个系统,块或电路可以使用它的等同的软件或者固件实现。在其它情况下,给定的系统,块或电路的一部分可以以软件或者固件实现,而其它部分以硬件实现。
总之,本发明提供用于数据存储的新颖的系统、设备、方法和结构。虽然上面已经给出了本发明的一个或多个实施例的详细描述,但是对于本领域技术人员来说在不改变本发明的精神的情况下,各种可替代、修改和等同物将是明白可见的。因此,上述描述不应该被认为限制本发明的范围,而本发明的范围由所附的权利要求限定。