NAKAMURA Minoru の日記 (2010年6月)

先月の日記(2010年05月) 今月の日記(2010年06月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita



6/28 (月)

覚え書き

家賃払った。


6/27 (日)

オルセー美術館展 2010 ポスト印象派 (公式)

六本木の国立新美術館で開催されている「オルセー美術館展 2010」を見に行く。

国立新美術館は千代田線の乃木坂駅で降りて6番出口から直結されているらしいのだが、 誤って3番出口から出てしまう。 おかげで立体的な六本木・乃木坂界隈の地形の迷子。 乃木坂トンネルを越えて、青山霊園の周囲をさ迷ってしまう。

乃木坂トンネル
乃木坂トンネル

なんとか国立新美術館に辿り着くが、この時すでに17時。

国立新美術館の建物
国立新美術館の建物
国立新美術館の建物を別の角度から
別の角度から
2階
2階
変なオブジェクト
変なオブジェクト

今回の展示では、 モネ、ドガ、セザンヌ、ロートレック、ゴッホ、ゴーギャン、アンリ・ルソーなどの作品が来日。 印象派の絵、特に点描の技法を使った絵は、 キャンバスの上ではなく観る人の頭の中で色を混ぜる効果を狙っている。 そのため写真で観るのと実物を見るのは随分印象が違う。 クロード・モネの「睡蓮」、カミーユ・ピサロを実際に眼で見れたのが嬉しい。


6/18 (金)

創立日のお弁当列伝

本日は会社の創立記念日である。

創立記念日にはなぜかお弁当が配付されるのだが、 2003年以降のお弁当を毎年デジカメで記録しているのだが、 公開してみる。

お弁当はオフィスによって発注先が違うのだが、 写真で見返してみると今いるオフィスの記念弁当(2006年以降?)は見事にフォーマットが決まっていることが分かるなぁ。


2003年

2004年

2005年

2006年

2007年

2008年

2009年

2010年

6/13 (月)

[時事] 小惑星探索機はやぶさ地球帰還

2003年5月9日に地球を飛び立った小惑星探査機「はやぶさ」は、 2005年に小惑星イトカワに到着。 5年をかけて地球に帰還し大気圏に再突入した。


6/12 (土)

ポンペイ展@横浜美術館 (公式)

横浜美術館でやっているポンペイ展の会期が明日までなので滑り込みで観てきた。

ポンペイの火山灰の下から引き上げられた調度品の展示なのだが、 ヘレニズム文化の残光の圧倒的な先進性に打ちのめされる。 ひねるとお湯ができる浴室が紀元1世紀にあったんですよ?しかも追い焚きまでできる。

ポンペイはヴェスヴィオ山火山灰の下に沈んだが、 調度品の形が残っていただけではなく、 絵画まで復元可能な形で残っていたと言うのはしらなかった。 この手の込んだインテリアが貴族とはいえ個人宅に飾られていたんだね。

ところで横浜美術館って常設展が結構すごかったのね。 ルネ=マグリットとかダリが絵画が無料で入れるスペースに展示されているよ。

ルネ・マグリット「王様の美術館」
ルネ・マグリット「王様の美術館」
サルバドール・ダリ「幻想的風景―暁、英雄的昼、夕暮」
サルバドール・ダリ「幻想的風景―暁、英雄的昼、夕暮」

[Food] ざくざくラー油バーガー@モスバーガー

お昼にモスバーガーの新作の「ざくざくラー油バーガー」を食べる。

ざくざくラー油バーガー
ざくざくラー油バーガー
ざくざくラー油バーガー
ちょっと齧った後

ラー油はガーリックやオニオンの切片に染みさせているようだ。 あまり辛くないよ。

[Food] Soup Stock Tokyo@横浜 (公式)

横浜駅のスープストックトーキョーで 「とうもろこしとさつま芋の冷たいスープ」を食べる。

さつま芋ベースなのにビシソワーズのようなジャガイモの味がする。 不思議だ。

[Food] 九州大分らぁめん たまがった@横浜

「たまがった」で晩飯を食べて帰る。

看板
看板
とんこつ
とんこつ

6/8 (火)

[Food] 埼玉川越「頑者」@新横浜ラーメン博物館 (公式)

新横浜ラーメン博物館が 6/2 に埼玉川越「頑者」がオープン。 これは読売新聞にも取り上げられた(「「つけめん」は「ラーメン」です…論争に決着」)。

横浜市港北区の新横浜ラーメン博物館は、近年、多くのラーメン店のメニューにも見られる「つけめん」の命題を検証し、「ラーメンの一種として食文化を確立した」との研究成果をまとめた。 同博物館は2日、1994年の開館以来初めてとなるつけめん店を出店する。

「開館以来初めて」というが、 自分の記憶が確かなら2004年につけ麺を出す「春木屋」が入っていたのだが (2004年1月15日の日記2004年1月29日の日記)。 まあ気にせずに食べてきた。

スープは魚介が強いあっさりスープ。 つけ麺は近所の「あびすけ」(2007年5月20日の日記2008年1月14日の日記)の濃厚な味に食傷していたので、かえって美味しく感じる。 ただ麺がうどんのように太いのが最近辛くなってきた。 細くするのはダメなんだろうか?


6/7 (月)

[CPU] Intel x86系 CPUのロード・ストアバッファの動作

Intel x86 系 CPU のロード・ストアバッファの動作の調査。

Core i7 CPU は ロードのレイテンシが 4 サイクルだが、 48 ロードバッファと 32 ストアバッファを持っている。 これで下のようなプログラムを走らせてみる。

uint64_t  array[128] = { 1, 2, 3, ..., 127, 0}; 

for (;;) {
    index0 = array[index0];
    index0 = array[index0];
    index0 = array[index0];
    index0 = array[index0];
}

これが以下のようなアセンブラに変換されたとすると、 すべての mov 命令には %rax のデータ依存が存在するため、 前の命令が終わらない限り次が実行できない。 array からのロードがキャッシュにあたると仮定すると、 全てのロードは 4 サイクルずつかかるので、 for 文の1イテレーションが16サイクルになる。

;; %rdi := pointer of array, %rax := index0
mov (%rdi,%rax,8),%rax  ;;  0 サイクル目に実行
mov (%rdi,%rax,8),%rax  ;;  4 サイクル目に実行
mov (%rdi,%rax,8),%rax  ;;  8 サイクル目に実行
mov (%rdi,%rax,8),%rax  ;; 12 サイクル目に実行

データ依存の発生している命令列が2本になった場合、 それぞれの列に属する命令は out of order で実行できる。 index1 のロード命令が index0 のロード命令よりも先に開始される。 1サイクルに発行できるロード命令は1個だが、 ロードのレイテンシの4サイクルに隠れて for 文の1イテレーションは16サイクルのままである。

for (;;) {
    index0 = array[index0];
    index0 = array[index0];
    index0 = array[index0];
    index0 = array[index0];

    index1 = array[index1];
    index1 = array[index1];
    index1 = array[index1];
    index1 = array[index1];
}
;; %rdi := pointer of array, %rax := index0, %rdx := index1
mov (%rdi,%rax,8),%rax  ;;  0 サイクル目に実行
mov (%rdi,%rax,8),%rax  ;;  4 サイクル目に実行
mov (%rdi,%rax,8),%rax  ;;  8 サイクル目に実行
mov (%rdi,%rax,8),%rax  ;; 12 サイクル目に実行

mov (%rdi,%rdx,8),%rdx  ;;  1 サイクル目に実行
mov (%rdi,%rdx,8),%rdx  ;;  5 サイクル目に実行
mov (%rdi,%rdx,8),%rdx  ;;  9 サイクル目に実行
mov (%rdi,%rdx,8),%rdx  ;; 13 サイクル目に実行

このロードの間にストア命令が挟まった場合 %rsi の指すアドレスが array[] に触れない場合は out-of-order 実行機能は動作する。 Core i7 だとスーパースカラーの中で吸収されて実行サイクルの増加はない。

一方、%rsi が array[] を書き換えるようであれば、 後方のロード命令に影響が出てくる。 実際に実行サイクルが伸びるのを確認。

;; %rdi := pointer of array, %rax := index0, %rdx := index1
mov (%rdi,%rax,8),%rax  ;;
mov (%rdi,%rax,8),%rax  ;;
mov (%rdi,%rax,8),%rax  ;;
mov (%rdi,%rax,8),%rax  ;;

;; %rcx に依存を作るためにわざと %rax を足して引いている
add $rax, %rcx
sub $rax, %rcx
mov %rcx, (%rsi)

mov (%rdi,%rdx,8),%rdx  ;;
mov (%rdi,%rdx,8),%rdx  ;;
mov (%rdi,%rdx,8),%rdx  ;;
mov (%rdi,%rdx,8),%rdx  ;;

Intel x86 CPU は、 ロードバッファが許す限り極力先行してメモリリードは行なってくれる。 ただストア命令が間に入る場合の動作はよく分からん。

mov (%rdi,%rdx,8),%rdx のメモリリードが始るのは、いつなのだろうか? その前の mov %rcx, (%rsi) のストアアドレスと重ならないことを確認できてからなのか? それとも mov (%rdi,%rdx,8),%rdx は投機的にロードを実行して、 mov %rcx, (%rsi) がメモリを書き替えた場合にパイプラインを巻き戻すのであろうか?

追記:6/10

Intel 64 and IA-32 Architectures Optimization Reference Manualの 2.1.4 節に書いてあった。 Core アーキテクチャ以降の Intel Advanced Memory Access は、

A memory ordering buffer (MOB) - Which:
  • enables loads and stores to issue speculatively and out of order
  • ensures retired loads and stores have the correct data upon retirement
  • ensures loads and stores follow memory ordering rules of the Intel 64 and IA-32 architectures.

ロードもストアも投機的に out-of-order 実行して、 MOB がメモリオーダリングを守るように調停しているみたい。

実際のテストプログラムを書いて、 アドレスが事前に計算できないストア命令をロード命令が追い越して実行しているのを確認。 なんらかの方法でパイプラインを巻き戻しているようだ。

コメントを書き込む
[1] [ふるかわ] 2010-06-10 15:14:15
Pentium4にはSelective Replayという、ロードレイテンシを予測ミスした場合、依存する命令だけを再実行する機構がついていました。(常に1次キャッシュにヒットすると予測するんだったかな)
この例のようにメモリデータフロー依存がある場合についての動作はわかりません。
Core iがどうなっているのかもわかりません。
[2] [ふるかわ] 2010-06-10 15:19:26
選択的再実行そのものは原理的にはメモリデータフローの予測ミスにも使えるはずですが、L1-L2の予測ミスだけであれば、固定サイクルだけバブルを挿入するというシンプルな実装もありえます。
(そうするとメモリデーターフローのような非同期的なイベントは扱えません)
[3] [nminoru] 2010-06-10 20:38:14
> ふるかわさん
情報ありがとうございます。
Core 系はアドレスが決まったものはロードもストアも投機的に issue し、、後で memory ordering buffer が調停するようです。
実際テストプログラムを書いても 48 ロード & 32 ストアまできっちり out-of-order 実行されています。
[4] [ふるかわ] 2010-06-12 01:14:47
ありがとうございます。
> なんらかの方法でパイプラインを巻き戻しているようだ。
大半のプロセッサは分岐予測と同様に、ロードも予測ミスした命令から再フェッチしているはずです。
Pentium4はリオーダバッファに細工がしてありそこから再実行すべき命令が供給されていたと思うのですが(Selective Replay)、P4とP6系ではそのへんの構造がまったく異なりますから、不採用かもしれません。
マイクロアーキテクチャ的にもP6ではP4での時ほどの効果は出ないはずですし。

6/5 (土)

AppleとSONY以外の携帯音楽プレイヤーがほとんど死滅している

iRiver の iHP-120 をずっと使っているが (2003年12月21日の日記2010年1月29日の日記)、 最近バッテリーの減り方が気になってきた。 もうそろそろ寿命がつきそうだ。

そこで横浜に本を買いにきたついでにヨドバシカメラやビックカメラを見て廻って 携帯音楽プレイヤー売り場を覗く。 ただどの店も Apple と SONY 以外の携帯オーディオプレイヤーがほとんど置いてないか、 置いてあっても非常にぞんざいな扱いだ。

Creative とか iRivier が片隅に展示はされているのだが、 モックアップじゃないのに電源が入ってないとか、 電源が入っているけどスピーカーもイヤホーンにもつながっていないのとか。 売ろうという気概が感じられない…。

ところで私の考える理想の携帯音楽プレイヤーはこんな感じ。

  1. USBマスストレージとして接続可能で、ファイルを置くだけで再生可能。 専用のアプリなしで使えること。
  2. 目視しないでポケットの中にいれたまま曲のスキップが可能なこと。 つまり物理的なスイッチがあること。
  3. MP3のタグ情報のうち表示するものが設定可能なこと。
  4. メモリカードが挿せてメモリが拡張できるのがよい。 というか内蔵フラッシュメモリはなしで、 デジカメ的なアプローチはとれないかしら?かえって高くつく?
  5. バッテリーは携帯あたりから流用して取り替え可能にして欲しい。

録音機能と FM ラジオ機能はあっても使わないことが分かった。

4GB の SDHC カードを購入

デジカメ用に 4GB の SDHC カードを購入。 2GB とか 4GB のフラッシュメモリってもう悲しくなるぐらいに値段が下がっているのね。

今手元にあるフラッシュメモリのデバイスは以下の通り。 少し歯が抜けているなり。

  • 8MB の mini SD カード
  • 16MB の SD カード
  • 32MB の USB メモリ
  • 64MB の SD カード
  • 128MB の SD カード
  • 1GB のコンパクトフラッシュ
  • 2GB の SD カード
  • 4GB の SDHC カード

[Food] ちゃぶ屋 とんこつ らぁ麺 CHABUTON (ヨドバシ横浜)

ヨドバシ横浜の2階のレストラン街にある「ちゃぶ屋」。

フレンチの手法で作ったラーメン「ベーコンとスッキーニの洋風コンソメらぁ麺」を食べる。 本当にコンソメスープなのか? 塩ラーメンっぽい。


先月の日記(2010年05月) 今月の日記(2010年06月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp