コンテキスト スイッチとは

コンピューティングの黎明期、CPU は純粋にシーケンシャルなマシンでした。これにより、デザインをシンプルに保つことができました。ただし、パフォーマンスも制限されました。多くのプロセスでは、システム RAM またはハード ドライブからデータを要求する必要があります。システム RAM は高速ですが、それでも CPU ほど高速ではないため、RAM から応答が返ってくるまでアイドル状態のままデータを待ちます。RAM よりもはるかに遅いストレージ デバイスであるハード ドライブから要求されたデータの場合、状況はさらに悪化します。ここで、CPU はかなりの期間アイドル状態になり、応答を待機する可能性があります。残念ながら、シーケンシャル プロセッサでは、この問題は避けられません。

ありがたいことに、最新の CPU はもはやシーケンシャルではありません。アウトオブオーダー実行や複数のスレッドなど、多くの高度な機能を提供します。アウトオブオーダー実行により、CPU は次の命令を分析し、それらを並べ替えて効率を最大化できます。マルチスレッドにより、CPU は多数の異なるスレッドまたはプロセスを実行できます。

複数のコアがある場合を除き、CPU は一度に複数のコアを実行することはできません。ただし、それらを定期的に切り替えて、それぞれがかなりの量の一定の CPU 時間を確保できるようにすることで、そのように見せることができます。スレッド間の切り替えプロセスは、コンテキスト スイッチと呼ばれます。

コンテキスト スイッチはどのように機能しますか?

コンテキスト スイッチは、前のスレッドの切り替えと新しいスレッドへの切り替えの 2 つの部分で構成されます。古いスレッドを変更するには、CPU は現在の状態をプロセス制御ブロックまたはスイッチ フレームに保存する必要があります。これには、関連するすべての CPU レジスタの値が含まれ、常にプログラム カウンタの値で構成されます。スレッドが格納されると、ハンドルをレディ キューに追加して、必要なときにスレッドを復元できるようにすることができます。

次のスレッドでの切り替えは、逆の同じプロセスです。スレッドは、重み付けに応じて、準備完了キューから選択されます。または、スレッドが待機していたイベントが準備完了または完了したことを示す割り込みによって選択することもできます。次に、スレッドのデータが正しいレジスタにコピーされ、スレッドが復元されます。この時点で、新しいスレッドは、停止した場所から操作を続行する準備ができています。

パフォーマンスへの影響

スレッドを切り替えるときのデータの読み取りと書き込みのプロセスには、使用されるメモリが通常高速であるため、それほど多くはありませんが、ある程度の時間がかかります。ただし、追加のパフォーマンス コストがあります。スレッドを切り替えると、前のスレッドからの CPU キャッシュとバッファ内のデータは、新しいスレッドに関連しない場合があります。これにより、TLB ( Translation Lookaside Buffer ) とキャッシュ ミスが大幅に増加する可能性があります。

2 つのスレッドが同じプロセスによって生成された場合、これらのスレッドはかなりのメモリ要素を共有する可能性が高いため、この影響は重要ではありません。異なるメソッドからスレッドを切り替えるときは、TLB を完全にフラッシュする必要があります。これにより、TLB ミス率が 100% になり、CPU キャッシュのヒット率も大幅に低下します。

CPU はコンテキスト切り替えのハードウェア サポートを提供しますが、オペレーティング システムは通常これを使用しません。ハードウェア コンテキストの切り替えでは、データの関連性が認識されません。したがって、すべてのレジスタを保存および復元する必要があり、所要時間と必要なストレージ スペースが増加します。

さらに、ハードウェア コンテキストの切り替えは、浮動小数点レジスタからのデータを保存しません。これは必要な機能です。したがって、ソフトウェア コンテキスト スイッチングが一般的に使用されます。浮動小数点レジスタを含むすべてのレジスタからのデータを保持できます。ソフトウェア コンテキスト スイッチは、データの関連性を理解しています。これは、必要に応じて保存するものを選択できることを意味します。

結論

コンテキスト スイッチは、最新の CPU が実行中のスレッドを切り替えるプロセスです。このプロセスには、現在のスレッドの関連データの保存と、新しいスレッドの関連データの復元が含まれます。コンテキストの切り替えには、切り替えの実行に必要な時間に関連するパフォーマンス コストが伴い、キャッシュと TLB のミス率は保存されないため増加します。コンテキストの切り替えは、すべてのスレッドが十分な CPU 時間を確保できるようにするため、または回線が待機していたイベントが完了したことを示す割り込みのために発生します。



Leave a Comment

修正:ChromebookがBluetoothデバイスに接続しない

修正:ChromebookがBluetoothデバイスに接続しない

BluetoothデバイスをChromebookとペアリングできない場合は、Bluetoothオプションを無効にして、ラップトップを再起動します。

ダブルVPNとは何ですか?シングルVPNよりどれだけ優れていますか?

ダブルVPNとは何ですか?シングルVPNよりどれだけ優れていますか?

ダブルVPNは、ネットワークの使用状況を監視している人からユーザーを保護するための優れた解決策です。

Chromebookノートパソコンでスクリーンショットを撮る方法

Chromebookノートパソコンでスクリーンショットを撮る方法

Chromebookノートパソコンでフルスクリーンのスクリーンショットを撮るには、CtrlキーとWindowsキーを同時に押します。

Windows 2016のリモートデスクトップホスト構成はどこにありますか?

Windows 2016のリモートデスクトップホスト構成はどこにありますか?

Microsoft Windows 2016でRDPホスト構成ツールをお探しですか?必要なRDP設定にアクセスするためのソリューションがあります。

MacでZoomでAirPodsが機能しない問題を修正

MacでZoomでAirPodsが機能しない問題を修正

多くのMac所有者は、ZoomでAirPodsを使用しないことに不満を持っていました。このガイドでは、この問題を解決する方法をよく示しています。

Li-Fiとは何ですか?

Li-Fiとは何ですか?

Li-Fiは、Wi-Fiの代替として設計された無線通信技術であり、可視光や近可視光を使用してデータを伝送します。最新のLi-Fi技術について詳しく調べてください。

ASUS ROGRAMDiskでRAMディスクを作成する方法

ASUS ROGRAMDiskでRAMディスクを作成する方法

ASUS ROG RAMDiskを使って、高速なRAMディスクを作成する方法を解説します。

FitbitCharge4を再起動してオンにする方法

FitbitCharge4を再起動してオンにする方法

Fitbit Charge 4を再起動してオンにする方法について詳しく解説します。このフィットネストラッカーの使い方や問題解決方法を学んで、健康管理に役立ててください。

Chromebookにバッテリーセーバーモードはありますか?

Chromebookにバッテリーセーバーモードはありますか?

Chromebookは現在、低電力モード設定を備えていませんが、効果的なバッテリー寿命の延ばし方について紹介します。

AnkerPowerConfスピーカー接続のトラブルシューティング

AnkerPowerConfスピーカー接続のトラブルシューティング

Anker PowerConferenceスピーカーの接続問題を解決するための完全ガイドを紹介します。