專利名稱:矩陣的解壓縮方法和設備的制作方法
技術領域:
本發明廣泛地涉及一種用來對具有多個冗余矩陣行的矩陣進行解壓縮的方法和設備。
背景技術:
在計算問題中,在數據處理期間常從存儲器中提供矩陣。一個實際例子是例如用于散列算法、完整性校驗和、消息摘要以及隨機數生成器的多項式余式環中的計算。在具體例子中,如果將多項式余式環用作校驗和,那么就把它們稱作循環冗余校驗(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·德林 申請人:國際商業機器公司