Add support for additional CPUs to your Win2K system

In recent years, multiprocessor systems have increased in popularity and decreased in price. At some point, you might find yourself adding support for additional CPUs to your Windows 2000 multiprocessor systems. Recently, I set out to add a second CPU to my primary Win2K Professional system and learned a few interesting lessons during the process. You might benefit from the lessons I learned as well as important information about upgrading multiprocessor configurations on Win2K systems versus on Windows NT systems.

CPU Sourcing Woes
My journey began when I set out to purchase a second 600MHz 512Kbps Pentium III CPU for my main Win2K Pro­based PC. (This system is based on a Tyan Computer dual-CPU motherboard.) The first problem that I ran into was physically acquiring the second CPU. I originally set up the system with a single CPU because at the time, Pentium III processors were still quite expensive. I figured that when the time came and prices had dropped a bit, I'd buy a second CPU of the same type.

I discovered the hard way that Intel has a rather annoying practice of ceasing production on CPUs long before the processors are technically obsolete. The problem is that most multiprocessor motherboards require the CPUs to be not only of the same type and speed, but also of the same stepping version. After a grueling and unsuccessful search of standard PC equipment distribution channels and dozens of discount Internet retailers specializing in CPUs, I finally found the CPU I needed at a local computer show.

As a result of this experience, I strongly recommend that you purchase all the CPUs for your multiprocessor systems early in the systems' lifetime. Locating an additional CPU later can be an almost impossible task.

HAL Swapping History
With my new CPU in hand, I was ready to upgrade my Win2K Pro system. Although I had performed dozens of uniprocessor-to-multiprocessor system upgrades on NT 4.0 systems, this attempt was my first experience migrating a single-CPU Win2K Pro system to a multi-CPU configuration.

As a primer, let's begin with a quick overview of important terms and concepts related to multiprocessor system upgrades. First, be aware that a distinction exists between single-processor (aka uniprocessor) hardware abstraction layers (HALs), such as those that standard x86 CPU-based systems use, and Multiprocessing Specification (MPS) HALs that multiprocessor-capable systems use. The "standard PC" HAL is a generic x86 system HAL. The Win2K and NT Setup programs install this HAL on systems that have an x86-compatible motherboard that supports only one CPU. If a system has a multiprocessor-capable motherboard (i.e., the motherboard has multiple CPU sockets) but has only one CPU installed, the OSs' Setup programs detect and install a different HAL—the MPS Uniprocessor PC HAL.

Although the situation is uncommon, your multiprocessor-capable system might not be configured to use an MPS HAL. A possible reason is that the system's vendor didn't enable MPS support for the system's BIOS. Another possibility is that you didn't set the PC's BIOS to the proper MPS version at the time Setup ran. (If multiple version choices exist in the system BIOS, you should select MPS 1.4 or later.) Another potential cause is that you configured the system by migrating the OS configuration from a system with a hardware configuration different from the new system. (This discussion assumes that you're using a system that's compatible with the generic uniprocessor and multi-processor HALs that ship with Win2K Pro and NT. If your system uses a third-party HAL that the vendor or OEM provided, you might need to obtain additional files or perform a different procedure to enable multiprocessor support. Check with your system vendor before you proceed.)

Multiprocessor Migration, NT-Style
Under NT 4.0, you can migrate a standard PC HAL or MPS Uniprocessor PC HAL system from a uniprocessor to a multiprocessor configuration, but the migration process is easier for systems that already have the MPS Uniprocessor PC HAL installed. When you add a CPU to a system that has an MPS Uniprocessor PC HAL installed, the system usually detects the addition of the new CPU and automatically reconfigures itself to enable multiprocessor support.

However, if you start with a standard PC HAL, the migration process is a bit more complicated. In this situation, NT can't detect the new processor because the HAL isn't MPS-aware, so you must manually change the system to use an MPS-aware HAL. To do so, you can use the Microsoft Windows NT Server 4.0 Resource Kit's uptomp.exe utility or you can manually make the change.

Uptomp verifies that the system currently uses a single-CPU HAL and asks you for the location of a folder that contains MPS HAL files. You must ensure that the current service pack level is maintained during Uptomp's HAL modification process. To do so, when the utility prompts you for the HAL source files, point the tool to the installation folder for the service pack that the system is running. If you mistakenly direct Uptomp to the original NT 4.0 CD-ROM files rather than the service pack installation folder, the system will usually display a blue screen when you restart it. To learn how to manually change the system so that it uses an MPS-aware HAL, see the Microsoft article "How to Manually Add Support for a Second Processor" (http://support.microsoft.com/support/kb/articles/q156/3/58.asp).

Multiprocessor Migration, Win2K-Style
There's good news and bad news regarding the migration process from single-processor Win2K systems to multi-processor Win2K systems. The good news is that the process of managing HAL modifications on Win2K systems is smoother than it is under NT 4.0. The bad news is that Win2K has a less automated detection and migration process than NT 4.0 has for systems that have existing MPS support.

I discovered these facts during my HAL migration experience. After shutting down my system and adding my elusive second CPU, I was surprised and dismayed to discover that the system wasn't recognizing the second CPU. When I ran Win2K's System Information utility (i.e., winmsd.exe), the utility reported that the system was still using an MPS Uniprocessor PC HAL. To confirm this information, I used the Control Panel System applet's Device Manager.

At this point, I decided to check the system BIOS to confirm that the system was recognizing the second CPU at the hardware level. The CPU was showing up just fine in the system BIOS display. This situation puzzled me because NT 4.0 would have automatically reconfigured the MPS support from uniprocessor to multiprocessor.

I learned that in Win2K, Microsoft made the uniprocessor-to-multiprocessor update procedure more straightforward than it is under NT. For example, Win2K doesn't require you to run uptomp.exe, and the OS accomplishes the same modification regardless of whether you're migrating from a standard PC HAL or MPS Uniprocessor PC HAL. In both cases, changing the HAL involves the Device Manager.

In Device Manager, expand the Computer branch and double-click the computer type to display its Properties dialog box. On the Driver tab, click Update Driver to launch the Upgrade Device Driver Wizard. Select the Display a list of the known drivers for this device check box, click Next, select MPS Multiprocessor PC (as Figure 1 shows), and click Next to install the new driver. At this point, Win2K will inform you that it needs to reboot the system to complete the change. Upon restarting, Win2K will recognize and support both CPUs.