やかんです。
今日は来週に試験が控えているコンピュータアーキテクチャの講義において扱われた「入出力」について復習していきます。
※内容は僕のパブリックなメモでしかないです。
I/Oデバイスを理解したい。
文脈としては仮想記憶についての文脈で登場したI/Oデバイスくんですが、とりあえず疑問点等を乱れ打ちすることで理解を試みようと思います。
1. コントローラとは何か?
コントローラはI/Oデバイスに内蔵されている「部品」なはず。
例えば「マウス」を例にとると、クリックという処理を接続しているコンピュータ(CPU)が理解できるディジタル信号に変換するのがコントローラのお仕事。
このことは、マウスの処理をなんらかの形で一意に定めるbit列がISAに定義されることを意味しているはず。
2. ということはマウスの処理をノータイムで「コンパイル」しているということ?
厳密な意味での「コンパイル」ではないだろうが、マウスでの処理を非常に短時間でISAに適合するようなbit列に変換し、それをCPUに伝達してCPUが命令を実行する、という流れ。
めちゃめちゃ速いのでは?これ。
3. てことはマウスの処理を表現するbit列がISAとしてCPUと共有されている必要がある。いつどのように共有しているんだ?
まず、事実として同じマウスを用いてスカラプロセッサもベクタプロセッサも関係なくパソコンを操作できるらしい。要はISAが全然違うコンピュータでも同じマウスを使って操作できるよ、と。
いや、これ分からん。。
4. memory mapped I/Oについて、メモリアドレス幅が異なるのになんで同じファームウェアが使えるんだ?
↓5番に関連してくるが、0拡張とかするんだろうな、程度の理解が今の限界です。
5. そもそもmemory mapped I/Oとは?
I/Oデバイス(マウスとかキーボード)のレジスタやバッファがCPU側の通常のメモリアドレス空間にマッピングされる方式のこと。
6. デバイスドライバとは?
OSとI/Oデバイスの間に存在するソフトウェア。I/Oデバイスの開発者が開発するもの。
デバイスドライバはI/Oデバイスを開発した人が実装するが、デバイスドライバというソフトウェアを実行するのは当然CPU。だから、異なるISAを採用するCPUがある場合、デバイスドライバはそれぞれのISAに準拠するように複数実装される必要がある。
7. DMAとは?
この辺からわからないよなあ。
メモ
次は、I/Oに触れつつ、仮想記憶かな。それが終わったらキャッシュ。
ということで、今回のメモは終了です。最後までお読みいただき、ありがとうございます。