テストと設定またはスワップなしのハードウェアロックの実装はありますか?


19

ロックは、通常、テストと設定およびスワップマシンレベルの命令によって実装されます。これらを使用しない他の実装はありますか?

また、クリティカルセクションの問題に対するすべてのハードウェアレベルのソリューションは、割り込みの無効化、テストと設定、およびスワップの3つだけに分類できると言えますか?

回答:


13

はい、メモリのロードとストアの命令のみで相互排除を実装できます。この問題に対する連続的により単純な解決策を考案する長い伝統があります。

「デッカーのソリューション」と呼ばれる、私が知っている最も古いバージョンは、エジガー・W・ダイクストラで紹介されました「協力シーケンシャルプロセス」、F。Genuys編、プログラミング言語:NATO Advanced Study Institute、pp。43-112、アカデミックプレス、1968年。それ以来、何十もの解決策があります。注目に値するもののほんの一部について説明します。

ランポート、レスリー; 「ダイクストラの並行プログラミング問題の新しいソリューション」、Comm ACM 17(8):453-455、1974は、「ベーカリーアルゴリズム」を導入しています(なぜなら、それは、順序を決定するために数字をとる人々のアナロジーに基づいているからです)ベーカリーショップで提供)。このアルゴリズムの特に注目すべき機能の1つは、相互排除の問題を解決するためにハードウェアの原子性がまったく必要ないことを示していることです。同じ場所への書き込みが重複する読み取りは、任意の値を返すことができ、アルゴリズムは引き続き機能します。 ランポートは、彼のホームページの論文の説明でこれについて少し議論しています

ピーターソンのソリューション、ピーターソン、GL; 「相互排除の問題に関する神話」Inf。手続き レット。、12(3):115-116、1981は、理解しやすく、推論するように特別に設計されたものです。最後に、私のお気に入りはレスポートのランポートです。「高速相互排除アルゴリズム」ACM Trans。比較 システム 、5(1):1-11、1987。このホワイトペーパーでは、重要なセクションの競合がほとんどない(一般的な)場合に、Lamportは相互排除問題の解決策を最適化しようとしました。相互排除とデッドロックの自由は保証されますが、公平性は保証されません。競合がないときにO(1)時間でN個のプロセッサを同期できるのは、通常の読み取りと書き込みのみを使用する最初の相互排除アルゴリズムです(私は信じています)。(競合がある場合、O(N)テストにフォールバックします。)彼は、競合のないケースでできることは7つのメモリアクセスであるという非公式のデモンストレーションを行います。(DekkerとPetersonは両方とも4でそれを行いますが、アルゴリズムをNに拡張すると、余分なO(N)アクセスを追加する必要がある2つのプロセッサしか処理できません。)

どうやら、メモリの読み取りと書き込みだけを使用して相互排除を解決する問題に取り組んでいる人は、問題とその解決策に対する他の人の(不足)理解にイライラします。これは、Petersonの論文のタイトル(「相互排除の問題に関する神話」)によって、また、Lamportが1991年に発行した短いメモによって部分的に実証されています。「相互排除の問題は解決されました」、Comm ACM 34(1):110、1991Lamportは彼のホームページでややひどく説明しています。

2番目の質問に答えるために:いいえ。クリティカルセクションの問題に対するハードウェアレベルのソリューションには3つ以上のカテゴリがあります(ロードとストアのみを使用することもあれば、比較とスワップの命令、ロードリンク/ストア条件付きの命令(キャッシュコヒーレンスプロトコルを使用してアトミック性をテストする)、およびフェッチアンドアド命令。別の意味では、ソリューションのカテゴリは1つだけです。非同期プロセスの束を取得して、イベントのグローバルな順序に同意するものです。 。

(この回答は、非常に異なる質問に対して行っ以前の回答の(広範な)編集であることに注意してください。)


もちろん、ll / scは、ロックの取得だけでなく、クリティカルセクション全体をカバーするより一般的なトランザクションメモリに拡張できます。ハードウェアが提供する保証の違いも重要なようです。前進が保証されることもあります(つまり、1人のエージェントが特定の時間にロックを獲得するためにレースに勝ちます)が、フェアネスに関連する弱い概念でさえ、通常はソフトウェアにパントされます(ある程度理解できる)。
ポールA.クレイトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.