Linux は、多数のプロセッサ上で実行されている。この章では、それらのいくつか について簡単なアウトラインを紹介する。
TBD
(訳注: 原文に解説はありません。 bibliography の 9 を参考にしてください。)
ARM は、省電力、ハイパフォーマンスの 32 ビット RISC アーキテクチャを 実装するプロセッサである。これは、携帯電話や PDA(Personal Data Assistants) などの組み込みデバイスで広く使用されている。ARM は、31 個の 32 ビットレジスタ を持っていて、そのうち 16 個はどのモードでも使用可能である。このプロセッサ の命令(instructions)は、シンプルなロードストア命令(メモリから値をロード し、操作を実行し、その結果をメモリに戻す)である。このプロセッサが持つ ひとつの興味深い特徴は、すべての命令が条件命令(conditional)であることである。 たとえば、レジスタの値をテストした場合、次に同じ条件でテストするまで、好きなだ け好きな時に、条件的に命令を実行することができる。 それ以外の興味深い特徴としては、値をロードするときに、演算処理とシフト処理 とが出来ることである。 またいくつかのモードで実行可能であり、このプロセッサのシステムモードは、 ユーザモードから SWI(software interrupt)経由で入ることが出来る。
ARM は、統合可能(synthasiable)コアを使用している。しかし、ARM (会社名)自体が このプロセッサを製造しているわけではない。ARM の提携会社(たとえば、Intel や LSI といった会社)が、ARM の設計したアーキテクチャをシリコンに実装している。 このプロセッサは、コプロセッサ(co-processor)のインターフェイス経由で他の プロセッサとも緊密に連携させることができるので、メモリ管理ユニットの バリエーションが多数ある。それらは、シンプルなメモリ保護スキームから複雑な ページ階層のものまで幅広くカバーしている。
Alpha AXP のアーキテクチャは、64 ビットのロード・ストア型の RISC アーキテクチャであり、処理速度重視で設計されている。すべてのレジスタは 64 ビット長であり、32 個の整数レジスタと 32 個の浮動小数点レジスタを持つ。 整数レジスタ 31 番と浮動小数点レジスタ 31 番とは、ヌル(null)オペレーション のために使用される。すなわち、それらのレジスタからの読み出しは 0 を生成し、 それらへの書き込みは何の効果ももたらさない。 すべての命令は 32 ビット長であり、メモリオペレーションは読み出しか書き込みかの どちらかである。このアーキテクチャは、実装がアーキテクチャに準拠したものである 限り、異なる実装も許している。
メモリにストアされた値を直接操作する命令は存在しない。すべてのデータ操作 はレジスタ間で行われる。それゆえ、メモリのカウンタの値をインクリメントしたい場 合、まずそれをレジスタに読み出して、それを修正し、メモリに書き込まなければなら ない。ある命令がレジスタかメモリ内のどこかの位置に書き込みを行い、別の命令が そのレジスタかそのメモリ位置を読み出した場合にのみ、相互の命令が干渉しあって しまう。 Alpha AXP の興味深い特徴のひとつは、フラグを生成できる命令があることである。 たとえば、ふたつのレジスタ値が同じであるかテストし、その結果はプロセッサ のステータスレジスタにはストアされないが、代わりに第三のレジスタに結果を ストアするといったものである。これは一見奇妙に思えるかもしれないが、 ステータスレジスタへの依存を取り除くことによって、個々のサイクルごとに 多重命令(multiple instruction)を発することが可能な CPU の製造を、非常に容易に する。 相互に関係のないレジスタ上での命令は、互いの命令の結果を待つことなく、 実行される。もしステータスレジスタがひとつしかない場合、それにはもっと 時間がかかるだろう。メモリを直接操作する命令がないこと、レジスタ数が 非常に多いことも、多重命令の発行を容易にするものである。
Alpha AXP アーキテクチャは、一連のサブルーチンを使用するが、それは PALcode(privileged architecture library code)と呼ばれる。 PALcode は、Alpha AXP アーキテクチャの CPU 実装なので、オペレーティングシステム やハードウェアごとに異なったものとなる。 それらのサブルーチンは、オペレーティングシステムにコンテキストスイッチングや 割り込み、例外処理やメモリ管理のプリミティブを提供するものである。それらの サブルーチンは、ハードウェアか CALL_PAL 命令によって呼び出し可能である。 PALcode は、標準的な Alpha AXP アセンブラと、いくつかの特定実装に固有の 拡張を付け加えて書かれたもので、たとえば、プロセッサの内部レジスタなどの 低レベルのハードウェア機能への直接的なアクセス手段を提供している。 PALcode は PALmode で実行されるが、このモードは特権モードであり、いくつかの システムイベントの発生を停止して、PALcode が物理的なシステムハードウェアを完全 に制御することを許すものである。