CPU黒歴史 思い付きで投入したものの市場を引っ掻き回すだけで終わったQuark

文●大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

2022年05月09日 12時00分

 前回の記事を書いていて思い出したのがQuarkである。これに振り回された人はご愁傷様としか言いようがない考えなしのプロセッサーであり、しかもずるずると引きずった挙句に突然消えるという、猛烈にはた迷惑な製品であった。ということで、若干ながら振り回された側という恨みも込めて、久々のCPU黒歴史シリーズである。

Quarkのパッケージサイズは15×15mm。ダイサイズは5.324×5.817mmと超小型である

超小型・低消費電力を武器に
IoT市場に対してインテルが売り込む

 2013年9月にサンフランシスコで開催されたIDF Fall 2013の初日基調講演において、当時のCEOだったBrian Krzanich氏が突然発表したのがQuarkとEdisonである。ジサトライッペイ氏の当時のIDFレポートにも少し出ている。

右手でつまんでいるのがQuark SoC。どうでもいいが、今見ると指が傷だらけである。どうしたんだろう?

Edisonベースのリファレンスキット例。左手に持っているのはウェアラブルデバイス向け、右手にもっているのは小型家電向けだ

 もっともEdisonに関しては、正式に発表されたのは翌2014年1月のCES、その詳細が公開されたのは2014年のIDFのことである。

 順序が逆になるが、Edisonから説明しよう。Edisonは超小型のコンピュート・モジュールである。先のイッペイ氏の記事にもあるが、Silvermontベースの2コア Atom(500MHz駆動)に1GB LPDDR3と4GB eMMCフラッシュ、Wi-FiとBluetoothを搭載するモジュールで、寸法は35.5×25×3.9mmと非常に小さい。

裏面(写真右側)に70ピンの拡張コネクターがあり、ここ経由でSDカードやUART、I2/SPI、USB 2.0、GPIOなどの配線を引っ張り出せる(電源供給もこの端子から)。表面(写真左側)は、Wi-Fi/Bluetoothのアンテナ端子があるだけだ

 内部構造は下の画像のとおりで、余分なものが一切搭載されていない。そのため、この状態で使うのはかなり困難である。それもあってインテルからはEdison用の開発キットも提供されていた。

上がIntel Edison Breakout Board Kit、下がIntel Edison Kit for Arduino

 上側は本当に最小限のボードで、USBコネクターとリセットスイッチ以外はなにもないのだが、70ピンのコネクターからの信号をピンヘッダに変換できるようになっており、機器に実際に組み込むことを前提にしたものだ。

 一方下側はArduino互換のI/Oピンなどを搭載し、製品への組み込みと言うよりもその前段階の評価や試作などを目的としたものである。

 ところで搭載されているのは500MHzながらAtomであり、メモリーも1GB搭載していることもあり、ここでは普通にLinuxが稼働する。それもあって、比較的組み込み用途に利用しやすいと考えたようだ。実際に利用されたか? というのはまた別の話であるが。

無駄に性能が高すぎて爆熱
なのに割り込み処理は8bit MCUより遅い

 さて、問題はこれに先立って発表され、2013年11月からリリースされたQuarkと、これを搭載したGalileoである。

上が初代Galileoボード、下が第2世代(2014年8月発表)である

 Quark SoCは400MHz駆動のCPUコアに512KBのSRAMとDDR3のメモリーコントローラー、PCIe、それといくつかの周辺機器を搭載した構成となる。

MCUならここにADC/DAC/コンパレーター/オペアンプ/タイマー/PWMなどが搭載されることになる。逆にUSBやイーサネットはともかくPCIeが入るのは変だし、割り込みがAPICというのもけっこう面倒くさい

 メモリーも内蔵しているので一応MCU(Micro Controller Unit)という分類にできなくもないのだが、実際にはメモリーマッピングの管理がMPU(Memory Protection Unit)ではなく仮想記憶に対応したMMU(Memory Management Unit)で、このためMMUに非対応なRTOS(Realtime OS)などはそのままでは動かないというあたりは、分類的にはMPU(Micro Processor Unit)に該当する。

 実際にDebianやYocto Linuxなどが動作しており、軽量なIoT向けOSを利用しようとすると、わりと使いにくいことになった。実際Quark SoCを搭載したGalileoボードではArduino互換のコードを実行できるのだが、Arduino Uno向けのLチカのコードが1KBだったのに対し、これをGalileo向けにビルドすると48KBにも膨れ上がった。

 Galileoでは、まずLinuxカーネルが動作し、その上で仮想的にArduinoのSketchをサポートするクライアントが動くという構造だったので、そもそも効率が悪い。

