用于无损压缩硬件电路的存储器

文档序号:1861130 发布日期:2021-11-19 浏览:24次 >En<

阅读说明:本技术 用于无损压缩硬件电路的存储器 (Memory for lossless compression hardware circuit ) 是由 罗奥 雷燕婕 于 2021-04-15 设计创作,主要内容包括:本发明公开了一种用于无损压缩硬件电路的存储器,所述存储器用于存储已压缩数据,所述已压缩数据包含至少一个匹配字符串,所述存储器包括寄存器模块与静态随机存取存储器模块;所述寄存器模块用于存储所述已压缩数据的第一部分,所述第一部分包含的所述匹配字符串的分布密度大于或等于第一阈值;所述静态随机存取存储器模块用于存储所述已压缩数据的第二部分,所述第二部分包含的所述匹配字符串的分布密度小于所述第一阈值。本发明实施例通过组合寄存器模块和静态随机存取存储器模块来构建存储器,能够使用较小的电路面积实现较高的数据读取速率,并实现对硬件制造成本的控制。(The invention discloses a memory for lossless compression hardware circuit, which is used for storing compressed data, wherein the compressed data comprises at least one matching character string, and the memory comprises a register module and a static random access memory module; the register module is used for storing a first part of the compressed data, and the distribution density of the matching character strings contained in the first part is greater than or equal to a first threshold value; the static random access memory module is used for storing a second part of the compressed data, and the distribution density of the matching character strings contained in the second part is smaller than the first threshold value. The embodiment of the invention constructs the memory by combining the register module and the static random access memory module, can realize higher data reading speed by using smaller circuit area, and realizes the control of hardware manufacturing cost.)

用于无损压缩硬件电路的存储器

技术领域

本发明涉及存储器领域,更具体地,涉及一种用于无损压缩硬件电路的存储器。

背景技术

压缩方式GZIP是一种基于压缩算法LZ77和霍夫曼Huffman编码的无损压缩方式。压缩算法LZ77使用先行缓冲区和一个查找缓冲区实现,先行缓冲区中存储的是待压缩编码的字符串(称为目标字符串),查找缓冲区中存储的是已压缩编码的字符串。实现LZ77算法时,首先需要在查找缓冲区中寻找与目标字符串起始的若干字符相同的各个字符串(称为匹配字符串)。为了达到更好的压缩效率,我们希望匹配字符串与目标字符串有尽可能多的相同字符。因此,需要将该匹配字符串从查找缓冲区中读出,继续与目标字符串进行比较,以确定与目标字符串相同字符数最多的匹配字符串。当找到与目标字符串相同字符数最多的匹配字符串之后,再对目标字符串进行压缩编码。

由此可见,在查找缓冲区中读取匹配字符串的速率将会影响到整体的压缩速率。因此,查找缓冲区的读写速率制约了压缩速率的提升。

发明内容

(一)要解决的技术问题

为解决现有技术中应用于无损压缩技术领域中的存储器不能满足LZ77算法对端口读取速率的要求,以及无法兼顾对硬件电路面积的影响和成本的控制等问题,本发明提出了一种用于无损压缩硬件电路的存储器。

(二)技术方案

本发明提出了一种用于无损压缩硬件电路的存储器,存储器用于存储已压缩数据,已压缩数据包含至少一个匹配字符串,存储器包括寄存器模块与静态随机存取存储器(Static Random Access Memory,SRAM)模块;寄存器模块用于存储已压缩数据的第一部分,第一部分包含的匹配字符串的分布密度大于或等于第一阈值;SRAM模块用于存储已压缩数据的第二部分,第二部分包含的匹配字符串的分布密度小于第一阈值。

可选地,寄存器模块包括M个寄存器子块,寄存器子块具有第一数量的第一端口,其中通过第一端口一次能够读取一个匹配字符串,第一数量等于欲从寄存器子块读取的匹配字符串的个数,M为正整数。

