CN102236543B - 数据解压装置及方法 - Google Patents
数据解压装置及方法 Download PDFInfo
- Publication number
- CN102236543B CN102236543B CN201010165576.5A CN201010165576A CN102236543B CN 102236543 B CN102236543 B CN 102236543B CN 201010165576 A CN201010165576 A CN 201010165576A CN 102236543 B CN102236543 B CN 102236543B
- Authority
- CN
- China
- Prior art keywords
- decompress
- ion
- data
- core
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Advance Control (AREA)
Abstract
本发明涉及一种数据解压装置,包括驱动模块、硬件调度模块和片内多解压核,驱动模块用于将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令,并将解压命令发送到硬件调度模块,以及将解压结果返给应用程序进程;硬件调度模块用于分析接收到的解压命令,为解压命令中的多个解压请求分别分配单独的解压核进行处理,以及在多个解压请求均处理完毕后,发送中断及状态信息到驱动程序;片内多解压核,包括多个单独的解压核,用于执行解压处理。本发明还涉及一种数据解压方法。本发明通过片内多解压核对多个数据解压缩线程的多个解压请求进行并行处理,既不需要耗费CPU资源,也可以增加解压缩的带宽,提高了解压缩的速度。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种对数据进行解压缩的处理装置及处理方法。
背景技术
在互联网的大规模数据处理中,数据的压缩和解压缩是非常重要且常用的手段,它可以大幅度提高磁盘的有效容量,提高I/O读写和网络传输的有效带宽,从而可以有效地降低互联网数据中心(InternetData Center,简称IDC)的成本和提高应用层程序的执行速度。
在传统的解决方案里面,数据的压缩和解压缩一般采用Gzip(一种GNU自由软件的文件压缩程序)压缩算法。这种Gzip算法里面存在大量串行的不定长位操作,由于CPU在处理数据和访问内存都是以定长的比特为单位,因此CPU在进行数据处理和访问内存时,需要从规整的数据中取出真正有效的数据,从而增加了额外的操作,导致软件处理效率较低,例如主频2.66GHz的CPU进行压缩的带宽是50MB/s,解压缩的带宽是200MB/s。而目前采用的Gzip压缩算法的解压缩操作均采用的是软件实现的方式,这种方式的并行度较低,在大规模数据处理中,要压缩和解压缩的数据流巨大,使用CPU进行压缩解压缩处理必然要消耗大量的CPU资源,使机器负载加重。
发明内容
本发明的目的是提出一种数据解压装置及方法,能够实现数据解压缩线程的并行处理,增加解压缩的带宽,提高解压缩的速度。
为实现上述目的,本发明提供了一种数据解压装置,包括驱动模块、硬件调度模块和片内多解压核,其中,
所述驱动模块,用于将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令,并将所述解压命令发送到所述硬件调度模块,以及将解压结果返回给对应的所述多个应用程序进程;
所述硬件调度模块,用于分析接收到的所述解压命令,为所述解压命令中的多个解压请求分别分配所述片内多解压核中的多个单独的解压核进行处理,以及在所述多个解压请求均处理完毕后,发送中断及状态信息到所述驱动程序;
所述片内多解压核,包括多个单独的解压核,用于执行解压处理。
为实现上述目的,本发明提供了一种数据解压方法,包括以下步骤:
驱动模块将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令,并将所述解压命令发送到硬件调度模块;
所述硬件调度模块分析所述解压命令,并为所述解压命令中的多个解压请求分别分配片内多解压核中的多个单独的解压核进行处理;
在所述多个解压请求均处理完毕后,所述硬件调度模块发送中断及状态信息到所述驱动模块;
所述驱动模块将所述解压结果返回给对应的所述多个应用程序进程。
基于上述技术方案,本发明通过片内多解压核对多个数据解压缩线程的多个解压请求进行并行处理,既不需要耗费CPU资源,也可以增加解压缩的带宽,提高了解压缩的速度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明数据解压装置的第一实施例的结构示意图。
图2为本发明数据解压装置的第二实施例的结构示意图。
图3为本发明数据解压装置的第三实施例中硬件框架部分的结构示意图。
图4为本发明数据解压装置的第四实施例中硬件框架部分的结构示意图。
图5为本发明数据解压方法的第一实施例的流程示意图。
图6为本发明数据解压方法的第二实施例的流程示意图。
图7为本发明数据解压方法的第三实施例中硬件解压过程的流程示意图。
图8为本发明数据解压方法的第四实施例中硬件解压过程的流程示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
在现有技术中数据的解压缩操作是在CPU中进行的,因此会耗费大量的CPU资源,既加重了机器的负载,也影响了解压缩的速度。在本发明中,可以考虑通过设置数据解压装置来实现解压缩的方案,并且在数据解压装置中设置多个解压核,来实现并行的对多个解压请求进行处理,从而不需要耗费CPU的资源来进行解压缩,进而提高解压缩的速度。
本发明的数据解压装置可以通过可编程逻辑器件(例如现场可编程门阵列Field Programmable Gate Array,简称FPGA等)来实现,并且可以根据对解压效率、成本等因素选择低端或高端的可编程逻辑器件。
如图1所示,为本发明数据解压装置的第一实施例的结构示意图。在本实施例中,数据解压装置至少包括驱动模块1、硬件调度模块2和片内多解压核3。其中,驱动模块1运行硬件的驱动程序来驱动硬件进行操作,当接收到上层(例如应用层等)的多个应用程序进程并行发送的多个解压请求时,驱动模块1可以将这些多个解压请求合并为一个解压命令,并将该解压命令发送到硬件调度模块2。
硬件调度模块2对接收到的解压命令进行分析,获得解压命令中所包括的多个解压请求,并将该多个解压请求分别分配片内多解压核3中的多个单独的解压核(例如图1中的解压核core0~3)来进行处理。
被分配了解压任务的多个解压核(例如core0~3)可以根据解压请求对待解压的数据进行解压缩操作,当解压请求均被处理完毕,则硬件调度模块2向驱动模块1发送中断及解压核的状态信息,根据解压核的状态信息可以确定是否有解压结果返回。
在本实施例中,片内多解压核3中包括有4个单独的解压核,在对多个解压请求进行处理的时候,最多可以并行处理4个解压请求。在本发明的另一实施例中,还可以根据应用和需要灵活的增加或减少单独的解压核的数量,解压核的数量的配置主要取决于可编程逻辑器件的容量,对于较高端的可编程逻辑器件,则可以设置更多的解压核,例如8个、12个解压核等。
在上述实施例中,通过合并多个解压请求成一个解压命令,并且在片内多解压核全部处理完毕后,才发送中断,这种方式减少了中断次数,降低了中断的开销,并且通过合并成解压命令的方式,使得软硬件接口的实现也更为简单。
考虑到上层的应用程序进程可能较多,本发明数据解压装置不能够一次完成解压过程,此时,还可以通过在数据解压装置中增加进程队列处理模块来对应用程序进程进行管理。如图2所示,为本发明数据解压装置的第二实施例的结构示意图。与上一实施例相比,本实施例增加了队列处理模块4,该模块对上层的发出多个解压请求的多个应用程序进程进行排队,为了便于控制,还可以对该多个应用程序进程的处理状态进行设置。
以包括4个单独的解压核的片内多解压核3为例,片内多解压核3每次最多可以并行处理4个应用程序进程。驱动模块1对进程队列处理模块4中排队的多个应用程序进程进行处理,其中每次选择处理的应用程序进程的数量不超过4,在该4个应用程序进程被处理的过程中,其他应用程序进程处于等待状态。当该4个应用程序进程均完成处理,硬件调度模块2向驱动模块1发出中断,驱动模块1在接收到中断后,唤醒被处理的4个应用程序进程。通过这种方式,有效地减少了硬件中断处理的次数,有助于提高解压过程的效率。
在进程队列处理模块4对发出解压请求的多个应用程序进程进行管理时,可以选择下面举例的处理方式,即首先设置信号量n,将信号量n初始化为1,在第一次时只处理1个应用程序进程,排队的其他应用程序进程等待;在处理完该应用程序进程后,查看后续有m个排队的应用程序进程,如果m≤4,则信号量n设为m,即n=m,表示本次可以处理m个应用程序进程;如果m>4,则信号量n设为4,即n=4,表示本次可以处理4个应用程序进程。
如图3所示,为本发明数据解压装置的第三实施例中硬件框架部分的结构示意图。在本实施例中,硬件框架部分除了包括硬件调度模块2和片内多解压核3之外,还包括数据读取模块5和数据写入模块6。在本实施例中,片内多解压核3中的多个解压核具有共享的数据输入总线和数据输出总线,数据读取模块5与数据输入总线相连,可以从片外的内存(例如DDR2、DDR等)中读取待解压的数据,并分发给片内多解压核3中的多个单独的解压核(Gzip0~3)。数据写入模块6与数据输出总线相连,负责将解压结果写入所述内存中的解压核对应的地址空间。
硬件调度模块2在接收到解压命令后,为各个解压核分配解压任务,并且指示数据读取模块5和数据写入模块6分别进行待解压的数据的读取和解压结果的写入,然后根据解压核的解压状态判断解压是否完成,如果各个解压核均完成解压任务,则向驱动模块1发送中断。
在本实施例中,解压核并不需要考虑数据的交互以及与上层程序之间的接口,每个解压核与内存之间的数据交换都统一由数据读取模块5和数据写入模块6完成。这种硬件构架具有很好的移植特性,在各种可编程逻辑器件中均可以采用,而且还可以根据需要裁减或增加解压核的数量。在验证方面,由于控制通路限制在装置内部,因此验证比较方便。
在另一实施例中,每个解压核还可以设置输入和输出的先入先出(First Input First Output,简称FIFO)接口。每个解压核的输入数据和输出数据均使用FIFO接口与外部的总线隔离,从而隔离时钟域,并使数据接口更加清晰,而且这种数据接口可以降低模块间的耦合度。
在数据读取模块5对待解压的数据进行读取的过程中,可以采用轮询的方式分别从片外的内存(例如DDR2、DDR等)中读取待解压的数据,并通过数据输入总线分发给片内多解压核3中的多个单独的解压核。数据写入模块6也可以采用轮询的方式通过数据输出总线将解压结果写入片外的内存中的解压核对应的地址空间。
为了实现数据流的高效调度和处理,在本发明的数据解压装置中还可以增加直接内存访问(Direct Memory Access,简称DMA)控制器,如图4所示,为本发明数据解压装置的第四实施例中硬件框架部分的结构示意图。相比于前述的数据解压装置实施例,在本实施例中增加了DMA控制器7,该DMA控制器7与硬件调度模块2相连,负责将主机端(Host)存储器的待解压的数据转存到外部的内存中,并将内存中的解压核对应的地址空间中的解压结果转存到主机端(Host)存储器。
通过设置DMA控制器7,可以快速的对数据进行搬运,提高解压缩的处理效率。以待解压的数据被分发到解压核的过程为例,DMA控制器7可以根据硬件调度模块2的指示将待解压的数据从主机端的存储器中搬运(即转存)到片外的DDR2内存,再由数据读取模块5将DDR2内存中的待解压的数据读出,并分发给片内多解压核3中的多个单独的解压核。DMA控制器7具有较高的效率,且可以与数据读取模块5同步进行数据搬运,因此大大地提高了数据搬运的效率,整体上提高了解压缩的效率。
在前述的几个装置实施例中,解压核的实现可以采用已有的解压算法,也可以采用前文提到的Gzip解压算法,虽然Gzip解压算法涉及大量复杂的不定长位操作,存在效率问题,但本发明中通过片内多解压核以及合并解压请求等手段实现了线程级的并行处理方式,大幅度提高解压缩的处理带宽。
下面,本发明还提供了多个数据解压方法的实施例进行说明。
如图5所示,为本发明数据解压方法的第一实施例的流程示意图。在本实施例中,数据解压过程包括以下步骤:
步骤101、驱动模块将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令,并将该解压命令发送到硬件调度模块;
步骤102、硬件调度模块分析该解压命令,并为解压命令中的多个解压请求分别分配片内多解压核中的多个单独的解压核进行处理;
步骤103、在多个解压请求均处理完毕后,硬件调度模块发送中断及状态信息到驱动模块;
步骤104、驱动模块将解压结果返回给对应的所述多个应用程序进程。
在本实施例中,驱动模块会对多个并发的解压请求进行合并,硬件调度模块在接收到解压命令后,会为分析得到的多个并发的解压请求分配多个单独的解压核进行处理,这样就实现了发出解压请求的应用程序进程的并发执行,而且多个解压核同时进行解压操作,可以提高解压的带宽,提高数据的解压效率。
考虑到同时发出解压请求的应用程序进程可能会较多,为了实现应用程序进程并行处理和控制,可以通过图6的实施例来实现。如图6所示,为本发明数据解压方法的第二实施例的流程示意图。与上一实施例相比,本实施例中在步骤101之前,还包括:
步骤100a、对发出的多个解压请求的多个应用程序进程进行排队,并设置所述多个应用程序进程的处理状态;
步骤100b、所述驱动模块对所述进程队列处理模块中排队的多个进程进行处理。
在步骤104中,驱动模块在接收到中断后,唤醒被处理的多个应用程序进程,并且将解压结果返回给对应的所述多个应用程序进程。
以包括4个单独的解压核的片内多解压核为例,片内多解压核每次最多可以并行处理4个应用程序进程。因此可以设置最大进程处理数为4。驱动模块对排队的多个应用程序进程进行处理,其中每次选择处理的应用程序进程的数量不超过4,在该4个应用程序进程被处理的过程中,其他应用程序进程处于等待状态。当该4个应用程序进程均完成处理,硬件调度模块向驱动模块发出中断,驱动模块在接收到中断后,唤醒被处理的4个应用程序进程。通过这种方式,有效地减少了硬件中断处理的次数,有助于提高解压过程的效率。
在对发出解压请求的多个应用程序进程进行管理时,可以选择下面举例的处理方式,即首先设置信号量n,将信号量n初始化为1,在第一次时只处理1个应用程序进程,排队的其他应用程序进程等待;在处理完该应用程序进程后,查看后续有m个排队的应用程序进程,如果m≤4,则信号量n设为m,即n=m,表示本次可以处理m个应用程序进程;如果m>4,则信号量n设为4,即n=4,表示本次可以处理4个应用程序进程。
如图7所示,为本发明数据解压方法的第三实施例中硬件解压过程的流程示意图。在硬件调度模块为所述解压命令中的多个解压请求分别分配单独的解压核后,还包括以下步骤:
步骤201、数据读取模块从片外的内存中读取待解压的数据,并通过数据输入总线分发给所述片内多解压核中的多个单独的解压核;
步骤202、多个单独的解压核分别对分发的所述待解压数据进行解压缩操作,获得解压结果;
步骤203、数据写入模块通过数据输出总线将解压结果写入片外的内存中的与解压核对应的地址空间。
在本实施例中,由数据读取模块和数据写入模块统一完成每个解压核与内存之间的数据交换,解压核可以不需要考虑数据的交互以及与上层程序之间的接口。
在解压过程中,为了提高各个解压核的处理效率,确保每个解压核都处于工作状态,数据读取模块可以采用轮询的方式从片外的内存中读取待解压的数据,并通过数据输入总线分发给片内多解压核中的多个单独的解压核。同理,数据写入模块也可以采用轮询的方式通过数据输出总线将解压结果写入片外的内存中的解压核对应的地址空间。通过轮询方式,可以平衡每个解压核的负荷,减少总的解压时间。
在另一个方法实施例中,如果解压核配置了输入和输出的FIFO接口,则数据读取模块会将待解压的数据分发给片内多解压核中的多个单独的解压核对应的FIFO接口,而数据写入模块从解压核的FIFO接口读取解压结果,并通过数据输出总线将解压结果写入片外的内存中的解压核对应的地址空间。
为了进一步的提高数据调度的效率,本发明还可以通过DMA控制器对数据进行搬运,如图8所示,为本发明数据解压方法的第四实施例中硬件解压过程的流程示意图。与上一实施例相比,本实施例在步骤201之前还包括步骤200,即DMA控制器将主机端存储器的待解压的数据转存到内存中,即DMA控制器数据搬入过程,在步骤203之后还包括步骤204,即DMA控制器将内存中的解压核对应的地址空间中的解压结果转存到主机端存储器,即直接内存访问控制器数据搬出过程。
在另一实施例中,步骤200和步骤201之间可以不采用固定的时序关系,例如数据读取模块从片外的内存中读取待解压的数据与DMA控制器数据搬入过程可以是并行的。步骤203和步骤204之间也可以不采用固定的时序关系,例如数据写入模块将解压结果写入内存中的解压核对应的地址空间与DMA控制器数据搬出过程是并行的。
数据读取模块在将从内存读取的待解压的数据分发给片内多解压核中的多个单独的解压核之前,数据读取模块还需检查内存中与解压核对应的地址空间中是否存在数据,并判断解压核中的FIFO接口的剩余空间是否满足数据搬运的需要,如果均满足,则数据读取模块进行待解压的数据的分发。
在DMA控制器进行数据的搬运过程中,考虑到解压应用中输入数据量(即压缩数据)相对于输出数据量(解压缩数据)较小,且解压处理过程较长,为了充分利用总线带宽,DMA数据搬入过程在总线管理中相比于DMA控制器数据搬出过程可以具有较高优先级。举例来说,在DMA控制器搬运输入数据完毕之前,不能启动DMA控制器数据搬出,具体来说,DMA数据搬入请求不能被DMA搬出请求及其他解压核的数据请求打断,直到该次所有的数据均被搬入为止。
如果多个解压处理核都有DMA搬入请求,那么采用轮叫调度(也称round robin)的方式来处理,即均匀地为每个解压核搬入数据,使其都处于工作状态,提高数据处理效率。
对于解压数据的搬出过程,下面给出了一种异步发送模式的实例来进行说明,即当解压结果数据长度大于等于预设的DMA突发长度(例如4KB)或者是解压结果的最后一块数据(不足4KB)时,就发送数据搬出请求。只要DMA控制器不处于忙的状态,就接受该解压数据的搬出请求。如果有多个解压处理核都有数据搬出请求,那么也可以采用round robin的方式来处理,即均匀地为每个解压核搬出数据,防止数据长时间阻塞,影响解压处理效率。
在发送数据搬出请求的同时,该解压核的序号被记录在一个队列中,当每次数据搬出请求完成时,都要读取该队列的解压核序号,以便更新该解压核的状态信息,这样就完成了数据搬出的异步操作。
以4解压核的可编程逻辑器件构架为例,聚合解压带宽能达到单个解压核的3倍,此时瓶颈是外部PCI数据总线带宽,如果换成PCIE等更高速的外部数据总线,则能比单个解压核高4倍。用户可以根据需要灵活扩充解压核的个数,实现解压带宽的线性增长。
下面通过对4解压核架构的实施例的实验,进一步说明本发明所实现的性能比现有的软件解压带宽更高。
压缩比 | 软件的解压带宽(MB/s) | 本发明实施例的解压带宽(MB/s) |
23.67 | 218.3 | 300 |
27.94 | 213.8 | 286.8 |
34.48 | 164.3 | 254.8 |
35.22 | 224.7 | 266.3 |
34.67 | 160.7 | 254.5 |
21.17 | 241.1 | 306.1 |
通过上表可以看出,本发明4解压核实施例的解压性能比现有技术的软件解压的解压带宽要高20~60%,进而证明了本发明可以增加解压缩的带宽,提高解压缩的速度。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (14)
1.一种数据解压装置,包括驱动模块、硬件调度模块和片内多解压核,其中,
所述驱动模块,用于将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令,并将所述解压命令发送到所述硬件调度模块,以及将解压结果返回给对应的所述多个应用程序进程;
所述硬件调度模块,用于分析接收到的所述解压命令,为所述解压命令中的多个解压请求分别分配所述片内多解压核中的多个单独的解压核进行处理,以及在所述多个解压请求均处理完毕后,发送中断及解压核的状态信息到所述驱动模块;
所述片内多解压核,包括多个单独的解压核,用于执行解压处理。
2.根据权利要求1所述的数据解压装置,其中还包括:
进程队列处理模块,用于对发出多个解压请求的多个应用程序进程进行排队,并设置所述多个应用程序进程的处理状态;
所述驱动模块还用于对所述进程队列处理模块中排队的多个应用程序进程进行处理,并在接收到中断后,唤醒被处理的多个应用程序进程。
3.根据权利要求1所述的数据解压装置,其中所述片内多解压核具有共享的数据输入总线和数据输出总线,所述数据解压装置还包括:
数据读取模块,与所述数据输入总线相连,用于从片外的内存中读取待解压的数据,并分发给所述片内多解压核中的多个单独的解压核;
数据写入模块,与所述数据输出总线相连,用于将解压结果写入所述内存中的解压核对应的地址空间。
4.根据权利要求3所述的数据解压装置,其中所述片内多解压核中的每个解压核设有输入和输出的先入先出接口,分别与所述数据读取模块和数据写入模块相连。
5.根据权利要求3或4所述的数据解压装置,其中所述数据解压装置还包括:
直接内存访问控制器,与所述硬件调度模块相连,用于将主机端存储器的待解压的数据转存到所述内存中,并将所述内存中的解压核对应的地址空间中的解压结果转存到所述主机端存储器。
6.根据权利要求1所述的数据解压装置,其中所述数据解压装置由可编程逻辑器件实现,所述片内多解压核中的单独的解压核的数量根据所述可编程逻辑器件的容量进行配置。
7.一种数据解压方法,包括以下步骤:
驱动模块将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令,并将所述解压命令发送到硬件调度模块;
所述硬件调度模块分析所述解压命令,并为所述解压命令中的多个解压请求分别分配片内多解压核中的多个单独的解压核进行处理;
在所述多个解压请求均处理完毕后,所述硬件调度模块发送中断及解压核的状态信息到所述驱动模块;
所述驱动模块将解压结果返回给对应的所述多个应用程序进程。
8.根据权利要求7所述的数据解压方法,其中在所述驱动模块将从多个应用程序进程接收到的并发的多个解压请求合并为一个解压命令之前,还包括:
进程队列处理模块对发出的多个解压请求的多个应用程序进程进行排队,并设置所述多个应用程序进程的处理状态;
所述驱动模块对所述进程队列处理模块中排队的多个应用程序进程进行处理,并在接收到中断后,唤醒被处理的多个应用程序进程。
9.根据权利要求8所述的数据解压方法,其中还包括:设置最大进程处理数,在对所述进程队列处理模块中排队的多个进程进行处理时,被处理的多个进程不大于所述最大进程处理数。
10.根据权利要求7所述的数据解压方法,其中在所述硬件调度模块为所述解压命令中的多个解压请求分别分配单独的解压核后,还包括:
数据读取模块从片外的内存中读取待解压的数据,并通过数据输入总线分发给所述片内多解压核中的多个单独的解压核;
所述多个单独的解压核分别对分发的所述待解压的数据进行解压缩操作,获得解压结果;
数据写入模块通过数据输出总线将解压结果写入片外的内存中的与解压核对应的地址空间。
11.根据权利要求10所述的数据解压方法,其中所述数据读取模块采用轮询的方式从片外的内存中读取待解压的数据,并通过数据输入总线分发给所述片内多解压核中的多个单独的解压核,所述数据写入模块采用轮询的方式通过数据输出总线将解压结果写入片外的内存中的解压核对应的地址空间。
12.根据权利要求10所述的数据解压方法,其中在所述数据读取模块从片外的内存中读取待解压的数据时,还包括直接内存访问控制器将主机端存储器的待解压的数据转存到所述内存中的直接内存访问控制器数据搬入过程;在所述数据写入模块将解压结果写入所述内存中的解压核对应的地址空间时,还包括所述直接内存访问控制器将所述内存中的解压核对应的地址空间中的解压结果转存到所述主机端存储器的直接内存访问控制器数据搬出过程。
13.根据权利要求12所述的数据解压方法,其中所述数据读取模块从片外的内存中读取待解压的数据与所述直接内存访问控制器数据搬入过程是并行的,所述数据写入模块将解压结果写入所述内存中的解压核对应的地址空间与所述直接内存访问控制器数据搬出过程是并行的;所述数据读取模块在将从所述内存读取的待解压的数据分发给所述片内多解压核中的多个单独的解压核之前,还包括:所述数据读取模块检查所述内存中与所述解压核对应的地址空间中是否存在数据,并判断所述解压核中的先入先出接口的剩余空间是否满足数据搬运的需要,如果均满足,则所述数据读取模块进行待解压的数据的分发。
14.根据权利要求12所述的数据解压方法,其中所述直接内存访问控制器数据搬入过程在总线管理中相比于所述直接内存访问控制器数据搬出过程具有较高优先级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010165576.5A CN102236543B (zh) | 2010-05-07 | 2010-05-07 | 数据解压装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010165576.5A CN102236543B (zh) | 2010-05-07 | 2010-05-07 | 数据解压装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102236543A CN102236543A (zh) | 2011-11-09 |
CN102236543B true CN102236543B (zh) | 2015-07-22 |
Family
ID=44887221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010165576.5A Active CN102236543B (zh) | 2010-05-07 | 2010-05-07 | 数据解压装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102236543B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580495B (zh) * | 2015-01-21 | 2018-07-17 | 百度在线网络技术(北京)有限公司 | 网络请求处理方法和装置 |
CN107977233B (zh) * | 2016-10-19 | 2021-06-01 | 华为技术有限公司 | 内核镜像文件快速加载方法和装置 |
CN108536526B (zh) * | 2017-03-02 | 2022-09-13 | 腾讯科技(深圳)有限公司 | 一种基于可编程硬件的资源管理方法以及装置 |
CN107027036A (zh) * | 2017-05-12 | 2017-08-08 | 郑州云海信息技术有限公司 | 一种fpga异构加速平台的解压缩方法、装置及系统 |
CN111384965B (zh) * | 2018-12-28 | 2022-06-17 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN111384961B (zh) * | 2018-12-28 | 2022-07-26 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据压缩方法 |
CN112395234A (zh) * | 2019-08-16 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 一种请求处理方法及装置 |
CN113885949A (zh) * | 2021-10-22 | 2022-01-04 | 瑞芯微电子股份有限公司 | 一种快速开机方法及系统 |
CN114253694B (zh) * | 2022-02-25 | 2022-06-24 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
CN1561007A (zh) * | 2004-02-27 | 2005-01-05 | 中兴通讯股份有限公司 | 用于数据传输中数据压缩解压缩的装置和方法 |
CN1717675A (zh) * | 2002-11-26 | 2006-01-04 | 高通股份有限公司 | 使用多个编码器对多媒体压缩进行优化的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
-
2010
- 2010-05-07 CN CN201010165576.5A patent/CN102236543B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
CN1717675A (zh) * | 2002-11-26 | 2006-01-04 | 高通股份有限公司 | 使用多个编码器对多媒体压缩进行优化的系统和方法 |
CN1561007A (zh) * | 2004-02-27 | 2005-01-05 | 中兴通讯股份有限公司 | 用于数据传输中数据压缩解压缩的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102236543A (zh) | 2011-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102236543B (zh) | 数据解压装置及方法 | |
US11199996B2 (en) | Method of scheduling requests to banks in a flash controller | |
CN102298561A (zh) | 一种对存储设备进行多通道数据处理的方法、系统和装置 | |
CN102866971A (zh) | 传输数据的装置、系统及方法 | |
SK31194A3 (en) | Multi-media signal processor computer system | |
CN101833989A (zh) | 多接口固态硬盘及其处理方法和系统 | |
EP4083776A1 (en) | Systems, methods, devices, and apparatuses for adaptive near storage computation | |
CN102841870B (zh) | 基于高速串行总线的通用dma结构及预读方法 | |
CN102473078A (zh) | 用于从非易失性存储器读取数据的控制器 | |
CN115033188B (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
EP3859509A1 (en) | Latency and throughput centric reconfigurable storage device | |
CN101303685A (zh) | 可提升通用序列总线储存设备的读写数据速率的方法 | |
KR20210021202A (ko) | 직렬로 연결된 전자 장치들 사이의 레이턴시를 감소시키기 위한 컴퓨팅 시스템 | |
CN103226448A (zh) | 固态硬盘的驱动方法及装置 | |
US7600074B2 (en) | Controller of redundant arrays of independent disks and operation method thereof | |
CN115826872A (zh) | 完全硬件卸载的NVMe存储加速系统 | |
CN102541778A (zh) | 一种超高速超大容量存储装置及其实现方法 | |
CN102279728A (zh) | 数据存储设备及数据计算方法 | |
CN115994115B (zh) | 芯片控制方法、芯片组及电子设备 | |
CN117631974A (zh) | 跨越基于存储器的通信队列的多信道接口的存取请求重新排序 | |
CN101625625B (zh) | 信号中继装置及利用该装置访问外部存储器的方法 | |
CN106598483A (zh) | 一种面向异构内存的可重构内存管理系统 | |
CN112685335A (zh) | 数据存储系统 | |
CN108762682A (zh) | 一种线程模型 | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |