矩阵的解压缩方法和设备的制作方法

文档序号:6563321阅读:204来源:国知局
专利名称:矩阵的解压缩方法和设备的制作方法
技术领域
本发明广泛地涉及一种用来对具有多个冗余矩阵行的矩阵进行解压缩的方法和设备。
背景技术
在计算问题中,在数据处理期间常从存储器中提供矩阵。一个实际例子是例如用于散列算法、完整性校验和、消息摘要以及随机数生成器的多项式余式环中的计算。在具体例子中,如果将多项式余式环用作校验和,那么就把它们称作循环冗余校验(CRC)计算。在一种实现中,在CRC计算核中使用向量-矩阵乘法器来计算v mod p,这里v是多项式而p是该CRC的生成多项式。
通过将多项式v的系数解释成向量并将其与只依赖于p的矩阵m(p)相乘来计算该求模操作。在这种涉及矩阵的计算中,出于加速矩阵交换(因为这样必须从存储器中读取的数据会更少)以及节省成本(因为这样每个矩阵所需的存储器容量会更少)的目的,希望对矩阵进行压缩。关于成本节省方面,应当意识到必须在已节省的成本与解压缩器的相关成本间进行平衡。
本发明寻求提供一种用来对具有分段冗余矩阵行的矩阵进行解压缩的解压缩方法和系统。
US20050010630A1涉及用来确定多项式环中的佘式的方法和装置。用来确定多项式环中的余式的该装置包括用来存储多项式值的值缓冲器、用来存储因式的因式存储器、以及连接到该因式存储器用来生成该因式与输入多项式间的多项式乘积的多项式乘法单元。该装置还包括连接到该多项式乘法单元的矩阵乘法单元,用于通过将多项式乘积与简化矩阵相乘以生成具有已简化的多项式次数的已简化的乘积。最后,该装置包括用来将已简化的乘积或者多项式值作为输入多项式引导给多项式乘法单元的复用器工具。

发明内容
根据本发明的第一个方面,提供了一种对具有多个冗余矩阵行的矩阵进行解压缩的方法。该方法包括以下步骤从存储器中读取至少包括该矩阵中所有非冗余矩阵行的已选矩阵行,并且从所读取的矩阵行中计算该矩阵的剩余矩阵行,其中同时计算若干所述矩阵行。把所读取的和所计算的剩余矩阵行作为已解压缩的矩阵提供给输出矩阵寄存器。
该方法还包括提供表示非冗余矩阵行在所得已解压缩矩阵内位置的数据的步骤。该方法可以利用这个数据来确定应该选择哪一个矩阵行供读取。因此,可将该方法设计成对具有不同位置的非冗余矩阵行的矩阵起作用。这增强了该方法的灵活性。
根据本发明的第二个方面,提供了一种用来对具有多个冗余矩阵行的矩阵进行解压缩的解压缩器设备。该解压缩器设备包括矩阵存储器和逻辑电路,该矩阵存储器用来在其中存储至少包括该矩阵的全部非冗余矩阵行的矩阵行,而该逻辑电路用于从所读取的矩阵行中计算该矩阵的剩余矩阵行。该解压缩器设备还包括输出矩阵寄存器,其用于在该解压缩器设备的输出处提供所读取的和所计算的剩余矩阵行作为已解压缩的矩阵。该逻辑电路包括若干解压缩器块,借此可以同时计算若干冗余矩阵行,也即剩余矩阵行。每个解压缩器块从其所接收的输入产生连续的冗余矩阵行序列。解压缩器块越多,单个循环内能产生的矩阵行就越多。第一条设计规则可以是从矩阵存储器提供若干字给相应数目的解压缩器块。从而,可进行并行的矩阵行计算。还存在用来安排比来自矩阵存储器的字行更多的解压缩器块的空间。由于具有这样的矩阵,其包括的矩阵行比解压缩器块在一个计算循环内所能提供的矩阵行还要多,因此如果解压缩器块的数目与来自矩阵存储器的字行数目一致,那么就至少需要另一个计算循环来用于生成剩余的冗余行。因此,可以安排更多的解压缩器块,其在第二个和可能的后续循环中从前一个循环接收它们自己的输入,也就是从矩阵存储器或者以解压缩器块的结果的形式,并且还可以参与冗余矩阵行的计算。通过每一次循环,可以理论上参与计算的解压缩器块的数目随着来自矩阵存储器的字行的数目线性地增长。通过两个字行,这意味着在第一个循环中可以使用两个解压缩器块,在第二个循环中可以使用4个解压缩器块,而在第三个循环中可以使用6个解压缩器块,等等。如果每个解压缩器块每循环能产生3个矩阵行,正好与4个解压缩器块将要使用的一样多,那么对于31行的矩阵,8个解压缩器块接着要进行3次循环。这证明,为了允许在预定的循环次数内对矩阵进行解压缩,解压缩器块的数目被有利地选得足够大以允许这种解压缩,但是不会安排超过解压缩器块的数目。典型地,添加更多的解压缩器块将仅仅导致解压缩器块的使用效率更低,并且接着只有解压缩器块数目的更进一步增加才会再次导致循环的减少。
在优选的实施例中,逻辑电路可包括一个或多个下一矩阵寄存器。这允许在随后的解压缩循环中再次使用先前计算的矩阵行,从而允许使用比来自矩阵存储器的字行更多的解压缩器块,并且同时允许加速解压缩过程,因为在从矩阵传递矩阵行的给定速度上,所计算的行的数目比直接从矩阵存储器接收矩阵行的解压缩器块可以从中处理的数目更大。
在优选的实施例中,解压缩器块可包括若干解压缩器级。在每个解压缩器级,计算一个矩阵行。解压缩器级的数目可基于所期望的矩阵行冗余来选择,并且还可基于内嵌解压缩器设备的外围逻辑的逻辑深度来选择。功率消耗也是可以影响选择的因素。所安排的解压缩器级越多,总共的功率消耗就越低,因为对于给定的矩阵需要更少的循环。然而,所安排的解压缩器级越多,在处理带有更多非冗余矩阵行的矩阵时对解压缩器设备的限定就越多。
在优选的实施例中,该解压缩器级包括公共的参数输入,也被称作多项式尾部(poltail)输入,其在使用上与指定的矩阵完全相同,但是其可在不同的矩阵间变化。它通过允许每个解压缩器块重新使用这个多项式尾部输入来允许更高的解压缩因式,而不需要在每个解压缩步骤从矩阵存储器重新读取该多项式尾部输入,也不需要穿过若干解压缩器级馈给该多项式尾部输入。
在优选的实施例中,解压缩器块互链或互连连同解调寄存器的安排允许对具有不固定的非冗余位置的矩阵进行处理。从下一矩阵寄存器给解压缩器块的反馈被循环解压缩器块结构所替代。解调寄存器替代下一矩阵寄存器,带来的好处是它不受指定的矩阵行位置的限制,以致它可在不同的循环期间表示不同的矩阵行位置。
在优选的实施例中,还可将逻辑电路进一步设计成用于访问表示所得已解压缩矩阵中的非冗余矩阵行位置的数据。该逻辑电路可以使用这个数据来确定应该选择哪一个矩阵行供读取。因此,可以将该逻辑电路设计成能对具有不同位置的非冗余矩阵行的矩阵起作用。这增强了该设备的灵活性。可提供这种数据作为待提供给解压缩器设备的额外输入,或者可以将这种数据从矩阵存储器读入到该逻辑电路中。处于此目的,可以使用多项式次数(poldegree)输入,表示生成多项式的次数。
在优选的实施例中,可以对这种解压缩器设备结构进行改进以更加高效地处理越来越频繁地出现的冗余模式。这里,解压缩器块可包括旁路复用器。可以将其安排在一个或多个已选解压缩器块内的一个或多个已选位置,这样,即使非直接位于解调寄存器之前的解压缩器级的输出将被再次使用,后续的解压缩器块也可以再次使用存储在该解调寄存器内的矩阵行。旁路复用器的这种安排允许处理更多种冗余模式,然而仍可存在这里不能处理的冗余模式。解压缩器级可包括额外的逻辑元件,其使得能够给出关于解压缩器级的前一矩阵行输入以及下一矩阵行输出的双射函数。这允许加强在任何解压缩器输出处的任意字。这允许加强在任意位置处的非冗余行,也即允许处理具有任意冗余模式的矩阵。
输出矩阵寄存器优选地可被连接到处理单元,用于进行可配置的CRC计算。


