デバイス・ボード

MPU(マイクロプロセッサ)

CPU中心の高性能チップ。外付けメモリやOSと組み合わせて使う。

概要

MPU(Microprocessor Unit:マイクロプロセッサユニット)は、演算処理能力を中心に設計された高性能な半導体チップです。マイコン(MCU)が周辺機能をチップ内に取り込んで自己完結した動作を実現するのに対し、MPUはCPUコアを中心に据え、外付けのDRAM・NORフラッシュ・NANDフラッシュ・各種コントローラと組み合わせることで高い処理能力を発揮します。

組み込み分野では「アプリケーションプロセッサ」と呼ばれることも多く、LinuxやAndroidなどのリッチOSを動作させるための基盤として使われます。スマートフォン・タブレット・カーナビ・産業用HMI(Human Machine Interface)・ネットワーク機器など、処理能力とソフトウェア資産が重要な用途で採用されます。

MPUはMMU(Memory Management Unit)を内蔵するものが多く、仮想メモリと保護機構によってOSが複数プロセスを安全に動作させることができます。これがMCUとの最大の違いの一つです。

歴史・背景

マイクロプロセッサの歴史は1971年のIntel 4004から始まります。4ビットの計算機向けでしたが、1972年には8ビットの8008、1974年には8080が登場し汎用コンピュータへの道を開きました。

1978年にはIntel 8086(16ビット)が登場し、IBM PCの採用によって爆発的に普及。1985年にIntel 80386(32ビット、MMU内蔵)が登場し、本格的なマルチタスクOSが実現しました。

組み込み向けMPUとしては、1980年代後半からMotorola 68000シリーズがワークステーション・プリンタ・ゲーム機に採用。1990年代にはMIPS・PowerPCがネットワーク機器・ゲーム機で活躍しました。

2000年代以降はARMアーキテクチャが組み込みMPUの主流となります。ARM Cortex-Aシリーズはスマートフォン・タブレットのアプリケーションプロセッサとして採用され、現在も進化を続けています。Apple A-series・Qualcomm Snapdragon・MediaTek Dimensityなどがその代表です。

産業用途ではNXP i.MXシリーズ・Texas Instruments AM(Sitara)シリーズ・Renesas RZシリーズなどが安定したサプライチェーンと長期サポートで支持されています。

技術仕様

CPUアーキテクチャ

組み込み向けMPUで主流のアーキテクチャ:

アーキテクチャ代表製品動作周波数特徴
ARM Cortex-A53RPi Zero 2W, NXP i.MX8〜1.5GHz低消費電力64ビット
ARM Cortex-A72Raspberry Pi 4〜1.8GHz高性能64ビット
ARM Cortex-A9Xilinx Zynq, NXP i.MX6〜1GHz実績豊富な32ビット
ARM Cortex-A55MediaTek, Renesas RZ/G2L〜1.2GHz効率コア
ARM Cortex-A76Raspberry Pi 5〜2.4GHz高性能最新世代
MIPSMT7688, AR9344〜580MHzネットワーク機器向け
RISC-VAllwinner D11GHzオープンISA

MMU(Memory Management Unit)

MPUの重要な特徴がMMUの内蔵です。MMUは以下の機能を提供します:

  • 仮想アドレス変換: 各プロセスに独立したメモリ空間を提供
  • メモリ保護: プロセス間・カーネル・ユーザー空間の分離
  • ページング: 物理メモリの断片化管理
  • スワップ: ディスクへのページアウト対応

これによりLinux上で複数プロセスが互いに干渉せず動作できます。

メモリインターフェース

MPUが接続する外部メモリの仕様:

LPDDR4:  最大4266MT/s(〜34Gbps)、低消費電力
DDR4:    最大3200MT/s(〜25Gbps)、高帯域
LPDDR5:  最大6400MT/s(〜51Gbps)、最新スマホ向け
DDR3L:   最大1600MT/s(〜12Gbps)、産業向けに実績多数

キャッシュ構成

