まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

3473. 計算、続き^5

2021年07月28日 | 日記

 さて、どこから話し始めれば良いものやら。

 まず、CPUレベルでは、原始計算機ではクロックというかサイクル毎に命令読みだし・解釈(フェッチ)、あるいは命令実行(エクセキュート)のフェイズに入ります。ここは状態推移図で説明する箇所です。
 マイコンICのCPUではごく初期から、この2状態の他に、割り込み処理フェイズ(インタラプト)、DMA(ダイレクト・メモリ・アクセス)フェイズの2状態が用意されています。ですから、素朴には上記の4状態がクロックの進行によって適宜選ばれて行きます。

 割り込みは外部要因、普通は専用の信号線があって、それがアクティブ、つまり+5V等になると、通常の命令フェッチ、命令実行のサイクルから逸脱して、その時のCPUの状態を記録してから、特定の割り込み処理ルーチンへプログラムを分岐させます。
 割り込み処理ルーチンは特殊なサブルーチンで、通常は割り込み要因を解析し、信号に応じて主記憶の特定の部分を書き換えたり、あるいは周辺装置に送ったりして、用が済んだらただちに元のプログラムに、何事も無かったかのように戻らないといけません。
 ただまあ、緊急事態なんかだと、動作中のプログラムを勝手に中止するなどのプログラムが起動するかも知れません。いずれにしろ、元のプログラムから見たら予期せぬ出来事です。

 DMAはCPUと主記憶間のバス(アドレス線とデータ線と読み書きなどの制御線)を開放し、周辺機器が主記憶と直接データのやりとりをします。CPUがアドレスだけを提供することはあると思います。
 もちろん、DMAの起動は元のプログラムから入出力命令として発せられます。その後は必要なバイト数のデータが処理実行中のプログラムとは関係なく転送される、ということ。
 大型機の解説で、入出力チャンネルというなかなか分かりにくい説明がありますが、多分、このDMAのことを指すと思います。

 以上が基本動作で、ちょっとややこしくなりますが、プログラムからOSのサービスを利用したいときに、ソフトウェア割り込み、と呼ばれる特定の機械語があって、上述の割り込みフェイズが起動します。

 ふう、これだけの説明で随分字数を消費しました。次回はBASIC等の高級言語から見たらどうなるのか、の話に移行する予定です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする