欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多項式數(shù)據(jù)處理運算的制作方法

文檔序號:6593159閱讀:359來源:國知局
專利名稱:多項式數(shù)據(jù)處理運算的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)的領(lǐng)域。更特別地,本發(fā)明涉及提供對多項式數(shù)據(jù)處理 運算的支持的數(shù)據(jù)處理系統(tǒng)。
背景技術(shù)
已知在數(shù)據(jù)處理系統(tǒng)中提供一些對多項式算法的支持。例如,已知提供對與里德 索羅門(Reed Solomon)編碼或橢圓曲線密碼術(shù)(EllipticCurve Cryptography)相關(guān)聯(lián)的 多項式算法的支持。一種提供這樣的支持的已知數(shù)據(jù)處理系統(tǒng)是由德州儀器公司(Texas Instruments)生產(chǎn)的被稱為TMS320C64x的數(shù)字信號處理器。這些數(shù)字信號處理器提供執(zhí) 行下列運算的指令a = b*c mod ρ (其中b是32位且c是9位),并且其中ρ被保持在特定的32位寄存器中(GPLYA或GPLYB)。該多項式指令的已知形式產(chǎn)生多項式乘法的余數(shù)部分,從而提供對里德索羅門編 碼的良好支持。這不適合于其他形式的多項式數(shù)據(jù)處理,例如與傳輸代碼的計算或信號加 擾相關(guān)聯(lián)的多項式數(shù)據(jù)處理。還已知為了信號加擾或生成傳輸代碼的目的而提供特定用途硬件。這樣的特定用 途硬件可以以能夠以高速執(zhí)行必需的計算的形式來提供,但是具有的缺點是消耗了用于 該專用功能的重要電路資源以及是相對不靈活的(inflexible)并且不適合于重復(fù)使用和 /或修改。

發(fā)明內(nèi)容
從本發(fā)明的一個方面來看提供了用于處理數(shù)據(jù)的裝置,該裝置包括響應(yīng)于程序指令來生成一個或多個控制信號的指令解碼器;具有多個寄存器的寄存器庫(register bank);以及處理電路,其耦合到所述指令解碼器和所述寄存器庫并且響應(yīng)于所述一個或多個 控制信號來對存儲在所述寄存器庫中的一個或多個數(shù)據(jù)值執(zhí)行對應(yīng)于所述程序指令的數(shù) 據(jù)處理運算;其中所述指令解碼器響應(yīng)于多項式除法指令來生成一個或多個控制信號,其控制所述 處理電路至少生成表示用分母多項式去除分子多項式的二元域內(nèi)的多項式除法的商多項 式的商值,所述分母多項式是由CiXi(NSiX))的和給出的N次多項式,其中C(N-I)到Ctl 表示存儲在所述寄存器庫的寄存器中的相應(yīng)位,以及cN = 1并且沒有被存儲在所述寄存器 中。本技術(shù)提供一種可編程數(shù)據(jù)處理裝置,其具有通用元件,例如指令解碼器、寄存器 庫和處理電路,所述處理電路具有另外提供多項式除法指令的能力,其至少生成表示由多 項式除法產(chǎn)生的商多項式的商值。此外,分母多項式被以下述形式存儲在寄存器庫的寄存 器內(nèi),所述形式即多項式的最高次項的系數(shù)被固定為“1”并且假設(shè)不需要被存儲在寄存器內(nèi)。這允許分母多項式具有比被用于存儲分母值的位寬度高一次的次數(shù),從而允許更有效 地使用寄存器庫的寄存器內(nèi)表示多項式除法的結(jié)果的位空間,以便更容易地與可能結(jié)果的 最大位寬度匹配。存儲分母多項式的系數(shù)的寄存器可以是N位寄存器。盡管要操作的多項式可以由存儲在寄存器內(nèi)的值以各種不同形式來表示,但是通 過將不同項的系數(shù)存儲在寄存器內(nèi)所存儲的值的相應(yīng)位位置處來表示它們更方便??梢砸圆煌捻樞蛟诩拇嫫鲀?nèi)所保持的值中存儲所述系數(shù),例如將最低次項的系 數(shù)存儲在最高有效位位置處進行到將最高次項的系數(shù)存儲在最低有效位位置處,或者正好 相反(例如類似于低位在前或高位在前存儲)。分子多項式通常具有比分母多項式更高的次數(shù),并且因此方便的實施例用存儲在 寄存器庫內(nèi)的兩個N位存儲器或一個2N位寄存器(當(dāng)在該寄存器庫內(nèi)提供有這樣的更寬 寄存器(例如累加寄存器)的時候)內(nèi)的2N位分子值來表示分子多項式。多項式除法指令還可以生成表示由多項式除法產(chǎn)生的余數(shù)多項式的余數(shù)值以及 表示商多項式的商值。當(dāng)商多項式用于生成加擾信號、傳輸代碼等等時,余數(shù)多項式還用于 其他情況,并且因此在根據(jù)多項式除法指令生成這二者的情況下是方便的。余數(shù)值和商值可以被方便地存儲在寄存器庫的相應(yīng)N位寄存器內(nèi)。當(dāng)所使用的寄存器庫包括由程序指令而非多項式除法指令使用的多個通用標(biāo)量 寄存器時,實施該技術(shù)的效率被改進。當(dāng)數(shù)據(jù)處理系統(tǒng)另外提供結(jié)合上述多項式除法指令的多項式乘法指令時,并入了 多項式除法指令的該數(shù)據(jù)處理系統(tǒng)的普遍適用性以及針對各種函數(shù)重復(fù)使用該系統(tǒng)的能 力被增強。盡管通??赡苄枰獦?biāo)量形式的多項式除法指令,但是在一些實施例中還有可能期 望提供作為矢量指令的多項式除法指令,其中分母值是標(biāo)量值,因為所述分母值通常將并 不頻繁地改變并且需要被應(yīng)用于長矢量序列的分子值以生成矢量序列的商值。從本發(fā)明的另一個方面來看提供了一種處理數(shù)據(jù)的方法,其包括下述步驟解碼程序指令以生成一個或多個控制信號;響應(yīng)于所述一個或多個控制信號,對存儲在具有多個寄存器的寄存器庫中的一個 或多個數(shù)據(jù)值執(zhí)行對應(yīng)于所述程序指令的數(shù)據(jù)處理運算;其中所述解碼響應(yīng)于多項式除法指令來生成一個或多個控制信號,該一個或多個控制 信號控制至少生成表示用分母多項式去除分子多項式的二元域上的多項式除法的商多項 式的商值,所述分母多項式是由CiXi(NSiX))的和給出的N次多項式,其中c(N-l)到Ctl 表示存儲在所述寄存器庫的寄存器中的相應(yīng)位,以及cN = 1并且沒有被存儲在所述寄存器 中。將會認(rèn)識到本發(fā)明的又一個方面是提供計算機程序,所述計算機程序并入了上文 所討論的以控制根據(jù)本技術(shù)的硬件的多項式除法指令。


