長谷部 聖哉(9.4-5)

Download Report

Transcript 長谷部 聖哉(9.4-5)

CHAPTER9 9.4~9.5
学籍番号 6311666
長谷部聖哉
9.4ハードウェアでテストするTriple-DESアルゴリズム
• 前章で示した反復の手法
– ソフトウェアシミュレーション
– コンパイル
– ハードウェアシミュレーション
• これらの目的
– アルゴリズムに適した関数の検証
– 初期性能の数値評価
• 性能の評価
– コンパイラツール
– ハードウェアシミュレーション
• デバッグと性能分析の両方に優れているが、
実際にハードウェアの動きを監視する方が良い
SW/HWのテスト環境のセットアップ
プラットフォームの選択
• V2MB1000ボードを選択(HW)
– メメックデザインから入手可能なFPGAのプロトタイピ
ングボード
– オンボード周辺機器インタフェース
• ネットワークインターフェイス、 USBポートなど
– ザイリンクスのVirtexⅡデバイス
• MicroBlazeソフトプロセッサコアとそのFSLを相互
接続することにより実装(SW)
– 効率的なSWとHWの通信チャネルを提供
– 高速にMicroBlazeからFPGAベースのアルゴリズムに
文字列データを変換可能
SW及びHWのアルゴリズムの比較
• テストの目的
– SWとHW上で同じアルゴリズムのコンパイル
• MicroBlazeプロセッサ上での標準Cの関数(SW)
• FPGA上で実装(HW)
アルゴリズムの精度と性能の両面を比較可能
MicroBlazeの役割
テキストデー
タを渡す
結果を受け取
る
• システム検証用のテストは前章のものより簡
単
• SWテストベンチを作成
– テキストファイルから文字を読み込む
– 文字を暗号化する
– 出力のために復合化
従来のCの関数呼び出しで同一の暗号化と復号化
以前のSWテストベンチ
• 複数のプロセスを使用
– 生産者,消費者プロセスなど
• 6つのプロセスから成っていた
– VisualStudioで6つの独立したスレッドで実装
– 6つのプロセスを並列な動作確認可能
今回のテストベンチ
• 複数プロセスを実行するのにスレッドに依存
していないもの
– スレッドライブラリ(pthreads)
– 組み込みオペレーティングシステム
テストベンチプロセスは互換性がありMicroBlaze
プロセッサとWindowsデスクトップでも使用可能
( #ifdefステートメントのおかげで?)
• はじめにTIMED_TESTマクロを定義する
– ターゲットプラットフォーム内のタイマーを呼び出す
– Xilinxのxtmrctr.hをinclude
• co.hをincludeする
– Impulseから提供され、インパルスCライブラリ関数の
宣言が含まれる
– 関数自体は選択したプラットフォームに固有のライブ
ラリで提供される
• 暗号化ブロックサイズと通信鍵スケジュールの
深さを指定
– BLOCKSIZEとKS_DEPTHマクロで
– これらは変更してはいけない
• MicroBlazeをコンパイル
– printf関数はxil-printf関数(MicroBlazeの固有の
関数)に置き換えられる
– UART周辺機器へこの関数は対応付けられる
• co_initializeとdeskeyをexternで宣言
– co_initializeは既に設定されている関数を使用し
て定義(8章)
– deskeyは24個の暗号化キーから鍵スケジュール
データを生成するために使用
得られたキースケジュールとSPボックスのデータ
は、extern配列Ks,Spboxに格納
• 静的文字配列の値はブロックとして宣言
– この値はテスト入力として使用
– ソフトベンチをマイナーな修正により多くの入力文
字を使用可能になる
9.5ソフトウェアストリームマクロインタフェース
• アルゴリズムはHWで実装し最適化(10章)
– 1,2クロックサイクルでデータ消費や処理が可能
– 非常に高速なデータレートを維持可能
HWにデータを提供するSWの部分も効率的に
データを出力可能にすべき
• SWアプリケーションのオーバーヘッドを軽減する
方法
– 非効率な関数呼び出しの回数を減らす
• ストリームを操作する標準メソッド
– co_stream_open(開く)
– co_stream_read(読み取り)
– co_stream_write(書き込み)
– co_stream_close(閉じる)
ストリームインターフェイス間でデータ通信を構成、
管理するために使用
ストリームインタフェースは以下のように実装
• FIFOのバッファリングチャネル(HW側)
• メモリマップを利用した低レベルバスインタフェース
(SW側)
• ストリーム関数の単純な手続き呼び出しの
オーバーヘッドには多くのサイクルが必要
パフォーマンスの低下が生じる
• ストリームの読み書き関数のマクロの使用
埋め込まれたアセンブリ命令を使用
関数呼び出しのオーバーヘッドの削減が可能
• HWプロセス
– 常に標準のインパルス関数を利用すべき(4章)
• SWプロセス
– 以下のマクロを使用し,より直接的な関数に置き
換えることでパフォーマンスを向上
•
•
•
•
HW_STREAM_OPEN(proc,stream,mode,type)
HW_STREAM_READ(proc,stream,var,evar)
HW_STREAM_WRITE(proc,stream,var)
HW_STREAM_CLOSE(proc,stream)
• マクロの使用の注意点
– SWとHWの互換性を維持するために開発過程の
後半まで使用は控えるべき
– HWプロセスでは利用できない可能性がある