VME/CAMACデバイスドライバ開発のための用語集


| オペレーティングシステム | プロセス | システムコール | 仮想マシン| 仮想記憶システム | 仮想記憶| メモリ管理ユニット | アドレス空間 | 仮想アドレス(空間) | アトミックオペレーション | 危険領域、きわどい領域、クリティカルセクション | DMA | ブロック転送 | VMEブロック転送 | CAMACブロック転送 |

仮想マシン (virtual machine) ハードウエアの複雑さをいかにしてプログラマから隠蔽するかという 認識から、システムのすべての資源を制御する層を裸のハードウエア上に かぶせたインターフェースを提供するものです。古くはIBM社のVM/370はvirual machine monitorと呼ばれました。このVMの上にCMSなどのOSが走りました。最近では Javaのvirtual machineとしてJVMがあります。
仮想記憶 (virtual memory) 標準の計算機のメモリ管理方式。この基本の発想は、プログラムとデータ、 スタックの合計の大きさが、物理メモリを越えてもかまわないという点にあります。 メモリ管理サブシステムは物理メモリに納まり切れないプログラムを 二次記憶装置に格納します。
オペレーティングシステム (operating system、OS) 計算機のすべての資源を制御し、アプリケーションプログラムを作成する ための土台を提供するもの。
システムコール(system call) OSとユーザプログラムの間のインターフェースはOSの提供する「拡張命令」 の集合によって定義されます。この拡張命令をシステムコールと呼びます。
アドレス空間 (address space) 仮想メモリを用いるため、実際の物理メモリと区別するために導入された 概念。プロセスは一連の命令シーケンスを1つのアドレス空間で実行します。 仮想記憶システムにおいて仮想アドレス空間、物理アドレス空間、バスアドレス 空間があります。ユーザプロセスが動作する空間をユーザアドレス空間(ユーザ空間) と言い、カーネルが動作する空間をカーネルアドレス空間(カーネル空間)と言います。 また、ユーザ空間やカーネル空間でプログラムが実行される時、ユーザモードや カーネルモードで実行されると言うこともあります。
仮想アドレス(空間) (virtual address (space)) 仮想記憶システムの上で動作するプログラムが生成するアドレスを 仮想アドレスと呼びます。またそのプログラムがつくる空間を仮想アドレス空間と 呼びます。
仮想記憶システム
メモリ管理ユニット (memory management unit, MMU) 仮想アドレスを物理アドレスにマップするチップまたはその集合。
プロセス OSの上で実行するプログラム。プログラムコード、データ、スタック、 プログラムカウンタ、スタックポインタ、その他レジスタなど、プログラムの 実行に必要なすべての情報で構成される。
アトミックオペレーション (atomic operation) これ以上分割できない最小単位の操作。モトローラ社の68kCPUの アセンブラ命令、TAS命令を例にとると、この命令はメモリから1ビットを 読みだし、その結果をCPUのコンディションコードに記録して、同時に その目的番地にビットを書き込みます。メモリの読みだし/コンディション コードの記録/メモリへの書き込みの間は、CPUはメモリをロックし、その 命令が完了するまで他のCPUメモリアクセスを禁止します。こうすることで そのメモリへの他のプログラムからの同時アクセスを禁止することが できます。TAS命令はアトミックオペレーションを行なっていると言えます。
危険領域、きわどい領域、クリティカルセクション(critical section) 共有メモリへアクセスする2つのプログラムが競合を避けるために設ける 共有メモリ上の領域。2つのプログラムが同時に入らないよう排他処理 (mutual exclusion)を行ないます。
DMA DMAはDirect Memory Accessの略で、CPUを介在させないバス転送 (データ転送)の方法です。一方CPUを介在させるデータ転送の 方法をPIO (Programmed I/O)と言い、対比されます。メモリと CPUは内部のバスで接続されています。またI/O機器を接続する バスもこの内部バスに接続されます。I/O機器にあるデータを メモリに読み込むことを考えてみます。PIOでこれを行なう 場合、データは一旦CPUに送られ、それからメモリに書き込まれます。 しかし、DMAの場合、データはI/O機器から直接CPUを通らずに メモリに書き込まれます。ですから一般にDMAはPIOより 高速な手法になります。
ブロック転送 ブロック転送はDMAとは異なる概念です。ブロック転送は CPUが介在するかどうかは何も言っていません。ある まとまったデータの転送、程度の意味と理解した方が いいでしょう。ブロック転送では読み込みにせよ書き込みせよ 誰がその起動を行なうかが重要なポイントです。 バスマスタ/バススレーブという言葉で表現します。 バスマスタは起動を行なう主体で能動的にデータ転送を開始できるもので、 バススレーブは受動的にその要求を待ち、サービスを受けるものです。
VMEブロック転送 VME64は最近のVME規格です。以前の規格ではBLTは 定義されていたものの、MBLT(Multiple BLT)はVME64に なってからです。これはアドレスとデータラインを 使って64ビットのデータ転送を行なうものです。 さらに、VME64拡張が規格として決まりつつあります。 この規格の特徴は5列のコネクタを用い、 3V電源をサポートしていることです。 VMEブロック転送はVME規格に基づくブロック転送の プロトコルです。BLTと呼びます。 規格に従ってはっきりと定義されています。 かいつまんで言うと、データ転送において、 マスタが一旦アドレスストローブ(AS)をアサートすると、 複数回のデータストローブ(DS)をアサートできるもので、 スレーブのデータアクノレッジ(DTACK)もDSに呼応して 複数回、DSをアサートします。
CAMACブロック転送 CAMAC規格にEUR4100eがあります。 他にもブランチドライバとかシリアルドライバとか 補助コントローラの規格が ありますが、省きます。EUR4100eはCAMAC規格として よく使われているもので、CAMACのクレートのための 規格です。CAMACではブロック転送という概念が 使われています。Qレスポンスの扱いについて触れている ところで、アドレススキャンモード、リピートモード、 ストップモードを定義しています。例えば、 ストップモードでは、「データのブロックが転送中である間、 モジュールはリードコマンド動作あるいはライトコマンド動作に 対してQ=1を発生しなければならない。またブロック転送の 終了条件が成立した後では、上記のリードコマンド動作あるいは ライトコマンド動作に対して、モジュールはQ=0を 発生しなければならない。」と決められています。 ただ、注意しなければならないのはこのEUR4100eが ブロック転送という言葉を使って各モードを定義してはいるが モジュール自身がこれらのモードで操作されているのか そうでないのかを知る手段はないということです。 ですから、計算機側のCAMACインターフェースが上記のモードを サポートし、DMAを使ったブロック転送を行なえるように しています。 例を1つあげてみましょう。Kinetic社からK2917とよばれる VME-CAMACインターフェースが提供されています。 このインターフェースはDMA起動後、VMEのバスマスタとして動作します。 一度DMAリードが起動しますと、このインターフェースはCAMACの リード操作を行ない、モジュールからデータを読み出します。 同時にそのデータはVMEバスを介して計算機上のメモリに CPUを介さずに送ります。インターフェースにはワードカウントが あらかじめセットされていますので、K2917にあるCAMACの ブロック転送のモードをセットするレジスタにQストップモードが 設定してあったら、Q=0になるか、ワードカウントが0になるまで データ転送を続けます。