第91回 ハードウェアをソフトウェアで実現するXMOSって何?頭脳放談

XMOSの新しいプロセッサは、ハードウェアをソフトウェアで実現可能とか。マルチコアに対応し、それでFPGAやASICの対抗? XMOSって何?

» 2007年12月21日 05時00分 公開
「頭脳放談」のインデックス

連載目次

 「またぞろ」などと書くと失礼だが、また新たなアプローチの「プロセッサ」が登場したのでコメントさせていただくことにする。出所は英国ブリストル(Bristol:イギリス西部の港湾都市)に本拠を置くXMOS Semiconductorというベンチャー企業である。ベンチャーといいながらも、その発想の大本は「トランスピュータ(transputer)にありそうだ」といえば、古い業界人ならなんとなく想像するものがあるのではないだろうか。補足すると、トランスピュータは同じ英国の企業INMOSが設計した並列コンピューティング向けのマイクロプロセッサである。残念ながら、製品としては成功せず、INMOS自体もSGS-Thomson(現在のST Microelectronics)に買収されてしまった。

 このINMOSも、XMOSと同じくブリストルに会社があった。ブリストルというと業界的にはあまり聞かない土地柄だが、マンチェスターにもそう遠くなさそうだ。マンチェスターはフーリガンで有名なだけではない、コンピュータの発祥の地の1つだといってもよいだろう。古い英国の「伝統」(亡霊といったら失礼すぎるな)が復活したような印象である。

 さて、この会社そのものは、ファブレス(製造工場を持たない)の半導体会社である。今回、TSMCの「90nmジェネリック」プロセスで最初のサンプルが製造され、それが動作したので、ニュースリリースが配信されたようだ(XMOSのニュースリリース「XMOS unveils first Software Defined Silicon)。プロセッサといえばプロセッサであり、もちろんプロセッサとして使うのに何の問題もなさそうではあるのだが、単純にプロセッサとしては分類しにくい概念を提出してくれた。その証拠に、プレゼンテーション資料を見れば、FPGAやASICと比較している。ほかのプロセッサとは比較するどころか、英国らしく「ARMとは共存できる」という雰囲気をかもし出してもいる(ARMも英国の企業)。

XMOS SDSとFPGA、ASICとの比較(XMOS Semiconductorのプレゼンテーション資料より) XMOS SDSとFPGA、ASICとの比較(XMOS Semiconductorのプレゼンテーション資料より)
XMOSが公開しているプレゼンテーション資料には、プロセッサではなく、FPGAとASICと比較がある。

ハードウェアをソフトウェアで実現する?

 惜しむらくは、概念を説明する「単語」だけを並べてしまうと「似たようなコンセプト」がすでにいろいろ存在しそうなのである。そのため、ひと言で説明してしまうと「誤解」を受けてしまいそうだ。少々細かくなりすぎるが、既存のほかのアプローチとどう違うのかを考えていけば、この会社のコンセプトが明らかになってくるだろう。

 まず、「なぜFPGAやASICと比較するか」といえば、このプロセッサはFPGAやASICとして実装されるような論理LSIを置き換えることをターゲットにしているようだからである。通常、FPGAやASICであれば、「ハードウェア設計者」がVerilogやVHDLなどのハードウェア記述言語で書き、論理合成して、配置配線などを行うことで「ハードウェア」として実現する。懐かしい、回路図で書くという行為は、まったくなくなってしまったわけではないが、大規模開発ではまずありえない。これに対して、このプロセッサの場合は、CもしくはC++、あるいはCに独自の拡張を施したとも想像されるXC言語によって記述し、それを実行することでFPGAやASICと同等の動作をさせることが可能になるのだ。

 では、記述言語が違うだけなのか? こう書けば、例えばSystemC(ハードウェア記述言語の1つ)など、ハードウェア・システムを記述するためにCやC++を拡張した系統の言語がすでにいくつか存在するではないか、という指摘もあるだろう。Cでハードウェアを記述するというのは「すでにある」概念である。しかし今回のXMOSのアプローチは、根本が違うのである。SystemCなどは、Verilogなどと同様に、最終的にハードウェアである論理ゲートに「コンパイル」されるのであって、行き先はハードウェアなのである。XMOSの場合、「ハードウェア」を記述しているつもりなのにもかかわらず、結局「ソフトウェア」として実行される、と説明すべきものだ。ソフトウェアはソフトウェアなのだ。このあたり、少々分かりにくいのだが、ここがXMOSのキモの部分だ。

 公開された資料によれば、この会社のプロセッサは「マルチスレッド」の「マルチコア」であり、ローカルなメモリと、ハードウェアによるスレッドのスケジューリング、スレッド間の同期機構およびXLINKと呼ぶマルチスレッドの各コア間の通信チャネル、そしてそれぞれのコアに接続しているポートからなるのである。なんとなく、並列コンピューティングのために複数の通信リンクを装備していた「トランスピュータ」の臭いを感じないだろうか。

XMOSのブロック図(XMOS Semiconductorのプレゼンテーション資料より) XMOSのブロック図(XMOS Semiconductorのプレゼンテーション資料より)
ブロック図を見ると、プロセッサはマルチスレッド対応のマルチコアであり、ローカルなメモリと、ハードウェアによるスレッドのスケジューリング、スレッド間の同期機構およびXLINKと呼ぶ各コア間の通信チャネル、コアに接続しているポートから構成されていることが分かる。

 そのスレッドとして実行される「ロジック」をCやらXCやらの「ソフトウェア言語」で記述する、ということなのである。実行される「ソフトウェア」そのものは、従来ハードウェアであったものなので、少々普通とは異なる、というだけのことだ。何のことはない、いって見れば「ハードウェア相当の機能」をソフトウェアとしてプロセッサが実行する、ハードウェアの「ソフトウェア・エミュレーション」に近い。

 例としてUART(Universal Asynchronous Receiver Transmitter:シリアルとパラレルを変換する回路の一種)を実現する例が書かれていた。送信ロジック、受信ロジック、FIFOや制御部等がそれぞれスレッドとして実現され、それらスレッドがイベント・ドリブンなスケジューリングのもと、協調動作を行うことによって「論理回路」としてのUARTの機能が実現される、といった具合だ。

 確かに、SystemCのような高水準の言語設計とも違う。FPGAなどのように回路になるわけではない。また、所望の機能、性能のプロセッサを作り出すために、設計時にプロセッサのコンフィギュレーションを変えることができるコンフィギャラブル・プロセッサとも、実行時に動的に演算パスや制御パスを再構成することができるリコンフィギャラブル・プロセッサとも違う(リコンフィギャラブル・プロセッサについては、「第37回 Intel参入で注目を集める「リコンフィギュラブルって?」参照のこと)。

 あえていえば、こういう考え方は「マイコン屋は、昔から普通にやっていた」のである。例えば、「同期式のシリアルがほしかったのだけど、ないんだよねぇ」というとき、ソフトウェアで普通のパラレル・ポートを制御して、シリアル・デバイスと接続する、といったことをである。ある意味でCPUは、「究極のペリフェラル」でもあって、ソフトウェア次第で「何でもできる」のだ。ただし、CPU速度やリソースが許せば、という前提である。このごろでいうソフトウェア・ラジオなどはこの考え方の延長にあるように思える。

 そういう昔からある概念を、マルチスレッドのマルチコア、イベント・ドリブン・スケジューリングとスレッド間、マルチコア間、そしてマルチチップ間の高速なチャネルと、近代化された開発言語という道具立てで前面に押し出し直したもの、がXMOSの製品とも考えられるのである。

ソフトウェア・エンジニアだけでハードウェアが作れる?

 XMOSのいい分を勘案すれば、ソフトウェアのエンジニアの数は圧倒的に多いから、こうしてソフトウェアで「ハードウェア」が記述できれば「市場は開ける」ということになるのだろう。確かに面白い考え方ではある。しかし、分かっていると思うが、UARTを実現するためにわざわざこのデバイスを買ったりしないと思うぞ。もちろんUARTは簡単に説明するための例だということは、当方も理解しているつもりだ。

 たとえ、このデバイスがあればソフトウェア・エンジニアだけでハードウェアが作れるようになったとしても(実際には、それほど簡単な問題ではないことはみなさんお分かりと思う)、各ハードウェア・メーカーがいま使っているFPGAやマイクロプロセッサ集積SoCを放り出してこのデバイスに乗り換えさせるハードルは相当に高い、といわざるを得ない。なにせ小さなペリフェラルくらいだったら、ゲート数もたかが知れているし、どこにでも転がっているのだから、わざわざリスクのある新デバイスを新開発環境と一緒に手に入れる必要はないのだ。やはり、「このデバイスでだと、圧倒的に作りやすい」とみんなが納得し、かつ、導入のモチベーションになり得るリアルな応用がほしいところである。

 資料によれば、XMOSは、コンシュマー・エレクトロニクス・ターゲットで、アプリケーション向けにも開発を進めているようだ。いまは、漠然としたことがプレゼンテーション資料に書いてあるだけだが、ぜひ次は、具体的なアプリケーション・デザインの成功例を聞いてみたいものである。

 ちなみに、プレゼンテーション資料に載っているソースコードの断片から見る限り、XC言語は、なんとなくという以上にOCCAM(INMOSがトランスピュータ用に開発した命令型/手続き型言語)風でもある。年寄りの記憶は当てにならないが、OCCAMは、PASCAL-MODULA系の雰囲気でコンカレントな記述を許していたはずだ。XCは、それを「みかけCっぽく」し、より「軽量」で現代的な「マルチスレッド」に衣替えしたようなものに感じられる。

 実をいえば、昔、トランスピュータやOCCAMを使ってみたかったのだけれど、その機会がなかった。当時のツールは結構高かったと思うし。もしお試しツールが販売されるのならばぜひ使ってみたい。それも、個人で手に入るような安い値段にしてほしい。最近は、FPGAでもマイクロコントローラでも1万円もしないでUSB接続のツールと開発環境が手に入ることが多いのだから。まぁ逆にいえば、日本でそんなものがそんな値段で手に入るようになれば、XMOSもそこそこイケてる、ということになるのだろう。健闘を祈りたい。

■関連リンク


筆者紹介

Massa POP Izumida

日本では数少ないx86プロセッサのアーキテクト。某米国半導体メーカーで8bitと16bitの、日本のベンチャー企業でx86互換プロセッサの設計に従事する。その後、出版社の半導体事業部を経て、現在は某半導体メーカーでRISCプロセッサを中心とした開発を行っている。


「頭脳放談」のインデックス

頭脳放談

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。