高速剰余算アルゴリズムとそのハードウェア実装につ

Download Report

Transcript 高速剰余算アルゴリズムとそのハードウェア実装につ

高速剰余算アルゴリズムとその
ハードウェア実装についての研究
数理情報科学専攻 福永研究室
山本 聡
目次


研究背景
ハードウェアでの回路設計

開発環境





Verilog HDL(Hardware Description Language)
FPGA(Field Programmable Gate Array)
HDLを用いた剰余算回路の設計
研究結果について
まとめと今後の課題
研究背景(1)


コンピュータ上でのデータは二進数で処理され、
基本的な演算を繰り返すことで様々な動作を可
能にしている。
演算の処理速度は、汎用コンピュータ上のソフト
ウェアでの実行よりも、専用のハードウェアによ
る計算のほうが高速に計算できることが知られ
ている。
研究背景(2)

CPU内で用いられている、四則演算などの基本
的な演算を行う回路についても高速化など性能
向上のための研究がなされており、その中でも
特に除算(剰余算)回路の設計アルゴリズムの
研究は現在でも頻繁に行われている。

参考文献:高木直史
「算術演算のVLSIアルゴリズム(コロナ社 2001)」
研究背景(3)

高速な除算回路を設計することで、


CPUの演算速度のさらなる高速化
計算する数を大きなビット幅に対応させることでの暗
号解読分野への応用
という可能性を見込むことができる。
ハードウェアでの回路設計(1)


ハードウェア上では、全ての数が二進数(0と1のみ)
で表現されている。
回路は、全て以下の図で示す「組み合わせ回路」と
呼ばれる論理回路で構成されている。
組み合わせ回路と真理値
ハードウェアでの回路設計(2)

組み合わせ回路を複数個用いることで、求める
数値を出すように回路を設計する。
FA(全加算器)
FA真理値表
hAとFAを組み合わせた4ビット加算器
hA(半加算器)
hA真理値表
開発環境(1)

Verilog HDL


ソフトウェア上で回路を記述することができるハード
ウェア記述言語(HDL : Hardware Description
Language)の一つ。
配線などを直接記述するゲートレベルでの記述の他
に、先の組み合わせ回路であるAnd、Or、Notがそれ
ぞれ 、+ 、~ という数式で表すことができることから、
C言語に似たビヘイビアルレベルという記述法でも回
路を設計することができる。
開発環境(2)

FPGA(Field Programmable Gate Array)


利用者が独自に回路を設計し、ハードウェアの動作と
して評価をすることができる書き換え可能なIC。
Verilogで記述した論理回路をダウンロードケーブル
を用いて書き込むことでICを作成できる。
FPGA評価ボード(VirtexⅣ xc4vfx12)
開発環境(3)

FPGA内には書き換え可能な論理ブロックと配線が
用意されており、HDLで記述した論理回路と接続配
線の情報をそれぞれにプログラミングすることで、回
路情報をハードウェア化し評価することができる。
FPGAの構造
開発環境(4)
HDLを用いた剰余算回路の設計(1)


FPGAには書き込める素子数が決められている。
一般に回路の高速化を図ろうとすると回路が複雑
になるため使用する素子数が増える。
そのため使用するFPGAの素子数に応じた高速
化を行うことが必要になる。
HDLを用いた剰余算回路の設計(2)


剰余算のアルゴリズムは現在でも発展途上の段
階であり、特に縮小化・高速化という観点で研究
がなされている。
乗算した値の剰余を取る乗算剰余算
において縮小化・高速化を実現したアルゴリズ
ムとして、インターリーブ法とモンゴメリ法が考案
されている。
インターリーブ法

インターリーブ
法とは、上位
ビットから剰余
の計算を行う
アルゴリズム
である。
インターリーブ法の略回路図

単純な動作で剰余を実
現しているため、
少ない素子数で回路を
設計することができる。
モンゴメリ法

モンゴメリ法とは下
位のビットから剰余
を計算を行うアルゴ
リズムである。
モンゴメリ法の略回路図

大きなビットを扱う乗算器を
使用しなければならないため
使用する素子数は多くなるが、
複数ビットをまとめて計算を
行うため、高速に演算を終え
ることができる。
研究と結果について(1)

今回の研究では高木直史(名古屋大学)の提案
した二分乗算剰余算アルゴリズムの、素子数の
省略化を施した状態での実装を行い、計算時間
と素子使用率についての詳細な評価を行った。

二分乗算剰余算とは、先に解説したインターリー
ブ法とモンゴメリ法を並列に処理させることで、
計算時間を短縮しようというアルゴリズムである。
研究と結果について(2)


各アルゴリズムの計算速度に
応じて計算するビットを変化さ
せることで最適化できる。
例えばモンゴメリ法がインター
リーブ法より2倍の計算速度
だとすると、モンゴメリ法の計
算ビットをインターリーブ法の
2倍にすることで最適化を図る
ことができる。
二分乗算剰余算の回路図
研究と結果について(3)


回路内の共通の
演算部を再利用
することで素子数
の使用率を抑え
る工夫をした。
結果として素子数
を抑えることがで
き、より大きな計
算ビットを処理で
きる回路を作成す
ることができた。
通常の回路
共通の回路を一つに
まとめた回路図
研究と結果について(4)

インターリーブ法とモンゴメリ法の計算速度を
評価し、回路が入力値を最適に計算するビッ
ト幅に分割して回路を作成した。
まとめ

今回の実装では、二分乗
算剰余算を回路化すること
で、352ビット同士の積を
352ビットで剰余を行うとい
う計算を、高速に剰余演算
を行うとされているモンゴメ
リ法の79%の計算時間で
行うことができた。
今後の課題


今後の課題として、今回よりも素子数の大きな
FPGAを用いてより大きな数の剰余計算を行うこ
とができる回路を設計することがあげられる。
また実現した回路を用いることで、高速な剰余算
の計算が多数回必要とされる暗号解読分野へ
の応用が見込めると考えている。