isaki68k / nono-issue

1 stars 0 forks source link

RTC: force-fixed でも仮想時間がブレる #74

Closed isaki68k closed 3 years ago

isaki68k commented 3 years ago

-V.rtc-force-fixed=1 -Vclock-sync=virtual -Vprom-image=PROM.DAT としても、PROM パフォーマンス測定時の仮想時間が毎回ブレている。 元々PROMが現在時刻を処理する時の分岐によって通過命令数(仮想時間)の総量が変わってしまうからというのが発端だったが、どうするか。

moveccr commented 3 years ago

調べてみた。フルスピードモードでの時間(通常モードだと RAM ウェイトの関係で違う数字にはなる) で起動から 57.328'968'400 付近までは毎回同じ。 これは bootloader if_le.c の myetheraddr() を呼び出すあたり。 http://bxr.su/NetBSD/sys/arch/luna68k/dev/if_le.c#216

myetheraddr() の 数値変換の実装では MAC アドレスの桁 0-9 と A-F で実行命令数が変わるので、これも固定しないといけないようだ。

これを乗り越えてもまだあると思われる。どこまでやるのか検討が必要かな。

moveccr commented 3 years ago

./nono -C -s0.5 -Vethernet-macaddr=02:00:00:00:00:01 -V.rtc-force-fixed=1 -Vluna-dipsw1=11110111 -Vclock-sync=virtual -Vprom-image=PROM.DAT -Vhostnet-driver=none -Vspc0-id6-writeignore=1 -f

で実行し、/etc/rc.local に書いた PROM への dd が読み込んだ、 521.551'937'550 までは3回やって一致した。

isaki68k commented 3 years ago

必要な設定を全部プリセットした --force-rtc-fixed オプションを用意してみた。 オプション名はもう少し考えたほうがいいかもだけど、とりあえず。 1b6fc1c1 (2021-10-08)