硬件加速型存储压缩的制作方法

文档序号:14203651阅读:167来源:国知局
硬件加速型存储压缩的制作方法

相关申请的交叉引用

本专利申请要求于2015年9月3日提交的题为“hardware-acceleratedstoragecompression(硬件加速型存储压缩)”的待决临时专利申请no.62/213,839的权益,该临时专利申请已被转让给本申请受让人并由此通过援引全部明确纳入于此。

背景

i.公开领域

本公开的技术一般涉及存储介质压缩。

ii.

背景技术:

移动通信设备在当前社会已变得越来越普遍。这些移动通信设备的盛行部分地是由目前在此类设备上实现的许多功能来推动的。此类设备中增强的处理能力意味着移动通信设备已经从纯粹的通信工具演变成复杂的移动多媒体中心,由此实现增强的用户体验。

移动通信设备依赖于存储设备来存储操作系统、系统参数、可执行程序,以及用户数据。此类存储设备可包括硬盘驱动器(hdd)、固态硬盘(ssd)、通用闪存(ufs)、通用串行总线(usb)存储设备和/或嵌入式多媒体卡(emmc)。

与移动通信设备的增强的处理能力并行的是,对数据存储容量的需求也已呈指数增长。结果,移动通信设备嵌入有能够存储几百千兆字节(gb)数据的存储设备并不是常见的。遗憾的是,增加的存储容量伴随着增加的成本和复杂度。如此,经常需要在移动通信设备中执行数据压缩以帮助节省嵌入式存储设备中的存储空间。遗憾的是,诸如基于软件的压缩系统和基于存储设备的压缩系统之类的常规压缩系统在性能、等待时间和可控性方面遇到了明显的问题。

公开概述

详细描述中所公开的各方面包括硬件加速型存储压缩。在一个方面,在将未经压缩数据块写入存储设备之前,存储控制器中所提供的硬件压缩加速器将未经压缩数据块压缩成经压缩数据块,并且将经压缩数据块分配给存储设备中的存储数据块。硬件压缩加速器接着生成经修改的逻辑块地址(lba)以将未经压缩数据块链接到经压缩数据块。在另一方面,硬件压缩加速器基于对应的经修改的lba来定位经压缩数据块,并且将经压缩数据块解压缩成未经压缩数据块。通过在存储控制器中执行硬件加速型存储压缩,降低与常规的基于软件的压缩系统相关联的处理开销并改进对常规的存储设备驱动的压缩系统的压缩控制是可能的。此外,硬件加速型存储压缩可帮助提高数据吞吐量并降低与数据压缩相关联的功耗。

应用可通过经由主机控制接口(hci)向存储控制器发送写请求或读请求来将未经压缩数据块写入存储设备或从存储设备读取未经压缩数据块。写请求和读请求可被编码在现有hci命令(诸如hci嵌入式多媒体卡(emmc)或hci通用闪存存储(ufs)命令)中。

就此而言,在一个方面,提供了一种主机系统。该主机系统包括耦合至存储设备的存储控制器。该存储控制器包括硬件压缩加速器。该主机设备还包括控制系统,该控制系统被配置成向该存储控制器提供要将一个或多个未经压缩数据块写入该存储设备的写请求。该一个或多个未经压缩数据块中的每一者与相应的逻辑块地址(lba)相关联。对于该一个或多个未经压缩数据块之中的每个未经压缩数据块,该硬件压缩加速器被配置成:将未经压缩数据块压缩成经压缩数据块;将该经压缩数据块分配给该存储设备中的存储数据块;以及生成经修改lba以将该未经压缩数据块与该经压缩数据块相关,其中该经修改lba包括压缩位映射。

在另一方面,提供了一种用于在硬件加速型压缩系统下将数据写入存储设备的方法。该方法包括提供要将一个或多个未经压缩数据块写入存储设备的写请求。该一个或多个未经压缩数据块中的每一者与相应的lba相关联。对于该一个或多个未经压缩数据块之中的每个未经压缩数据块,该方法提供:将未经压缩数据块压缩成经压缩数据块;将该经压缩数据块分配给该存储设备中的存储数据块;以及生成经修改lba以将该未经压缩数据块与该经压缩数据块相关,其中该经修改lba包括压缩位映射。

在另一方面,提供了一种主机系统。该主机系统包括耦合至存储设备的存储控制器。该存储控制器包括硬件压缩加速器。该主机系统还包括控制系统,该控制系统被配置成向该存储控制器提供要从该存储设备读取一个或多个未经压缩数据块的读请求。对于该一个或多个未经压缩数据块之中的每个未经压缩数据块,该控制系统被进一步配置成提供相应的经修改逻辑块地址(lba),其将未经压缩数据块与该存储设备中相应的经压缩数据块相关,其中该经修改lba包括压缩位映射。该存储控制器被配置成基于该相应的经修改lba来从该存储设备中检索该相应的经压缩数据块。该硬件压缩加速器被配置成将该相应的经压缩数据块解压缩成该未经压缩数据块。该存储控制器被进一步配置成将该未经压缩数据块提供给该控制系统。

