2018年07月01日

動作速度算出(4)

  P6月間特別企画...居残り

  処理時間を求める、の続きです。

5.スクロールの速度を上げる
  処理時間を求める事と直接は関係ないですが...

  画面スクロールの処理速度は、

  メモリ読み出し→メモリ書き込み→ポインタを進める

  が一連の流れで、この部分をどれだけ高速に出来るかになります。


  最初のLDIRバージョンでは、1バイト当たり、23クロック
  次のLDIバージョンでは、1バイト当たり、18クロック

  です。


  今のままでは、結構限界に近い速度です。

  私が思いついたのは以下の2つです。


 1)M1サイクル時のWAIT挿入を止める

  通常では本体改造をしない限り、M1サイクルのWAIT挿入を止める事ができません。

  ですが、外部RAM(拡張RAMパック)に関しては、M1サイクルのWAITを挿入しても動くようです。

  新しいRAMだけでなく、当時のPC-6006などで試しても問題なく動作しました。

  これで、1バイト当たり、16クロックです。

180701_01_TESTasm3.png



 2)PUSH-POPを使い、さらに力技にする

  PUSH/POP命令はメモリアクセスに関しては最速です。
  ただ、自由に書き込み/読みだし位置(SP)を操れないので、その辺りで悩んだ結果、力技にしました(^^;)

  1)のM1サイクルWAIT挿入なしとも併せて、1バイト当たり、12.5クロックになっています。

180701_01_TESTasm4.png



  ↓これまでのを合わせたプログラムです。ちょっと読みにくいプログラムになってしまいましたが。

test3p6.zip


  0:(23clk/1byte)LDIR
  1:(18clk/1byte)LDI
  2:(16clk/1byte)M1時、WAIT挿入なし
  3:(12.5clk/1byte)PUSH-POP

  で、0〜3を繰り返し実行します。

  途中でSTOPキーを押した時は、PAGEキーを押すと元に戻ります。
  80行でFOR-NEXTしていますので、適当に修正してみて下さい。


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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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