CN107925420A - 用于经优化压缩比的异构压缩架构 - Google Patents
用于经优化压缩比的异构压缩架构 Download PDFInfo
- Publication number
- CN107925420A CN107925420A CN201680049229.1A CN201680049229A CN107925420A CN 107925420 A CN107925420 A CN 107925420A CN 201680049229 A CN201680049229 A CN 201680049229A CN 107925420 A CN107925420 A CN 107925420A
- Authority
- CN
- China
- Prior art keywords
- byte
- token
- stream
- symbol
- node
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种处理设备包括存储设备和处理器,所述存储设备用于存储数据,所述处理器用于:接收令牌流,所述令牌流包括基于包括多个字节的字节流而生成的多个令牌;基于所述令牌流生成包括多个字节和多条边的简图;基于所述简图来标识在与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径;以及对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
Description
技术领域
本公开的实施例总体上涉及数据压缩,并且更具体地涉及一种用于实现极限压缩比的异构数据压缩架构。
背景技术
数据压缩系统和方法将输入数据转换为压缩格式以减小数据大小,从而实现高效的存储和传输。输入数据可以包含字节的字节的流(称为字节流)。字节流可以被组织为一系列数据块。每个数据块包括按顺序次序安排的数据字节。标准数据压缩方法可以包括LZ77串匹配器和霍夫曼(Huffman)编码器的组合,以产生压缩格式的输入数据。
附图说明
从以下给出的详细描述以及本公开的各种实施例的附图中,将更全面地理解本公开。然而,所述附图不应被认为是将本公开限制于具体实施例,而是仅用于解释和理解。
图1展示了根据本公开的实施例的一种用于执行数据压缩的处理设备,所述处理设备包括处理器。
图2展示了根据本公开的实施例的一种用于执行数据压缩的异构系统,所述异构系统包括处理器和硬件处理引擎。
图3展示了根据本公开的实施例的成本简图的示例性部分。
图4是根据本公开的实施例的一种用于执行数据压缩的方法的框图。
图5A是框图,展示了用于包括异构核的处理器的微架构,本公开的一个实施例可以用于所述异构核中。
图5B是框图,展示了根据本公开的至少一个实施例实现的有序流水线和寄存器重命名阶段、乱序发出/执行流水线。
图6展示了根据本公开的一个实施例的用于包括逻辑的处理器的微架构的框图。
图7是框图,展示了本公开的实施例可以用于其中的系统。
图8是本公开的实施例可以在其中操作的系统的框图。
图9是本公开的实施例可以在其中操作的系统的框图。
图10是根据本公开的实施例的片上系统(SoC)的框图。
图11是根据本公开的SoC设计的实施例的框图。
图12展示了计算机系统的一个实施例的框图。
具体实施方式
以硬件或软件实现的LZ77串匹配器用对早前存在于未压缩数据流中的数据的单个副本的引用来替换重复出现的数据。在一些实现方式中,LZ77串匹配器标识字节流中重复的字节子串,并且用向后引用来替换所标识的重复子串。字节子串包括在字节的流(称为字节流(byte stream))中的两个或更多个连续的字节。如果两个字节子串相同,则这两个子串重复或匹配。向后引用可以包括所标识的重复子串的长度和已标识的子串与先前匹配的子串之间的字节距离。可以以子串中的字节数为单位测量子串的长度,并且可以以字节流中两个匹配子串的相应字节位置之间的字节数为单位测量字节距离。如果LZ77串匹配器无法标识从字节位置开始的重复子串,则数据字节在输出流中用文字字节表示。因此,LZ77串匹配器将输入字节流转换为包括一系列可变长度令牌的令牌流,使得每个令牌可以存储具有子串长度或文字字节的重复字节子串的向后引用。因为向后引用消除了重复的子串的出现,所以令牌流中令牌的数量小于相应字节流中的字节数。然后,诸如霍夫曼编码器之类的可变长度编码器可以对一系列令牌进行编码并将输入数据转换为压缩数据格式。
因为由LZ77串匹配器生成的令牌流中的令牌具有可变长度,所以由可变长度编码器(例如“霍夫曼编码器”)对这些令牌进行编码所使用的位(用于编码的位数也被称为成本)不仅取决于由LZ77串匹配器标识的令牌的数量,而且还取决于对每个令牌进行编码所使用的位数。因此,由LZ77串匹配器生成的较短的令牌流可能不会导致更好的压缩数据输出,因为在较短的令牌流中可能需要更多的位来对每个令牌进行编码。
LZ77串匹配器可以在不同级别的复杂度下执行,这取决于LZ77串匹配器搜索的最大串长度。例如,LZ77串匹配器的串匹配级别可以在从1级到9级的范围内,而1级LZ77串匹配器搜索最高达较小串长度(例如,四字节长度)的子串匹配,并且9级LZ77串匹配器搜索最高达大串长度(例如,十三个字节)的子串匹配。LZ77串匹配器所处的级别越高,所需的处理资源就越多。
可以利用“惰性匹配(lazy matching)”方法来改善对子串匹配的搜索。在“惰性匹配”中,在标识当前字节的最长子串匹配之后并且子串之后是字节流中的文字字节,“惰性”LZ77串匹配器查找字节流中当前字节之后的下一个字节,以判定对于下一个字节是否存在较长子串匹配。如果存在较长匹配,则“惰性”LZ77串匹配器不会针对当前字节生成向后引用令牌,以支持下一个字节。“惰性”LZ77串匹配器使用从与当前字节相邻的字节中导出的试探法来选择令牌,并且因此不考虑字节流的全局特性。因此,当前LZ77串匹配器无法可靠地为输入数据产生最好的数据压缩,因为它们没有考虑对字节流进行编码所需的所有位。
取代基于当前字节周围的局部特性来对匹配字节子串做出选择,本公开的实施例基于对输入数据进行编码的全部位数的测量做出选择。为此,本公开的实施例针对输入字节流中的每个字节标识匹配字节子串(如最长匹配字节子串),并且针对字节流中的每个字节生成令牌。实施例将与霍夫曼编码器相关联的成本测量分配给令牌,而成本测量可以是测量对与令牌相关联的符号进行编码所采用的位数的成本函数。然后,考虑多种可能的令牌组合,根据某些成本标准选择一组最优的令牌。
图1展示了根据本公开的实施例的一种用于执行数据压缩的处理设备100,所述处理设备包括处理器。处理设备100可以包括处理器102和存储设备104,所述存储设备能操作地耦合到处理器102。处理器102可以进一步包括一个或多个处理核(未示出),所述处理核可以被配置成执行数据压缩指令。存储设备104可以是用于以未压缩格式或以压缩格式存储数据的合适类型的存储设备。
在一个实施例中,处理器102可以接收有待转换成压缩格式的采用未压缩格式的输入数据。输入数据包括按照顺序次序安排的字节的流(或字节流)。因此,字节流中的每个字节可以由相对于参考字节(例如,字节流的第一字节)的字节位置来引用。所述字节位置表示到参考字节的字节数,并且可以根据距参考字节多少字节来测量。在一些实施例中,字节流中的字节可以被组织成数据块,每个数据块可以具有预定的大小(例如,数据块可以包含16K、32K或64K字节)。因此,字节流可以包括一定数量的字节数据块。
在一个实施例中,响应于接收包含字节流的输入数据,处理器102可以与令牌生成器106相关联,以针对字节流中的每个字节生成包括一个或多个令牌的令牌流。令牌生成器106可以是被配置成生成令牌流的硬件逻辑(称为功能处理单元)。如果存在匹配,则令牌可以包含针对匹配字节子串(如最长匹配子串)的向后引用,或者,如果不存在匹配,则令牌可以包含文字字节。与LZ77串匹配器相比,令牌生成器106对字节流中的每个字节执行子串匹配。处理器102可以进一步执行令牌选择器108,以根据某些全局成本标准来选择一组令牌。所选择的一组令牌是根据成本标准对字节流的最优表示。处理器102然后可以执行霍夫曼编码器110以对所选择的一组令牌进行编码并且产生压缩数据输出。
令牌生成器106执行计算以针对字节流中的每个字节搜索匹配字节子串。在一个实施例中,匹配字节子串是源自当前字节的最长字节子串,所述最长字节子串与源自当前字节之前的字节的先前字节子串相匹配。在一个实施例中,如图1所示,处理器102可以在处理器102上执行软件应用,以便执行令牌生成器106的操作。在另一实施例中,如图2所示,处理器102可以与硬件处理引擎112协同工作,所述硬件处理引擎以硬件方式实现令牌生成器106的那些操作。
图2展示了根据本公开的实施例的一种用于执行数据压缩的异构系统200,所述异构系统包括处理器102和硬件处理引擎112。在一个实施例中,异构系统200可以是片上系统(SoC),所述片上系统可以包括处理器102、存储设备104、以及硬件处理引擎112。处理器102和存储设备104可以是与图1所示相同或相似的设备。硬件处理引擎112可以包括逻辑电路,所述逻辑电路被制造成执行针对每个字节搜索匹配字节子串的功能、并且针对字节流中的每个字节生成包括一个或多个令牌的令牌流。在一个实施例中,硬件处理引擎112可以被安排在芯片组上,所述芯片组通信地耦合到处理器102的一个或多个套接字。因此,如图2所示,处理器102可以接收包括字节流的输入数据、并且将所述字节流发送到硬件处理引擎112,所述硬件处理引擎可以基于所述字节流来计算令牌流。硬件处理引擎112可以将所生成的令牌流存储在缓冲器(未示出)中,并且发送信号以告知处理器102令牌流已准备就绪。作为响应,处理器102可以从硬件处理引擎112中检索令牌流以供进一步处理。
以图2所示的硬件、或者以如图1所示的软件来实现,令牌生成器106可以接收输入数据的字节流并且生成相应的令牌流。在一个实施例中,针对字节流中的每个字节,令牌生成器106可以搜索源自当前字节并与源自字节流中在当前字节之前的字节的另一字节子串相匹配的最长字节子串。在一个实施例中,令牌生成器106可以在一定字节长度范围内搜索最长字节子串。例如,令牌生成器106可以在[3字节,13字节]的串长度范围内搜索先前的匹配字节子串。在另一实施例中,令牌生成器106可以搜索长度超过3字节的匹配字节子串。
令牌生成器106可以生成对应于所述字节的令牌,而所述令牌是包含用于存储与所述字节有关的信息的符号的数据对象。例如,符号可以是表示子串的长度或文字字节或文字字节的位。另一符号可以是表示到参考字节的字节距离的位。存储在与字节相对应的令牌中的信息可以取决于令牌生成器106是否已经成功地定位匹配字节子串。如果令牌生成器106无法针对当前字节标识先前的匹配字节子串,则令牌生成器106可以生成包含表示当前字节的文字字节的符号的令牌。然而,如果令牌生成器106针对当前字节标识了先前的匹配字节子串,则令牌生成器106可以生成包含第一符号和第二符号的令牌,所述第一符号表示所标识的字节子串的字节串长度(例如,以字节数为单位),所述第二符号表示匹配字节子串之间的字节距离。可以以这两个匹配字节子串的头部之间的字节数为单位来测量所述字节距离。在一个实施例中,所述令牌可以是采用<符号A,符号B>形式的3字节令牌,而符号A可以是一个字节长以表示文字字节(如果不存在匹配子串)或者匹配子串长度(如果存在匹配子串),并且符号B可以是两个字节长以表示到参考字节的字节距离(如果存在匹配子串)。
因此,字节流中的每个字节都与对应令牌相关联,并且所有的令牌形成用于字节流的令牌流。所述令牌流可以被存储在与硬件处理引擎112相关联的缓冲器中。处理器102可以从硬件处理引擎112中检索令牌流以供进一步处理。在一个实施例中,令牌生成器106可以仅存储包含匹配字节子串的令牌,而不存储用于文字字节的令牌。如果处理器102访问原始输入字节流,则处理器102可以生成那些包含来自原始字节流的文字字节的令牌、并且将所述令牌插入到令牌流中其恰当位置。以这种方式,可以减少在处理器102与硬件处理引擎106之间传输的数据量。
在接收到所生成的令牌流时,处理器102可以执行令牌选择器108以生成表示输入字节流的令牌子集。为此,令牌选择器108可以首先使用令牌流中的令牌生成简图,并且然后基于所述简图来选择令牌子集。在一个实施例中,所述简图可以包括通过多条边互连的多个节点。针对令牌流中的每个令牌,令牌选择器108可以在简图中生成相应的节点。针对每个节点,令牌选择器108生成以将所述节点链接到与令牌流中的下一个令牌相对应的随后节点的默认边。进一步地,如果所述令牌包含源自于先前字节的匹配字节子串的信息,则令牌选择器108可以生成将与当前字节的令牌相对应的节点链接到与先前字节的相应先前令牌相对应的另一节点的边。因此,简图中的每个节点可以与一条或多条边相关联。
在一个实施例中,令牌选择器108可以为简图中的每条边分配编码成本。所述编码成本是对与节点相关联的令牌进行编码所需的位数。因为在编码实际发生之前与每条边相关联的编码成本是未知的,所以令牌选择器108可以基于某些试探法来分配估计成本。
在一个实施例中,如果令牌被向后引用到另一令牌,则令牌可以包括第一符号(S1)和第二符号(S2),所述第一符号表示文字字节或者匹配子串的长度,所述第二符号表示字节距离。文字字节、子串长度、以及字节距离的值可以由符号与由编码方案指定的零个或更多个额外位一起表示。因此,对令牌进行编码的成本可以包括对符号(S1,S2)进行编码的成本加上所述零个或更多个额外位。可以根据编码方案的某些映射表来确定与符号相关联的额外位数。在霍夫曼编码方案下,符号(S1)表示文字字节而不需要任何额外位。根据将值映射到额外位的第一映射表,表示子串长度的值的符号(S1)可以与零个或更多个额外位相关联。例如,根据第一映射表,11的长度是由符号“265”表示而无需额外位,并且12的长度是由相同的符号“265”和一个额外位表示。类似地,根据第二映射表,表示字节距离的值的符号(S2)可以与零个或更多个额外位相关联。在一个实施例中,所述第二映射表可以将字节距离的值映射到最多达13个额外位。
与符号(S1,S2)相关联的额外位未被编码,并且可以根据映射表基于包含在令牌中的文字字节、子串长度、或字节距离来断言。然而,在进行霍夫曼编码之前,对这些符号(S1,S2)进行编码所使用的位的确切数量是未知的。在一个实施例中,令牌选择器108可以根据某些估计公式来估计对这些符号进行编码所使用的位数。例如,在一个实施例中,根据令牌所处的块来估计用于编码的位数。如前所述,可以根据字节(或令牌)的一系列数据块来组织字节流(或类似地,令牌流)。所述块的大小可以预先确定。例如,第一块可以包括16k字节(或令牌),并且每个随后块可以包括64k字节(或令牌)。对于表示令牌流的第一块中的子串长度的符号,假设最小子串长度为3,则长度3被分配3位估计。在第一块中,所分配的位数线性地增加到13位,最高达子串长度29。长于13的长度与13位持平。对于表示继第一块之后的块中的子串长度的符号,长度3也被分配3位估计。但是,对于长度43,所分配的位数线性地增加到13位,然后其在13位变平。进一步地,表示字节距离的所有符号都被分配5位估计。表示文字字节的符号可以在第一块中被分配8.5位的平均成本估计,并且在随后块中被分配9.5位的平均成本估计。如上文所提供的分配位估计是示例。还可以使用其他分配估计。
因此,可以为每条边分配指示用于使用由所述边连接的节点(或相应的令牌)来执行编码的所估计位(包括用于对令牌的符号进行编码的分配位估计以及与符号相关联的额外位)的成本。在一个实施例中,令牌选择器108可以使用合适的简图遍历方法(例如,广度优先遍历和深度优先遍历方法)来遍历简图以确定路径,所述路径包含从简图的第一端到简图的第二端链接节点的边。在一个实施例中,使用最低成本标准或最小数量的估计位来选择所确定的路径,以沿所述路径对符号进行编码。所述最低成本标准可以使用例如Dijkstra算法或Floyd-Warshall算法来确定在所述两端之间所有可能路径之中具有最低沿路径累积成本的路径。所述第一端和所述第二端可以对应于令牌流中的起始令牌或终止令牌。因此,令牌选择器108可以沿所确定的路径选择对应于节点的一组令牌,并且将所选择的一组令牌提供给霍夫曼编码器110以执行编码并且生成输出,所述输出是输入数据的压缩版本。
霍夫曼编码器110可以是被设计成对所选择的一组令牌(或其中存储的符号)进行编码的可变长度编码器的合适的实现方式。因为简图的第一次遍历是基于分配给边的估计成本,所以所选择的一组令牌可能不是最佳选择。在一个实施例中,在霍夫曼编码110之后,可以用由所述霍夫曼编码器110沿着所述路径对令牌中的符号进行编码所使用的实际位数来更新与沿着路径的边相关联的成本。令牌选择器108然后可以基于分配给简图中的边的更新后成本再次遍历所述简图,以确定所述简图中的第二路径。令牌选择器108然后可以选择沿着第二路径的第二组令牌并且霍夫曼编码器110提供第二遍编码,并且生成另一输出数据,所述另一输出数据是输入数据的另一压缩版本。
在一个实施例中,将第二输出数据的大小与第一输出数据的大小进行比较以判定是否需要另外迭代简图遍历和霍夫曼编码。在一个实施例中,如果第二输出与第一输出的大小差异与第一输出的大小的比率小于阈值(例如,10%),则停止迭代。否则,所述迭代可以继续,直到比达到终止阈值。
图3展示了根据本公开的实施例由令牌选择器生成的简图300的示例性部分。如图3所示,简图300可以包括与令牌流中的令牌位置56-61的部分相对应的部分(例如,如图3所示的节点56-61),所述部分进而对应于在底层字节流中的字节位置56-61。在霍夫曼编码之前,简图中的每条边可以被分配有用标签C1-C9表示的估计成本,而C1-C5表示用于对文字字节进行编码的成本,并且C6-C9表示用于对括子串长度和字节距离的令牌进行编码的成本。为了简单起见,标签C1-C9用于同时表示边和与边相关联的编码成本。某些节点(如节点57)可以与边(C1、C2)相关联,所述边仅连接到它们的相邻节点(节点56、58)。这些节点对应于仅包含文字字节的令牌,因为重复的子串在这些位置未被标识。其他节点可以与在其中已经找到一个或多个匹配子串的字节位置相关联。在本示例中,节点56与节点61具有5字节匹配,并且因此用边(C8)链接到节点61。可以从边(C8)推断出边(C7、C6),因为较长的匹配意味着在同一字节位置处有多个较短匹配。对于本示例,链接匹配节点(如C6-C9)的边具有最少三字节的长度。尽管未示出,但是来自简图的先前部分(如节点56之前的节点)的其他边也可以与这些节点链接,并且节点56-61也可以链接到超过节点61的节点。
合适的简图遍历算法可以被用来标识将简图的第一节点(例如,节点1)链接到简图的末端节点的路径。根据某些标准(如最低成本标准),所述路径可以被选择成经由与所选择的节点子集相关联的边穿过所述节点子集。简图遍历可以从节点1前进到末端节点,或者反之亦然。如果使用特殊虚拟节点作为节点1,则节点1可以分配有用于对文字字节进行编码的初始编码成本或零成本。遍历可以被看作是从起源(称为源节点)开始以确定目的地(称为目的地节点)的一系列步骤。源节点可以通过与所述源节点相关联的边链接到多个可能的目的地节点。可以从源节点到达的所有可能的目的地节点被赋予用于编码直到源节点的成本加上引导这些可能的目的地节点的边的成本。在遍历过程中,最低成本目的地节点可以在用于寻找下一个目的地节点的下一个步骤中成为新的源节点。因此,可以基于分配给简图中边的成本通过遍历所述简图来确定从节点1到末端节点的最低成本路径。
在一个实施例中,令牌生成器106不仅产生用于令牌中的字节流中的字节的最长匹配字节子串,而且还产生令牌中的其他类型的匹配。例如,令牌生成器106除了长度的标识最长匹配子串外还标识长度-1字节和/或长度-2字节等的最接近匹配。附加信息可以存储在提供给令牌选择器108的令牌中。令牌选择器108可以基于附加信息在简图中生成附加边,以改善压缩性能。
图4是根据本公开的实施例的一种用于执行数据压缩的方法400的框图。方法400可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件、或其组合。在一个实施例中,方法400可以部分地由如图1所示的处理设备102的处理逻辑来执行。
为了简化说明,方法400被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种次序和/或同时发生,并且可以与本文未提供和描述的其他动作一起发生。此外,对于实现根据所公开的主题的方法400,可以不执行所展示出的所有动作。此外,本领域技术人员将理解和意识到,可替代地,方法400可以经由状态图或事件表示为一系列相关状态。
参照图4,在402处,处理器可以接收包括从字节流生成的令牌的令牌流。在一个实施例中,可以已经由能操作地耦合到处理器的功能处理引擎基于由处理器接收到的字节流来计算所述令牌流。可替代地,可以由处理器基于所接收到的字节流通过执行软件应用来计算所述令牌流。令牌流中的每个令牌可以对应于字节流中的字节,并且每个令牌可以包含第一符号,如果第一字节子串与位于第一字节子串之前的第二字节子串相匹配,则所述第一符号包括第一字节子串的长度;或者如果第一字节子串不具有匹配的第二字节子串,则所述第一符号包括文字字节。所述令牌可以包含第二符号,所述第二符号包括第一字节子串与第二字节子串之间的字节距离。如果不存在匹配的第二字节子串,则字节距离为零。
在404处,响应于接收到令牌流,处理器可以生成包括节点和边的简图。所述简图中的每个节点可以对应于令牌流中的令牌。如果令牌包含指示令牌包含第一字节子串与第二匹配字节子串之间的信息的符号,则所述处理器可以生成用于将与于第一字节子串的起始字节相对应的第一令牌链接到与第二字节子串的起始字节相对应的第二令牌的边。所述处理器可以将编码成本与所述边相关联。所述编码成本是对与第一令牌相关联的符号进行编码需要多少位的估计。因此,简图的每条边与估计成本相关联。
在406处,所述处理器可以根据某些标准基于所述简图来标识在令牌流的开始令牌和与令牌流的最后令牌相关联的末端节点之间的路径。在一个实施例中,所述标准可以包括最低成本标准,所述最低成本标准选择最低沿路径总累积成本(或者对与节点相关联的符号进行编码所使用的位)的路径。所述路径可以经过对应于令牌子集的节点,所述令牌子集包括向后引用和文字字节,以充分表示输入字节流。
在408处,所述处理器可以对于所述路径上的节点相对应的所标识的令牌子集进行可变长度编码(例如霍夫曼编码),以生成作为输入数据的压缩版本的输出。
图5A是框图,展示了用于处理器500的微架构,所述处理器实现了根据本公开的一个实施例的包括异构核的处理设备。具体地,根据本公开的至少一个实施例,处理器500描述了待包含在处理器中的有序架构核和寄存器重命名逻辑、乱序发出/执行逻辑。
处理器500包括耦合到执行引擎单元550的前端单元530,并且所述执行引擎单元和前端单元都耦合到存储器单元570。处理器500可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又一选项,处理器500可以包括专用核,诸如,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器500可以是多核处理器或可以是多处理器系统的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,所述指令高速缓存单元被耦合到指令转换后备缓冲器(TLB)536,所述指令转换后备缓冲器被耦合到指令获取单元538,所述指令获取单元被耦合到解码单元540。解码单元540(也称为解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码器540可以使用各种不同的机制来实现。合适机制的示例包括但不限于:查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合到存储器单元570。解码单元540耦合到执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554的重命名/分配器单元552和一组一个或多个调度器单元556。(多个)调度器单元556表示任意数量的不同调度器,包括保留站(RS)、中央指令窗口等。(多个)调度器单元556被耦合到物理寄存器堆单元558。(多个)物理寄存器堆单元558各自表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点等、状态(例如,作为有待执行的下一指令的地址的指令指针)等。(多个)物理寄存器堆单元558被引退单元554重叠,所述引退单元用于展示可以实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来组,(多个)历史缓冲区,以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。
在一种实现方式中,处理器500可以与关于图1A描述的处理器102相同。
通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文所描述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元554和(多个)物理寄存器堆单元558被耦合到(多个)执行群集560。(多个)执行群集560包括一组一个或多个执行单元562和一组一个或多个存储器访问单元564。执行单元562可以执行各种运算(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行。
虽然一些实施例可以包括专用于具体功能或功能集合的若干执行单元,但是其他实施例可只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元556、(多个)物理寄存器堆单元558、以及(多个)执行集群560被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实现了其中只有所述流水线的执行集群具有(多个)存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发出/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元564耦合到存储器单元570,举几个示例,所述存储器单元可以包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、以及2级(L2)高速缓存单元576。在一些实施例中,DCU574也被称为第一级数据高速缓存(L1高速缓存)。DCU574可以处理多个未解决的高速缓存未命中并且继续为进入的存储和加载提供服务。DCU还支持保持高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括各自耦合到存储器单元570中的数据TLB单元572的加载单元、存储地址单元、以及存储数据单元。L2高速缓存单元576可以耦合到一个或多个其他级的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器580通过自动预测程序将要消耗哪个数据来推测性地将数据加载/预取到DCU 574。预取可以是指将存储在存储器层级的一个存储器位置(例如,较低级的高速缓存或存储器)中的数据传输到较高级的存储器位置,所述存储器位置在数据被处理器实际需要之前更接近(例如,产生较低的访问等待时间)处理器。更具体地,预取可以是指在处理器发出对正在返回的具体数据的需求之前,将数据从较低级的高速缓存/存储器中的一个提前检索到数据高速缓存和/或预取缓冲器。
处理器500可以支持一条或多条指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)。
应当理解,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如超线程化技术中的同步多线程化)。
然而在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。然而处理器的所示实施例还包括分开的指令和数据高速缓存单元和共享的L2高速缓存单元,但替代性实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
图5B是框图,展示了根据本公开的一些实施例由图5A的处理设备500实现的有序流水线和寄存器重命名阶段、乱序发出/执行流水线。图5B中的实线框展示了有序流水线,而虚线框展示了寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线500包括获取阶段502、长度解码阶段504、解码阶段506、分配阶段508、重命名阶段510、调度(也被称为分派或发出)阶段512、寄存器读取/存储器读取阶段514、执行阶段516、回写/存储器写入阶段518、异常处理阶段522以及提交阶段524。在一些实施例中,阶段502-524的排序可以与所示的不同,并且不限于图5B中所示的具体排序。
图6展示了根据本公开的一个实施例的用于包括混合核的处理器600的微架构的框图。在一些实施例中,可以实现根据一个实施例的指令来对具有字节、字、双字、四字等大小和数据类型(如单倍和双倍精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端601是处理器600的获取待执行的指令并将其准备于之后在处理器管线中使用的部分。
前端601可以包括若干个单元。在一个实施例中,指令预取器626从存储器获取指令并将它们馈送给指令解码器628,所述指令解码器进而对指令进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的称为“微指令”或“微运算”(也称为微op或uops)的一个或多个运算。在其他实施例中,根据一个实施例,解码器将指令解析为运算码和相应的数据以及被微架构用于执行运算的控制字段。在一个实施例中,跟踪高速缓存630采用经解码的uops并且将它们组合为程序有序序列或在uop队列634中跟踪用于执行。当跟踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成运算所需的uops。
一些指令被转换为单个微op,而其他指令需要若干个微ops来完成完整的运算。在一个实施例中,如果完成指令需要多于四个微ops,则解码器628访问微代码ROM 632以执行指令。对于一个实施例,指令可以被解码成用于在指令解码器628处理的少量的微ops。在另一实施例中,如果指令可以存储在微代码ROM 632中,需要若干微ops来完成运算。跟踪高速缓存630引用入口点可编程逻辑阵列(PLA),以判定用于从微代码ROM 632读取微代码序列的正确微指令指针以便根据一个实施例完成一个或多个指令。在微代码ROM 632完成用于指令的排序微ops之后,机器的前端601从跟踪高速缓存630重新获取微ops。
乱序执行引擎603是指令准备执行的地方。乱序执行逻辑具有许多缓冲器,用于使指令流平滑并重新排序,以在指令顺着流水线进行并被安排执行时优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在指令调度器:存储器调度器、快速调度器602、慢速/通用浮点调度器604和简单浮点调度器606前面,分配器还为两个uop队列(一个用于存储器运算,一个用于无存储器运算)之一中的每个uop分配条目。uop调度器602、604、606基于其依赖输入寄存器运算数源的准备状态以及uop完成其运算所需的执行资源的可用性来判定这些uop是否准备好执行。一个实施例的快速调度器602可以在主时钟周期的每一半上进行调度,而其他调度器可以仅在每个主处理器时钟周期调度一次。调度器仲裁分派端口以调度uops用于执行。
寄存器堆608、610位于执行块611中的调度器602、604、606与执行单元612、614、616、618、620、622、624之间。存在分开的寄存器堆608、610,分别用于整数运算和浮点运算。一种实施例的每个寄存器堆608、610还包括旁路网络,所述旁路网络可以绕过或转发尚未被写入到寄存器堆中的已完成结果到新的依赖uop。整数寄存器堆608和浮点寄存器堆610还能够与其他寄存器堆进行数据通信。对于一个实施例,整数寄存器堆608被分成两个分开的寄存器堆,一个寄存器堆用于数据的低次序32位,第二寄存器堆用于数据的高次序32位。一个实施例的浮点寄存器堆610具有128位宽的条目,因为浮点指令通常具有宽度为从64位至128位的操作数。
执行块611包含实际上在其中执行指令的执行单元612、614、616、618、620、622、624。这个部分包括寄存器堆608、610,所述寄存器堆存储微指令需要执行的整数和浮点数据运算数值。一个实施例的处理器600由多个执行单元组成:地址生成单元(AGU)612、AGU614、快速ALU 616、快速ALU 618、慢速ALU 620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD和SSE、或其他运算。一个实施例的浮点ALU622包括用于执行除法、平方根和剩余微ops的64位乘64位浮点除法器。对于本公开的实施例,涉及浮点值的指令可以用浮点硬件来处理。
在一个实施例中,ALU运算前往高速ALU执行单元616、618。一个实施例的快速ALU616、618可以以半个时钟周期的有效等待时间执行快速运算。对于一个实施例,大多数复杂整数运算前往慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型的运算的整数执行硬件,例如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储运算由AGU 612、614执行。对于一个实施例,在对64位数据运算数执行整数运算的上下文中描述了整数ALU 616、618、620。在替代性实施例中,ALU 616、618、620可以被实现为支持包括16、32、128、256等的各种数据位。类似地,可以实现浮点单元622、624以支持具有各种宽度的位的操作数范围。对于一个实施例,浮点单元622、624可以与SIMD和多媒体指令结合地对128位宽度的紧缩数据运算数进行运算。
在一个实施例中,uop调度器602、604、606在父加载完成执行之前分派不独立运算。在处理器600中推测性地调度和执行uops时,处理器600还包括用于处理存储器失误的逻辑。如果数据高速缓存中的数据加载失误,则可能存在流水线中飞行的已经因暂时不正确数据而离开调度器的不独立运算。重放机制跟踪并重新执行使用不正确数据的指令。仅仅不独立运算需要被重放,并且允许完成独立运算。处理器的一个实施例的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
根据本公开的实施例,处理器600还包括用于实现存储地址预测以便存储器消歧的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现存储地址预测以便存储器消歧的存储地址预测器(未示出)。
术语“寄存器”可以指代被用作指令的一部分以标识操作数的机载处理器存储位置。换言之,寄存器可以是从处理器外部(从程序员的角度来看)可用的寄存器。然而,实施例的寄存器不应限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实现,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于下面的讨论,寄存器被理解为设计成保持紧缩数据的数据寄存器,例如,用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽MMXTM寄存器(在某些情况下也称为‘mm’寄存器)。以整数和浮点形式可用的这些MMX寄存器可以用伴随SIMD和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保持这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要对这两种数据类型进行区分。在一个实施例中,整数和浮点包含在同一寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或同一寄存器中。
现在参照图7,示出了展示本公开的实施例可以用于其中的系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并且包括经由点对点互连750耦合的第一处理器770和第二处理器780。虽然仅以两个处理器770、780来示出,但应理解本公开的实施例的范围不限于此。在其他实施例中,给定处理器中可以存在一个或多个附加处理器。在一个实施例中,多处理器系统700可以实现本文所描述的混合核。
处理器770和780被示出为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用P-P接口电路778、788经由点对点(P-P)接口750交换信息。如图7所示,IMC 772和782将处理器耦合到对应存储器(即,存储器732和存储器734)上,所述存储器可以是主存储器的本地附接至对应处理器上的部分。
处理器770、780可以各自使用点对点接口电路776、794、786、798经由单独的P-P接口752、754来与芯片组790交换信息。芯片组790还可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的局部高速缓存信息可以被存储在所述共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,尽管本公开的范围不限于此。
如图7所示,不同I/O设备714可以连同总线桥接器718耦合到第一总线716,所述总线桥接器可以将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各个设备可以耦合到第二总线720,所述设备包括例如键盘和/或鼠标722、多个通信设备727、以及可以包括指令/代码数据730的存储单元728(如磁盘驱动器或者其他大容量存储设备)。进一步地,音频I/O 724可以耦合到第二总线720。注意到,其他架构是可能的。例如,替代图7的点对点体系结构,系统可以实现多点总线或其他这样的架构。
现在参照图8,示出了本公开的一个实施例可以在其中操作的系统800的框图。系统800可以包括耦合到图形存储控制器中枢(GMCH)820的一个或多个处理器810、815。图8中用虚线表示附加处理器815的可选特性。在一个实施例中,根据本公开的实施例,处理器810、815实现混合核。
每个处理器810、815可以是如上所述的电路、集成电路、处理器、和/或硅集成电路的某一版本。然而,应当注意的是,在处理器810、815中将不太可能存在集成图形逻辑和集成存储器控制单元。图8展示了GMCH 820可以耦合到存储器840,所述存储器可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 820可以是芯片组、或者芯片组的一部分。GMCH 820可以与处理器810、815通信,并且控制(多个)处理器810、815与存储器840之间的交互。GMCH 820还可以用作(多个)处理器810、815与系统800的其他元件之间的加速总线接口。对于至少一个实施例,GMCH820经由多点总线(如前端总线(FSB)895)与(多个)处理器810、815通信。
此外,GMCH 820耦合到显示器845(如平板显示器或触摸屏显示器)。GMCH 820可以包括集成图形加速器。GMCH 820进一步地耦合到输入/输出(I/O)控制器中枢(ICH)850,所述ICH可以用于将各种外围设备耦合到系统800。例如在图8的实施例中示出的是外部图形设备860,其可以是与另一个外围设备870一起耦合到ICH 850的独立图形设备。
可替代地,在系统800中还可以存在附加的或不同的处理器。例如,(多个)附加处理器815可以包括与处理器810相同的(多个)附加处理器、与处理器810异构或不对称的(多个)附加处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器。以一系列品质量度(包括体系结构、微体系结构、热、功耗特性等)为单位,处理器810、815之间存在多种差异。这些差异可以有效地将其本身表现为(多个)处理器810、815之间的不对称性和异构性。对于至少一个实施例,各处理器810、815可以驻留在相同管芯封装中。
现在参照图9,示出了本公开的实施例可以在其中操作的系统900的框图。图9展示了处理器970、980。在一个实施例中,处理器系统970、980可以实现上文所描述的混合核。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点对点(PP)接口978和988之间的点对点互连950而彼此相互通信。如图所示,处理器970、980各自通过对应P-P接口976至994和986至998经由点对点互连952和954与芯片组990通信。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元。CL 972、982可以包括I/O控制逻辑。如所描绘的,存储器932、934被耦合到CL 972、982,而且I/O设备914也被耦合到控制逻辑972、982。传统I/O设备915经由接口996耦合到芯片组990。
各实施例可以采用许多不同的系统类型来实现。图10是根据本公开的实施例的SoC 1000的框图。虚线框是关于更先进的SoC的可选特征。在图10中,(多个)互连单元1012被耦合到:应用处理器1020,所述应用处理器包括一组一个或多个核1002A-N和(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一组或者一个或多个媒体处理器1018,所述媒体处理器可以包括集成图形逻辑1008、用于提供静物和/或视频相机功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026、以及用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器访问(DMA)单元1032;以及显示单元1040,所述显示单元用于耦合到一个或多个外部显示器。在一个实施例中,存储器模块可以被包括在(多个)集成存储控制器单元1014中。在另一实施例中,存储器模块可以被包括在SoC 1000的可用来访问和/或控制存储器的一个或多个其他部件中。应用处理器1020可以包括用于实现如本文实施例中所描述的混合核的存储地址预测器。
存储器层级包括所述核内的一个或多个级别的高速缓存、一组或者一个或多个共享高速缓存单元1006、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元1014。所述一组共享高速缓存单元1006可以包括一个或多个中级高速缓存,如2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、终极高速缓存(LLC)、和/或其组合。
在一些实施例中,核1002A-N中的一个或多个核能够多线程化。系统代理1010包括协调和操作核1002A-N的那些组件。系统代理单元1010可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核1002A-N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
以架构和/或指令集为单位,核1002A-N可以是同构或异构的。例如,核1002A-N中的一些核可以是有序的而其他核是乱序的。再如,核1002A-N中的两个或更多个核能够执行同一指令集,而其他核能够仅执行所述指令集的子集或执行不同的指令集。
应用处理器1020可以是通用处理器,如可从加利福尼亚州圣克拉拉的IntelTM公司获得的CoreTMi3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、AtomTM或QuarkTM处理器。可替代地,应用处理器1020可以来自另一公司,如ARMTM控股公司、MIPSTM等。应用处理器1020可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以在一个或多个芯片上实现。应用处理器1020可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种加工技术中的任何一种技术在一个或多个衬底上实现。
图11是根据本公开的片上系统(SoC)设计的实施例的框图。作为具体的说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何设备,如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信设备。通常,UE连接到基站或节点,所述UE本质上可能对应于GSM网络中的移动台(MS)。
在此,SOC 1100包括2个核(1106和1107)。核1106和1107可以符合指令集架构,如基于架构核TM的处理器、超微半导体有限公司(AMD)处理器、基于MIPS的处理器、基于ARM设计的处理器、或其客户,以及它们的授权方或兼容方。核1106和1107被耦合到高速缓存控制1108,所述高速缓存控制与总线接口单元1109和L2高速缓存1110相关联,以与系统1100的其他部分进行通信。互连1110包括可能实现所描述的本公开的一个或多个方面的片上互连,如IOSF、AMBA或上文讨论的其他互连。在一个实施例中,核1106、1107可以实现如本文实施例所描述的混合核。
互连1110向其他组件提供通信通道,例如用于与SIM卡接口连接的用户身份模块(SIM)1130、用于保持引导代码以便由核1106和1107执行对SoC 1100初始化和引导的引导ROM 1135、用于与外部存储器(例如DRAM 1160)接口连接的启动SDRAM控制器1140、用于与非易失性存储器(例如,闪存1165)接口连接的闪存控制器1145、用于与外围设备接口连接的外围控制1150(例如串行外围接口)、用于显示和接收输入(例如触摸使能的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等。这些接口中的任何接口都可以结合本文所描述的本公开的方面。此外,系统1100展示了用于通信的外围设备,如蓝牙模块1170、3G调制解调器1175、GPS 1180、以及Wi-Fi 1185。
图12展示了采用计算机系统1200的示例形式的在其中可以执行指令集的机器的图解表示,所述指令用于使所述机器执行本文所讨论的方法论中的任何一种或多种。在替代性实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网、或因特网中的其他机器。机器可以在客户端-服务器网络环境下以服务器或客户端设备的身份操作,或在点对点(或分布式)网络环境中作为对等机操作。所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或桥、或能够(相继或以其他方式)执行指定要由那个机器采取的动作的指令集的任何机器。进一步地,虽然仅示出了单个机器,但术语“机器”也应视为包括机器的任何集合,所述机器个别地或联合地执行一个(或多个)指令集以便执行本文中所讨论的方法中的任何一种或多种方法论。
计算机系统1200包括经由总线1230而相互通信的处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存存储器、静态随机存取存储器(SRAM)等)、以及数据存储设备1218。
处理设备1202表示一个或多个通用处理设备,如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集组合的处理器。处理设备1202还可以是一个或多个专用处理设备,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行处理逻辑1226以便执行本文所讨论的操作和步骤。在一个实施例中,如本文用本公开的实施例所描述的,处理设备1202与关于图1所描述的处理器架构100相同。
计算机系统1200可以进一步包括通信地耦合到网络1220的网络接口设备1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号发生设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228、以及音频处理单元1232。
数据存储设备1218可以包括机器可访问存储介质1224,在所述存储介质上存储了实现本文所描述的功能方法论中的任何一种或多种(例如,实现如上文所描述的用于存储器消歧的存储地址预测)的软件1226。软件1226还可以在由计算机系统1200对其执行期间全部或至少部分地驻留在主存储器1204内作为指令1226和/或在处理设备1202内作为处理逻辑1226;主存储器1204和处理设备1202也构成机器可访问存储介质。
机器可读存储介质1224还可以用来存储实现用于如根据本公开的实施例所描述的混合核的存储地址预测的指令1226。虽然机器可访问存储介质1128在示例性实施例中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可访问存储介质”还应视为包括能够存储、编码或携带用于由机器执行的指令集并且使机器执行本公开的方法论中的任何一种或多种的任何介质。术语“机器可访问存储介质”应当相应地被视为包括但不限于固态存储器、以及光学介质和磁性介质。
以下示例涉及进一步的实施例。示例1是一种处理设备,所述处理设备包括:存储设备和,用于存储数据;以及处理器,能操作地耦合到所述存储设备,所述处理器用于:接收令牌流,所述令牌流包括基于包括多个字节的字节流生成的多个令牌,其中,所述令牌流中的每个令牌包括与所述字节流中的对应字节相关联的至少一个符号,并且其中,所述至少一个符号表示所述对应字节、从所述对应字节开始的第一字节串的长度、或在所述第一字节串与相匹配的第二字节串之间的字节距离之一;基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述每个令牌中的所述至少一个符号进行编码的成本函数相关联;基于所述简图来标识在与所述令牌流的最后令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;并且对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
在示例2中,如示例1所述的主题可以可选地规定:所述处理器进一步用于接收包括所述多个字节的所述字节流作为输入数据,其中,所述处理器进一步用于在所述存储设备中存储所述输出数据,并且其中,所述可变长度编码包括霍夫曼编码。
在示例3中,如示例1和2中任一项所述的主题可以可选地规定:所述第一字节串包括从所述对应字节开始的至少三个字节。
在示例4中,如示例1所述的主题可以进一步包括:功能处理单元,能操作地耦合到所述处理器,所述功能处理单元用于:接收来自所述处理器的所述字节流;并且产生所述令牌流,其中,所述令牌流至少包括与所述字节流中的字节数量一样多的令牌。
在示例5中,如示例1和4中任一项所述的主题可以可选地规定:所述功能处理单元用于:针对所述字节流中的每个字节,判定从所述对应字节的第一字节位置开始的所述第一字节串是否与从所述第一字节位置之前的第二字节位置开始的所述第二字节串相匹配;响应于确定所述第一字节串与所述第二字节串相匹配而生成包括第一符号和第二符号的令牌,所述第一符号包括所述第一字节串的长度,所述第二符号包括所述第一字节位置与所述第二字节位置之间的字节距离;响应于确定所述第一字节串与另一字节串不匹配而生成包括包含所述每个字节的所述第一符号或者包含零的第二符号中的至少一个的令牌;并且产生包括所述令牌的所述令牌流。
在示例6中,如示例5所述的主题可以可选地规定:判定所述第一字节串是否与所述第二字节串相匹配包括确定与所述第一字节串匹配的最长字节串。
在示例7中,如示例5所述的主题可以可选地规定:所述功能处理单元进一步用于产生与所述每个字节相关联的至少一个附加令牌,并且其中,判定所述第一字节串是否与所述第二字节串相匹配包括针对预定串长度确定到所述第一字节串的最短字节距离,并且其中,两个字节串之间的字节距离被定义为这两个字节串的起始字节之间的字节距离。
在示例8中,如示例1所述的主题可以可选地规定:为了使用于对所述至少一个符号进行编码的所述成本函数相关联,所述处理器用于:确定包括所述至少一个符号的对应令牌的第一令牌位置;并且根据所述令牌流中的所述第一令牌位置计算所述成本函数。
在示例9中,如示例1和8中任一项所述的主题可以可选地规定:所述成本函数限定了对所述至少一个符号进行编码所采用的位数,并且其中,所计算出的成本函数除了对所述至少一个符号进行编码所使用的位之外还包括额外位。
在示例10中,如示例9所述的主题可以可选地规定:所述处理器用于基于最低成本标准来标识所述路径。
在示例11中,如示例10所述的主题可以可选地规定:所述处理器进一步用于:响应于已经执行了所述可变长度编码而确定对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码所使用的位数;基于所使用的位数来更新用于对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码的所述成本函数;基于所述简图来标识所述第一节点与所述末端节点之间的第二路径,其中,所述第二路径包括第二节点子集;并且对与所述第二节点子集相关联的第二令牌子集进行所述可变长度编码以生成第二输出数据。
在示例12中,如示例11所述的主题可以可选地规定:所述处理器进一步用于:更新所述成本函数,直到对所述至少一个符号进行编码所使用的所述位数收敛到固定数量。
示例13是一种方法,所述方法包括:由处理器接收令牌流,所述令牌流包括基于包括多个字节的字节流生成的多个令牌,其中,所述令牌流中的每个令牌包括与所述字节流中的对应字节相关联的至少一个符号,并且其中,所述至少一个符号表示所述对应字节、从所述对应字节开始的第一字节串的长度、或在所述第一字节串与相匹配的第二字节串之间的字节距离之一;基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述每个令牌中的所述至少一个符号进行编码的成本函数相关联;基于所述简图来标识在与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;以及对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
在示例14中,如示例13所述的主题可以进一步包括:接收包括所述多个字节的所述字节流作为输入数据;以及在存储设备中存储所述输出数据。
在示例15中,如示例13和14中任一项所述的主题可以可选地规定:所述第一字节串包括从所述对应字节开始的至少三个字节。
在示例16中,如示例13所述的主题可以进一步包括:将所述字节流传输到功能处理单元,其中,所述功能处理单元用于:针对所述字节流中的每个字节,判定从所述对应字节的第一字节位置开始的所述第一字节串是否与从所述第一字节位置之前的第二字节位置开始的所述第二字节串相匹配;响应于确定所述第一字节串与所述第二字节串相匹配而生成包括第一符号和第二符号的令牌,所述第一符号包括所述第一字节串的长度,所述第二符号包括所述第一字节位置与所述第二字节位置之间的字节距离;响应于确定所述第一字节串与另一字节串不匹配而生成包括包含所述每个字节的所述第一符号或者包含零的第二符号中的至少一个的令牌;并且产生包括所述令牌的所述令牌流,以及从所述功能处理单元处接收所述令牌流。
在示例17中,如示例13和16中任一项所述的主题可以可选地规定:为了判定所述第一字节串是否与所述第二字节串相匹配,所述功能处理单元用于确定与所述第一字节串匹配的最长字节串。
在示例18中,如示例13所述的主题可以进一步包括:确定包括所述至少一个符号的对应令牌的第一令牌位置;以及根据所述令牌流中的所述第一令牌位置计算所述成本函数。
在示例19中,如示例13和18中任一项所述的主题可以进一步包括:基于最低成本标准来标识所述路径。
在示例20中,如示例19所述的主题可以进一步包括:响应于已经执行了所述可变长度编码而确定对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码所使用的位数;基于所使用的位数来更新用于对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码的所述成本函数;基于所述简图来标识所述第一节点与所述末端节点之间的第二路径,其中,所述第二路径包括第二节点子集;以及对与所述第二节点子集相关联的第二令牌子集进行所述可变长度编码以生成第二输出数据。
示例21是一种设备,所述设备包括用于执行如示例13至15中任一项所述的主题的装置。
示例22是一种机器可读非暂态介质,具有存储在其上的程序代码,所述程序代码在被执行时执行包括以下各项的操作:由处理器接收令牌流,所述令牌流包括基于包括多个字节的字节流生成的多个令牌,其中,所述令牌流中的每个令牌包括与所述字节流中的对应字节相关联的至少一个符号,并且其中,所述至少一个符号表示所述对应字节、从所述对应字节开始的第一字节串的长度、或在所述第一字节串与相匹配的第二字节串之间的字节距离之一;基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述每个令牌中的所述至少一个符号进行编码的成本函数相关联;基于所述简图来标识在与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;以及对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
在示例23中,如示例22所述的主题可以进一步包括:接收包括所述多个字节的所述字节流作为输入数据;以及在存储设备中存储所述输出数据。
示例24是一种片上系统(SoC),包括:处理器,用于接收包括多个字节的字节流;以及功能处理单元,能操作地耦合到所述处理器,所述功能处理单元用于:接收所述字节流;针对所述字节流中的每个字节,判定从所述每个字节的第一字节位置开始的第一字节串是否与从所述第一字节位置之前的第二字节位置开始的第二字节串相匹配;响应于确定所述第一字节串与所述第二字节串相匹配而生成包括第一符号和第二符号的令牌,所述第一符号包括所述第一字节串的长度,所述第二符号包括所述第一字节位置与所述第二字节位置之间的字节距离;响应于确定所述第一字节串与另一字节串不匹配而生成包括包含所述字节的第一符号以及包含零的第二符号的令牌;并且针对所述处理器产生包括所述令牌的所述令牌流。
在示例25中,如示例24所述的主题可以可选地规定:所述处理器用于:从所述功能处理单元处接收所述令牌流;基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述令牌中的所述第一符号和所述第二符号进行编码的成本函数相关联;基于所述简图来标识在与所述令牌流的最后令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;并且对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
虽然已经关于有限数量的实施例对本公开进行了描述,但是本领域技术人员将理解来自其中的许多修改和变体。旨在使得所附权利要求书覆盖落入本公开的真正精神和范围的所有此类修改和变体。
设计可以贯穿各个不同的阶段,从产生到仿真到制造。表示设计的数据可用若干方式来表示所述设计。首先,如模拟中有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路等级模型。此外,多数设计在一些阶段处达到的数据水平代表在硬件模型中的不同设备的物理布局。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指示由掩模用于产生集成电路的各种特征在不同掩模层上存在或不存在的数据。在任何设计表示中,数据可以存储在任何形式的机器可读介质中。例如盘的存储器或磁存储设备或光存储设备可以是用于存储经由光波或电波传输的信息的机器可读介质,所述光波或电波被调制或另外生成用于传输的这种信息。当传输指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传情况的程度上,制作新的副本。因此,通信提供者或网络提供者可以在有形机器可读介质上至少暂时地存储项目(例如,编码到载波中的信息),从而将本公开的实施例的技术具体化。
本文中使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,如与非暂态介质相关联的用于存储代码的微控制器,所述代码被适配成用于由微控制器执行。因此,在一个实施例中,对模块的引用是指硬件,所述硬件具体被配置成标识和/或执行有待保持在非暂态介质中的代码。此外,在另一实施例中,模块的使用指包括代码的非暂态介质,所述代码具体地被适配成用于由微控制器执行以执行预定操作。并且如可以推断的,在又另一实施例中,术语“模块”(在该示例中)可以指微控制器与非暂态介质的组合。通常,被展示为分开的模块边界通常会有所变化并且可能重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括硬件,诸如晶体管、寄存器,或其他硬件,如可编程逻辑设备。
短语‘配置成’的使用在一个实施例中是指安排、汇编、制造、提供销售、导入和/或设计装置、硬件、逻辑或元件,从而执行指定或确定的任务。在本示例中,未运行的装置或其元件如果被设计、被耦合和/或被互连用于执行所述指定任务则仍被‘配置成’执行指定的任务。仅作为说明性示例,逻辑门在操作过程中可以提供0或1。但是‘配置成’为时钟提供启动信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。相反,逻辑门是以某种方式耦合的,从而使得在操作过程中,1或0输出用于启动时钟。再次注意,术语‘配置成’的使用不要求运行,而是关注于装置、硬件和/或元件的潜在状态,其中,在潜在状态中,装置、硬件和/或元件被设计成用于当装置、硬件和/或元件正在运行时执行特定的任务。
此外,短语‘用于’、‘能够/能够用于’和或‘能操作以’的使用在一个实施例中指的是一些装置、逻辑、硬件和/或元件被设计的方式使得能够以指定方式使用该装置、逻辑、硬件和/或元件。注意,在一个实施例中,如以上‘用于(to)’、‘能够用于(capable to)’或‘能操作以(operable to)’的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中,所述装置、逻辑、硬件和/或元件未在运行但是被设计,其方式使得能够以特定的方式使用装置。
如本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为简单地代表二进制逻辑状态的1和0。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实施例中,如晶体管或闪存单元(cell)的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中值的其他表示已被使用。例如,十进制数字十也可以表示为二进制值910和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可以由值或一部分值来代表。作为示例,第一值(例如逻辑一)可以代表默认或初始状态,而第二值(例如逻辑零)可以代表非默认状态。此外,在一个实施例中,术语重置和设置分别是指默认的和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新值可能包括低逻辑值(即,设置)。注意,可利用值的任意组合来表示任意数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问的、机器可读的、计算机可访问的或计算机可读的介质上的可被处理元件执行的代码或指令来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)具有由机器(诸如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声学存储设备;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备等,它们与可以从中接收信息的非暂态介质区分开来。
用于程序逻辑以执行本公开的实施例的指令可以存储在系统中的存储器内,例如,DRAM、高速缓存、闪存或其他存储设备。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输呈由机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软磁盘、光盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音、或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的易失性机器可读存储设备。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书对于“一个实施例(one embodiment)”或“实施例(an embodiment)”的引用意味着结合所述实施例所描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书,短语“在一个实施例中(in one embodiment)”或“在实施例中(in an embodiment)”在各种场合中的出现未必都是指相同的实施例。此外,在一个或多个实施例中,可以以任何合适的方式来组合具体特征、结构、或特性。
在上述说明书中,已经参照具体示例性实施例给出了详细说明。然而,在不偏离所附权利要求中阐述的本公开的更广精神和范围的情况下,将显然的是可对其进行各种修改和改变。因此,说明书和附图被认为是说明性意义的,而不是限制性意义的。此外,实施例和其他示范性语言的上述使用不一定指相同的实施例或相同的示例,而是可指不同且有区别的实施例,以及可能指相同的实施例。
Claims (25)
1.一种系统,包括:
存储设备,用于存储数据;以及
处理器,能操作地耦合到所述存储设备,所述处理器用于:
接收令牌流,所述令牌流包括基于包含多个字节的字节流生成的多个令牌,其中,所述令牌流中的每个令牌包括与所述字节流中的对应字节相关联的至少一个符号,并且其中,所述至少一个符号表示所述对应字节、从所述对应字节开始的第一字节串的长度、或所述第一字节串与相匹配的第二字节串之间的字节距离之一;
基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述每个令牌中的所述至少一个符号进行编码的成本函数相关联;
基于所述简图来标识与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;以及
对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
2.如权利要求1所述的处理设备,其特征在于,所述处理器进一步用于接收包括所述多个字节的所述字节流作为输入数据,其中,所述处理器进一步用于在所述存储设备中存储所述输出数据,并且其中,所述可变长度编码包括霍夫曼编码。
3.如权利要求1和2中任一项所述的处理设备,其特征在于,所述第一字节串包括从所述对应字节开始的至少三个字节。
4.如权利要求1所述的处理设备,其特征在于,进一步包括:
功能处理单元,能操作地耦合到所述处理器,所述功能处理单元用于:
接收来自所述处理器的所述字节流;以及
产生所述令牌流,其中,所述令牌流包括至少与所述字节流中的字节数量一样多的令牌。
5.如权利要求1和4中任一项所述的处理设备,其特征在于,所述功能处理单元用于:
针对所述字节流中的每个字节,判定从所述对应字节的第一字节位置开始的所述第一字节串是否与从所述第一字节位置之前的第二字节位置开始的所述第二字节串相匹配;
响应于确定所述第一字节串与所述第二字节串相匹配而生成包括第一符号和第二符号的令牌,所述第一符号包括所述第一字节串的长度,所述第二符号包括所述第一字节位置与所述第二字节位置之间的字节距离;
响应于确定所述第一字节串与另一字节串不匹配而生成包括包含所述每个字节的所述第一符号或者包含零的第二符号中的至少一个的令牌;以及
产生包括所述令牌的所述令牌流。
6.如权利要求5所述的处理设备,其特征在于,判定所述第一字节串是否与所述第二字节串相匹配的步骤包括确定与所述第一字节串匹配的最长字节串。
7.如权利要求6所述的处理设备,其特征在于,所述功能处理单元进一步用于产生与所述每个字节相关联的至少一个附加令牌,并且其中,判定所述第一字节串是否与所述第二字节串相匹配的步骤包括针对预定串长度确定到所述第一字节串的最短字节距离,并且其中,两个字节串之间的字节距离被定义为这两个字节串的起始字节之间的字节距离。
8.如权利要求1所述的处理设备,其特征在于,为了使用于对所述至少一个符号进行编码的所述成本函数相关联,所述处理器用于:
确定包括所述至少一个符号的对应令牌的第一令牌位置;以及
根据所述令牌流中的所述第一令牌位置计算所述成本函数。
9.如权利要求1和8中任一项所述的处理设备,其特征在于,所述成本函数定义对所述至少一个符号进行编码所采用的位数,并且其中,所计算出的成本函数除了对所述至少一个符号进行编码所使用的位之外还包括额外位。
10.如权利要求9所述的处理设备,其特征在于,所述处理器用于基于最低成本标准来标识所述路径。
11.如权利要求10所述的处理设备,其特征在于,所述处理器进一步用于:
响应于已经执行了所述可变长度编码而确定对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码所使用的位数;
基于所使用的位数来更新用于对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码的所述成本函数;
基于所述简图来标识所述第一节点与所述末端节点之间的第二路径,其中,所述第二路径包括第二节点子集;以及
对与所述第二节点子集相关联的第二令牌子集进行所述可变长度编码以生成第二输出数据。
12.如权利要求11所述的处理设备,其特征在于,所述处理器进一步用于:更新所述成本函数,直到对所述至少一个符号进行编码所使用的所述位数收敛到固定数量。
13.一种方法,包括:
由处理器接收令牌流,所述令牌流包括基于包括多个字节的字节流生成的多个令牌,其中,所述令牌流中的每个令牌包括与所述字节流中的对应字节相关联的至少一个符号,并且其中,所述至少一个符号表示所述对应字节、从所述对应字节开始的第一字节串的长度、或所述第一字节串与相匹配的第二字节串之间的字节距离之一;
基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述每个令牌中的所述至少一个符号进行编码的成本函数相关联;
基于所述简图来标识与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;以及
对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
14.如权利要求13所述的方法,其特征在于,进一步包括:
接收包括所述多个字节的所述字节流作为输入数据;以及
在存储设备中存储所述输出数据。
15.如权利要求13和14中任一项所述的方法,其特征在于,所述第一字节串包括从所述对应字节开始的至少三个字节。
16.如权利要求13所述的方法,其特征在于,进一步包括:
将所述字节流传输到功能处理单元,其中,所述功能处理单元用于:
针对所述字节流中的每个字节,判定从所述对应字节的第一字节位置开始的所述第一字节串是否与从所述第一字节位置之前的第二字节位置开始的所述第二字节串相匹配;
响应于确定所述第一字节串与所述第二字节串相匹配而生成包括第一符号和第二符号的令牌,所述第一符号包括所述第一字节串的长度,所述第二符号包括所述第一字节位置与所述第二字节位置之间的字节距离;
响应于确定所述第一字节串与另一字节串不匹配而生成包括包含所述每个字节的所述第一符号或者包含零的第二符号中的至少一个的令牌;以及
产生包括所述令牌的所述令牌流;以及
从所述功能处理单元处接收所述令牌流。
17.如权利要求13和16中任一项所述的方法,其特征在于,为了判定所述第一字节串是否与所述第二字节串相匹配,所述功能处理单元用于确定与所述第一字节串匹配的最长字节串。
18.如权利要求13所述的方法,其特征在于,进一步包括:
确定包括所述至少一个符号的对应令牌的第一令牌位置;以及
根据所述令牌流中的所述第一令牌位置计算所述成本函数。
19.如权利要求13和18中任一项所述的方法,其特征在于,进一步包括:
基于最低成本标准来标识所述路径。
20.如权利要求19所述的方法,其特征在于,进一步包括:
响应于已经执行了所述可变长度编码而确定对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码所使用的位数;
基于所使用的位数来更新用于对存储在所述令牌子集中的每个令牌中的所述至少一个符号进行编码的所述成本函数;
基于所述简图来标识所述第一节点与所述末端节点之间的第二路径,其中,所述第二路径包括第二节点子集;以及
对与所述第二节点子集相关联的第二令牌子集进行所述可变长度编码以生成第二输出数据。
21.一种设备,包括:用于执行如权利要求13至15中任一项所述的方法的装置。
22.一种机器可读非暂态介质,具有存储在其上的程序代码,所述程序代码在被执行时执行包括以下各项的操作:
由处理器接收令牌流,所述令牌流包括基于包括多个字节的字节流生成的多个令牌,其中,所述令牌流中的每个令牌包括与所述字节流中的对应字节相关联的至少一个符号,并且其中,所述至少一个符号表示所述对应字节、从所述对应字节开始的第一字节串的长度、或所述第一字节串与相匹配的第二字节串之间的字节距离之一;
基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述每个令牌中的所述至少一个符号进行编码的成本函数相关联;
基于所述简图来标识与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;以及
对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
23.如权利要求22所述的机器可读非暂态介质,其特征在于,进一步包括:
接收包括所述多个字节的所述字节流作为输入数据;以及
在存储设备中存储所述输出数据。
24.一种片上系统(SoC),包括:
处理器,用于接收包括多个字节的字节流;以及
功能处理单元,能操作地耦合到所述处理器,所述功能处理单元用于:
接收所述字节流;
针对所述字节流中的每个字节,判定从所述每个字节的第一字节位置开始的第一字节串是否与从所述第一字节位置之前的第二字节位置开始的第二字节串相匹配;
响应于确定所述第一字节串与所述第二字节串相匹配而生成包括第一符号和第二符号的令牌,所述第一符号包括所述第一字节串的长度,所述第二符号包括所述第一字节位置与所述第二字节位置之间的字节距离;
响应于确定所述第一字节串与另一字节串不匹配而生成包括包含所述每个字节的第一符号以及包含零的第二符号的令牌;以及
针对所述处理器产生包括所述令牌的所述令牌流。
25.如权利要求24所述的片上系统(SoC),其特征在于,所述处理器用于:
从所述功能处理单元处接收所述令牌流;
基于所述令牌流生成包括多个节点和多条边的简图,其中,所述令牌流中的每个令牌与对应节点相关联,所述对应节点由至少一条边连接到另一节点,并且其中,所述至少一条边与用于对存储在所述令牌中的所述第一符号和所述第二符号进行编码的成本函数相关联;
基于所述简图来标识与所述令牌流的开始令牌相关联的第一节点和与所述令牌流的最后令牌相关联的末端节点之间的路径,其中,所述路径包括节点子集和链接所述节点子集的边;以及
对与所述节点子集相关联的令牌子集进行可变长度编码以生成输出数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,115 | 2015-09-25 | ||
US14/866,115 US9537504B1 (en) | 2015-09-25 | 2015-09-25 | Heterogeneous compression architecture for optimized compression ratio |
PCT/US2016/044303 WO2017052758A1 (en) | 2015-09-25 | 2016-07-27 | Heterogeneous compression architecture for optimized compression ratio |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107925420A true CN107925420A (zh) | 2018-04-17 |
CN107925420B CN107925420B (zh) | 2022-01-04 |
Family
ID=57682461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680049229.1A Active CN107925420B (zh) | 2015-09-25 | 2016-07-27 | 用于经优化压缩比的异构压缩架构 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9537504B1 (zh) |
CN (1) | CN107925420B (zh) |
DE (1) | DE112016004324T5 (zh) |
TW (1) | TWI692213B (zh) |
WO (1) | WO2017052758A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112771498A (zh) * | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的系统和方法 |
CN115793989A (zh) * | 2023-02-06 | 2023-03-14 | 江苏华存电子科技有限公司 | 一种基于NAND的NVMe KV SSD数据管理方法 |
TWI837000B (zh) * | 2022-05-26 | 2024-03-21 | 國立清華大學 | 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
US10311074B1 (en) | 2016-12-15 | 2019-06-04 | Palantir Technologies Inc. | Identification and compiling of information relating to an entity |
US10235461B2 (en) * | 2017-05-02 | 2019-03-19 | Palantir Technologies Inc. | Automated assistance for generating relevant and valuable search results for an entity of interest |
US20180357287A1 (en) * | 2017-06-10 | 2018-12-13 | ScaleFlux, Inc. | Hybrid software-hardware implementation of edit distance search |
US11238102B1 (en) | 2018-12-10 | 2022-02-01 | Palantir Technologies, Inc. | Providing an object-based response to a natural language query |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552127A (zh) * | 2002-05-09 | 2004-12-01 | �Ҵ���˾ | 基于lz77算法的数据压缩的方法和装置 |
CN101072349A (zh) * | 2006-06-08 | 2007-11-14 | 威盛电子股份有限公司 | 内容适应性可变长度编码的解码系统与方法 |
US20090083267A1 (en) * | 2007-09-24 | 2009-03-26 | Computer Associates Think, Inc. | Method and System for Compressing Data |
US7821426B2 (en) * | 2007-11-30 | 2010-10-26 | Red Hat, Inc. | Adaptive entropy coding compression output formats |
WO2013095615A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes |
CN103975533A (zh) * | 2011-12-07 | 2014-08-06 | 国际商业机器公司 | 可变长度编码的数据流的高带宽解压 |
CN104300990A (zh) * | 2013-03-15 | 2015-01-21 | 英特尔公司 | 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353024A (en) * | 1992-05-01 | 1994-10-04 | Intersecting Concepts, Inc. | Method for data compression having an improved encoding algorithm which utilizes a token stacking technique |
US5572206A (en) * | 1994-07-06 | 1996-11-05 | Microsoft Corporation | Data compression method and system |
US5627534A (en) * | 1995-03-23 | 1997-05-06 | International Business Machines Corporation | Dual stage compression of bit mapped image data using refined run length and LZ compression |
US5659737A (en) * | 1995-08-01 | 1997-08-19 | Oracle Corporation | Methods and apparatus for data compression that preserves order by using failure greater than and failure less than tokens |
US6741368B1 (en) * | 1999-05-25 | 2004-05-25 | Adobe Systems, Incorporated | Method and apparatus for reducing storage requirements for display data |
WO2004062110A1 (ja) * | 2002-12-26 | 2004-07-22 | Fujitsu Limited | データ圧縮方法、プログラム及び装置 |
US8085171B2 (en) * | 2006-03-24 | 2011-12-27 | University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
CA2647259A1 (en) * | 2006-03-24 | 2007-10-04 | University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
US8013762B2 (en) * | 2009-11-03 | 2011-09-06 | Seagate Technology Llc | Evaluating alternative encoding solutions during data compression |
US8248279B2 (en) * | 2010-10-26 | 2012-08-21 | Hewlett-Packard Development Company, L.P. | History buffer apparatus and method for adaptive lossless data compression |
DE112011104633B4 (de) * | 2010-12-28 | 2016-11-10 | International Business Machines Corporation | Einheit zum Ermitteln des Ausgangspunkts für eine Suche |
US8933824B1 (en) * | 2013-08-28 | 2015-01-13 | International Business Machines Corporation | Hardware decompression of deflate encoded data with multiple blocks |
US9628111B2 (en) * | 2015-05-11 | 2017-04-18 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor with multiple string match search hash tables each based on different hash size |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
-
2015
- 2015-09-25 US US14/866,115 patent/US9537504B1/en not_active Expired - Fee Related
-
2016
- 2016-07-27 CN CN201680049229.1A patent/CN107925420B/zh active Active
- 2016-07-27 WO PCT/US2016/044303 patent/WO2017052758A1/en active Application Filing
- 2016-07-27 DE DE112016004324.4T patent/DE112016004324T5/de not_active Ceased
- 2016-08-11 TW TW105125634A patent/TWI692213B/zh not_active IP Right Cessation
- 2016-12-29 US US15/393,599 patent/US9871535B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552127A (zh) * | 2002-05-09 | 2004-12-01 | �Ҵ���˾ | 基于lz77算法的数据压缩的方法和装置 |
CN101072349A (zh) * | 2006-06-08 | 2007-11-14 | 威盛电子股份有限公司 | 内容适应性可变长度编码的解码系统与方法 |
US20090083267A1 (en) * | 2007-09-24 | 2009-03-26 | Computer Associates Think, Inc. | Method and System for Compressing Data |
US7821426B2 (en) * | 2007-11-30 | 2010-10-26 | Red Hat, Inc. | Adaptive entropy coding compression output formats |
CN103975533A (zh) * | 2011-12-07 | 2014-08-06 | 国际商业机器公司 | 可变长度编码的数据流的高带宽解压 |
WO2013095615A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes |
CN104300990A (zh) * | 2013-03-15 | 2015-01-21 | 英特尔公司 | 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码 |
Non-Patent Citations (2)
Title |
---|
BINH DAO VO等: ""RadixZip: linear time compression of token streams"", 《VLDB "07: PROCEEDINGS OF THE 33RD INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES》 * |
余小平: ""图像传输系统中的DSP技术应用研究"", 《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112771498A (zh) * | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的系统和方法 |
TWI837000B (zh) * | 2022-05-26 | 2024-03-21 | 國立清華大學 | 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 |
CN115793989A (zh) * | 2023-02-06 | 2023-03-14 | 江苏华存电子科技有限公司 | 一种基于NAND的NVMe KV SSD数据管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017052758A1 (en) | 2017-03-30 |
TW201720063A (zh) | 2017-06-01 |
TWI692213B (zh) | 2020-04-21 |
US9537504B1 (en) | 2017-01-03 |
CN107925420B (zh) | 2022-01-04 |
US20170111059A1 (en) | 2017-04-20 |
DE112016004324T5 (de) | 2018-06-28 |
US9871535B2 (en) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107925420A (zh) | 用于经优化压缩比的异构压缩架构 | |
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
US10534613B2 (en) | Supporting learned branch predictors | |
CN104995599B (zh) | 使用硬件与软件组合的路径概况分析 | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
CN108388528A (zh) | 基于硬件的虚拟机通信 | |
CN106716434A (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN106030518B (zh) | 用于整理和退出存储的处理器、方法、系统和装置 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN108369511A (zh) | 用于基于通道的跨步存储操作的指令和逻辑 | |
CN108351786A (zh) | 在指令集架构中对数据进行排序并且合并经排序数据 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN108369513A (zh) | 用于加载-索引-和-收集操作的指令和逻辑 | |
CN108475192B (zh) | 分散减少指令 | |
CN109791493A (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 | |
CN108351785A (zh) | 用于部分减少操作的指令和逻辑 | |
CN106575284A (zh) | 用于内核模块的多核存储器数据记录器 | |
CN108431771A (zh) | 融合乘加(fma)低功能单元 | |
CN108431770A (zh) | 用于加速集合运算的硬件内容关联数据结构 | |
CN106716949A (zh) | 减少具有扩展mesi协议的多处理器系统的互连流量 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |