組み込みボードを見てみると、中央に大きなICがあり、その周囲にメモリ、電源回路、コネクタが配置されています。構成は比較的シンプルでも、Linuxを起動し、タッチパネルを動かし、動画を再生しながら産業機器と通信できます。その中心となるのが、SoCと呼ばれる半導体です。

SoCの役割を理解すると、製品の仕様書も読みやすくなります。CPUのコア数が同じなのに動作が違う理由や、コネクタが付いていても目的の機能を使えない理由が見えてきます。ソフトウェア開発者にとっても、ハードウェアの制約を把握するために役立つ知識です。

 

SoCには何が入っているのか

SoCはSystem on Chipの略で、プロセッサや周辺機能を一つの集積回路にまとめたものです。ただし、すべてのSoCが同じ構成というわけではありません。電池で動く無線センサーと、画面を備えた決済端末では、必要な機能も消費電力の条件も異なります。

LinuxやAndroidを動かすアプリケーション向けSoCには、CPUコア、GPU、メモリコントローラ、ディスプレイコントローラ、動画処理回路、各種通信インターフェースなどが組み込まれています。一方、小型の無線SoCでは、マイコンコア、SRAM、タイマー、無線回路を中心に構成されることがあります。

ここで注意したいのは、「System」という名前でも、製品に必要な部品がすべてチップ内に収まっているわけではない点です。外付けのRAM、フラッシュメモリ、電源IC、発振器、インターフェース用の部品が必要な製品も多くあります。

仕様書に機能名が書かれていても、それだけで外部機器へ直接接続できるとは限りません。ブロック図を確認し、チップに内蔵されている部分と、基板上に追加する部分を分けて考える必要があります。

CPU、SoC、MCU、SBCは何が違うのか

これらの言葉は同じ製品紹介の中に登場しますが、指している対象が異なります。

用語 意味 設計上の位置付け
CPU 命令を実行する中央処理装置 計算やプログラムの実行を担当する処理部分
SoC 処理回路と各種システム機能を統合したチップ 製品の主要機能を支える半導体
MCU プロセッサ、メモリ、周辺回路を備えたマイクロコントローラ 機器制御や小規模な組み込み処理に使われるIC
SBC コンピュータの主要機能を一枚にまとめた基板 SoCやメモリ、電源回路などを実装したボード

これらは完全に独立した分類ではありません。マイクロコントローラも、構成によってはSoCと呼べます。例えばESP32は、プロセッサ、メモリ、周辺回路、無線機能を統合しています。

SBCは、そのチップを使える状態にした基板です。SoCの周囲にメモリや電源回路を配置し、USBやネットワークなどの接続口を設けます。同じSoCを使用していても、搭載メモリ、引き出されている信号、電源設計が違えば、SBCとして使える機能も変わります。

性能はCPUだけでは決まらない

CPUは、アプリケーションの処理、OSの動作、一般的な計算を担当します。性能には動作周波数だけでなく、コアの設計、キャッシュ容量、メモリ帯域なども関係します。

一方、SoC内には特定の処理を担当する回路もあります。GPUは描画や対応する並列演算を処理し、動画デコーダは対応形式の圧縮映像を展開します。ISPはカメラからの画像データを処理し、NPUは対応するニューラルネットワークの演算を高速化します。

ただし、専用回路が内蔵されていることと、アプリケーションから利用できることは別です。動画再生ソフトがハードウェアデコーダを使わず、CPUでデコードしていれば、仕様書上は再生可能な動画でも処理が追い付かない場合があります。

NPUについても同様です。演算性能の数値が大きくても、使用するモデルの演算子に対応していなければ、その性能を十分に使えません。モデル変換や実行環境の対応状況まで確認する必要があります。

評価では、実際に使用するOS、ライブラリ、アプリケーションを組み合わせて動かすことが大切です。別の処理経路を使うベンチマークだけでは、製品としての動作を判断できません。

インターフェースは同時使用の条件まで確認する

HDMI、MIPI DSI、Ethernet、USB、PCIeといった機能が並んでいると、拡張性の高いSoCに見えます。しかし、そのすべてを同時に使用できるとは限りません。

一つのピンに複数の機能が割り当てられている場合や、高速インターフェース同士で物理レーンを共有する場合があります。ディスプレイ出力も、複数の端子が同じ表示処理経路に接続されていれば、画面ごとに異なる映像を出せないことがあります。

例えば、二つの画面に別々の情報を表示する端末を考えてみます。必要なのは二つのコネクタだけではありません。独立した表示経路、適切な信号ルーティング、各画面に対応する表示タイミング、そして正常に動作するドライバが必要です。

Ethernetにも似た注意点があります。SoCにEthernet MACが内蔵されていても、外付けのPHYやトランス、コネクタが必要になることがあります。機能一覧を読むだけでなく、SoCから外部端子までの信号経路を確認すると、実装に必要な部品が見えてきます。

メモリとストレージが使い勝手を左右する

RAMは実行中のプログラムや作業データを保持し、フラッシュストレージはOS、アプリケーション、設定、保存ファイルなどを保持します。両者は役割が異なり、ストレージ容量を増やしてもRAM不足をそのまま解決できるわけではありません。

RAMが不足すると、アプリケーションが終了したり、スワップが有効な環境ではデータの退避によって応答が遅くなったりします。ストレージが遅ければ、起動やソフトウェア更新に時間がかかります。また、CPU、GPU、映像処理回路などが同時にメモリへアクセスすると、帯域が処理の制約になる場合もあります。

画面に同じようなボタンや数値を表示する製品でも、軽量な専用UIとブラウザベースのアプリケーションでは、必要なメモリ容量が大きく異なります。画面の見た目だけで判断せず、実際のソフトウェアで使用量を測定すべきです。

ログの保存や更新処理、将来の機能追加にも余裕が必要です。試作品がぎりぎり動く容量では、量産後の保守が難しくなります。

ソフトウェアサポートが開発の進み方を決める

BSP、つまりBoard Support Packageは、OSを対象のハードウェアで動作させるためのソフトウェア群です。プラットフォームによって内容は異なりますが、ブートローダ、カーネルの対応コード、ドライバ、設定ファイル、関連ライブラリなどが含まれます。

Linuxの起動画面が表示されただけでは、製品として必要な機能がそろったとはいえません。実際には、GPUによる描画、カメラ入力、スリープからの復帰、音声出力の切り替え、セキュアブート、更新失敗時の復旧などが必要になることがあります。

提供されるソフトウェアで何が動作するのか、どの機能がベンダー固有の部品に依存するのかを確認してください。セキュリティ修正の提供方法や、製品の使用期間にわたって保守できるかどうかも、選定に関わります。

評価用イメージが動くことは良い出発点です。そこから製品開発を続けるには、ビルドを再現できる環境、資料、継続的な更新手段が必要になります。

消費電力と温度は実機条件で評価する

SoCの消費電力は、待機中と高負荷時で変化します。電力管理機能は動作周波数を変更したり、使っていない回路を停止したりして消費電力を抑えます。

温度も継続的な性能に影響します。机の上では問題なく動いていたボードが、密閉筐体に入ると熱を逃がせず、温度保護によって動作周波数を下げることがあります。短時間の測定だけでは、この変化を見落としやすくなります。

予定している電源、放熱構造、筐体、アプリケーションを使って試験してください。ディスプレイのバックライトや無線回路など、周辺部品の消費電力も含めて評価する必要があります。

製品の条件を整理してからSoCを選ぶ

候補を比較する前に、必要なインターフェース、OS、処理内容、起動時間、動作温度、保守期間を書き出しておくと、確認すべき点が明確になります。その条件を、量産構成に近いハードウェアで一つずつ検証します。

判断の中心になるのは、必要なアプリケーションが電力とコストの範囲内で安定して動くかどうかです。CPUのコア数は、その判断材料の一つにすぎません。ドライバ、メモリ、基板設計、ソフトウェアの保守性まで確認することで、製品に適したSoCを選びやすくなります。