[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00404] Re: 実行時間計測
- Subject: [WitchTech 00404] Re: 実行時間計測
- From: Mitsugu Suzuki <vsuzuki@cs.uec.ac.jp>
- Date: Fri, 25 Aug 2000 03:00:41 +0900
鈴木です
narunaru> 詳細は、こばやしさんが [WitchTech 00208] でお書きになっているドキュメント
narunaru> を見てください。
こんなページがあったんですか。
掛け算を3,4クロックでかたずけたりするところを見ると、演算系に
ロジックをつぎ込んでますね。
# WitchTechのアーカイブ検索でV30で 00208が引っかからなかったのは なぜ?
COBOL実行するわけじゃないから10進系の命令なんて要らないし、
ビット位置を示すったって
int bm[] = {1, 2, 4, 8 …};
…
if (x and bm[y]) { …
みたいにやるから、test1も不要。
でもビットフィールドが落ちたのは、ちょっと残念です。
narunaru> # しかし静鎖なんて訳語があるのか ...
英語では何て言うんでしたっけ?
Cコンパイラはenterやleaveを活用できないから、不要だったかも。
narunaru> > V33は、1クロック1バスサイクルのCPUで、スワンのに非常に近い
narunaru>
narunaru> # どうでも良いんですが、手元の雑誌記事 (プロセッサ 1989/7 月号) では
narunaru> 2ck / 1bus cycle となっています。
御意。 家に帰って本を見たら、そうでした。干支がひとまわりして
しまうと、1クロックでできるようになるんですねえ。
というわけで.186をつけて実験してみると、ご指摘の通り
2ビット以上は shl ax,n は同じ実行時間でした。
でも、命令の配置(ループヘッドが奇数番地か偶数か)で実行時間が
1クロック違うのが、面白いですね。
プロセッサの命令セットがV30MZだと判ったところで…
蛇足ですが、最後にテストに使ったコードの一部をつけます。
; tickes[0] = sys_get_tick_count();
CALL _sys_get_tick_count
MOV [BP-66].W,AX
MOV 2[BP-66].W,DX
; for (m = 0; m < 100; m++) /* LSICはこんなコードは吐かない */
MOV BX,100
_Y0:
; for (n = 0; n < 10000; n++)
MOV CX,10000
_X0:
; ここに計りたい命令を挿入する
; BX.CXは壊さないでね
LOOP _X0
DEC BX
JNZ _Y0
; tickes[1] = sys_get_tick_count();
CALL _sys_get_tick_count
MOV [BP-66+4].W,AX
MOV 2[BP-66+4].W,DX
……
; そして、tikes[i]とtikes[i-1]の差を求めて表示する。
; 約24tickで1clockに相当する。
; 空のループも計って、差を求めると挿入した命令の実行
; 時間が解る。
-----------------------------------------------------------
鈴木 貢
vsuzuki@cs.uec.ac.jp
ML Archives