在另一方面,提供了一种用于在硬件加速型压缩系统下从存储设备读取数据的方法。该方法包括提供要从存储设备读取一个或多个未经压缩数据块的读请求;并且对于该一个或多个未经压缩数据块之中的每个未经压缩数据块:提供相应的经修改逻辑块地址(lba),其将未经压缩数据块与该存储设备中相应的经压缩数据块相关,其中该经修改lba包括压缩位映射;基于该相应的经修改lba从该存储设备中检索该相应的经压缩数据块;以及将该相应的经压缩数据块解压缩成该未经压缩数据块。

附图简述

图1a是被配置成基于常规的基于软件的压缩系统来执行存储压缩的示例性主机系统的示意图;

图1b是被配置成基于常规的存储设备驱动的压缩系统来执行存储压缩的示例性主机系统的示意图;

图2是被配置成基于硬件加速型存储压缩系统来将一个或多个未经压缩数据块写入存储设备的示例性主机系统的示意图;

图3是提供索引式节点(inode)的示例性解说的示意图,该索引式节点包含被配置成将图2的一个或多个未经压缩数据块分别与一个或多个经压缩数据块链接的一个或多个经修改的逻辑块地址(lba);

图4是提供未经压缩数据块、经压缩数据块、经修改的lba和lba之间的相关性的示例性解说的示意图;

图5是被配置成从存储设备读取基于图2的硬件加速型压缩系统生成的一个或多个未经压缩数据块的示例性主机系统的示意图;

图6是用于在硬件加速型压缩系统下将图2的一个或多个未经压缩数据块写入存储设备的示例性写入过程的流程图;

图7是用于在硬件加速型压缩系统下读取图5的该一个或多个未经压缩数据块的示例性读取过程的流程图;

图8是其中控制系统被配置成经由主机控制器接口(hci)与存储控制器进行通信的示例性主机系统的示意图;

图9a是可被配置成从图8的控制系统向图8的存储控制器提供读/写请求的示例性嵌入式多媒体卡(emmc)hci数据结构的示意图;

图9b是可被配置成从图8的控制系统向图8的存储控制器提供读/写请求的示例性通用闪存存储(ufs)hci数据结构的示意图;

图10a是被配置成为图8的存储控制器中的硬件压缩加速器定义至少一种压缩算法的示例性emmchci数据结构的示意图;

图10b是被配置成为图8的存储控制器中的硬件压缩加速器定义至少一种压缩算法的示例性ufshci数据结构的示意图;以及

图11是能采用图2、5和8的主机系统以支持硬件加速型存储压缩系统的基于处理器的示例性系统的框图。

详细描述

现在参照附图,描述本公开的若干示例性方面。措辞“示例性”在本文中用于表示“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。

详细描述中所公开的各方面包括硬件加速型存储压缩。在一个方面,在将未经压缩数据块写入存储设备之前,存储控制器中所提供的硬件压缩加速器将未经压缩数据块个体地压缩成经压缩数据块,并且将经压缩数据块分配给存储设备中的存储数据块。如本文中所使用的,术语“存储数据块”可指代存储设备中的逻辑数据块或物理数据块。硬件压缩加速器接着生成经修改的逻辑块地址(lba)以将未经压缩数据块链接到经压缩数据块。在另一方面,硬件压缩加速器基于对应的经修改的lba来定位经压缩数据块,并且将经压缩数据块解压缩成未经压缩数据块。通过在存储控制器中执行硬件加速型存储压缩,降低与常规的基于软件的压缩系统相关联的处理开销并改进对常规的存储设备驱动的压缩系统的压缩控制是可能的。此外,硬件加速型存储压缩可帮助提高数据吞吐量并降低与数据压缩相关联的功耗。

应用可通过经由主机控制接口(hci)向存储控制器发送写请求或读请求来将未经压缩数据块写入存储设备或从存储设备读取未经压缩数据块。写请求和读请求可被编码在现有hci命令(诸如hci嵌入式多媒体卡(emmc)或hci通用闪存存储(ufs)命令)中。

在讨论包括本公开的特定方面的硬件加速型存储压缩的示例性方面之前,分别参考图1a和1b来提供常规的基于软件的压缩系统以及常规的存储设备驱动的压缩系统的简要概览。参考图2开始讨论硬件加速型存储压缩的特定示例性方面。参考图8开始讨论经由hci请求存储设备访问的特定示例性方面。

就此而言,图1a是被配置成基于常规的基于软件的压缩系统来执行存储压缩的示例性主机系统100的示意图。

主机系统100包括存储控制器102,该存储控制器102被配置成启用对耦合至主机系统100的存储设备104的读/写访问。主机系统100还包括控制系统106,该控制系统106被配置成向在主机系统100中运行的应用提供数据访问。当应用请求向存储设备104写入数据文件(未示出)时,控制系统106首先生成索引式节点(inode)(未示出)以存储相关的元数据(例如,文件名、文件所有者、文件访问权限等)。

在将数据文件写入存储设备104之前,软件压缩引擎108压缩数据文件以节省存储设备104中的存储空间。在非限制性示例中,软件压缩引擎108(例如,winzip)可将数据文件压缩成单个压缩数据文件110。在另一非限制性示例中,软件压缩引擎108可将数据文件压缩成多个经压缩数据块112。多个经压缩数据块112中的每一个可以是一百二十八千字节(128kb)的大小。随后,存储控制器102将单个经压缩数据文件110或多个经压缩数据块112写入存储设备104。在非限制性示例中,存储设备104可包括四千字节(4kb)大小的存储数据块。如此,单个经压缩数据文件110或多个经压缩数据块112可占用多个存储数据块。

继续参考图1a,当应用需要访问被存储在存储设备104中的数据文件时,存储控制器102从存储设备104读取单个经压缩数据文件110或多个经压缩数据块112。控制系统106接着解压缩该单个经压缩数据文件110或多个经压缩数据块112以用于应用。

常规的基于软件的压缩系统由于软件压缩引擎108所执行的压缩/解压缩过程而携带显著的处理延迟。此外,因为常规的基于软件的压缩系统将数据文件压缩成单个经压缩数据文件110或多个128kb大小的经压缩数据块112,所以即使应用仅请求读取数据文件的一小部分(例如4kb),控制系统106也必须读取并解压缩单个经压缩数据文件110或多个经压缩数据块112之中的128kb经压缩数据块。结果,常规的基于软件的压缩系统还携带显著的处理开销。

作为在主机系统100中执行数据压缩/解压缩的替换,在存储设备104中执行数据压缩/解压缩也是可能的。就此而言,图1b是被配置成基于常规的存储设备驱动的压缩系统来执行存储压缩的示例性主机系统100(1)的示意图。

继续参考图1b,主机系统100(1)包括存储控制器102(1),该存储控制器102(1)被配置成启用对耦合至主机系统100(1)的存储设备104(1)的读/写访问。主机系统100(1)还包括控制系统106(1),该控制系统106(1)被配置成向在主机系统100(1)中运行的应用提供数据访问。存储设备104(1)包括被配置成支持常规的存储设备驱动的压缩系统的压缩引擎114。

当应用请求将未经压缩数据文件116写入存储设备104(1)时,存储控制器102(1)将未经压缩数据文件116发送到存储设备104(1)。在将未经压缩数据文件116写入到存储设备104(1)中的存储数据块(未示出)之前,压缩引擎114基于对主机系统100(1)而言通常是未知的压缩算法来将未经压缩数据文件116压缩成多个经压缩数据块(未示出)。换言之,主机系统100(1)不知道或者无法控制如何通过压缩引擎114执行压缩。

当应用请求从存储设备104(1)读取未经压缩数据文件116时,压缩引擎114解压缩与未经压缩数据文件116对应的多个经压缩数据块,并将未经压缩数据文件116提供回主机系统100(1)。如此,控制系统106(1)也不具有对压缩引擎114如何压缩未经压缩数据文件116的控制。

如以上在图1a和1b中所讨论的,常规的基于软件的压缩系统和常规的存储设备驱动的压缩系统两者具有明显的缺点。常规的基于软件的压缩系统引起处理延迟和处理开销,而常规的存储设备驱动的压缩系统无法控制主机系统。因此,可能期望具有一种压缩系统,其能降低与常规的基于软件的压缩系统相关联的处理延迟和处理开销,同时改进对常规的存储设备驱动的压缩系统的压缩控制。

就此而言,图2是被配置成基于硬件加速型存储压缩系统来将一个或多个未经压缩数据块202(1)-202(n)写入存储设备204的示例性主机系统200的示意图。

主机系统200包括被配置成启用对存储设备204的读/写访问的存储控制器206。在非限制性示例中,存储设备204可以是硬盘驱动器(hdd)、固态硬盘(ssd)、嵌入式多媒体卡(emmc)、通用闪存(ufs)和/或通用串行总线(usb)存储设备。在另一非限制性示例中,存储设备204可被嵌入在主机系统200中或者在外部耦合到主机系统200。主机系统200还包括控制系统208,其可以是例如被配置成提供对在主机系统200中运行的应用210的数据访问的操作系统(os)和/或文件系统(fs)。在非限制性示例中,os可以是android、ios、windows、linux和/或unix。

当应用210正在主机系统200中运行时,应用210可例如生成一个或多个未经压缩数据块202(1)-202(n)并将其暂时存储在系统存储器212中。在非限制性示例中,系统存储器212可以是动态随机存取存储器(dram)。当应用210需要以数据文件214的形式永久存储一个或多个未经压缩数据块202(1)-202(n)时,控制系统208生成索引式节点216以存储与数据文件214以及一个或多个未经压缩数据块202(1)-202(n)相关的元数据。在非限制性示例中,索引式节点216被提供为数据结构且包含定义数据文件214的此类元数据(例如,文件名、文件所有者、文件访问许可等)。索引式节点216还包含lba指针(未示出),其指向分别与一个或多个未经压缩数据块202(1)-202(n)相关联的一个或多个lba218(1)-218(n)。该一个或多个lba218(1)-218(n)可由控制系统208用于在数据文件214中定位一个或多个未经压缩数据块202(1)-202(n)。在非限制性示例中,一个或多个lba218(1)-218(n)中的每一个具有三十二位的相应长度,其可寻址二的三十二次方(232)个数据块。参考图3进一步解说和讨论索引式节点216的结构和内容。

在定义了索引式节点216中的数据文件214之后,控制系统208向存储控制器206发送写请求220,以将一个或多个未经压缩数据块202(1)-202(n)写入存储设备204。存储控制器206包括被配置成支持硬件加速型存储压缩系统的硬件压缩加速器222。硬件压缩加速器222分别压缩一个或多个未经压缩数据块202(1)-202(n)以生成一个或多个经压缩数据块224(1)-224(n)。根据非限制性示例,硬件压缩加速器222被配置成个体地压缩一个或多个未经压缩数据块202(1)-202(n)中的每一个未经压缩数据块。结果,一个或多个经压缩数据块224(1)-224(n)的相应大小将不大于一个或多个未经压缩数据块202(1)-202(n)的相应大小。

