河野真治 @ 琉球大学情報工学です。

2ch ゲハ版ネタ

Cell 80 は、結構、面白かったのだが、途中から、ソニーの45n投
資の縮小の話に占領されてしまったみたい。その最後のあたりに
出ていた話が割と面白かったのに、途中で終ってしまってます。

http://tinyurl.com/3xsjh5

が挙げられていて、少し前のデータだけど、

 3.2GHz Cell (8 SPEs)* 8.69 GFlops/s
 2.2GHz Opteron 0.60 GFlops/s
 1.4GHz Itanium2 0.32 GFlops/s

とか言う話。(Double precision) で、アンチがかみついているの
が、

「キャッシュの先読みすれば、(8 coreでも)同じぐらいの性能が出る」

という論法だった。これって、少し前(と言っても10年前だと思う...)
に流行った研究なんだよな。単純に、

 for(i=0;i<10000;i++) { int dummy = a[i+10000]; ..... }

みたいに、ちょっと先に触るような方法だとコンパイラに蹴られ
ちゃうし、コンパイラに作り込にしても、キャッシュのサイズ依
存になるので、具合が悪い。なので「キャッシュ先読み命令」を
用意しよう。ってな話。SSE3ではPREFETCHn とかいうのがあり、Int
el のcompiler や gcc は、このプリフェッチ命令を吐きます。え
らい。(このスライドだと、それを使っているかどうかはわからな
いんだけど Opeteron なのが微妙...) 

でも、前のスライドを見るとわかるんだけど、Cell の実装は、

 通信と計算をoverlapさせて行う

所に意味がある。これは、いわゆる、ソフトウェア・パイプラン
的な実装なんだけど、Cell は全体的にDeteministic に動くので、
予測ができるんだが、PREFETCH だと、そうはいかない。まして、
マルチコアでキャッシュが干渉するような状況ではね... 

そのあたりをどう言い訳するのかは面白そうだったんだが...

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科