メインとなるプロセッサー以外は独自設計
これを統合できれば新しい命令セットが普及する
ではこの2010年代はx86とArmだけで事足りていたのか? というともちろんそんなことはない。確かにメインとなるプロセッサーはx86かArmでこれは疑う余地はないのだが、それ以外のブロックに多数のプロセッサーが搭載されており、これらは独自のものが多かった。
下の画像はDual Cortex-A9というあたり、おそらくはTegra 2の内部写真と思われる。
そのTegra 2のブロック図が下の画像である。ここで色を付けたのは筆者だが、この色付きの部分は独自のプロセッサーを搭載している「可能性がある」(実際に搭載してるかどうか、はNVIDIAの中の人のみぞ知る話で、分解して削ってみないと判断できない)ブロックである。
ちなみにTegra 2はスマートフォン向けのプロセッサーではあるが、ワイヤレス(3G回線やWi-Fi/Bluetooth)は外付けなのでここには含まれていないが、もし含まれていたらここにも独自プロセッサーがてんこ盛りであろう。
実はこうした構図は別に珍しくない。例えば初代のIBM-PCだが、実はキーボードのコントローラーとしてはIntel 8048という8bitプロセッサーが8088とは別に搭載されており、キーボードが押されたかどうかの判断とキーコードの送出はこの8048の仕事になっていた。
要するにすべての処理をメインとなるプロセッサー(この場合はDual Cortex-A9)にやらせていたら、処理が重くなるとデータの取りこぼしなどが簡単に起きかねないし、極めて煩雑に処理を切り替える必要があるから性能も落ちる。通信やネットワーク処理、ISPなどに関してはもう専用のプロセッサーを搭載させた方が賢明である。
こうした部分ではこれまで、Arm以外のコアが結構広く利用されてきていた。もちろんArmもリアルタイム制御に向いたCortex-Rシリーズや、汎用のCortex-Mシリーズのプロセッサーを提供してきているが以下の事情から、必ずしもArmコアが使われるとは限らない。
- Armからコアを買うとライセンス料が高い。なにしろ薄利多売のビジネスなので、数セントのライセンス料でも結構インパクトは大きい。
- こうした機能ブロック組み込みのプロセッサーは、別に汎用的な命令セットに準拠している必要はない。特定の処理だけしか実行しないので、そのプログラミングができればいい。
ちょうど2010年頃で言えば、Wi-Fi/Bluetoothのモデムには台湾Andes Technologiesが独自に開発した(命令セットも独自のAndeStar v3というものだった)AndesCore v3が使われていることが多かった。
ほかにもSynopsysのARCやCadenceのTensilica Xtensa、仏CortusのAPSなど、こうした組み込み向けに向いたCPUコアをIPの形で提供するベンダーは多かった。
もっと性能が低くていい向けには、それこそ8051互換のIPをリリースしているベンダーはけっこうあり、利用には困らない。上の画像で言えば、USBのコントローラーや各種アクセラレーター類は32bitのコアが必要だが、UARTやI2C、RTC(リアルタイムクロック)やキーボードの制御なら8bitで十分だろう。
ちなみにこうしたコアはIPの形で提供されることになるので、ASICを開発するベンダーはそのIPを購入して自分で組み込むことになる。そうした技術力がないベンダーはどうするか? というと半導体メーカーに頼んで作ってもらうわけだが、その際にはそのベンダーが保有しているIPが使われることになる。
例えば旧Freescaleに頼むと8bitにはS08を、32bitにはColdFireを使うことが多かったし、旧AtmelではAVR8/AVR32がこうした用途に使われた。結果的に、数ダースのISAが1つのSoC内で使われるというケースは本当に珍しくない。
逆に言えば、こうした混乱状態にあるISAを統合できれば、新しい命令セットが普及する余地があるというふうにAsanović教授は考えたわけだ。
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります