Archives
- October 2025
- September 2025
- August 2025
- July 2025
- June 2025
- May 2025
- April 2025
- March 2025
- February 2025
- January 2025
- December 2024
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- October 2021
- September 2021
- August 2021
- July 2021
- June 2021
- May 2021
- April 2021
- March 2021
- February 2021
- January 2021
- December 2020
- November 2020
- October 2020
- September 2020
- August 2020
- July 2020
- June 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- July 2019
- June 2019
- May 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- August 2018
- July 2018
- June 2018
- May 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- November 2017
- October 2017
- August 2017
- July 2017
- June 2017
- May 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- January 2011
- November 2010
- October 2010
- August 2010
- July 2010
NT 3.1 SMP
Generic x86 multiprocessing, Summer 1994 edition. There’s not much to say:
NT 3.1 SMP BootYep, that’s NT 3.1 running in a VM, and it sees two processors. Remember, you saw it here first!
And later, after bootup:
NT 3.1 Performance MonitorSadly, more than two CPUs aren’t recognized by this regular NT 3.x setup, although Advanced Server ought to support at least four (not yet tested).
It took some lucky Googling to find the MPS 1.1 HAL for Windows NT 3.1 in a very unexpected place (sometimes, the Internet giveth… even if other times it taketh away), as well as hacking up VirtualBox until the annoyingly picky MPS 1.1 HAL was happy with what it saw.
It’s not clear whether the HAL was provided by Intel or Microsoft. It was probably Microsoft with significant help from Intel. It’s from mid-June 1994, predating the release of NT 3.5 by a few months.
At about the same time, OS/2 2.11 SMP also appeared, and likewise supported MPS 1.1 in addition to vendor-specific hardware. Solaris 2.4 was another early adopter of Intel’s MPS, née PC+MP specification.
Relatively inexpensive dual-socket Pentium systems came to market at that time, aided by the fact that second generation P54C Pentiums included built-in local APIC and that Intel provided all the building blocks with the 430NX (Neptune) chipset. MPS was intended to support multiprocessing on such systems (as well as larger servers) and did the job well until it was eventually—much later—replaced by ACPI.
I had no luck with NT 3.5 and 3.51 SMP in a VM. Both crash the same way during bootup for some very non-obvious reason. It’s not clear if the crashes are directly related to SMP or some other features the MPS HAL/kernel might be supporting; likely the latter. There’s never been any trouble with NT 4.0 SMP on the other hand. For reference, NT 3.5 supports MPS 1.1 (but not 1.4) out of the box, NT 3.51 ought to support MPS 1.4 as well. NT 3.1 only supports vendor specific SMP hardware out of the box for the obvious reason that MPS was only finalized about a year after NT 3.1 came out.
If I’m sufficiently bored I might try patching the NT 3.1 HAL to work with MPS 1.4 and newer I/O APICs, but that’s not a promise.
70 Responses to NT 3.1 SMP
Ok,
I’am now the second man on earth with running nt3.1 smp in virtualbox. 🙂
http://abload.de/img/nt31_smp_baosv7.jpg
Congrats!
I wonder what the MPS version setting in the BIOS actually does, BTW.
Congrats to all who’ve managed to achieve NT 3.1 SMP. 😀
Having searched far and wide (including ftp’s) for the MPS 1.1 HAL file specifically for NT 3.1… I can say it’s unfortunately unobtainable.
If anyone has a copy of the file handy could they please share a copy? Maybe by a temporary drop box location or something, that would be much appreciated.
Thanks
Could I confirm that you are both running either installed hardware dual CPU systems or (virtual) software emulated dual CPU systems?
Thanks again
Screenshots were taken in a VM. I could try on physical hardware as well, I think I should have some sufficiently old SMP system.
Search for ‘mpshal11.dll’. It’s on DriverGuide, very well hidden inside a ZIP archive that’s called PKUNZIP.EXE, inside a driver package for some TV tuner or something. Don’t ask me how it got there, it makes no sense to me 🙂
Changes the reported MPS version (1.1 vs. 1.4). On some fancier systems, it should also remove the version 1.4 specific sub-tables when 1.1 is chosen.
And why is the setting there? Microsoft, of course 🙂
I remember that for example Abit BP6 with one old BIOS version, USB would work with 1.1 but not with 1.4.
I know it’s just going to show that you did need to tweek Virtual Box, but yeah, VMWare Player 12.5 with the BIOS set to SMP 1.1 didn’t work, neither did Qemu 2.7 … I can’t say I was really expecting anything but yeah… . No va.
Now that I have my pointless Apache on NT server, I wanted to push it into SMP land for no apparent reason.
It’s not the BIOS, it’s the (emulated) hardware. The MPS HAL for NT 3.1 is unnecessarily picky and only designed to work with 486s or the (old?) Pentium CPUs. I think there’s a way to patch it, I’ll have to dig through my archives.
Thinking about it, I wonder if part of the problem was that NT 3.1 lacked PCI support. But there was NT 3.1 drivers that tried to support PCI anyway. NT would not have been aware that PCI devices would have different IRQs in APIC mode.
Hi! Can you please upload this “MPS 1.1 HAL” somewhere? Aforementioned site wth “pkunzip.exe” isnt working now…
I installed the MPS 1.1 HAL in NT 3.1 and i got a blue screen. It said
HAL: This HAL.DLL requires an MPS version 1.1 system.
Replace HAL.DLL which the correct HAL for this system. The system is halting.
Any idea how to solve it?
Run it on a system that has MPS 1.1 and an old APIC.
HAL can be found as part of the GA-586ID Support files at https://download1.gigabyte.com/Files/Driver/motherboard_driver_ecu_other_ga586id.zip?v=e262195167382e033764e4b40f33168d
I’ve also mirrored it on archive.org
Archive.org mirror: https://archive.org/details/nt31-mps11-hal
Never had too many issues with NT 3.51 SMP, even in 2016. The HAL needs some hacking to get the HLT instruction there, but that’s that.
May be a stupid question, but do we know what’s going on with the peaks between the two CPUs? Instance 1 gets pegged at first, then the workload seems to primarily shift to Instance 0 before Instance 1 climbs back up.
The scheduler had no concept of pinning workloads to a specific CPU. So you’d see the CPU usage more or less randomly hopping across all the CPUs available. To be fair, back then caches and TLBs were so small that there probably was no point in trying.
This site uses Akismet to reduce spam. Learn how your comment data is processed.