可选地,寄存器子块的容量大于或等于1K。

可选地,当M等于2时,寄存器模块包括第一寄存器子块与第二寄存器子块,第一寄存器子块的容量为1K,且第一寄存器子块具有32个第一端口;第二寄存器子块的容量为2K,且第二寄存器子块具有16个第一端口。

可选地,SRAM模块包括N个SRAM子块,SRAM子块具有第二数量的第二端口,其中通过相邻的两个第二端口一次能够读取一个匹配字符串,第二数量等于欲从SRAM子块读取的匹配字符串的个数的两倍,N为正整数。

可选地,SRAM子块包括第二数量的SRAM颗粒,并且SRAM颗粒的容量大于或等于0.5K。

可选地,SRAM模块包括L个SRAM第一子块与L个SRAM第一子块的复制份,其中,L个SRAM第一子块中的每个SRAM第一子块具有一个复制份,SRAM第一子块用于存储匹配字符串的分布密度大于或等于第二阈值并且小于第一阈值的数据,复制份用于存储与被复制的SRAM第一子块相同的数据,L为正整数;复制份具有第三数量的第二端口,被复制的SRAM第一子块具有第四数量的第二端口,其中通过相邻的两个第二端口一次能够读取一个匹配字符串,第三数量与第四数量的总和等于欲从SRAM第一子块读取的匹配字符串的个数的两倍。

可选地,SRAM第一子块的复制份包括第三数量的SRAM颗粒,SRAM第一子块包括第四数量的SRAM颗粒,并且SRAM颗粒的容量大于或等于0.5K。

可选地,SRAM模块还包括Q个SRAM第二子块,SRAM第二子块用于存储匹配字符串的分布密度小于第二阈值的数据,SRAM第二子块具有第五数量的第二端口,其中通过相邻的两个第二端口一次能够读取一个匹配字符串,第五数量等于欲从SRAM第二子块读取的匹配字符串的个数的两倍,Q为正整数。

可选地,SRAM第二子块包括第五数量的SRAM颗粒,并且SRAM颗粒的容量大于或等于0.5K。

(三)有益效果

本发明提出一种用于无损压缩硬件电路的存储器,根据已压缩数据中匹配字符串的分布特点,通过组合寄存器模块和SRAM模块来构建存储器。其中,寄存器模块用于存储包含匹配字符串分布密度大于或等于第一阈值的已压缩数据,SRAM模块用于存储包含匹配字符串分布密度小于第一阈值的已压缩数据,以满足LZ77压缩算法在查找缓冲区的不同存储区间数据读取组数不同的需求,进而提高在无损压缩过程中的数据读写效率与数据压缩速度。此外,根据本发明提出的存储器,能够使用较小的电路面积实现较高的数据读取速率,进而减小硬件制造成本。

附图说明

图1是查找缓冲区中匹配字符串的分布示意图;

图2是本发明一实施例中用于无损压缩硬件电路的存储器结构示意图;

图3是本发明一实施例中匹配字符串的数量分布示意图;

图4是本发明一实施例中寄存器模块的结构示意图;

图5是本发明另一实施例中匹配字符串的数量分布示意图;

图6是本发明一实施例中SRAM模块的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

在实施基于压缩算法LZ77的无损数据压缩过程中,发明人发现在已压缩的数据中匹配字符串的分布有其特点:对于需要压缩编码的目标字符串而言,在查找缓冲区中与其越接近的位置越容易找到匹配字符串。