虽然硬件压缩加速器222被配置成使用相同的压缩算法来压缩一个或多个未经压缩数据块202(1)-202(n)中的每一个未经压缩数据块,但是一个或多个经压缩数据块224(1)-224(n)可能不是相同的大小。例如,如果一个或多个未经压缩数据块202(1)-202(n)中的每一个未经压缩数据块的大小为4kb,则一个或多个经压缩数据块224(1)-224(n)中的每一个经压缩数据块可以是小于或等于4kb的任何大小。相应地,如果一个或多个经压缩数据块224(1)-224(n)之中的经压缩数据块在被硬件压缩加速器222压缩之后的大小仍然是4kb,则经压缩数据块实际上是未经压缩的。如此,硬件压缩加速器222可以通过将经压缩数据块的相应大小对照一个或多个未经压缩数据块202(1)-202(n)之中的未经压缩数据块的相应大小进行比较来确定一个或多个经压缩数据块224(1)-224(n)之中的经压缩数据块是经压缩的还是未经压缩的。

继续参考图2,硬件压缩加速器222还被配置成将一个或多个经压缩数据块224(1)-224(n)之中的每一个经压缩数据块分配给存储设备204中的一个或多个存储数据块226(1)-226(m)。在非限定性示例中,该一个或多个存储数据块226(1)-226(m)中的每一者的大小是4kb。由于一个或多个经压缩数据块224(1)-224(n)可以是小于或等于4kb的任何大小,因此硬件压缩加速器222可以使一个或多个经压缩数据块224(1)-224(n)之中的经压缩数据块与一个或多个经压缩数据块224(1)-224(n)之中的至少一个其他经压缩数据块共处在一个或多个存储数据块226(1)-226(m)之中的存储数据块中。结果,硬件压缩加速器222可将一个或多个经压缩数据块224(1)-224(n)存储在存储数据块226(1)-226(m)中的更少的存储数据块中,从而节省存储设备204中的存储空间。稍后参考图4提供关于存储数据块分配的更详细的讨论。

随后,存储控制器206被配置成将一个或多个经压缩数据块224(1)-224(n)写入一个或多个存储数据块226(1)-226(m)。为了帮助控制系统208基于一个或多个lba218(1)-218(n)定位一个或多个经压缩数据块224(1)-224(n),硬件压缩加速器222生成并提供一个或多个经修改的lba228(1)-228(n)给控制系统208。一个或多个经修改的lba228(1)-228(n)被配置成分别将一个或多个lba218(1)-218(n)与一个或多个经压缩数据块224(1)-224(n)相关。控制系统208接收一个或多个经修改的lba228(1)-228(n),并将该一个或多个经修改的lba228(1)-228(n)分别与一个或多个lba218(1)-218(n)相关联地存储在索引式节点216中。如接下来参考图3和4所解说的,一个或多个经修改的lba228(1)-228(n)有效地将一个或多个未经压缩数据块202(1)-202(n)与一个或多个经压缩数据块224(1)-224(n)相关联。

就此而言,图3是提供图2的索引式节点216的示例性解说的示意图,其包含被配置成将一个或多个未经压缩数据块202(1)-202(n)与一个或多个经压缩数据块224(1)-224(n)相关联的一个或多个经修改的lba228(1)-228(n)。图2的元件结合图3来引用,并且在此将不再重新描述。

参考图3,索引式节点216包括指向一个或多个经修改的lba228(1)-228(n)的lba指针300。一个或多个经修改的lba228(1)-228(n)分别包括一个或多个压缩位映射302(1)-302(n)。

为了便于解说,本文中将经修改的lba228(n)中的压缩位映射302(n)作为非限制性示例来讨论。应当理解,本文中参考压缩位映射302(n)、图2的经修改的lba228(n)、lba218(n)、图2的未经压缩数据块202(n)以及图2的经压缩数据块224(n)所提供的解说适用于一个或多个压缩位映射302(1)-302(n)中的所有压缩位映射。

继续参考图3,压缩位映射302(n)包括压缩指示符306、序号308和lba号310。在非限制性示例中,压缩指示符306是一个位(1位)的长度。如果未经压缩数据块202(n)被压缩,则硬件压缩加速器222将压缩指示符306设为一(1),而如果未经压缩数据块202(n)未被压缩,则硬件压缩加速器222将压缩指示符306设为零(0)。为了确定未经压缩数据块202(n)是经压缩的还是未经压缩的,图2的硬件压缩加速器222被配置成将经压缩数据块224(n)的相应大小和未经压缩数据块202(n)的相应大小进行比较。如果经压缩数据块224(n)的相应大小小于未经压缩数据块202(n)的相应大小,则未经压缩数据块202(n)被认为被压缩,并且硬件压缩加速器222将压缩指示符306设为1。相反,如果经压缩数据块224(n)的相应大小等于未经压缩数据块202(n)的相应大小,则未经压缩数据块202(n)被认为未被压缩,并且硬件压缩加速器222将压缩指示符306设为0。

如之前参考图2所讨论的,使一个或多个经压缩数据块224(1)-224(n)之中的经压缩数据块与一个或多个经压缩数据块224(1)-224(n)之中的至少一个其他经压缩数据块共处在一个或多个存储数据块226(1)-226(m)之中的存储数据块中是可能的。在非限定性示例中,可以在硬件压缩加速器222中预编程预定的分配限制,以定义可通过硬件压缩加速器222共处在一个或多个存储数据块226(1)-226(m)中的每一个存储数据块中的经压缩数据块的最大数量。如此,序号308被配置成在经压缩数据块224(n)与一个或多个经压缩数据块224(1)-224(n)之中的至少一个其他经压缩数据块共处一地的情况下指示经压缩数据块224(n)在存储数据块中的相对顺序。序号308中的位数(有时称为n位)可基于下式1中的预定分配限制来确定。

lba号310被配置成指示对应于索引式节点216中的经修改的lba228(n)的lba218(n)。在非限制性示例中,lba号310可用十六进制格式表示。

为了进一步帮助理解一个或多个压缩位映射302(1)-302(n)如何能将图2的一个或多个未经压缩数据块202(1)-202(n)与一个或多个经压缩数据块224(1)-224(n)相关联,接下来提供图4。为了清楚和方便起见,未经压缩数据块202(1)-202(5)、经压缩数据块224(1)-224(5)、经修改的lba228(1)-228(5)和lba218(1)-218(5)在本文中作为非限制性示例进行解说和讨论。

就此而言,图4是提供未经压缩数据块202(1)-202(5)、经压缩数据块224(1)-224(5)、经修改的lba228(1)-228(5)和lba218(1)-218(5)之间的相关性的示例性解说的示意图。图2、3和4之间的共同元件在其中用共同的元件编号示出,并且在本文中将不再描述。

如图4所解说的,在非限定性示例中,lba218(1)-218(5)具有十六进制十(0x10)、十六进制十一(0x11)、十六进制十二(0x12)、十六进制十三(0x13)和十六进制十四(0x14)的相应值。

参考图4,经压缩数据块224(1)与经压缩数据块224(2)共处在存储数据块226(1)中。图2的硬件压缩加速器222基于两个测试来确定经压缩数据块224(1)是否能与经压缩数据块224(2)共处一地。第一测试是要确保经压缩数据块224(1)和经压缩数据块224(2)的总大小小于或等于存储数据块226(1)的大小,其根据参考图2所提供的非限制性示例为4kb。就此而言,如果第一测试通过,则经压缩数据块224(1)-224(2)分别在大小上小于未经压缩数据块202(1)-202(2)。

继续参考图4,第二测试是要确保经压缩数据块224(1)和经压缩数据块224(2)的总数小于或等于预定的分配限制,其定义每存储数据块可分配的经压缩数据块的总数。例如,如果预定的分配限制被设为二,则经压缩数据块224(1)和经压缩数据块224(2)将通过第二测试。

就此而言,在压缩位映射302(1)中,压缩指示符306被硬件压缩加速器222设为1以指示未经压缩数据块202(1)被压缩。序号308被设为0以指示经压缩数据块224(1)是存储数据块226(1)中的第一经压缩数据块。硬件压缩加速器222将lba号310设置为0x10,其指示未经压缩数据块202(1)的lba值。相应地,经修改的lba228(1)、未经压缩数据块202(1)和经压缩数据块224(1)变得彼此相关。

在压缩位映射302(2)中,压缩指示符306被设为1以指示未经压缩数据块202(2)被压缩。序号308被硬件压缩加速器222设为1以指示经压缩数据块224(2)是存储数据块226(1)中的第二经压缩数据块。硬件压缩加速器222将lba号310设为0x10,其指示未经压缩数据块202(2)的lba值。

继续参考图4,经压缩数据块224(3)被单独分配给存储数据块226(2)。如所解说的,经压缩数据块224(3)的大小与未经压缩数据块202(3)相同。根据先前参考图2的讨论,未经压缩数据块202(3)在被硬件压缩加速器222压缩之后保持未经压缩。就此而言,在压缩位映射302(3)中,压缩指示符306被硬件压缩加速器222设为0以指示未经压缩数据块202(3)保持未经压缩。序号308被设为0以指示经压缩数据块224(3)是存储数据块226(2)中的第一经压缩数据块。硬件压缩加速器222将lba块号310设为0x11,其是未经压缩数据块202(3)的lba值。

继续参考图4,经压缩数据块224(4)-224(5)共处于存储数据块226(3)。如此,在压缩位映射302(4)中,压缩指示符306被硬件压缩加速器222设为1以指示未经压缩数据块202(4)被压缩。序号308被设为0以指示经压缩数据块224(4)是存储数据块226(3)中的第一经压缩数据块。硬件压缩加速器222将lba块号310设为0x12,其是未经压缩数据块202(4)的lba值。

在压缩位映射302(5)中,压缩指示符306被设为1以指示未经压缩数据块202(5)被压缩。序号308被硬件压缩加速器222设为1以指示经压缩数据块224(5)是存储数据块226(3)中的第二经压缩数据块。硬件压缩加速器222还将lba号310设为0x12,其是未经压缩数据块202(5)的lba值。

