多倍長乗算回路の構成と評価に関する研究
多倍長乗算回路の構成と評価に関する研究. 電気通信大学大学院 電気通信学研究科 情報工学専攻 0442006 矢崎 俊志. 構成. 背景と目的 FFT 乗算のハードウェア実装 Karatsuba 乗算のハードウェア実装 考察 まとめ. 背景と目的. 背景と目的 FFT 乗算のハードウェア実装 Karatsuba 乗算のハードウェア実装 考察 まとめ. 高精度数値計算 素数判定 カオス計算 暗号計算. などで利用される. 背景と目的 - 多倍長数 -. 多倍長数 とは・・・. 汎用プロセッサの一語長を 大きく上回るビット長で表現される数.
多倍長乗算回路の構成と評価に関する研究
E N D
Presentation Transcript
多倍長乗算回路の構成と評価に関する研究 電気通信大学大学院 電気通信学研究科 情報工学専攻 0442006 矢崎 俊志
構成 • 背景と目的 • FFT乗算のハードウェア実装 • Karatsuba乗算のハードウェア実装 • 考察 • まとめ
背景と目的 • 背景と目的 • FFT乗算のハードウェア実装 • Karatsuba乗算のハードウェア実装 • 考察 • まとめ
高精度数値計算 • 素数判定 • カオス計算 • 暗号計算 などで利用される 背景と目的-多倍長数- 多倍長数とは・・・ • 汎用プロセッサの一語長を大きく上回るビット長で表現される数
アプリケーションのボトルネックとなり得る ハードウェアによる高速化 アルゴリズムの改良 背景と目的-多倍長乗算- 多倍長演算を行う上で演算時間が問題となる • 特に乗算は • 加減算よりも演算時間が長い • 除算よりも使用頻度が多い
背景と目的-アルゴリズムの改良- • 筆算式乗算 • 法算法 • Karatsuba 2-way法 • Karatsuba 3-way法 • Karatsuba 4-way法 • Karatsuba 5-way法 • FFT乗算 (高速フーリエ変換:Fast Fourier Transform)
専用 • 高性能 • 低面積 • 低消費電力 • 高価 • 汎用 • 比較的高性能 • 安価 背景と目的-ハードウェアによる高速化- • 汎用プロセッサの置き換え • 汎用プロセッサとの協調 ハードウェアの性能や面積コストに関する検討が必要
背景と目的–多倍長乗算の実装の現状- • ソフトウェア実装 FFT ライブラリを用いた乗算 Karatsuba 法の実装 ex) exflib, GnuMP, FMT, FFTW (FFT乗算に用いる) • ハードウェア実装 • FFT 法FFTハードウェアは多数 乗算に利用した例は知られていない • Karatsuba 法(ガロア体)多数(Dykaら、Grabbeら、Chengらによる) • Karatsuba 法(整数)32 ビットの整数乗算器のみ(柴岡らによる)
背景と目的-FFT乗算の特徴- • 利点 • 既にあるFFT実装を利用可能 • 欠点 • 比較的小さな桁数では不利 • 浮動小数点演算が必要(オーバヘッドが大きい) • 回路面積が大きくなる(性能低下) • 演算に十分な精度が必要
背景と目的-Karatsuba乗算の特徴- • 利点 • アルゴリズムが単純 • ハードウェア構成に有利 • 再帰的な適用により、性能とコストのトレードオフが可能 • 欠点 • 大きな桁数ではFFT乗算より遅い
背景と目的–目的と意義- • FFT乗算を用いた大きな桁数Karatsuba乗算を用いた比較的小さな桁数のハードウェア乗算器を構成し性能やコストを明らかにする。 • ソフトウェア実装との比較から実装におけるソフトウェア、ハードウェア、協調設計のトレードオフを可能とする。 多倍長乗算を用いたアプリケーションに おいて有益
FFT乗算のハードウェア実装 • 背景と目的 • FFT乗算のハードウェア実装 • Karatsuba乗算のハードウェア実装 • 考察 • まとめ
FFT乗算–アルゴリズム- • FFTアルゴリズムはCooley Tukey FFT • 再帰的な適用を行わない(乗算桁数が制限される) • 基数を 16 に固定(1桁に4bitを入れる) • 複素数FFT ・・・ 既存のFFTハードウェアも利用可能
FFT乗算–butterfly モジュール- • 複素数乗算器1個 • 浮動小数点加減算器4個 • 乗数、被乗数をFFTで変換 • 項べつ積(同じ桁どうしの積) • FFT逆変換 • スケーリング • 丸め・桁上げ
FFT乗算–complex multiplierモジュール- • 浮動小数点乗算器3個 • 浮動小数点加減算器5個 • 乗数、被乗数をFFTで変換 • 項べつ積(同じ桁どうしの積) • FFT逆変換 • スケーリング • 丸め・桁上げ
FFT乗算–inv-butterflyモジュール- • 複素数乗算器1個 • 浮動小数点加減算器4個 符号反転 • 乗数、被乗数をFFTで変換 • 項べつ積(同じ桁どうしの積) • FFT逆変換 • スケーリング • 丸め・桁上げ
FFT乗算–scalerモジュール- • 指数部を取り出しkを減ずる • 符号、仮数部と結合して出力 • 指数部長の減算器1個 • 乗数、被乗数をFFTで変換 • 項べつ積(同じ桁どうしの積) • FFT逆変換 • スケーリング • 丸め・桁上げ
FFT乗算–rounder-carrierモジュール- • 浮動小数点加減算器1個 • 加算器1個(四捨五入) • シフタ1個(桁上げ) 下位桁からキャリーを加算 整数に丸め(四捨五入)、キャリーと桁の数を計算 • 乗数、被乗数をFFTで変換 • 項べつ積(同じ桁どうしの積) • FFT逆変換 • スケーリング • 丸め・桁上げ
FFT乗算–memoryモジュール- • 乗数、被乗数、回転子、中間結果を保持 • Dual Port RAM • キャッシュの役割
FFT乗算–controllerモジュール- • 演算の状態を保持 • 適切な制御信号を各演算器に送る
FFT乗算–FFT乗算における精度- ソフトウェアでは …. IEEE 754 64bit 表現等を使用 ハードウェアでは …. 最小のビット長(精度)で実装 誤差の振る舞いを把握する必要がある
FFT乗算–FFT乗算の誤差- • Henriciによる解析的な誤差見積もり • 誤差伝播の一次モデル • 平山による数値実験 • 解析的な誤差見積もりは過大評価であると指摘 • すべての桁の数が r -1 となる値(最大値)どうしの乗算が最大の誤差を与える
FFT乗算–実験による誤差測定- において、 a、b を 0 から F まで変えながら乗算を行い誤差を測定 (*)n=4096, 8192でも同じ傾向
FFT乗算–最適なビット長- 以上から…. • 指数部 オーバフローしない長さ • 仮数部 最大値どうしの乗算で正しい結果が得られる長さ 乗算桁数に対する最適ビット長を測定 に決定する
FFT乗算–実装と評価の条件- セルライブラリ • 言語 Verilog-HDL • シミュレータ Verilog-XL 04.10.001-p • 論理合成系 Design Compiler 2003.6-SP1 • セルライブラリ 日立製作所 CMOS 0.18μm (VDEC作成) HDL記述 合成 面積、遅延時間 回路の性能を決定
乗算に必要な総クロック数は各演算器のレイテンシから乗算に必要な総クロック数は各演算器のレイテンシから となる。 FFT乗算–実装結果- 演算効率化のためにパイプライン化を行った • 面積 : 9.05 mm2 • 遅延 : 1.89 ns 16進213桁の乗算において
FFT乗算–ソフトウェア実装との速度比較- ソフトウェアの条件 Pentium 4 1.7 GHz(0.18μm) FFTW(高速なFFTライブラリ) 19.7倍から34.3倍 (平均25.7倍)
FFTWによるFFT乗算と exflib によるKaratsuba 乗算 FFT乗算–他のアルゴリズムとの速度比較- 16進221桁におけるソフトウェア乗算 • FFT乗算(FFTW) 13.9 s • Karatsuba 乗算(exflib) 16.5 s 16進221桁における最適なFFT乗算器 • 面積 : 16.1 mm2 • 遅延 : 1.96 ns • 演算時間 : 0.39 s • vs. FFTW・・・35倍 • vs. exflib・・・・42倍
FFT乗算–カスタムLSIの試作- 現実のチップは回路面積以外にも • I/O用の素子 • 電源、グランドの配線 の配置面積が必要 チップへの実装可能性を 検討するため、 カスタムチップを試作した。
FFT乗算–試作結果- 2 2.8mm 2.8mm 16進 221桁のFFT乗算器の面積は 16.1 mm2 なので、9mm角(80mm2)程度のチップ面積で 実装可能 2.8mm角のチップで 回路を配置できる面積は 全体の 20% (1.56mm2)
FFT乗算–まとめ- • 誤差に着目して最適な精度でFFT乗算器を実装 • 16進25桁から213桁において • ソフトウエアより19.7倍から34.3倍(平均25.7倍)高速 • 面積は9.05mm2 • 16進221桁において(FFT乗算とKaratsuba乗算の速度が逆転する点) • ソフトウェアFFT乗算とKaratsuba乗算より それぞれ35倍と42倍高速 • 面積は16.1mm2 • カスタムチップを試作 • 16進2桁のFFT乗算器が2.8mm角をチップに実装 • 16進221桁のFFT乗算は9mm角程度のチップに実装可能
Karatsuba乗算のハードウェア実装 • 背景と目的 • FFT乗算のハードウェア実装 • Karatsuba乗算のハードウェア実装 • 考察 • まとめ
Karatsuba乗算–2-way アルゴリズム- nビットずつ上位と下位に分ける NOTE • AとBは2nビットの整数 • 再帰的に適用可能 4回のnビット乗算が必要 3回のnビット乗算が必要
Karatsuba乗算–設計選択肢(3)- Iterative Karatsuba Multiplier (IKM) Recursive Karatsuba Multiplier (RKM)
Karatsuba乗算–設計選択肢(4)- • 多倍長乗算はIKMとして実現するのが妥当 • IKMはそれ自身に小さな乗算器を用いる • この小さな乗算器を • RKM • WTM (Wallace Tree Multiplier) で構成する2通りの方法がある どちらが妥当であるか検討する
Karatsuba乗算–設計選択肢(5)- RKMとWTMの 最大遅延時間と面積のOrder 実際の遅延時間と面積を見積もるためには、実装による評価が必要
Karatsuba乗算–RKMの設計(1)- • Karatsubaアルゴリズムは再帰的に適用可能 • ここでは として、 ビットWTMを用いたRKMを設計する。 ただし、 。 (たとえば、Karatsubaアルゴリズムを1回適用した 32ビットRKMには3個の16ビットWTMを用いる) • RKM を3つのコンポーネントで構成 (1) Topmost component (T) (2) Intermediate component (I) (3) Undermost component (U)
Karatsuba乗算–RKMの設計(2)- Topmost component (T) • KaratsubaCSと KaratsubaBは再帰の段階によって次のように置き換える • 最後の再帰ではUcsと Ub(undermost components) • それ以外ではIcsと Ib(intermediate components) • VモジュールでCSAによって部分積を累算 • CPA はCarry Save 形式で得られた積を Binary 形式に変換
Karatsuba乗算–RKMの設計(3)- Intermediate components (I) • KaratsubaCSと KaratsubaBは再帰の段階によって次のように置き換える • 最後の再帰ではUcsと Ub(undermost components) • それ以外ではIcs and Ib (intermediate components) Ics Ib
Karatsuba乗算–RKMの設計(4)- Undermost components (U) • CPAはWTMへ入力する値を Carry-Save形式からBinary形式へ変換している • WTMs (Wallace Tree Multiplier)は小さな乗算を行う Ucs Ub
Karatsuba乗算–RKMの評価(1)- 設計したRKMのTopmost、Intermediate、Undermostの 遅延時間と面積を次式で見積もる Delay Area
Karatsuba乗算–RKMの評価(2)- 前式のパラメータとして次を用いる • 基本となるWTMのビット長を16(l =4)とした • CPA (Carry Look-ahead Adder) • CSA(CSAの遅延はビット長によらないが、面積は比例する) • WTM
Karatsuba乗算–RKMの評価(3)- • WTMの遅延は常にRKMより小さい • RKMの面積は29ビット(約30mm2)以上においてWTMより小さくなる IKMに用いる乗算器としてはWTMが妥当である
Karatsuba乗算–IKMの設計(1)- アルゴリズムを再帰的に2回適用した場合を例にしてIKMを構成する まず、乗数 Aと被乗数 Bを n を基本ビット長 と呼ぶ と置き、積 Pを とする。AとBの乗算に2回のKaratsuba アルゴリズムを用いると積 Pは
Karatsuba乗算–IKMの設計(2)- • pp0からpp8を求める • p0からp7を求める • p0からp7へ桁上げを伝播させる 1.から3.の計算を行う モジュールをそれぞれ • PPG(Partial Product Generator) • ACC(Accumulator) • CP(Carry Propagator) として設計する
Karatsuba乗算–IKMの構成- IKMはPPG、ACC、CPから以下のように構成する
Karatsuba乗算–PPGの構成- PPGは • 1個の乗算器 • 2個の加算器 • バッファ(PPG Buffer) で構成される。
Karatsuba乗算–ACCの構成- ACCは • 4個の加減算器 • バッファ(ACC Buffer) で構成される。 符号拡張 基本ビット長n pp0 pp1 pp7 pp8