機械語序論
電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/kikaigo-2001/2002-02-12
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.is.tsukuba.ac.jp/~yas/index-j.html
デバイス(device)
とは、コンピュータの箱の中に内蔵されているハードウェアの部品やケーブル
で外で接続する部品。
普通は、CPU とメモリ以外のことを指す。
周辺装置(peripheral device)、
入出力装置(IO device)とも呼ばれる。
- ハードディスク
- キーボード
- マウス
- グラフィクス・カード
- ネットワーク・インタフェース
- シリアルポート
メモリ、CPU、デバイスは、バス(bus)(システム・バス(system bus))を通
じて接続されている。

図1 バスにより接続されたCPU、メモリ、デバイス
バス:何本かの配線の束
- アドレスバス
- メモリのアドレスを示すための線
- データバス
- データを送るための線
- コントロールバス
- その他、制御用の線
アドレスバスの下2ビットは、しばしば配線されていない。たとえば、MIPS
の lw 命令では、上30ビットを使って4 バイトのデータを一度に読み出す。lb
命令は、読み出したデータを一部捨てる。
各デバイスとCPU で実行されるプログラムとデバイスとり橋渡しをする機器。
例:キーボード用のコントローラの働き
データが、電気信号などの形で送られてくる。コントローラの中のレジスタ
(小容量のメモリ)に保存される。(CPU のレジスタとは別。)
CPU から見える場所
- デバイス・コントローラが I/O 空間にあり、ポート番号と呼ばれる番地
が振られている。CPU が、ポート番号を指定して入出力命令を実行すると、
I/O 空間にあるレジスタの内容が読み書きできる(I/O 空間を示す信号線が1に
なる)。
- デバイス・コントローラが、普通のメモリと同じ空間にあり、番地が番
地が振られている。CPU が、その番地へ普通のロード命令やストア命令でアク
セスすると、コントローラのレジスタの内容が読み書きできる。
入出力の時に CPU が働くかどうか
- CPU が入出力命令、あるいは、ロード命令/ストア命令を実行する。
- DMA (Direct Memory Access)やバスマスタと呼ばれる機器があり、その
機器がCPU が普通に命令を実行している合間をぬって一時的にバスを乗っ取り、
データをメモリにコピーする。
CPU の速度に比べて、デバイスの速度は遅い。
- 入出力の完了を待っていると CPU の能力が無駄に捨てられる。
- 複数の独立したデバイスは、同時に動かしたい。
- あるプロセスがデバイスへの入出力を行ないたい時、CPU がその処理に
つきっきりになってしまうと、他のプロセスまで先に進めなくなる。
ポーリング(polling):
周期的にデバイス・コントローラの状態をチェックする。
- 周期が短いと、チェックのオーバヘッド(余計な仕事)が多くなるが、
デバイスとの応答はよくなる。
- 周期が長いと、その逆。
割込み(interrupt):入出力が可能になった時にデバイスがCPUに知らせる。
- 入力デバイス
- コントローラは、入力データが到着すると、制御バスの割込み要求(IRQ,
Interrupt Request)信号線を1にする。
(DMAやバスマスタを使っている時には、メモリへのコピーが完了した時)
- 出力デバイス
- コントローラは、出力用バッファが空になると、割込み要求信号線を1に
する。
CPU は、割込み要求を受け付けると、現在実行中の処理を中断して、
割込み処理ルーチン
あるいは
割込みハンドラ
と呼ばれるプログラムを実行する。
割込み処理ルーチンでは、実際に入力命令を実行したり、
次のデータを出力を開始する。
最後に、割込み処理から復帰する命令を実行する。すると、先ほど中断してい
た処理が再開される。
入出力(ポーリングや割込み)は、オペレーティング・システムのカーネルに
おいて利用されている。

図2 オペレーティング・システムの構成要素
オペレーティング・システム(のカーネル)の機能を利用することを、システ
ムコール(カーネル・コール)という。
シリアル回線は、主にモデム(modem)を接続するためのもの。

図3 モデムによるコンピュータの接続
modem は、ディジタル信号の変調(modulation) と 復調(demodulation) を行
う。
モデム間は、アナログ信号が流れる。
- 電話線の用のモデムは、音声領域の周波数を使う。
- ADSLの用のモデムは、音声では使われていない、もっと高い領域の周波数を使う。
シリアル回線では、1本の線に、1ビットずつ送る回線。
普通、3本の配線がなされる。

図4 シリアル回線を使った通信でのコントローラの役割
コントローラのレジスタには、8ビット単位で書込む。信号線には、1ビット
ずつ送られる。データ以外に、データの開始や終了(スタートビット、ストッ
プビット)を表すビット、パリティ・ビットが付けられることがある。
クロスケーブルを使えば、コンピュータとコンピュータを直結できる。

図5 nullモデムによるコンピュータの接続