マイクロスレッド(マルチコア)

マイクロプロセッサが高速化するにつれて、主に数ヶ月ごとにコアが追加されるため、メモリ遅延のギャップが広くなってきています。 メモリレイテンシは1980年には数サイクルであり、今日ではほぼ1000サイクルに達しています。 マイクロプロセッサに十分なコアがあり、うまくいけば、彼らは同時にメインメモリに要求を送信していない場合は、メモリ待ち時間の部分的な集約 一部のコアは、他のコアがメモリ応答を待機している間に実行されている可能性があります。 これは、マルチコアプロセッサにとって最良の状況ではありません。 高性能コンピューティングの専門家は、すべてのコアを常にビジー状態に保つよう努めています。 したがって、各コアが常にビジー状態に保たれている場合、マイクロプロセッサ全体を完全に利用することが可能です。 ソフトウェアベースのスレッドを作成しても、明白な理由のために問題は解決されません。 スレッドをメインメモリに切り替えるコンテキストは、メモリレイテンシと比較して非常に高価な操作です。 たとえば、Cell Broadband Engineのコンテキストでは、コアのスレッドのいずれかを切り替えるには、最良のケースで2000マイクロ秒かかります。 ダブルバッファリングやマルチバッファリングのようないくつかのソフトウェア技術は、メモリ遅延の問題を解決する可能性があります。 ただし、通常のアルゴリズムでは、プログラムがメモリから取得する次のデータチャンクがどこにあるかを知っているため、この場合、以前に要求されたデータを処理している間に要求をメモリに送信します。 ただし、この手法は、プログラムがメモリから取得する次のデータチャンクを知らない場合は機能しません。 つまり、ツリースパニングやランダムリストランキングなどの組み合わせアルゴリズムでは機能しません。 さらに、マルチバッファリングは、メモリ遅延が一定であることを前提としており、静的に非表示にすることができます。 しかし、現実には、メモリの待ち時間がアプリケーションから別のものに変化することを示しています。 これは、共有コアの相互接続を要求するメモリの割合など、マイクロプロセッサの共有リソースの全体的な負荷に依存します。

コメントを残す

メールアドレスが公開されることはありません。

More: