データの容量について

デジタル回路で処理を行うデジタルデータの容量について考えてみる。

デジタルデータとは0と1を区別するビットの連続の事だと思うけれど、記録メディアは今現在で2TBぐらいの容量のHDDが購入出来るみたいなのでそのうち時代が進めばPB級のメディアを個人が購入出来るようになるのかもしれない。

メモリも最近は32bitの壁を越えて、16GBぐらいは個人が組むPCでも搭載出来るようになってる。そのうち64GBとか128GBとかもそこらへんのパソコンに積まれる様になるんだろうか…。

プロセッサとメモリのメモリ帯域幅intelのNehalemの場合、QuadCoreのCPUとトリプルチャンネルのDDR3の間では32GB/sくらい出るようで、複数CPUソケットを搭載した構成だと、ソケットのCPU毎に別のメモリが接続するみたいだ。複数ソケットのシステムはHPCでしか使われないだろうけど、お金に糸目をつけなければ性能は結構上げられるんだろう。

Cellのメモリ帯域は25.6GB/secみたいだ。今見ても結構高い数字だと思う。キャッシュが無いのでプログラミングが難しくて面倒くさいみたいだけれど、その分処理の効率が良いらしい。
http://www.artcompsci.org/~makino/articles/future_sc/note078.html

最新のGPUだとこれまたメモリ帯域が広いらしい。消費電力と発熱も凄いらしいけれど、時代が進めば新しい技術で作られた部品を使うので、なんとか使えるようになるんじゃないだろうか。近い将来にPCに搭載されるメモリの帯域幅は 1TB/sec くらいになるのかもしれない。恐ろしく熱が出そうだけれど、湯沸かし器とか暖房とPCが合体するようになるのかも。

絵を切り替えて表示するアニメーションの場合、1秒間に60コマくらいの速度で切り替えれば十分に滑らかになるというのが一般常識。なので一枚絵の容量を求めてそれに×60すれば片方向の転送容量が決まる。キャッシュやLSに収まらない大きさの絵にフィルタ等を掛ける処理をするとなると、一般的にメモリからデータを読み込んでプロセッサで処理してメモリに戻す必要が出てくると思う。そうすると読み込みと書き出しで倍の帯域を消費する事になるだろうか?マルチパスの処理だとその回数分だろうか。ディスプレイコントローラーとメモリとのやり取りはよくわからないので考えない事にする。

仮に絵の解像度を4096*2048として、ピクセルの色深度は16bit*4の64bitだとすると、64MBの容量になる。60fpsだと64MB*60で、3840MBになる。メモリから読み出して書き戻す必要が出てくるとなると倍の帯域を消費すると思うので、7680MBだろうか?数字だけで考えれば今でもそこそこ良いハードウェアだったら問題無く処理出来るのかもしれないけど…。

ここで3次元のボクセルデータについて考えてみる。各辺4096要素の3次元データで、各ボクセルの精度が16bit*RGBA4つ分で64bitのデータの容量は、512GBになる。1秒間に60回切り替えるとなると、30TBになる。これはちょっと数年先の未来では実現されなそうだ。StarWarsR2D2のハードウェアは優秀だ…。