大原雄介のEmbedded Processor Forum 2003レポート

コスト最優先の異色SMTプロセッサ「Ubicom IP3023」


会場:Fairmont Hotel(サンノゼ)
会期:6月16~19日(現地時間)


 前の記事で2日目午後の発表は「すごく変なもの」と書いたが、今年の場合はその筆頭がこのUbicomのIP3023。

 Ubicomは、ローエンドのネットワークプロセッサにフォーカスしたメーカーで、実際同社の前製品であるIP2020シリーズプロセッサは、国内でもいくつか採用実績がある。そのUbicomの最新製品は、8-wayのSMT(Symmetric Multi-Thread)を搭載した、250MHz駆動の凄いやつということになっている。ということで、早速ご紹介したい。


●ダイコストを下げるということ

UbicomのCTOであるDavid Fotland氏。前職はHPでChip & System ArchitectとしてIA-64やPA-RISC、HP-1000などを手がけてきたという。なるほど、発想がちょっと違うわけである
 一般に、ネットワークプロセッサを含む特定用途向けプロセッサを簡単に作るためには、MIPSなりARMなりのプロセッサコアに高速なインターコネクトを接続、さらに様々な周辺回路を集積してゆくことで実現されることが多い。

 この結果、単にCPUコアが小さくても、これを用いて作成した特定用途向けプロセッサのダイ面積は、かなり大きくなる。加えて汎用のOSを使った場合、メモリサイズも大きくなるし、そうなるとキャッシュやMMUといったものも必要になってくるから、更にダイサイズを押し上げることに繋がる【写真1】。

 ところが同社のSoftware I/Oを使えば、周辺回路の面積を大幅に削減できるから、ダイ面積が非常に小さくなる、というのが同社の主張だ【写真2】。

【写真1】まあ、その主張はその通りで間違いない。もっともその代わり、このチップを使っての製品の作りやすさはグンと上がるわけだが、Ubicomはそういうことには興味がないようだ 【写真2】確かにGPIOポートだけなら、複雑な回路は必要ない。が、その分猛烈なプロセッサパワーが必要になるわけではあるが。なかなか普通は思いつかないトレードオフである

 ではそのSoftware I/Oというのはどーいうものか? 例えばUSBを考えてみる。USBの信号自体は1対の信号線で構成され、要するに1か0かという以外のステートはない。通常、ソフトウェアがUSBコントローラにあるデータパケットを送ると、これを解釈して0と1からなる信号をUSBデータラインに送り出すのは、周辺回路の仕事である。

 ところがUbicomの場合、USBの代わりに汎用の信号入出力(GPIO:General Purpose I/O)ラインを用意する。つまりこのGPIOラインをソフトから制御して、USBコントローラの代わりに(きちんとUSBの信号になるように)データを送り出させれば、それはUSBとして機能する、という発想だ。同社はこれでUSBやEthernetはおろか、PCIバスまで制御できると豪語している。

 ただ、そうなるとプロセッサ自体は、ありきたりのARMとかMIPSでは追いつかないことになるし、何より効率が良くない。そこでIP3023では新しい命令セットを採用した【写真3】。これにより、Software I/O自体の効率も上がり、またコード密度やパケット処理の性能も大幅に上がったとしている【写真4】。

【写真3】すべての命令長は32bitに揃えられ、デコードの効率はよさそうだ 【写真4】ARMやMIPSと比べ、2~4倍のパケット処理が可能になった、としているがこれはローカルメモリの効用。一方、コード密度が上がったとしているが、はっきり言ってARM9と余り変わらない気がする。前に紹介したThumb2に逆転されても不思議はない程度だ

 さて、単にパケット処理だけではなく、Software I/Oまで管理するとなると、それなりの性能が必要なのは間違いないところ。これに対し、IP3023では10段のパイプラインが用意される。ここで尋常ではないのは、ステージの最初がFetchではなく、Threadのスケジュールなこと【写真5】。

 しかも、そのThreadのスケジュールが(Pentium4のHyperThreadingなどと異なり)Deterministic Multi-Threading(日本語にすると「決定論的マルチスレッド」とかになって意味が不明だが、要するに設計段階でどういった具合にスレッド制御するかを決めること)を採用する【写真6】など、色々尋常ではない。