例如,如图1查找缓冲区中匹配字符串的分布示意图所示,以目标字符串为原点,横轴表示查找缓冲区中存储位置与目标字符串的相对距离,纵轴表示匹配字符串的分布比例。当查找缓冲区存储容量为31K时,匹配字符串在不同单位存储区间的分布比例不同,即查找缓冲区中的匹配字符串分布密度不同。其中,查找缓冲区中可以划分多个等大小的单位存储区间,每个单位存储区间包含的匹配字符串的数量称为匹配字符串的分布密度。因此单位时间内需要从查找缓冲区的不同存储空间中读取的匹配字符串组数不同,而传统压缩方式GZIP硬件电路中针对LZ77算法的存储器往往不能很好的适应LZ77算法特点。传统的存储器使用SRAM搭建,通常只支持2个端口,不能满足多端口读取数据的需求,数据读取效率较低。如果使用寄存器搭建存储器,能够满足多端口读取数据的需求,但是硬件电路面积较大。因此,现有技术中应用于无损压缩技术领域中的存储器不能满足LZ77算法对端口读取速率的要求,同时无法兼顾对硬件电路面积的影响和成本的控制等问题。

为解决上述问题,本发明提出一种新的存储器结构,用于存储已压缩数据,进而实现前述查找缓冲区的数据存取功能。如图2本发明一实施例中用于无损压缩硬件电路的存储器结构示意图所示,根据已压缩数据中匹配字符串的分布特点,本发明提出的存储器201通过组合寄存器模块210和SRAM模块220来构建存储器。其中,寄存器模块210用于存储包含匹配字符串分布密度大于或等于第一阈值的已压缩数据,SRAM模块220用于存储包含匹配字符串分布密度小于第一阈值的已压缩数据。应理解的是,已压缩数据中单位数据量包含的匹配字符串的数量称为匹配字符串的分布密度。还应理解的是,对存储器内已压缩数据的划分(即第一阈值的确定)需要根据压缩数据中匹配字符串的统计特性和存储器的容量来确定。

寄存器模块包括可以实现寄存器功能的基本模块,SRAM模块包括可以通过晶体管进行数据存储的模块。在本发明的实施例中,寄存器模块和SRAM模块均可以实现对存储器中已压缩数据的读写操作,以完成对存储器中已压缩数据的存储和数据读写。其中,寄存器模块可以实现数据端口的高读写速率;SRAM模块可以在存储器容量较大的情况下,保证单位存储容量的SRAM存储器面积较小。例如,在本发明实施例中,在将先行缓冲区内待压缩的字符串(即目标字符串)进行数据压缩过程中,可以根据存储器中与目标字符串起始3个或多个字符相同的各个字符串(即匹配字符串)所在的存储地址,将各个目标字符串匹配的匹配字符串分别从相应存储地址读取出来,以便于获得相同字符数量最多的匹配字符串。

根据上述本发明实施例的技术方案,通过寄存器模块与SRAM模块的组合来满足LZ77压缩算法在查找缓冲区的不同存储区间数据读取组数不同的需求,能够提高在无损压缩过程中的数据读写效率与数据压缩速度。

根据存储器中已压缩数据的存储位置与待压缩的目标字符串的距离关系,将存储器划分为多个存储子区间,以便于对存储器的已压缩数据进行分区间存储。下面结合图3详细介绍匹配字符串在本发明一个实施例的存储器的各个部分中的分布密度以及确定第一阈值的方法。

图3是本发明一实施例中匹配字符串的数量分布示意图。如图3所示,在存储器中存储位置与先行缓冲区中目标字符串位置的相对距离(下述简称为相对距离)为横轴,该相对距离对应的匹配字符串数量为纵轴。其中,a和b为正数,且与查找缓冲区的容量大小相关。由图3可以看出,在相对距离小于或等于2aK的单位存储区间内匹配分布字符串的数量要比相对距离大于2aK的单位存储区间内匹配分布字符串的数量明显大的多,即在相对距离为2aK的存储位置上,匹配字符串的分布密度出现骤减。此时,我们把出现骤减的位置对应的相对距离称为第一距离,第一距离对应的匹配字符串的分布密度称为第一阈值。结合图3可知,此时第一距离为2aK,该第一距离对应的匹配字符串的分布密度为第一阈值。确定第一阈值后,可以将存储器内的已压缩数据分为其分布密度大于或等于第一阈值的第一部分,其分布密度小于第一阈值的第二部分。此时,由寄存器搭建的存储器(即寄存器模块)存储该第一部分的已压缩数据,由SRAM搭建的存储器(即SRAM模块)存储该第二部分的已压缩数据。