如先前参考图2所讨论的,硬件压缩加速器222生成一个或多个经修改的lba228(1)-228(n)以帮助控制系统208定位一个或多个经压缩数据块224(1)-224(n)。如此,控制系统208基于被存储在索引式节点216中的一个或多个经修改的lba228(1)-228(n)来从存储设备204读取一个或多个经压缩数据块224(1)-224(n)是可能的。就此而言,图5是示例性主机系统500的示意图,其被配置成分别基于一个或多个经修改的lba228(1)-228(n)来从存储设备204读取图2的一个或多个未经压缩数据块202(1)-202(n)。图2和图5之间的共同元件以共同元件标号被示出,并且在本文中将不再重新描述。

参考图5,当应用502需要从存储设备204读取包括一个或多个未经压缩数据块202(1)-202(n)的数据文件214时,控制系统504将读请求506连同一个或多个经修改的lba228(1)-228(n)一起提供给存储控制器206。根据先前参考图2-4的讨论,一个或多个经修改的lba228(1)-228(n)将一个或多个未经压缩数据块202(1)-202(n)与一个或多个经压缩数据块224(1)-224(n)相关联。如此,存储控制器206从存储设备204中检索一个或多个经压缩数据块224(1)-224(n)。硬件压缩加速器222分别将一个或多个经压缩数据块224(1)-224(n)解压缩成一个或多个未经压缩数据块202(1)-202(n)。在非限制性示例中,一个或多个未经压缩数据块202(1)-202(n)被存储在系统存储器212中以供应用502访问。

图6是用于在硬件加速型压缩系统下将图2的一个或多个未经压缩数据块202(1)-202(n)写入存储设备204的示例性写入过程600的流程图。图2的元件结合图6来引用,并且在此将不再重新描述。

根据写入过程600,控制系统208提供要将一个或多个未经压缩数据块202(1)-202(n)写入存储设备204的写请求220,其中该一个或多个未经压缩数据块202(1)-202(n)中的每个未经压缩数据块与一个或多个lba218(1)-218(n)之中的相应lba相关联(框602)。对于一个或多个未经压缩数据块202(1)-202(n)之中的每个未经压缩数据块,硬件压缩加速器222将未经压缩数据块压缩成经压缩数据块(框604)。随后,对于一个或多个未经压缩数据块202(1)-202(n)之中的每个未经压缩数据块,硬件压缩加速器222将经压缩数据块分配给存储设备204中的存储数据块(框606)。接着,对于一个或多个未经压缩数据块202(1)-202(n)之中的每个未经压缩数据块,硬件压缩加速器222生成经修改的lba以将未经压缩数据块与经压缩数据块相关(框608),其中经修改的lba包括压缩位映射(框608)。如上文所讨论的压缩位映射可包括压缩指示符、序号和lba号。压缩指示符被配置成指示相应的经压缩数据块是否被压缩。序号被配置成指示相应经压缩数据块在其中存储有相应经压缩数据块的存储数据块中的相对顺序。lba号被配置成指示对应于相应经压缩数据块的未经压缩数据块的相应lba。

图7是用于在硬件加速型压缩系统下从存储设备204读取图5的一个或多个未经压缩数据块202(1)-202(n)的示例性读取过程700的流程图。图5的元件结合图7来引用,并且在此将不再重新描述。

根据读取过程700,控制系统504提供要从存储设备204读取一个或多个未经压缩数据块202(1)-202(n)的读请求506(框702)。对于一个或多个未经压缩数据块202(1)-202(n)之中的每个未经压缩数据块,控制系统504提供将未经压缩数据块与相应经压缩数据块相关的相应经修改lba,其中经修改lba包括压缩位映射(框704)。如以上所讨论的,压缩位映射可包括压缩指示符、序号和lba号。压缩指示符被配置成指示相应的经压缩数据块是否被压缩。序号被配置成指示相应经压缩数据块在其中存储有相应经压缩数据块的存储数据块中的相对顺序。lba号被配置成指示对应于相应经压缩数据块的未经压缩数据块的相应lba。

随后,对于一个或多个未经压缩数据块202(1)-202(n)之中的每个未经压缩数据块,存储控制器206从存储设备204中检索相应经压缩数据块(框706)。接着,对于一个或多个未经压缩数据块202(1)-202(n)之中的每个未经压缩数据块,硬件压缩加速器222将相应经压缩数据块解压缩成未经压缩数据块(框708)。

根据先前参考图2的讨论,控制系统208向存储控制器206发送写请求220或读请求506以将该一个或多个未经压缩数据块202(1)-202(n)写入存储设备204或从存储设备204读取该一个或多个未经压缩数据块202(1)-202(n)。在非限定性示例中,写请求220和读请求506可从控制系统208经由hci提供给存储控制器206。就此而言,图8是示例性主机系统800的示意图,其中图2和5的控制系统208被配置成经由hci802与存储控制器206通信。图2、5和8之间的共同元件在其中用共同的元件编号示出,并且在本文中将不再描述。

参考图8,为了请求存储控制器206将该一个或多个未经压缩数据块202(1)-202(n)写入存储设备204,写请求220携带诸如写指示、该一个或多个未经压缩数据块202(1)-202(n)的起始lba、以及该一个或多个未经压缩数据块202(1)-202(n)的总计数之类的信息。类似地,读请求506携带读指示、该一个或多个未经压缩数据块202(1)-202(n)的起始lba、以及该一个或多个未经压缩数据块202(1)-202(n)的总计数。写请求220和读请求506可使用标准hci数据结构来提供,这些标准hci数据结构参考图9a和9b来进一步解说和讨论。

