AlphaFirmware

2004-02-18 22:39:14 +0900 (1748d); rev 3

ファームウェアというのはパソコンで言う BIOS のこと。 モニタプログラムとも言う。 Alpha にはこのファームウェアが、大雑把に言って二種類ある。 SRM (System Reference Manual) と ARC (Advanced RISC Computing, 後に Alpha BIOS に改名) である。 → SrmConsole, ArcConsole

ARC はメニュードリブンで基本的に NT 用である。 SRM は完全に CUI で、Tru64Unix と VMS 用。 NetBSD/Alpha や FreeBSD/Alpha は SRM を使う。 Linux だけは SRM と ARC の両方からブートできるが、 SRM を使ったほうが明らかに安定する。

新しめの (あるいは高級な) Alpha マシンだと 両方のファームウェアを積んでいてコマンド一つで切り替えられるのだが、 XL シリーズなど、 NT 専用マシンとして作られたマシンは ARC しか積んでいない。

ファームウェアの切り替え

SRM から arc と打つと ARC にできる。 ARC から console なんたらというメニューを選んでいくと SRM にできる。

なぜ OS によってファームウェアが決まっているのか

例えば NetBSD/Alpha は SRM からしかブートできない。 なぜこのような制限があるのだろうか。

根本的な原因は、ファームウェアは OS 起動後もメモリ上に (ある意味) 常駐しており、実行時に使われるからである。 Alpha 上の OS は二点でファームウェアに依存している。

コンソールコールバック

Alpha のファームウェアには、 ファームウェア自身を操作するためのインターフェイスがある。 例えばコンソールから一文字入力するための GETC や SRM 変数を設定するための SET_ENV などがある。

詳細は AlphaConsoleCallback を参照。

PALcode

Alpha にはハードウェア依存の操作を吸収する PALcode (Privileged Architecture Library code) というライブラリが用意されている。 例えばページキャッシュをクリアするとか CPU を halt するとか。 → PalCode

OSF/1 (Tru64UNIX) 用の PALcode と VMS 用の PALcode は SRM と一緒に入っており、 AlphaNT 用の PALcode は ARC と一緒に入っている。


system revision 1.162