Application eXecute-In-Place (XIP) with Linux and AXFS

XIPとは
http://www.cqpub.co.jp/cqad/ecn/2006/mar/trend.htm#06

  • PCカード(PCMCIA)において、実行可能なコードを直接ROMから実行するための仕様
  • 一般PCでは、カード上のROM上のコードも一旦メモリにコピーしてから実行される
  • こうすることで、メモリ管理やプログラム管理の対応が通常実行と共通になるため簡単になることや、実行速度も向上する
  • しかし携帯電話、携帯端末などリソースが限られた環境ではメモリを節約する必要があり、XIPが定められた

http://www.scribd.com/doc/19855245/Application-eXecuteInPlace-XIP-with-Linux-and-AXFS

概要

XIPあるいはeXecute-In-Placeは、アプリケーションのコードやデータを、物理にRAMに転送することなく、不揮発性フラッシュメモリから直接アクセスする技術である。これは組み込み分野ではよく使われている。
Linux世界では、アプリケーションをその場所で実行することは、カーネルほど一般的ではない。カーネルではブートアップ時間を短縮するために使われて成功している。

2.application XIP

前節では普通のやりかたを説明した。その場実行(XIP)は大きく違う方法を取る。アプリケーションの静的データ(ELFの.textと.dataセクション)はRAMにコピーされない。たとえforkを呼んだ場合でも。

プログラムがXIP実行されるのなら、.bssセクションとスタックが確保される。
・・・
プログラムの.textと.dataセクションは直接フらシュメモリがマップされているので、これらセクションに対するページングは不要となる。

XIPデータは、圧縮することができない。圧縮する場合、実行前にRAMに展開する必要があるため、もともとのXIPの目的が達成されなくなる。

XIPの欠点の一つは、フラッシュメモリのリードはRAMに比べて遅いことである。SRAMが25nsなのに、NOR flash chip は100nsに増える。
重要なことは、XIPは、エミュレーションレイヤーのようなもの無しの、NORフラッシュメモリのみ本当に可能だということ。NORとちがい、NANDは直接メモリにマップできず、512KBブロック単位でしかアクセスできない。これは高速アクセスにつながるが、バイトアクセスができないため、NANDはXIPに向かない。

もうひとつの欠点は、RAMはフラッシュメモリよりコストが低いという事実。XIPは有効に使うには、RAM節約のメリットと高価なフラッシュメモリの使用と遅いメモリアクセスとのトレードオフを考慮する必要がある。