当時のProduct Briefより抜粋。Linuxカーネルが動作し、その上で仮想的にArduinoのSketchをサポートするクライアントが動く構造なので、I/Oが遅いわけである

 さてこのQuarkのCPUコアであるが、実はP54Cである。つまり第2世代のPentiumコアである。インテルとしては、P54コアは非常に使い勝手が良かったようで、前回のGNAの制御もそうだし、古いところではLarrabeeがやはりP54Cコアベースで構築されている。他にも研究用などでP54Cコアは多く使われている。ただ、MCUとして見た時には以下の欠点がある。

  • 無駄に性能が高すぎる
  • 割り込み応答性が悪い

 なんというか、テクニカルコースに出るレース車にドラッグレース用エンジンを積むようなものだ。実際普通(?)のArduinoは動作中にチップを触ってもほんのり温度が高いかな? という程度だが、Quarkは公称消費電力2.2Wにも関わらず、触れないくらい熱くなる。

 パッシブヒートシンクくらいでは連続運用には厳しく、アクティブファンが必要な温度で、こうなると組み込み用途ではいろいろ制限が出てくるし、消費電力も多い。そのくせインオーダーながらスーパースカラーのプロセッサーなので、割り込み処理は8bit MCUより遅い。したがって、消費電力を下げるために動作周波数を下げると、割り込み処理がさらに遅くなるという不都合がある。これでIoT機器を作れ、と言うのはなかなかしんどいものがある。

 ちなみにQuarkの派生型で、Silver ButteやMint Valleyといったコード名の製品(製品名はQuark D1000/D2000)もあり、こちらは32MHzまで動作周波数を落とした代わりに消費電力は25mWと超ローパワーになったが、同じ動作周波数の8bit MCUより遅かったため、やはり採用例を聞いたことがない。

 それでも会社のトップがぶち上げた以上、やるしかない。初代Galileoボードは、それはそれはひどいものだった。下の画像がGalileoボードの構成図である。

Quarkの周辺にあるADCやGPIO PWMが問題のもの

 なぜMCUにPCIeバスが要るんだ? という突っ込みはヤボかもしれないが、それよりも大問題なのはアナログ入出力やPWM出力といった、MCUではごく当たり前に利用される周辺回路がQuarkには統合されていないことだ。

 ではどうするか? まずアナログ出力は切り捨てた(!)。この段階でちょっと待てと思うのだが、アナログ入力については外付けになったADCをSPI経由でつなぎ、PWMはやはり外付けのPWMコントローラーをGPIOでつなぐという、おそろしく効率の悪い(そして原価コストが跳ね上がる)方法で実装した。

 この結果として、例えばアナログデータのサンプリング速度は、20MHz駆動のATmega328を搭載したArduino Unoの数十分の1というケースもあった。これはもう、根本的にMCUとして使うことを考えていないとしか言いようがない構成だった。

Quark誕生秘話
試作品をなんとなく製品化したものだった

 そもそもなぜQuarkが生まれたかと言う話だが、どうも「たまたま作ったものがそのまま製品にさせられてしまった」らしい。当時インテルはIoTの市場で出遅れていた。IoTといってもエンドノードからクラウドまで構成要素は多々あるが、インテルはクラウドやエッジにはなにかしら顧客の要求に応える製品を出せるにしても、エンドポイントに対しての製品がまるっきりなかった。