现在将参考附图仅用举例子的方式描述本发明的优选实施例。
图1A是解压缩器设备的示意图;图1B是解压缩器块结构的示意图;图1C是解压缩器级结构的示意图;图2是经修改的解压缩器级的示意图;图3A是带有ci寄存器和多项式尾部寄存器的解压缩器设备的示意图;图3B是图3A中的解压缩器设备的解压缩器块的示意图;图3C是图3B中的解压缩器块的解压缩器级的示意图;图4是可配置的流型CRC计算单元的示意图。
具体实施例方式
上述优选实施例提供了一种用来对具有多个冗余矩阵行(也称为分段冗余矩阵行)的矩阵进行解压缩的方法和设备,用于加速在计算期间所使用的矩阵的交换,因为这样必须从矩阵存储器中读取更少的数据提供给矩阵。这里将参考在CRC计算核中所使用的矩阵来描述优选实施例。然而,本领域技术人员将意识到本发明并不局限于具体的计算环境,而是可应用到涉及从存储器提供具有分段冗余矩阵行的矩阵的任何计算。
当已知一个矩阵行B时,如果存在计算另一个矩阵行A的函数,那么就给出了矩阵行A与矩阵行B之间的冗余。这个函数可以具有更多的输入参数,例如整个矩阵共有的参数或者指定用于矩阵行A的参数,其需要比矩阵行A本身更小的存储空间。
本发明的设备允许对由若干间插着非冗余行的冗余行序列所组成的矩阵进行解压缩。
对于具有31×32的矩阵尺寸的CRC例子,在一个版本中,按xd,...,x(30+d)(全部mod p)这样来安排矩阵行,而在另一版本中基于多项式的次数d来对该矩阵行序列改变排列次序,并且该矩阵呈现为x32,...,x(30+d),xd,...,x31(全部mod p)。对于这两种版本,知道ximod p就可以计算矩阵行x(i+1)mod p。因此,存在从一个矩阵行到下一矩阵行的冗余,其中在每一个步骤中使用了与生成多项式p有关的参数。在第二种版本的矩阵行安排中,还存在从最后一个矩阵行到第一个矩阵行的可用冗余。该冗余依赖于这一事实,即可以使用下面的方程从xi来确定幂x(i+1)mod px(i+1)mod p=x*(ximod p)如果degree(ximod p)<degree(p)-1x(i+1)mod p=x*(ximod p)+p其他情形这里,degree(ximod p)<degree(p)-1被称作矩阵行i的溢出条件。
在第二个方程中,生成多项式p和乘积的最高位相抵消。因此,同样的计算可以通过加上不带其最高系数的生成多项式p并忽略乘积的最高位来完成,该乘积的最高位将在尺寸等于生成多项式p的次数的寄存器中溢出。在此之后,没有其首项系数的该生成多项式p被称作多项式尾部。对于xdegree(p)mod p也是一样。
图1A是示例性实施例中的解压缩器设备100的示意性图示。该解压缩器设备100包括矩阵存储器102,在这个示例性实施例中其是用于32次矩阵的两字宽存储器。复用器104、106、108和110分别与四个解压缩器块112、114、116、118中之一相接口。每个解压缩器块112、114、116、118有两个输入,即前一矩阵行输入103和被称为多项式尾部行输入pt的第二输入。解压缩器设备100还包括用来在解压缩过程期间存储像若干字这样的中间结果的下一矩阵寄存器120、122、124。解压缩器设备100还包括用来在解压缩过程完成后将已解压缩的矩阵作为向量来提供的当前矩阵寄存器126。虽然在图1A中示出了若干下一矩阵寄存器120、122、124,但是在可选实施例中它们还可实现成一公共寄存器。解压缩器块114、116可以分别经由复用器106、108在它们的前一矩阵行输入103处接收来自矩阵存储器102或者分别来自下一矩阵寄存器122或124的输入,而解压缩器块112、118分别从下一矩阵寄存器120或122接收它们的输入。这允许使用存储器作为矩阵寄存器102(其仅提供两个字),而且还同时使用四个解压缩器块112、114、116、118以达到增强的解压缩速度。
矩阵存储器102有被分裂成两个字(高位字和低位字)的输出。低位字可以通过复用器106传递给解压缩器块114。来自矩阵存储器102的高位字可以通过复用器108传递给解压缩器块116。还可将两个矩阵字传递给下一矩阵寄存器120、122,也即将低位字传递给下一矩阵寄存器120,而将高位字传递给下一矩阵寄存器122。解压缩器块112的输入由下一矩阵寄存器120来提供。复用器104选择在这里使用来自下一矩阵寄存器120的哪一个字。按照同样的方式,解压缩器块118通过复用器110从下一矩阵寄存器122、124接收输入。复用器106还与下一矩阵寄存器122的输出相连。复用器108还与下一矩阵寄存器122、124的输出相连。解压缩器块112、114、116、118的所有多项式尾部输入pt被连接到一起并且与多项式尾部复用器132的输出相连。多项式尾部复用器132与低位存储器字和下一矩阵寄存器120相连。当前的矩阵寄存器126与所有四个解压缩器块112、114、116、118的解压缩器输出105和下一矩阵寄存器120、122、124的输出相连。解压缩器块112的解压缩器输出105与下一矩阵寄存器120的输入相连。解压缩器块114的解压缩器输出105与下一矩阵寄存器122的输入相连。解压缩器块116的解压缩器输出105与下一矩阵寄存器122的输入相连。解压缩器块118的解压缩器输出105与下一矩阵寄存器124的输入相连。
包括复用器104、106、108、110、解压缩器块112、114、116、118、下一矩阵寄存器120、122、124的安排和132一起形成逻辑电路150,其被设计成从其中计算剩余矩阵行,也即未被存储在矩阵存储器102内的那些矩阵行。
图1B示出了解压缩器块112的结构的示意性图示。它包括以串联方式安排的三个解压缩器级126。前一矩阵行输入103与解压缩器级126的第一个的输入相连。多项式尾部行输入pt被提供用于三个解压缩器级126中的每一个。第一解压缩器级126将它的下一矩阵行输出101提供给第二解压缩器级126并且还将它的下一矩阵行输出101提供为解压缩器块112的输出。第二解压缩器级126将它的下一矩阵行输出101提供给第三解压缩器级126并且还将它的下一矩阵行输出101提供为解压缩器块112的输出。第三解压缩器级126也提供它的下一矩阵行输出101。将所有的下一矩阵行输出101一起提供为解压缩器块112的解压缩器输出105。
图1C示出了解压缩器级126的内部结构的示意性图示。解压缩器级126有两个输入多项式尾部行输入pt和前一矩阵行输入103。解压缩器级126所计算的函数是(pmr<<1)XOR(多项式尾部AND pmr[31]),其中pmr是来自前一矩阵行输入103的前一矩阵行,而pmr[31]是它的最高有效位。“<<1”表示逻辑左移一位数。这种函数通过馈给输出数1至31的三十一个XOR门128以及三十二个AND门130来实现。AND门130的每个输出与XOR门128的一个相应的输入相连。AND门130的其他输入一起连接到前一矩阵行输入103的最高有效输入数。每个XOR门128的第二个输入是移了一位的前一矩阵行输入103的相应数,即提供输出位i的XOR门128的输入与第i-1个输入位相连。最低输出位直接由AND门130的输出来提供,该AND门130将前一矩阵行输入103的最高有效位与多项式尾部行输入pt的最低有效位合并到一起。所计算的函数构成下一矩阵行并且被提供为解压缩器级126的32位输出101。
下面,将针对具有31个矩阵行的矩阵来描述示例性解压缩器设备100的解压缩方法,其中除了矩阵行0之外的每个矩阵行都依赖于各自的前一矩阵行。在这个示例性的方案中,在矩阵存储器102内仅存储有四个矩阵行,在这里也就是矩阵行0、10、20和27。
在第一步骤中,使用解压缩器块114、116从自矩阵存储器102中读取的矩阵行0来计算矩阵行1、2、3,并且从自矩阵存储器102中读取的矩阵行10来计算矩阵行11、12、13。这里,经由复用器106将矩阵行0从矩阵存储器102提供给解压缩器块114,并且经由复用器108将矩阵行10从矩阵存储器102提供给解压缩器块116。将矩阵行0、1、2、3、10、11、12、13经由解压缩器输出105转发给下一矩阵寄存器122。矩阵行0、1、2、3、10、11、12、13被存储在下一矩阵寄存器122中。在第一步骤中,自矩阵存储器102中读取的矩阵行0还被用作多项式尾部,而在后续的步骤中,下一矩阵寄存器122内所存储的矩阵行0被用作多项式尾部。这是可能的,因为矩阵行0对应着x32mod p并且p的次数是32。
在下一步骤中,从矩阵存储器102中读取矩阵行20并且由各个解压缩器块来计算后续的矩阵行由解压缩器块114来计算矩阵行21、22、23。
由解压缩器块118来计算矩阵行4、5、6。
由解压缩器块112来计算矩阵行14、15、16。
将矩阵行20和已计算的矩阵行4、5、6、14、15、16、21、22和23存储在下一矩阵寄存器122、124内。
从这个循环开始,经由复用器132将由所有解压缩器块112、114、116、118用来计算冗余矩阵行的非冗余矩阵行0从下一矩阵寄存器120提供给解压缩器块112、114、116、118。
在最后的步骤中,从矩阵存储器102中读取矩阵行27,并且由解压缩器块112来计算矩阵行28、29、30。剩余的矩阵行如下计算由解压缩器块114来计算矩阵行7、8、9。
由解压缩器块116来计算矩阵行17、18、19。
由解压缩器块118来计算矩阵行24、25、26。
因此,在该最后的步骤中,将所有31个矩阵行提供给当前矩阵寄存器126,其中矩阵行7、8、9、17、18、19、24、25、26、28、29、30直接从解压缩器块112、114、116、118得到,而将剩余的矩阵行从下一矩阵寄存器122、124提供给当前矩阵寄存器126。
此后,又被称作输出矩阵寄存器的当前矩阵寄存器126包含所有从1到31的矩阵行(也即所读取的矩阵行)和已计算的矩阵行,在它的寄存器输出127处可以作为已解压缩的矩阵来获得它。
因此上述方法包括以下步骤从矩阵存储器102读取所选矩阵行。这种选择至少包括矩阵的所有非冗余矩阵行。如果被读取的矩阵行越多,那么所述解压缩将越快,但是同时将需要更多的存储器空间来存储那些冗余矩阵行。将所读取的矩阵行提供给逻辑电路150以用于从所读取的矩阵行来计算该矩阵的剩余矩阵行。在那里,矩阵的剩余矩阵行被计算,其中若干剩余矩阵行被同时计算。这里,这是通过使用若干解压缩器块来完成的。所读取的矩阵行与已计算的剩余矩阵行一起形成最后可以在输出矩阵寄存器126处获得的已解压缩的矩阵。
从上面的描述中可以看出,将矩阵行提供给输出矩阵寄存器不必同时进行。直至矩阵行都出现在输出矩阵寄存器126为止所用的循环数目依赖于逻辑电路150的复杂性。提供用来同时计算剩余矩阵行的解压缩器块越多,获得完整的已解压缩的矩阵所用的循环就越少。
在解压缩器设备100及其相关联的解压缩方法的一种修改中,可以在第二步骤进行矩阵行27的读取以及矩阵行28、29、和30的计算,也即,将在第二步骤而不是在最后的步骤中使用所有四个解压缩器块112、114、116、118。在这种修改中,使用了额外的存储装置/下一矩阵寄存器。然而,这种经修改的实施例在相同数量的循环中仍然提供相同的压缩/解压缩率。在这种经修改的版本中不需要从解压缩器块116到当前矩阵寄存器126的连接,而且因此可以将该连接放弃。
如果矩阵行序列是静态的,也即xd,...,x(30+d)(全部mod p),那么在每个矩阵行中可以对解压缩器设备100进行修改以处理更低次的多项式。
图2中示出了示例性实施例内的已修改的解压缩器级200的示意图。已修改的解压缩器级200再次包括多个XOR门202和相关联的AND门204。使用在这个示例性实施例中被称作多项式次数输入208并且对于每个解压缩器块112、114、116、118的所有解压缩器级200所共有的额外的输入208,其以单热编码(one-hot-encoded)方式来提供多项式的次数,也即对于d次多项式,第d位的值为1而其他所有的位的值为0。多项式次数输入208与31个AND门203相连,这31个AND门203的其他输入接收前一矩阵行103的相应的位。多项式次数输入208允许逻辑电路获知哪些矩阵行是非冗余的。因此,解压缩器设备可以处理带有不同冗余模式的矩阵。
由图2中示出的解压缩器级200所计算的函数是(pmr<<1)XOR(多项式尾部AND(NOT((多项式次数AND pmr)=0)))。从而,前一矩阵行输入103与多项式次数输入208进行逐位的AND组合。在宽OR门205中测试结果字是零还是非零。使用该测试结果来替代图1C中的pmr[31]作为AND门130的公共输入。图2中的其余结构与图1C中的相同。所计算的函数组成下一矩阵行并且被提供为已修改的解压缩器级200的32位输出101。因此,在这个修改中,用来实现该实施例的逻辑电路包括额外的逻辑单元210。这种已修改的实施例仍然在相同数量的循环中提供大约相同的压缩/解压缩率。该额外的逻辑单元210提供对多项式次数输入208的处理,该多项式次数输入208传送表示所得的已解压缩矩阵内的非冗余矩阵行位置的数据。
虽然在这个修改中解压缩器设备100可以处理高至最大次数的各种次数,但是关于从矩阵存储器102中读取的矩阵行的位置,它是固定的。
下面将描述另外一实施例,其提供了从矩阵存储器102中读取的矩阵行的位置的灵活性。在图3A中示出了在示例性实施例中的这种解压缩器设备300的示意性图示。这里,还将其设计成用来处理具有31个矩阵行的矩阵。解压缩器设备300包括下一矩阵寄存器302、当前矩阵寄存器304和两字宽的矩阵存储器306。提供了四个解压缩器块308、310、312、314,它们以循环方式彼此相连,也即解压缩器块308、310、312、314中的每个的输出332连接到后续的解压缩器块310、312、314、308之一的输入。每个解压缩器块310、312、314、308是有线的,用于访问矩阵存储器306。从而,解压缩器块308和312与低存储器字334相连,而解压缩器块310和314与高存储器字333相连。与在上面参考图1A、1B、1C和图2所描述的实施例不同,不存在从下一矩阵寄存器302到解压缩器块308、310、312、314的反馈,因为这种反馈将会固定从矩阵存储器306读取的矩阵行的位置,也即固定了允许冗余所出现的位置。在图3A所示出的实施例中,每个解压缩器块308、310、312、314有四个解压缩器输出335,而且除了一个外,这些解压缩器输出335中的每个与下一矩阵寄存器302中的两个矩阵行相连。第一个解压缩器块308的第4个输出在这里只连接到一个矩阵行,因为总共有16个(4个解压缩器块中每个都带有4个解压缩器输出)解压缩器输出335,但是只有31个矩阵行。这提供了一种原则,遵循所述原则可以将解压缩器输出335连接到下一矩阵存储器302的位置适应于所期望的矩阵冗余模式。这意味着,可以将这种旁路复用器安排成绕过除了在图3B中所描述的解压缩器级之外的不同的解压缩器级。为了作更进一步的改进,在若干解压缩器级提供旁路复用器可能是更好的设计,由此允许在连接到解压缩器输出335的矩阵行的每个解压缩器级上使用不平衡的分布。这可以证明能够更好地处理最常见的冗余模式的优点。
此外,存在两个寄存器,多项式尾部寄存器315和ci寄存器319,用于为所有矩阵行预先计算并存储溢出条件。因为由于序列的灵活性,xdegree(p)mod p可以不是矩阵行或者至少不像这样进行存储,所以使用了多项式尾部寄存器315。
图3B示出了解压缩器设备300的完全相同的解压缩器块308之一的示意性图示。它包括4个解压缩器级316、318、320、322、一个解调寄存器324和两个复用器326、328。复用器326确定使用它的输入中的哪一个,所述输入或者是来自矩阵存储器306的高存储器字333或低存储器字334,或者是来自前一解压缩器块314的输出332。其中,来自矩阵存储器306的低存储器字334与解压缩器块308、312相连,而来自矩阵存储器306的高存储器字333与解压缩器块310、314相连。如图3A中所示,除了解压缩器输出335中的一个之外,解压缩器输出335中的每个与下一矩阵寄存器302的两个不同的矩阵行相连,原因是由于解压缩器输出335与矩阵行的数目不同。在示例性实施例中将解调寄存器324安排在最后的解压缩器级322之前以进行管道式解调(pipe-detuning)。在这个解调寄存器324中,保留一个矩阵行,其用于由下一解压缩块310进行连续的解压缩,忽略由最后的解压缩器级322进行的延迟使用。因为解压缩器块308提供了若干矩阵行的值,所以在解压缩过程中可以将解调寄存器324用于若干不同的矩阵行。旁路复用器328允许通过将解压缩器级318的输入提供给解调寄存器324或者解压缩器级320的解压缩器输出335来绕过一个解压缩器级320。这只在第一解压缩器块308中被使用,因为这个解压缩器块308的第四个解压缩器输出335仅用于一个矩阵行,而所有其他的解压缩器输出335都用于两个矩阵行。如果在使用了第四个解压缩器输出335的矩阵行序列以及在没有使用第四个解压缩器输出335的矩阵行序列的矩阵行序列上都存在冗余,那么这些冗余就只能用于这个旁路复用器328。在两个相邻的矩阵行间没有旁路复用器328的情况下,将要放置两个解压缩器级,而不是一个。
图3C示出图3B的解压缩器块308的解压缩器级316之一的内部结构。解压缩器级316包括32个XOR门330,在该XOR门330的一个输入上安排了相应的AND门331的输出。在另一个输入,每个XOR门330接收前一矩阵行输入103的相应数。每个AND门331在ci输入318处从ci寄存器319接收溢出条件值,而其他输入与多项式尾部行输入pt相连。所计算的函数构成下一矩阵行并且被提供为解压缩器级316的32位输出101。与从前一矩阵行中生成每个矩阵行的最高有效位不同,最高有效位被分开存储在ci寄存器319(见图3A)内,也即为每个所得矩阵行存储一位,并且将最高有效位经由ci输入321明确地提供给解压缩器级316。因为在解压缩过程中解压缩器级316被用于若干矩阵行,所以将若干ci值从ci寄存器319提供给ci输入。因此,在ci寄存器319与ci输入318之间安排了复用器(未示出)以用来选择相应的位。通过将左移修改成左旋操作,输入bij加强了双射行为。双射行为的意思是由解压缩器级316所计算的函数具有逆。因此,如果希望在解压缩器级316得到给定的输出值,那么可确定将创建这个想要输出值的输入。这里,将前一矩阵行103的最高有效位与输入bij一起导向AND门329,以使输入bij确定需要哪一个双射模式。这个信号由矩阵的冗余模式来确定。在CRC模式的例子中,在次数中断的地方(也即在xd处)就是将要设置双射模式的位置。当解压缩器级316正在处理非冗余矩阵行时,也即当从解压缩器级316的解压缩器输出335把从矩阵存储器306中读取的矩阵行提供给下一矩阵寄存器302时,通常使用CRC模式,该解压缩器输出335在经过一个或多个解压缩器级316、318、320、322之后连接到下一矩阵寄存器302的特定入口。在示例性实施例中,最后的解压缩器级322(见图3B)不需要这个输入bij,因为如果在非冗佘矩阵行之前使用它那么可以经由复用器326把下一矩阵行输出直接从矩阵存储器306馈入下一矩阵寄存器302。
替代于使用复用器或类似电路组件来为解压缩器级320创建旁路路径,图3C中所示出的实施例允许对解压缩器级316内所存储的矩阵行进行修改,但是所添加的两个门329和330加强了双射行为。这允许驱动从矩阵存储器306读取的矩阵行穿过解压缩器级316到达它的解压缩器输出335,也即没有一点修改。通过这种方式,若干解压缩器级的组可在具有下一矩阵寄存器矩阵行到解压缩器输出335的固定的关联的条件下使用,而同时提供了允许在各解压缩器块308内的任何位置使非冗余矩阵行与解压缩器级316、318、320、322相关联的灵活性。
对于在解压缩器块308、310、312、314之间的前向边界处与在解压缩器级316、318、320、322的解压缩器输出335不相关联的每个非冗余矩阵行,相关联的解压缩器级316、318、320、322所位于的解压缩器块308、310、312、314与新输入字一起使用,以把所存储的矩阵行提供给下一矩阵寄存器302。因此,当非冗余矩阵行全部落入相同的解压缩器级输出335时,可能会产生解压缩器设备300的不平衡行为。
在每个解压缩器级316、318、320、322处的解压缩器输出335具有与下一矩阵寄存器302中若干矩阵行的固定连接。当矩阵内的矩阵行的数目不能被每个都具有相同数目的解压缩器级316、318、320、322(如同在图3中所示的示例性实施例中的情况)的解压缩器块308、310、312、314的数目除尽时,就会存在比其他解压缩器级连接到更少的矩阵行的解压缩器级316、318、320、322。优选地,使用这个非规则性以对各种实施例中的具体应用环境而言更加高效的方式来安排块边界与矩阵行的关联。
例如,对于CRC计算器,多项式次数8、12、16和32很常见,也即在典型的应用场合中比其他次数更加经常地出现。对于每个解压缩器块308、310、312、314的四个解压缩器级316、318、320、322,在示例性实施例中,块边界应当在第七个矩阵行之后、第十一个矩阵行之后以及在第十五个矩阵行之后被关联。此外,对于次数32,第一个矩阵行也应当与块边界相关联。因此,在示例性实施例中,非规则性位于第三个矩阵行之后,也即解压缩器块308内的第三个解压缩器级320的输出只与一个下一矩阵寄存器矩阵行相连。作为结果,对于上面所提及的常见的情形,相关的解压缩器块308、310、312、314不需要两次使用两个不同的已读取的矩阵行。
图4示出在本发明的示例性实施例中的可配置流型CRC计算单元400的示意性图示。该CRC计算单元400包括与矩阵解压缩器单元404相连的矩阵存储器402,矩阵解压缩器单元404再与当前矩阵寄存器406相连。矩阵解压缩器单元404相当于逻辑电路150,并且根据上述方法来执行矩阵解压缩。当前矩阵寄存器406的输出407与矩阵向量乘法单元410相连。CRC计算单元400还包括数据输入408,其与加法器409的输入相连,该加法器409的另一个输入与矩阵向量乘法单元410的输出相连。加法器409具有与校验和寄存器单元412的输入相连的输出。校验和寄存器单元412的输出提供对矩阵向量乘法单元410的另一个输入,并且还可用作为CRC计算单元400的校验和输出414。矩阵向量乘法单元410将校验和寄存器412的内容与来自当前矩阵寄存器406的已解压缩矩阵相乘。如上面参考图1至3所描述,这个乘法步骤可以通过把不同的已解压缩矩阵从矩阵存储器402提供到当前矩阵寄存器406中来进行配置。
可以对这里所描述的技术和安排做各种变更和修改,这对本领域技术人员而言是很明显的。可以全部或部分地结合所示出的实施例的任何部分。
可以用包括计算机程序代码工具的计算机程序单元的形式来编码所描述的方法,当在数据处理系统的处理器内装载该计算机程序代码工具时,该计算机程序代码工具对该处理器进行配置以执行提供具有多个冗余矩阵行的已解压缩矩阵的方法。
此外,可以用硬件、软件或硬件和软件的组合的形式来实现本发明。可以在一个计算机系统中以集中的形式,或者以不同的单元遍布在若干互连的计算机系统的分布式的形式来实现根据本发明的方法。适用于执行这里所描述的方法的任何类型的计算机系统或其他装置都是合适的。典型的硬件和软件组合可以是带有计算机程序的通用计算机系统,当装载并执行该计算机程序时,该计算机程序控制该计算机系统以使它执行这里所描述的方法。还可把本发明内嵌到计算机程序产品中,其包括使得这里所描述的方法得以实现的所有特征,并且当其在计算机系统中被装载时能够执行这些方法。
当前上下文中的计算机程序或计算机程序工具意指以任何语言、代码或符号的形式的一组指令的任何表达式,该组指令旨在使具有信息处理能力的设备直接地或在下面两种情形的任何一个之后或同时在这两种情形之后执行具体功能,这两种情形是a)转换到另一种语言、代码或符号;b)以不同的材料形式再现。
权利要求
1.一种提供具有多个冗余矩阵行的已解压缩矩阵的方法,所述方法包括以下步骤从矩阵存储器中读取所选的至少包括所述矩阵的全部非冗余矩阵行的矩阵行,从所述已读取的矩阵行计算所述矩阵的剩余矩阵行,其中同时计算若干所述矩阵行,将所述已读取的矩阵行和所述已计算的剩余矩阵行作为已解压缩的矩阵提供给输出矩阵寄存器。
2.根据权利要求1所述的方法,还包括以下步骤提供表示所述所得的已解压缩矩阵内的所述非冗余矩阵行的位置的数据以确定选择哪些矩阵行供读取。
3.根据权利要求1或2所述的方法,其中所述方法被用于在可配置CRC计算内进行矩阵的解压缩。
4.一种用于对具有多个冗余矩阵行的矩阵进行解压缩的解压缩器设备,所述设备包括矩阵寄存器,其用于在其中存储所选择的至少包括所述矩阵的全部非冗余矩阵行的矩阵行,逻辑电路,其用于从已读取的矩阵行计算所述矩阵的剩余矩阵行,其中所述逻辑电路包括用于从所读取的矩阵行同时计算所述剩余矩阵行的若干解压缩器块,以及输出矩阵寄存器,其用于提供所述已读取和所述已计算的剩余矩阵行作为已解压缩的矩阵。
5.根据权利要求4所述的设备,其中所述逻辑电路包括至少一个用于存储矩阵行以供所述解压缩器块对它们进行再次使用的下一矩阵寄存器。
6.根据权利要求4或5所述的设备,其中所述解压缩器块包括用于从一个已读取的矩阵行计算若干矩阵行的若干解压缩器级。
7.根据权利要求6所述的设备,其中所述解压缩器级包括多项式次数输入,其传送表示所述所得的已解压缩矩阵内的所述非冗余矩阵行的位置的数据。
8.根据权利要求4至7中之一所述的设备,其中每个解压缩器块包括用于在其中存储所述所得矩阵行的解调寄存器,并且其中所述解压缩器块以循环方式互连。
9.根据权利要求6和8所述的设备,其中所述解压缩器块的至少其一包括对两个或更多所述解压缩器级的解压缩器输出进行复用的旁路复用器。
10.根据权利要求6所述的设备,其中所述解压缩器级包括用于加强预定的解压缩器输出的双射输入。
11.根据权利要求4至10中任何一项所述的设备,其中所述输出矩阵寄存器连接到处理单元用于可配置的循环冗余校验计算。
全文摘要
公开了一种对具有多个冗余矩阵行的矩阵进行解压缩的方法。所述方法包括以下步骤从存储器中读取所选的至少包括所述矩阵的全部非冗余矩阵行的矩阵行,以及从所述已读取的矩阵行计算所述矩阵的剩余矩阵行,其中同时计算若干所述矩阵行。把所述已读取的和已计算的剩余矩阵行作为已解压缩的矩阵提供给输出矩阵寄存器。
文档编号G06F11/10GK1987801SQ200610153848
公开日2007年6月27日 申请日期2006年9月13日 优先权日2005年12月19日
发明者A·C·德林 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1