いろいろ調べているうちに、みつけたサイトのひとつ。
何のサイトかというとテキストボックスにCortex-A8の命令を書くとそのクロック数をカウントしてくれるというもの。NEON命令にも対応しているっぽい(未検証)
ここで、いくつか実験的に書いてみると、Cortex-A8の特性が、おぼろげながら見えてくる。
いくつか書いてみる
たとえば適当に書いてみる。 まずは、1つ目の命令の結果を2つ目の命令で必要としている場合。
mul r3,r1,r2
mul r6,r3,r4
結果はこんな感じ。用は1つ目の命令が完全に終了するまで次の命令が実行できずにストールしているのが分かる。
次に、1つ目の命令と2つ目の命令が並列動作できるようすると
mul r3,r1,r2
mul r6,r4,r5
結果はこんな感じ。
はやり少しは待たされるけど、さっきよりはマシ。
次に、1つ目の命令と2つ目の命令が並列で動作可能なadd命令だと
add r3,r1,r2
add r6,r4,r5
結果はこんな感じ。
ああ、1サイクルで2命令実行されるんだね。
手に取るように挙動が見える
てな感じで、「こんな風に書いたら、どれだけクロック数かかるんだろう」というのが懇切丁寧に分かる。
Cortex-A8でアセンブリ言語でガリガリ書いててパフォーマンスが出なくて悩んでいる人、Coatex-A8をお勉強中のひと、ぜひとも勧めたい。
ARM9/11/XScaleハンドブック (TECH I Processor)
posted with amazlet at 11.03.29