レベル容量アクセス速度備考
L1 I/D$16〜64KB1〜4サイクルコアごとに独立
L2128KB〜1MB10〜20サイクルコア共有の場合も
L31MB〜8MB30〜50サイクルマルチコア共有

動作原理

MPUの動作はMMUとキャッシュを中心に理解できます:

  1. ブート: ブートROM→ブートローダー(U-Boot等)→カーネルロードの順で起動
  2. MMU有効化: カーネルがページテーブルを設定してMMUを有効化
  3. プロセス管理: OSのスケジューラが各プロセスにCPU時間を割り当て
  4. 仮想メモリ: 各プロセスは独自の仮想アドレス空間でメモリにアクセス
  5. キャッシュ制御: L1/L2/L3キャッシュがDRAMアクセスを高速化
// Linux上でのMMAPを使ったメモリマップI/O例
#include <sys/mman.h>
#include <fcntl.h>

int fd = open("/dev/mem", O_RDWR | O_SYNC);
volatile uint32_t *gpio = mmap(NULL, 0x1000,
    PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x3F200000);
gpio[7] = (1 << 4);  // GPIO出力をHighに設定
munmap((void*)gpio, 0x1000);

用途・ユースケース

MPUが選ばれる代表的な用途:

  • 産業用HMI: タッチパネル付きの機械操作パネル。Qtなどのリッチなグラフィックスを必要とする
  • カーナビ・IVI: 地図表示・マルチメディア再生・通信処理をLinux上で実行
  • 産業用ゲートウェイ: 複数プロトコル変換・OPC-UAMQTTなどを同時処理
  • 医療機器: 画像診断・患者モニタリングシステム
  • ネットワーク機器: ルーター・スイッチ・アクセスポイント
  • AIエッジデバイス: NVIDIA JetsonのようなAI推論プラットフォーム

実装・開発のポイント

ボード設計上の注意点

MPUを使った基板設計では以下が重要です:

  • DDR配線: 等長配線・インピーダンス整合(50〜60Ω)が必須。ジッターが大きいと起動しない
  • 電源設計: コアVDD・IOVDDなど複数電源のシーケンス管理。PMICの活用
  • EMC対策: 高速DDRバスからの放射ノイズ対策。ベタGNDと適切なデカップリング

ソフトウェアスタック

[アプリケーション層]  Qt / Python / Java / Node.js
[ミドルウェア層]      OpenGL ES / GStreamer / D-Bus
[OS層]               Linux Kernel / Android
[ブートローダー層]    U-Boot / UEFI
[ハードウェア層]      MPU + DDR + eMMC + ペリフェラル

Yocto ProjectBuildrootを使ってカスタムLinuxディストリビューションを構築し、最小限のフットプリントで製品に搭載するのが一般的です。

デバイスツリー

Linuxではデバイスツリー(Device Tree)でハードウェア構成を記述します:

/ {
    memory@0 {
        device_type = "memory";
        reg = <0x0 0x80000000 0x0 0x40000000>; /* 1GB LPDDR4 */
    };

    uart0: serial@40000000 {
        compatible = "vendor,uart";
        reg = <0x0 0x40000000 0x0 0x1000>;
        clock-frequency = <48000000>;
        status = "okay";
    };
};

他技術との比較

MPU vs MCU

項目MPUMCU
処理能力高い(GHz級)中〜低(MHz〜数百MHz)
内蔵メモリなし〜少量あり(フラッシュ・RAM内蔵)
外部DDR必須不要(内蔵SRAM使用)
OSLinux / Androidベアメタル / RTOS
起動時間数秒〜数十秒数ms〜数百ms
消費電力中〜高低い
単価高い(数百円〜数千円)安い(数十円〜)

MPU vs SoC

SoC(System on Chip)はMPUをベースにGPU・DSP・モデム・ISP(画像処理プロセッサ)などをワンチップに統合したものです。スマートフォン向けSoCは最も高機能ですが、産業用途では単機能のMPUが部品の長期調達・コスト・シンプルな設計の面から選ばれることも多くあります。

関連用語

参考リンク