2018年06月28日

動作速度算出(1)

  P6月間特別企画(その28)

 問題です。

○次のプログラムは何をするものでしょう?(MODE=2/4、PAGE=4)


180628_01_TESTasm.png


  答えは...実際に動かしてみて下さい。実際に動く形にしたものが↓です。

testp6.zip

  画像データも必要なので、FDで動作させるようにしました。
  mk2以降で test_p6.d88 をセットして起動させて下さい。

  画像データは、Hashiさんの所のデータを使用させて頂きました。感謝です>Hashiさん


  では、本題です。

○上のプログラムを1度動かした場合、どれくらいの時間が掛かるでしょうか?


  という問題を答えるために、動作速度の計算が出来る必要があります。
  P6で、動作速度について言及しているものを見たことがないような気がして、とりあえずまとめてみる事にしました。


(注意)
 今回は、初代/mk2/66について、になります。
 mk2SR/66SR に関しては、ちゃんと調査できていないので、また後日にまとめる事にします。
 ただ、mk2SR/66SR 上で、MODE=1〜5で動作させる場合は、初期設定時では初代/mk2/66と同等の速度になるように設計されていますので、参考になるかと思います。


  プログラムのある処理がどれだけの時間が掛かるかを算出するためには、

 ・CPUの1クロックが何MHzで動作するか(=1クロックは、何秒か)
 ・処理の合計が何クロックで動くか

  が分かれば、その積で時間が算出できますが、P6特有の事情によりちょっと変わってきます。


 1.CPUクロック
  CPUは、入力されるクロックを基準として動作しています。

  初代機:3.9936MHz
  mk2:3.9936MHz
  66:4.0000MHz

  計算の際は面倒なので全部4MHzで構わないと思います。

  4MHzなので1クロックは 1/4MHz = 250ns になります。



 2.バスリクエスト(nBASREQ)
  初代/mk2/66では、VRAMがメインRAMでもあります。
  そのため両方からのアクセスがぶつからないように、画面描画をする時にCPUを止めています。

  CPUに対して、アクセスしないように要求する信号がバスリクエスト(nBASREQ:負論理入力)で、実際にCPUが止まっているのを示しているのが、バスアックノリッジ(nBASACK:負論理出力)です。


  mk2で実際に波形を表示させたものが↓です(MODE=2)。

180628_01_BASACK1.png

  真ん中やや下(下から5本目)が nBASACK です。"H"の時はCPUが動作、"L"の時は停止します。
  nBASACK を見ると、H の区間がちょっと続いた後、縞模様(=L/Hの繰り返し)があり、また H の区間が続き...となっているのが分かると思います。

  この H の区間は、画面に描画していない区間になります。長く H が続いている区間は、画面の一番下を表示し終わって、次フレームの画面の一番上を表示するまでの間になります。


  縞模様(=L/Hの繰り返し)を拡大したものが↓です(MODE=2)。

180628_01_BASACK2.png

  L の区間、H の区間、…と続きますが、L の区間がちょっと長いです。
  この L の区間の間に、画面描画を行っています。
  

  MODE5の場合は、L と H の割合が変わります↓

180628_01_BASACK3.png


  MODE5の方が、描画するデータが多いため、CPUが止まっている時間が長くなります。

  停止している時間を図示すると、こんな感じです。

180628_01_バスリクエスト.png



  で、CPUが止まっている事を考慮に入れて、平均のクロック速度を算出しておきます。


  MODE1〜4:
  1フレーム時間のクロック数 = 912×262
  1フレーム時間のCPU停止クロック数 = 608×200

  平均クロック速度 = 4MHz × (912×262 - 608×200) / 912×262 = 1.96MHz


  MODE5:
  1フレーム時間のクロック数 = 912×262
  1フレーム時間のCPU停止クロック数 = 736×200

  平均クロック速度 = 4MHz × (912×262 - 736×200) / 912×262 = 1.54MHz


  かなーり画像表示のために、CPU停止を食らっていますね。


  続きます。
posted by えすび at 21:00| Comment(0) | P6解析:CPU周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。