TW200945062A - Polynomial data processing operation - Google Patents
Polynomial data processing operation Download PDFInfo
- Publication number
- TW200945062A TW200945062A TW098106215A TW98106215A TW200945062A TW 200945062 A TW200945062 A TW 200945062A TW 098106215 A TW098106215 A TW 098106215A TW 98106215 A TW98106215 A TW 98106215A TW 200945062 A TW200945062 A TW 200945062A
- Authority
- TW
- Taiwan
- Prior art keywords
- polynomial
- value
- register
- bit
- instruction
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101100010316 Porphyromonas gingivalis (strain ATCC 33277 / DSM 20709 / CIP 103683 / JCM 12257 / NCTC 11834 / 2561) dpp7 gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000027455 binding Effects 0.000 description 1
- 238000009739 binding Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000011410 subtraction method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/726—Inversion; Reciprocal calculation; Division of elements of a finite field
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Error Detection And Correction (AREA)
- Semiconductor Integrated Circuits (AREA)
Description
200945062 六、發明說明: 【發明所屬之技術領域】 本發明是有關於資料處理系統。並且本發明特別是有 關提供對於多項式資料處理作業之支援的資料處理系 統。 【先前技術】 ❹ ❹ 已知在資料處理系統中提供—些對於多項式算術的支 援。例如’已知可提供對於肖Reeds〇1〇m〇n編碼或「棚 圓曲線加密」4目關聯之多項式算術的支援。提供此項支 援的一已知資料處理系統即為由Texas⑻㈣邮咖公司 按TMS3 2GC64x所生產的數位信號處理器。這些數位产 號處理器可提供一指令以執行下列作業: 一 ° a=b*c mod p (其中 h 或 ίο & - ^甲b為32位兀而c為9位元),並! 其中P被存持於一特疾的 行殊的32位兀*暫存器内(GPLY/ 或 gplyb) 已关形式之多項式指令可產獲一多項式乘法的餘 局部’提供對於ReedSGlG_ ^碼的良好支援。然此 不適合於其他形式的多項式資料處理,像是與信號擾 或傳輸數碼計算作業相關聯者^ ’、可紅號擾攪或產生傳輸數碼之目的提供特;
該指令解碼器回應於一多項式除法指令以產生一或 更夕控制信號,此等信號可控制該處理電路俾產生至少 200945062 目的硬體。此特殊目的硬體可為按一能夠按高速執行必 要計算作業之形式所提供,然缺點在於為此一專屬功能 需耗用顯著的電路資源’同時相當地不具彈性且不適於 重用及/或修改。 【發明内容】 自一態樣而觀之,本發明提供—種用於資料處理的設 備,其中含有: 一指令解碼器,此者回應於一程式指令以產生一或更 多控制信號; 一暫存器庫集,此者具有複數個暫存器;以及 處理電路,此者係經耦接於該指令解碼器和該暫存器 庫集,並且回應於該等一或更多控制信號,對經儲存在 =暫存器庫集内《一或更多資料值執行一對應於該程式 指令的資料處理作業;其令 商數值,此商數值表示一對於一分子多項式除以一分 母夕項式之二7L素領域上的多項式除法之商數多項式, 該^母多項式係- ^欠多項式,由β,Ν必的和所 給疋,其中C(N-U至C〇為經儲存在該暫存器庫集之一暫存 器内的個別位元,而同時〜=1並且不是儲存在該暫存器 5 200945062 本技術提供一種可程式化資料處理設備’此者具有像 是一指令解碼器、一暫存器庫集及處理電路的一般目的 構件,而額外地提供有一多項式除法指令的功能性,此 功能性可至少產生一表示一獲自一多項式除法之商數多 項式的商數值。此外,該分母多項式係經儲存在該暫存 器庫集的一暫存器内,其形式係該多項式之最高次項的 係數被固定為「1」,且為假定如此而無需儲存在一暫存 ❹ 器内。如此讓該分母多項式能夠具有一高於用以儲存該 分母值之位元寬度的階次,藉此供以更有效率地使用該 暫存器庫集之暫存器中的位元空間來表示該多項式分除 的結果’而更能隨即地符合可能結果的最大位元寬度。 儲存該分母多項式之係數的暫存器可為一 N位元暫存 器。 所操縱之多項式雖可按各種方式以藉由經儲存在該等 暫存器内的數值所表示’然藉由將對於不同項的係數儲 ® 存在經儲存於一暫存器内之數值的個別位元位置處來表 示該等多項式確為便易。 該等係數可按不同次序而儲存於經存持在該暫存器之 内的數值裡’像是按照最低次項為將其係數儲存在最顯 著位元位置處’朝向最高次項而其係數為儲存在最小顯 著位元位置處’或是與此方式相反(即如類似於小末尾或 大末尾儲存)。 該分子多項式比起該分母多項式經常會具有較高次, 且因而簡便具體實施例是以一經儲存在該暫存器庫集裡 6 200945062 的兩個Ν位元暫存器,或是當在該暫存器庫集裡提供較 寬的暫存器(即如累加器暫存器)時以一個2Ν位元暫存 器’内的2Ν位元分子數值來表示該分子多項式。 該多項式除法指令亦可產生一餘數值,此值表示一獲 自於該多項式除法的餘數多項式,以及表示該商數多項 式的商數值》該商數多項式雖適用於產生經擾碼信號、 傳輸數碼等等’然該餘數多項式於其他情況下亦可適 Ο
用’並因此若二者皆產生自該多項式除法指令則可為簡 便。 該餘數值及該商數值可為便易地儲存在該暫存器庫集 的個別Ν位元暫存器之内。 當所使用之暫存器庫集含有複數個由除該多項式除法 指令以外的程式指令所使用之一般目的純量暫存器時, 可改善本項技術之實作的效率性。 當合併於前述之多項式除法指令而另外提供一多項式 乘法指令時,可強化併入該多項式除法指令之資料處理 系統的-錢用'11以及針對各種函數重用肖系統的能 力。 該多項式除法指令雖經常被要求為按一純量形式,然 在一些具體實施例裡亦可能希嗲棘‘ J此布里按如一向量指令以提供 該多項式除法指令’且該分舟怒估总 茨刀母數值係一純量數值,原因 在於該分母數值通常並不舍噸黎沖_ _ 不會頻繁改變’同時需施用於分 子數值的長向量序列,囍以姦斗愈 猎以產生商數值的向量序列。 自另一態樣而觀之,本發明摆祉 ^ 尽發明楗供一種用於資料處理的 7 200945062 方法,包含下列步驟: 解碼一程式指令以產生—或更多控制信號: 回應於該等-或更多控制信號,對一或更多經儲存在 -具有複數個暫存器之暫存器庫集内的資料數值執行一 對應於該程式指令的資料處理作業;其中 ❹ 該解碼係回應於-多項式除法指令以產卜或更多 控制信號’此等信號可控制至少一商數值的產生作業, 此商數值表示-對於—分子多項式除以—分母多項式之 二元素領域上的多項式除法之商數多項式,該分母多項 式係-.N次多項式,由eixi·,N咖的和所給定,其中 —至。。為_存在該暫存器庫集之—暫存器内的個別 4 7G巾同時eN==1並且不是儲存在該暫存器之内。 將能瞭解本發明之一進一步態樣提供電腦程式,此等 電腦程式併入前述多項式除法指令以根據本揭技術進行 硬體控制》 自後載之本發明示範性㈣實施例的詳細說明,且併 同於隨附圖式而閱讀,將即能顯知本發明的該 目的、特性與優點。 八 【實施方式】 第1圖說明_嘗組老怖 一#掩# < 資枓處理設備2,此者係按一經耦接於 口己隐體6之處rm 〇» 入8… 理器4的形式。該記憶體6儲存程式指 ^ 疋用以執行信號擾攪的程式指令,以及待予處 8 200945062 理之資料數值’像是構成一待予攪擾和傳送之串流的資 料數值10。 該處理器4含有一暫存器庫集12,此者是由多個 元暫存器(即如32位元暫存器)以及(選擇性地)一些21^位 元暫存器14所構成,該等暫存器係經供置用以作為與多 個累加指令相關聯的累加器暫存器。含有一乘法器16、 一移位器18及一加法器20之處理構件可回應於沿一指 鲁 令管線24前進的程式指令’在當自該記憶體6擷取該指 令時’在由一指令解碼器22所產生之控制信號的控制下 執行處理作業《該處理器4係一具有一純量暫存器庫集 12、14之一般目的處理器,此者可用以回應於自該記憶 體ό所擷取的程式指令而執行一般目的之資料處理作 業’像疋正常邏輯和算術作業。由該指令解碼器22所產 生之控制信號可組態設定該資料處理構件16、18、2〇俾 執行所欲的資料處理作業。 〇 在該處理器4中所另提供者係一多項式除法電路26, 此者回應於由該指令解碼器22所產生之控制信號以對 自該記憶體6擷取(透過暫存器12、14)的資料數值進行 多項式除法。後文中將進一步說明該等多項式除法作業 及多項式除法指令。 第2圖略圖說明一多項式除法指令DiVL.Pn的語法。 在該語法DIVL.Pn中(及後文所述程式碼内的divl_pn), η」為該作業的寬度(即如8.、16或32),並且可小於該 暫存器的寬度「Ν」。下列範例中是假設Ν==η,然將能瞭 200945062 解本揭技術亦適用於當N知時(即如N=32且n==8、“或 32)。該多項式除法指令會利用三個暫存器以持存其輸入 運算70。在此範例中,這些暫存器為該暫存器庫集U之 内的N位元暫存器。該分子數值代表一分子多項式且 經儲存在暫存器⑽及Γ1之中。該分子數值因而為一 2N 位7L數值。分母數值代表該分母多項式,且經儲存在暫 存器r2之内。該分母數值代表該分母多項式而假定該 分母多項式是以其具有係數「1」的最高次項為起始,並 因此該分母數值僅需表示該等後隨於該最高次項的係 數。這可讓該分母多項式能夠納入較該暫存器rl之寬度 多一的最大項數。此係一項優點,原因在於自此一多項 式除法所獲得之餘數值將具有一小於該分母數值為一的 位元長度,且從而當該暫存器r2a及其中儲存有該餘數 值之暫存器(r4)具有相同的寬度時,能夠自然地適配於該 暫存器的大小而不致浪費暫存器位元空間。因此,在3 2 ❹位元暫存器的情況下,該分母可具有33項,而該餘值則 可具有32項。 即如可自第2圖所見’該多項式除法指令DlVL.Pn將 一表示該商數多項式的商數值送返至暫存器r3内,並將 一表示一餘數多項式的餘數值送返至暫存器以内。在所 述語法中’將能觀察到’除具有由經儲存於該暫存器r2 内之分母數值的位元所標定之係數的項以外,該分母多 項式係經沿展以·一最尚次項X 。該分子多項式係採如其 高次局部項為由經儲存在暫存器rl之内的係數所標定 200945062 (錯乘上 ,叩一厂叩該分子多項 式之低次局部則是由具有自該暫存 飞仔器Γ〇所取得之係數的 項所構成。 將能看㈣等所予操縱之乡料的階:欠係由該變數^ 而按此—般語法所表示。將能瞭解這可採取各種不同數 值’同時該等所予操縱之多項式可根據資料處 為例如8、16或32次。然其他數值❹亦為可能。 一種在N=32之情況下檢閱該多項式除法指令的方 為這可提供一等同於下歹|JC帛式碼的結果: " 爲㈣’内1,”2; f〇r(i=0;i<32;i++) C = r»31; r = r«l; if(C)
Γ==ΓΛ1; } } q = (q«l) I c; *Χ3 = n* return r (: 2xJ<<32)+x〇) div((l«32)+x2) */ , ((xl«32)+x〇) m〇(i ((1«32)+χ2) */ 第3圖略圖說明一範例多項式除法作業。
的情沉γ , 承仕此JV 可獲致一具有達五個項的分母多項式,以 達八個項认、 Λ ^ ^ 3 的为子多項式。在所述範例裡,該分母多項 X項兩者的係數為零。從而,該分母多項式為 200945062 + X2+1。儲存在暫存器r2之内的分母多項式為「〇1〇1」, 並且在其最顯著末端延伸一數值「L以提供對於該分母 多項式的係數,即如假設該分母多項式之内的最高次項 t是具有係數1」。熟諳本項技術領域之人士將能瞭 解此-假設可能會要求將該分母多項式排準(aiign_t) 於一任何分子多項式内的相關排準’藉以令此假設為正 確。然分母多項式經常為㈣定數值,且因而該分母多
項式的此—排準在正常情況下對於每-計算作業而言並 非必要。此外’該分子多項式通常為一資料串流,並因 而在該資料串流内之排準在正常情況下可藉由一適當的 開始點所達成。 該多項式除法指令的動作類似於一長除法指令。在一 二,素領域上的多項式算術中(亦即項的係數可為「〇」 ^」)力法及減法等同於一斥OR函數。乘法等同於 ^ 運算。這些操作是對於具有相同階次的項所執 行。、在所述範例裡,獲自於該多項式除法指令的商數多 項式為Χ + χ2 + x」’並且這是由「1110」所表示。而 、夕項式為Γ1」,同時這是由一餘數值「0001」所表 示0 入第4圖略圖說明一用以實作一階次4之多項式除法指 _ 、路像疋可由第i圖的多項式除法電路26所提供 者。即如可見,用以回應於該多項式除法指令而實作該 多項式除法操作之電路包含-含有and閘器及驗閘 器的排置。對於這些閘器的輸入為分子數值[n7:n。]及分 12 200945062 母數值[l:P〇]。 、、=4圖的電路是由該指令解碼器22回應於一多項式除 : 而產生之控制信號所控制,而該電路係經啟動所 運用’同時該等分子數值及分母數值係自該暫存器庫集 12讀出並予供應至第4圖電路内的輸入。此外,該商數 值[q3:q〇]及該餘數值[㈣]係類似地自帛4圖電路的輸出 it予儲存至該暫存器庫集12中的暫存器内。在 ❹ &範例中對該暫存器庫集12提供有兩個寫人缚,藉以將 該除數值及該餘數值兩者寫入於其内。 , 將能瞭解第4圖電路係用於計算具有四階次的多項式 除法。然此電路的常規延伸可提供用於具有較高階次1 多項式除法的多項式除法指令作業,同時在實作上可藉 由適當的信號數值多工處理以對於該等具有不同階次的 除法重用相同電路,即如本項技術領域之人士所熟請者。 底下給定一暫存器傳送語言(RTL)範例,此者可定義用 © 以執行-具32、16或8次之多項式除法的電路。 >H Polynomial divider // Divider Ex stage //------------------------------------- always @ (posedge elk) if (cmdjiv—en) begin d_din_h_ex <= din a sz· d_poly_ex <= din_b_sh; end ~ // Common terms 13 200945062 > assign d_i = d_din_h_ex;> assign d_p = d_poly_ex; ❹ > assign d_p—29 = = d_p[30]Ad_p[31]; > assign d_p_28: = d_p[29]^d_p[31]; > assign d_p_27 = = d_p[28]-(d_p[30]|dj)[31]); > assign d_p_26 = d_pP7] Λ (d_p[31] & ~(d_p[29]八 d_pP〇])); > assign d_p 25 = =d_p[26] Λ d_p[29] Λ (d_j>[31] & d_p[28]) ^ (d_p[31] >1 > |dj)[30]); > // Divider - 1st 8-bits > assign d_o[31] = d_i[31]; > assign d_o[30] =d i[30]A > (d_i[31]&d_p[31]); > assign d_o[29] =d i[29]A > (d_i[30]&d_p[31]K > (d_i[31]&d_p_29); > assign d一。[28] =d i[28]A > (d_i[31]&d_p_28)八 > (d i[30] & d_p 29)A > (ά_ΐ[29]&<1_ρΓ31]); > assign d_o[27] = d_i[27]- > (d_i[28]&dj,[31])A > (d_ip9]&d」>_29)八 > (d_i[30]&d_p_28)A > (d_i[31]&d_p_27); > assign d_o[26] = <UP6]a > (d_i[27]&d_p[31]r > (d i[28] & d_p 29)Λ > (d i[29] & d_p 28)Λ > (d i[30] & d_p 27)Λ > (d i[31]&d_p 26); > assign d_o[25] =d_i[25] Λ > (d_i[26]&djD[31]K > (d i[27] & d_p 29)Λ > (d_i[28]&d_p_28)A > (d ip9] & d_p 27)Λ > (d i[30] & d_p 26)Λ > (d_i[31] & (djpP6] a d_j>[29] Λ (〇[31] & > d_p[28]) Λ (d_p[31] | d_p[30])>); assign d_o[24] = d_i[24] Λ > (d_i[25]&d_p[31])^ > (d_i[26]&d_p_29)八 > (d i[27] & d_p 28) Λ > (d i[28] & d_p 27) Λ > (d i[29] & d_p 26) Λ > (d i[30] & (d_p[26] Λ d_p[29]Λ (d_p[31] & > d_p[28]) a (dj)[31]丨 d_p[30])))Λ (d_pi] & > d_p[25]) Λ (d_i[31] & d_p[31] & d_p[27]) ^ > (d_i[31]&dj[30]&d_j)[29]r > (d_i[31]&d_p[31]); > assign dpp_31; ={ { l{l'bO}},({'ARlDPU INT WIDTH{d o[31]}} & > djpoly ex), {31{l'b0}} }; assigndpp 30 = { { 2{l'b0}}, > ({'ARiDPU_INT_WIDTH{d_o[30]}} & d_poly_ex), {30{l'b0}} }; assign 200945062 > dpp 29 = { { 3{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[29]}} & dj5〇ly_ex), > {29{1Τ>0}} }; assigndpp_28 = { { 4{l*b0}}, > ({'ARlDPU_INT_WIDTil{d_〇p8]}} & d_poly_ex),{28{l*b0}} }; assign > dpp 27 = { { 5{l'b0}}, ({'AR1DPU INT WIDTOid 〇[27]}} & d_poly ex), > {27{l'b0}} }; assign dpp_26 = { { 6(11)0}}, > ({'ARlDPU_INT_WIDfH{d_o[26]}} & d_poly_ex), {26{l'b0}> }; assign > dpp_25 =1 { 7{l'b0}}, > ({'ARlDPU_INT_WIDTH{d_o[25]}} & d_poly_ex), > {25{Π>0}} }; assign dpp_24 = { { 8{1^0}}, > ({'ARlDPU_INT_wibTH{d_o[24]}} &d_poly_ex), {24{l'b0}} }; assign >dp_24 =(({d_i, {32{rb0}}} Adpp_31)Adpp_28)^((dpp_30^dpp_29) > Λ dpp_27) Λ (dpp_26 Λ dpp_25) Λ dpp_24; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ❹ // Divider - 2nd 8-bits assign d_o[23] = dp_24[23+32]; assign d_o[22] = dp_24[22+32] Λ _ ~(dp_24[23+32] & d__p[31]); assign d_o[21] = dpj4pi+52] Λ _ ~(dp_24[22+32] & d_p[31]) Λ
(dp_24[23+32] & d_p_29); assign d_o[20] = dp_24[20+32] A ~ ~(dp_24[23+32] & d_p_28)Λ (dp_24[22+32] & d_p_29) Λ (dp_24[21+32] & d_pf31]); assign d_o[19] = dp_24[19+32] Λ ~ ~(dp_24[20+32] & d_p[31]) Λ (dp_24pi+32] & d_p_29)Λ (dp_24[22+32] & d_p_28)Λ (dp_24[23+32] & d_p_27); assign d_o[18] = dp_i4[18+$2] Λ ~ ~(dp_24[19+32] & d_p[31])Λ (dp一24[20+32] & d_p_29) Λ (dp_24i21+32j & d_p:28)Λ (dp_24[22+32] & d_p_27) Λ (dp_24p3+32] & d_p=26); assign d_o[17] = dp_24[T7+32] Λ (dp_24[18+32] & d_ppi]) Λ (dp_24[19+32] & d丄29) Λ (dp_24p〇+32] & d_p_28) Λ (dp_24[21+32] & d_p_27) Λ (dp_24[22+32] & d_p_26)八 (dp_24[23+32] & (d_p[26] Λ d_p[29] Λ (d_p[31] & d_pP8]) Λ (d_p|;31] I d_pP〇]))); assign d_o[16] = dp_24[16+32] Λ (dp_24[17+32] & d_p[31]) Λ (dp_24[18+32] & d_p_29) Λ (dp_24[19+32] & d_p_28) Λ (dp_24[20+32] & d_p_27)Λ (dp_24pi+32] & d_p_26) Λ (dp一24[22+32] & (d_i"[26] Λ d_p[29] Λ (d』[31] & d_p[28]) Λ (d_p[31] | d_p[30])))Λ (dp_24[23+32] & d_p[25])Λ (dp_24[23+32] & djp[31] & d_p[27]) Λ (dp_24[23+32] & d_p[30] & d_p[29]) Λ 15 200945062 > (dp_24[23+32] & d_p[31]); > assigndpp_23 = { { 9{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[23]}} & > d_poly_exX {23{l'b0}} }; assign dpp_22 = { {10{l'b0}}, > ({'ARl"bPU_INT_WIDTH{d_o[22]}} & d_poly_ex), {22{11?0}} }; assign > dpp 21 = { {11{1孓0}},({'A泛lDPU_INT_WIDiil{d_〇pi]}} & d_poly_ex), > {21{l'b0}} }; assign dpp_20 = { {12{l'b0}}, > ({'ARlDPU_INT_WIDTH{d_o[20]}} <fed_poly_ex), {20{l'b0}} }; assign > dpp 19 = { {13{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[19]}} & djj〇ly_ex), > {19{l'b0}} }; assigndpp_18 = { {14{l'b0}}, > ({'ARlDPU_INT_WIDfH{d_o[18]}} &d_poly_ex), {18{l'b0}} }; assign > dpp_17 = U15{rbO}}, > ({'ARlDPU_INT_WIDTH{d_o[17]}} & d_poly_ex), > {17{11?0}} }; assign dpp_16 = { {16{l'b0}}, > ({'ARlDPU_INT_wiDTH{d_o[16]}} &d_poly_ex), {16{l'b0}} }; assign >dp_16 = ((dpΛ 5pp_23)Λ dpp_20)八((dpp_22 Λ dpp_21)Λ dpp_l 9)Λ > (dpp_18 Λ dpp_17)Λ dpp_16; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Divider Ex2 stage //Note that d_poly_ex is re-used in Ex2 (it must not change!) // REVISIT, merge Ex and Ex2 stages to reduce area always @ (posedge elk) if (cmd_div_ex) begin d_dinwl_ex2 <= din_b_sh; dp_ex2" <= {d_o[31:16],dp_16[47:0]}; end // Divider - 1 st 8-bits assign d_o[15] = dp_ex2[15+32]; assign d_o[14] == dp-ex2[14+32j Λ ~ ™(dp__ex2[15+32] & d_p[31]); assign d—o[13] = dp一ex2[13+$2] Λ 一 _(dp一ex2[14+32] & d_p[31])Λ (dp_ex2[15+32] & d_p_29); assign d_o[12] = dp_ex2[12+32] Λ _(dp_ex2[13+32] & d_p[31])Λ (dp_ex2[14+32j & d_p_29) Λ (dp二ex2[l5+32j & d_p=28); assign d_o[ll] = dp_ex2[ll+32] Λ ~ _(dp_ex2[12+32] & d_p[31])Λ (dp_ex2[13+32] & d_p_29) Λ (dp_ex2[14+32] & d_p_28)Λ (dp_ex2[15+32] & d_p_27); assign d_o[10] = dp_ex2[10+&2] Λ ~ _(dp_ex2[ll+32] & djp[31])Λ (dp_ex2[12+32] & (d_p[31] Λ d p[30])) (dp_ex2[13+32] & d_p_28) Λ (dp_ex2[14+32] & d_p_27)Λ (dp_ex2[15+32] & d_p_26); assign d_o[9] = dp_ex2[9+32] Λ 16 200945062 ❹ 參 (dp_ex2[10+32] & d_p[31]) (dp_ex2[ll+32] & (d_p[31] (dp_ex2[12+32] & dji_28)/ (dp_ex2[13+32] & d_p_27)' (dp=ex2[14+32] & d_p:26) / (dp_ex2[15+32] & (d_p[26] d_p[28]) Λ (d_p[31] I d_p[30]))); assign d_o[8]: (dp_ex2[ 9+32] & d_p[31])/ (dp_ex2[10+32] & (d_p[31] (dp_ex2[ll+32] & d_p_28) Λ (dp_ex2[12+32] & d_p_27) Λ (dp_ex2[13+32] & d_p:26) Λ (dp_ex2[14+32] & (d_p[26] Λ d_p[29] Λ (d_p[31] & d_pT28]) Λ (d_p[31] | d_p[30]))) Λ (dp_ex2[ 15+32] & d_p[25]) Λ (dp_ex2[15+32] & d_p巨 1] & d_p[27])八 (dp_ex2[15+32] & d_p[30] & d_p[29])Λ (dp_ex2[15+32] & d_p[31]); assign dpp_15 = { {17{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[15]}} & d_poly_ex), {15{l'b0}} }; assign dpp l4= { {18{1Τ?0}}, ({'ARiDPU_INT_WIDTH{d_o[14]}} & d_poly_ex), {14{l'b0}} }; assign ΦΡ_13 = { {19{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[13]}} &d_poly_ex), {13{l'b0}} }; assigndpp_12 = { {20{1Τ?0}}, ({'ARlDPU_INT_WIDfH{d_o[12]}} & d_poly_ex), {12{l'b0}} }; assign ΦΡ_11 = { {21{1ΐ)0}}9 ({'AR1DPU_INT WIDTH{d_o[ll]}} & d_poly_ex), {llTl'bO}}}; assigndpp_10 = {{22{l'b0}}, ({'ARlDPU_INT_WIDfH{d_o[10]}} &d_poly_ex), {10{l'b0}> }; assign dpp_9 = { {23{^0}},({ ARlDPU_INT_WIDTH{d_o[9 ]}} & d_poly_ex), { 9{l'b0}} }; assign dpp_8 = { {24{l'b0}}, ({'ARlDPU_INT_WIDTH{d_'0[8 ]}} & > d_poly_ex), { 8{l'b0}} }; assign dp_8 = ({{32{Π?0}}, d_din_l_ex2} > Λ dp_ex2)Λ ((dpp_15 Λ dpp_14)Λ dpp ll) Λ ((dpp_13 Λ dpp_12) Λ > dpp_10)Λ (dpp_9 Λ dpp_8); > > // Divider - 2nd 8-bits > assign d_o[7] = dp_8[7+32]; > assign d_o[6] = dp_8[6+32] Λ > _ ~ (dp_8[7+32]&d_p[31]); > assign d_o[5] = dp_8[5+32] Λ > 一 _ (dp_8[6+32]&d_p[31])A > (dp_8[7+32] & d_p_29); > assign d_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_pf31]); > assign d_o[3] = dp_8[3+32] Λ > ~ (dp_8[4+32] &d_p[31])A > (dp_8[5+32] & d_p_29)Λ > (dp_8[6+32] & d__p_28)Λ > (dp_8[7+32] & d_p__27); > assign d_o[2] = dp_8[2+32] Λ > ~ _ (dp_8[3+32]&d_p[31])A > (dp_8[4+32] & (djp[31] Λ d_p[30])) Λ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > d』[30])) Λ
、d_p[29]A(d_p[31]& dp_ex2[8+32] Λ d』[30]))A 17 200945062 > (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])八 (dp_8[3+32] & (djp[3\] Λ d_p[30])) d_p[29] Λ (d_p[31] & =dp_8[0+32] Λ Λ_ρ[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_pP8])八(d_j)[31] I d_p[30]))); assign d_o[0] ❹ (dp_8[l+32] & d_p[31])Λ (dp_8[2+32] & (d_p[31] Λ (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_ii28]) Λ (d_ppi] I d_pP〇])))Λ (dp_8[7+32] & d_p[25])Λ (dp_8[7+32] & d_p[31] & d_p[27]) Λ (dp_8[7+32] & d_p[30] & d_p[29]) Λ (dp_8[7+32]&d_p[31]); assigndpp_7 = { {25(1^0}}, ({'ARlDPU_INT_WIDTH{d_o[7]}} & d_poly_ex), {7(1^0}} }; assigndpp_6 = { {26(1150}}, ({'ARiDPU_INT_WIDTH{d_o[6]}} & d_poly_ex), {6{Π?0}} }; assign dpp_5 = { {27{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[5]}} & d_poly_ex), {5{l'b0}} }; assign dpp_4= { {28{1Τ)0}}5 ({'ARlDPU_INT_WIDTH{d_o[4]}} &d_poly_ex), {4{1^0}} }; assign dpp_3 = { {29{l'b0}}, ({'ARTDPU_INT_WIDTH{d_o[3]}} &d_poly_ex), {3{l'b0}} }; assign dpp_2 = { {20{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[2]}} &d_poly_ex), {2{l'b0}} }; assign dpp_l = { {31{l'bO}},({'ARlDPU_INT_WIDTH{d_o[l]}} & djpoly ex), {1 {1'bO}} }; assign dpp_0 = { > {32{l'b0}}, ({'ARlDPU_INT_WIDTH{d_o[0]}} & d_poIy_ex)}; assign dp_0 > =((dp_8 Λ dpp一7)Λ dppj) Λ (7dpp_6 Λ dpp_5) Adpp_3)Λ (dpp_2 a > 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_sizejwr[l] ?dout_wr[31:0]:( cmd_size_wr[0] ? { {16 {1 *b0} },dout一wr[31:16]}: —~ {{24{l'b0}}, dout_wr[31:24]}); > // Output 18 200945062 > //. > assign {dout, rout} > mout; cmd div ?{dout_wr[63:32], d_rout_wr}: 第5圖說明一可用於一向量多項式除法指令的語 法。此語法類似於第2圖中所示者,除儲存該分子數值 以及該等所獲除數值和餘數值的暫存器外是由向量暫存 器所取代外》該分母維持為一純量數值且經儲存在一純 ® 量暫存器内,即如將能瞭解對於長的分子數值序列而言 分母除數及分母數值經常是固定。此係一種與一用於對 多個待予傳ill之信冑資料_流進行平行處理的授擾器程 式相關聯之行為類型。該商數多項式及該商數值構成待 予傳送的資料,此資料具有比起原始分子數值更適合於 傳輸的特徵(即如在該分子數值内之一長固定位元數值 序列將會被轉化成該商數值内—更輯可料的替代性 φ 位元數值樣式)。本揭技術的多項式除法指令可產生一商 數值’並且良好地適用於此等為以攪擾一信號以供傳送 的攪擾器程式。 、 第6圖說明兩種可將一多項《之項的係數儲存在暫存 器内之方式。尤其’可將該最高次項的係數儲存在一儲 存表示該等多項式係數之數值的暫存㈣之最顯著位元 ,置或最小顯著位元位置。其他係數則是自此—相關選 定末端點所隨循。此為類似於按大末尾或小末尾之形 而错存在暫存器内的係數。 工 200945062 φ 本揭技術之多項式除法指令提供一種與一多項式乘法 指令的優點組合,而這亦可由相同的處理器4所支援。 在此情況下,可增置—類似於第1圖所 電路26的額外處理單元,藉此支援一多項式乘法=法 第7圖說明一可用於此-多項式乘法指令的語法。該第 多項式及„亥第一多項式是由經儲存在個別暫存器及 Γ1之内的數值所表示。所獲乘積多項式是由-經儲存在 暫存器r2之内的乘積數值所表示。該乘積多項式數值的 長度為該等第一及第二多項式的雙倍,且因此該暫存器 r2的長度為儲存表示該等第一及第二多項式之第一及第 二數值的暫存器之雙倍。實作上,該暫存^可為由一 兩個具標準長度之暫存器的組合所提供。或另者,該暫 存器庫集12可含有-或更多的雙倍寬度暫存器,像是第 1圖中所述的2N位元暫存器14。此等雙倍寬度暫存器通 常係經供置以運用於標準純量算術t的乘法累加指令, 且因此對於此類型的多項式乘法指令可予重用。這些雙 倍寬度暫存器亦可用以儲存針對先前所述之多項式除法 指令的分子數值。在此情況下,該雙倍寬度暫存器是將 第2圖所述之暫存器及rl代換成-儲存表示一單一 暫存器内之分子多項式所有係數之數值的單一雙倍寬度 暫存器。 一具有各種形式’包含擁有不同寬度之版本以及—併入 -累加之版本,的多項式除法指令之作業係如下列示範 性C程式碼所給^。此程式碼亦含有類似的多項式除法 20 200945062 指令表示。此一領域之從業者將能瞭解這些定義係該等 指令的動作,並且可用於產生相關電路以回應於一標定 該項作業的相關指令來執行此等作業。 /*_____________________________________________________________* * polynomial multiply long * _____________________________________________________________*/ poly8_t mull_p8(poly8_t x0? poly8_t xl5 poly8_t *x2) { ---#ifdef_OPTIMODE_
#pragma OUT x2 #pragma INTRINSIC #endif poly8_t q=x0, r=0; int C,i; for (i=0; i<8; i++) { C = r»7; r = r«l; if(q»7) { 1 = ^x1; } q = (q«l)|C; *x2 = q;/* (x0*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_OPTIMODE_ #pragma OUT x2 #pragma INTRINSIC #endif polyl6_t q=x0, r=0; int C,i; for (i=0; i<16; i++) { C = r»15; r = r«l; if(q»15) { r = i^xl; 21 200945062 q = (q«l)|C; *x2 = q;/* (x0*xl) high 16 bits */ return r;/* (x0*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=0; int C,i;
for (i=0; i<32; i科) { C = r»31; r = K<l; if(q»31) { } q = (q«l)|C; *x2 = q;/* (x0*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 *x4) { #ifdef_OPTIMODE_ #pragma OUT x4 #pragma ESiTRINSIC #endif poly8_t q=x2, r=0; int C,i; for (i=0; i<8; i++) { C = r»7; r = r«l; if(q»7) 22 200945062 r = 1^x3; } q = (q«l)|C; *x4 = qAxl;/* ((xl«8)+x0)+(x2*x3) high 8 bits */ return P^xO;/* ((xl«8)+x0)+(x2*x3) low 8 bits */ polyl6_t mlal_pl6(polyl6_t xO, polyl6_t xl, polyl6_t x2, polyl6_t x3, polyl6_t *x4) { 一 #ifdef—OPTIMODE— #pragma OUT x4 pragma INTRINSIC #endif
polyl6_t q=x2, r=0; int C,i; for (i=0; i<16; i++) { C = r»15; r = r«l; if(q»15) { r =作3; } q = (q«l)|C; *x4 = qAxl;/* ((xlcc^+xOXxSM) high 16 bits */ return P^xO;/* ((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=0; int C,i; for(i=0; i<32;i++) { C = r»31; r = r«l; if(q»31) { r = 1^x3; 23 200945062 q = (q«l)|C; } *x4 = qAxl;/* ((χ1«32)+χ0)+(χ2*χ3) high 32 bits */ return P^xO;/* ((xl«32)+x0)+(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_OPTIMODE_ #pragma OUT x3 #pragma INTRINSIC #endif
poly8_t q=xO, r=xl, p=x2; int C,i; for (i=0; i<8; i++) { C = r»7; r = r«l; if(C) { } if(q»7) { r^l; } q = (q«l)jC; *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, polyl6_t *x3) { ----#ifdef_OPTIMODE_ #pragma OUT x3 #pragma INTRINSIC #endif polyl6_t q=x0, r=xl, p=x2; int C,i; for(i=0; i<16;i++) { C = r»15; r = r«l; 24 200945062 if(C) { r = 1^ } if(q»15) { r = rAl; } q = (q«l)|C; *x3 = q;/* ((xl«16)+x0) div ((l«16)+x2) */ return rj* ((xl«16)+x0) mod ((l«16)+x2) */ poly32_t divl_p32(poly32_t xO, poly32_t xl, poly32_t x2, poly32_t *x3)
{ ----#ifdef_OPTIMODE_ #pragma OUT x3 #pragma INTRINSIC #endif poly32_t q=x0, r=xl, p=x2; int C,i; for (i=0; i<32; i++) { C=r»31; r = r«l; if(C) { r = ^; } if(q»31) { } q = (q«l)|C; *x3 = q;/* ((xl«32)+x0) div ((l«32)+x2) */ return r;/* ((xl«32)+x0) mod ((l«32)+x2) */ 前揭技術雖係藉由執行一含有前述指令之原生指令序 列的硬體所運行,然將能瞭解在替代性具體實施例中, 可在一虛擬機器環境裡執行此等指令,其中該等指令對 於該虛擬機器為原生性,然該虛擬機器則是由運行於具 25 200945062 有不同原生指令集之硬體上的軟體所實作。該虛擬機器 環境可提供一完整版本的虛擬機器環境,此者模擬執行 一完整指令集’或是可為部份者,即如僅部份指令,其 中含有本揭技術之指令,是由該硬體所捕納且由該部份 虛擬機器所模擬。 更詳細地說’可按如對於該完整或部份虛擬機器的原 生指令以執行前述之重新排置指令,而該虛擬機器連同 其底層硬體平台一起組合操作俾提供前述的多項式處 理。 在此雖既已參照於隨附圖式以詳細描述本發明之示範 性具體實施例,然應瞭解本發明並不受限於該等精確具 體實施例,並且可由熟諳該項技藝之人士進行各種變化 與修改,而不致悖離如後載申請專利範圍所定義的本發 明範圍與精神。 【圖式簡單說明】 第_1圖略圖說明一其中合古拟^ τ含有對於一多項式除法指令之 支援的資料處理設備; 第2圖略圖說明一多項式除法指令的語法; 第3圖略圖說明一範例多項式除法作業; 第4圖略圖說明一用以回庵认 口應於一多項式除法指令俾執 行一多項式除法作業的電路; 第5圖說明一向量多項式昤 飞除去指令的範例語法; 26 200945062 第6圖說明兩種替代方式,其中可由一經儲存在一暫 存器之内的數值來表示一多項式;以及 第7圖略圖說明一多項式乘法指令的語法。 10 12 14 16 18 20 ❹ 22 24 26 【主要元件符號說明】 2 4 6 8 資料處理設備 處理器 記憶體 程式指令 資料數值 暫存器庫集 2N位元暫存器 乘法器 移位器 加法器 指令解碼器 指令管線 多項式除法電路 27
Claims (1)
- 200945062 七、申請專利範圍: 1. 一種用以處理資料的設備,其中包含: 一指令解碼器,此者回應於一程式指令以產生一或 更多控制信號; 一暫存器庫集,此者具有複數個暫存器;以及 • 處理電路’此者係經耦接於該指令解碼器和該暫存 器庫集,並且回應於該等一或更多控制信號,對經儲存 〇 在該暫存器庫集内之一或更多資料值執行一對應於該程 式指令的資料處理作業;其中 該指令解碼器回應於一多項式除法指令以產生一或 更多控制信號,此等控制信號可控制該處理電路俾產生 至少一商數值,此商數值表示一對於一分子多項式除以 一分母多項式之二元素領域上的多項式除法之商數多項 式,該分母多項式係一 N次多項式,由cy,的 和所給定,其中(:⑺…至Co為經儲存在該暫存器庫集之一 ® 冑存器内的個別位元’而同時Μ並且不是儲存在該暫 存器之内。 2.如申請專利範圍第1項所诫夕供甘▲ πW迷之汉備,其中該暫存器 係一 Ν位元暫存器。 3.如申請專利範圍第1項所、+· * # | , 喟所述之設備,其中該暫存器 庫集包含複數個Ν位元暫存器。 28 200945062 4.如中請專㈣圍第1項所述之設備,其卜多項式 係如下列之一者所表示: (I) 一數值,此者位於一 M位元暫存器内,而具有 一對於屬該Μ位元暫存器之位元k的項xk之係數q,其 中〇 ;以及 (II) 一數值,此者位於一 1^[位元暫存器内而具有 © 一對於屬該M位元暫存器之位元(M-D-k的項xk之係數 Ck ’ 其中k> 0。 5·如申請專利範圍第3項所述之設備,其中該分子多 項式係由一經儲存在該等複數個N位元暫存器其中兩者 之内的2N位元分子數值所表示。 6·如申請專利範圍第1項所述之設備,其中該分子多 ® 項式係由一經儲存在該等複數個暫存器之一 2N位元暫 存器内的2N位元分子數值所表示。 7.如申請專利範圍第1項所述之設備,其中該處理電 路是由該指令解碼器回應於該多項式除法指令而產生之 控制信號所控制’藉此產生一餘數值,而該餘數值表示 一獲自於該分子多項式除以該分母多項式之多項式除法 的餘數多項式。 29 200945062 8.如中請㈣範圍第7以述之設備,其巾該餘數值 係一經儲存在該等複數個暫存器之-N位元暫存器内的 N位元餘數值。 9.如巾請專利範圍第!項所述之設備,其中該商數值 係一經儲存在該等複數個暫存m位元暫存器内的 N位元商數值。 …如中請專利範圍第i項所述之設備,其中該多項式 除法程式碼的—部份,此擾攪器是由該設 備所執仃以供利用所產生之商數值來_ —待予傳送的 U.如中請專利範圍第1項所述之設備,其中該暫存器 :集包含複數個—般目的純量暫存器,其係由除該多項 • <除法指令以外的程式指令所運用。 以如中請專利範圍第1項所述之設備,其中該指令解 =係回應於—多項式乘法指令以產生—或更多控制伸 多,此等控制信號控制該處理電路以產生表示在一第— 項式乘以-第二多項式之二元素領域上對於一多項式 乘法之乘積多項式的至少—乘積數值。 " 13.如中請專利範圍第!項所述之設備,其中該多項式 ❹ 魯 200945062 除法扣令係一向量指令,而該分母數值係一純量數值, 並且該商數值及一分子數值表示屬向量數值的分子多項 式。 14· 種處理資料之方法,包含下列步驟: 解碼一程式指令以產生一或更多控制信號: 回應於該等一或更多控制信號,對一或更多經儲存 在具有複數個暫存器之暫存器庫集内的資料數值執行 對應於該程式指令的資料處理作業;其中 T解碼係回應於一多項式除法指令以產生一或更多 :制l號’此等控制信號可控制至少__商數值的產生作 :,此商數值表示一對於一分子多項式除以一分母多項 領域上的多項式除法之商數多項式,該分母 其/糸一 N次多項式,由W,N决〇的和所給定, 的㈣(r#e°為經儲存在該暫存器庫集之-暫存器内 内。①〜=1並且不是儲存在該暫存器之 15.如申請專利範圍第 係一 N位元暫存器。 14項所述之方法, 其中該暫存器 31 200945062 17. 如申請專利範圍第14項所述之方法,其中一多項式 係如下列之一者所表示: (i) 一數值,此者位於一 M位元暫存器内,而具有 一對於屬該Μ位元暫存器之位元k的項xk之係數^,其 中k> 〇 ;以及 (η) 一數值,此者位於一 Μ位元暫存器内,而具有 一對於屬該Μ位元暫存器之位元的項/之係數 ck,其中0。 ❹ 18. 如申請專利範圍第16項所述之方法,其中該分子多 項式係由一經儲存在該等複數個N位元暫存器其中兩者 之内的2N位元分子數值所表示。 19. 如申請專利範圍第14項所述之方法其中該分子多 項式係由一經儲存在該等複數個暫存器之一 2N位元暫 存器内的21^位元分子數值所表示。 9 20·如申請專利範圍第14項所述之方法,其中該等藉由 肖瑪該多$式除法指令所產生的控制信號控帝卜餘數值 的產生作業,該餘數值表示一獲自於該分子多項式除以 該分母多項式之多項式除法的餘數多項式。 21‘如申請專利範圍第2〇項所述之方法,其中該餘數值 係一經儲存在該等複數個暫存器之一 N位元暫存器内的 32 200945062 N位元餘數值。 22.如申請專利範圍第14項所述之方法,其中該商數值 係-經儲存在該等複數個暫存器之—Μ元暫存器内的 Ν位元商數值。23.如申請專利範圍第14項所述之方法其中該多項式 除法指令係㈣H程柄的—部份,該擾㈣程式碼係 經執行以利用所產生之商數值來擾授—待予傳送的信 24. 如申請專利範圍帛14項所述之方法,其中該暫存器 庫集包含複數個一般目的純量暫存器,此等純量暫存器 是由除該多項式除法指令以外的程式指令所運用。 25. 如申請專利範圍帛14_述之方法,其 回應於-多項式乘法指令以產生-或更多控制信號,此 等控制信號控制表示在一第一多項式乘以一夕 一一 币一夕項式 之-兀素領域上對於一多項式乘法之乘積多項式的至少 一乘積數值之產生作業。 夕 26. 如申請專利範圍第14項所述之方法,其中該多項 除法指令係一向量指令,而該分母數值係一純量數值式 並且該商數值及一分子數值表示屬向量數值的分子 項 33 200945062式。 27. —種電腦程式產品,其中包含一電腦程式儲存媒 體,此者儲存一用以根據如申請專利範圍第14項所述之 方法控制一用於處理資料的設備之電腦程式。 34
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0805491.8A GB2458665B (en) | 2008-03-26 | 2008-03-26 | Polynomial data processing operation |
Publications (1)
Publication Number | Publication Date |
---|---|
TW200945062A true TW200945062A (en) | 2009-11-01 |
Family
ID=39386780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098106215A TW200945062A (en) | 2008-03-26 | 2009-02-26 | Polynomial data processing operation |
Country Status (11)
Country | Link |
---|---|
US (1) | US8700688B2 (zh) |
EP (1) | EP2255279B1 (zh) |
JP (1) | JP5193358B2 (zh) |
KR (1) | KR20100139072A (zh) |
CN (1) | CN101981542B (zh) |
AT (1) | ATE521936T1 (zh) |
GB (1) | GB2458665B (zh) |
IL (1) | IL207633A0 (zh) |
MY (1) | MY158872A (zh) |
TW (1) | TW200945062A (zh) |
WO (1) | WO2009118500A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2458665B (en) * | 2008-03-26 | 2012-03-07 | Advanced Risc Mach Ltd | Polynomial data processing operation |
US8370705B1 (en) * | 2009-09-23 | 2013-02-05 | Nvidia Corporation | System and method for calculating a checksum address while maintaining error correction information |
GB2483902B (en) * | 2010-09-24 | 2018-10-24 | Advanced Risc Mach Ltd | Vector floating point argument reduction |
IL267998B2 (en) * | 2017-02-23 | 2023-12-01 | Advanced Risc Mach Ltd | Element by vector operations in a data processing device |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2605769B1 (fr) * | 1986-10-22 | 1988-12-09 | Thomson Csf | Operateur polynomial dans les corps de galois et processeur de traitement de signal numerique comportant un tel operateur |
US5459681A (en) * | 1993-12-20 | 1995-10-17 | Motorola, Inc. | Special functions arithmetic logic unit method and apparatus |
US5602767A (en) * | 1995-08-29 | 1997-02-11 | Tcsi Corporation | Galois field polynomial multiply/divide circuit and a digital signal processor incorporating same |
US6009450A (en) * | 1997-12-24 | 1999-12-28 | Motorola, Inc. | Finite field inverse circuit |
CN1097882C (zh) * | 1998-10-14 | 2003-01-01 | 三星电子株式会社 | 里德-索罗门解码器和解码方法 |
JP2000172520A (ja) * | 1998-12-04 | 2000-06-23 | Fujitsu Ltd | ガロア体演算プロセッサ |
IL127878A0 (en) * | 1998-12-31 | 1999-10-28 | L P K Information Integrity Lt | Method and apparatus for the efficient execution of elliptic curve cryptographic operation |
US6721771B1 (en) * | 2000-08-28 | 2004-04-13 | Sun Microsystems, Inc. | Method for efficient modular polynomial division in finite fields f(2{circumflex over ( )}m) |
US6662346B1 (en) * | 2001-10-03 | 2003-12-09 | Marvell International, Ltd. | Method and apparatus for reducing power dissipation in finite field arithmetic circuits |
US7346159B2 (en) * | 2002-05-01 | 2008-03-18 | Sun Microsystems, Inc. | Generic modular multiplier using partial reduction |
GB2389678A (en) * | 2002-06-14 | 2003-12-17 | Univ Sheffield | Finite field processor reconfigurable for varying sizes of field. |
US7313583B2 (en) * | 2002-10-22 | 2007-12-25 | Broadcom Corporation | Galois field arithmetic unit for use within a processor |
US7403964B2 (en) * | 2002-10-22 | 2008-07-22 | Broadcom Corporation | Galois field multiplier array for use within a finite field arithmetic unit |
US20040117601A1 (en) * | 2002-12-12 | 2004-06-17 | Spracklen Lawrence A | General-purpose processor that can rapidly perform binary polynomial arithmetic operations |
US7080348B2 (en) * | 2003-06-27 | 2006-07-18 | Agilent Technologies, Inc. | Creating polynomial division logical devices |
US7464128B1 (en) * | 2004-03-12 | 2008-12-09 | Altera Corporation | Methods and apparatus for single stage Galois field operations |
US7958436B2 (en) * | 2005-12-23 | 2011-06-07 | Intel Corporation | Performing a cyclic redundancy checksum operation responsive to a user-level instruction |
GB2458665B (en) * | 2008-03-26 | 2012-03-07 | Advanced Risc Mach Ltd | Polynomial data processing operation |
-
2008
- 2008-03-26 GB GB0805491.8A patent/GB2458665B/en active Active
-
2009
- 2009-01-26 CN CN2009801105915A patent/CN101981542B/zh active Active
- 2009-01-26 MY MYPI2010004045A patent/MY158872A/en unknown
- 2009-01-26 WO PCT/GB2009/000209 patent/WO2009118500A1/en active Application Filing
- 2009-01-26 JP JP2011501283A patent/JP5193358B2/ja active Active
- 2009-01-26 KR KR1020107023761A patent/KR20100139072A/ko not_active Application Discontinuation
- 2009-01-26 AT AT09724267T patent/ATE521936T1/de not_active IP Right Cessation
- 2009-01-26 EP EP09724267A patent/EP2255279B1/en active Active
- 2009-02-23 US US12/379,447 patent/US8700688B2/en active Active
- 2009-02-26 TW TW098106215A patent/TW200945062A/zh unknown
-
2010
- 2010-08-16 IL IL207633A patent/IL207633A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP2255279B1 (en) | 2011-08-24 |
KR20100139072A (ko) | 2010-12-31 |
IL207633A0 (en) | 2010-12-30 |
EP2255279A1 (en) | 2010-12-01 |
GB0805491D0 (en) | 2008-04-30 |
US20090248780A1 (en) | 2009-10-01 |
WO2009118500A1 (en) | 2009-10-01 |
ATE521936T1 (de) | 2011-09-15 |
GB2458665B (en) | 2012-03-07 |
JP5193358B2 (ja) | 2013-05-08 |
MY158872A (en) | 2016-11-30 |
US8700688B2 (en) | 2014-04-15 |
CN101981542A (zh) | 2011-02-23 |
GB2458665A (en) | 2009-09-30 |
JP2011517496A (ja) | 2011-06-09 |
CN101981542B (zh) | 2013-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7039716B2 (ja) | ポリシ実行処理のためのシステムおよび方法 | |
TWI804200B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
CN108702286B (zh) | 抗功率侧信道攻击的高级加密标准加速器处理器 | |
RU2637463C2 (ru) | Команда и логика для обеспечения функциональных возможностей цикла защищенного хеширования с шифром | |
Warren | Hacker's delight | |
US8185749B2 (en) | System and method for revising boolean and arithmetic operations | |
US11327755B2 (en) | Fine grained control flow enforcement to mitigate malicious call/jump oriented programming | |
CN103957100B (zh) | 利用单指令在多种模式中执行aes加密或解密 | |
Shterenberg et al. | Analysis of using equivalent instructions at the hidden embedding of information into the executable files | |
JP2011096254A (ja) | 乗累算演算を実行するための装置および方法 | |
JP5607832B2 (ja) | 汎用論理演算の方法および装置 | |
US8495390B2 (en) | System and method for data obfuscation based on discrete logarithm properties | |
US7370180B2 (en) | Bit field extraction with sign or zero extend | |
CN107003845A (zh) | 用于在掩码寄存器和向量寄存器之间可变地扩展的方法和装置 | |
CN107003832A (zh) | 用于执行大整数算术操作的方法和装置 | |
TW200945062A (en) | Polynomial data processing operation | |
CN107851016B (zh) | 向量算术指令 | |
US20100115232A1 (en) | Large integer support in vector operations | |
TWI628595B (zh) | 用以執行反離心操作之處理設備和非暫態機器可讀取媒體 | |
US20090083350A1 (en) | Shift-add based random number generation | |
Kiaei et al. | Architecture support for bitslicing | |
JP2014182811A (ja) | 短整数の乗算の数を減らすためのシステム、装置、および方法 | |
KR101635856B1 (ko) | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 | |
US20090106540A1 (en) | Apparatus and method for remanipulating instructions | |
Saarinen | SNEIK on Microcontrollers: AVR, ARMv7-M, and RISC-V with Custom Instructions |