Dhrystone

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

Dhrystone(どらいすとーん)は、1984年に Reinhold P. Weicker が開発した合成ベンチマークプログラムであり、システム(整数)プログラムの(訳注: 英語版に「system (integer) programming」とあるわけだが、もちろんプログラマのプログラミングの効率に直接に[1]関係があるわけでもないし、一般的に言うシステムプログラム、例えばOS呼出のパフォーマンスを決定するシステムコールのオーバヘッド等も関係ない。それ以前の有名なベンチマークであるWhetstoneが浮動小数点演算のベンチマークであり、一般にシステムプログラムは浮動小数点演算とは無関係だから、という点が(主として提案当時に)注目されたために、そういったように(主に業界メディアや、業界常識問題を出しがちな試験等で)書かれたことによるものであり、ベンチマーク自体は「非・浮動小数点数値演算的」と形容するのが正確であろう)パフォーマンスに注目したベンチマークである。Dhrystoneは、SPECint として知られている CPU89ベンチマークが現れるまで、汎用プロセッサの性能を表すものとしてよく使われた。

Dhrystoneベンチマークは浮動小数点演算を含まない。それは名前にもあらわれていて、浮動小数点演算のベンチマークとしてDhrystoneより以前からある有名なWhetstoneをもじったものである。ベンチマークが出力するのは一秒間のDhrystone数(メインループを一秒間に何回回ったか)である。

Whetstone も Dhrystone も「合成」ベンチマークである。つまり一般的なプログラムを統計的に分析して、その負荷を再現するよう注意深く設計された単純なプログラムである。Whetstone は 1976年に開発された。1970年ごろから一般的な ALGOL 60 のプログラムの負荷を再現するよう調整されていたが、FORTRANバージョンが一般化した。Whetstone は 1960 年代の数値演算の負荷を再現したものと言える。

Dhrystone では、Weicker は様々なプログラムから情報を集めた(FORTRAN、PL/1、SAL、ALGOL 68、Pascal)。そして、それらのプログラムの基本構造(プロシージャ呼び出し、ポインタ操作、代入など)を抽出した。そしてそこから得られた使用頻度を元にして Dhrystone ベンチマークを作成したのである。オリジナルの Dhrystone は Ada で書かれていた。UNIX向けの C言語版は Rick Richardson が開発し(バージョン 1.1)、Dhrystone の普及に大きく貢献した。

Dhrystone はコンピュータの性能指標としての地位を確立し、商用コンパイラ作者はこれを目標として技術を磨いていった(あるいは、ベンチマーク的なパターンを見つけると、丸ごと予め用意した特別にチューニングされたコードを出力するといったような、チート技術を磨いた者たちもいた)。様々な手法が開発され、合成ベンチマークの設計は困難になっていった。Weicker と Richardson が 1988年に開発したバージョン 2.0 では、そのようなコンパイラの技法の裏をかく大幅な改造がなされた。基本的なベンチマークとしての性格は残すよう、注意深くコーディングされている。コンパイラの裏をかくという目的は部分的にしか成功しなかった。同年の5月にリリースされた Dhrystone 2.1 が現在も使われ続けている。

コンパイラの最適化以外にも問題はある。その大部分は 1984年当時から指摘されていたことで、コードとデータのサイズが極めて小さいことも含まれる。もっと細かい話では文字列操作が言語に深く依存している点に問題があると言われている。Ada や Pascal は文字列を基本データ型としているが、C言語ではそうではない。従って、文字列変数への代入は C ライブラリでは単なるバッファのコピーになってしまう(そもそも「文字列変数」などというものは無い)。

Dhrystone ベンチマークの測定結果は DMIPSDhrystone million instructions per second)で表されることも多い。これはDhrystoneの値を 1757 で割ることで得られる(1757 はVAX 11/780 における値、すなわちいわゆるVAX MIPSである。単なる命令実行数によるMIPS値では、命令セットの違いによる命令の機能の違いにより比較できないので、ベンチマーク値を元にした相対的なMIPS値という考え方である。定義から同機は1DMIPSである(なお、同機が1MIPSだったわけではない))。

Dhrystone は単純なベンチマークとして根強く生き残っている。扱いやすく、文書もそろっていて、単独で使うことができ、どんなシステムでも測定可能だからである。特に組み込み市場ではよく使われているが、CPU89 が汎用のコンピュータ市場でその役割を奪ったように EEMBC ベンチマークが最近取って代わろうとしている。20年も使われ続けたのは、ある面では設計の良さと先見性であろうし、ある面では「変えてしまうと比較対象にならない」というベンチマークゆえの宿縁というか呪縛のようなものであろう。

[編集]

  1. ^ 当然ながら一般論として高速なコンピュータで開発をした方が効率は良いが、ここではそういう話をしているわけではない。