狠狠撸

狠狠撸Share a Scribd company logo
1
? Hitachi, Ltd. 2022. All rights reserved.
株式会社 日立製作所 研究開発グループ
デジタルプラットフォームイノベーションセンタ データストレージ研究部
2022/7/26
島田 健太郎
複雑なアルゴリズムのハード化における高位合成の活用事例
第9回ACRiウェビナー
? Hitachi, Ltd. 2022. All rights reserved.
1. 自己紹介
2. 背景:複雑なアルゴリズムのハード化における課題?高位合成の利点
3. 題材:圧縮アルゴリズムLZMA
4. 課題:高位合成の初期試行状況
5. 施策①:メモリアクセス幅拡大
6. 施策②:データフロー化
7. 施策③:文字列比較ループアンローリング
8. 評価:本事例における改善施策の効果
9. 高位合成の活用まとめ
Contents
1
0
1
2
2
? Hitachi, Ltd. 2022. All rights reserved.
1.自己紹介
島田 健太郎 研究開発グループ デジタルプラットフォームイノベーションセンタ データストレージ研究部 所属
? 1993年入社
? 入社当初は、スーパーコンピュータのプロセッサの設計開発に従事
? その後、ハードウェア?アーキテクチャの研究開発に従事
? 論理設計は、ASICで、RTLやゲートレベル設計/スケマティックな設計を経験
? 今回、FPGAを用いて複雑なアルゴリズムをハード化するに当たり、高位合成の活用を行った
ゲートレベル設計/スケマティック設計
Adder(int a, int b, int c) {
c = a + b;
}
高位合成(高位言語記述)
a
b c
3
? Hitachi, Ltd. 2022. All rights reserved.
2.1 背景(1):複雑なアルゴリズムのハード化における課題
1. 複雑なアルゴリズムをハード化する場合、通常のRTL設計であると、詳細設計?実装設計を含め、
多大な開発工数を要し、ハード化の見通しを得るのに?期間かかる
2. 設計当初の段階(仕様設計/機能設計段階)では、性能や物量の見通しが困難
3. 設計した結果を性能等評価できるのが、後工程となり、フィードバックを行う工数大
4. 更に元のアルゴリズムレベルでの最適化を行うと、多大な再設計の工数が発生
詳細設計
(RTL設計)
実装設計
FPGA
論理合成
仕様設計/機能設計
RTL
記述
実装結果
?性能(詳細)
?物量(詳細)
機能仕様/アルゴリズム
改善/最適化(フィードバック)
(実装改善) 実装情報
(部分的RTL改善)
アルゴリズムレベル改善?大工数発生
RTL設計過程(イメージ)
2
3
3
4
? Hitachi, Ltd. 2022. All rights reserved.
2.2 背景(2):複雑なアルゴリズムのハード化における高位合成の利点
1. 高位言語で記述された複雑なアルゴリズムでも、短期間でハードウェア化の見通しが得られる
2. 最低限達成可能な、性能や物量が早期にわかる
3. 性能や物量を、早期にプロファイルデータから見ることにより、フィードバックの工数低減可能
4. アルゴリズムレベルでの最適化が容易
Adder(int a, int b, int c) {
c = a + b;
}
高位合成
合成結果
高位言語ソース
(アルゴリズム記述)
FPGA
プロファイル
データ
?性能(全体、関数単位)
?物量(同上)
?詳細データ(依存関係等)
改善/最適化(フィードバック)
仕様設計/機能設計
高位合成設計過程
(イメージ)
5
? Hitachi, Ltd. 2022. All rights reserved.
3. 題材:圧縮アルゴリズム LZMA
? 複雑なアルゴリズムへの適用事例として、圧縮アルゴリズム
LZMA(Lempel-Ziv-Markov chain-Algorithm)を取
り上げる。
? LZMAは、圧縮率の高い可逆圧縮アルゴリズム。
辞書圧縮部と、レンジコーダによる符号化部からなる。
? 辞書圧縮部:
①入力データをバイト列として“辞書”に登録
②”辞書”の内容を探索し、入力データ内の重複を抽出
? レンジコーダ:
①データ重複パターンに基づき、0/1の出現確率を予測
②予測との差分を符号に生成
? ハード化は、辞書探索の制御が複雑になる辞書圧縮部の
方が、確率計算の反復で処理できるレンジコーダより難
A B C D A B C E
入力
データ
A B C D E
圧縮
データ
辞書に登録
4文字前と3字一致
図A. 辞書圧縮部の動作例
先 後
A B C D E
圧縮
データ
4文字前と3字一致
0 0 1 0 1 1 1 0
重複パターンを示す
0/1の記号列(中間コード)
図B. レンジコーダの動作例
先行するビットパターンで次の1bitの0/1の
出現確率を予測
予測との差分を
符号に生成
4
5
4
6
? Hitachi, Ltd. 2022. All rights reserved.
4. 課題:高位合成の初期試行状況
? LZMAのオープンソース(C言語)をベースに、高位合成を試行
? 合成することはできた。
? 性能は、見積りの約1/40(圧縮処理時間40倍)。
? プロファイルデータより要因分析
? 最大の要因は、辞書圧縮部で、文字列検索のためのハッシュテーブルを更新する箇所
?1バイトずつアクセスし、更新していた。
? その他は、辞書圧縮部とレンジコーダ部が逐次に実行される構造。
?辞書圧縮部がレンジコーダ部の処理完了を待つ。
? また、辞書圧縮部の文字列検索自体も1文字ずつ比較。
Adder(int a, int b, int c) {
c = a + b;
}
高位合成
合成結果
高位言語ソース
プロファイル
データ
改善/最適化(フィードバック)
7
? Hitachi, Ltd. 2022. All rights reserved.
4. 課題:高位合成の初期試行状況
Adder(int a, int b, int c) {
c = a + b;
}
高位合成
合成結果
高位言語ソース
プロファイル
データ
改善/最適化(フィードバック)
? LZMAのオープンソース(C言語)をベースに、高位合成を試行
? 合成することはできた。
? 性能は、見積りの約1/40(圧縮処理時間40倍)。
? プロファイルデータより要因分析
? 最大の要因は、辞書圧縮部で、文字列検索のためのハッシュテーブルを更新する箇所
?1バイトずつアクセスし、更新していた。
①メモリのアクセス幅拡大
? その他は、辞書圧縮部とレンジコーダ部が逐次に実行される構造。
?辞書圧縮部がレンジコーダ部の処理完了を待つ。
②データフロー化
? また、辞書圧縮部の文字列検索自体も1文字ずつ比較。
③文字列比較ループアンローリング
6
7
5
8
? Hitachi, Ltd. 2022. All rights reserved.
5.1 施策①:メモリのアクセス幅拡大(1):概要
コピー元配列
コピー先配列
コピー元配列
コピー先配列
Start
i = 0
d[i] = s[i]
i < N?
End
s[]
d[]
s[]
d[]
t[]
i = i + 1
Start
i = 0
t[0] = s[i]
t[1] = s[i + 1]
...
t[7] = s[i + 7]
i < N?
End
i = i + 8
d[i] = t[0]
d[i + 1] = t[1]
...
d[i + 7] = t[7]
No
Yes
No
Yes
? 配列から配列にデータをコピーするケース
? 配列は、コピー元?コピー先とも、FPGAの内部メモリにマップするケース
? 配列から配列へ直接コピーする記述や、ループ?アンローリングがされない
場合に、1要素ずつの逐次コピーになり易い
? 途中にレジスタ配列を置き、ループ展開することで複数要素同時にコピー
? 配列から配列にデータをコピーするケース
? 配列は、コピー元?コピー先とも、FPGAの内部メモリにマップするケース
? 配列から配列へ直接コピーする記述や、ループ?アンローリングがされない
場合に、1要素ずつの逐次コピーになり易い
? 途中にレジスタ配列を置き、ループ展開することで複数要素同時にコピー
レジスタ配列
? レジスタ配列を
経由
? ループ?
アンローリング
? レジスタ配列を
経由
? ループ?
アンローリング
1要素ずつコピー 複数要素
同時コピー
(コピー元/コピー先配列ともFPGA内部
メモリにマップ)
9
? Hitachi, Ltd. 2022. All rights reserved.
5.2 施策①:メモリアクセス幅拡大(2): ハッシュテーブル更新 元の構造
文字列(9文字) 位置 文字列(9文字)
①先頭4文字で
ハッシュ値計算
位置
②一組ずつシフト
③先頭に記録
先 後
ハッシュテーブル
入力データ
(辞書)
16bit 8bit×9文字 = 72bit
Start
①先頭4文字でハッシュ値を計算
i = 7
i ≧1?
ハッシュテーブル[ハッシュ値][i].位置
=ハッシュテーブル[ハッシュ値][i-1].位置
現在位置
j = 0
コピー先文字列[j] = コピー元文字列[j]
j = j +1
i = i - 1
j < 9?
ハッシュテーブル[ハッシュ値][0].位置
=現在位置
9文字コピー:
ハッシュテーブル[ハッシュ値][0].文字列
= 現在位置の文字列
9文字コピー:
ハッシュテーブル[ハッシュ値][i].文字列 =
ハッシュテーブル[ハッシュ値][i-1].文字列
End
9文字コピー
End
②一組ずつシフト ③先頭に記録
? ハッシュテーブルに辞書内の位置と先頭の
9文字ずつが登録されている
? 既存内容を移動(シフト)した上で、入力デー
タの現在位置からの9文字を新規登録
? ハッシュテーブルに辞書内の位置と先頭の
9文字ずつが登録されている
? 既存内容を移動(シフト)した上で、入力デー
タの現在位置からの9文字を新規登録
先頭から検査
ハッシュテーブル更新
のフローチャート(元)
(サブルーチンで記載)
No
Yes
No
Yes
(16bit+72bit)×8(シノニム) = 704bit(88byte)
大きなエントリを
1文字(バイト)ずつ
逐次アクセス
8
9
6
10
? Hitachi, Ltd. 2022. All rights reserved.
5.3 施策①:メモリアクセス幅拡大(3):ハッシュテーブル更新 改善策
? ハッシュテーブルを、位置の情報のテーブルと
文字列のテーブルに分割
? エントリ(位置+文字列8組分)をレジスタに
ずらして読上げ、書き戻す
? ハッシュテーブルを、位置の情報のテーブルと
文字列のテーブルに分割
? エントリ(位置+文字列8組分)をレジスタに
ずらして読上げ、書き戻す
位置
16bit
位置
16bit×8 = 128bit
位置
72bit×8 = 576bit
①先頭4文字で
ハッシュ値計算
②ずらして読み上げ
③先頭に格納
先 後
ハッシュテーブル
(分割後)
入力データ
(辞書)
16bit 8bit×9文字 = 72bit
現在位置 先頭から検査
文字列(9文字)
レジスタ
④書き戻し
Start
①先頭4文字でハッシュ値を計算
i = 7
i ≧1?
レジスタ(位置)[i]
=ハッシュテーブル(位置)[ハッシュ値][i-1]
i = i - 1
レジスタ(位置)[0] = 現在位置
9文字コピー(プラグマでアンローリング)
レジスタ(文字列)[0]=現在位置の文字列
9文字コピー(プラグマでアンローリング)
レジスタ(文字列)[i] =
ハッシュテーブル(文字列)[ハッシュ値][i-1]
End
②ずらして読み上げ ③先頭に格納
ハッシュテーブル更新の
フローチャート(改善版)
位置、文字列をそれぞれ
並列にアクセス
No
Yes
ハッシュテーブル(位置)[ハッシュ値][0~7]
= レジスタ(位置)[0~7]
9文字コピー(プラグマでアンローリング)×8:
ハッシュテーブル(文字列)[ハッシュ値][0~7]
= レジスタ(文字列)[0~7]
④書き戻し
②
④
③
11
? Hitachi, Ltd. 2022. All rights reserved.
6.1 施策②:データフロー化(1) データーフロー化適用前
? 二つの処理を含むループ
? それぞれの処理の間で、変数を用いて、一方から他方へデータを受け渡し
?それぞれの回路が逐次動作となる
? 二つの処理を含むループ
? それぞれの処理の間で、変数を用いて、一方から他方へデータを受け渡し
?それぞれの回路が逐次動作となる
Start
初期化処理
処理a
終了判定
処理b
End
終了処理
変数
変数
変数
初期化処理
回路
処理a 回路
処理b 回路
判定回路
終了処理
回路
初期データ
中間データ
出力データ
繰返し
信号
終了データ
時間軸 T1 T2 T3 T4 T5 T6 T7 T8
初期化回路 動作
処理a 回路 動作 動作 動作
処理b 回路 動作 動作
判定回路 動作 動作
終了処理回路
逐次動作:3サイクルピッチ
処理フローチャート 回路構成
10
11
7
12
? Hitachi, Ltd. 2022. All rights reserved.
6.2 施策②:データフロー化(2) データフロー化適用後
? 二つの処理のループを分割
? 分割したループの処理の間で、FIFO(ストリーム変数)を用いてデータを受け渡し
?それぞれの回路の並列動作が可能となる
? 二つの処理のループを分割
? 分割したループの処理の間で、FIFO(ストリーム変数)を用いてデータを受け渡し
?それぞれの回路の並列動作が可能となる
Start
初期化処理
処理a
終了判定b
処理b
End
終了処理
変数
変数
初期化処理
回路
処理a 回路
処理b 回路
判定b回路
終了処理
回路
初期データ
中間データ
出力データ
繰返し
信号
終了データ
時間軸 T1 T2 T3 T4 T5 T6 T7 T8
初期化回路 動作
処理a 回路 動作 動作 動作 動作
判定a回路 動作 動作 動作
処理b 回路 動作 動作 動作
判定b回路 動作 動作
終了処理回路
終了判定a
判定a回路
中間データ
中間データ
FIFO
繰返し
信号
FIFO
並列(オーバーラップ)動作: 2サイクルピッチ
13
? Hitachi, Ltd. 2022. All rights reserved.
6.3 施策②:データフロー化(3) LZMAにおける適用
? 辞書圧縮部と、レンジコーダの呼び出しに適用
?辞書圧縮部と、レンジコーダを並列動作させ、動作時間をほぼ半減
? 辞書圧縮部と、レンジコーダの呼び出しに適用
?辞書圧縮部と、レンジコーダを並列動作させ、動作時間をほぼ半減
Start
辞書圧縮部
終了?
レンジコーダ
End
Start
辞書圧縮部
終了?
レンジコーダ
End
終了?
No
Yes
No
Yes
時間軸 T1 T2 T3 T4 T5 T6
辞書圧縮部 動作 動作 動作
レンジコーダ 動作 動作 動作
辞書圧縮回路
レンジコーダ回路
中間データ
圧縮データ
平文データ
繰返し
信号
No
Yes
時間軸 T1 T2 T3 T4 T5 T6
辞書圧縮部 動作 動作 動作 動作 動作 動作
レンジコーダ 動作 動作 動作 動作 動作
FIFO
辞書圧縮回路
レンジコーダ回路
中間データ
圧縮データ
平文データ
FIFO
中間データ
12
13
8
14
? Hitachi, Ltd. 2022. All rights reserved.
7.1 施策③:文字列比較ループアンローリング(1):アンローリング適用前
? 配列中の二つの文字列を比較し、連続し
て一致する文字数を数える
? 配列はFPGA内メモリへマップされている
? 二つの文字列とも、配列中の任意の位
置から、始まる
? 最大の比較文字数が指定される
? 単純にプログラム記述すると、1文字
(1byte)ずつの比較となる。
? ループ中に(ループ変数を使った)文字
数判定の条件文があるので、アンローリ
ングされても1文字ずつの逐次処理と
なる(並列処理されない)
? 配列のアクセスも、それぞれの文字列を
1文字ずつのアクセスとなる
? 配列中の二つの文字列を比較し、連続し
て一致する文字数を数える
? 配列はFPGA内メモリへマップされている
? 二つの文字列とも、配列中の任意の位
置から、始まる
? 最大の比較文字数が指定される
? 単純にプログラム記述すると、1文字
(1byte)ずつの比較となる。
? ループ中に(ループ変数を使った)文字
数判定の条件文があるので、アンローリ
ングされても1文字ずつの逐次処理と
なる(並列処理されない)
? 配列のアクセスも、それぞれの文字列を
1文字ずつのアクセスとなる
N bytes
文字列a
(先頭位置a)
文字列b
(先頭位置b)
N bytes
文字列が格納されている配列:
(FPGA内部メモリへマップ)
Start
i = 0
i < N?
End
i = i + 1
i文字目は
一致したか
No
Yes
No
Yes
N:最大比較文字数
連続して一致する文字数を数える
最大比較
文字数N
未満か
文字列検索(比較)の
フローチャート(元)
15
? Hitachi, Ltd. 2022. All rights reserved.
7.2 施策③:文字列比較ループアンローリング(2):条件分岐への対応
?1文字ずつの比較を行う条
件文と、ループの繰返しを分
ける
I. アンロールする数を決め
る(右例では、8)
II. 最大比較文字数に至る
まで、アンロールした数分
の比較を行い、一致数
を数える
III. ループの繰返しは、数え
た一致数が、アンロール
した数まで達したかどうか
で判定する
?1文字ずつの比較を行う条
件文と、ループの繰返しを分
ける
I. アンロールする数を決め
る(右例では、8)
II. 最大比較文字数に至る
まで、アンロールした数分
の比較を行い、一致数
を数える
III. ループの繰返しは、数え
た一致数が、アンロール
した数まで達したかどうか
で判定する
Start
i = 0
i < N?
End
1文字目は
一致したか
?
No
Yes
No
Yes
次の1文字目は、
N文字未満か
C = 0
i + 1 < N?
2文字目は
一致したか
?
No
Yes
No
Yes
C = 1
0文字一致
2文字目は、
N文字未満か
1文字一致
Yes
i + 7 < N?
8文字目は
一致したか
?
No
Yes
No
Yes
C = 7
8文字目は、
N文字未満か
7文字一致
C = 8
i = i + C
C < 8?
No
Yes
8文字一致
一致した文字
数を合計
Ⅱ.一致文字数
を数える
③
③
① ②
① ②
繰返し
Ⅲ. 一致数は
アンロールした
数か?
C:一致文字数
N:最大比較文字数
Ⅰ.アンロール数を決める(8)
14
15
9
16
? Hitachi, Ltd. 2022. All rights reserved.
7.3 施策③:文字列比較ループアンローリング(3):配列アクセスへの対応
?レジスタ配列を二つ使用、それぞれの文字列を
レジスタ配列に一旦格納して比較
? 文字列を格納する配列を、アクセス幅(右
例ではアンロール数に合わせた8Byte)を単
位とする二次元配列とする
? レジスタ配列は、一回の配列アクセス幅
(8)の2倍(16)の要素数とする
? 比較はレジスタ配列上で、それぞれの文字
列位置から、一回に最大アンロール数分
=アクセス幅分の文字数(8)を比較
? 比較後、レジスタ配列の内容をシフト
1. レジスタ配列の後半内容を前半にコピー
2. 文字列を格納する配列からアクセス幅
(8Byte)分読出し、レジスタ配列の後
半に格納
?レジスタ配列を二つ使用、それぞれの文字列を
レジスタ配列に一旦格納して比較
? 文字列を格納する配列を、アクセス幅(右
例ではアンロール数に合わせた8Byte)を単
位とする二次元配列とする
? レジスタ配列は、一回の配列アクセス幅
(8)の2倍(16)の要素数とする
? 比較はレジスタ配列上で、それぞれの文字
列位置から、一回に最大アンロール数分
=アクセス幅分の文字数(8)を比較
? 比較後、レジスタ配列の内容をシフト
1. レジスタ配列の後半内容を前半にコピー
2. 文字列を格納する配列からアクセス幅
(8Byte)分読出し、レジスタ配列の後
半に格納
8bytes
前半
後半
アクセル幅(8byte)単位に読出し、
レジスタ配列の後半に格納
レジスタ配列a
一回の比較対象
(最大8文字)
文字列b
(先頭位置b)
文字列a
(先頭位置a)
文字列が格納されている配列:
(2次元配列として、FPGA内部
メモリへマップ)
前半
後半
レジスタ配列b
後半から
前半へ
コピー
後半から
前半へ
コピー
N bytes
N bytes
一回当たりの
読出し単位
一回当たりの
読出し単位
17
? Hitachi, Ltd. 2022. All rights reserved.
7.4 施策③:文字列比較ループアンローリング(4):改善後
8bytes
N bytes
N bytes
前半
後半
レジスタ配列a
一回の比較対象
(最大8文字)
文字列b
(先頭位置b)
文字列a
(先頭位置a)
文字列が格納されている配列:
前半
後半
レジスタ配列b
? ループ開始前の初期化でレジスタ配列の最
初の内容、文字列比較位置を準備
? 繰返し時にレジスタ配列内容を順にシフト
? ループ開始前の初期化でレジスタ配列の最
初の内容、文字列比較位置を準備
? 繰返し時にレジスタ配列内容を順にシフト
Start
i < N?
レジスタ配列a[x]=
レジスタ配列b[y]?
No
Yes
No
Yes
C = 0
③
① ②
レジスタ配列a[]
← 文字列aの先頭含む8byte
+ 次の8byte
レジスタ配列b[]
← 文字列bの先頭含む8byte
+ 次の8byte
x = 文字列aの開始位置(8の剰余)
y = 文字列bの開始位置(8の剰余)
i = 0
End
Yes
i + 7 < N?
No
Yes
No
Yes
C = 7
C = 8
i = i + C
C < 8?
No
Yes
③
① ②
繰返し
レジスタ配列a[x+7]=
レジスタ配列b[y+7]?
レジスタ配列aの内容シフト
(配列前半←配列後半、
配列後半←文字列aの
次の8byte)
レジスタ配列bの内容シフト
(配列前半←配列後半、
配列後半←文字列bの
次の8byte)
y
x (文字列aの開始
位置の8の剰余)
(文字列bの開始
位置の8の剰余)
16
17
10
18
? Hitachi, Ltd. 2022. All rights reserved.
8. 評価:本事例における改善施策の効果
? LZMAの高位合成を、以下の三種の改善策により、改善した
① メモリのアクセス幅拡大: ハッシュテーブル更新に適用
② データフロー化:辞書圧縮部とレンジコーダ、及びレンジコーダ内部へ適用
③ 文字列比較ループアンローリング:文字列検索に適用
? 改善の結果、ほぼ見積り通りになった(下表)。
見積り 改善前 改善後 主な改善策
全体処理時間 500μS (1.0) 21,540μS (43.1) 516μS (1.0) ②
辞書圧縮部 - 17,461μS 476μS
ハッシュテーブル更新 - 12,007μS 246μS ①
文字列検索 - 4,584μS 176μS ③
レンジコーダ - 3,339μS 250μS ②
■32KBのデータの圧縮処理における処理時間の改善結果
19
? Hitachi, Ltd. 2022. All rights reserved.
9. 高位合成の活用まとめ
? LZMAを題材とした本事例では、高位合成のプロファイルデータを分析し、元の高位言語ソースの記述へ
フィードバックすることで、複雑なアルゴリズムの最適化を行うことができた。
? このような高位合成におけるアルゴリズムレベルの最適化は、複雑なアルゴリズムをハード化する場合の、上流
工程としても活用することが可能。
? 全体をRTL設計で行うのに比べて、開発工数を大きく短縮することが可能
Adder(int a, int b, int c) {
c = a + b;
}
高位合成 プロファイル
データ
改善/最適化(フィードバック)
上流工程(高位合成)
(アルゴルズムレベル最適化)
下流工程(RTL設計)
仕様設計/機能設計
高位言語ソース
(アルゴリズム記述) 詳細設計
(RTL設計)
RTL
記述
アルゴリズム
(最適化済み)
改善のための
手戻り不要
開発工数短縮
=
18
19
11
? Hitachi, Ltd. 2022. All rights reserved. 20
END
複雑なアルゴリズムのハード化における高位合成の活用事例
第9回ACRiウェビナー
2022/7/26
株式会社 日立製作所 研究開発グループ
デジタルプラットフォームイノベーションセンタ データストレージ研究部
島田 健太郎
20
21

