Happy My Life

日常とか技術とか

Cortex-A8のクロック数を数える

いろいろ調べているうちに、みつけたサイトのひとつ。

何のサイトかというとテキストボックスに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をお勉強中のひと、ぜひとも勧めたい。