NECの交換移動通信事業本部に,命令セットのカスタマイズが可能な(リコンフィギュアラブル)CPUコアである「米Tensilica Inc.のXtensa」の導入経緯を聞いた(EDA Online関連記事1)。現在NECは,同コア内蔵のシステムLSIの開発を進めており,年内には同LSIを使った交換機が出荷される予定という。このLSIはいわゆるレイヤ2処理用である。一般にレイヤ3以上は汎用マイクロプロセサを使うソフトウエア処理になる。一方,レイヤ1(物理層)は専用LSIを使うハードウエア処理である。

 その間のレイヤ2はハード処理とソフト処理が混在する。すなわち,汎用プロセサ+専用LSI(ASICまたはFPGA)で対応している。これをXtensaベースのシステムLSIで置きかえる。市場には,リコンフィギュアラブルなCPUコアがいくつかある。Xtensaを選んだ理由やカスタマイズのコツなどを,同事業本部の交換事業部長代理の佐藤均氏と,同・交換事業部プロセッサ技術部長の林孝雄氏に聞いた。(聞き手は小島郁太郎)

 リコンフィギュアラブルなCPUコアを導入した動機を聞きたい。

NEC  通信事業者を顧客とする,われわれ(交換移動通信事業本部)のプロセサに対する要求は,パソコン開発者やディジタル民生機器開発者とそれと同じではない。具体的には,三つの要求がある。一つは高い処理能力,二つ目は継続性,そして三つ目は開発スピードである。

 まず,処理能力。携帯電話やインターネットなどにより,通信トラフイックは加速度的に伸びている。汎用のマイクロプロセサの処理性能は,毎年2倍程度しか上がらない。とてもトラフィックの増加には追いつかない。一方で,通信事業者に納める装置は民生機器と異なり,ずっと製品寿命が長い。半導体製造プロセスが変っても,チップの供給が止まっては困る。そして,競合に負けないようにするためには,開発期間の短縮は重要である。

 半導体製造プロセスの変化に追従するという点では,論理合成可能なソフト・タイプCPUコアがある。それではダメか。

NEC  その検討はわれわれも行なった。しかし,論理合成可能なCPUコアといっても,内容を変更することは想定されていない。技術的にコアのソース・コードを変更することができても,動作は保証されない。つまり,現実には変更できない。コアそのものを変更できるような「超ソフトな」CPUコアが欲しいとずっと思っていた。

 それが,リコンフィギュアラブルなCPUコアとして登場した。これならば,われわれがやりたいことに合わせて,命令を加えられる。プロトコルの更新などアプリケーションの変化に対応しやすい。命令セットをカスタマイズしたCPUコアは,論理合成可能なソフト・タイプなコアであり,半導体製造プロセスの変化にも,もちろん追従できる。また,ASICにもFPGAにも展開できる。

 最近,複数登場しているネットワーク・プロセサはどうか。

NEC  多くの製品はベンチャー企業のものだ。長期安定供給の点で不安がある。

 市場にはいくつかリコンフィギュアラブルなCPUコアがある。そのなかから,「Xtensa」を選んだ理由は。

NEC  開発ツールが充実していたからだ。CPUコア単体としてはもっと柔軟性が高い製品もあったが,ツールが整備されていないと,開発に手間どる。一方, Tensilica社のツールは,われわれが日ごろやりたいと思っていたことが容易にできるようになっている。恐らく,われわれと同じバック・グラウンドをもった技術者が開発したのだろう。

 Tensilica社は命令の追加は容易だといっているが,本当に簡単なのか。

NEC  その質問に直接答えるのではなく,われわれの使い方を説明したい。まず,処理したいC言語プログラムがあることが,前提になる。Tensilica社が提供するシミュレータを使いプログラムを実行し,ボトルネックになっている部分を見つける。この部分を処理する命令を考え,命令セットに加える。

 命令を加えると,そのハードウエアは自動的に生成されるのか。

NEC  Xtensa では,命令を追加すると,それを処理する回路が加えられる。Tensilica社があらかじめ用意した命令を追加すれば,それに対応した回路が自動的に生成される。今回,われわれは,Tensilica社が用意した命令ではなく,独自の命令を追加した。独自命令に対応する回路を加える作業を効率良く行なうために,Tensilica社はVelilog-HDL風の「TIE言語」を用意している。

 われわれも,今回,TIE言語を使い,追加命令に対応した回路を記述した。このとき,ベースとなる部分の資源(端子やバス,レジスタなど)を考慮した記述を書くことで,ベース部分と追加部分を一体にできる。注意が要るのは,パイプラインの一部にこの回路を押し込むために,1クロックで処理が終わる回路にすることだ。

 追加部分の回路をTIE言語で書けば,カスタマイズされたCPUコア全体のVHDL記述と,コンパイラ,リンカが自動生成される。

 追加命令を考えたり,それに対応した回路を考えたりでは,結構大変そうだが。

NEC  従来,追加部分を専用LSIとして設計していたことを考えると,Xtensaを使うことでかなり楽になったといえる。ただし,ハードもソフトも同時に考えられるスキルがないと,使いこなすのは難しいかもしれない。

 Tensilica社が用意したオプションの命令は役に立たないのか。

NEC  今回は使いたいものがなかった。Tensilica社は音声処理や信号処理を意識した,追加命令を用意している。将来,たとえば,局内の留守番電話システムなど向けLSIにXtensaを使った場合には,こうした命令を利用すると思う。

 Tensilica 社の場合,CPUコア全体のVHDL記述と,コンパイラ,リンカを自動生成するソフトウエア・ツール(プロセサ・ジェネレータと呼ぶ)は, Tensilica社のサーバ上にある。ユーザはWWWブラウザ経由で,それを利用するが,応答時間に問題はないか。

NEC  問題は感じない。

 開発中のLSIは交換機のどこに使っているのか。

NEC  Xtensaを使うのは初めてなので,顧客には直接触れない部分に適用する。具体的には,筐体間の接続部分だ。技術的には枯れており,Xtensaを使ったLSIが万一うまくいかなかったとしても,既存の技術で代替できるようにしている。顧客には迷惑をかけない。

 Xtensaを使うに当たって,不満や問題はないか。

NEC  とくにはない。現在,CPUコアのカスタマイズが終わったところだ。これから,このコアを核にシステムLSIを開発する。周辺回路と一緒にすると問題がおきるかもしれないが,現時点では非常に順調だ。

 開発中のLSI以外にも,Xtensaを使っていきたいか。

NEC  リコンフィギュアラブルなCPUコアは,最初に述べた三つの要求にこたえてくれる。この利用技術が確立すれば,われわれは,資産をC言語で残せる。そうなると,ハードウエアでもソフトウエアでもインプリメントできる。しかも,カスタマイズしたCPUコアはVHDL記述なので,ハードウエアのインプリメンテーション方法も選べる。今後も,積極的に使っていきたい。