実行時間
目次
FAQ-ID = v85exec- nnnn
v85exec -0001
|
V850の各命令の所要クロックの記述場所 [V853, V850/S]
|
| Q1 |
各命令の所要クロックはどのマニュアルに記述されているのでしょうか?
|
| A1 |
命令の実行時間は「V850ファミリ アーキテクチャ編」のマニュアルに記載されています。
なお、命令の実行時間はパイプラインの状態により異なりますので、ご注意ください。
|
v85exec -0002
|
パイプラインと命令実行速度について [V850E/IA1]
|
| Q1 |
外部メモリ・アクセスは、命令フェッチかメモリ・アクセスかによらず 2クロック+ウエイト数かかり、
内蔵メモリ・アクセスは、命令フェッチかメモリ・アクセスかに関わらず 1クロックでしょうか?
|
| A1 |
いいえ、違います。
V850E/IA1のメモリ・アクセス時間はハードウエア編の UMの「4.5.1 アクセス・クロック数」に記載されております。
ここに記載されたように、外部メモリ・アクセスは最低 3クロック必要です。
また、データ・アクセスと競合した場合の内蔵RAM からのフェッチは 2クロックになりますし、
内蔵ROM からのデータ・アクセスには 5クロック必要です。
|
| |
| Q2 |
MEMステージで内蔵RAM へ書き戻すとすると、命令の実行サイクルは
IF + IF + ID + EX1 + MEM
(下位) (上位)
IF+IF: 外部RAMフェッチなので 2クロックずつ合計 4クロック
ID: 次の命令のフェッチがかかるので 2クロック
EX1+MEM:フェッチがかからないことと内蔵RAMへのアクセスなので 1クロックずつ合計 2クロック
全体として、合計 8クロックかかるのでしょうか?
|
| A2 |
いいえ違います。
外部からの命令のフェッチに関しては、バスの空き時間に先読みキューに取り込みますので、
単純に外部メモリのアクセス時間(最低3クロック)とはなりません。
この先読みキューから CPUのパイプラインに転送されますので、
上記の IF 〜 ID が全て 3クロックになるような事はございません。
逆に、SET1 や CLR1命令は EX1 - MEM - EX2 - MEM と続いていきますので、その分は長くなります。
これらの事を考慮すると、最低で (WBを含む) 7クロック以上となります。
ただし、先読みキューがそれほど埋まっているとも考えられないので、
これよりは 2、3クロックはかかると考えてください。
なお、これらの動きは前の命令に依存しますので、何クロックと規定する事はできません。
|
v85exec -0003
|
ビット操作命令の実行時間 [V850/S, V850E]
|
| Q1 |
ビット・アクセス命令はリード・モディファイ・ライトの動作となるのでしょうか?
またその実行処理中に割り込みは入るのでしょうか?
|
| A1 |
はい、リード・モディファイ・ライト動作となります。
このため、どちらの CPUもビット操作命令の実行は他の命令よりも余分にクロックを必要とします。
その分だけ次の命令の IF から ID の間にアイドルが 3クロック (V850/SA1の場合)、
または 2クロック (V850E/MS1の場合) 挿入されます。
この際の詳細な動作に関してはアーキテクチャ編のマニュアルの
「第8章パイプライン」のビット操作命令のところに記載されておりますので、ご参照ください。
また、リード・モディファイ・ライトの間に割り込みが入ることはありません。
|
v85exec -0004
|
内蔵周辺アクセスでの実行速度 [V850共通]
|
|
| |
| Q1 |
下記プログラムにより、P1端子にパルスを出力するのに 200ns程度かかります。
ユーザーズ・マニュアルでは「ST.B 命令は 1クロックで処理が行われる」、
とありますので 40ns程度でパルスを出力しなければならないはずですが? [V850E/MA1]
MOV FF,r10
ST.B r10,-BFE[r0]
MOV 0,r10
ST.B r10,-BFE[r0]
MOV FF,r10
ST.B r10,-BFE[r0]
|
| A1 |
これは内蔵周辺 (P1) をアクセスしているために、
そのアクセス時間が最低でも7クロックは 必要となることによる影響です。
このアクセス時間の分だけ実行時間が延びてしまいます。
内蔵周辺をアクセスしなければ、このように時間がかかることはありません。
|
| |
| Q2 |
V850E/MA1で、各I/O のアクセスには何クロックかかるでしょうか? [V850E/MA1]
|
| A2 |
I/Oポート (周辺I/Oレジスタ) に対するアクセス自体は VSWCレジスタの設定で決まり、
50MHzでの推奨値12Hを使用すると6クロック必要になります。
ビット操作命令の場合にはリード・モディファイ・ライトとなるので、
アクセスは 13クロック (アクセス2回+演算) 必要となります。
|
| |
| Q3 |
例えば、出力ポートに 1, 0, 1, 0 をライトした時の周期 (サイクル数) を教えてください。 [V850E/MA1]
|
| A3 |
連続した命令で単純に 0. 1 を出力すると 12クロックの周期となります。
ビット操作の連続では 26クロック周期となります。
これはポートのリードが必要になるためです。
|
| |
| Q4 |
V850/SA1を 20MHzで動作させ、以下のようなプログラムを実行させている。
P20の波形を観測すると、50ns毎に反転しないで 400nsになった。
逆アセンブルの結果でも P2.0 = ~P2.0 は1個の NOT1命令に変換されて、
余分なことは実行していない。[V850/SA1]
while(1)
{
P2.0 = ~P2.0;
:
:
P2.0 = ~P2.0;
}
|
| A4 |
これは、以下の 2つの要因によるものです。
1つ目は、NOT1命令自体が、ポート2 に対してリード・モディファイ・ライトの 3つの動作の組み合わせで実行されることです。
2つ目は、ポート2 に対するアクセスが 3クロック必要であることです。
備考
ほとんどの V850シリーズにおいては、
マニュアルの「バス・アクセス」の最初に内蔵メモリのアクセス速度 (クロック数) が記載されています。
デバイスによっては内蔵周辺へのアクセス速度が記載されているものもあります。
また、内蔵周辺へのアクセスの際にウエイトを指定する VSWCレジスタを内蔵しているデバイスがあり、
動作周波数に応じたウエイト数を設定する必要があります。
|
 |
|
(2003/08)
|
 |
|
v85exec -0006
|
最も高速処理が可能なプログラム・エリアは? [V850共通]
|
| Q1 |
プログラムが、最も高速に処理ができるのは、どのエリアですか?
|
| A1 |
最も高速な処理が可能なのは、内部ROM (フラッシュを含む) にプログラムを配置したときです。
内部のメモリからは、最速では 1クロックで 32ビットの命令をフェッチできます。
一方、外部からのフェッチは16ビット幅になり、しかも1クロックではフェッチできません。
備考
V850E/ME2の場合には内部ROM (フラッシュを含む) はございませんが、大容量の RAMを内蔵しており、
そこからは 1クロックで 32ビットの命令をフェッチできます。
また、外部バスの幅も 32ビットになっております。
|
v85exec -0007
|
ほとんどの命令を 1クロックで実行できるか? [V850共通]
|
| Q1 |
V850E/MA1で、あるプログラムを動作させて時間を測定しました。
マニュアルには、「パイプライン制御によりほとんどの命令を 1クロックで実行できる」と記述されていますが、
結果はマニュアルに記載されている時間と異なります。
|
| A1 |
内蔵ROM から命令をフェッチして、
パイプラインのハザードがなく動作している場合にはほとんどの命令は 1クロックで実行可能です。
しかし、外部メモリからのフェッチの場合は、1ワード (4バイト) の命令をフェッチするのに最低でも
4クロック必要となります。
(実際にはメモリのアクセス・タイムの関係からこれ以上かかります)
これだけで、命令の実行は4倍以上の時間が必要です。
さらに、実際に命令の実行時間は全命令が 1クロックではなく、2クロック必要なものもあります。
その命令の結果を次の命令で参照するような場合
(mov 3, r10 の次に st.b r10, 11[r29] のように並んでいるとき)
には、実行クロックが余分に必要になります。
このような遅延要因が入り交じっていることから命令の実行時間が長くなります。
これらの動きの詳細はアーキテクチャ編UMの「5.4命令実行クロック数」を参照ください。
なお、パイプラインの動きを完全に把握するのはかなり困難です。
|
|