POV-RAY v3.7 beta 29

POV-RAYも、プレビュー編で主要なスコアは示しているので、メモリと64bitの効果を確認しておきたい。

まずグラフ26がメモリ構成別のスコアであるが、やはり殆どスコアに差が見られないのは、CineBenchの結果からみても順当なところと言えるだろう。POV-RAYもレンダリング対象を細かくブロック分割してそれぞれレンダリングする形になるから、あまり大量のメモリは必要としない(というか、そういう風にプログラミングされていると言える)。なので大半の作業がL3でカバーできてしまい、相対的にメモリアクセスの性能がそれほど重要ではないというあたりだと思われる。

では64bitは? ということでグラフ27だが、ここで面白い結果が出た。Hyper-Threadingを有効にしても、そう大きく性能が伸びるわけではないというのはプレビュー編での結果で示したとおりだが、こと64bitではHyper-Threadingを有効にすると大幅に性能が伸びている事が判る。Hyper-Threadingを無効にするとあまり性能が伸びない(というか、32bitと64bitでは大差ない)し、One CPUでのレンダリング結果はどれも似たり寄ったりなことを考えると、これは64bit環境ではHyper-Threadingが効果的に働く、という理屈になる。

ここからは想像だが、POV-RAYの場合、32bitでHyper-Threadingを有効にしても効果が上がらないのは、データの受け渡しにRegisterを多用しすぎていて、Register Renamingでも対応しきれないほど効率を落としているためではないか? と思える。Hyper-Threading環境でも、これがボトルネックになって性能が上がらなくなっていたという話だ。これが64bitでビルドすると、きちんとR16までの汎用レジスタを使い切ってくれるので、Register Renamingもしやすくなり、結果してきちんと実行ユニットを使い切ってくれるようになった、というあたりだろうか?

検証にはきちんとProfilerあたりを使って、ボトルネックとなっている箇所を特定しないといけないので今回は省くが、なかなか興味深い結果になっている事は間違いない。機会があればもう少し追っかけてみたいところだ。