組み込み開発徒然日記2 プロセッサーやCPU、マイコンとは
はじめに
組み込みエンジニアとして働く中で、点と点を線、面にしようと思って始めた本シリーズですが、今回はプロセッサーに関して焦点を当てたいと思います。
こちらに焦点を当てようときっかけは、私より後にチームにジョインされた方から、
Shizen Boxってマイコンなんですか?と質問いただいたことがあり、
当時明確に回答することができなかったことです。
当時はマイコンという単語自体は知っているが、マイコンが具体的に何を指すのかはあまり理解しておらず回答に窮してしまいました。
マイコン自体はある程度耳にするが、マイクロプロセッサーとの違いは何?という方や
そもそもCPUとプロセッサは何が違うのだろうか?という方に読んでいただければと思います。
深堀していくと、膨大になってしまうので、まずは関連する用語としてどのようなものがあり、それぞれがどのように違うかをなんとなくわかることを目的とします。
コンピューターを構成する装置
コンピューターを構成する装置としては、5大装置として以下が通常挙げられます。
本記事では、以下のうち記憶装置、演算装置、制御装置に関わる部分に着目します。
| 装置名 | 主な役割 | 具体例 |
|---|---|---|
| 入力装置 | ユーザーからの入力を受け取る | キーボード、マウス |
| 出力装置 | ユーザーに結果等を渡す | モニター、スピーカー |
| 記憶装置 | 一時的、長期的にデータを保持する | 主記憶装置:メモリ = アクセスは早いが電源断で消失する 補助記憶装置 : SSD = アクセスは遅いが電源を切っても保持される |
| 演算装置 | 実際に計算、処理などを実施する | CPU, GPU |
| 制御装置 | 上記各種装置との通信や命令などを制御する | CPU |
そもそもプロセッサーとは?
プロセッサーと聞くと何をイメージするでしょうか?
CPUと同義ではないかと思われる方もいると思います。
プロセッサーとは、演算処理などを行う電子回路のことを広く指すものです。
比較的名前を聞くことがあるものを挙げると、以下のようなものがプロセッサーに含まれます。
下表のとおり、CPU = プロセッサーではなく、厳密にはあくまでプロセッサーの一つを担うものがCPUとなります。
| 名称 | 用途 |
|---|---|
| CPU(Central Processing Unit) | コンピューター全体の制御や演算を行うプロセッサー |
| GPU(Graphics Processing Unit) | 画像処理に特化したプロセッサー 並列計算が得意なので、AIなどでも重要視される |
| NPU(Neural Processing Unit) | AIに特化したプロセッサー |
マイコン(MCU)、マイクロプロセッサー(MPU)
ここではプロセッサーを調べると、よく出会うマイコンやマイクロプロセッサーとは何なのかに関して説明したいと思います。
そもそもマイコンとは何の略なのでしょうか?
きちんとこのあたりを調べる前はマイクロコンピューターだと思っておりました。
確かに、1976年に発売されたNEC製のTK-80はマイクロコンピューターのことをマイコンと読んでおり、
同時期に発売されていた月刊誌もマイクロコンピューターのことをマイコンと読んでいたようです。
ただし、現代におけるマイコンは多くの場合でマイクロコントローラー=MCU(Micro Controller Unit)を指します。
MCUは一つのチップ上に記憶装置であるメモリや、入力装置、出力装置と接続するためのI/O回路を搭載しています。
一方マイクロプロセッサー(MPU)は、CPUと同義で使われる場面も多く、メモリやI/O回路などは搭載しない制御装置、演算装置部だけを指します。
現代では、メモリなどを搭載しているMPUも出てきているようなので、他の点でMCUと比較すると、
MPUの方が高価で処理性能が高い、MCUの方が処理性能としては劣るが安価という特徴が挙げられます。
| MCU(マイコン) | MPU(マイクロプロセッサー) | |
|---|---|---|
| 価格 | 安い | 高い |
| 処理性能 | 低い | 高い |
| 消費電力 | 小さい | 大きい |
| 主な用途 | 家電の制御装置など | パソコンなどにて汎用OSを動作させる |
| 特徴 | CPUに加え、メモリやI/O回路も搭載する | メモリやI/O回路は外部 |
これらはArm社が設計するArmアーキテクチャのCortexファミリのうち3つの主要なファミリである、
Cortex-Aファミリ、Cortex-Rファミリ、Cortex-Mファミリにて代表させることが可能です。
| Cortex-Aファミリ | Cortex-Rファミリ | Cortex-Mファミリ | |
|---|---|---|---|
| 特徴 | 高性能 汎用OSも動作する |
Cortex-AファミリとCortex-Mファミリの中間に位置し リアルタイムOSを搭載可能 |
省電力 性能は控えめ |
| 用例 | スマホ、PC等上で汎用OSを動作させて 高度な処理を実行させる |
リアルタイムOSを搭載し 自動車制御などに使用される |
IoT機器や、家電などにおいて制御を実施 |
真偽のほどは定かではありませんが、上記3ファミリはそれぞれArm社の名前を冠し、
機能もそれぞれ以下のように名前と対応されるという話も聞きました。
真偽のほどはおいておいて、迷った際などはこちらを思い出すとわかりやすいかなと思っております。
- Cortex-Aファミリ:アプリケーションプロセッサー向け(=Application Processor)
- Cortex-Rファミリ:リアルタイムOS向け(=Real time OS)
- Cortex-Mファミリ:マイコン向け(=Micro Controller)
結び:結局Shizen Boxはマイコンだったのか?
弊社HPにも記載の通り、Shizen Box 1 Industrialはハードウェアとして、アットマークテクノ社製Armadillo-IoT G3を使用しています。
Armadillo-IoT G3はNXP製SoC「i.MX7」を採用しており、Arm社のCortex-Aファミリに属するCortex-A7コアを搭載しています。
よってマイコン(=MCU)より高性能なSoC(i.MX7)を搭載した、高機能なデバイスでしたということが結論となります。
上記のSoCとはSystem on a Chipの略称であり、前述のMPUやGPUなどに加え、I/O回路等、通信モデム等を一つのチップ上に搭載した半導体デバイスです。
1つのチップ上にI/O回路も搭載とみると、MCUでは?と思われるかもしれませんが、一般的にはMPU相当の高性能CPUコアを搭載し、OSを動作させられる点がMCUとの主な違いです。
現時点ではSoCとして搭載していなくてはいけないものの明確な定義づけはされていないようです。
基本的にはエスオーシーと読みます。
スマホの比較記事などではこのSoCがプロセッサーと同義で使われていることもありますが、厳密には上記のように単純なプロセッサーだけではなく、多くの周辺機能も搭載したデバイスとなっています。
複数の機能を一つのチップ上で実現でき、デバイスの小型化にも寄与が大きいものとなっています。