CellのDMAと、Cacheの先読み
河野真治 @ 琉球大学情報工学です。
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
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735