通过组合寄存器模块和SRAM模块来构建存储器。其中,寄存器模块用于存储包含匹配字符串分布密度大于或等于第一阈值的已压缩数据,以满足LZ77压缩算法在查找缓冲区的不同存储区间数据读取组数不同的需求。SRAM模块用于存储包含匹配字符串分布密度小于第一阈值的已压缩数据,能够使用较小的电路面积实现较高的数据读取速率,而且能够实现对硬件制造成本的控制。

在本发明的一个实施例中,寄存器模块包括M个寄存器子块,寄存器子块具有第一数量的第一端口,其中,通过一个第一端口一次能够读取一个匹配字符串,第一数量等于欲从寄存器子块读取的匹配字符串的个数,M为正整数。其中,根据已压缩数据中匹配字符串的统计特性可以大致预测该寄存器子块中匹配字符串的数量,而欲从该寄存器子块读取的匹配字符串的个数约等于该寄存器子块中匹配字符串的数量。例如,在实施本发明的技术方案时,可以根据以往对匹配字符串的分布密度的统计经验,预测并设置第一数量的取值,以使其大致等于统计经验揭示的该寄存器子块中存储的匹配字符串的数量。

具体地,在本发明的一个实施例中,若将查找缓冲区的已压缩数据按照第一阈值为界划分为两个部分时,将具有第一数量的第一端口的寄存器搭建为寄存器模块,该寄存器模块用于存储已压缩数据的第一部分。当采用M个寄存器子块构建寄存器模块来存储第一部分的已压缩数据时,该寄存器子块具有第一数量的第一端口。其中,通过第一端口一次能够读取一个匹配字符串,且第一数量等于欲从寄存器子块读取的匹配字符串的个数。也就是相当于为每组匹配字符串对应设置一个端口,因而能够大大提高数据读写效率。第一寄存器子块410在本发明的一个实施例中,寄存器子块的容量大于或等于1K。如表格1本发明实施例中寄存器容量R、寄存器端口数量P以及寄存器面积S的关系所示,寄存器面积S、寄存器容量R与寄存器端口数量P呈正相关关系。结合匹配字符串的分布特性,当寄存器子块的容量大于或等于1K时,可以使得各个寄存器子块的端口数量更好地应对字符串分布的波动性,提升存储器整体的读取效率。

表格1

图4是本发明一实施例中寄存器模块的结构示意图。如图4所示,在本发明的一个实施例中,当M等于2时,寄存器模块包括第一寄存器子块410与第二寄存器子块420。第一寄存器子块410的容量为1K,且第一寄存器子块410具有32个第一端口。第二寄存器子块420的容量为2K,且第二寄存器子块420具有16个第一端口。具体地,在本发明的实施例中,第一距离为3K,第一阈值为6组/K,寄存器模块搭建如下:

在距离目标字符串0-1K的存储子区间,匹配字符串在该区间的分布密度约为32组/K,该存储子区间一个周期需要读取32组匹配字符,即需要为该存储子区间设置至少32个端口。根据表格1所示的寄存器面积S与寄存器容量R以及寄存器端口数量P的关系,为了使该存储器搭建面积S尽可能小,同时又满足端口数量P的要求,采用R=1K,P=32的第一寄存器子块410搭建。相应地,在距离目标字符串1-3K的存储子区间,匹配字符串在该区间的分布密度约为6组/K,该存储子区间一个周期需要读取12组匹配字符,即需要为该存储子区间设置至少12个端口,因此采用R=2,P=16的第二寄存器子块420搭建。通过组合容量为1K、端口数量为32个的第一寄存器子块与容量为2K、端口数量为16个的第二寄存器子块来构建寄存器模块,以满足LZ77压缩算法在不同存储区间数据读取组数不同的需求。

