【朗報】PC-98エミュでWindowsNTを起動した場合にホスト側CPU負荷が高くなる現象を回避するパッチが登場!!
■ このスレッドは過去ログ倉庫に格納されています
77名無し~3.EXE2019/11/06(水) 02:45:02.20ID:qBlO5wps
PC-98版のNT3.51とNT4.0のHLT(CPU idle)が有効にならない問題を解析できる猛者はいない?
PC-98版NT3.50ではHLTは有効なのは確認している。
PC-98版NT3.50ではHALが1つしかないが、NT3.51とNT4.0は複数種類あるのでその辺に
ヒントがありそう
78名無し~3.EXE2019/11/06(水) 02:55:43.67ID:qBlO5wps
この辺の記事と関係ありそうですね
NT4, Citrix Metaframe 1.8, and SMP under VMware - CPU Hogging Solution
https://communities.vmware.com/docs/DOC-11700
ソース
NT3.51スレ SP1
http://mevius.5ch.net/test/read.cgi/win/1519045457/77-87
79名無し~3.EXE2019/11/06(水) 03:02:31.74ID:qBlO5wps
同様の問題について語っているWebで入手可能な多数の記事はすべて、HLT命令に基づいています。 私はお気に入りの逆アセンブラでHALAPIC.DLLを開き、次のエクスポートとアセンブリを見つけました。
HalProcessorIdle proc near
sti; 割り込みフラグを設定する
hlt; 停止状態に入る
retn; 近くの手順から戻る
HalProcessorIdle endp
わかりましたので、予想どおりにHLT命令を実行します。 HALMPS.DLLを開くと、次のことがわかりました。
HalProcessorIdle proc near
sti; 割り込みフラグを設定する
retn; 近くの手順から戻る
HalProcessorIdle endp
80名無し~3.EXE2019/11/06(水) 03:56:55.94ID:qBlO5wps
98版でHLTを有効にする方法みつけちゃったかも
81名無し~3.EXE2019/11/06(水) 03:59:32.75ID:qBlO5wps
N€CとMCRO$OFTの技術者は何考えてんだ?
ノート型PC-98にNT3.51やNT4.0を入れたら凄い勢いでバッテリー消耗するのに
82名無し~3.EXE2019/11/06(水) 04:10:52.31ID:qBlO5wps
但し私の技術力ではNT3.1(PC-98版問わず全般)のHLTが有効になたない
問題を解決する方法を持っていません。なぜならなWindows NT 3.1には
HalProcessorIdle関数が存在しない為
83名無し~3.EXE2019/11/06(水) 05:43:39.18ID:qBlO5wps
NT3.51及びNT4.0のHAL.DLL(np21/Wでは使われているであろう5MHz系HALのhal98up.dll)を
解析しみた結果
HalProcessorIdle proc near
sti; 割り込みフラグを設定する
nop; 何もしない
retn; 近くの手順から戻る
HalProcessorIdle endp
ということが判明しました。
これはどんなにエミュレーターの改良を使用ともNT3.51/NT4.0を使用時にホスト側CPUが
発熱・過熱することを意味します。
なのでバイナリエディタでNOP(0x90)をHLT(0xF4)に置き換えたのちPEチェックサムをあわせてみた
ものを使用した結果、ゲスト側のWinNTが高速作動する又はホスト側CPU負荷が軽減する結果が得られました。
84名無し~3.EXE2019/11/06(水) 05:57:40.17ID:qBlO5wps
唐突にエミュレーターを出ましたが、この調査の発端はPC-98エミュレーターで
NT3.51/NT4.0を使用時にホスト側のCPU負荷が高くなってしまう現象の調査の為に行いました。
(NT3.50/2000(NT5.0)の場合は適切にHLTが作動しているのとは対象的に)
85名無し~3.EXE2019/11/06(水) 06:19:50.29ID:qBlO5wps
スクショ
NT3.51
https://i.imgur.com/LyFkFr3.jpg
NT4.0
https://i.imgur.com/0lYxTdI.jpg
バイナリ(NT3.51 SP5とNT4.0 SP6のhal98up.dllベース)
https://www.axfc.net/u/4009776.zip
86名無し~3.EXE2019/11/06(水) 11:59:57.40ID:qBlO5wps
NT3.51の8HMz系HALのhal98oct.dllもパッチしてみたら、Anex86での作動がよりスムーズになりました。
87名無し~3.EXE2019/11/07(木) 18:05:33.56ID:FRAH9HHC
871名無しさん@お腹いっぱい。2019/11/07(木) 17:39:51.77ID:bgxVah+m0
IDEBIOS使用時にNT3.51でセカンダリースレーブに繋ぐと
起動時の黒画面で固まってしまって使えないと思っっていたのですが、
IDEのInterrupt Delayを2000にしてしばらく待っていたら起動できました。
BX4のIDEBIOSで3台認識
https://i.imgur.com/4OZioj5.jpg 一体何人がその条件を満たす使い方しているんだろうか?
困っている人も居るのかも知れないけど。 正直、画面なんてNT4.0のままで良かったんだよ。 30年くらいシステム使い回してる工場とかでも需要があるのかどうか このくらいは仕事で金もらってたら俺が解析して修正してやんよ
金にならないし将来性無い分野だからやらねえだけよ
でもCitrixの奴は仕事で対応したんだろな 「この中のデーターをこっちのパソコンにササッと移し変えて。パソコン得意だろ?」
って、フロッピーディスクなる物を渡されたときの俺の気持ち。 【朗報】PC-98エミュでWindowsNTを起動した場合にホスト側CPU負荷が高くなる現象を回避するパッチが登場!!
http://leia.5ch.net/test/read.cgi/poverty/1573493806/ これがあれば更新しなくて良かったのにって考えてる企業いっぱいあるだろうな エミュなんだから適度にクロック落とせばいいんじゃ? > これはどんなにエミュレーターの改良を使用ともNT3.51/NT4.0を使用時にホスト側CPUが発熱・過熱することを意味します。
エミュレータのホスト側のNOP命令を元プロセッサの周波数に合わせたインターバル入れたC-state制御にすればそれで良いんだけどな
エミュレータの設計者がアホだっただけ >>27
そうなの?
割り込みまでHALTせずにアイドルループしちゃってる問題だと思うんだけど、nopで解決できるん? ここで出てくるNOPとHALTは、Z80のマシン語と同じ意味と考えていいのかな? 昔のどるこむ思い出した、って閉鎖されてたんかあそこ 98のDOSならわかるが98のウィンドウズをエミュレーションする必要がある用途って何? 古いシステム系はこれがないと動かないモノもあるので
要るといえば... >>13
当時から半角カタカナ使ってるのが嫌だったわ
それとIE4統合しないとさすがにしょぼすぎ え、NTって省電力利かないんじゃなかったのか
VMWareのAT版でも同じだったような ひたすらHLT命令出しまくるだけのフリーソフトとか昔あったな 解析して原因を明らかにして修正するというのは大変なハイテクニックなんだけど
案外こういう人が年収300万程度だったりする plug and playがなかったから辛かったな… ふつーは
ドライバ入れりゃ勝手に割り振ってくれるけどな
IRQやDMAが被りまくるほどボード挿さない限り 最近PC9821のCPU_MMX150MHzWindows95でネットにつないだがyahooのホームページ開くのに待てずに閉じた。動作確認ヨシ。 >>48
nekoprojectは今でも改訂されてるんだ たまにwin3.1時代のゲームがやりたくなるけど、イマイチいいエミュが無いんだよね。
結局実機が一番となる。 >>59
ソフトにもよるだろうけどWin3.1ならただの仮想化で足りてるわ
SimCity2000とCiv2やれるように残してる 何をどうすればこれを使わないといけない状況に追い込まれるのか理解できない ■ このスレッドは過去ログ倉庫に格納されています