ツインテールアーキテクチャ

ツインテールアーキテクチャを提案している論文を読んだ。面白かった。

教授は僕の興味を汲み取ってくれてこの論文を読むことを勧めてくれたのだろう。

単純にまとめれば

  • スーパースカラにおいて命令間に依存があっても実行できるようにする
  • フロントエンドでインオーダー実行、バックエンドでOoO実行
  • OoOのdispatchやscheduleを行っている間にフロントエンド実行を行い、
    フロントエンド実行の分のレイテンシを隠蔽

評価の結果を見ると平均13.6%の性能向上ということでまずまずの結果かな

FPGA SoC (FPGAとARMコア Altera-SoC/Zynq)

今の研究はFPGAとARMがひとつになったXilinx社でいえばZYNQ、Altera社でいえばAltera-SoCというものを触っているのだが、この可能性について書きたい。

ARMは近年いろいろなところで利用されるようになった。CPUの出荷台数で言えばARMはintelの数倍になっている。

本題のARMとFPGAの組み合わせだが、使っているということはアリだと思っているわけである。というのも、ARMが使われている分野は(電池駆動の)組込系が多く消費電力にシビアな世界が多い。だから高性能なCPUは使えない。じゃあGPUはどうかというと更に消費電力が高く組み込み系には使いづらいだろう。

ARMコア単体でも組み込み系で特に電力に関してシビアなものに搭載されているというイメージがある。一方FPGAは今まで単体でカメラなどに採用されてきたが汎用性の問題で置き去りにされてきたイメージだ。この汎用性の問題が解決すれば十分に使い物になると思う。特にCNNを利用した画像処理は大量の計算リソースが必要でFPGAに適しているだろう。

ARMからFPGAがコンフィギュア可能という特徴があるのでアプリケーションごとにFPGAを再構成させることが可能になる。また、全体の再構成だけではなく、部分的再構成させることも可能になるだろう。(今も苦労すれば出来るのかもしれないが)

個人的にはFPGAという細粒度な再構成可能アクセラレータよりCGRAのような粗粒度な再構成可能アクセラレータに分があると考えている。

FPGAは、本当に汎用的に使いたい分野にこそ向かないものの、同じプログラムを頻繁に利用するような組み込みの世界ではスループットを爆発的に改善する大きな一歩になるだろう。