I/Oアーキテクチャとバス
I/Oアーキテクチャは、プロセッサとメモリがバス、コントローラ、割り込み、およびアドレス指定スキームを介して周辺機器と通信する方法を定義し、外部との間でコマンドとデータがどのように流れるかを管理する。
Definition
I/Oアーキテクチャとバスは、コンピュータのプロセッサとメモリが周辺機器と制御信号およびデータを交換するための組織と相互接続であり、デバイスレジスタのアドレス指定や、デバイスがサービスを要求するメカニズムを含む。
Scope
このトピックでは、入出力の構造について扱う。具体的には、バスとポイントツーポイント相互接続、デバイスコントローラとレジスタ、メモリマップドI/OとポートマップドI/O、ポーリングと割り込み駆動型I/O、バスプロトコルとアービトレーションである。デバイスがどのように接続され、制御されるかについて説明する。バルク転送DMAメカニズムと仮想化(I/O仮想化とDMA)、およびストレージメディア自体(二次記憶装置)は含まない。
Core questions
- 周辺機器はプロセッサによってどのようにアドレス指定され、制御されるのか?
- メモリマップドI/OとポートマップドI/Oはどのように異なるのか?
- ポーリングと割り込み駆動型I/Oは効率面でどのように比較されるのか?
- バスとポイントツーポイント相互接続はどのように調停し、データを転送するのか?
Key concepts
- デバイスコントローラとレジスタ
- メモリマップドI/O
- ポートマップドI/O
- ポーリング
- 割り込みと割り込みハンドラ
- バスと相互接続
- バス調停
- I/Oアドレス指定
Key theories
- 割り込み駆動型I/O
- デバイスを継続的にポーリングするのではなく、プロセッサは他の作業を進め、デバイスが注意を必要とするときに割り込みによって通知されるため、低速または断続的に動作するデバイスの効率が大幅に向上する。
Mechanisms
各デバイスは、プロセッサが読み書きするレジスタを公開するコントローラによって管理され、これらのレジスタはメモリマップドアドレスまたは特別なI/Oポートを介してアクセスされる。プロセッサはこれらのレジスタをポーリングすることもできるが、より効率的な方法として、デバイスが準備できたときに信号を送るように割り込みを有効にすることができる。バスはコンポーネントを接続し、複数のマスタ間のアクセスを調停するが、現代のシステムでは共有パラレルバスの代わりに高速ポイントツーポイントシリアルリンクがますます使用されている。
Clinical relevance
I/Oアーキテクチャは、システムがストレージ、ネットワーク、その他のデバイスとどの程度効率的に通信するかを決定する。割り込み駆動型I/Oはプロセッサを他の有用な作業から解放し、共有バスからPCI Expressのような高速シリアル相互接続への進化は、現代のストレージ、ネットワーキング、およびアクセラレータハードウェアに必要な帯域幅を支えている。
History
初期のシステムでは、プログラムI/Oと中央調停を備えた共有パラレルバスが使用されていた。割り込みメカニズムとISAやPCIのような標準化されたバスは、柔軟性とパフォーマンスを向上させた。PCI Expressに代表される高速ポイントツーポイントシリアル相互接続への移行は、共有パラレルバスの帯域幅と信号伝達の限界に対処した。
Key figures
- John L. Hennessy
- David A. Patterson
- Abraham Silberschatz
Related topics
Seminal works
- hennessy2019
- silberschatz2018
Frequently asked questions
- メモリマップドI/OとポートマップドI/Oの違いは何ですか?
- メモリマップドI/Oは、通常のメモリアドレス空間内にデバイスレジスタのアドレスを割り当てるため、通常のロード命令とストア命令でアクセスできる。ポートマップドI/Oは、別のアドレス空間とデバイスアクセス用の特殊な命令を使用する。現代のアーキテクチャではメモリマップドI/Oがより一般的である。
- ほとんどのデバイスにおいて、なぜ割り込みはポーリングよりも優れているのですか?
- ポーリングは、デバイスが準備できているかどうかを繰り返しチェックするためにプロセッササイクルを無駄にする。割り込みは、プロセッサが他の作業を行い、デバイスが実際にサービスを必要とするときにのみ通知されるようにするため、低速または予測不能な応答をするデバイスにとってはるかに効率的である。