Intelが無線チップにリコンフィギュラブル技術を採用すると表明。半導体業界で話題のリコンフィギュラブルってどういったものなのだろうか?
「Intel、お前もか!」と思ったのは、つい先日(2003年6月9日)、インテルが開いた無線LANの技術説明会でRCAと呼ぶ「リコンフィギュラブル」技術を同社が取り上げた、と聞いたからだ。どうもPC系を追いかけている記者諸氏には、リコンフィギュラブルはあまり耳になじみのない言葉だったらしい。そのせいかニュース・サイトなどに掲載された記事の中には、リコンフィギュラブルについてかなり的外れなコメントを述べているものもあった。さすがに組み込み系やデザイン技術系の人は、「あぁIntelもか」という感じであろう。
お前もかというのは、例えばアイピーフレックス(http://www.ipflex.com/)といったマイナー(?)なベンチャー企業が手掛けているケースが多かったリコンフィギュラブルの世界に、このところメジャーな企業の参入が目立っているからなのだ。日本企業を見ても、NECしかり、ソニーしかりだ。そのうえ、「リコンフィギュラブル」と言葉は似ているが、中身は大分違う「コンフィギャラブル」業界も、名の通ったプロセッサ・ベンダが参入してきており、同じく動きが激しい。多分、ベンチャー・キャピタリストには山のようなリコンフィギュラブルやコンフィギャラブル案件が持ち込まれているに違いない。あとは「シンセサイザブル」を加えれば、プロセッサ設計業界のトレンディ御三家の出来上がりである。
正確な定義は置いておいて、ここでは厳密なところはいわず、バッサリとトレンディ御三家のプロフィールを簡単に解説しよう。3つ並べてみるとよく分かるのではないだろうか。
まずは最もプリミティブな「シンセサイザブル」からいこう。今日、プロセッサIPベンダと呼ばれるような会社は、ほぼ間違いなくシンセサイザブルなプロセッサIPを扱っている。シンセサイザブルすなわち「Verilog RTL」などの半導体設計言語で記述された、抽象度の高いレベルのモデルをSynopsys(シノプシス)などの論理合成コンパイラを通して、ハードウェア化して作るプロセッサである。当然、これと対比されるのはハンドメイド設計された古典的プロセッサということになる。昔ながらのハンドメイド設計がアセンブラ・コーディングだとすれば、シンセサイザブルはまさに高級言語である。ハンドメイドが悪いとはいわない。使えるプロセスの限界まで使い切ろうと思ったら、ハンドメイドに勝る論理合成コンパイラはいまのところないからだ。しかし、別なプロセスに移植しようと思ったら、コンパイルのやり直しで済むシンセサイザブルは再利用性が高い。そのうえ、RTLコードを直せば簡単に機能を変更することも可能だ。
この簡単に機能を変更できるというシンセサイザブルの利点を組織的に拡張し、プロセッサに命令を簡単に追加できるようにしたものが、「コンフィギャラブル」プロセッサである。例えば、ソフトウェアでMPEGのデコードをするときに、プリミティブな命令のプログラムでデコードするのでなく、IDCT演算命令(逆離散コサイン変換:圧縮データの展開時に用いられる命令)などがあったとしたら、プログラミングは非常に容易になるだろう。IDCTほど機能が大きくなくても、特定の処理が1命令でできたとしたら効率がよくなるということは多いものだ。そういった要求にこたえるのがコンフィギャラブルだ。
ハードウェアの抽象化にとどまるシンセサイザブルと決定的に異なるのが、コンフィギャラブルの場合、会社によって実現可能なレベルは異なるが、そういった拡張命令をサポートするためのコンパイラやデバッガ、シミュレータといったツールまで含めてトータルで「合成」されるところにある。コンフィギャラブル業界では、Tensilica(http://www.tensilica.com)とARC International(http://www.arccores.com/)というベンチャー企業2社がこの世界を広めてきた。つい最近、RISCの本家というべきMIPS Technologiesが参入し、乱戦模様だ。代表であるTensilicaなど、特別なWebサイト(もちろん契約しないとアクセスできないはずだが)で、所望のプロセッサの仕様を入力し、エイとボタンを押すと、しばらくするとその仕様のプロセッサのRTLコードとコンパイラなどのツール一式が合成されて送付されてくるそうだ。なお、プロセッサIPベンダ・トップのARMは、シンセサイザブルは売っているが、コンフィギャラブルはいまのところアナウンスしていない。
さて上記の説明からコンフィギャラブルの弱点が分かったであろうか? それは、コンフィギャラブルといっても設計時点のコンフィギャラブル性であって、一度ハードウェアにしてしまえば、後はソフトウェアで対処するしかない、ということである。例えば、「A」というアルゴリズムを実行するための専用命令を作って、「A」を高速化したとしても、「B」というまったく別なアルゴリズムを実行するには、そのハードウェアは役に立たないかもしれないということだ。そういう点を解決しようというのが、「リコンフィギュラブル」の発想だ。実行時にハードウェアの構成を動的に組み替えて、複数のアルゴリズムに対処しようというのだ。
例えばFFT(高速フーリエ変換)を実行するときにはFFT専用のデータ・パスになり、IDCTを実行するときにはIDCT演算回路になるという具合だ。リコンフィギュラブルの基本は、加算器、乗算器とかシフト器とかいった演算回路や、手足のない小規模なプロセッサともいえるプロセシング・エレメントといったものをアレイ上に並べて、それらの相互接続と、各エレメントの果たす役割をプログラムすることで動的にハードウェアを再構成するというものだ。
だから当然、あるときは無線LANとしてプログラムされていたロジックを、またあるときはBluetoothとしてプログラムし直すということが原理的には可能だ。通信分野は、各国で規制が異なるし、通信方式もいろいろあるうえ、標準が次々に登場してくる。それらを静的にハードウェアで作っていたのでは大変だ。これをやらずに済ませたいというのが、リコンフィギュラブルを採用するIntelの狙いだろう。
しかし、ハードウェア系に強い読者の方ならお分かりのとおり、リコンフィギュラブルは何かと根本的な発想が同じである。そう「FPGA」――プログラム可能なゲートアレイである。FPGAも各コンポーネント間の接続をプログラムして、同じハードウェアをまったく異なる回路に構成できる点でリコンフィギュラブルと同じである。いまのところ両者の扱う1つ1つのコンポーネントの機能的な大きさ、粒度というべきものが決定的に異なるので別物として認識されているにすぎない。
FPGAの1つ1つのコンポーネントは、ゲートアレイというだけあり、わずかな数の論理ゲート相当の機能にとどまる。そして小さなコンポーネントを非常に多く並べる。これに対してリコンフィギュラブルという場合のコンポーネントは、通例小規模なプロセッサか、プロセッサ・データ・パス内の機能ブロック相当である数千ゲート以上の大きなブロックが多い。コンポーネントは数十から数百といったところだろう。そのせいか、FPGAの場合、回路図といってもよい、ゲートの接続情報である「ネットリスト」でプログラムする感じであるが、リコンフィギュラブルでは、ソフトウェア・プログラムを構成する各アルゴリズム要素をハードウェアにマッピングしていくといったイメージで構成される。
リコンフィギュラブルのもう1つの売りは、それこそ1クロックごとにハードウェアを組み替えられるというダイナミック性である。これができず、コンフィグするたびにいったん停止するようなリコンフィギュラブルは、「スタティック・リコンフィギュラブル」と呼ばれる。ただ、ダイナミック・リコンフィギュラブル利用技術は、実はまだまだで、ほとんどのリコンフィギュラブルは、原理はともかくのところ、スタティックな使い方ばかりのようだ。ここでブレイク・スルーがあると大きく発展するだろう。
このところのリコンフィギュラブル・ブームも、Intelまで登場してくると、ちょっと食傷ぎみというところだ。しかし、コンフィギャラブルにせよ、リコンフィギュラブルにせよ、伝統的なプロセッサ・アーキテクチャの統制を打ち破る発想であることは間違いない。その点でMIPS Technologiesがコンフィギャラブルに手を出したのは、恐る恐る一歩を踏み出してしまった、という感じだし、ARMがシンセサイザブルを売ってもコンフィギャラブルに踏み出さないのは1つの見識、とも思う。さて、Intelはどういうスタンスで「リコンフィギュラブル」するのだろうか?
■関連リンク
日本では数少ないx86プロセッサのアーキテクト。某米国半導体メーカーで8bitと16bitの、日本のベンチャー企業でx86互換プロセッサの設計に従事する。その後、出版社の半導体事業部を経て、現在は某半導体メーカーでRISCプロセッサを中心とした開発を行っている。
「頭脳放談」
Copyright© Digital Advantage Corp. All Rights Reserved.