More Related Content

What's hot (20)

エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
?
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
?
厂飞技术者に送る蹿辫驳补入门
厂飞技术者に送る蹿辫驳补入门厂飞技术者に送る蹿辫驳补入门
厂飞技术者に送る蹿辫驳补入门
直久 住川
?
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
marsee101
?
第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料
第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料
第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料
直久 住川
?
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
?
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
?
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
直久 住川
?
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
T. Suwa
?
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
?
オンラインゲームの仕组みと工夫
オンラインゲームの仕组みと工夫オンラインゲームの仕组みと工夫
オンラインゲームの仕组みと工夫
Yuta Imai
?
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
?
いまさら闻けない!颁鲍顿础高速化入门
いまさら闻けない!颁鲍顿础高速化入门いまさら闻けない!颁鲍顿础高速化入门
いまさら闻けない!颁鲍顿础高速化入门
Fixstars Corporation
?
翱厂惫の概要と実装
翱厂惫の概要と実装翱厂惫の概要と実装
翱厂惫の概要と実装
Takuya ASADA
?
础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解
MITSUNARI Shigeo
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
?
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
Mr. Vengineer
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
?
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
?
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
?
厂飞技术者に送る蹿辫驳补入门
厂飞技术者に送る蹿辫驳补入门厂飞技术者に送る蹿辫驳补入门
厂飞技术者に送る蹿辫驳补入门
直久 住川
?
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
marsee101
?
第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料
第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料
第9回础颁搁颈ウェビナー冲セック/岩渕様ご讲演资料
直久 住川
?
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
?
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
?
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
直久 住川
?
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
T. Suwa
?
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
?
オンラインゲームの仕组みと工夫
オンラインゲームの仕组みと工夫オンラインゲームの仕组みと工夫
オンラインゲームの仕组みと工夫
Yuta Imai
?
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
?
いまさら闻けない!颁鲍顿础高速化入门
いまさら闻けない!颁鲍顿础高速化入门いまさら闻けない!颁鲍顿础高速化入门
いまさら闻けない!颁鲍顿础高速化入门
Fixstars Corporation
?
翱厂惫の概要と実装
翱厂惫の概要と実装翱厂惫の概要と実装
翱厂惫の概要と実装
Takuya ASADA
?
础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解
MITSUNARI Shigeo
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
?
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
Mr. Vengineer
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
?

Similar to 第9回础颁搁颈ウェビナー冲日立/岛田様ご讲演资料 (20)

アドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニングアドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
?
Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
TakamchiTanaka
?
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
?
プログラマ人生论
プログラマ人生论プログラマ人生论
プログラマ人生论
ymmt
?
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
Toru Takahashi
?
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
Toru Takahashi
?
kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
swkagami
?
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
?
Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊
Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊
Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊
厂耻辫别谤蝉丑颈辫株式会社
?
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
?
Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側
Cloudera Japan
?
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
Insight Technology, Inc.
?
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
?
笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ
笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ
笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ
NTT DATA OSS Professional Services
?
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
aitc_jp
?
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
?
Tokyo r47 beginner_2
Tokyo r47 beginner_2Tokyo r47 beginner_2
Tokyo r47 beginner_2
Takashi Minoda
?
Tokyo r50 beginner_2
Tokyo r50 beginner_2Tokyo r50 beginner_2
Tokyo r50 beginner_2
Takashi Minoda
?
アドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニングアドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
?
Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
TakamchiTanaka
?
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
?
プログラマ人生论
プログラマ人生论プログラマ人生论
プログラマ人生论
ymmt
?
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
Toru Takahashi
?
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
贰尘产耻濒办と顿颈驳诲补驳とデータ分析基盘と
Toru Takahashi
?
kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
swkagami
?
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
?
Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊
Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊
Graviton2フ?ロセッサの性能特性と適用箇所/厂耻辫别谤蝉丑颈辫株式会社 中野 豊
厂耻辫别谤蝉丑颈辫株式会社
?
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
?
Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側Apache Kuduを使った分析システムの裏側
Apache Kuduを使った分析システムの裏側
Cloudera Japan
?
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
Insight Technology, Inc.
?
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
?
笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ
笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ
笔辞蝉迟驳谤别厂蚕尝の运用?监视にまつわるエトセトラ
NTT DATA OSS Professional Services
?
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
aitc_jp
?
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
?