IDFの基調講演でのスライド。この直前のスライドでは“IoTに求められる要求”として超低消費電力・接続性・省サイズ・セキュリティーを挙げていた

 そんなときに、たまたまアリゾナで、P54コアを使っていろんなものを作ってみていた中の1つにQuarkがあったらしい。というか、実はQuarkそのものは、2010~2012年ごろに、Douglas L. Davis氏(2019年までIoT Solution Groupと、2017年からはAutomotive Groupの両方のトップを務めていた)が、当時の上司だったKrzanich氏と一緒に作ったものだったらしい。

 もちろんこれは目的があって作ったというよりは、P54コアでなにかできないかいろいろ試してみたうちの1つということらしい。ただ当時組み込み部門を率いていたTon Steenman氏には評価されず(冷静に考えれば正しい)、ところがKrzanich氏がCEOになってDavis氏が組み込み部門を統括することになったことで「とりあえず他にないし、いいやこれ出しちゃえ」みたいなノリで投入されたらしい。

 案の定ブチあげた物の、誰にも使ってもらえない状況が続いた。いや、これを使えと言われてもそりゃ困るよな、という代物である。冒頭に紹介したEdisonも、2013年のIDFの段階では、500MHz駆動のQuarkをベースに構築されていた。ただ性能が低いということになり、その後Atomベースに切り替わったという経緯がある。

 一応2014年8月には、もう少しI/O周りの速度を改良したGalileo Gen2ボードが発表になったが、根本的な問題は全然解決せず、しかも大型化したとあっては「誰が使うんだ?」状態はまったく変わらなかった。

改良を加えたQuark SEを投入
本腰を入れてIoTビジネスに参入かと思いきや……

 以上のようにQuarkは見事にコケたわけだが、だからといってインテルはIoT向けに製品を出せませんとは言えない。そこでQuarkをベースにもう少しなんとかしたのがQuark SEである。このQuark SEは、P54Cに加えて32MHz駆動のSynopsys ARC v2 DSPコアを内蔵しており、ArduinoではこのARCコアを利用してSketchを処理するようになった。

 加えてADCやコンパレーター、PWMやタイマーなどMCUで一般的に利用される周辺回路を搭載したことで、だいぶ使い勝手も良くなり、性能も向上した。ただこうなるとP54Cコアを搭載した理由がもうさっぱりわからない。ARCコアだけでいいのでは? という気がしなくもないのだが、P54Cを抜いたらそれはインテルのCPUでなくなってしまうのが嫌だったのかもしれない。

 Quark SEは2015年1月に開催されたCESにおける基調講演でCurieというモジュールとしてまず発表され、ついでArduino LLCと共同でArduino 101/Genuino 101というArduino Uno互換ボードが2015年10月に発表された

ボタンサイズのモジュール製品「Curie」

Arduino Uno互換ボードの「Genuino 101」。6軸加速度センサーやBluetoothのサポートなどもあって、非常に便利なボードだったのだが……

 Arduino 101/Genuino 101はかなり使い勝手の良いボードであり、やっとインテルは本腰を入れてIoTのビジネスに参入したのだな、と喜んだのもつかの間。2017年7月にインテルは突如Curieの生産終了を発表。これによりArduino 101/Genuino 101も生産終了となってしまった。

 これに先立ち、2017年6月にはGalileo/Galileo 2Edison、さらには2016年に投入されたEdisonの後継であるJouleまで生産終了になっている。

 プロセッサーそのもので言えば、QuarlやQuark SEは2019年7月で受注停止、2022年7月に出荷終了であるが、生産そのものは2019年1月に完了した格好だ。この直後にインテルはIoTグループのエンジニアを大量リストラしたと報じられている。

 この当時のインテルはKrzanich氏が会社をあらぬ方向に突進させていた最中であり、コストをかけてQuark SEを作ったものの売上の伸びは芳しくなく、「もうヤメ」で一気に方向転換したのだろうが、これに付き合わされた同社の組み込み向けパートナー企業はたまったものじゃない。

 これ以降、インテルはIoTの中でも、特にエンドノードに対応した製品は一切提供できていないが、仮にまたなにか作ったとしてもパートナー企業がそっぽを向くだろう。

 上層部の定見のなさと言うか、とりあえずあるもの出しましたという舐め切った商品設計が、Quarkを黒歴史入りさせた最大の要因だと筆者は考える。

■関連記事