SCSI BIOSを使用して、標準的なHDDの最大容量である10MB分の読み出しを行なって計測したいのだけど、一度には無理なので、20KBの読み出しを512回行う事で10MBとする。
いまさらだが、基本仕様を押さえよう。X1turboは4MHzのZ80システムなので、
I/Oリードサイクルは4クロックの1000ns単純に10MB分(10,485,760回)繰り返すと約18.35秒(約558.0KB/秒)、これが理論的速度となるわけだが、実際にはDMAへのパラメータ設定、SCSIコマンド処理、BIOS呼出し、BASICでの処理等々の、オーバーヘッド盛り沢山(しかも、512回も繰り返す)なので、理論的な値よりもグッと遅くなることは確実だが、果たしてどこまで理論値に近付けるか…
メモリライトは3クロックの750ns
DMAを使用して1バイト転送は、所要7クロックで1750ns
SCSIターゲットは、おなじみ変換番長。プログラム構成ですが、転送処理のみマシン語で、時間の処理は楽をしてBASICのTIME関数を用います。なので、結果には+1秒未満の誤差が出ます。
そしてベンチマーク。
20KB毎に表示を行っていたら21秒で、表示無しで19秒(538.95KB/秒)。512回ものオーバーヘッド要素を考えれば、いい数字ではないだろうか。
さらに試行回数を増やし、もうちょっと計測してみる。
16倍の160MBならば、何秒なのか。19×16=304秒?
実際には306秒でした。ということは、10MBの19秒は19.125秒くらいなのだろう。
0 件のコメント:
コメントを投稿