前回のエキスコン(20)では、炉端老人からソーティングを行うためのハードウェア化としてFPGAで実現できるであろうか? という課題が示されていた。ソーティングとはランダムに並んでいる数値の列を大小順に並べ替えることである。文字列であれば、文字のコンピュータ内部表現として大小関係が付けられているので、アイウエオ順に並べ替えるとしてもよい。少しばかり調べてみたが、結論から先に述べると理論的には実現できるが、現在のFPGAの規模では難しい、と考えられる。
まず理論的な実現性について述べる。ソーティングをネットワーク構造のハードウェアで実現できないか、筆者は独自に考えてみた。すぐに思いついたのがトーナメント方式によるソーティングである。近く選抜高校野球が行われる。高校野球はトーナメント方式で優勝校を定める。この方式によるソーティングをトーナメント方式で考えればよい。トーナメントの試合形式では、参加校がn校あるとすれば、たかだかlog n回の試合で優勝校が定まる。ここでlogの底は2であるから、仮に64校が出場しても、参加校としては6回の試合数で優勝が定まる。全体の試合数はn-1であり、オーダとしてはn であるからこのことをOrd (n) と表すことにする。トーナメント方式によるソーティングをネットワークで処理する考え方を基にすると、ソーティングは記憶素子を用いない組み合わせ論理回路のみで実現可能であることは明白である。そこでインターネットを検索したところ、古くから多くのソーティング・ネットワークが提案されており、筆者の勉強不足であることを思い知らされた。
代表的なソーティング・ネットワークは、バイトニック・ソーティングによるものである。処理に要する比較回路の段数は、Ord (log n)2 であるから、これを組み合わせ論理回路で構成すれば、入力が与えられてから出力が得られるまでに要する処理時間は極めて短くできる。仮に比較回路の処理速度を1マイクロ秒として、10億個のデータをソーティングするとすれば、1ミリ秒すなわち千分の一秒で処理できることになる。この組み合わせ論理回路の規模は、Ord n (log n)2 となる。
このような規模を必要とするソーティング・ネットワークをFPGAで実際に実現することは、現時点では困難であろう。その理由を次に述べる。
10億個のデータをソーティングするために必要な比較回路素子の数は10の12乗個、すなわち一兆個程度となる。比較回路自体の構成には10の3乗程度の論理素子を必要とするであろうから、素子数は10の15乗個と厖大な数になる。さらに比較回路間の接続配線も輻輳する。FPGAの作成を行うメーカーの資料を見ると配線領域の増大は、回路個数の増大と共に大きな課題になっている。現在市場に供給されているFPGAの論理素子数は10万個、すなわち10の5乗個程度にすぎないから、バイトニック・ソーティング機能を組み込むことはできそうもない。
それであれば、実現できる範囲のソーティング・ネットワークをFPGAで構成し、これを用いるためにデータを分割して処理する方式も考えられる。様々に調べていると画像処理にもソーティングが使われているようなので、あるいはすでに分割処理する手法が開発されていることも想像できる。
いずれにしても、ソーティングの並列高速処理は、エキスコンに関わる将来課題の一つであろう。 (応)