
2025/12/03 7:10
Dhrystone
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Dhrystone(ドリストーン)は、1984年にReinhold P. Weickerが整数中心のシステムプログラミングをモデル化し、その後は一般的なCPU性能を測定するために作成した合成ベンチマークです。名前は浮動小数点ベンチマークWhetstone(ウェットストーン)からの語呂合わせで、Whetstoneとは異なりDhrystoneには浮動小数点演算が含まれません。
WeickerはFORTRAN、PL/1、SAL、ALGOL 68、およびPascalで書かれたプログラムからデータを集め、プロシージャ呼び出し、ポインタ間接参照、代入といった共通構造を特徴付けてベンチマークミックスを作成しました。オリジナル版はAdaで公開され、Rick Richardsonによる広く使用されたC実装(バージョン 1.1)がUnixシステム上での普及に寄与しました。
結果はDhrystones per second(メインループの反復数)として表されます。この指標をアーキテクチャ中立化するため、DMIPSはこのスコアを1757で割ることで導出されます。1757はVAX 11/780の基準性能です。
バージョン 2.0(1988年3月)ではコンパイラ最適化を妨げる変更が加えられ、バージョン 2.1(1988年5月)が2010年7月時点での現在の定義です。Dhrystoneは小規模なコードとデータセット、文字列操作の過剰表現、および浮動小数点演算がないため、近代的システムの比較には有用性が制限されます。高い移植性を持つ一方で、コンパイラ最適化に敏感であり、命令/データキャッシュに完全に収まるコードパターンを使用しているため、現代的なワークロードを反映しません。
これらの欠点にもかかわらず、Dhrystoneは組み込みコンピューティングで広く引用されています。EEMBC、CoreMark、HINT、Stream、Bytemark、Cachebench、TTCP、およびキャッシュ適合問題に対処するために1988年に作成されたSPECintといった新しいベンチマークスイートが、より現実的な性能評価のためにますます利用されています。
このバージョンはリストからすべての重要ポイントを保持し、不適切な推測を除去し、曖昧さのない明確で簡潔な主旨を提示しています。
本文
ウィキペディア – フリー百科事典から
Dhrystone(ドライストーン)は、1984 年に Reinhold P. Weicker によって開発された合成計算ベンチマークプログラムです。システム(整数)プログラミングを表すことを目的としており、その後は汎用プロセッサ(CPU)の性能指標として利用されるようになりました。「Dhrystone」という名前は、浮動小数点演算性能を重視する Whetstone ベンチマークに対する語呂合わせです。
Weicker は FORTRAN、PL/1、SAL、ALGOL 68、Pascal など多種多様なソフトウェアからメタデータを収集し、プロシージャ呼び出し・ポインタ間接参照・代入といった共通構造でプログラムを特徴付けました。この分析に基づき、代表的な構成比率を反映する Dhrystone ベンチマークを書き起こしました。最初のバージョンは Ada で公開され、Unix 用 C バージョン(1.1)が Rick Richardson によって開発され、その人気に大きく貢献しました。
Dhrystone と Whetstone の違い
- 浮動小数点演算を含まないため、「Whetstone」に対する語呂合わせが成立します。
- 出力は「Dhrystones per second」(1 秒あたりに実行されるメインループの反復回数)です。
- 両ベンチマークとも合成的で、プロセッサ使用を統計的に模倣しています。
Dhrystone が対処した課題
- コンパイラ最適化 – 現代のコンパイラは不要コードの除去や文字列コピーをワード移動に置き換えることで結果を歪めることがあります。バージョン 2.0(1988)はそのような手法への対策が加えられ、現在も使用されている定義は 2.1 版です。
- 小規模コード/データサイズ – ベンチマークの非常に小さなフットプリントは命令キャッシュ・データキャッシュ全体に収まることがあり、キャッシュ性能を十分に試せないケースがあります。
- 文字列操作の過剰表現 – Ada や Pascal では文字列を通常変数として扱いますが、C ではそうしません。そのため、実際のアプリケーションよりも文字列コピー操作が多くなる傾向があります。
性能評価
- DMIPS(Dhrystone MIPS) は、生得スコアを 1757(VAX 11/780 の 1 秒あたりの Dhrystones 数、名目上は 1 MIPS マシン)で割ることで算出されます。
- DMIPS/MHz はさらに CPU 周波数で DMIPS を正規化し、サイクルあたり命令数に相当するアーキテクチャ非依存の指標を提供します。
Dhrystone の使用上の落とし穴
- 現代プログラムを代表していないコードです。
- コンパイラ最適化により性能が 30 % 超過で報告されることがあります。
- 小さなサイズはキャッシュに収まり、キャッシュミス挙動を検証できません。
- 1988 年に SPECint が開発され、これらの欠点を補うためにより大規模なプログラムが採用されました。
参考文献(抜粋)
- Weicker, R.P. (Oct 1984). Dhrystone: A Synthetic Systems Programming Benchmark. Communications of the ACM, 27(10):1013–1030.
- Richardson, R. (1991). C Version of Dhrystone.
- Zappa, F. (2017). Microcontrollers: Hardware and Firmware for 8‑bit and 32‑bit Devices. p. 66.