組み込みデバイスにマルチコア・アーキテクチャを採用することにより、エッジコンピューティングに必要とされる様々な処理を『平均的』に高速化できることをこれまでに紹介してきました。一方で、組み込みデバイス用のSoCには「アクセラレータ(GPU・NPU)」や「DSP(Digital-Signal-Processor)」といった特定のワークロードに最適化された演算器を内蔵した製品もあります。DSPは処理対象となる信号を高スループット・低レイテンシで解析や加工ができるハードウェアです。
そこで、今回の初心者講座「マルチコア編」はアプリケーションを構成する機能を、あえてCPUコア上で実行せず、SoC内に搭載された専用演算器(DSP)へ処理を依頼する『オフローディング技術』について解説いたします。オフローディング技術を活用することにより、CPUコアの使用率を低減できるため、既存のプログラムの並列度を増やして高速化する、新しいタスクの並列実行を計画する、CPUコアの電力消費を抑制し、バッテリーの長寿命化を実現可能です。
SPRESENSEのGNSS Domain(ハードウェア・ブロック)
本記事ではオフローディング技術の例題としてSPRESENSEのCXD5602/CXD5247 SoCに内蔵されているGNSS Domain(Global Navigation Satellite System用のハードウェア・ブロック:GPS衛星などに対応)を取り挙げます。
SPRESENSEではMain Board上にGNSSアンテナが搭載されているため(図1)、外付けアンテナを購入することなくGNSS機能を利用可能です。もちろん外部のパッシブアンテナ、アクティブアンテナを接続することも可能です。なお、GNSSを扱うアプリケーションを開発する際は、複数の人工衛星からの電波を受信できる見通しが良い場所、またビル等の構造物による電波の反射を受けにくい場所を選択しましょう。
SPRESENSEハードウェアドキュメント|GNSS用外部アンテナの使用方法
目次
オフローディング技術
オフローディング技術とは、CPUリソースを有効活用するために、CPU上で実現されていた機能をペリフェラルのコントローラへ依頼する技術です(図2)。
一例を挙げると、ネットワーク・パケットのチェックサム自動生成/検証機能があります。ネットワーク上でパケットが破損したかを確認するためのチェックサムの生成を、データを生成するCPUではなく、送信・受信を担当するNIC(Network-Interface-Card)へ依頼する事によりCPUリソースの使用率を低減。CPUリソースを他の機能が活用できるようにする機能です。
DSP(Digital-Signal-Processor)
続いて、DSPについて紹介いたします。
DSPの登場と進歩
DSPは、音声信号処理に特化した処理装置として登場し、続いて様々な用途向けのDSPが誕生しました。現在は、音声を扱うアプリケーションに限らず、画像解析・通信制御など多種多様のアプリケーションに向けたDSPが登場しています。
登場早期よりDSPは、信号解析や音声加工に必要な乗算処理やベクトル演算処理に特化した演算器を搭載しています。これらの演算器は、信号の変調、信号の増幅、フィルタリングなどに活用されています(図3)。
その後、映像処理に対応した「グラフィックエンジン」や暗号化・復号処理などに採用されている「クリプトエンジン」といったDSPが登場。こうしたDSPを活用することにより、表示系や通信系など繰り返し処理が求められるワークロードによるメインの演算ユニット(システムの中心となるマルチコアCPU)の占有を防ぐことができます。SPRESENSE内部には、GNSS衛星からの電波を入力として、時刻を算出する/緯度経度を算出するアルゴリズムを適用し、各情報を出力するDSPがGNSS Domain内に搭載されています(図4)。
DSPを構成するハードウェア
DSPは浮動小数点数の乗算・除算や、頻出する数値処理用の演算ユニット、演算結果を格納するローカルメモリから構成されています。従来のDSPは、専用に設計されたハードウェア・ロジックにより構築されていました。
CPUコアにより実装されたDSP
Arm Cortex-M4(FPU搭載)が登場するとゼロからDSPのハードウェアを設計しなくとも、FPUによる高速な浮動小数点数の演算・ベクトル演算と、Armのアーキテクチャの特長である低消費電力を活かしたCPUを、DSPの実装に流用できるようになりました。これにより、ハードウェアや専用ファームウェアの開発工数を低減しつつ、ソフトウェアによる高い柔軟性、リリース後のアップデートによる高い拡張性・保守性を実現できるペリフェラルが登場。SPRESENSEのGNSS DomainもCortex-M4を内蔵しています。
SPRESENSEのGNSS Domainの概要
SPRESENSEのGNSS Donainは、GPS/GLONASS/QZSSに対応し、専用のGNSS受信回路から得た人工衛星の情報を取得、到達する時刻情報を活用し人工衛生のズレを推測、最後に緯度経度情報と時刻情報を推定する機能ブロックです。位置推定アルゴリズムを繰り返し実行するための演算器としてDSP(Cortex-M4)が搭載されています。
すべてのアルゴリズムはソフトウェアで実装されているため、アップデートにより位置推定アルゴリズムを常に最新の状態に維持できます。SPRESENSEでは、DSP上で実行されるアルゴリズムを記述したソフトウェアをブートローダのパッケージに同梱しています。私たちはアルゴリズムを実装することなく、高精度な緯度経度情報を入手することができます。
QZSS(みちびき)にも対応
GPSやGLONASSへの対応はもちろん、準天頂衛星システム「みちびき」(QZSS:2018年に本格稼働)にも対応しています。QZSSは、日本の上空を航行する4基の人工衛星(図6)を活用し位置を算出することから、日本国内の位置を高精度に推定可能です。詳細は「みちびき」に関する技術情をご参照ください。
技術情報|みちびき(準天頂衛星システム:QZSS)公式サイト – 内閣府
QZSSをはじめとするGNSSの技術的な難しさ
GNSSは複数の静止衛星から発信された時刻情報を統合し、時刻の差分から地球上の位置を推定するシステムです。GNSSを構成する人工衛星は静止軌道上にありますが、地球や月からの引力、軌道の真円率や地球の真円率、地球の衛星軌道上に留まるための速度制御により誤差が生じます。そのため、GNSSにより緯度経度情報を高精度に推定しようとすると、これらの誤差をすべて考慮した演算が必要となり、CPUリソースが大量に消費され、他の機能の実行を阻害してしまうという課題がありました。
SPRESENSEは、GNSS DomainにCortex-M4を封入する事により高精度でありながら、最新の人工衛星QZSSにも対応、SoCの核となるマルチコアCPUに負荷をかけることなく位置推定を実現できます。
SPRESENSEのGNSS機能を活用する
それでは、SPRESENSEのGNSS機能を実際に使ってみましょう。
SPRESENSE SDKには、GNSSサンプルアプリケーションが含まれています。GNSSサンプルアプリケーションは、GNSS Domainを制御し、GNSSからの電波をGNSS DSPで解析。時刻情報(UTC:日本時間から9時間前)と緯度経度情報をGNSS Domainから取得し表示します。
ビルド手順と実行方法
ビルド方法
図7の手順により、GNSSサンプルアプリケーションを実行できます。詳細な手順は「SPRESENSE SDKチュートリアル:GNSSサンプルアプリケーション」をご参照ください。
- Visual Studio CodeでSPRESENSE SDKのワークスペースを開く。
- 「SPRESENSE:カーネルコンフィグ」を選択する。
- 「新規作成」から「release」を選択し、保存をクリックする。
- 「SPRESENSE:カーネルコンフィグ」を閉じる。
- 「SPRESENSE:SDKコンフィグ」を選択する。
- 「新規作成」から「Examples」を選択し「examples/gnss」をクリック。
- 「保存」をクリックする。
- 「SPRESENSE:SDKコンフィグ」を閉じる。
- 「SPRESENSE:カーネルのビルド」を実行。
- 「SPRESENSE:アプリケーションのビルド」を実行。
- 「SPRESENSE:ビルドと書き込み」を実行。
- シリアルターミナル起動後、gnssコマンドを実行する。
実行結果
gnssコマンドを実行すると、GNSS Domainが初期化され、1つ以上の衛星から電波を受信できると時刻が、複数の衛星からの電波を受信できると緯度経度情報が出力されます(図8)。
GNSSサンプルアプリケーションのソースコードの概要
本記事の前半で紹介したように、SPRESENSEではGNSSを扱う場合であっても衛星からの時刻をCPUで演算する必要がないため、CPUリソースを大きく消費することはありません。SPRESENSE SDK(v1.5.0)に含まれているGNSSサンプルアプリケーションのソースコード「spresense/examples/gnss」の概要を以下に示します。
- L285:GNSS Domainのハードウェアへのアクセス権をOSから取得する。
- L294:イベント発生時のシグナルを設定する(非同期制御用)。
- L320:GNSSが利用する衛星の情報やパラメータを設定する。
- L236:GPS/GLONASSを利用して緯度経度情報を算出するよう設定する。
- L335:GNSS Domainに処理開始を指示する。
- L360:周期的にGNSS Domainから時刻情報と緯度経度情報を収集する。
ビジネス領域で求められるGNSS+IMUを活用した高精度な緯度経度推定
GNSSからの緯度経度情報をパッシブ型のセンサーにより補正することにより、さらに高精度の位置情報を生成することができます。
連携させるパッシブ型のセンサーの一例を挙げると、オートモーティブや航空・宇宙産業に活用されるIMU(Inertial Measurement Unit)があります。IMUは、計測軸を一致させた3軸加速度センサーと3軸ジャイロセンサーを中心に、3軸磁界センサー、大気圧センサーを統合し、さらに熱ノイズを補償するための温度センサーを内蔵した計測ユニットです(統合されているセンサー数からN自由度(DoF)のIMUと表現します)。
IMUは自身に発生した物理現象(加速度や回転角速度)のみを計測するため、外乱を受けることなくGNSSの補正に必要なデータを収集することができます。オートモーティブでは、GNSSからの電波が届かないトンネル内や、高速道路の高架下を走行する際の位置推定にIMUを活用しています。
GNSS特集「3分でわかるGNSS(全世界測位システム)のお話」
SPRESENSEに接続できるIMU
SPRESENSE開発環境では、Bosch社 BMI160がSPRESENSE Add-On Boardとして提供されています。開発しているアプリケーションやサービスの要件にあわせて、導入をご検討いただけます。
まとめ
GNSSは、ウェアラブルデバイスへの搭載をはじめ、建設用重機の管理や、物流を支える船舶や車両のトラッキングなど、身近な生活シーンから産業分野に至るまで様々なIoTサービスに不可欠な機能です。SPRESENSEは、GNSSを活用しながらCPUリソースを他の機能のために確保できることや、GPS/GLONASSに加えてQZSSにも対応。高い測位精度を活用したグローバルなIoTサービスを実現可能です。
SONY SPRESENSE
SPRESENSEは、Arm Cortex-M4コア(FPU機能搭載)を6コア搭載したシングルボードコンピュータです。マルチコアによる豊富な演算能力をはじめ、魅力的なペリフェラルを多数搭載しながら、電池のみでも駆動できる超低消費電力な製品です。本格的なエッジコンピューティングを是非ご体験ください。システムの試作はもちろん、PoC、製品化にもご活用いただけます。
開発者向けサイトを見る Switch-Scienceで購入する
APS学習ボード(SPRESENSE™ Extension Board用)
APS学習ボード(SPRESENSE™ Extension Board用)は、初心者講座の内容をはじめ、SPRESENSE SDKの提供するオーディオ入力機能やLCDドライバをはじめとする各種機能を、回路設計をすることなく簡単にお試しいただけるよう開発したAPSオリジナルの評価基板です。Web記事と併せてお楽しみください。
取扱説明書|APS学習ボード Switch-Scienceで購入する(ボード単体)
Switch-Scienceで購入する(部品キット)
こちらも是非
“もっと見る” マルチコア|SPRESENSE編
SPRESENSE×Neural Network Console:第4回|推論モデルを最適化し、エッジAIによるオリジナルの音声識別システムを構築する
今回の初心者講座では、SPRESENSEの「ハイレゾオーディオ入力」と「DNNRT機能」により「Neural Network Console」で生成したディープニューラルネットワーク(DNN)の推論モデルを統合。エッジ単体で完結するオリジナルの音声識別システムを構築する技法を解説いたします。
SPRESENSE×Neural Network Console:第3回|オーディオ解析に必要な学習用データを採取し、PC上で学習・推論を実行する
今回の初心者講座では、SPRESENSEに搭載されたハイレゾオーディオ入力を活用し、環境音を録音し、ディープニューラルネットワークによる音声分類に不可欠な学習用データと検証用データを生成する方法について解説します。また、PC上で動作するNeural Network Consoleによって生成した推論モデルをエッジ・デバイスへ統合するために解決すべき課題を紹介します。
SPRESENSE×Neural Network Console:第2回|異常検知に活用できるニューラルネットワークで波形の扱い方を学ぶ
SPRESENSEのDNNRT機能が扱うことのできるデータは画像だけでなく、産業分野を中心に人気が高まっている「異常検知・故障予知」に活用できる加速度センサーや大気圧センサーなどから収集した波形データも解析することができます。さらにSPRESENSEに内蔵されたハイレゾオーディオ録音機能も周辺環境を可聴域の波形データとして記録することができる優れたセンサーとして利用可能です。そこで、今回の初心者講座では、まず簡単な波形データの解析方法を例に、DNNRT機能から波形データを扱うシステムの構築方法について解説。DNNRT機能を活用した製品開発に必要となる技術を紹介いたします。