I/Oバウンド

パフォーマンスがI/Oの待機時間に大きく依存するコンピュータプログラム

コンピュータサイエンスにおいてI/Oバウンドとは、計算の完了にかかる時間が主に入出力操作の完了を待つ時間によって決まる状態を指し、 CPUバウンドと対比されることもあります。この状況は、データの要求速度が消費速度よりも遅い場合、つまり、データの処理時間よりもデータの要求に多くの時間が費やされる場合に発生します。[1]

コンピューティングにおける固有の問題としてのI/Oバウンド

I/Oバウンド状態は、コンピューティングの誕生以来、ほぼ一貫して問題として認識されてきました。多くのコンピューティングデバイスで採用されているフォン・ノイマン・アーキテクチャには、論理的に独立した中央処理装置(CPU)を実装するなど、複数の解決策が考えられます。CPUは、プログラムの命令を格納するだけでなく、通常はメインメモリから実際のデータを取得し、このアクセスしやすいデータを処理に利用します。プロセスが終了すると、結果は元のストレージ(通常はメインメモリ)に書き戻されます

CPUとメモリ間のデータ転送速度には限界があるバスを介してデータを転送する必要があるため、フォン・ノイマン・ボトルネックと呼ばれる状態が発生します。簡単に言えば、CPUとメモリ間のデータ帯域幅が全体的な計算速度を制限する傾向があることを意味します。コンピューターを構成する実際の技術の観点から見ると、フォン・ノイマン・ボトルネックは、CPUに計算を高速化させる方が、それを可能にするために必要な速度でデータを供給するよりも簡単であると予測しています。

近年、フォン・ノイマン・ボトルネックはより顕著になってきています。現代のコンピュータの設計思想は、CPUとメインメモリを物理的に分離することを前提としています。CPUは、CPU内部のわずかな距離を移動することで、高いデータ転送速度を実現できます。しかし、CPUとメインメモリを物理的に分離することで、数センチメートル以上の比較的長い距離をデータ転送するためのデータバスが必要になります。システムのこの部分をCPUに追いつくだけの速度で動作させることは、設計者にとって大きな課題でした。[2]

実用的な問題としてのI/Oバウンド

I/Oバウンド状態は、CPUがメインメモリまたは二次記憶装置からデータのロードまたはアンロードを待つ間、動作を停止しなければならないことを意味するため、望ましくないと考えられています。新しいコンピュータ設計の主な目標は計算速度の向上にあり、CPUやメモリなどのコンポーネントは高価であるため、I/Oバウンド状態を回避することは非常に重要です。I/Oバウンド状態を排除することで、CPUやメモリをアップグレードするよりも経済的なパフォーマンス向上が期待できます。

CPUが高速化すると、プロセスはI/O依存度が増す傾向がある

あるいはもっと簡単に言えば:

CPU が高速化すると、プロセスの I/O 依存が強くなるため、プロセスの速度は CPU 速度に比例して増加しなくなる傾向があります。

これは、I/Oバウンドなプロセスは非I/Oバウンドなプロセスよりも遅くなることを意味します。速くなることではないのです。これは、コアにおけるデータ処理速度の向上に伴って、ストレージからプロセッサへのデータ転送速度は向上しないからです。CPUクロック速度が向上し、与えられた時間枠内でより多くの命令を実行できるようになると、効率的な実行を制限する要因は、命令をストレージからプロセッサに配信し、プロセッサから宛先に送信する速度になります。つまり、プログラムは自然にI/Oバウンドへと移行していくのです。[3]

CPU依存との比較

CPUバウンドプロセスが1つとI/Oバウンドプロセスが多数あると仮定します。これらのプロセスがシステム内を巡回すると、次のようなシナリオが考えられます。CPUバウンドプロセスがCPUを取得し、占有します。この間に、他のすべてのプロセスはI/Oを終了し、レディキューに移動してCPUを待ちます。プロセスがレディキューで待機している間、I/Oデバイスはアイドル状態です。最終的に、CPUバウンドプロセスはCPUバーストを終了し、I/Oデバイスに移動します。CPUバーストが短いI/Oバウンドプロセスはすべて、すぐに実行され、I/Oキューに戻ります。この時点で、CPUはアイドル状態になります。その後、CPUバウンドプロセスはレディキューに戻り、CPUが割り当てられます。ここでも、CPUバウンドプロセスが完了するまで、すべてのI/Oプロセスはレディキューで待機することになります。他のすべてのプロセスが、1つの大きなプロセスがCPUから解放されるのを待つため、護送船団効果が発生します。この効果により、短いプロセスが先に実行された場合よりもCPUとデバイスの使用率が低下します。[4]

参照

参考文献

  1. ^ ディスクI/Oバウンドシステムの識別
  2. ^ Erik Engbrecht のブログ: I/O バウンドとは実際には何を意味するのでしょうか?
  3. ^ slebetman. 「なぜIOバウンドプロセスはより高速なのか」 。 2014年8月9日閲覧
  4. ^ シルバーシャッツ、アブラハム、ガルビン、ピーター・B、ガニエ、グレッグ (2013).オペレーティングシステムコンセプト. 第9巻. John Wiley & Sons. ISBN 978-1-118-06333-0
「https://en.wikipedia.org/w/index.php?title=I/O_bound&oldid=1315457212」より取得