So-net無料ブログ作成
検索選択

サイクルタイムを測定しよう (2) [ざれごと]このエントリーを含むはてなブックマーク#

実験回路

前回の記事では、 CyDelay() 関数のサイクルタイムを測定しました。 今回は、 CyDelay() が無かった場合のサイクルタイムを測定します。

ソースコードとバイナリー

ソースコード

前回のプロジェクトを改造して測定を行います。 ソースコードからは、単純に CyDelay() 関数を削除します。


バイナリー

すると、 "ldr r0,[r3]" インストラクションと "ldr r3,[r0]" インストラクションが連続して並びます。 つまり、 "ldr" インストラクション一回分のサイクルタイムが測定できることになります。 パイプラインが理想的に動作していれば、サイクルタイムは1サイクルになるはずです。

測定値が一定しない

サイクルタイム

さっそくサイクルタイムを測定してみましたが、測定結果が一定しない事がわかりました。 様子を見るために、少し長めに出力させると、4 と 5 が混在しているのがわかります。

この現象を引き起こした原因はいくつか考えられます。


  1. バスが使用されていたため、データの取得が遅れた。
  2. Flash コントローラのプリフェッチバッファがリロードされた。
  3. CPU がカウンタのデータを取りに行く時に他のバスマスタの嫌がらせを受けた。
  4. Flash ROM からインストラクションを持ってくる時に「スカ」をつかまされた。
  5. 働き過ぎた CPU が、休みたがっている。
  6. 宇宙線が降り注いできた。

そこで、何か法則がないかと、それぞれを "0" と "1" に置き換えて右に書きだしてみました。

Freq:48
0004 0004 0004 0005 0004 0004 0005 0004  00010010
0005 0004 0004 0004 0004 0005 0005 0004  10000110
0004 0004 0004 0004 0005 0005 0005 0004  00001110
0004 0004 0004 0004 0005 0005 0005 0004  00001110
0005 0004 0004 0005 0005 0005 0005 0004  10011110
0004 0004 0004 0004 0004 0005 0004 0004  00000100
0005 0004 0004 0004 0004 0004 0005 0004  10000010
0004 0004 0004 0004 0005 0005 0005 0004  00001110
0004 0005 0004 0004 0005 0005 0005 0004  01001110
0005 0004 0004 0005 0004 0005 0005 0004  10010110
0004 0004 0005 0005 0004 0005 0005 0004  00110110
0004 0004 0004 0004 0004 0005 0004 0004  00000100
0004 0005 0005 0004 0004 0004 0005 0004  01100010
0005 0005 0005 0005 0004 0005 0005 0004  11110110
0005 0005 0005 0005 0004 0005 0005 0004  11110110
0004 0004 0005 0005 0004 0005 0005 0004  00110110
0005 0004 0004 0004 0004 0005 0004 0004  10000100
0005 0004 0004 0004 0004 0005 0004 0004  10000100

法則が見えてきた

どうやら、特定のパターンが現れてきているように見えます。 さらに、16進数に変換してみました。

Freq:48
0004 0004 0004 0005 0004 0004 0005 0004  00010010  0x48
0005 0004 0004 0004 0004 0005 0005 0004  10000110  0x61
0004 0004 0004 0004 0005 0005 0005 0004  00001110  0x70
0004 0004 0004 0004 0005 0005 0005 0004  00001110  0x70
0005 0004 0004 0005 0005 0005 0005 0004  10011110  0x79
0004 0004 0004 0004 0004 0005 0004 0004  00000100  0x20
0005 0004 0004 0004 0004 0004 0005 0004  10000010  0x41
0004 0004 0004 0004 0005 0005 0005 0004  00001110  0x70
0004 0005 0004 0004 0005 0005 0005 0004  01001110  0x72
0005 0004 0004 0005 0004 0005 0005 0004  10010110  0x69
0004 0004 0005 0005 0004 0005 0005 0004  00110110  0x6C
0004 0004 0004 0004 0004 0005 0004 0004  00000100  0x20
0004 0005 0005 0004 0004 0004 0005 0004  01100010  0x46
0005 0005 0005 0005 0004 0005 0005 0004  11110110  0x6F
0005 0005 0005 0005 0004 0005 0005 0004  11110110  0x6F
0004 0004 0005 0005 0004 0005 0005 0004  00110110  0x6C
0005 0004 0004 0004 0004 0005 0004 0004  10000100  0x21
0005 0004 0004 0004 0004 0005 0004 0004  10000100  0x21

ここまで来たら、あと一息です。 ASCII コードで読んでみましょう。

Freq:48
0004 0004 0004 0005 0004 0004 0005 0004  00010010  0x48  H
0005 0004 0004 0004 0004 0005 0005 0004  10000110  0x61  a
0004 0004 0004 0004 0005 0005 0005 0004  00001110  0x70  p
0004 0004 0004 0004 0005 0005 0005 0004  00001110  0x70  p
0005 0004 0004 0005 0005 0005 0005 0004  10011110  0x79  y
0004 0004 0004 0004 0004 0005 0004 0004  00000100  0x20   
0005 0004 0004 0004 0004 0004 0005 0004  10000010  0x41  A
0004 0004 0004 0004 0005 0005 0005 0004  00001110  0x70  p
0004 0005 0004 0004 0005 0005 0005 0004  01001110  0x72  r
0005 0004 0004 0005 0004 0005 0005 0004  10010110  0x69  i
0004 0004 0005 0005 0004 0005 0005 0004  00110110  0x6C  l
0004 0004 0004 0004 0004 0005 0004 0004  00000100  0x20   
0004 0005 0005 0004 0004 0004 0005 0004  01100010  0x46  F
0005 0005 0005 0005 0004 0005 0005 0004  11110110  0x6F  o
0005 0005 0005 0005 0004 0005 0005 0004  11110110  0x6F  o
0004 0004 0005 0005 0004 0005 0005 0004  00110110  0x6C  l
0005 0004 0004 0004 0004 0005 0004 0004  10000100  0x21  !
0005 0004 0004 0004 0004 0005 0004 0004  10000100  0x21  !
失礼いたしました。 明日は、まじめにやります。

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。