More from 直久 住川 (20)

18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology
18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology
18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology
直久 住川
?
18th ACRi Webinar : Presentation Material - Prof. Yamaguchi
18th ACRi Webinar : Presentation Material - Prof. Yamaguchi18th ACRi Webinar : Presentation Material - Prof. Yamaguchi
18th ACRi Webinar : Presentation Material - Prof. Yamaguchi
直久 住川
?
16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf
16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf
16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf
直久 住川
?
16th_ACRi_Webiner_SEC_Takebe_20240308.pdf
16th_ACRi_Webiner_SEC_Takebe_20240308.pdf16th_ACRi_Webiner_SEC_Takebe_20240308.pdf
16th_ACRi_Webiner_SEC_Takebe_20240308.pdf
直久 住川
?
17th_ACRi_Webinar_Sadasue-san_狠狠撸_20240724
17th_ACRi_Webinar_Sadasue-san_狠狠撸_2024072417th_ACRi_Webinar_Sadasue-san_狠狠撸_20240724
17th_ACRi_Webinar_Sadasue-san_狠狠撸_20240724
直久 住川
?
公开用冲讲演资料冲厂颁厂碍.辫诲蹿
公开用冲讲演资料冲厂颁厂碍.辫诲蹿公开用冲讲演资料冲厂颁厂碍.辫诲蹿
公开用冲讲演资料冲厂颁厂碍.辫诲蹿
直久 住川
?
ACRi-Webinar_Feb2023_agenda_20230225.pdf
ACRi-Webinar_Feb2023_agenda_20230225.pdfACRi-Webinar_Feb2023_agenda_20230225.pdf
ACRi-Webinar_Feb2023_agenda_20230225.pdf
直久 住川
?
第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料
第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料
第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料
直久 住川
?
第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料
第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料
第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料
直久 住川
?
2022-12-17-room.pdf
2022-12-17-room.pdf2022-12-17-room.pdf
2022-12-17-room.pdf
直久 住川
?
础颁搁颈ルーム副室长冲安藤様冲讲演资料
础颁搁颈ルーム副室长冲安藤様冲讲演资料础颁搁颈ルーム副室长冲安藤様冲讲演资料
础颁搁颈ルーム副室长冲安藤様冲讲演资料
直久 住川
?
顿厂贵実行委员长冲酒井様冲讲演资料
顿厂贵実行委员长冲酒井様冲讲演资料顿厂贵実行委员长冲酒井様冲讲演资料
顿厂贵実行委员长冲酒井様冲讲演资料
直久 住川
?
础颁搁颈事务局冲住川冲讲演资料
础颁搁颈事务局冲住川冲讲演资料础颁搁颈事务局冲住川冲讲演资料
础颁搁颈事务局冲住川冲讲演资料
直久 住川
?
痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料
直久 住川
?
AMD_Xilinx_AI_VCK5000_20220602R1.pdf
AMD_Xilinx_AI_VCK5000_20220602R1.pdfAMD_Xilinx_AI_VCK5000_20220602R1.pdf
AMD_Xilinx_AI_VCK5000_20220602R1.pdf
直久 住川
?
痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料
直久 住川
?
20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf
直久 住川
?
220526_ACRi_Ando01r.pdf
220526_ACRi_Ando01r.pdf220526_ACRi_Ando01r.pdf
220526_ACRi_Ando01r.pdf
直久 住川
?
2205ACRi_jinguji.pdf
2205ACRi_jinguji.pdf2205ACRi_jinguji.pdf
2205ACRi_jinguji.pdf
直久 住川
?
础颁搁颈ポジショントーク冲山科.辫诲蹿
础颁搁颈ポジショントーク冲山科.辫诲蹿础颁搁颈ポジショントーク冲山科.辫诲蹿
础颁搁颈ポジショントーク冲山科.辫诲蹿
直久 住川
?
18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology
18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology
18th ACRi Webinar : Presentation 狠狠撸 ; Fukuda-san, ChipTip Technology
直久 住川
?
18th ACRi Webinar : Presentation Material - Prof. Yamaguchi
18th ACRi Webinar : Presentation Material - Prof. Yamaguchi18th ACRi Webinar : Presentation Material - Prof. Yamaguchi
18th ACRi Webinar : Presentation Material - Prof. Yamaguchi
直久 住川
?
16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf
16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf
16th_ACRi_Webinar_Kumamoto-Univ_Okawa_20240308.pdf
直久 住川
?
16th_ACRi_Webiner_SEC_Takebe_20240308.pdf
16th_ACRi_Webiner_SEC_Takebe_20240308.pdf16th_ACRi_Webiner_SEC_Takebe_20240308.pdf
16th_ACRi_Webiner_SEC_Takebe_20240308.pdf
直久 住川
?
17th_ACRi_Webinar_Sadasue-san_狠狠撸_20240724
17th_ACRi_Webinar_Sadasue-san_狠狠撸_2024072417th_ACRi_Webinar_Sadasue-san_狠狠撸_20240724
17th_ACRi_Webinar_Sadasue-san_狠狠撸_20240724
直久 住川
?
公开用冲讲演资料冲厂颁厂碍.辫诲蹿
公开用冲讲演资料冲厂颁厂碍.辫诲蹿公开用冲讲演资料冲厂颁厂碍.辫诲蹿
公开用冲讲演资料冲厂颁厂碍.辫诲蹿
直久 住川
?
ACRi-Webinar_Feb2023_agenda_20230225.pdf
ACRi-Webinar_Feb2023_agenda_20230225.pdfACRi-Webinar_Feb2023_agenda_20230225.pdf
ACRi-Webinar_Feb2023_agenda_20230225.pdf
直久 住川
?
第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料
第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料
第11回础颁搁颈ウェビナー冲东工大/坂本先生ご讲演资料
直久 住川
?
第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料
第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料
第11回础颁搁颈ウェビナー冲インテル/竹村様ご讲演资料
直久 住川
?
础颁搁颈ルーム副室长冲安藤様冲讲演资料
础颁搁颈ルーム副室长冲安藤様冲讲演资料础颁搁颈ルーム副室长冲安藤様冲讲演资料
础颁搁颈ルーム副室长冲安藤様冲讲演资料
直久 住川
?
顿厂贵実行委员长冲酒井様冲讲演资料
顿厂贵実行委员长冲酒井様冲讲演资料顿厂贵実行委员长冲酒井様冲讲演资料
顿厂贵実行委员长冲酒井様冲讲演资料
直久 住川
?
础颁搁颈事务局冲住川冲讲演资料
础颁搁颈事务局冲住川冲讲演资料础颁搁颈事务局冲住川冲讲演资料
础颁搁颈事务局冲住川冲讲演资料
直久 住川
?
痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲骋滨骋础叠驰罢贰様ご讲演资料
直久 住川
?
AMD_Xilinx_AI_VCK5000_20220602R1.pdf
AMD_Xilinx_AI_VCK5000_20220602R1.pdfAMD_Xilinx_AI_VCK5000_20220602R1.pdf
AMD_Xilinx_AI_VCK5000_20220602R1.pdf
直久 住川
?
痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料
痴颁碍5000冲奥别产颈苍别谤冲贵颈虫蝉迟补谤蝉様ご讲演资料
直久 住川
?
220526_ACRi_Ando01r.pdf
220526_ACRi_Ando01r.pdf220526_ACRi_Ando01r.pdf
220526_ACRi_Ando01r.pdf
直久 住川
?
础颁搁颈ポジショントーク冲山科.辫诲蹿
础颁搁颈ポジショントーク冲山科.辫诲蹿础颁搁颈ポジショントーク冲山科.辫诲蹿
础颁搁颈ポジショントーク冲山科.辫诲蹿
直久 住川
?

第9回础颁搁颈ウェビナー冲日立/岛田様ご讲演资料

  • 1. 1 ? Hitachi, Ltd. 2022. All rights reserved. 株式会社 日立製作所 研究開発グループ デジタルプラットフォームイノベーションセンタ データストレージ研究部 2022/7/26 島田 健太郎 複雑なアルゴリズムのハード化における高位合成の活用事例 第9回ACRiウェビナー ? Hitachi, Ltd. 2022. All rights reserved. 1. 自己紹介 2. 背景:複雑なアルゴリズムのハード化における課題?高位合成の利点 3. 題材:圧縮アルゴリズムLZMA 4. 課題:高位合成の初期試行状況 5. 施策①:メモリアクセス幅拡大 6. 施策②:データフロー化 7. 施策③:文字列比較ループアンローリング 8. 評価:本事例における改善施策の効果 9. 高位合成の活用まとめ Contents 1 0 1
  • 2. 2 2 ? Hitachi, Ltd. 2022. All rights reserved. 1.自己紹介 島田 健太郎 研究開発グループ デジタルプラットフォームイノベーションセンタ データストレージ研究部 所属 ? 1993年入社 ? 入社当初は、スーパーコンピュータのプロセッサの設計開発に従事 ? その後、ハードウェア?アーキテクチャの研究開発に従事 ? 論理設計は、ASICで、RTLやゲートレベル設計/スケマティックな設計を経験 ? 今回、FPGAを用いて複雑なアルゴリズムをハード化するに当たり、高位合成の活用を行った ゲートレベル設計/スケマティック設計 Adder(int a, int b, int c) { c = a + b; } 高位合成(高位言語記述) a b c 3 ? Hitachi, Ltd. 2022. All rights reserved. 2.1 背景(1):複雑なアルゴリズムのハード化における課題 1. 複雑なアルゴリズムをハード化する場合、通常のRTL設計であると、詳細設計?実装設計を含め、 多大な開発工数を要し、ハード化の見通しを得るのに?期間かかる 2. 設計当初の段階(仕様設計/機能設計段階)では、性能や物量の見通しが困難 3. 設計した結果を性能等評価できるのが、後工程となり、フィードバックを行う工数大 4. 更に元のアルゴリズムレベルでの最適化を行うと、多大な再設計の工数が発生 詳細設計 (RTL設計) 実装設計 FPGA 論理合成 仕様設計/機能設計 RTL 記述 実装結果 ?性能(詳細) ?物量(詳細) 機能仕様/アルゴリズム 改善/最適化(フィードバック) (実装改善) 実装情報 (部分的RTL改善) アルゴリズムレベル改善?大工数発生 RTL設計過程(イメージ) 2 3
  • 3. 3 4 ? Hitachi, Ltd. 2022. All rights reserved. 2.2 背景(2):複雑なアルゴリズムのハード化における高位合成の利点 1. 高位言語で記述された複雑なアルゴリズムでも、短期間でハードウェア化の見通しが得られる 2. 最低限達成可能な、性能や物量が早期にわかる 3. 性能や物量を、早期にプロファイルデータから見ることにより、フィードバックの工数低減可能 4. アルゴリズムレベルでの最適化が容易 Adder(int a, int b, int c) { c = a + b; } 高位合成 合成結果 高位言語ソース (アルゴリズム記述) FPGA プロファイル データ ?性能(全体、関数単位) ?物量(同上) ?詳細データ(依存関係等) 改善/最適化(フィードバック) 仕様設計/機能設計 高位合成設計過程 (イメージ) 5 ? Hitachi, Ltd. 2022. All rights reserved. 3. 題材:圧縮アルゴリズム LZMA ? 複雑なアルゴリズムへの適用事例として、圧縮アルゴリズム LZMA(Lempel-Ziv-Markov chain-Algorithm)を取 り上げる。 ? LZMAは、圧縮率の高い可逆圧縮アルゴリズム。 辞書圧縮部と、レンジコーダによる符号化部からなる。 ? 辞書圧縮部: ①入力データをバイト列として“辞書”に登録 ②”辞書”の内容を探索し、入力データ内の重複を抽出 ? レンジコーダ: ①データ重複パターンに基づき、0/1の出現確率を予測 ②予測との差分を符号に生成 ? ハード化は、辞書探索の制御が複雑になる辞書圧縮部の 方が、確率計算の反復で処理できるレンジコーダより難 A B C D A B C E 入力 データ A B C D E 圧縮 データ 辞書に登録 4文字前と3字一致 図A. 辞書圧縮部の動作例 先 後 A B C D E 圧縮 データ 4文字前と3字一致 0 0 1 0 1 1 1 0 重複パターンを示す 0/1の記号列(中間コード) 図B. レンジコーダの動作例 先行するビットパターンで次の1bitの0/1の 出現確率を予測 予測との差分を 符号に生成 4 5
  • 4. 4 6 ? Hitachi, Ltd. 2022. All rights reserved. 4. 課題:高位合成の初期試行状況 ? LZMAのオープンソース(C言語)をベースに、高位合成を試行 ? 合成することはできた。 ? 性能は、見積りの約1/40(圧縮処理時間40倍)。 ? プロファイルデータより要因分析 ? 最大の要因は、辞書圧縮部で、文字列検索のためのハッシュテーブルを更新する箇所 ?1バイトずつアクセスし、更新していた。 ? その他は、辞書圧縮部とレンジコーダ部が逐次に実行される構造。 ?辞書圧縮部がレンジコーダ部の処理完了を待つ。 ? また、辞書圧縮部の文字列検索自体も1文字ずつ比較。 Adder(int a, int b, int c) { c = a + b; } 高位合成 合成結果 高位言語ソース プロファイル データ 改善/最適化(フィードバック) 7 ? Hitachi, Ltd. 2022. All rights reserved. 4. 課題:高位合成の初期試行状況 Adder(int a, int b, int c) { c = a + b; } 高位合成 合成結果 高位言語ソース プロファイル データ 改善/最適化(フィードバック) ? LZMAのオープンソース(C言語)をベースに、高位合成を試行 ? 合成することはできた。 ? 性能は、見積りの約1/40(圧縮処理時間40倍)。 ? プロファイルデータより要因分析 ? 最大の要因は、辞書圧縮部で、文字列検索のためのハッシュテーブルを更新する箇所 ?1バイトずつアクセスし、更新していた。 ①メモリのアクセス幅拡大 ? その他は、辞書圧縮部とレンジコーダ部が逐次に実行される構造。 ?辞書圧縮部がレンジコーダ部の処理完了を待つ。 ②データフロー化 ? また、辞書圧縮部の文字列検索自体も1文字ずつ比較。 ③文字列比較ループアンローリング 6 7
  • 5. 5 8 ? Hitachi, Ltd. 2022. All rights reserved. 5.1 施策①:メモリのアクセス幅拡大(1):概要 コピー元配列 コピー先配列 コピー元配列 コピー先配列 Start i = 0 d[i] = s[i] i < N? End s[] d[] s[] d[] t[] i = i + 1 Start i = 0 t[0] = s[i] t[1] = s[i + 1] ... t[7] = s[i + 7] i < N? End i = i + 8 d[i] = t[0] d[i + 1] = t[1] ... d[i + 7] = t[7] No Yes No Yes ? 配列から配列にデータをコピーするケース ? 配列は、コピー元?コピー先とも、FPGAの内部メモリにマップするケース ? 配列から配列へ直接コピーする記述や、ループ?アンローリングがされない 場合に、1要素ずつの逐次コピーになり易い ? 途中にレジスタ配列を置き、ループ展開することで複数要素同時にコピー ? 配列から配列にデータをコピーするケース ? 配列は、コピー元?コピー先とも、FPGAの内部メモリにマップするケース ? 配列から配列へ直接コピーする記述や、ループ?アンローリングがされない 場合に、1要素ずつの逐次コピーになり易い ? 途中にレジスタ配列を置き、ループ展開することで複数要素同時にコピー レジスタ配列 ? レジスタ配列を 経由 ? ループ? アンローリング ? レジスタ配列を 経由 ? ループ? アンローリング 1要素ずつコピー 複数要素 同時コピー (コピー元/コピー先配列ともFPGA内部 メモリにマップ) 9 ? Hitachi, Ltd. 2022. All rights reserved. 5.2 施策①:メモリアクセス幅拡大(2): ハッシュテーブル更新 元の構造 文字列(9文字) 位置 文字列(9文字) ①先頭4文字で ハッシュ値計算 位置 ②一組ずつシフト ③先頭に記録 先 後 ハッシュテーブル 入力データ (辞書) 16bit 8bit×9文字 = 72bit Start ①先頭4文字でハッシュ値を計算 i = 7 i ≧1? ハッシュテーブル[ハッシュ値][i].位置 =ハッシュテーブル[ハッシュ値][i-1].位置 現在位置 j = 0 コピー先文字列[j] = コピー元文字列[j] j = j +1 i = i - 1 j < 9? ハッシュテーブル[ハッシュ値][0].位置 =現在位置 9文字コピー: ハッシュテーブル[ハッシュ値][0].文字列 = 現在位置の文字列 9文字コピー: ハッシュテーブル[ハッシュ値][i].文字列 = ハッシュテーブル[ハッシュ値][i-1].文字列 End 9文字コピー End ②一組ずつシフト ③先頭に記録 ? ハッシュテーブルに辞書内の位置と先頭の 9文字ずつが登録されている ? 既存内容を移動(シフト)した上で、入力デー タの現在位置からの9文字を新規登録 ? ハッシュテーブルに辞書内の位置と先頭の 9文字ずつが登録されている ? 既存内容を移動(シフト)した上で、入力デー タの現在位置からの9文字を新規登録 先頭から検査 ハッシュテーブル更新 のフローチャート(元) (サブルーチンで記載) No Yes No Yes (16bit+72bit)×8(シノニム) = 704bit(88byte) 大きなエントリを 1文字(バイト)ずつ 逐次アクセス 8 9
  • 6. 6 10 ? Hitachi, Ltd. 2022. All rights reserved. 5.3 施策①:メモリアクセス幅拡大(3):ハッシュテーブル更新 改善策 ? ハッシュテーブルを、位置の情報のテーブルと 文字列のテーブルに分割 ? エントリ(位置+文字列8組分)をレジスタに ずらして読上げ、書き戻す ? ハッシュテーブルを、位置の情報のテーブルと 文字列のテーブルに分割 ? エントリ(位置+文字列8組分)をレジスタに ずらして読上げ、書き戻す 位置 16bit 位置 16bit×8 = 128bit 位置 72bit×8 = 576bit ①先頭4文字で ハッシュ値計算 ②ずらして読み上げ ③先頭に格納 先 後 ハッシュテーブル (分割後) 入力データ (辞書) 16bit 8bit×9文字 = 72bit 現在位置 先頭から検査 文字列(9文字) レジスタ ④書き戻し Start ①先頭4文字でハッシュ値を計算 i = 7 i ≧1? レジスタ(位置)[i] =ハッシュテーブル(位置)[ハッシュ値][i-1] i = i - 1 レジスタ(位置)[0] = 現在位置 9文字コピー(プラグマでアンローリング) レジスタ(文字列)[0]=現在位置の文字列 9文字コピー(プラグマでアンローリング) レジスタ(文字列)[i] = ハッシュテーブル(文字列)[ハッシュ値][i-1] End ②ずらして読み上げ ③先頭に格納 ハッシュテーブル更新の フローチャート(改善版) 位置、文字列をそれぞれ 並列にアクセス No Yes ハッシュテーブル(位置)[ハッシュ値][0~7] = レジスタ(位置)[0~7] 9文字コピー(プラグマでアンローリング)×8: ハッシュテーブル(文字列)[ハッシュ値][0~7] = レジスタ(文字列)[0~7] ④書き戻し ② ④ ③ 11 ? Hitachi, Ltd. 2022. All rights reserved. 6.1 施策②:データフロー化(1) データーフロー化適用前 ? 二つの処理を含むループ ? それぞれの処理の間で、変数を用いて、一方から他方へデータを受け渡し ?それぞれの回路が逐次動作となる ? 二つの処理を含むループ ? それぞれの処理の間で、変数を用いて、一方から他方へデータを受け渡し ?それぞれの回路が逐次動作となる Start 初期化処理 処理a 終了判定 処理b End 終了処理 変数 変数 変数 初期化処理 回路 処理a 回路 処理b 回路 判定回路 終了処理 回路 初期データ 中間データ 出力データ 繰返し 信号 終了データ 時間軸 T1 T2 T3 T4 T5 T6 T7 T8 初期化回路 動作 処理a 回路 動作 動作 動作 処理b 回路 動作 動作 判定回路 動作 動作 終了処理回路 逐次動作:3サイクルピッチ 処理フローチャート 回路構成 10 11
  • 7. 7 12 ? Hitachi, Ltd. 2022. All rights reserved. 6.2 施策②:データフロー化(2) データフロー化適用後 ? 二つの処理のループを分割 ? 分割したループの処理の間で、FIFO(ストリーム変数)を用いてデータを受け渡し ?それぞれの回路の並列動作が可能となる ? 二つの処理のループを分割 ? 分割したループの処理の間で、FIFO(ストリーム変数)を用いてデータを受け渡し ?それぞれの回路の並列動作が可能となる Start 初期化処理 処理a 終了判定b 処理b End 終了処理 変数 変数 初期化処理 回路 処理a 回路 処理b 回路 判定b回路 終了処理 回路 初期データ 中間データ 出力データ 繰返し 信号 終了データ 時間軸 T1 T2 T3 T4 T5 T6 T7 T8 初期化回路 動作 処理a 回路 動作 動作 動作 動作 判定a回路 動作 動作 動作 処理b 回路 動作 動作 動作 判定b回路 動作 動作 終了処理回路 終了判定a 判定a回路 中間データ 中間データ FIFO 繰返し 信号 FIFO 並列(オーバーラップ)動作: 2サイクルピッチ 13 ? Hitachi, Ltd. 2022. All rights reserved. 6.3 施策②:データフロー化(3) LZMAにおける適用 ? 辞書圧縮部と、レンジコーダの呼び出しに適用 ?辞書圧縮部と、レンジコーダを並列動作させ、動作時間をほぼ半減 ? 辞書圧縮部と、レンジコーダの呼び出しに適用 ?辞書圧縮部と、レンジコーダを並列動作させ、動作時間をほぼ半減 Start 辞書圧縮部 終了? レンジコーダ End Start 辞書圧縮部 終了? レンジコーダ End 終了? No Yes No Yes 時間軸 T1 T2 T3 T4 T5 T6 辞書圧縮部 動作 動作 動作 レンジコーダ 動作 動作 動作 辞書圧縮回路 レンジコーダ回路 中間データ 圧縮データ 平文データ 繰返し 信号 No Yes 時間軸 T1 T2 T3 T4 T5 T6 辞書圧縮部 動作 動作 動作 動作 動作 動作 レンジコーダ 動作 動作 動作 動作 動作 FIFO 辞書圧縮回路 レンジコーダ回路 中間データ 圧縮データ 平文データ FIFO 中間データ 12 13
  • 8. 8 14 ? Hitachi, Ltd. 2022. All rights reserved. 7.1 施策③:文字列比較ループアンローリング(1):アンローリング適用前 ? 配列中の二つの文字列を比較し、連続し て一致する文字数を数える ? 配列はFPGA内メモリへマップされている ? 二つの文字列とも、配列中の任意の位 置から、始まる ? 最大の比較文字数が指定される ? 単純にプログラム記述すると、1文字 (1byte)ずつの比較となる。 ? ループ中に(ループ変数を使った)文字 数判定の条件文があるので、アンローリ ングされても1文字ずつの逐次処理と なる(並列処理されない) ? 配列のアクセスも、それぞれの文字列を 1文字ずつのアクセスとなる ? 配列中の二つの文字列を比較し、連続し て一致する文字数を数える ? 配列はFPGA内メモリへマップされている ? 二つの文字列とも、配列中の任意の位 置から、始まる ? 最大の比較文字数が指定される ? 単純にプログラム記述すると、1文字 (1byte)ずつの比較となる。 ? ループ中に(ループ変数を使った)文字 数判定の条件文があるので、アンローリ ングされても1文字ずつの逐次処理と なる(並列処理されない) ? 配列のアクセスも、それぞれの文字列を 1文字ずつのアクセスとなる N bytes 文字列a (先頭位置a) 文字列b (先頭位置b) N bytes 文字列が格納されている配列: (FPGA内部メモリへマップ) Start i = 0 i < N? End i = i + 1 i文字目は 一致したか No Yes No Yes N:最大比較文字数 連続して一致する文字数を数える 最大比較 文字数N 未満か 文字列検索(比較)の フローチャート(元) 15 ? Hitachi, Ltd. 2022. All rights reserved. 7.2 施策③:文字列比較ループアンローリング(2):条件分岐への対応 ?1文字ずつの比較を行う条 件文と、ループの繰返しを分 ける I. アンロールする数を決め る(右例では、8) II. 最大比較文字数に至る まで、アンロールした数分 の比較を行い、一致数 を数える III. ループの繰返しは、数え た一致数が、アンロール した数まで達したかどうか で判定する ?1文字ずつの比較を行う条 件文と、ループの繰返しを分 ける I. アンロールする数を決め る(右例では、8) II. 最大比較文字数に至る まで、アンロールした数分 の比較を行い、一致数 を数える III. ループの繰返しは、数え た一致数が、アンロール した数まで達したかどうか で判定する Start i = 0 i < N? End 1文字目は 一致したか ? No Yes No Yes 次の1文字目は、 N文字未満か C = 0 i + 1 < N? 2文字目は 一致したか ? No Yes No Yes C = 1 0文字一致 2文字目は、 N文字未満か 1文字一致 Yes i + 7 < N? 8文字目は 一致したか ? No Yes No Yes C = 7 8文字目は、 N文字未満か 7文字一致 C = 8 i = i + C C < 8? No Yes 8文字一致 一致した文字 数を合計 Ⅱ.一致文字数 を数える ③ ③ ① ② ① ② 繰返し Ⅲ. 一致数は アンロールした 数か? C:一致文字数 N:最大比較文字数 Ⅰ.アンロール数を決める(8) 14 15
  • 9. 9 16 ? Hitachi, Ltd. 2022. All rights reserved. 7.3 施策③:文字列比較ループアンローリング(3):配列アクセスへの対応 ?レジスタ配列を二つ使用、それぞれの文字列を レジスタ配列に一旦格納して比較 ? 文字列を格納する配列を、アクセス幅(右 例ではアンロール数に合わせた8Byte)を単 位とする二次元配列とする ? レジスタ配列は、一回の配列アクセス幅 (8)の2倍(16)の要素数とする ? 比較はレジスタ配列上で、それぞれの文字 列位置から、一回に最大アンロール数分 =アクセス幅分の文字数(8)を比較 ? 比較後、レジスタ配列の内容をシフト 1. レジスタ配列の後半内容を前半にコピー 2. 文字列を格納する配列からアクセス幅 (8Byte)分読出し、レジスタ配列の後 半に格納 ?レジスタ配列を二つ使用、それぞれの文字列を レジスタ配列に一旦格納して比較 ? 文字列を格納する配列を、アクセス幅(右 例ではアンロール数に合わせた8Byte)を単 位とする二次元配列とする ? レジスタ配列は、一回の配列アクセス幅 (8)の2倍(16)の要素数とする ? 比較はレジスタ配列上で、それぞれの文字 列位置から、一回に最大アンロール数分 =アクセス幅分の文字数(8)を比較 ? 比較後、レジスタ配列の内容をシフト 1. レジスタ配列の後半内容を前半にコピー 2. 文字列を格納する配列からアクセス幅 (8Byte)分読出し、レジスタ配列の後 半に格納 8bytes 前半 後半 アクセル幅(8byte)単位に読出し、 レジスタ配列の後半に格納 レジスタ配列a 一回の比較対象 (最大8文字) 文字列b (先頭位置b) 文字列a (先頭位置a) 文字列が格納されている配列: (2次元配列として、FPGA内部 メモリへマップ) 前半 後半 レジスタ配列b 後半から 前半へ コピー 後半から 前半へ コピー N bytes N bytes 一回当たりの 読出し単位 一回当たりの 読出し単位 17 ? Hitachi, Ltd. 2022. All rights reserved. 7.4 施策③:文字列比較ループアンローリング(4):改善後 8bytes N bytes N bytes 前半 後半 レジスタ配列a 一回の比較対象 (最大8文字) 文字列b (先頭位置b) 文字列a (先頭位置a) 文字列が格納されている配列: 前半 後半 レジスタ配列b ? ループ開始前の初期化でレジスタ配列の最 初の内容、文字列比較位置を準備 ? 繰返し時にレジスタ配列内容を順にシフト ? ループ開始前の初期化でレジスタ配列の最 初の内容、文字列比較位置を準備 ? 繰返し時にレジスタ配列内容を順にシフト Start i < N? レジスタ配列a[x]= レジスタ配列b[y]? No Yes No Yes C = 0 ③ ① ② レジスタ配列a[] ← 文字列aの先頭含む8byte + 次の8byte レジスタ配列b[] ← 文字列bの先頭含む8byte + 次の8byte x = 文字列aの開始位置(8の剰余) y = 文字列bの開始位置(8の剰余) i = 0 End Yes i + 7 < N? No Yes No Yes C = 7 C = 8 i = i + C C < 8? No Yes ③ ① ② 繰返し レジスタ配列a[x+7]= レジスタ配列b[y+7]? レジスタ配列aの内容シフト (配列前半←配列後半、 配列後半←文字列aの 次の8byte) レジスタ配列bの内容シフト (配列前半←配列後半、 配列後半←文字列bの 次の8byte) y x (文字列aの開始 位置の8の剰余) (文字列bの開始 位置の8の剰余) 16 17
  • 10. 10 18 ? Hitachi, Ltd. 2022. All rights reserved. 8. 評価:本事例における改善施策の効果 ? LZMAの高位合成を、以下の三種の改善策により、改善した ① メモリのアクセス幅拡大: ハッシュテーブル更新に適用 ② データフロー化:辞書圧縮部とレンジコーダ、及びレンジコーダ内部へ適用 ③ 文字列比較ループアンローリング:文字列検索に適用 ? 改善の結果、ほぼ見積り通りになった(下表)。 見積り 改善前 改善後 主な改善策 全体処理時間 500μS (1.0) 21,540μS (43.1) 516μS (1.0) ② 辞書圧縮部 - 17,461μS 476μS ハッシュテーブル更新 - 12,007μS 246μS ① 文字列検索 - 4,584μS 176μS ③ レンジコーダ - 3,339μS 250μS ② ■32KBのデータの圧縮処理における処理時間の改善結果 19 ? Hitachi, Ltd. 2022. All rights reserved. 9. 高位合成の活用まとめ ? LZMAを題材とした本事例では、高位合成のプロファイルデータを分析し、元の高位言語ソースの記述へ フィードバックすることで、複雑なアルゴリズムの最適化を行うことができた。 ? このような高位合成におけるアルゴリズムレベルの最適化は、複雑なアルゴリズムをハード化する場合の、上流 工程としても活用することが可能。 ? 全体をRTL設計で行うのに比べて、開発工数を大きく短縮することが可能 Adder(int a, int b, int c) { c = a + b; } 高位合成 プロファイル データ 改善/最適化(フィードバック) 上流工程(高位合成) (アルゴルズムレベル最適化) 下流工程(RTL設計) 仕様設計/機能設計 高位言語ソース (アルゴリズム記述) 詳細設計 (RTL設計) RTL 記述 アルゴリズム (最適化済み) 改善のための 手戻り不要 開発工数短縮 = 18 19
  • 11. 11 ? Hitachi, Ltd. 2022. All rights reserved. 20 END 複雑なアルゴリズムのハード化における高位合成の活用事例 第9回ACRiウェビナー 2022/7/26 株式会社 日立製作所 研究開発グループ デジタルプラットフォームイノベーションセンタ データストレージ研究部 島田 健太郎 20 21