メモリの進化の話

私が愛読してる後藤さんが、次世代メモリの動向を纏めていた。

http://pc.watch.impress.co.jp/docs/column/kaigai/20111107_488696.html

ナカナカ面白いと思ったので、幾らか思ったことを纏めておく。

メモリの進化

常々不思議だった訳だが、「どうしてメモリは遅いのか」という話である。
CPUの処理速度の進化に対して、メモリの速度は遅々として進まない。しかもDDR4は更に遅くなる。
GPUの処理速度は更に早く、結果的に追い付かなくなったので、GDDRに逃げた、ということも考えると、DDRの進化速度は遅過ぎる。

この記事ではサーバ向けが容量重視であることを考慮して、DDR4が容量に振る、ということを明確にしている。
つまり、我々一般コンシューマが不相応に巨大なメモリ使っているのも、不相応に遅いメモリを使わされてるのも、結局はサーバ向けが大量に卸され、結果的に量産効果で同じメモリなら、コンシューマ向けを同じにすることで安くなるという話なのだろう。

メモリバンク

DDR4から導入されることになっているメモリバンクだが、プログラマにちょっとした頭痛のタネを提供するんじゃないか、という予想がある。
つまり、異なるバンクへの同時アクセスであれば速度が増すけれども、同じバンクにデータが集中している場合、速度が出ないという問題である。
従って、データの並びを、できるだけ同時にアクセスするものは異なるバンクに収まるようにプログラミングする必要があるんじゃないか、と思われるのである。
CUDAとかのGPGPUや、ベクトル計算機のプログラミングやったことある人はすぐにピンと来るかもしれない。CUDAだとShared Memory Bank Conflictとか呼ばれている問題である。
コンパイラやキャッシュでどこまで隠蔽されるかは分からないが、メモリがネックになるようなアプリでは注意深く設計する必要性が出てくるかもしれない。