「CPUバウンド」および「I/Oバウンド」用語のガイド
1. 序章
このチュートリアルでは、プログラム開発で一般的に使用される2つの用語、CPUバウンドとI/Oバウンドについて説明します。 まず、それらを定義し、それらのプロパティについて説明します。 次に、それらを識別する方法について説明します。 最後に、それぞれに関連する利点と問題について説明します。
2. CPUバウンドとはどういう意味ですか?
CPUバウンドという用語は、タスクまたはプログラムの実行がCPUに大きく依存しているシナリオを表します。先に進む前に、CPUとは何かを定義しましょう。 CPUは通常、デスクトップコンピュータなどのコンピューティングデバイスの中央処理装置を指します。 コンピュータシステムでのタスクとプログラムの実行を制御する責任があります。 そのため、コンピューティングデバイスはそれなしでは実際には機能しません。
CPUにバインドされた環境では、ほとんどの場合、プロセッサが実行に使用される唯一のコンポーネントです。これは、コンピュータシステムの他のコンポーネントが実行中に使用されることはめったにないことを意味します。 この依存関係のため、プログラムの実行に関係するすべてのものはCPUに依存しています。 したがって、プログラムをより高速に実行したい場合は、CPUの速度を上げる必要があります。
さらに、 CPUバウンド操作では、CPUバーストが少なく、長くなる傾向があります。 CPUバーストとは、通常はCPUを使用してタスクを実行するのにかかる時間を指します。 そのため、リソースの浪費を防ぐために、このようなタスクには低い優先度を割り当てることを常にお勧めします。
2.1. アプリケーションの例
通常、大量の計算を必要とするアプリケーションが典型的な例です。たとえば、ハイパフォーマンスコンピューティング(HPC)システムはCPUバウンドと考えることができます。 このようなシステムは、CPU内のいくつかの強力なプロセッサの処理能力を組み合わせて、より高いコンピューティングパフォーマンスを提供します。
このようなシステムの速度と効率により、1秒あたり数十億の計算を計算できます。他のコンポーネントに加えて、HPCシステムのパフォーマンスを向上させたい場合は、プロセッサの速度。 HPCシステムは、天気予報、人工知能、研究全般など、さまざまな分野で採用されています。
HPCシステムに加えて、グラフィックスをレンダリングするために計算を行う必要があるという意味で、グラフィックス操作もCPUに依存します。
2.2. 長所と短所
主な利点は次のとおりです。
- CPUを使用すると、タスクまたはプログラムの処理が高速になります。
欠点は次のとおりです。
- 処理装置を単独で使用すると、他のシステムコンポーネントがアイドル状態になり、リソースが無駄になります。
- CPUパワーを増やすことは、一般的に購入するのに費用がかかるため、費用のかかる作業です。
3. I / Oバウンドとはどういう意味ですか?
対照的に、タスクまたはプログラムの実行が入出力システムと、ディスクドライブや周辺機器などのリソースに依存している場合、タスクまたはプログラムはI/Oバウンドになります。I/ Oバウンド環境では、待機します。入出力システムを介してリソースを取得するため。 したがって、入出力システムがより高速に動作する場合、プログラムまたはタスクはより高速に実行されると言っても過言ではありません。
さらに、I / Oバウンドタスクを実行する際に、コンピューティングデバイスは入出力操作の実行に時間を費やし、中央処理装置などの他のリソースはあまり使用されないか、まったく使用されません。 入出力システムとは、オペレーティングシステムの入出力コンポーネントを指します。 これは通常、コンピューティングデバイスと外部の間の情報の通信または転送を担当します。
I / Oバウンド操作は、実行中のCPUバーストがますます少なくなるという特徴があることにも注意してください。
3.1. アプリケーションの例
入出力システムからのデータの読み取りと書き込み、および情報の待機を伴うアプリケーションは、I/Oバウンドと見なされます。 これらには、ワードプロセッシングシステム、Webアプリケーション、ファイルのコピー、ファイルのダウンロードなどのアプリケーションが含まれます。
3.2. 長所と短所
主な利点は次のとおりです。
- CPUバーストが短いため、通常、システムリソースがより適切に使用されるように、スケジューリング中に高い優先度が割り当てられます。
欠点は次のとおりです。
- I / Oバウンドのプログラムは、多くの場合、CPUバウンドのプログラムよりも低速です。
- 入出力システムを使用しているため、データの読み取りまたは書き込みを待機するのにかなりの時間がかかる可能性があります。 これは、プロセッサが操作を完了するのにかかる時間よりもかなり遅くなります。
4. 2つを区別する方法は?
では、プログラムまたはタスクがどのカテゴリに属するかをどのように決定するのでしょうか。 カテゴリを特定する際に、いくつか質問があります。 まず、プログラムまたはタスクの実行を高速化するリソースを特定する必要があります。 次に、プログラムには長いCPUバーストまたは短いCPUバーストが必要ですか?
一部のプログラムまたはタスクはCPUとI/Oの両方にバインドされていることに注意することも重要です。したがって、それらを1つのグループに厳密に配置することはできません。
5. 結論
この記事では、CPUおよびI/Oバウンド操作を定義しました。 いくつかのサンプルアプリケーションについて説明し、次に長所と短所をリストしました。 最後に、操作またはタスクがどのグループに属するかを識別する方法の概要を説明しました。