I/O命令
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/21 02:01 UTC 版)
「データゼネラルNova」の記事における「I/O命令」の解説
Novaは、I/Oデバイスとのインターフェースのためのチャネル化モデルを実装した。 このモデルでは、各I/Oデバイスは、"Busy" および "Done" と呼ばれる2つのフラグと、A, B, Cと呼ばれる3つのデータと制御レジスタを実装することが期待されていた。 I/O命令は、レジスタを読み書きし、"start", "clear", "pulse" と呼ばれる3つの信号のうちの1つをデバイスに送信するために利用可能である。一般的に start 信号を送ると、A/B/Cレジスタに値をロードすることで設定されたI/O動作が開始される。clear 信号はI/O動作を停止し、発生した割り込みをクリアする。pulse 信号は、ディスクドライブのシーク操作など、複雑なサブシステムの付帯操作を開始するために使用された。ポーリングされたデバイスは通常、デバイスとAレジスタの間で直接データを移動した。 DMAデバイスは一般的に、メモリアドレスを指定するためにAレジスタを使用し、転送するワード数を指定するためにBレジスタを使用し、制御フラグをセットするためにCレジスタを使用していた。 チャネル63はCPU自体を参照し、さまざまな特殊機能に使用された。 各I/O命令には、6ビットのチャネル番号フィールド、どのレジスタを読み書きするかを指定する4ビット、どの信号を送信するかを指定する2ビットのフィールドが含まれた。 アセンブリ言語では、信号はオペコードに文字を追加することによって指定された。'S' は start、'C' は clear、'P' は pluse 、信号がない場合は何も指定しない。 オペコードは次のとおりである: DIA - デバイスのAレジスタの内容を指定されたアキュムレータに移動 DOA - 指定されたチャネルのデバイスのAレジスタに指定されたアキュムレータの内容を送信 DIB - デバイスのBレジスタの内容を指定されたアキュムレータに移動 DOB - 指定されたチャネルのデバイスのBレジスタに指定されたアキュムレータの内容を送信 DIC - デバイスのCレジスタの内容を指定されたアキュムレータに移動 DOC - 指定されたチャネルのデバイスのCレジスタに指定されたアキュムレータの内容を送信 NIO - "no I/O" の誤記。 この命令は、レジスタ転送を行わずにデバイスに信号を送信するために使用された。 さらに、デバイスの状態をテストするための4つの命令が用意されていた: SKPBN - デバイスのBusyフラグが設定されている場合、次の命令をスキップ SKPBZ - デバイスのBusyフラグがクリアされている場合、次の命令をスキップ SKPDN - デバイスのDoneフラグが設定されている場合、次の命令をスキップ SKPDZ - デバイスのDoneフラグがクリアされている場合、次の命令をスキップ デバイスを起動すると、Busyフラグが設定される。 要求された操作が完了すると、従来はデバイスは Busyフラグをクリアして Doneフラグを設定していたが、ほとんどのデバイスでは、割り込み要求メカニズムが Doneフラグに接続されていたため、Doneフラグを設定すると割り込みが発生する(割り込みが有効でデバイスがマスクされていない場合)。
※この「I/O命令」の解説は、「データゼネラルNova」の解説の一部です。
「I/O命令」を含む「データゼネラルNova」の記事については、「データゼネラルNova」の概要を参照ください。
- I/O命令のページへのリンク