読書会(The Art of Multiprocessor Programming)第8回議事録

[ 戻る ]


「The Art of Multiprocessor Programming」を読む会 第8回 議事録
日時: 2011年3月26日(土) 10:00-17:00
場所: てくのかわさき 第4研修室
出席者: 高橋(徹) 高橋(智) まさあき 遠藤 小棚木 村山 吉本 門脇 松永 根本(記)

p422. 16.5 ワークスティーリングキュー から p487 18.3.8 ロックベースの不
可分オブジェクト まで

P422
16.5 ワークスティーリングデキュー
16.5.1 有界ワークスティーリングデキュー
16.5.2 非有界ワークスティーリングデキュー
16.5.3 ワークの平衡化
16.6 注記
各スレッド間のキューの再並行化の推進
Work Stealing DEqueue
ABA問題(10章) を引き起こしうるのでstampを追加し、カウントする。

17 バリア
17.1 概要
17.2 バリア実装
17.3 センス反転バリア
threadSense = new ThreadLocal() { ...
ThreadLocalをサブクラス化するテクニックが有効に見える。

17.4 結合ツリーバリア
17.5 静的ツリーバリア
17.6 終了検知バリア
Cacheミスの比率は?
全てのスレッドが終了したことを検知するためにバリアを設ける。
スレッドを盗む前に自分自身のThreadを「活性」にしておき、盗むのに失敗した
場合でも、全体での処理終了を防ぐ「安全性」を確保し、「活 性」「安全性」
の両方を確保するテクニック。
ディスセミネーション(ばらまき)バリアとは? 洋書には載っていたが、日本語
版では落ちている?
17.7 注記
17.8 練習問題

18.1 トランザクショナルメモリ
18.1.1 ロックの問題点
18.1.2 CompareAndSet()の問題点
18.1.3 合成性の問題点
18.1.4 対処法
18.2 トランザクションと不可分性
18.3 ソフトウェアトランザクショナルメモリ(STM)
MESI(メシ)プロトコル : プロセサ間での同一キャッシュの管理プロトコル

P480 これで不可分オブジェクトの実装方法が2つあることがわかった。←この2
つが不明?
下記原文も同じ記述。
We now have two alternative atomic object implementations. The
implementations will be relatively unoptimized to simplify the presentation.

P481
1.BがCOMMITEDであった場合、は新しいバージョンが現在の状態である。
この部分の記述の英文は下記、翻訳ミスではないようだ。

1. If B was COMMITTED, then the new version is current. A installs
itself as the object’s current owner, sets the old version to the prior
new version, and the new version to a copy of the prior new version (if
the call is a setter), or to the new version itself (if the call is a
getter).
2. Symmetrically, if B was ABORTED, then the old version is current. A
installs itself as the object’s current owner, sets the old version to
the prior old version, and the new version to a copy of the prior old
version (if the call is a setter), or to the old version itself (if the
call is a getter).
3. If B is still ACTIVE, then A and B conflict, so A consults the
contention manager for advice whether to abort B, or to pause, giving B
a chance to finish.
One transaction aborts another by successfully calling compareAndSet()
to change the victim’s status to ABORTED.

P487 下から6行目
98のスタンプを持つオブジェクトを読み取ったAは、スレッドBの読み取りスタン
プが98よりも小さいことからBの変更に気づく。...
この部分の表記は正しいのか?  正しいらしい。

次回は P488 仕組みから


[ 戻る ]