170 likes | 314 Views
CHAPTER9 9.4 ~ 9.5. 学籍番号 6311666 長谷部聖哉. 9.4 ハードウェアでテストする Triple-DES アルゴリズム. 前章で示した反復の手法 ソフトウェアシミュレーション コンパイル ハードウェアシミュレーション これらの目的 アルゴリズムに適した関数の検証 初期性能の数値評価. 性能の評価 コンパイラツール ハードウェアシミュレーション デバッグと性能分析の両方に優れているが、 実際にハードウェアの動きを監視する方が良い SW/HW のテスト環境のセットアップ. プラットフォームの選択.
E N D
CHAPTER9 9.4~9.5 学籍番号 6311666 長谷部聖哉
9.4ハードウェアでテストするTriple-DESアルゴリズム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ソフトウェアストリームマクロインタフェース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プロセスでは利用できない可能性がある