現(xiàn)在將參考附圖描述僅以示例方式給出的本發(fā)明的實施例,其中圖1示意性地示出包括對多項式除法指令的支持的數(shù)據(jù)處理裝置;
圖2示意性地示出多項式除法指令的語法;圖3示意性地示出示例多項式除法運算;圖4示意性地示出用于響應(yīng)于多項式除法指令執(zhí)行多項式除法運算的電路;圖5示出矢量多項式除法指令的示例語法;圖6示出兩種可替換的方式,其中多項式可以由存儲在寄存器中的值表示;以及圖7示意性地示出多項式乘法指令的語法。
具體實施例方式圖1示出采用耦合到存儲器6的處理器4的形式的數(shù)據(jù)處理裝置2。存儲器6存 儲程序指令8 (例如用于執(zhí)行信號加擾的程序指令),以及經(jīng)歷處理運算的數(shù)據(jù)值(例如形 成要被加擾并傳輸?shù)牧鞯臄?shù)據(jù)值10)。處理器4包括由N位寄存器(例如32位寄存器)構(gòu)成的寄存器庫12和(可選 地)一些2N位寄存器14,所述2N位寄存器14被提供用作與乘法累加指令相關(guān)聯(lián)的累加寄 存器。包括乘法器16、移位器18和加法器20的處理元件在由指令解碼器22生成的控制信 號的控制下響應(yīng)于在從存儲器6提取程序指令時沿著指令管線24進行程序指令處理來執(zhí) 行處理運算。處理器4是具有標(biāo)量寄存器庫12、14的通用處理器,所述標(biāo)量寄存器庫12、14 用于響應(yīng)于從存儲器6提取的程序指令來執(zhí)行通用數(shù)據(jù)處理運算,例如標(biāo)準(zhǔn)邏輯和算術(shù)運 算。由指令解碼器22生成的控制信號配置數(shù)據(jù)處理元件16、18、20以執(zhí)行所期望的數(shù)據(jù)處 理運算。此外,在處理器4內(nèi)提供多項式除法電路26,其響應(yīng)于由指令解碼器22生成的控 制信號來(經(jīng)由寄存器12、14)對從存儲器6檢索到的數(shù)據(jù)值執(zhí)行多項式除法運算。將在 下文中進一步描述這些多項式除法運算和多項式除法指令。圖2示意性地示出多項式除法指令DIVL. Pn的語法。在語法DIVL. Pn (以及隨后 討論的代碼中的divl_pn)中,“η”是運算的寬度(例如8、16或32),并且可以小于寄存器 的寬度“N”。在下面的示例中,假設(shè)N = η,但是將會認(rèn)識到當(dāng)N興η時(例如N = 32且η =8、16或32)還可以應(yīng)用本技術(shù)。多項式除法指令使用三個寄存器來保持其輸入運算數(shù)。 在該示例中,這些寄存器是寄存器庫12內(nèi)的N位寄存器。表示分子多項式的分子值被存儲 在寄存器r0和rl中。分子值因此是2N位值。表示分母多項式的分母值被存儲在寄存器 r2中。分母值表示分母多項式,其中假設(shè)該分母多項式以其具有系數(shù)“1”的最高次項開始, 并且因此分母值僅需要表示所述最高次項之后的各項的系數(shù)。這允許分母多項式包括比寄 存器r2的寬度大一的最大項數(shù)。這是一個優(yōu)點,因為根據(jù)這樣的多項式除法而得到的余數(shù) 值將具有比分母值小一的位長,并且因此在寄存器r2和其中存儲有余數(shù)值的寄存器(r4) 具有相同的寬度時所述余數(shù)值將必定適合寄存器大小,而不會浪費寄存器位空間。因此,在 32位寄存器的情況下,分母商可以具有33個項并且余數(shù)商可以具有32個項。如將在圖2中看到的那樣,多項式除法指令DIVL. Pn將表示商多項式的商值返回 到寄存器r3中,并且將表示余數(shù)多項式的余數(shù)值返回到寄存器r4中。在所示出的語法中, 將會看到除了具有由存儲在寄存器r2中的分母值的位指定的系數(shù)的項之外,分母商還被 擴展成具有最高次項xN。分子多項式將由存儲在寄存器rl內(nèi)的系數(shù)所指定的項作為其高 次部分(被表示為通過乘以Xn增加到高次部分),其中利用具有從寄存器rO得到的系數(shù)的項來形成分子多項式的低次部分。將會看到,在該一般的語法中由變量N表示被操作的多項式的次數(shù)。將會認(rèn)識到, 根據(jù)數(shù)據(jù)處理需求,這可以采用各種不同的值,并且被操作的多項式可以是例如8、16或32 次。N的其他值也是可以的。在N = 32的情況下,一種檢查多項式除法指令的方式是其給出等同于下面的C程 序代碼的結(jié)果poly32_t q = x0, r = xl, ρ = x2 ;int C, i ;for(i = 0 ;i < 32 ;i++){C = r >> 31 ;r = r << 1 ;if (C){r = r"p ;}if (q >> 31){r = r"l ;}q = (q << 1) |C ;}*x3 = q ;/* ((xl < < 32) +x0) div ((1 < < 32) +x2) */return r ;/* ((xl < < 32) +x0)mod ((1 < < 32) +x2) */圖3示意性地示出示例多項式除法運算。在這種情況下,N = 4產(chǎn)生具有多達5 個項的分母多項式以及多達8個項的分子多項式。在所說明的示例中,分母多項式項χ3和 χ的系數(shù)都是零。因此,分母多項式是x4+x2+l。存儲在寄存器r2內(nèi)的分母值是“0101”,并 且在其最高有效端處擴展了值“1”以給出分母多項式的各系數(shù),因為假設(shè)分母多項式內(nèi)的 最高次項總是具有系數(shù)“1”。本領(lǐng)域技術(shù)人員將會認(rèn)識到這樣的假設(shè)可能需要分母多項式 的排列與任何分子多項式中的關(guān)聯(lián)排列,以便該假設(shè)是正確的。然而,分母多項式通常是準(zhǔn) 固定的值并且因此一般不是每個計算都需要這樣的分母多項式對齊。此外,分子多項式通 常是數(shù)據(jù)流并且因此一般通過挑選適當(dāng)?shù)拈_始點來實現(xiàn)這樣的數(shù)據(jù)流內(nèi)的對齊。多項式除法指令的作用類似于長除法指令。在二元域(即項的系數(shù)可以是“0”或 “1”)上的多項式算法中,加法和減法等同于異或函數(shù)。乘法等同于與運算。就相同次數(shù)的 項執(zhí)行這些運算。在所示出的示例中,由多項式除法指令產(chǎn)生的商多項式是“x3+x2+x”并且 這由商值“1110”表示。余數(shù)多項式是“1”并且這由余數(shù)值“0001”表示。圖4示意性地示出了用于實施例如可以由圖1的多項式除法電路26提供的4次 多項式除法指令的電路。如將會看到的那樣,用于響應(yīng)于多項式除法指令來執(zhí)行多項式除 法運算的電路包括與門和異或門的布置。這些門的輸入是分子值[n7:nJ和分母值[l:pj。
圖4中的電路由指令解碼器22響應(yīng)于多項式除法指令而生成的控制信號控制,其中電路被激活以供使用,并且從寄存器庫12中讀出分子值和分母值并且將它們提供給圖4的電路的輸入端。此外,類似地從圖4的電路的輸出端讀取商值[q,q。]和余數(shù)值[r,r。],并且將它們存儲回到寄存器庫12內(nèi)的寄存器中。在該示例中,將兩個寫入端口提供給寄存器庫12以便允許將商值、余數(shù)值二者都寫入到其中。
將會認(rèn)識到,圖4的電路用于計算4次多項式的除法。然而,該電路的規(guī)則擴展為更高次的多項式除法提供多項式除法指令運算,并且實際上,相同電路可以通過利用信號值的適當(dāng)多路傳輸(multiplexing of signal value)而重復(fù)用于這些不同次的除法,如本領(lǐng)域技術(shù)人員所熟悉的那樣。
下面給出用于執(zhí)行32、16或8次多項式除法的寄存器傳送語言(R/L)限定電路的示例。
>//P。lyn。mial divider
>
’+一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
一一一一一一一一一一一一一一一一一一
>//……………………………………
>//Divider Ex stage
>//……………………………………
>always@(posedge clk)
> if(cmd div en)begin
> d din h ex<一din a sz
> d_poly—ex<一din—b—sh;
> end
>
>//Common t erms
>assi.gn d—i—d—din—h—ex;
>assi.gn d_p—d_poly—ex;
>assi.gn d_p一29一d_p[30].d_p[31];
>assi.gn d_p一28一d_p[29].d_p[31];
>assi.gn d_p一27一d_p[28].(d_p[30]d_p[31]);
>assi.gn d_p一26一d_p[27].(d_p[31]&一(d_p[29].d_p[30]));
>assi.gn d_p一25一d_p[26].d_p[29].(d_p[31]&d—P[28]).(d_p[31]
>d P[30]);
>
>//Divider—l St 8一bits
>assign d_o[31]一d—i[31];
>assign d 0[30]一d i[30].
>(d i[31]&d P[31]);明書
=d_i[29]“
&d_p[31])"
&d_p_29);
=d_i[28]“
&d_p_28)"
&d_p_29)"
&d_p[31]);
=d_i[27]“
&d_p[31])"
&d_p_29)“
&d_p_28)"
&d_p_27);
=d_i[26]“
&d_p[31])~
&d_p_29)“
&d_p_28)"
&d_p_27)"
&d_p_26);
=d_i[25]“
&d_p[31])"
&d_p_29)"
&d_p_28)"
&d_p_27)"
&d_p_26)"
&(d_p[26rd_p[29r(d_p[31]&
)"(d_p[31]|d_p[30]))) ;assign d_o[24] = d_i[24]~
&d_p[31])~
&d_p_29)"
&d_p_28)"
&d_p_27)"
&d_p_26)"
& (d_p [26] “ d_p [29] “ (d_p [31] &
)“(d_p[31]Id_p[30])))"(d_i[31]&
)“(d_i[31]&d_p[31]&d_p[27])“
&d_p[30]&d_p[29])"
&d_p[31]);
}} &
}}&d_poly_ex),{30 {1'bO}}} ;assign
6/18 頁
9
}}&d_poly_ex),
>{29 {1' bO}}} ;assign dpp_28 = {{4{1' bO}},
>(rARlDPU_INT_WIDTH{d_o[28]}}&d_poly_ex),{28{1' bO}}} ;assign
>dpp_27 = {{5{1' bO}},(廠ARlDPU_INT_WIDTH{d_o[27]}}&d_poly_ex),
>{27 {1' bO}}} ;assign dpp_26 = {{6{1' bO}},
>(rARlDPU_INT_WIDTH{d_o[26]}}&d_poly_ex),{26{1' bO}}} ;assign
>dpp_25 = {{7{1' bO}},
>(rARlDPU_INT_WIDTH{d_o[25]}}&d_poly_ex),
>{25{1' bO}}} ;assign dpp_24 = {{8{1' bO}},
>(rARlDPU_INT_WIDTH{d_o[24]}}&d_poly_ex),{24{1' bO}}} ;assign
>dp_24 = (({d_i, {32{1' bO}}}"dpp_31)"dpp_28)“((dpp_30"dpp_29)
>"dpp_27)“(dpp_26"dpp_25)"dpp_24 ;
> > > > >
/Divider -2nd 8-bits
assign assign
>assign d_o
>
>
>assign d_o
>
> >
>assign d_o
>
> > >
>assign d_o
>
> > > >
>assign d_o
>
> >
23] = dp_24[23+32]; 22] = dp_24[22+32]" dp_24[23+32]&d_p[31]) 21] = dp_24[21+32]" dp_24[22+32]&d_p[31]) dp_24[23+32]&d_p_29); 20] = dp_24[20+32]" dp_24[23+32]&d_p_28)“ dp_24[22+32]&d_p_29)“ dp_24[21+32]&d_p[31]) 19] = dp_24[19+32]" dp_24[20+32]&d_p[31]) dp_24[21+32]&d_p_29)“ dp_24[22+32]&d_p_28)“ dp_24[23+32]&d_p_27); 18] = dp_24[18+32]" dp_24[19+32]&d_p[31]) dp_24[20+32]&d_p_29)“ dp_24[21+32]&d_p_28)“ dp_24[22+32]&d_p_27)“ dp_24[23+32]&d_p_26); 17] = dp_24[17+32]" dp_24[18+32]&d_p[31]) dp_24[19+32]&d_p_29)“ dp_24[20+32]&d_p_28)“
100172]>(dp_24[21+32]&d_p_27)“0173]>(dp_24[22+32]&d_p_26)“0174]>(dp_24[23+32]&(d_p[26]“d_p[29]“(d_p[31]&0175]>d_p[28]r (d_p[31] |d_p[30]))) ;assign d_o[16] = dp_24[16+32]"0176]>(dp_24[17+32]&d_p[31]r0177]>(dp_24 [18+32] &d_p_29)“0178]>(dp_24 [19+32] &d_p_28)“0179]>(dp_24[20+32]&d_p_27)“0180]>(dp_24[21+32]&d_p_26)“0181]>(dp_24[22+32]&(d_p[26]“d_p[29]“(d_p[31]&0182]>d_p[28])“(d_p[31]Id_p[30])))"(dp_24[23+32]&0183]>d_p[25])“(dp_24[23+32]&d_p[31]&d_p[27])"0184]>(dp_24[23+32]&d_p[30]&d_p[29])“0185]>(dp_24[23+32]&d_p[31]);0186]>assign dpp_23 = {{9{1' bO}},( ΓARlDPU_INT_WIDTH{d_o[23]}} &0187]>d_poly_ex),{23{1' bO}}} ;assign dpp_22 = {{10{1' bO}},0188]>(fARlDPU_INT_WIDTH{d_o[22]}}&d_poly_ex),{22 {1' bO}}} ;assign0189]>dpp_21 = {{11{1' bO}},(廠ARlDPU_INT_WIDTH{d_o[21]}}&d_poly_ex),0190]>{21 {1' bO}}} ;assign dpp_20 = = {{12{1' bO}},0191]>(fARlDPU_INT_WIDTH{d_o[20]}}&d_poly_ex),{20 {1' bO}}} ;assign0192]>dpp_19 = = {{13{1' bO}},(ΓARlDPU_INT_WIDTH{d_o[19]}}&d_poly_ex)0193]>{19 {1' bO}}} ;assign dpp_18== {{14{1' bO}},0194]>(fARlDPU_INT_WIDTH{d_o[18]}}&d_poly_ex),{18 {1' bO}}} ;assign0195]>dpp_17 = {{15{1' bO}},0196]>(廠ARlDPU_INT_WIDTH{d_o[17]}}&d_poly_ex),0197]> {17{1' b0}}} ;assign dpp_16 = {{16{1' bO}},0198]> (rARlDPU_INT_WIDTH{d_o[16]}}&d_poly_ex),{16{1' bO}}} ;assign0199]> dp_16 = ((dp_24"dpp_23)"dpp_20)“((dpp_22"dpp_21)"dpp_19)“0200]> (dpp_18"dpp_17)"dpp_16 ;0201]>0202]>//--------------------------------------------0203]>//Divider Ex2 stage0204]>〃--------------------------------------------0205]>//Note that d_poly_ex is re-used in Ex2 (it must not change !)0206]>//REVISIT, merge Ex and Ex2 stages to reduce area0207]>0208]> alwaysi(posedge elk)0209]>if (cmd_div_ex) begin0210]>d_din_l_ex2 < = din—b_sh ;
11
,dp—16[470]};
= dp_ex2[15+32];
= dp_ex2[14+32]"
&d_p[31])
= dp_ex2[13+32]"
&d_p[31])"
&d_p_29);
= dp_ex2[12+32]"
&d_p[31])"
&d_p_29)“
&d_p_28);
= dp_ex2[11+32]"
&d_p[31])'
&d_p_29)“
&d_p_28)“
&d_p_27);
= dp_ex2[10+32]"
&d_p[31])'
&(d_p[31]'d_p[30]))
&d_p_28)“
&d_p_27)“
&d_p_26);
= dp_ex2[9+32]"
&d_p[31])'
&(d_p[31]''d_p[30]))
&d_p_28)“
&d_p_27)“
&d_p_26)“
&(d—p[26]' d_p[29]"(
)"(d_p[31]|d_P[30]))) ;assign d_o[8]
&d_p[31])"
&(d_p[31]'"d_p[30]))
&d_p_28)“
&d_p_27)“
&d_p_26)“
&(d—p[26]'d_p[29]"(
>d_p[28])“(d_p[31]Id_p[30])))"(dp_ex2[15+32]
>&d_p[25]r (dp_ex2[15+32]&d_p[31]&d_p[27]r
>(dp_ex2[15+32]&d_p[30]&d_p[29])“
>(dp_ex2[15+32]&d_p[31]);
>assigndpp_15 = {{17{1' bO}},(ΓARlDPU_INT_WIDTH{d_o[15]}}&
>d_poly_ex),{15{1' b0}}} ;assign dpp_14 = {{18{1' bO}},
>(fARlDPU_INT_WIDTH{d_o[14]}}&d_poly_ex),{14{1' bO}}} ;assign
>dpp_13={{19{1' bO}},(rARlDPU_INT_WIDTH{d_o[13]}}&d_poly_ex),
>{13{1'bO}}} ;assign dpp_12 = {{20{1' bO}},
>(fARlDPU_INT_WIDTH{d_o[12]}}&d_poly_ex),{12{1' bO}}} ;assign
>dpp_ll={{21{1' bO}},(rARlDPU_INT_WIDTH{d_o[ll]}}&d_poly_ex),
>{11{1'bO}}} ;assign dpp_10 = {{22{1' bO}},
>(fARlDPU_INT_WIDTH{d_o[10]}}&d_poly_ex),{10{1' bO}}} ;assign
>dpp_9 = {{23{1' bO}},(廠ARlDPU_INT_WIDTH{d_o[9
>]}}&d_poly_ex),{9{1' bO}}} ;assign dpp_8 = {
>{24 {1' bO}},(廠ARlDPU_INT_WIDTH{d_o[8]}}&
>d_poly_ex), {8{1' bO}}} ;assign dp_8 = ({{32{1' bO}},d_din丄ex2}
>"dp_ex2)"((dpp_15"dpp_14)"dpp_ll)" ((dpp_13"dpp_12)“
>dpp_10)“(dpp_9"dpp_8);
>
>//Divider -2nd 8-bits
>assignd_o[7] = dp_8[7+32];
>assignd_o[6] = dp_8[6+32]“
>(dp_8[7+32]&d_p[31]);
>assignd_o[5] = dp_8[5+32]“
>(dp_8[6+32]&d_p[31]r
>(dp_8[7+32]&d_p_29);
>assignd_o[4] = dp_8[4+32]“
>(dp_8[7+32]&d_p_28)“
>(dp_8[6+32]&d_p_29)“
>(dp_8[5+32]&d_p[31]);
>assignd_o[3] = dp_8[3+32]“
>(dp_8[4+32]&d_p[31])"
>(dp_8[5+32]&d_p_29)“
>(dp_8[6+32]&d_p_28)“
>(dp_8[7+32]&d_p_27);
>assignd_o[2] = dp_8[2+32]“
>(dp_8[3+32]&d_p[31]r
>(dp_8[4+32]&(d_p[31]"d_p[30]))“
>(dp_8[5+32]&d_p_28)“
>(dp_8[6+32]&d_p_27)“
>(dp_8[7+32]&d_p_26);
>assign d_o[l] = dp_8[l+32]"
>(dp_8[2+32]&d_p[31]r
>(dp_8[3+32]&(d_p[31]"d_p[30]))“
>(dp_8[4+32]&d_p_28)“
>(dp_8[5+32]&d_p_27)“
>(dp_8[6+32]&d_p_26)“
>(dp_8[7+32]&(d_p[26]“d_p[29]“ (d_p [31]&
>d_p[28])"(d_p[31]|d_p[30]))) ;assign d_o
= dp_8

>(dp_8[l+32]&d_p[31]r
>(dp_8[2+32]&(d_p[31]"d_p[30]))“
>(dp_8[3+32]&d_p_28)“
>(dp_8[4+32]&d_p_27)“
>(dp_8[5+32]&d_p_26)“
>(dp_8[6+32]&(d_p[26]“d_p[29]“ (d_p[31]&
>d_p[28])“(d_p[31]Id_p[30])))"(dp_8[7+32]&
>d_p [25]) “ (dp_8[7+32]&d_p[31]&d_p[27]r
>(dp_8[7+32]&_p[30]&d_p[29])“
>(dp_8[7+32]&d_p[31]);
>assign dpp_7 = {{25{1' bO}},( ΓARlDPU_INT_WIDTH{d_o[7]}} &
>d_poly_ex), {7{1' bO}}} ;assign dpp_6 = {{26{1' bO}},
>(fARlDPU_INT_WIDTH{d_o[6]}}&d_poly_ex),{6{1' bO}}} ;assign
>dpp_5 = {{27{1' bO}},(廠ARlDPU_INT_WIDTH{d_o[5]}}&d_poly_ex),
>{5{1' bO}}} ;assign dpp_4 = {{28{1' bO}},
>(fARlDPU_INT_WIDTH{d_o[4]}}&d_poly_ex),{4{1' bO}}} ;assign
>dpp_3 = {{29{1' bO}},(廠 AR1DPU—INT_WIDTH{d_o [3]}} &d_poly_ex),
>{3{1' bO}}} ;assign dpp_2 = {{20{1' bO}},
>(fARlDPU_INT_WIDTH{d_o[2]}}&d_poly_ex),{2{1' bO}}} ;assign
>dpp_l = {{31{1' bO}},(AR1DPU_INT_WIDTH{d_o[1]}}&
>d_poly_ex), {1 {1' bO}}} ;assign dpp_0 = {
> {32 {1' b0}},(廠ARlDPU_INT_WIDTH{d_o
}}&d_poly_ex)} ;assign dp
>=((dp_8"dpp_7)“dpp_4)“((dpp_6"dpp_5)"dpp_3)“(dpp_2"
> dpp_l)“dpp_0 ;
>
>//------------------------
>//Divider Wr stage
>〃------------------------>always § (posedge elk)
>if (cmd_div_ex2)begin
>dout_wr < = {dp_ex2[63:48],d_o[15:0],dp_0[31:0]};
>end
>
>assign d_rout_wr = cmd_size_wr[1] ? dout_wr[31:0](
> > > >
cmd_size_wr
? {{16{1' b0}}, dout_wr[3116]} {{24{1' b0}}, dout_wr[31:24]});
> >
7Output>> assign{dout, rout} = cmd_div_wr ? {dout_wr[63:32], d_rout-wr}> m_out ;圖5示出可以用于矢量多項式除法指令的語法。該語法類似于圖2中所示出的語 法,除了存儲分子值和所得到的商值以及余數(shù)值的寄存器被矢量寄存器代替之外。分母保 持存儲在標(biāo)量寄存器中的標(biāo)量值,因為將會認(rèn)識到對于長序列的分子值來說分母商和分母 值通常將是常數(shù)。這是與用于并行處理要被傳輸?shù)亩鄠€信號數(shù)據(jù)流的加擾器程序相關(guān)聯(lián)的 行為的類型。商多項式和商值形成要被傳輸?shù)木哂斜仍嫉姆肿又蹈m合于傳輸?shù)奶匦缘?數(shù)據(jù)(例如分子值內(nèi)的長序列恒定位值將被變成更容易傳輸?shù)纳讨祪?nèi)位值的交替模式)。 本技術(shù)的生成商值的多項式除法指令非常適合于供這樣的試圖加擾要被傳輸?shù)男盘柤訑_ 器程序使用。圖6示出其中可將多項式的項的系數(shù)存儲在寄存器內(nèi)的兩種方式。特別地,最高 次項的系數(shù)可以被存儲在寄存器內(nèi)的最高有效位位置或最低有效位位置,所述寄存器用于 存儲表示多項式系數(shù)的值。接著可以從該相關(guān)的選擇端點推斷出其他系數(shù)。這類似于系數(shù) 按照高位在前或低位在前的形式存儲在寄存器內(nèi)。本技術(shù)的多項式除法指令提供了與多項式乘法指令結(jié)合的優(yōu)點,這也可以由相同 的處理器4支持。在這種情況下,可以添加類似于圖1中所示出的多項式除法電路26的附 加處理單元以便支持多項式乘法指令。圖7示出可以用于這種多項式乘法指令的語法。第 一多項式和第二多項式由存儲在相應(yīng)的寄存器r0和rl中的值表示。所得到的積多項式由 存儲在寄存器r2內(nèi)的積值表示。積多項式值是第一和第二多項式的長度的兩倍,并且因此 寄存器r2是存儲表示第一和第二多項式的第一和第二值的寄存器的長度的兩倍。實際上, 寄存器r2可以由兩個標(biāo)準(zhǔn)長度寄存器的組合提供。可替換地,寄存器庫12可以包括一個 或多個雙倍寬度寄存器,例如圖1中所示出的2N位寄存器14。這樣的雙倍寬度寄存器通常被提供用來供標(biāo)準(zhǔn)標(biāo)量算法中的乘法累積指令使用,并且因此可以重復(fù)用于這種類型的多 項式乘法指令。這些雙倍寬度寄存器還可以被用于存儲關(guān)于先前討論的多項式除法指令的 分子值。在這種情況下,雙倍寬度寄存器將代替圖2中所示出的寄存器rO和rl,其中單個 雙倍寬度寄存器存儲表示單個寄存器內(nèi)的分子多項式的所有系數(shù)的值。
在下面的說明性C代碼中給出包括不同寬度型式和并入了累加的型式的各種形 式的多項式乘法指令的運算。該代碼還包括多項式除法指令的類似表示。本領(lǐng)域技術(shù)人員 將會理解這些定義是可以用來生成響應(yīng)于指定運算的相關(guān)聯(lián)指令而執(zhí)行這些運算的相關(guān) 電路的這些指令的動作。 [0351;
^polynomial multiply long
poly8_t mull_p8(poly8_t xO, poly8_t xl, poly8_t *x2)
{
#ifdef_0PTIM0DE_ #pragrna OUT x2 #pragma INTRINSIC #endif
poly8_t q = xO, r = 0 ; int C, i ;
for(i = 0 ;i < 8 ;i++)
{
C = r>>7 ; r = r < < 1 ;
if(q>> 7)
{
r = r"xl ;
ι
q = (q<< 1) C;
}
*x2 = q ;/氺(xO氺xl)high 8 bits 氺/ return r (x0*xl)low 8 bits
}
polyl6_t mull—pl6(polyl6_t xO, polyl6_t xl, polyl6_t *x2)
{
#ifdef_0PTIM0DE_ #pragma OUT x2 #pragma INTRINSIC #endif
polyl6_t q = xO, r = 0 ;
16int C,ι ;
for(i = 0 ;i < 16 ;i++)
{
C = r >> 15 ; r = r < < 1 ;
if (q >> 15)
{
r = r"xl ;
ι
q = (q<< 1) C;
}
氺x2 = q ;/氺(xO氺χl)high 16 bits 氺/ return r ;/氺(xO氺xl)low 16 bits 氺/
}
poly32_t mull_p32(poly32_t xO, poly32_t xl, poly32_t *x2)
{
#ifdef_OPTIMODE_ #pragma OUT x2 #pragma INTRINSIC #endif
poly32_t q = xO, r = O ; int C, i ;
for(i = O ;i < 32 ;i++)
{
C = r >> 31 ; r = r < < 1 ;
if (q >> 31)
{
r = r"xl ;
ι
q = (q<< 1) C;
}
*x2 = q ;/氺(xO氺xl)high 32 bits 氺/ return r ;/氺(xO氺xl)low 32 bits 氺/
}
-------------------------------------------------*
氺polynomial multiply accumulate long *-------------------------------------------------
poly8 t mlal p8 (poly8 t xO, poly8_t xl, poly8_t x2, poly8_t x3, poly8_t
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409 ;0410
0411
0412
0413
0414
0415 ;0416 :0417
0418
0419 '0420*x4){#ifdef_0PTIM0DE_#pragma OUT x4#pragma INTRINSIC#endifpoly8_t q = x2, r = O ;int C, i ;for(i = O ;i < 8 ;i++){C = r >> 7 ;r = r << 1 ;if (q >> 7){r = r"x3 ;}q = (q << 1) |C ;}*x4 = q"xl ;/*((xl << 8)+xO) + (x2*x3)high 8 bits */return r"xO ;/氺((xl << 8)+xO) + (x2氺x3) low 8 bits 氺/}polyl6_t mlal_pl6(polyl6_t xO,polyl6_t xl, poly 16_t x2, poly 16_t x3,polyl6_t *x4){#ifdef_OPTIMODE_#pragm£i OUT x4#pragma INTRINSIC#endifpolyl6_t q = x2, r = O ;int C, i ;for(i = O ;i < 16 ;i++){C = r >> 15 ;r = r << 1 ;if (q >> 15){r = r"x3 ;}q = (q << 1) |C ;
18*x4 = q"xl ;/*((xl << 16)+x0) + (x2*x3)high 16 bits */ return r"x0 ;/*((xl << 16)+x0) + (x2*x3) low 16 bits 氺/
}
poly32_t mlal_p32(poly32_t xO, poly32_t xl, poly32_t x2, poly32_t x3,
poly32_t 氺x4)
{
#ifdef_OPTIMODE_ #pragma OUT x4 #pragma INTRINSIC #endif
poly32_t q = x2, r = O ; int C, i ;
for(i = O ;i < 32 ;i++)
{
C = r >> 31 ; r = r < < 1 ;
if (q >> 31)
{
r = r"x3 ;
ι
q = (q<< 1) C;
}
*x4 = q"xl ;/*((xl << 32)+x0) + (x2*x3)high 32 bits */ return r"xO ;/*((xl << 32)+xO) + (x2*x3) low 32 bits */
}
-----------------------------------------------*
^polynomial long divide *-----------------------------------------------
poly8_t divl_p8(poly8_t xO, poly8_t xl, poly8_t x2, poly8_t *x3)
{
#ifdef_0PTIM0DE_ #pragma OUT x3 #pragma INTRINSIC #endif
poly8_t q = xO, r = xl, ρ = x2 ; int C, i ;
for(i = O ;i < 8 ;i++)
19C = r>> 7 ; r = r < < 1 ;
if(C)
{
r = r"p ;
ι
if(q>> 7)
{
r = r"l ;
ι
q = (q<< 1) C;
}
*x3 = q ;/*((xl << 8)+x0)div((l << 8)+x2)*/ return r ;/*((xl << 8)+x0)mod((l << 8)+x2)*/
}
polyl6_t divl_pl6(polyl6_t xO, polyl6_t xl, polyl6_t x2, poly 16_t *x3)
{
iiifdef_OPTIMODE_ #pragma OUT x3 #pragma INTRINSIC #endif
polyl6_t q = xO, r = xl, ρ = x2 ; int C, i ;
for(i = O ;i < 16 ;i++)
{
C = r >> 15 ; r = r < < 1 ;
if (C)
{
r = r"p ;
ι
if (q >> 15)
{
}
q = (q<< 1) C;
}
*x3 = q ;/*((xl << 16)+x0)div((l << 16)+x2)*/ return r ;/*((xl << 16)+x0)mod((l << 16)+x2)*/
CN 10}poly32_t divl_p32(poly32_t x0, poly32_t xl, poly32_t x2, poly32_t *x3){#ifdef OPTIMODE
#pragma OUT x3 #pragma INTRINSIC #endif
poly32_t q = xO, r = xl, ρ = x2 ; int C, i ;
for(i = O ;i < 32 ;i++)
{
C = r >> 31 ; r = r < < 1 ;
if (C)
{
r = r"p ;
if (q >> 31)}盡管上述技術(shù)可以由執(zhí)行包括上面提到的指令的一系列原生(native)指令的硬 件執(zhí)行,但是將會理解在替換實施例中,這樣的指令可以在虛擬機環(huán)境中執(zhí)行,其中所述指 令對所述虛擬機來說是原生的,但是所述虛擬機由在硬件上執(zhí)行的具有不同原生指令集的 軟件實施。該虛擬機環(huán)境可以提供模仿完全指令集的執(zhí)行的完全虛擬機環(huán)境或者可以部分 (例如僅一些指令,包括本技術(shù)的指令)被硬件捕獲并且被部分虛擬機模擬。更具體來說,上述重新布置指令可以被執(zhí)行為整個或部分虛擬機的原生指令,其 中虛擬機連同其下面的結(jié)合操作的硬件平臺一起來提供上述多項式處理。
r = r" 1 ;
q = (q<< 1) C;
*x3 = q ;/*((xl << 32)+x0)div((l << 32)+x2)*/ return r ;/*((xl << 32)+x0)mod((l << 32)+x2)*/
2權(quán)利要求
一種用于處理數(shù)據(jù)的裝置,包括響應(yīng)于程序指令來生成一個或多個控制信號的指令解碼器;具有多個寄存器的寄存器庫;以及處理電路,其耦合到所述指令解碼器和所述寄存器庫并且響應(yīng)于所述一個或多個控制信號來對存儲在所述寄存器庫中的一個或多個數(shù)據(jù)值執(zhí)行對應(yīng)于所述程序指令的數(shù)據(jù)處理運算;其中所述指令解碼器響應(yīng)于多項式除法指令來生成一個或多個控制信號,所述一個或多個控制信號控制所述處理電路至少生成表示用分母多項式去除分子多項式的二元域上的多項式除法的商多項式的商值,所述分母多項式是由cixi(N≥i≥0)的和給出的N次多項式,其中c(N 1)到c0表示存儲在所述寄存器庫的寄存器中的相應(yīng)位,以及cN=1并且沒有被存儲在所述寄存器中。
2.根據(jù)權(quán)利要求1所述的裝置,其中所述寄存器是N位寄存器。
3.根據(jù)權(quán)利要求1所述的裝置,其中所述寄存器庫包括多個N位寄存器。
4.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中由下述之一來表示多項式(i)具有作為M位寄存器的位k的項Xk的系數(shù)Ck的所述M位寄存器內(nèi)的值,其中 (M-I) > k > 0 ;以及( )具有作為M位寄存器的位(M-l)-k的項Xk的系數(shù)Ck的所述M位寄存器內(nèi)的值, 其中(M-I)彡k彡0。
5.根據(jù)權(quán)利要求3所述的裝置,其中所述分子多項式由存儲在所述多個N位寄存器的 兩個寄存器內(nèi)的2N位分子值表示。
6.根據(jù)權(quán)利要求1所述的裝置,其中所述分子多項式由存儲在所述多個寄存器的2N位 寄存器內(nèi)的2N位分子值表示。
7.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中所述處理電路由所述控制信號控制 以生成表示由用所述分母多項式去除所述分子多項式的多項式除法產(chǎn)生的余數(shù)多項式的 余數(shù)值,其中所述控制信號是所述指令解碼器響應(yīng)于所述多項式除法指令生成的。
8.根據(jù)權(quán)利要求7所述的裝置,其中所述余數(shù)值是存儲在所述多個寄存器的N位寄存 器內(nèi)的N位余數(shù)值。
9.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中所述商值是存儲在所述多個寄存器 的N位寄存器內(nèi)的N位商值。
10.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中所述多項式除法指令是由所述裝 置執(zhí)行以使用所生成的商值來對要傳輸?shù)男盘柤訑_的部分加擾器程序代碼。
11.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中所述寄存器庫包括由程序指令而 不是所述多項式除法指令使用的多個通用標(biāo)量寄存器。
12.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中所述指令解碼器響應(yīng)于多項式乘 法指令來生成一個或多個控制信號,所述一個或多個控制信號控制所述處理電路至少生成 表示用第二多項式去乘第一多項式的二元域上的多項式乘法的積多項式的積值。
13.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中所述多項式除法指令是具有作為 標(biāo)量值的所述分母值和作為矢量值的所述商值以及表示所述分子多項式的分子值的矢量 指令。
14.一種處理數(shù)據(jù)的方法,包括下述步驟解碼程序指令以生成一個或多個控制信號;響應(yīng)于所述一個或多個控制信號,對存儲在具有多個寄存器的寄存器庫中的一個或多 個數(shù)據(jù)值執(zhí)行對應(yīng)于所述程序指令的數(shù)據(jù)處理運算;其中所述解碼響應(yīng)于多項式除法指令來生成一個或多個控制信號,所述一個或多個控制信 號控制至少生成表示用分母多項式去除分子多項式的二元域上的多項式除法的商多項式 的商值,所述分母多項式是由CiXi(NSiX))的和給出的N次多項式,其中c(N-l)到Ctl 表示存儲在所述寄存器庫的寄存器中的相應(yīng)位,以及cN = 1并且沒有被存儲在所述寄存器 中。
15.根據(jù)權(quán)利要求14所述的方法,其中所述寄存器是N位寄存器。
16.根據(jù)權(quán)利要求14所述的方法,其中所述寄存器庫包括多個N位寄存器。
17.根據(jù)前述權(quán)利要求中的任一項所述的方法,其中由下述之一來表示多項式(i)具有作為M位寄存器的位k的項Xk的系數(shù)Ck的所述M位寄存器內(nèi)的值,其中 (M-I) > k > 0 ;以及( )具有作為M位寄存器的位(M-l)-k的項Xk的系數(shù)Ck的所述M位寄存器內(nèi)的值, 其中(M-I)彡k彡0。
18.根據(jù)權(quán)利要求16所述的方法,其中所述分子多項式由存儲在所述多個N位寄存器 的兩個寄存器內(nèi)的2N位分子值表示。
19.根據(jù)權(quán)利要求14所述的方法,其中所述分子多項式由存儲在所述多個寄存器的2N 位寄存器內(nèi)的2N位分子值表示。
20.根據(jù)權(quán)利要求14至19中任一項所述的方法,其中通過解碼所述多項式除法指令生 成的所述控制信號控制表示由用所述分母多項式去除所述分子多項式的多項式除法產(chǎn)生 的余數(shù)多項式的余數(shù)值的生成。
21.根據(jù)權(quán)利要求20所述的方法,其中所述余數(shù)值是存儲在所述多個寄存器的N位寄 存器內(nèi)的N位余數(shù)值。
22.根據(jù)權(quán)利要求14至21中任一項所述的方法,其中所述商值是存儲在所述多個寄存 器的N位寄存器內(nèi)的N位商值。
23.根據(jù)權(quán)利要求14至22中任一項所述的方法,其中所述多項式除法指令是被執(zhí)行以 使用所生成的商值來對要傳輸?shù)男盘柤訑_的部分加擾器程序代碼。
24.根據(jù)權(quán)利要求14至23中任一項所述的方法,其中所述寄存器庫包括由程序指令而 不是所述多項式除法指令使用的多個通用標(biāo)量寄存器。
25.根據(jù)權(quán)利要求14至24中任一項所述的方法,其中所述解碼響應(yīng)于多項式乘法指令 來生成一個或多個控制信號,所述一個或多個控制信號控制至少生成表示用第二多項式去 乘第一多項式的二元域上的多項式乘法的積多項式的積值。
26.根據(jù)權(quán)利要求14至25中任一項所述的方法,其中所述多項式除法指令是具有作為 標(biāo)量值的所述分母值和作為矢量值的所述商值以及表示所述分子多項式的分子值的矢量 指令。
27.一種包括計算機程序存儲介質(zhì)的計算機程序產(chǎn)品,所述計算機存儲介質(zhì)存儲有用 于控制根據(jù)權(quán)利要求14至26中任一項所述的方法來處理數(shù)據(jù)的裝置的計算機程序。
全文摘要
一種數(shù)據(jù)處理系統(tǒng)(2)包括響應(yīng)于多項式除法指令DIVL.PN來生成控制信號的指令解碼器(22),所述控制信號控制處理電路(26)執(zhí)行多項式除法運算。分母多項式由存儲在寄存器內(nèi)的分母值表示,其中假設(shè)該多項式的最高次項總是具有系數(shù)“1”以使得不需要將該系數(shù)存儲在存儲分母值的寄存器內(nèi)并且因此該分母多項式可以具有比可能對于單獨存儲分母值的寄存器內(nèi)的位空間高一次的次數(shù)。多項式除法指令返回分別表示商多項式和余數(shù)多項式的商值和余數(shù)值。
文檔編號G06F9/30GK101981542SQ200980110591
公開日2011年2月23日 申請日期2009年1月26日 優(yōu)先權(quán)日2008年3月26日
發(fā)明者D·H·賽姆斯, D·克肖, M·C·維策倫伯格 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
江门市| 咸宁市| 织金县| 东乌珠穆沁旗| 濉溪县| 石柱| 南平市| 临桂县| 班戈县| 出国| 民乐县| 尼木县| 焦作市| 朝阳县| 曲阳县| 珠海市| 出国| 育儿| 新余市| 新乡县| 吴堡县| 吉林市| 绥宁县| 威信县| 前郭尔| 龙里县| 观塘区| 鄂托克旗| 峨山| 苍梧县| 子长县| 响水县| 关岭| 慈溪市| 宿松县| 曲阜市| 广汉市| 临邑县| 伊金霍洛旗| 阳城县| 西贡区|