- repeatedly
- 2051
- 0
- 0
- 0
ANF と CPS という略語の平均をとってつけた BOL という中間言語 [http://bit.ly/cUWLfq] があって、その BOL の後継言語が BOM ですか……。
2010-02-28 11:31:27Manticore では vporc(所謂 OS のスレッド)ごとに locall heap と global heap を割り当てて、immutable な値に関しては基本 local heap で並列に GC するみたいですね。
2010-02-28 14:44:51で、local heap が満杯になってくると、一番若い世代のデータを覗いて global heap に移し、最終的に vporc (で実行される Manticore プロセス)を全て止めて global heap に対して逐次的な GC を行なうと。
2010-02-28 14:51:49さて、local heap の並列 GC ですが、(基本的に)global heap や他の local heap から local heap へのポインタの参照を持たないので、 local heap の GC はロックなしで並列に行なえるそうです。
2010-02-28 15:00:43なお、Manticore では基本的には mutable な値を持たない(SML の参照型の機能を削ってある)ので、global heap で使用される共有変数もそんなに多くはならなそうですね。
2010-02-28 15:02:03スレッド間での値のやり取りには、メッセージングを使用します。(一応、CML の IVar や MVar、それと STM を実装する予定もあるそうですが、現在のところは未実装だそうです。)
2010-02-28 15:05:21local heap の GC は Copying GC、global heap の GC は……参照してある論文を読まないと分からなそうですね。Manticore の実装はまだ公開されていないので、現時点ではソースコードから読み取ることは不可能ですし。
2010-02-28 15:08:43あっ、メッセージングを使うのは CML のスレッドを使う時だけです。Haskell(GHC)と同じく、並列配列や並列変数(pval)などで implicit にスレッドを扱う場合には、値のやり取りは全て言語の裏側で行なわれます。
2010-02-28 15:11:45しょうがないので最後にこれだけ。この Manticore の並列 GC を、著者は "locally-concurrent/globally-sequential" collector と呼んでいるそうです。
2010-02-28 15:25:33ここまでつぶやいてきた Manticore の GC の話は、"Implicitly-threaded parallelism in Manticore" という論文の 5.4 に載っているので、きちんと整理された形で知りたければそちらを読んで下さい。
2010-02-28 15:28:21この論文は Manticore のページで公開されています。 http://manticore.cs.uchicago.edu/
2010-02-28 15:29:34@fibre_bundle あっ、ありがと〜☆♫ 今から出かけるので、Manticore のお話はまた後でしますね。
2010-02-28 15:31:21