• Please review our updated Terms and Rules here

Shutdown issue in Windows 95 (AT mobo Power settings?)

That paper tested Xeon and Opteron CPUs from 2010. NOP does absolutely nothing for power saving on a Windows 9x era desktop CPU with a fixed clock.

Temporarily stopping the CPU with HLT during idle was how power saving was achieved. All of the Windows 9x power saving utils used HLT.
 
Cracked it. I visited this page: http://educ.jmu.edu/~jarvislb/utils/shutdown.html and went through each one. Step 12 is what worked:
Interesting. I have never heard of that setting being useful. However, Windows 95 (especially the 950 and 950a releases) are very early; the later 950b and 950c releases had much better hardware compatibility. Especially Plug&Play support was very rough in the beginning, with vendors not supporting it properly and Windows itself containing lots of specific workarounds.

As a rule of thumb, always DISABLE the "PnP OS" setting in the BIOS. This causes resource allocation to be fully done by the BIOS (on the assumption that the OS is unable to do so correctly - often true for Windows 95), which causes many issues to disappear.

Soft power control, which was part of ACPI/APM, used on ATX motherboards was a recent technology when Windows 95 was introduced. In fact, they were released right around the same time.
Yes, and it was available even before ATX technology in some mobile devices. If support is available through APM, then Windows 95 can use it even there.

There were few motherboards in those days that ever got ACPI/APM implemented properly, OEMs usually just fudged the ACPI tables so things *mostly* worked and called it good enough. Unfortunately, that trend never really went away and there are PC motherboards to this day that have broken/incomplete ACPI tables that cause all matters of havoc. Motherboards with broken ACPI implementations often couldn't soft power off cleanly in Windows 9x, and would get stuck on the "Windows is shutting down" screen.
Windows 95 does not support ACPI, it is APM-only. While Windows 98 introduced ACPI support, it also uses the BIOS date (in combination with both blacklists and whitelists) to decide whether to use ACPI at all. Unfortunately, changing this setting requires a reinstallation of Windows 98.

Another thing they'd do is not allow the processor to idle down properly. Back in those days, APM was extremely basic. There was no clock ramping, instead the CPU would just send NOP instructions into the pipeline to tell the CPU to do nothing. This reduced the power consumption considerably, when it actually worked.
No.

Running NOP instructions does not reduce the power consumption of contemporary processors. The HLT instruction is designed specifically for this purpose. However, Windows 95/98 deliberately do not use the HLT instruction ever, because some some older systems behaved badly (see https://devblogs.microsoft.com/oldnewthing/20030828-00/?p=42753). Third-party utilities like Rain or Waterfall enabled HLT usage, as did Windows NT.

However, if the system supports APM (or ACPI), then the OS can tell the system whether it is idling. However, the OS has very little control on the specifics. Both DOS (using POWER.EXE) and Windows 9x support idling through APM, and clock ramping is definitely possible: My Toshiba T4600C can reduce the CPU down to 4 MHz (BIOS-configurable with a timeout) in this case, which is very obvious (and shown on the LCD bar).

Boards with broken ACPI tables wouldn't let this happen, so Windows 9x had to do something called "spinning" where the kernel would just run a tight loop of checks/waits until something needed to be done and break out of the loop. Problem with this is that since it wasn't a NOP, the CPU was still processing instructions and would consume more power. There were eventually some utilities like "Rain" released to fix the problem on broken boards.
Windows 95 did not support ACPI and therefore ignored the ACPI tables completely. Utilities such as Rain just put the HLT instruction into the idle loop.

NOP was used, and is still used in some cases to reduce power consumption if the newer PAUSE instruction isn't available.
The PAUSE instruction did not exist until 2018 or so. It definitely did not exist in 1996.

HLT is less useful because it stops the entire processor until it receives an interrupt.
When the OS executes its idle loop, there is nothing to be done. The OS is literally waiting for the next interrupt, which is what HLT is designed for. Using it to reduce power consumption is the obvious solution, especially since the instruction itself has been around since forever. (The Z80 had to keep executing NOPs to refresh DRAM, but at least the 80186 used it to save power on Palmtops.)
 
Back
Top