在本发明的一个实施例中,SRAM模块包括N个SRAM子块,SRAM子块具有第二数量的第二端口,其中通过相邻的两个第二端口一次能够读取一个匹配字符串,第二数量等于欲从SRAM子块读取的匹配字符串的个数的两倍,N为正整数。具体地,在本发明的一个实施例中,若将查找缓冲区的已压缩数据按照上述第一阈值为界划分为两个部分时,SRAM模块用于存储已压缩数据的第二部分,其中,SRAM模块由SRAM子块搭建,SRAM子块具有第二数量的第二端口。需要说明的是,匹配字符串起始的3个或多个字符可以不是位于SRAM子块读出的已压缩数据的始端,此时最长匹配字符串可以跨越两块相邻SRAM子块的存储空间。为了顺利读出最长匹配字符串,可以为每组匹配字符串设置相邻的两个第二端口进行读取。此时,SRAM子块第二端口的数量(即第二数量)等于欲从SRAM子块读取的匹配字符串的个数的两倍。通过组合N个SRAM子块来构建存储器中的SRAM模块,能够使用较小的电路面积实现对第二部分已压缩数据的读取需求,降低硬件制造成本。

在本发明的一个实施例中,SRAM子块包括第二数量的SRAM颗粒,SRAM颗粒是构成SRAM子块的最小单位。考虑到硬件面积的大小,SRAM颗粒的容量大于或等于0.5K。其中,每个SRAM颗粒包含一个第二端口,SRAM子块中SRAM颗粒的数量与SRAM子块第二端口的数量(即第二数量)相等。

在本发明的一个实施例中,SRAM模块包括L个SRAM第一子块与L个SRAM第一子块的复制份。其中,L个SRAM第一子块中的每个SRAM第一子块具有一个复制份。SRAM第一子块用于存储匹配字符串的分布密度大于或等于第二阈值并且小于第一阈值的数据。复制份用于存储与被复制的SRAM第一子块相同的数据,L为正整数。复制份具有第三数量的第二端口,被复制的SRAM第一子块具有第四数量的第二端口。其中通过相邻的两个第二端口一次能够读取一个匹配字符串,第三数量与第四数量的总和等于欲从SRAM第一子块读取的匹配字符串的个数的两倍。

当已压缩数据的第二部分需要的存储空间较大时,将每个SRAM颗粒的容量设置为0.5K则不能满足对已压缩数据的第二部分的读取要求。此时,可以将小于第一阈值的第二部分作进一步划分。划分方法与依据第一阈值将已压缩数据划分为第一部分与第二部分的方法类似。图5是本发明另一实施例中匹配字符串的分布示意图。

如图5所示,在相对距离为6aK的存储位置对应的匹配字符串的分布密度骤减,此时相对距离为6aK的存储位置称为第二距离。第二距离对应的匹配字符串的分布密度为第二阈值。确定第二阈值后,将已压缩数据的第二部分划分为A部分和B部分,A部分包含匹配字符串的分布密度大于等于第二阈值并且小于第一阈值,B部分包含匹配字符串的分布密度小于第二阈值。A部分可以使用SRAM第一子块配合SRAM第一子块的复制份(下述简称复制份)的形式进行搭建,复制份存储的数据与被复制的SRAM第一子块存储的数据相同。复制份具有第三数量的第二端口,被复制的SRAM第一子块具有第四数量的第二端口。考虑最长匹配字符串跨越两块相邻SRAM子块的存储空间,为每组匹配字符串设置相邻的两个第二端口进行读取。因此,复制份与被复制SRAM第一子块的总端口数即第三数量与第四数量的总和等于欲从所述静态随机存取存储器第一子块读取的所述匹配字符串的个数的两倍。多个复制份中可以具有重复的已压缩数据,而且复制份的份数没有限制,当复制份的数量为多个时,多个复制份的第二端口数量总和为第三数量。

在本发明的一个实施例中,第一距离为3K,第一阈值为6组/K,第二距离为16K,第二阈值为2组/K,已压缩数据A部分包含匹配字符串的分布密度大于等于2组/K并且小于6组/K。存储A部分的SRAM模块由L个SRAM第一子块与复制份搭建,此时L等于2。图6是本发明一实施例中SRAM模块的结构示意图。如图6所示,SRAM模块包括SRAM0第一子块610和3个SRAM0第一子块610的复制份(即,复制份A、复制份B和复制份C),以及SRAM1第一子块620和1个SRAM1第一子块620的复制份(即复制份a)。

这种情况下,在距离目标字符串3-8K的存储子区间,已压缩数据的匹配字符串在该存储子区间的分布密度约为4组/K,该存储子区间一个周期需要读取20组匹配字符。为满足匹配字符串的读取要求,该存储子区间采用容量为5K的SRAM0第一子块实现,其中,SRAM0第一子块610的第二端口数量(即第四数量)为10个。同时复制3组SRAM0第一子块作为复制份A611、复制份B612、复制份C613,3个复制份的第二端口数量(即第三数量)为30个。相邻的两个第二端口一次能够读取一个所述匹配字符串。所以,当第三数量与第四数量的总和为40个时,满足一个周期需要读取20组匹配字符串的需求。

在距离目标字符串8-16K的存储子区间,已压缩数据的匹配字符串在该存储子区间的分布密度约为2组/K,该存储子区间一个周期需要读取16组匹配字符。为满足匹配字符串的读取要求,该存储子区间采用容量为8K的SRAM1第一子块620实现。其中,SRAM1第一子块620的第二端口数量(即第四数量)为16个。同时复制1组SRAM1第一子块作为复制份a621,该复制份的第二端口数量(即第三数量)为16个。相邻的两个第二端口一次能够读取一个所述匹配字符串。所以,当第三数量与第四数量的总和为32个时,满足一个周期需要读取16组匹配字符串的需求。

通过以上搭建SRAM模块的实施例可以看出,能够使用较小的电路面积实现较高的数据读取速率,实现对硬件制造成本的控制。

在本发明的一个实施例中,SRAM第一子块的复制份包括第三数量的SRAM颗粒,SRAM第一子块包括第四数量的SRAM颗粒,并且SRAM颗粒的容量大于或等于0.5K。其中,每个SRAM颗粒包含一个第二端口,SRAM第一子块中SRAM颗粒的数量与SRAM第一子块第二端口的数量(即第四数量)相等,SRAM第一子块的复制份中SRAM颗粒的数量与SRAM第一子块的复制份中第二端口数量(即第三数量)相等。

在本发明的一个实施例中,SRAM模块还包括Q个SRAM第二子块,SRAM第二子块用于存储匹配字符串的分布密度小于第二阈值的数据,SRAM第二子块具有第五数量的第二端口,其中通过相邻的两个第二端口一次能够读取一个匹配字符串,第五数量等于欲从SRAM第二子块读取的匹配字符串的个数的两倍,Q为正整数。

具体地,在本发明的实施例中,第二距离为16K,第二阈值为2组/K,已压缩数据B部分包含匹配字符串的分布密度小于2组/K。存储B部分的SRAM模块由Q个SRAM第二子块搭建,此时Q等于1。在距离目标字符串16-32K的存储子区间,已压缩数据的匹配字符串在该存储子区间的分布密度约为0.5组/K,该存储子区间一个周期需要读取8组匹配字符。为满足匹配字符串的读取要求,该存储子区间采用容量为16K的SRAM第二子块710实现,SRAM第二子块的第二端口数量(即第五数量)为16个。相邻的两个所述第二端口一次能够读取一个所述匹配字符串,当第五数量的总和为16个时,满足一个周期需要读取8组匹配字符串的需求。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:日志处理方法、电子设备和计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!