SPRESENSE:マルチコア×超低消費電力、エッジAIの最有力を目指した新たなる挑戦。

2018年7月にソニーが発売したシングルボードコンピュータ(SBC)「SPRESENSE™」。ソニー製のスマートセンシングプロセッサCXD5602を中心に据えた本製品は、マルチコア構成のArm® Cortex®-M4Fによる高い演算性能と、緻密な回路設計による圧倒的な超低消費電力を特長とする。また、ハイレゾ音源に対応した録音・再生機能や、センサーとスマートに連携できる機能など、ペリフェラル(周辺機能)も充実している。ここでは、知られざるSpresenseの内部構造をはじめ、Spresenseが実際に採用されているアプリケーションや、AIとの連携について話を聞いた。

メインイメージ
集合写真
ソニーセミコンダクタソリューションズ株式会社 loTソリューション事業部 太田 義則 氏(左から3番目)
ソニーセミコンダクタソリューションズ株式会社 loTソリューション事業部 統括部長 仲野 研一 氏(左から3番目)
ソニーセミコンダクタソリューションズ株式会社 loTソリューション事業部 統括課長 小泉 貴義 氏(左から5番目)

生産現場の品質管理にも採用されるソニーの高性能マイコンボード

――Spresenseはどのような製品ですか?

太田:Spresenseは、Arm Cortex-M4Fを6コア搭載したシングルボードコンピュータです。マルチコアによる豊富な演算能力を備えていますので、本格的なエッジコンピューティングにご活用いただけます。高性能でありながら、電池でも駆動できる超低消費電力も製品の魅力です。

――特長を教えてください。

太田:まず、超低消費電力のマルチコアプロセッサが核となります。これを取り巻くペリフェラルとして、ハイレゾ音源(192kHz/24bit)対応のオーディオ再生機能、マルチマイク入力機能、カメラ機能、GPS機能などリッチなハードウェアが並んでいます。特にGPS機能は日本の「みちびき(準天頂衛星システム)」にも対応しており、正確な場所に加えて、絶対時刻も取得できます。

仲野:Spresenseの特徴は、「オープンプラットフォーム」であることです。ソースコードやリファレンス回路など、開発に必要なすべての技術情報はWeb上に公開されていますので、どなたでも簡単に開発を始めることができますし、いくらでも深掘りしてハイエンドなアプリケーション開発に挑戦することもできます。

――発売後の反響はいかがですか?

太田:発売後、予想もしていなかった分野の方々からも数多くの引き合いを頂いております。一例を挙げますと、FA系のお客様から、マルチマイク入力を故障予知・予知保全に使いたいとのお声がけをいただきました。生産ラインは1日でも止まると莫大な損害が発生しますので、故障を未然に防ぐシステムの導入は不可欠です。そこにSpresenseを使いたい、と。故障予知を実現する方式のひとつに「アコースティック・エミッション」という、音を解析して異常を捕らえる技術があり、Spresenseのハイレゾ録音に対応したマルチマイク入力がフィットしました。

――振動ではなく、音を使った故障予知は珍しいように思います。

太田:振動つまり加速度だけを使って故障予知するよりも、加速度と音を組み合わせて解析した方が予知精度を高めることができる、という論文があります。ソニーの工場もこの技術にはとても期待をしており、実際に故障しそうなベアリングを装置に入れて、Spresenseで音を解析、異常を予知できるかという研究を進めています。マルチ入力を活かして、どの方向の機械が故障しそうなのかを推論するAIの開発にも着手しています。

仲野:Spresenseはカメラ機能も持ち合わせていますので、異常がある箇所を撮影したい、といったニーズにも応えることができます。ハイレゾで録音できるデバイス自体少ないと思いますが、さらにマルチ入力にも対応していて、デバイス上で解析もできて、異常をカメラで撮影できるデバイスとなると、Spresense以外の候補はほぼ無いでしょう。

太田:他のソリューション、例えばCortex-A系を搭載したデバイスでも、工夫をすれば同じ機能を実現できるかもしれません。ですが、実際の現場で使おうとすると発熱が問題になります。他社が採用しているCortex-Aは高い演算性能を備えていますが、消費電力も大きいため、発熱により信頼性の担保が難しくなります。一方で、Spresenseは超低消費電力なので発熱もなく、高い信頼性を実現できます。電池やスーパーキャパシタでも駆動できますから、瞬停にも強いです。

全CPUの電源をOFFにできる超低消費電力を極めたハードウェア

――どのように超低消費電力を実現していますか?

小泉:Spresenseに搭載しているCXD5602は、超低消費電力を実現するため、チップ内部に4つの電源ドメインを持っています。電源ドメインとは、部分的に電力供給をON/OFFできる範囲のことです。CXD5602は、アプリケーションを実行する「Application Domain」、システムを管理する「System and IOP Domain」、接続されたセンサーを管理する「Sensor Domain」、GNSS測位演算を行う「GNSS Domain」に分かれていて、それぞれの電力供給を動的にON/OFFできます(図1)。わかりやすい例を挙げますと、アプリケーションでGNSSを利用しない場合には、GNSS Domainは電源から切り離され、消費電力がゼロになります。

図図1:Spresenseの核となるCXD5602は、各電源ドメインを動的にON/OFFできる超低消費電力志向の製品。

――Application DomainにはCPUであるCortex-M4Fがすべて含まれています。全CPUへの電力供給をOFFにすることもできるのですか?

小泉:可能です。この場合、CPUを起こす役割は、一般的なCPUが持つタイマーや外部割込みのほかに、Sensor DomainにあるSCU(Sensor Control Unit)が担当します。SCUは、Spresenseに接続されたすべてのセンサーをインテリジェントに監視し、必要なときだけCPUを起こすことのできるハードウェアです。

――インテリジェントな監視とはどういうことですか?

小泉:SCUは、CPUを介さずにI2C接続やSPI接続のセンサーから計測値を収集し、バッファに蓄えることができるハードウェアです。さらに、内蔵したプログラマブルな複数のIIRフィルタにより、SCUだけでセンサーデータを解析できます。例えば、SCUに加速度センサーを監視させれば、特定のモーションのみを検出することもできます。SCUを活用することで、CPUが本当に処理したいデータが揃っているときだけ、Application Domainに電力供給をONするという、超低消費電力なシステムを実現できます。

太田:CPUを使わずに計測値にフィルタを適用できますので、CPUが寝ている間にデータを整形、加工することができます。そのため、起こされたCPUは、ノイズ対策など余分な前処理なく、すぐに本質的な処理に着手し、すぐに寝ることができます。給電時間を短くできるわけです。センサーの値を単純に集める「センサーハブ」という技術は既に多くありますが、ここまでインテリジェントな機能はSCUだけでしょう。

――消費電力の概算値を教えてください。

小泉:ウェアラブルデバイスなどに利用されているモーションの検出を例にしますと、ほとんどの電源を切断し、SCUのみで加速度を監視している状態で100μW程度、モーションを検知して1つ目のコアに電源を供給した状態で500μW程度、さらに複雑な解析が必要な処理を行うと2mW程度です。ただし、これは負荷の低い処理の場合で、負荷が高くなると消費電力はあがりますが、それでも数十mW程度です。

太田:CPU動作電圧を変更することにより、より消費電力を絞ることもできます。初期設定は1.0Vですが、0.7Vまで下げることで、約71%*の電力を削減できます。

*CXD5602内のすべてのハードウェアが動作している場合の試算値

Spresense SDKを使ってマルチコア開発を極めよう

――Cortex-M系でありながらハイパフォーマンスを実現できるマルチコアについて教えてください。

小泉:Spresenseには6個のコアが搭載されていますが、最初はSupervisorコアのみが起動します。その後、タスクに合わせて、Supervisorコアが、周囲のWorkerコアを起こし、仕事を割り振り、性能を上げていきます。最初から各コアの役割が決まっていて、コアは決められたタスクにのみに従事するAMP(非対称型マルチプロセッシング)と呼ばれるアーキテクチャです。一般的なパソコンはSMP(対称型マルチプロセッシング)というアーキテクチャで、CPUのコアはそれぞれ暇なときに、好きな作業をしています。

――AMPのメリットはなんでしょう。

小泉:マルチコアのプログラムを頑張って書いても、実行時に複数のコアが1つのハードウェアを取り合ってしまうと、性能が発揮できません。AMPのアーキテクチャを採用することにより、I/Oを操作する担当するコア、画像処理を担当するコア、音声解析を担当するコア、といったようにコア毎の役割を決めることができますので、確実に高い演算性能を発揮することができます。

太田:コア同士でメモリを取り合わないよう、Spresenseのメインメモリ1.5MBは128KBのメモリタイル12枚から構成されています。みんな仲良く別々のタイルを使えます。もちろん、使われていないタイルの電源はきちんとOFFになります。

――どこから開発を始めたら良いでしょうか?

太田:Sony Developer Worldの「Spresense SDK開発ガイド」をご参照ください。マルチコアを制御するためのインタフェースとして「ASMPライブラリ」を提供しています。サンプルプログラムもGitHubにて公開しておりますので、身構えずに、チャレンジ頂けたら嬉しいです。

Neural Network Consoleでグラフィカルな組み込みAI開発を実現

――AIも開発できると聞きました。

仲野:Spresenseは、クラウド上でAIを開発できる「Neural Network Console」に対応しています。Neural Network Consoleは、AIにあまり馴れ親しんでいない方にも簡単に使っていただける、グラフィカルなユーザーインターフェース(UI)を備えた、AIの統合開発環境です。画像認識や音響解析などエッジコンピューティングに期待されている様々な機能を開発できます。

――開発したAIは、どのようにしてSpresense上で実行できるのでしょうか?

太田:Neural Network Console上で開発したAIは、ソフトウェアの機能としてSpresenseに取り込むことができます。まず、AIをSpresense用ファイルとして出力し、次に、Spresenseのアプリケーションプログラムと接続します。たったこれだけの手順で、AIを活用したアプリケーションを実現できます。また、AIの機能はSpresense上にすべてダウンロードされていますので、クラウドと接続することなく、オフライン環境でも実行できます。そのため、ネットワークが安定しない環境や、LPWAなど狭い通信路しか確保できない環境でもAIを活用できます。

仲野:現在、産業分野を中心に、ネットワークに繋ぎたくない、匿名性を確保したい、でもAIを取り入れたい、という声が高まっています。Spresenseの提供する「ネットワークを必要としないAIソリューション」は、そうしたご要望に応えることができます。もちろんネットワークにも接続することもできますので、エッジAIが最初の処理をして、クラウドAIがさらに解析する、といった階層的なAIアプリケーションも開発いただけます。

図図2:Neural Network Consoleを利用することにより、AIアプリケーションも開発できるSpresense。

――AIといえばTensorFlowやCaffeといったフレームワークが有名です。あえてNeural Nework Consoleという新しいツールと連携した理由を教えてください。

太田:TensorFlowやCaffeは、それぞれのプログラミングスタイルを十分理解していれば、強力なフレームワークになるでしょう。ですが、実際の開発に使うAIのコンポーネントは大方決まっていて、そこまでの柔軟性が求められることはあまりありません。Spresenseのユーザー、スピード感のある製品開発やPoC(Proof of Concept)をしたい方々には、AIがある程度パッケージ化されていて、簡単にカスタマイズできる開発環境をオススメしたいと考え、Neural Network Consoleと連携することにしました。自動的に最適なネットワークを検索する「構造自動探索機能」や、学習データとの誤差を表示するUIなどを提供しています。是非、お試しください。

――今後の展望について教えてください。

太田:開発ツールをさらに拡充したいと考えています。現在、多くのお客様がPoCの開発にArduino IDEを選択されていますが、今回紹介した特長を100%活かすには、2019年2月現在、Spresense SDKによる開発が必要です。Spresense SDKはやや敷居が高い、というご意見もいただいておりますので、マルチコアや超低消費電力といったSpresenseの魅力を、より簡単に使っていただける開発環境を準備していきます。

APS EYE'S

SoCのアーキテクチャをゼロから設計することにより、マルチコアによる高性能と超低消費電力を両立できる構造を実現したソニーのSpresense。ハードウェアだけでなく、ソフトウェア、開発ツール、アドオンボードも揃えた、こだわりのエッジコンピューティング製品だ。