ユーザから見たIIMPカーネル概説 ――組み込み分野でもソフトウェア部品を再利用する時代に
IIMPカーネルでは,できる限り小さいオーバヘッドでメモリ保護機能を実現するために,次のような手法を採用しています.
1)物理アドレス空間におけるメモリ保護を前提とし,アドレス変換を必要としない仕様にする
論理アドレスと物理アドレスを一致させることが基本ですが,実装定義で論理アドレスと物理アドレスの間に何らかの変換を行ってもかまわないことにしています.
2)システム構築時にあらかじめ得られる(=静的な)構成情報を最大限に活用し,メモリ配置の最適化を行う
IIMPカーネルでは,これをコンフィグレータによって実現しています(詳しくは後述する).システム構築時の静的な情報を活用するのは組み込みシステムならではのくふうです.
こういった方針により,オーバヘッドをどれくらい削減できるかは,実際のマイクロプロセッサに実装されているメモリ保護のためのハードウェア(MMU:memory management unitなど)の機能に依存します.そこでIIMPプロジェクトでは,典型的なメモリ保護機能を有する3種類のプロセッサをターゲットとしてIIMPカーネルを開発しました.RISCタイプのMMU(注3)を持つ日立製作所のSH-3,CISCタイプのMMU(注4)を持つ米国Intel社のPentium,メモリ保護ユニット(MPU:memory protection unit)を持つ英国ARM社のARM940Tです.
公開しているソース・コードから,どのように各プロセッサのメモリ保護機能を活用したかを知ることができます.コンフィグレータも公開していますので,実際のシステム開発に応用することも可能です.
注3;RISC(reduced instruction set computer)プロセッサでは,アドレスの変換情報テーブルのみをハードウェアで持ち,テーブルを参照して変換先のアドレスを求める処理はソフトウェアで行う方式が一般的である.
注4;CISC(complex instruction set computer)プロセッサでは,ハードウェアでアドレス変換を行う方式が一般的である.