コンピュータサイエンスにおいて、I/Oバウンドとは、計算を完了するのにかかる時間が、主に入出力操作が完了するのを待つ時間によって決まる状態を指し、 CPUバウンドと対比されることもあります。この状況は、データの要求速度が消費速度よりも遅い場合、つまり、データの処理よりもデータの要求に時間がかかる場合に発生します。[1]
コンピューティングにおける固有の問題としてのI/Oバウンド
I/O バウンド状態は、コンピューティングのほぼ最初から問題として認識されてきました。多くのコンピューティング デバイスで採用されているフォン ノイマン アーキテクチャでは、論理的に独立した中央処理装置を実装するなど、複数の解決策が考えられます。この中央処理装置は、プログラムの命令を格納するとともに、通常はメイン メモリから実際のデータを取得し、このアクセスしやすいデータを作業に使用します。プロセスが終了すると、結果は元のストレージ (通常はメイン メモリ) に書き戻されます。
データは、データ転送速度が制限されたバスに沿って 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 が割り当てられます。再び、すべての I/O プロセスは、CPU バウンド プロセスが完了するまで準備キューで待機することになります。他のすべてのプロセスが 1 つの大きなプロセスが CPU から解放されるのを待つため、護送船団効果が発生します。この効果により、短いプロセスが最初に実行された場合よりも CPU とデバイスの使用率が低くなります。[4]
参照
参考文献
- ^ ディスクI/Oバウンドシステムの識別
- ^ Erik Engbrecht のブログ: I/O バウンドとは実際には何を意味するのでしょうか?
- ^ slebetman. 「なぜ io バウンド プロセスが高速化するのか」。2014 年8 月 9 日閲覧。
- ^ Silberschatz, Abraham; Galvin, Peter B.; Gagne, Greg (2013).オペレーティングシステムの概念。第9巻。John Wiley & Sons。ISBN 978-1-118-06333-0。
