[論文レビュー] Single-Producer/Single-Consumer Queues on Shared Cache Multi-Core Systems
本稿では、動的メモリ割り当てを最小限に抑え、キャッシュ局所性を最大化するように変更されたラムポートの円形バッファに基づき、共有キャッシュマルチコアアーキテクチャ向けに、新規で効率的で非束縛の待機フリー単一プロデューサ/単一コンシューマ(uSPSC)キューを提示する。このアルゴリズムは、マルチプッシュ最適化を用いて性能を高め、メモリバリアを回避することで、合成ベンチマークおよび実際のパイプラインワークロードの両方で従来のリストベースのキューを凌駆する。
Using efficient point-to-point communication channels is critical for implementing fine grained parallel program on modern shared cache multi-core architectures. This report discusses in detail several implementations of wait-free Single-Producer/Single-Consumer queue (SPSC), and presents a novel and efficient algorithm for the implementation of an unbounded wait-free SPSC queue (uSPSC). The correctness proof of the new algorithm, and several performance measurements based on simple synthetic benchmark and microbenchmark, are also discussed.
研究の動機と目的
- 動的メモリ割り当てと悪いキャッシュ局所性による従来のリストベースSPSCキューの性能ボトルネックを解消すること。
- 高価なメモリバリアを回避し、動的割り当てへの依存を減らす待機フリーの非束縛SPSCキューを設計すること。
- 共有キャッシュマルチコアアーキテクチャにおけるプロデューサ・コンシューマワークロードのキャッシュパフォーマンスとスループットを向上させること。
- ストリーミングおよびパイプラインワークロード向けに、正当性が保証され、高性能な従来のSPSCキュー実装の代替手段を提供すること。
提案手法
- 必要に応じてのみ動的メモリ割り当てを行うように、待機フリーの円形バッファアルゴリズムを拡張し、非束縛サイズをサポートする。
- 複数の要素を1つのアトミック操作にバッチ化することで、キャッシュミスを減らし、局所性を向上させるマルチプッシュ最適化(mpush)を導入する。
- エントリがAVAILABLEを示すように、バッファ構造を変更し、安全な非ブロッキング操作を可能にする。
- ロックフリーで待機フリーの設計を、比較アトミック交換(CAS)操作のみを用いて実現し、明示的な同期やメモリバリアを回避する。
- 可能な限りプロデューサとコンシューマを同じコアにピン留めすることで、共有L1/L2キャッシュを活用し、フェイクシェアイングを低減する。
- コンパイラおよびメモリアクセス最適化を適用し、キュー操作のクリティカルパスにおけるL1およびL2キャッシュミスを削減する。
実験結果
リサーチクエスチョン
- RQ1動的メモリ割り当てのオーバーヘッドなしに、待機フリーかつ正しく動作する非束縛SPSCキューを実装できるか?
- RQ2マルチプッシュ最適化は、SPSCキュー操作におけるキャッシュパフォーマンスとレイテンシにどのように影響するか?
- RQ3プロデューサとコンシューマを同じコアにピン留めするコアアフィニティの影響は、キューのスループットとレイテンシにどのようなものか?
- RQ4実際のパイプラインワークロードにおいて、提案されたuSPSCキューは、バウンデッドSPSCキューおよび動的リストベースSPSCキューと比較して、どのように性能を発揮するか?
- RQ5PowerPCやItaniumのような弱いメモリモデルでも、メモリバリアに依存せずに、アルゴリズムを正しくかつ効率的に動作させられるか?
主な発見
- マルチプッシュ(mpush)最適化により、SPSCキューにおける標準的なプッシュ操作と比較して、L1キャッシュミスが約50%削減され、L2ミスは50%以上削減された。
- プッシュ/ポップ操作あたりの平均レイテンシは、標準SPSCの10–11ナノ秒から、マルチプッシュ版では6–9ナノ秒に低下し、性能が最大30%向上した。
- 実際のパイプラインベンチマークにおいて、非束縛マルチプッシュSPSC(muSPSC)キューは最大1.4倍のスピードアップを達成し、バウンデッドmSPSC(1.28)および動的リストベースdSPSC(0.98)を上回った。
- muSPSCキューはuSPSCキューほどキャッシュ最適化に依存しないため、バウンデッドな状況においてマルチプッシュ最適化がより大きな恩恵をもたらすことが示された。
- プロデューサとコンシューマが同じコアにピン留めされている場合、キャッシュ局所性の向上とフェイクシェアイングの低減により、性能が顕著に向上した。
- 提案されたuSPSCキューは、高価なメモリバリアと動的割り当てのオーバーヘッドを回避し、必要最小限の動的メモリ使用のみを採用しているにもかかわらず、リストベースの代替手段を上回る性能を達成した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。