FM音源プログラム (35) -- 速い ARM、遅い ARM

CQ 出版「デザインウェーブマガジン」2006年3月号付録基板 (FRK-ADuC) には ADI 製の ADuC7026 が搭載されています。
私は、ADuC7026 チップのリビジョンが「H3T」の基板 1 枚と、「I30」の基板 1 枚を持っています。
それぞれ 1 枚ずつなので、はっきりしたことは分かりませんが、どうも、H3T は遅くて、 I30 の方が速いようなのです。
プログラムの開発は、ずっと H3T の方で行っており、ある程度完成したところで、I30 の基板で試してみたところ、スピードの違いに気が付きました。 
これが、本当にチップ・リビジョンの違いによるものか、それとも、いろいろやっているうちに、どこか少し壊してしまったせいなのか、あるいは、私の手許にある基板だけの問題なのかは、分かりません。
両方とも、足上げなどは行っておらず、基板裏面に数μF の積層セラミックコンデンサを追加しただけです。
チップのバグ情報である「Silicon Anomaly List」は、リビジョン I30 に対するものは見つかりましたが、肝心の H3T に関するものは見つかりませんでした。 そのため詳細はわからないのですが、I30 の「Silicon Anomaly List」に気になる記述があります。
パフォーマンス関係に、参照番号「pr003」の「Execution speed」というのがあり、解決済み(fixed)となっています。もしこれが、H3T では解決されておらず、I30 で解決されたのなら、実行スピードに差があることが納得できます。
とにかく、実行スピードに差のあるチップが手許に 2 個あるのは事実なので、FM音源プログラムの初期化処理の中で実行スピードを測定し、そのスピードに合ったコンフィギュレーションを選ぶようにしています。
「arm.c」ファイル中の speed_test() 関数の中で、ハードウェア・タイマをセットした上で、空の if 文

for (i = 0; i < 1024; i++) {}

を実行し、実行に要したクロック数からスピードを測定しています。
実際には、コンパイラの最適化レベルにより、オブジェクト・コードが変化すると正しく判断できなくなりますから、あらかじめ、上のプログラムを THUMB モードでコンパイルした結果のアセンブリ・コード自体を、インライン・アセンブリ機能により C プログラム中に埋め込んであります。
具体的に、その部分を逆アセンブル結果で示すと、

0882C2 2000     MOV R0,#0x0
0882C4      L_1:
0882C4 3001     ADD R0,#0x1
0882C6 1C01     MOV R1,R0
0882C8 4B0A     LDR R3,[R15,#40] ;PoolRef@0x882F4
0882CA 4299     CMP R1,R3
0882CC DBFA     BLT L_1  ; T=0x882C4

0882F4 00000400 DD  0x400 ; POOL-Entry U=1

となります。
このループ部分の1回当りの実行クロック数が、実測で、速い I30 では 15 クロック、遅い H3T では 22 クロックかかります。
プログラムでの測定結果が 15 クロック以下なら速いチップ、そうでなければ遅いチップと判断しています。