ソート回路のハードウェア化

各種ソート回路のハードウェア化と
ハード/ソフト最適分割化の検討
立命館大学
理工学部 電子情報デザイン学科
高性能計算研究室
B4 松田 英亮
2009/02/27(金)
1
研究背景
・システムLSIの高集積化により、扱うデータ量の増加
・ハード・ソフトの最適分割の必要性
・データ量の多い処理の高速化の必要性
研究目的
・クイックソート回路・バブルソート回路の実現
・各種ソートのハード/ソフト最適分割の検討
2
クイックソートのアルゴリズム
軸要素(pivot)
3以上を検索
1
9
7
3
3未満を検索
5
2
11
10
交換
9以上を検索
2以上を検索
1
2未満を検索
3
2
5
7
5以上を検索
3以上を検索
1
9未満を検索
2
3未満を検索
3
11
9
交換
5
2
3
10
5未満を検索 11以上を検索
5
7
9
11未満を検索
10
11
交換
7
9
11以上を検索
11未満を検索
10
11
10
11
クイックソートのモジュール内でのデータの動き
0 1
Stack_address
request
0
9
data_left
address_left
Read_left
address_left
data_left
consent
address_right
0
1
3
6
3
1Memory
8 8
data_pivot
address_pivot
Read_pivot
8
data_pivot
Compare_
big
left_data
left_address
address_left
data_left
reflexive
address_right
6
9
data_right
address_right
Read_right
data_pivot
address_pivot
address_right
data_right
Compare_
small
right_data
right_address
enable1
pivot_change1
3
enable2
Write_and_Swap
pivot_change2
address_right
data_right
address_pivot
return
バブルソートのアルゴリズム
1
1
9
7
0
5
2
11
10
比較
ココまで
右端まで繰り返す
2
1
7
0
5
2
9
10
11
最大の値が右端にくる
3
1
7
0
5
2
9
10
11
比較
ココまで
右端の1つ前まで繰り返す
・
・
・
0
1
2
5
1~3を繰り返す
7
ソート完了
9
10
11
バブルソートのモジュール内でのデータの動き
9
0
0
1
A
2
……………….……
Memory
data1 address1
3D
7
3E3F
4
3F
data1 address1
data2 address2
Compare_and_exchange
data2
address2
クイックソートの負荷割合と分割パターン
メモリー
16%
左入出力
5%
スタックメモリー
31%
右入出力
5%
ピボット入出力
5%
比較1
9%
スワップ・書き
込み
20%
分類
A
ハード
Memory, Raed_left, Read_right, Read_pivot,
Compare_big, Compare_small, Write_and_swap,
stack_address
B
Memory
C
Memory, Stack_address, Write_and_swap
D
Raed_left, Read_right, Read_pivot,
Compare_big, Compare_small, Write_and_swap
E
比較2
9%
ソフト
回路規模
クロック数
1985
1560[clk]
1439
×
1971
×
Memory, Stack_address
46
×
Memory, Raed_left, Read_right, Read_pivot,
Compare_big, Compare_small,
Write_and_swap, stack_address
0
780000[clk]
Raed_left, Read_right, Read_pivot,
Compare_big, Compare_small,
Write_and_swap, stack_address
Raed_left, Read_right, Read_pivot,
Compare_big, Compare_small,
7
クイックソートの負荷割合と分割パターン
分類
ハード
A
Memory,
Comapre_and_exchange
B
Memory
C
Compare_and_exchange
D
ソフト
回路規模
クロック数
968
2070[clk]
Compare_and_exchange
955
×
Memory, Stack_address
13
×
Memory, Compare_and_exchange
0
828000[clk]
まとめ
・クイックソート回路・バブルソート回路の作成
それぞれソフトウェアの約500倍、400倍の速度向上
・各種ソートのハード/ソフト最適分割化の検討
回路規模と処理速度のトレードオフを考慮した分割案の提案
今後の課題
・Microblaze上でのハード/ソフト分割パターンの実測値の
測定と検証
・他のソート回路での実測値の測定と検証
9