エンベデッドシステムスペシャリスト暗記無料で始める

メモリマップドI/Oとは?めもりまっぷどあいおー

メモリマップドI/Oとは、主記憶と周辺デバイスに別々のアドレス空間を用意せず、一つの番地空間の一部をデバイスの制御レジスタへ割り当てる設計。デバイスの読み書きが普通のロード/ストア命令で済むので、専用の入出力命令を持たないプロセッサでも周辺を制御でき、C言語からはポインタや構造体としてそのまま扱える。

最終更新:2026-10-06

試験情報

エンベデッドシステムスペシャリスト試験の過去問では2回出題されています(2018年度〜2020年度)。

エンベデッドシステムスペシャリスト試験の頻出用語/午前II

別名:memory mapped I/O、MMIO

この語が出る過去問を解く →

背景

入出力専用の命令とアドレス空間を別に設ける方式では、命令セットが増え、コンパイラは特別扱いのために組込み関数やアセンブラの助けを必要とする。アドレス空間を1つにまとめれば、番地の一部を周辺回路に割り当てるだけで済み、アドレスデコードの回路も命令セットも単純になる。C言語からポインタで叩けるという性質は、組込みの開発効率をそのまま押し上げた。代償はアドレス空間を消費することと、最適化との衝突に自分で対処する必要があることである。

具体例

Arm Cortex-Mは0x4000_0000以降を周辺領域に割り当て、CMSISのヘッダがレジスタ群をvolatile修飾した構造体として定義している。volatileを付けないと、値が変わらないとみなしたコンパイラの最適化で読み書きが削除されたり順序が入れ替わったりする。

試験での引っ掛け

volatileは最適化の抑止であって、割込みやマルチコアに対する排他制御やアトミック性は保証しない。ここを混同した実装が実機で稀にしか起きない不具合を生む。専用命令を使うI/Oマップド方式(分離I/O方式)との対比、および書込み専用・読出しで状態がクリアされるレジスタの存在も押さえておく。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では2回出題(2018年度〜2020年度)
  • 分野:午前II
  • volatileは最適化の抑止であって、割込みやマルチコアに対する排他制御やアトミック性は保証しない。