Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP- UX Developer Edge

Itaniumの「底力」を引き出すHPのコンパイラ技術・前編

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
Itaniumの「底力」を引き出すHPのコンパイラ技術・前編
Itaniumの「底力」を引き出すHPのコンパイラ技術・前編
コンパイラあってのItanium
「HP Cコンパイラの最適化機能」

「HP Cコンパイラの最適化機能」

プレディケーション

 
  プレディケーション(predication)とは、分岐命令によるパイプラインの乱れを解消するItanium独特の機構である。x86プロセッサーの分岐予測(分岐先をパイプラインに先読みする機能)の確率は9割程度とされている。これはつまり、およそ1割の分岐命令で予測が失敗し、パイプラインの空きにより10〜20クロック分の遅れが発生していることを意味する。これに対しItaniumのプレディケーションは、分岐そのものをなくしてしまうことで、この遅延を元から絶つというアプローチだ。  

例えば、以下のようなコードがあるとしよう。

  if (a == 0) {
   x = 0;
} else {
   x = 123;
}
 

通常のコンパイラでは、こうしたコードは分岐命令に変換される。一方Itanium対応コンパイラに最適化オプションを指定すると、分岐命令の代わりに以下のようなプレディケーションを利用したコードが生成される。

 
  cmp.eq p1,p2 = a,0 ;;
(p1)   mov x = 0
(p2)   mov x = 123
 

ここで、p1およびp2として示されているのはプレディケート・レジスタと呼ばれる特殊なレジスタで、比較演算の結果を保持するために用いられる。プレディケート・レジスタの働きにより、上記コードは以下のように動作する。

  1) a == 0ならp1 = 1、p2 = 0を実行する
2) mov x = 5を実行し、p1 == 0なら結果を破棄}
3) mov x = 123を実行し、p2 == 0なら結果を破棄
 

つまりプレディケーションでは、分岐結果がどうであれ、分岐先である2)と3)を両方とも実行してしまう。
そして最終的にはプレディケート・レジスタの値を参照し、分岐先の結果だけを残す。前述のとおりItaniumでは最大6命令を同時実行できるので、2)と3)を両方同時に1クロックで処理できる。このように、Itaniumの高度な並列性を活用してパイプラインをつねにコードで満たすのがプレディケーションの技法である。

HP Cコンパイラの最適化機能


テンプレートや投機実行、プレディケーションといったItanium固有のメカニズムは、Itanium対応コンパイラの最適化機能を利用しない限り、フルに活用されることはない。そのため前出のマケール氏は、「gcc」などの汎用のコンパイラではItanium本来の性能をうまく引き出せないと強調する。事実、「Itanium対応のHP CコンパイラでSPECint2000ベンチマークを計測すると、gccと比較して約80% の性能向上が得られる」(マケール氏)という。
 
gccとHP Cコンパイラの性能比較
(図4:gccとHP Cコンパイラの性能比較)
   
  図4は、gccに-Oオプションを付加してコンパイルしたコードの性能を基準として、HP Cコンパイラに様々な最適化オプションを指定したときに得られる性能を示したグラフである。いずれもベンチマークとしてSPECint2000を使用し、1 GHz動作のItanium 2上で計測された値から算出されたものだ。「+O2」や「+O3」、「+O4」は、それぞれHP Cコンパイラによる最適化レベルを示しており、+O4を指定するとすべての最適化機能を使ったコンパイルを実施する。「PBO」とは、後述するプロファイル・ベース最適化の併用を表す。また「Baseオプション」および「Peakオプション」とは、SPECint2000が規定するルールに則したオプション指定を意味する。

このグラフが示すように、HP Cコンパイラによる最適化を実施するだけで、既存のItanium搭載サーバの性能を2倍近く改善できるケースもある。要するにコンパイラによる最適化なしでは、Itaniumに備わる数々の先進的なメカニズムが「宝の持ち腐れ」となってしまうのだ。そこで後編では、HP Cコンパイラにおける最適化オプション指定のポイントを説明しよう。

関連リンク

 
プログラミング/チューニング関連のソフトウェアのご紹介
HP-UX関連のダウンロード先の紹介
 
トップへ 戻る    

その他のコラム(特集)もお読み下さい

 
 

本ページの内容は執筆時の情報に基づいており、異なる場合があります。
印刷用画面へ
プライバシー ご利用条件・免責事項