继续参考图8,硬件压缩加速器222基于压缩算法来压缩该一个或多个未经压缩数据块202(1)-202(n)和解压缩该一个或多个经压缩数据块224(1)-224(n)。为了定义可由硬件压缩加速器222采用的压缩算法,在hci802中提供多个压缩配置寄存器804(1)-804(y)。该多个压缩配置寄存器804(1)-804(y)中的每一者定义可由硬件压缩加速器222采用的相应压缩算法。在非限定性示例中,该多个压缩配置寄存器804(1)-804(y)中所定义的压缩算法可包括游程编码(rle)、lempei-ziv编码(lz)、霍夫曼编码(huffman)、lz加霍夫曼字典零、lz加霍夫曼字典一、等等。压缩算法可由控制系统208确定并在写请求220或读请求506中传达给存储控制器206。稍后参考图10a和10b来提供关于使用标准hci数据结构传达压缩算法的进一步讨论。

如先前在图2中所讨论的,存储设备204可以是emmc。就此而言,图9a是示例性emmchci数据结构900的示意图,其可被配置成将图8的写请求220和读请求506从控制系统208提供给存储控制器206。图8中的元件结合图9a被引用,并且在本文不再重复描述。

参考图9a,emmchci数据结构900包括数据方向字段902,其被配置成指示写操作或读操作。emmchci数据结构900还包括块地址字段904,其被配置成指示该一个或多个经压缩数据块224(1)-224(n)的起始lba,该起始lba是经压缩数据块224(1)的经修改lba228(1)。emmchci数据结构900还包括块计数字段906,其被配置成指示该一个或多个经压缩数据块224(1)-224(n)的总计数(其是n)。就此而言,存储控制器206能够基于emmchci数据结构900中所提供的信息来将该一个或多个经压缩数据块224(1)-224(n)写入存储设备204或从存储设备204读取该一个或多个经压缩数据块224(1)-224(n)。

如先前在图2中所讨论的,存储设备204可以是ufs。就此而言,图9b是示例性ufshci数据结构908的示意图,其可被配置成从控制系统208向存储控制器206提供图8的写请求220和读请求506。图8中的元件结合图9b被引用,并且在本文不再重复描述。

参考图9b,ufshci数据结构908包括操作代码字段910,其被配置成指示写操作或读操作。ufshci数据结构908还包括lba字段912,其被配置成指示该一个或多个经压缩数据块224(1)-224(n)的起始lba,该起始lba是经压缩数据块224(1)的经修改lba228(1)。ufshci数据结构908还包括传递长度字段914,其被配置成指示该一个或多个经压缩数据块224(1)-224(n)的总计数(其是n)。就此而言,存储控制器206能够基于ufshci数据结构908中所提供的信息来将该一个或多个经压缩数据块224(1)-224(n)写入存储设备204或从存储设备204读取该一个或多个经压缩数据块224(1)-224(n)。

如在图8中所讨论的,压缩算法可由控制系统208确定并在写请求220或读请求506中传达给存储控制器206。就此而言,如果存储设备204是emmc,则图10a是示例性emmchci数据结构1000的示意图,其被配置成为图8的硬件压缩加速器222定义至少一种压缩算法。

参考图10a,emmchci数据结构1000基于包括保留数据字段1002的emmc任务描述符。保留数据字段1002(其长度是例如六十四位(64位))被重配置成在控制系统208和硬件压缩加速器222之间传达压缩映射(未示出)。每个压缩映射包括一位(1位)压缩启用/禁用指示符和指向该多个压缩配置寄存器804(1)-804(y)之一的n位压缩算法阵列索引(cidx),其中n是有限正整数。就此而言,可在保留数据字段1002中提供的压缩映射数量可基于下式2来确定。

如果emmchci数据结构1000配备有读请求506,则保留数据字段1002被配置成为该一个或多个未经压缩数据块202(1)-202(n)之中至多达n映射个未经压缩数据块携带至多达n映射个压缩映射。如果emmchci数据结构1000配备有写请求506,则保留数据字段1002被设为0。当硬件压缩加速器222返回该一个或多个经修改lba228(1)-228(n)时,保留数据字段1002将被配置成为该一个或多个未经压缩数据块202(1)-202(n)之中至多达n映射个未经压缩数据块携带至多达n映射个压缩映射。

存储设备204也可以是ufs。就此而言,图10b是示例性ufshci数据结构1004的示意图,其被配置成为图8的硬件压缩加速器222定义至少一种压缩算法。

参考图10b,ufshci数据结构1004基于包括第一保留数据字段1006和第二保留数据字段1008的ufs传递请求描述符。第一保留数据字段1006和第二保留数据字段1008各自的长度是三十二位(32位)。就此而言,第一保留数据字段1006和第二保留数据字段1008形成长度为64位的保留数据字段1010。

保留数据字段1010被重配置成在控制系统208和硬件压缩加速器222之间传达压缩映射(未示出)。每个压缩映射包括1位压缩启用/禁用指示符和指向该多个压缩配置寄存器804(1)-804(y)之一的n位cidx,其中n是有限正整数。就此而言,可在保留数据字段1010中提供的压缩映射数量可基于上式2来确定。

如果ufshci数据结构1004配备有读请求506,则保留数据字段1010被配置成为该一个或多个未经压缩数据块202(1)-202(n)之中至多达n映射个未经压缩数据块携带至多达至n映射个压缩映射。如果ufshci数据结构1004配备有写请求220,则保留数据字段1010被设为0。当硬件压缩加速器222返回该一个或多个经修改lba228(1)-228(n)时,保留数据字段1010将被配置成为该一个或多个未经压缩数据块202(1)-202(n)之中至多达n映射个未经压缩数据块携带至多达n映射个压缩映射。

图2的主机系统200、图5的主机系统500和图8的主机系统800可以在任何基于处理器的设备中提供或者被集成到任何基于处理器的设备中。不作为限定的示例包括:机顶盒、娱乐单元、导航设备、通信设备、固定位置数据单元、移动位置数据单元、移动电话、蜂窝电话、智能电话、平板设备、平板手机、计算机、便携式计算机、台式计算机、个人数字助理(pda)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频碟(dvd)播放器,便携式数字视频播放器,以及汽车。

就此而言,图11解说了可采用图2的主机系统200、图5的主机系统500、和图8的主机系统800的基于处理器的系统1100的示例。在该示例中,基于处理器的系统1100包括一个或多个中央处理单元(cpu)1102,每个cpu1102包括一个或多个处理器1104。(诸)cpu1102可具有耦合到(诸)处理器1104以用于对临时存储的数据进行快速访问的高速缓存存储器1106。(诸)cpu1102耦合到系统总线1108。如众所周知的,(诸)cpu1102通过在系统总线1108上交换地址、控制、以及数据信息来与其他设备通信。尽管在图11中未解说,但可提供多个系统总线1108,其中每个系统总线1108构成不同的织构。

其他主设备和从设备可被连接到系统总线1108。如图11中所解说的,作为示例,这些设备可以包括存储器系统1110、一个或多个输入设备1112、一个或多个输出设备1114、一个或多个网络接口设备1116、以及一个或多个显示控制器1118。(诸)输入设备1112可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(诸)输出设备1114可以包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。(诸)网络接口设备1116可以是配置成允许往来于网络1120的数据交换的任何设备。网络1120可以是任何类型的网络,包括但不限于有线或无线网络、私有或公共网络、局域网(lan)、无线局域网(wlan)、广域网(wan)、蓝牙tm网络或因特网。(诸)网络接口设备1116可被配置成支持所期望的任何类型的通信协议。存储器系统1110可以包括一个或多个存储器单元1122(0-n)以及存储器控制器1124。

(诸)cpu1102还可被配置成在系统总线1108上访问(诸)显示控制器1118以控制发送给一个或多个显示器1126的信息。(诸)显示控制器1118经由一个或多个视频处理器1128向(诸)显示器1126发送要显示的信息,视频处理器1128将要显示的信息处理成适于(诸)显示器1126的格式。(诸)显示器1126可以包括任何类型的显示器,包括但不限于阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、发光二极管(led)显示器等。

本领域技术人员将进一步领会,结合本文所公开的诸方面描述的各种解说性逻辑块、模块、电路和算法可被实现为电子硬件、存储在存储器中或另一计算机可读介质中并由处理器或其他处理设备执行的指令、或这两者的组合。作为示例,本文描述的主设备和从设备可用在任何电路、硬件组件、集成电路(ic)、或ic芯片中。本文所公开的存储器可以是任何类型和大小的存储器,并且可被配置成存储所期望的任何类型的信息。为了清楚地解说这种可互换性,各种解说性组件、框、模块、电路和步骤在上文已经以其功能性的形式一般性地作了描述。此类功能性如何被实现取决于具体应用、设计选择、和/或加诸于整体系统上的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本公开的范围。

结合本文所公开的各方面描述的各种解说性逻辑块、模块、以及电路可用被设计成执行本文所描述的功能的处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合来实现或执行。处理器可以是微处理器,但在替换方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如dsp与微处理器的组合、多个微处理器、与dsp核协作的一个或多个微处理器、或任何其他此类配置)。

本文所公开的各方面可被体现为硬件和存储在硬件中的指令,并且可驻留在例如随机存取存储器(ram)、闪存、只读存储器(rom)、电可编程rom(eprom)、电可擦可编程rom(eeprom)、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其它形式的计算机可读介质中。示例性存储介质被耦合到处理器,以使得处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在远程站中。在替换方案中,处理器和存储介质可作为分立组件驻留在远程站、基站或服务器中。

还注意到,本文任何示例性方面中所描述的操作步骤是为了提供示例和讨论而被描述的。所描述的操作可按除了所解说的顺序之外的众多不同顺序来执行。此外,在单个操作步骤中描述的操作实际上可在多个不同步骤中执行。另外,可组合示例性方面中讨论的一个或多个操作步骤。应理解,如对本领域技术人员显而易见地,在流程图中解说的操作步骤可进行众多不同的修改。本领域技术人员还将理解,可使用各种不同技术和技艺中的任何一种来表示信息和信号。例如,贯穿上面说明始终可能被述及的数据、指令、命令、信息、信号、比特、码元和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子、或其任何组合来表示。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员而言将容易是显而易见的,并且本文中所定义的普适原理可被应用到其他变型而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖特征一致的最广义的范围。

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