【写真5】とりあえずパイプラインが深いことによる分岐のペナルティは、Multi-Threadで遮蔽できるという発想自体は正しい。ただ、それなら普通はデコードの後にリザベーションステージを設けて、ここで調整しそうなものだが、それをパイプラインの先頭にもってくるあたりが、普通ではない 【写真6】論理的には最大32のスレッドを同時に管理できる。うち、リアルタイム性の高い(ぶっちゃけて言えば、Software I/Oの管理を行なう)スレッド(HRT)は16個で、それ以外の処理(OSとかパケット処理とか)を行なうスレッド(NRT)が16個という扱いになる。Threadが割り込みの影響を受けない(ISRの概念が、ほかのプロセッサと大きく違うようだ)とか、コンテクストスイッチングのペナルティが0とか、普通でない項目がぞろぞろ並ぶ

 メモリに関しても、また発想が凄い。VxWorksやLinuxだとメモリを過剰に利用するが、同社の提供するipOSを使うと、作業領域(Stack)込みで100KB以内に収まるから、外部メモリの必要がなく、従ってピン数も減らせるし、全部オンチップメモリだからキャッシュミスが発生しない(メモリがキャッシュみたいなものだ)、といった極端な話が続く【写真7】

 では、ここまでケチケチに徹すると、ナニが得られるか? 例えばIEEE 802.11gのルータをIP3023で作った場合、ルーター部の部品原価が15.70ドルで済む(!)といった、恐ろしく安いソリューションである【写真8】

【写真7】これもまた、当然。ここにアプリケーションを載せる側としてはかなりの難業を強いられそうだが、そういうことは(Ubicomにとっては)どうでもいいのかもしれない 【写真8】実際にはIEEE 802.11gのコントローラカード(MiniPCIで30ドル前後)や、電源(5ドル)、MiniPCIソケットを含む基板とそこへの部品実装コスト(5ドル)などが入るから、ケースやアンテナなどまで込みにすると60ドル位にはなる()が、同程度のアクセスポイント製品がオーバー100ドルで販売されていることを考えると、確かにこれは魅力的だろう
注: この辺の相場は、どの位の規模のマニファクチャで、どの位の量を生産するかでかなり変わってくるから、60ドルは単なる目安で、実際はもっと安く上がる可能性がある。逆に言うと、これ以上掛かることは考えにくい、と考えていただければ良いだろう

●実際のIP3023の構成

 さてそのIP3023、250MHzで250MIPSの性能を持ち、オンチップで320KBのプログラム/データメモリを持つ。ただスピードはかなり自由に可変でき、スリープモードでは0.3MHzまでクロックが下がる【写真9】。内部構成は極めてシンプルで、必要なら外部にメモリも搭載できるが、Ubicomはこの構成を推奨しないようだ【写真10】。

 ただ、見かけほど簡単でないのが、Serial I/OとParallel I/Oの2つのブロックである。まずSerial I/Oの方は、最大90のI/Oポートを持ち、このうち8つのI/Oポートは2つのSer/Des(シリアル←→パラレル変換)ポートとしても利用できる。また、オンボードで10Base-TのPHYを1つ搭載するが、このあたりはいまいち意図が不明だ。

 一方Pallalelの方は、4ポートのMII、もしくは16ポートのGPIOとして構成できる。現時点で用意されているI/Oデバイスの種類はMII、UtopiaⅠ、IEEE 802.11x CardBus、I2C、SPI、GPSI、UART、Blue RF、PCM Highway、USB 1.1、IEEE 802.11a/b/g チップセット、PCMCIA、IDEとかなり多岐に渡る。もっともポートの数に上限があるし、Ser/Desが2組しかないため、同時に利用できるデバイスは多少制限はされる【写真11】。

【写真9】あくまでも8ThreadというのはTypicalなケースのようだ。ちなみにSoftware I/Oには既に5人年(5人の人間を1年間作業させた分量)を投じているとのことだが、そう言われてもほかに類のないアーキテクチャだけに、多いとも少ないともにわかには判断しがたい 【写真10】ネットワークプロセッサとしては極端にシンプルな構造。問題は2つのI/Oブロックである 【写真11】何故100Base-Tではなく、10Base-Tなのかは謎。ちなみに合計106のポートは、A~Hまで8つにグループ分けされ、各々デバイスに接続されるが、個別に使うことも勿論可能

 また、あたりまえだがCPU性能も関係してくる。例えば【写真12】だが、MII1ポートあたり平均12MIPS、ADSLモデムをUtopia経由で接続すると22MIPS、IEEE 802.11a/gカードをCardBusなりMiniPCIなりで接続するのに12MIPS、各々CPUパワーを消費することになる。IP3023の場合、1MIPS=1MHzなので、例えばWAN側1ポート、LAN側1ポートの100Base-Tと、IEEE 802.11gの無線LANを装備すると、12×3=36MIPSをSoftware I/Oで消費することになる。

 ちなみに、PCI(というかCard Bus)におけるSoftware I/Oの詳細を見てみると、平均で12MIPSとは言っても、ピーク時にはRTTの25%を消費するというから、決して負荷は小さくない【写真13】。
【写真12】さすがにUtopiaは負荷が高いようだ。意外にCardBusや100Base-Tでの負荷が小さいのが面白い 【写真13】250MHz駆動のIP3023でSoftware I/Oを使うと、PCIバスクロックは10.4MHzになるという。PCIは最高33MHzだから、それに比べるとかなり見劣りするが、実際にはCardBusだと10MHz位で動く場合もあるので、最低限のレベルはクリアしていると言えるだろう。ただ、十分かというと、ちょっと疑問ではある

 ちなみに【写真14】は、BCM4710(BROADCOMのMIPS32コアのネットワークプロセッサであるAirForceとダイ内部を比較したもの、【写真15】には更に必要とされるメモリまで含んで比較したものが示されている。CPUコア自体で言えば、IP3023はMIPS32コアよりもやや大きいようだ。ただ、Cache/TLBの類を持たず、また周辺回路部の面積は圧倒的に少ない。更にメモリまで入れると、その差はさらに広がることになる。

【写真14】I/Oの面積は確かに圧倒的に小さい 【写真15】メモリまで入れると、その差は大きくなるのは事実。また、実装パーツが増えればそれだけ大型化するし、実装コストも上がるわけで、その意味では圧倒的な競争力を現時点ではもっていると言える

●はっきりしない部分も多い

 ただ、ここまであれこれと公開されつつも、「んじゃTDPは?」とか「ルーティング性能は?」といった、根本的なデータが何故か開示されていなかったりする。質問してみたものの、「それほど高くない」だの「802.11gで十分な性能」だのと、要を得ない答えが返ってくるあたり、やはり問題はあるのだろう。

 例えばTDP。シングルとはいえ、スーパーパイプライン構成を取り、しかもマルチスレッドにより常時動作しているから、消費電力はそう少なくはないだろう。ルーティング性能も同じくで、とにかくRRTがかなりの頻度で発生するから、実際にルーティングに利用できるのは100MIPS前後と想像される。

 IEEE 802.11gと言えば54Mbpsと言いつつ、実効では良くて30Mbps(実際は22~23Mbpsのことが多い)であり、ARM9やMIPS32コアでの実績を考えると、やはり30Mbpsあたりがルーティング性能の限界だろう。

 例えばARM/MIPS32コアとかなら、パケットサイズを大きくするほどオーバーヘッドが減り、ルーティング性能が向上する傾向があるが、IP3032の場合パケットサイズを大きくすると、Software I/Oの負荷が増えることになり、オーバーヘッドが一切変わらない(か、下手をするとRRTの頻度が増えてしまい、かえって性能が落ちるかもしれない)あたりが根本的な問題だ。

 120/160MHz駆動のシングルスレッドプロセッサである同社のIP2000シリーズよりは高い性能が得られるとは思うが、何しろIP2022を使った製品が大した性能を出せていない(http://bb.watch.impress.co.jp/column/review/2003/04/23/)あたり、IP3023でも例えばBRECIS COMMUNICATIONSのMSP2000シリーズ(http://www.brecis.com/prod_MSP2000.html)並みの性能が出せるかと言うと、かなり疑問が残る。

 もっとも、このプロセッサの場合「性能を上げれば解決しちゃうかもしれない」というあたりが普通と違うところ。例えば10段で250MHz駆動のパイプラインを、12段300MHzとかにするだけで、いきなり30Mbpsオーバーのルーティング性能が手に入りそうなあたりが、このプロセッサの強みである。ただ、そうなるとTDPも更に増えそうで、せっかく部品点数を下げたのに、ヒートシンクだのアクティブファンだのが必要になったら意味がない。そのあたりのバランスをどう取ってゆくのか、が今後のこのプロセッサの見所と言える。

□Embedded Processor Forum 2003(英文)
http://www.mdronline.com/epf/
□関連記事
【6月23日】【EPF2003】さまざまな低消費電力技術
http://pc.watch.impress.co.jp/docs/2003/0623/epf03.htm
【6月20日】【EPF2003】MIPSが、新32bitコアMIPS32 24Kを発表
http://pc.watch.impress.co.jp/docs/2003/0620/epf02.htm
【6月19日】【EPF2003】ARMが3つの機能拡張を発表
http://pc.watch.impress.co.jp/docs/2003/0619/epf01.htm

(2003年6月24日)

[Reported by 大原雄介]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2003 Impress Corporation All rights reserved.