JP2010091913A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2010091913A JP2010091913A JP2008263670A JP2008263670A JP2010091913A JP 2010091913 A JP2010091913 A JP 2010091913A JP 2008263670 A JP2008263670 A JP 2008263670A JP 2008263670 A JP2008263670 A JP 2008263670A JP 2010091913 A JP2010091913 A JP 2010091913A
- Authority
- JP
- Japan
- Prior art keywords
- remainder
- multiplication
- unit
- arithmetic
- bit
- 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
- 238000004364 calculation method Methods 0.000 claims description 76
- 238000000034 method Methods 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 40
- 230000014509 gene expression Effects 0.000 claims description 28
- 239000000758 substrate Substances 0.000 claims description 12
- 238000011946 reduction process Methods 0.000 claims description 9
- 239000004065 semiconductor Substances 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 abstract description 131
- 230000006870 function Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Abstract
【解決手段】演算部(310)により剰余乗算の演算処理を再帰的に複数回繰り返してwビットの剰余乗算の剰余と商から、2wビットの剰余乗算の商と剰余を計算するとき、先の剰余乗算の演算処理で求めたwビットの剰余乗算の剰余と商を、次の剰余乗算の演算処理に振り分ける制御を制御部(320)が行う。これにより、先の剰余乗算の演算処理がwビットの剰余乗算の剰余だけを求める演算アルゴリズムに比べ、再帰的に行われる後の演算に必要な前の演算処理の商を新たに演算することを要しない。剰余乗算ユニットの演算ビット数の2の倍数のビット数のデータに対する剰余乗算の演算効率を向上させることができる。
【選択図】図3
Description
r=xy2-m mod (z)…(式a)
xy=qz+r2m…(式b)
の式が成り立つ。
入力:x、y、z、ただし0≦x、y<z、gcd(z, 2m) = 1、かつ0≦m<w
出力:xy/z、xy mod (z)
ステップ1. r ←xy2-m mod (z)
ステップ2. r'←xy2-m mod(z + 2m)
ステップ3. q ← r - r'
ステップ4. q ≦-2m, q ← q + z + 2m
ステップ5. Return (q、r)
上記アルゴリズム1では、2種類の剰余乗算の剰余(ステップ1の剰余rとステップ2の剰余r’)から、剰余乗算の商(q)を計算する。従って、上記アルゴリズム1は、最低でも2つの剰余乗算の剰余を演算することが必要になる。gcd(z, 2m) = 1はzと2mの最大公約数が1であること、即ちzと2mが相互に素数であることを意味する。
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY mod Z
ステップ1. r1 ← x1 y1 2-m mod(z1) and q1 ← x1 y1 -r1 z1 2m
ステップ2. r2 ← q1 z0 2-m mod(c) and q2 ← q1 z0 -r2 c 2m
ステップ3. r3 ← (x0+x1)(y0+y1) 2-m mod(c) and q3 ← (x0+x1)(y0+y1)-r3c2m
ステップ4. r4 ←x0 y0 2-m mod(c) and q4 ← x0 y0 -r4c2m
ステップ5. r5 ← c(-q2+q3-q4+r1) 2-m mod(z1) and q5 ← c(-q2+q3-q4+r1)-r5 z1 2m
ステップ6. r6← q5 z0 2-m mod(c) and q6 ← q5 z0 -r6 c 2m
ステップ7. Return (q2 + q4 - q6 - r1 - r2 + r3 - r4 + r5)c + (r2 + r4 - r6)2m
上記アルゴリズム2の入力において、最大ビット長2wのデータX、データY、データZをより小さなビット長のデータx1、x0、y1、y0、z1、z0、c、2mで表す。ただし、mは前記の剰余乗算専用器が実装する剰余乗算から定まるため、cの値を設定すれば他の値が定まる。例えば、mの値に応じて、c=1(m=wのとき)、c=2m(m=0)、c=2w-1(mは任意)などの値をcに設定する。このアルゴリズム2では、上記小さいビット長のデータに対してアルゴリズム1で求めた商を用いて余りを求める演算を繰り返して最後にXYmodZで表されるXYをZで割った余りが求められる。このアルゴリズム2では、6組の剰余乗算の商と剰余(ステップ1からステップ6)を要する。相対的に計算量の軽い加算や減算を無視した場合、上記アルゴリズム2は、6組の剰余乗算の商と剰余の計算コストの総和とほぼ等しい計算コストを有する。
(a):従来技術では、前記の剰余乗算専用器が1回で計算可能な最大ビット長(w)を越える剰余乗算の商の計算コストが大きい。例えば、上記アルゴリズム1と上記アルゴリズム2に従い、前記の剰余乗算専用器の最大4倍のビット長(4w)の剰余剰算の計算する例を示す。4wビットの剰余乗算の計算では、上記アルゴリズム2に従い、各6個の2wビットの剰余乗算の剰余(r1、r2、r3、r4、r5、r6)と商(q1、q2、q3、q4、q5、q6)が必要である。2wビットのそれぞれの剰余乗算の剰余を計算するには、再度、上記アルゴリズム2に従い、各6個のwビットの剰余乗算の剰余(r1、r2、r3、r4、r5、r6)と商(q1、q2、q3、q4、q5、q6)が必要である。一方、2wビットの剰余乗算の商の計算においては、上記アルゴリズム1から、前記で得た2wビットの剰余乗算の剰余と、別の値を持つ剰余乗算の剰余の、2種類の剰余乗算の剰余が必要である。従って、2wビットの6個の剰余乗算の商(q1、q2、q3、q4、q5、q6)の計算には、異なる6個の2wビットの剰余乗算の剰余(r1'、r2'、r3'、r4'、r5'、r6')が必要であり、これらは上記アルゴリズム2に従い、各6個のwビットの剰余乗算の商と剰余を必要とする。
(b):上記アルゴリズム1と上記アルゴリズム2では、剰余乗算だけでなく、四則演算(加算、減算、乗算、割算)を処理する必要がある。そこで、剰余乗算の計算機能に加え、実装環境に四則演算(加算、減算、乗算、割算)の一部または全ての計算機能を備えた方が、性能が向上する場合がある。これにより、剰余乗算に加え、四則演算を利用して、前記の剰余乗算専用器の1回で計算できる最大ビット長の2倍を越える剰余乗算を計算することが得策であるという課題が見出された。
(a):上記アルゴリズム1と上記アルゴリズム2を用いた従来技術では、前記の剰余乗算専用器が1回で最大wビットの剰余乗算を計算する場合、2wビットの剰余乗算が計算できる。この方法を再帰的に利用し、4wビット、8wビット、16wビット等、wビットの2のべき乗倍の剰余乗算が計算できる。しかし、常に倍数は2のべき乗倍に限定される。そのため、前記の剰余乗算専用器で計算可能なビット長が変更できない(最大ビット長の剰余乗算しか計算できない等)場合、長いビット長の剰余乗算で短いビット長の剰余乗算を代用する必要がある。例えば最大1024ビット、ただし512ビットの剰余乗算も前記の剰余乗算専用器が計算可能な場合、1536(=512×3)ビットの剰余乗算を処理する代わりに、2048(=512×22)ビットの剰余乗算を計算する必要がある。剰余乗算のビット長が長い場合、計算に必要な時間や、データの一時保存に必要なメモリが増加してしまう。これにより、2の倍数だけでなく、前記の剰余乗算専用器のビット長の整数倍の剰余乗算を計算できることが望ましいと言う課題が見出された。
(b):計算する剰余乗算のビット長が長い場合、データの一時保存のために、より大きな領域(メモリ等)が必要である。これにより、剰余乗算器のワークメモリを容易に大きくすることが望ましいと言うことが見出された。
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
実施の形態について更に詳述する。
非特許文献4の上記アルゴリズム1と上記アルゴリズム2では、前記の剰余乗算専用器が1回で計算できる剰余乗算の最大ビット長の2倍を越える剰余乗算を計算する場合、剰余乗算の商の計算コストが大きいという前記課題1があった。剰余乗算の商の計算に、2種類の剰余乗算の剰余を要するからである。
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY2-2m / Z、XY2-2m mod Z
ステップ1. r1 ← x0 y0 2-m mod(2w) and q1 ← x0 y0 -r1 2w 2m
ステップ2. r2 ← (x0+x1)(y0+y1)2-m mod(z1) and q2 ← (x0+x1)(y0+y1) -r2 z1 2m
ステップ3. r3 ← x1y1 2-m mod(z1) and q3 ← x1y1 -r3 z1 2m
ステップ4. r4 ← (r3-q1)c 2-m mod(z1) and q4 ← (r3-q1)c -r4 z1 2m
ステップ5. r5 ← q3 z0 2-m mod(z1) and q5 ← q3 z0 -r5 z1 2m
ステップ6. r6← (q2-q3+q4-q5) z0 2-m mod(2w) and q6 ← (q2-q3+q4-q5) z0 -r6 2w 2m
ステップ7. Return q3 2w-m+(q2-q3+q4-q5)2m and (q1-q6-r1+r2-r3+r4-r5)2w-m+ (r1-r6)2m
ただし、出力値 (XY2-2m / Z)は、XY2-2mをZで割り、小数点以下を切捨てた値である。上記アルゴリズム3における入出力データは、以下の恒等式を満たす。
XY = (XY2-2m / Z)Z + (XY2-2m mod Z)22m
即ち、(XY2-2m / Z)の値をもつ剰余乗算の商をQ、(XY2-2m mod Z)の値をもつ剰余をRとすると、(式a)、(式b)同様、以下の式が成り立つ。
R=XY2-2m mod Z・・・(式A)
XY=QZ+R22m ・・・(式B)
上記アルゴリズム3の各ステップは、剰余乗算の商と剰余を求める計算と、加算と減算から構成される。剰余乗算の商を計算する毎に、上記アルゴリズム2を2回(再帰的に)呼び出す必要があった従来技術と比べ、剰余乗算の商と剰余をまとめて計算する上記アルゴリズム3は、計算量が少なく、全体の処理時間を短縮できる。
[アルゴリズム4]
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY2-2m / Z、XY2-2m mod Z
ステップ1. r1 ← x0 y0 2-m mod(2w) and q1 ← x0 y0 -r1 2w 2m
ステップ2. r2 ← x1 y0 2-m mod(z1) and q2 ← x1 y0 -r2 z1 2m
ステップ3. r3 ← x0 y1 2-m mod(z1) and q3 ← x0 y1 -r3 z1 2m
ステップ4. r4 ← x1 y1 2-m mod(z1) and q4 ← x1 y1 -r4 z1 2m
ステップ5. r5 ← r4 c 2-m mod(z1) and q5 ← r4 c -r5 z1 2m
ステップ6. r6 ← q4 z0 2-m mod(z1) and q6 ← q4 z0 -r6 z1 2m
ステップ7. r7← (-q2-q3-q5+q6) z0 2-m mod(2w) and q7 ← (-q2-q3-q5+q6) z0 -r7 2w 2m
ステップ8. Return q4 2w-m + (q2+q3+q5-q6)2m and (r2+r3+r5-r6+q1+q7)2w-m +(r1+r7)2m
である。
[アルゴリズム5]
入力:X = x1 s + x0 2m、Y = y1 s + y0 2m、Z = z1 s + z0 2m、ただし0≦m<wかつs2=Z+a
出力:XY2-2m / Z、XY2-2m mod Z
ステップ1. r1 ← x0 y0 2-m mod(s) and q1 ← x0 y0 -r1 s 2m
ステップ2. r2 ← (x1+x0)(y1+y0) 2-m mod(s) and q2 ← (x1+x0) (y1+y0) -r2 s 2m
ステップ3. r3 ← x1 y1 2-m mod(s) and q3 ← x1 y1 -r3 s 2m
ステップ4. r4 ← a q3 2-m mod(s) and q4 ← a q3 -r4 s 2m
ステップ5. r5 ← a(-q1+q2-q3+q4+r3) 2-m mod(s) and q5 ← a(-q1+q2-q3+q4+r3)-r5 s 2m
ステップ6. Return q3 2w-m+(q1-q3+q4-q5)2m and (r1+r4-r6)2w-m+(q2-q6+r1-r2-r3+r4-r5)2m
である。
[アルゴリズム6]
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY2-m /Z and XY2-m mod(Z)
ステップ1. r1 ← x1 y1 2-m mod(2w) and q1 ← x1 y1 -r1 2w 2m
ステップ2. r2 ← (x1+x0) (y1+y0) 2-m mod(2w) and q2 ← (x1+x0)(y1+y0) -r2 2w 2m
ステップ3. r3 ← x0 y0 2-m mod(2w) and q3 ← x0 y0 -r3 2w 2m
ステップ4. r4 ← q3 2w 2-m mod(z1) and q4 ← q3 2w -r4 z1 2m
ステップ5. r5 ← r1 1 2-m mod(z0) and q5 ← r1 1 -r5 z0 2m
ステップ6. r6 ← q4 z0 2-m mod(2w) and q6 ← q4 z0 -r6 2w 2m
ステップ7. r7 ← q5 z1 2-m mod(2w) and q7 ← q5 z1 -r7 2w 2m
ステップ8. Return q4 2w + q5 and (r4-q1+q2-q3-q6-q7)2w +(q1-r1+r2+r5-r6-r7)
である。
[アルゴリズム7]
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY2-2m /Z and XY2-2m mod(Z)
ステップ1. r1 ← x0 y0 2-m mod(2w) and q1 ← x0 y0 -r1 2w 2m
ステップ2. r2 ← x0 y1 2-m mod(2w) and q2 ← x0 y1 -r2 2w 2m
ステップ3. r3 ← x1 y0 2-m mod(2w) and q3 ← x1 y0 -r3 2w 2m
ステップ4. r4 ← x1 y1 2-m mod(2w) and q4 ← x1 y1 -r3 2w 2m
ステップ5. sum = x1y122w + (x1y0+x0y1)2w + x0y0
ステップ6. Return sum/22w and sum mod(22w)
である。
[アルゴリズム8]
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY2-2m /Z and XY2-2m mod(Z)
ステップ1. r1 ← x0 y0 2-m mod(2w) and q1 ← x0 y0 -r1 2w 2m
ステップ2. r2 ← (x0+x1)(y1+y0) 2-m mod(2w) and q2 ← (x0+x1)(y0+y1) -r2 2w 2m
ステップ3. r3 ← x1 y1 2-m mod(2w) and q3 ← x1 y1 -r3 2w 2m
ステップ4. sum = x1y12w(2w-1) + (x1+x0)(y1+y0)2w - x0y0(2w-1)
ステップ5. Return sum/22w and sum mod(22w)
である。
[アルゴリズム9]
入力:X = x1 c + x0 2m、Y = y1 c + y0 2m、Z = z1 c + z0 2m、ただし0≦m<w
出力:XY2-2m /Z and XY2-2m mod(Z)
ステップ1. r1 ← x1 y1 2-m mod(z1) and q1 ← x1 y1 -r1 z1 2m
ステップ2. r2 ← (x0+x1)(y1+y0) 2-m mod(2w-1) and q2 ← (x0+x1)(y0+y1) -r2 (2w-1) 2m
ステップ3. r3 ← x0 y0 2-m mod(2w) and q3 ← x0 y0 -r3 2w 2m
ステップ4. r4 ← q2 z0 2-m + (r2-q3)2w mod(2w) and q4 ← q2 z0+(r2-q3)2w-r4 2w 2m
ステップ5. r5 ← (q1-q2-q4) z0 2-m mod(2w) and q5 ← (q1-q2-q4) z0 -r5 2w 2m
ステップ6. Return q3 2w + (q1-q2-q4) and (r1-r2-r3-r4+q3-q5)2w+r3-r4-r5
である。
非特許文献4の上記アルゴリズム2は、前記の剰余乗算専用器のビット長の2のべき乗の倍数(=2x倍)が計算可能なビット長であるため、ビット長の微調整がきかず、計算量の増加や消費メモリの増加を招く、という課題2があった。上記課題2に対して有効な、前記の剰余乗算専用器のビット長の整数倍の剰余乗算を計算するアルゴリズムと処理フローを以下に説明する。
[アルゴリズム10]
入力:X = x2 c2 + x1 c + x0、Y = y2 c2 +y1 c + y0、Z = z2 c2 + z1 c + z0
出力:XY mod Z
ステップ1. q1 ← x2 y2 / z2 and r1 ← x2 y2 mod(z2)
ステップ2. q2 ← q1 z1 / z2 and r2 ← q1 z1 mod(z2)
ステップ3. q3 ← r1 c /z2 and r3 ← r1 c mod(z2)
ステップ4. q4 ← x2 y1 /z2 and r4 ← x2 y1 mod(z2)
ステップ5. q5 ← x1 y2 /z2 and r5 ← x1 y2 mod(z2)
ステップ6. q6 ← q1 z0/ z2 and r6← q1 z0 mod(z2)
ステップ7. q7 ← (-q2+q3+q4+q5) z1 / z2 and r7 ← (-q2+q3+q4+q5) z1 mod(z2)
ステップ8. q8 ← (-r2+r3+r4+r5)c / z2 and r8 ←(-r2+r3+r4+r5) c mod(z2)
ステップ9. q9 ← x2 y0 / z2 and r9 ← x2 y0 mod(z2)
ステップ10. q10 ← x1 y1 / z2 and r10 ← x1 y1 mod(z2)
ステップ11. q11 ← x0 y2 / z2 and r11 ← x0 y2 mod(z2)
ステップ12. q12 ← (-q2+q3+q4+q5) z0 / c and r12 ← (-q2+q3+q4+q5) z0 mod(c)
ステップ13. q13 ← (-q6-q7+q8+q9+q10+q11) z1 / c and r13 ← (-q6-q7+q8+q9+q10+q11) z1 mod(c)
ステップ14. q14 ← x1 y0 / c and r14 ← x1 y0 mod(c)
ステップ15. q15 ← x0 y1 / c and r15 ← x0 y1 mod(c)
ステップ16. q16 ← (-q6-q7+q8+q9+q10+q11) z0 / c and r16 ← (-q6-q7+q8+q9+q10+q11) z0 mod(c)
ステップ17. q17 ← x0 y0 / c and r17 ← x0 y0 mod(c)
ステップ18. Return ((-q12-q13+q14+q15-r6-r7+r8+r9+r10+r11)c2 + (-r12-r13+r14+r15- q16+q17)c + (-r16+r17))(mod Z)
である。
XY = (x2 c2 + x1c + x0)(y2 c2 + y1c + y0)…(式0)
= x2y2c4+(x2y1+x1y2)c3 + (x2y0+x1y1+x0y2)c2 + (x1y0+x0y1)c + x0y0…(式1)
なお、展開方法としては、(式1)のような単純な展開式の他、効率的な乗算式への変換が知られているKaratsubaアルゴリズムや、Tom-Cook乗算アルゴリズム、高速フーリエ変換アルゴリズム等の計算手法を用いても良い。
z2c2 = -z1c - z0 (mod Z)
である。以下のその変換と整理の内容を示す。
= (q1z2+r1)c4 (式(x2 y2 = q1 z2 + r1)、即ち、r1=x2y2 modz2とq1=x2y2/z2を利用)
= -q1(z1c + z0)c2 + r1c4 (式(z2c2 = -z1c -z0 (mod Z))を利用)
= (-q1z1+r1c)c3 - q1z0c2 …(式2)
上記展開式の第一式と第二式において、x2 y2 = q1 z2+r1が成り立つ。上記の式を満たすq1とr1は、(式a)と(式b)の関係式から、(x2 y2 / z2)の値を持つ整数をq1、(x2 y2 mod(z2))の値を持つ整数をr1とすればよい。従って、上記アルゴリズム10のステップ1
q1←x2 y2 / z2
r1←x2 y2 mod(z2)
が導けた。
(式2)の第一項+ (式1)の第二項
= (-q1z1+r1c)c3 +(x2y1+x1y2)c3
= ((-q2+q3+q4+q5)z2+(-r2+r3+r4+r5))c3
= (q' z2+r')c3 (q'=-q2+q3+q4+q5 かつ r'=-r2+r3+r4+r5 と整理)
= - q' z1c2 - q'z0c+r'c3 …(式3) (式(z2c2 = -z1c -z0 (mod Z))を利用)
となる。
従って、
ステップ2. q2 ← q1 z1 / z2 and r2 ← q1 z1 mod(z2)
ステップ3. q3 ← r1 c /z2 and r3 ← r1 c mod(z2)
ステップ4. q4 ← x2 y1 /z2 and r4 ← x2 y1 mod(z2)
ステップ5. q5 ← x1 y2 /z2 and r5 ← x1 y2 mod(z2)
のように、上記アルゴリズム10のステップ2からステップ5が導けた。
(式1)の第三項+(式2)の第二項+(式3)の第一項+(式3)の第三項
= (x2y0+x1y1+x0y2)c2 - q1z0c2 - q'z1c2+r'c3
= ((-q6-q7+q8+q9+q10+q11)z2+(-r6-r7+r8+r9+r10+r11))c2
= q''z2c2 + r''c2
(q''=-q6-q7+q8+q9+q10+q11かつ r''=-r6-r7+r8+r9+r10+r11と整理)
= - q''z1c - q''z0+ r''c2…(式4) (式(z2c2=-z1c-z0(mod Z))を利用)
である。
ステップ6. q6 ← q1 z0/ z2 and r6← q1 z0 mod(z2)
ステップ7. q7 ← (-q2+q3+q4+q5) z1 / z2 and r7 ← (-q2+q3+q4+q5) z1 mod(z2)
ステップ8. q8 ← (-r2+r3+r4+r5)c / z2 and r8 ←(-r2+r3+r4+r5) c mod(z2)
ステップ9. q9 ← x2 y0 / z2 and r9 ← x2 y0 mod(z2)
ステップ10. q10 ← x1 y1 / z2 and r10 ← x1 y1 mod(z2)
ステップ11. q11 ← x0 y2 / z2 and r11 ← x0 y2 mod(z2)
のように、上記アルゴリズム10のステップ6からステップ11が導けた。
(式1)の第四項+(式3)の第二項+(式4)の第一項
= (x1y0+x0y1)c - q'z0c - q' z1c
= (-q12-q13+q14+q15)c2 + (-r12-r13+r14+r15)c…(式5)
(式1)の第五項+(式4)の第二項
= -q''z0 + x0y0
= (-q16+q17)c + (-r16+r17) …(式6)
である。
ステップ12. q12 ← (-q2+q3+q4+q5) z0 / c and r12 ← (-q2+q3+q4+q5) z0 mod(c)
ステップ13. q13 ← (-q6-q7+q8+q9+q10+q11) z1 / c and r13 ← (-q6-q7+q8+q9+q10+q11) z1 mod(c)
ステップ14. q14 ← x1 y0 / c and r14 ← x1 y0 mod(c)
ステップ15. q15 ← x0 y1 / c and r15 ← x0 y1 mod(c)
ステップ16. q16 ← (-q6-q7+q8+q9+q10+q11) z0 / c and r16 ← (-q6-q7+q8+q9+q10+q11) z0 mod(c)
ステップ17. q17 ← x0 y0 / c and r17 ← x0 y0 mod(c)
のように、上記アルゴリズム10のステップ12からステップ17が導けた。
(式1)
= (式4)の第三項+(式5)の第一項+(式5)の第二項+(式6)の第一項+(式6)の第二項
= (-q12-q13+q14+q15+r'')c2+(-r12-r13+r14+r15-q16+q17)c+(-r16+r17)・・・(式7)
が成り立つ。(式7)の値は0未満または法Z以上の値となり得る。そこで、0未満の場合は法Zを加算し、法Z以上の場合は法Zの減算を繰返して、0以上法Z未満の値を得る。これによって上記アルゴリズムのステップ18が導けた。
X=Σ(i=0) [k/w]xici、Y=Σ(i=0) [k/w]yici、Z=Σ(i=0) [k/w]zici・・・(式8)
ただし、kは各整数のビット長とし、[k/w]はビット長kを前記の剰余乗算専用器のビット長wで割った値を切り下げた整数とする。
(式8)を変形すると、次式が得られる。
z[k/w] = -Σ(i=0) [k/w]-1 zici (mod Z)・・・(式9)
(式9)を用い、S704で計算した剰余乗算の商に関わる項目の次数を減らす、リダクション処理を行う。例えば、上記アルゴリズム10の場合では、(式1の第一項)x2y2c4の変形式の第二式から、6wビットの整数q1z2c4を5wビットの整数q1z1c3と4wビットの整数q1z0c2に、(式9)を用いて変形している(S706)。
102 ADD演算器
103 SUB演算器
152 MM2演算器
152 MU演算器
153 DIV演算器
301 クロック発生器
302 入出力ポート
303 制御回路
305 プログラム用メモリ305
304 管理レジスタ
306 データの格納用メモリ
307 制御レジスタ
308 セレクタ
601 マイクロコンピュータ
602 クロック発生器
603 CPU
604 入出力ポート
605 ROM
606 RAM
607 EEPROM
Claims (15)
- 剰余乗算のための演算部と制御部を有し、
前記演算部は剰余乗算の演算処理を行い、
前記制御部は前記剰余乗算の演算処理を再帰的に複数回繰り返してwビットの剰余乗算の剰余と商から、2wビットの剰余乗算の商と剰余を計算するとき、先の剰余乗算の演算処理で求めたwビットの剰余乗算の剰余と商を、次の剰余乗算の演算処理に振り分ける制御を行う、データ処理装置。 - 剰余乗算のための演算部と制御部を有し、
前記演算部は、wを演算値のビット数を表す正の整数、
x、y、zを0≦x、y、z<2wを満たすwビットの非負の整数、
X、Y、Zを0≦X、Y、Z<22wを満たす2wビットの非負の整数、
m、nを非負の整数とするとき、
剰余乗算の演算式xy = qz+r2nを満たす整数qと整数rを出力するための演算処理を行ない、
前記制御部は、前記演算処理を再帰的に繰り返すとき、前記剰余乗算専用器が出力する前記整数qと前記整数rを、乗算の演算式XY = QZ + R22mを満たす整数Qと整数Rを得るための次の演算処理に振り分ける処理を制御する、データ処理装置。 - 前記演算部は、剰余乗算器、加算器、及び減算器を有する、請求項2記載のデータ処理装置。
- 前記演算部は、データメモリと、
アキュムレータと、
前記データメモリ又は前記アキュムレータから前記剰余乗算器、前記加算器、又は前記減算器へのデータ経路を選択するセレクタと、を更に有し、
前記アキュムレータは、前記剰余乗算器、前記加算器、又は前記減算器の出力を累積し、累積されたデータをセレクタ又はデータメモリに出力する、請求項3記載のデータ処理装置。 - 前記制御部は、前記処理の手順を記述した演算制御プログラムを保持するプログラムメモリと、
前記プログラムメモリから読み出される演算命令を解読して前記演算部に前記演算処理を実行させるための制御信号を生成する制御回路と、を有する請求項2記載のデータ処理装置。 - 前記制御部に暗号化又は復号のための剰余乗算処理の指示を与える中央処理装置とを更に備え、1個の半導体基板に形成された、請求項2記載のデータ処理装置。
- 前記中央処理装置のアドレス空間に配置されたRAMを更に有し、
前記制御部は前記RAMを前記演算部のワークメモリとして用いことが可能とされる、請求項6記載のデータ処理装置。 - 剰余乗算のための演算部と制御部を有し、
前記演算部は剰余乗算の演算処理を行い、
前記制御部は、wビットの剰余乗算の剰余乗算の剰余と商から、kwビット(k>2)の剰余乗算の商と剰余を計算するとき、kwビットの乗算をwビットの乗算に分割する分割演算処理と、分割処理された乗算の積から剰余乗算を計算するためのリダクション処理を前記演算部に実行させる、データ処理装置。 - 剰余乗算のための演算部と制御部を有し、
前記演算部は剰余乗算の演算処理を行い、
前記制御部は、X、Y、Zを0≦X、Y、Z<2kwを満たすkwビットの非負の整数とし、剰余乗算の演算式R=XY2-kw mod Zを満たす非負の整数Rを得るとき、
kwビットの整数同士の乗算の積XYを小さいビット数の乗算の積に分割する分割演算処理と、
前記の整数Zに基づいて前記分割処理された前記乗算の積XYに対して次数を低くするリダクション処理と、を前記演算部に実行させる、データ処理装置。 - 前記リダクション処理は、前記分割処理された前記乗算の積XYに対して、最終的に0以上Z未満の値を求める処理である、請求項9記載のデータ処理装置。
- 前記演算部は、剰余乗算器、加算器、及び減算器を有する、請求項10記載のデータ処理装置。
- 前記演算部は、データメモリと、
アキュムレータと、
前記データメモリ又は前記アキュムレータから前記剰余乗算器、前記加算器、又は前記減算器へのデータ経路を選択するセレクタと、を更に有し、
前記アキュムレータは、前記剰余乗算器、前記加算器、又は前記減算器の出力を累積し、累積されたデータをセレクタ又はデータメモリに出力する、請求項11記載のデータ処理装置。 - 前記制御部は、前記処理の手順を記述した演算制御プログラムを保持するプログラムメモリと、
前記プログラムメモリから読み出される演算命令を解読して前記演算部に前記分割演算処理及びリダクション処理を実行させるための制御信号を生成する制御回路と、を有する請求項9記載のデータ処理装置。 - 前記制御部に暗号化又は復号のための剰余乗算処理の指示を与える中央処理装置を更に備え、1個の半導体基板に形成された、請求項9記載のデータ処理装置。
- 前記中央処理装置のアドレス空間に配置されたRAMを更に有し、
前記制御部は前記RAMを前記演算部のワークメモリとして用いことが可能とされる、請求項14記載のデータ処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008263670A JP5294787B2 (ja) | 2008-10-10 | 2008-10-10 | データ処理装置及びデータ処理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008263670A JP5294787B2 (ja) | 2008-10-10 | 2008-10-10 | データ処理装置及びデータ処理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2010091913A true JP2010091913A (ja) | 2010-04-22 |
| JP5294787B2 JP5294787B2 (ja) | 2013-09-18 |
Family
ID=42254674
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008263670A Expired - Fee Related JP5294787B2 (ja) | 2008-10-10 | 2008-10-10 | データ処理装置及びデータ処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5294787B2 (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011232404A (ja) * | 2010-04-23 | 2011-11-17 | Nec Soft Ltd | 剰余乗算演算装置、剰余乗算演算方法、剰余乗算演算プログラム |
| JP2020140120A (ja) * | 2019-02-28 | 2020-09-03 | ルネサスエレクトロニクス株式会社 | 演算処理方法、演算処理装置、及び半導体装置 |
| CN114666054A (zh) * | 2022-02-21 | 2022-06-24 | 清华大学 | Rsa私钥操作方法、装置、电子设备和存储介质 |
| JP2022134466A (ja) * | 2021-03-03 | 2022-09-15 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
| JPWO2023199440A1 (ja) * | 2022-04-13 | 2023-10-19 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05324274A (ja) * | 1992-05-15 | 1993-12-07 | Matsushita Electric Ind Co Ltd | 2進10進変換装置 |
| JPH11316544A (ja) * | 1998-03-02 | 1999-11-16 | Matsushita Electric Ind Co Ltd | 剰余乗算装置 |
| JP2002007112A (ja) * | 2000-06-20 | 2002-01-11 | Sony Corp | 剰余演算計算方法および剰余演算計算装置 |
| JP2005128832A (ja) * | 2003-10-24 | 2005-05-19 | Sony Corp | データ処理装置と剰余演算回路 |
| JP2007212701A (ja) * | 2006-02-09 | 2007-08-23 | Renesas Technology Corp | 剰余演算処理装置 |
-
2008
- 2008-10-10 JP JP2008263670A patent/JP5294787B2/ja not_active Expired - Fee Related
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05324274A (ja) * | 1992-05-15 | 1993-12-07 | Matsushita Electric Ind Co Ltd | 2進10進変換装置 |
| JPH11316544A (ja) * | 1998-03-02 | 1999-11-16 | Matsushita Electric Ind Co Ltd | 剰余乗算装置 |
| JP2002007112A (ja) * | 2000-06-20 | 2002-01-11 | Sony Corp | 剰余演算計算方法および剰余演算計算装置 |
| JP2005128832A (ja) * | 2003-10-24 | 2005-05-19 | Sony Corp | データ処理装置と剰余演算回路 |
| JP2007212701A (ja) * | 2006-02-09 | 2007-08-23 | Renesas Technology Corp | 剰余演算処理装置 |
Non-Patent Citations (5)
| Title |
|---|
| CSNG200700681009; 吉野 雅之 他: 'コプロセッサの2倍のビット長をもつモンゴメリ乗算' 電子情報通信学会技術研究報告 Vol.106 No.175, 20060713, p.87〜94, 社団法人電子情報通信学会 * |
| JPN6013019901; 吉野 雅之 他: 'コプロセッサの2倍のビット長をもつモンゴメリ乗算' 電子情報通信学会技術研究報告 Vol.106 No.175, 20060713, p.87〜94, 社団法人電子情報通信学会 * |
| JPN6013019904; Masayuki Yoshino et al: 'Double-size bipartite modular multiplication' LNCS Vol.4586, 2007, p.230-244, Springer * |
| JPN6013019907; Masayuki Yoshino et al: 'Unbridle the bit-length of a crypto-coprocessor with montgomery multiplication' LNCS Vol.4356, 2006, p.188-202, Springer * |
| JPN6013019908; Yoshino Masayuki et al: 'Montgomery Multiplication with Twice the Bit-Length of Multipliers' IEICE transactions on fundamentals of electronics, communications and computer sciences Vol.91 No.1, 20080101, p. 203-210, IEICE * |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011232404A (ja) * | 2010-04-23 | 2011-11-17 | Nec Soft Ltd | 剰余乗算演算装置、剰余乗算演算方法、剰余乗算演算プログラム |
| JP2020140120A (ja) * | 2019-02-28 | 2020-09-03 | ルネサスエレクトロニクス株式会社 | 演算処理方法、演算処理装置、及び半導体装置 |
| JP7286239B2 (ja) | 2019-02-28 | 2023-06-05 | ルネサスエレクトロニクス株式会社 | 演算処理方法、演算処理装置、及び半導体装置 |
| JP2022134466A (ja) * | 2021-03-03 | 2022-09-15 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
| JP7402191B2 (ja) | 2021-03-03 | 2023-12-20 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
| CN114666054A (zh) * | 2022-02-21 | 2022-06-24 | 清华大学 | Rsa私钥操作方法、装置、电子设备和存储介质 |
| JPWO2023199440A1 (ja) * | 2022-04-13 | 2023-10-19 | ||
| WO2023199440A1 (ja) * | 2022-04-13 | 2023-10-19 | 日本電気株式会社 | 符号付き整数の剰余積計算装置、符号付き整数の剰余積計算方法及び、プログラム |
| JP7673871B2 (ja) | 2022-04-13 | 2025-05-09 | 日本電気株式会社 | 符号付き整数の剰余積計算装置、符号付き整数の剰余積計算方法及び、プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP5294787B2 (ja) | 2013-09-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7805478B2 (en) | Montgomery modular multiplier | |
| US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
| US9772821B2 (en) | Cryptography method comprising an operation of multiplication by a scalar or an exponentiation | |
| JP5294787B2 (ja) | データ処理装置及びデータ処理方法 | |
| KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
| US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
| Gutub et al. | Efficient scalable VLSI architecture for Montgomery inversion in GF (p) | |
| US10057064B2 (en) | Computational method, computational device and computer software product for montgomery domain | |
| US7480691B2 (en) | Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic | |
| TWI630545B (zh) | 非模數乘法器、用於非模數乘法的方法及計算裝置 | |
| Gutub et al. | Serial vs. parallel elliptic curve crypto processor designs | |
| US8417760B2 (en) | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication | |
| CN101809638A (zh) | 运算方法和运算装置 | |
| Machhout et al. | Coupled FPGA/ASIC implementation of elliptic curve crypto-processor | |
| JP3904421B2 (ja) | 剰余乗算演算装置 | |
| Gutub et al. | Efficient scalable hardware architecture for Montgomery inverse computation in GF (p) | |
| US7471789B2 (en) | Encryption circuit achieving higher operation speed | |
| Zimmermann et al. | High-performance integer factoring with reconfigurable devices | |
| Sandoval et al. | Novel algorithms and hardware architectures for Montgomery Multiplication over GF (p) | |
| JP2012242539A (ja) | セキュリティシステム及びマイクロコンピュータ | |
| Realpe-Muñoz et al. | High-Performance Architectures for Finite Field Inversion Over GF (2163) | |
| Morales-Romero et al. | Efficiency Evaluation of a Modified Montgomery Multiplication Systolic Architecture Implemented on an FPGA | |
| Yang et al. | An optimized scalable and unified hardware structure of Montgomery multiplier | |
| Chiou et al. | Parallel modular multiplication with table look-up | |
| Daly et al. | Division in gf (p) for application in elliptic curve cryptosystems on field programmable logic |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100527 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111003 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130418 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130502 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130514 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130606 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130611 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |