タグ

memoryとparallelに関するundertheskyのブックマーク (3)

  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

    長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 - - じゅんいち☆かとうの技術日誌

    このエントリを読む前提条件として、マルチコア時代に備えて気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - じゅんいち☆かとうの技術日誌を読んで、リオーダーとは何かを理解していることとします。 前回のおさらいをすると、 プログラムの実行順序は、リオーダーが許可される場合と禁止される場合がある。並行処理ではリオーダーを想定しなければ、処理結果の整合性が確保できない。(特にマルチプロセッサ環境) リオーダーを禁止して、可視性を保証する。(finalフィールドはコンストラクト時に完全に初期化され、コンストラクト後はスレッドから見えるようになる) でした。 リオーダーについて理解できたら、今度はメモリバリア命令でスレッド毎に扱うメモリと、大域のメインメモリとのメモリI/Oについて見ていきたいと思います。メモリバリアが理解できれば、以下のソース*1のスレッドがな

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 - - じゅんいち☆かとうの技術日誌
  • マルチコア時代のメモリアクセス問題 : 2010-12-06 - J

    僕が抱える不治の病のひとつに、floorとceilのどっちがどっちだか永遠に覚えられないという病気がある。 特に問題なのが、あの記号である。あの記号は、僕の直感とは反対の意味を持つ。 僕の直感では、↓この記号は「天井が降りてきて値が減る」というイメージ ↓この記号は、「床が上がってきて値が増える」というイメージ なのであった。これは逆で、上の記号のほうがceilで切り上げ、下の記号のほうがfloorで切り捨てである。 と、いうわけで、仕方が無いので、僕はこれを「自分の直感とは逆なんだからねっ!!」というように覚えていたのだが、そういう覚えかたは肝心なときに、「あれ…逆ってどっちだったっけ…」とかなりがちである。 この覚えかたを、「可動式床天井方式」…それの反対なので…「反可動式床天井式(以後、反可式)」としておこう。 僕は長いこと反可式で覚えていたわけだが、あまりにどっちがどっちだかわから

    マルチコア時代のメモリアクセス問題 : 2010-12-06 - J
  • 1