WinNT 3.5 Software Update for the Pentium Floating Point Error

ID: Q122323

3.50
WINDOWS
kbtool kbfix3.50.sp1
The information in this article applies to:
  • Microsoft Windows NT Workstation version 3.5
  • Microsoft Windows NT Server version 3.5


SUMMARY

Microsoft has developed a utility (PENTNT.EXE) that, on Pentium-based systems, checks whether the processor contains the floating point division error, reports the current status of floating point, and allows disabling and re-enabling of hardware floating point.

This software effectively turns off the math coprocessor by trapping the floating point instructions. This makes the Pentium processor behave similarly to 486SX or 386 processors that do not have a math coprocessor. The utility works on Pentium and x86 systems.

Additionally, the solution is implemented through registry settings so that system policy administrators can control the use of Pentium floating point hardware on user systems.


STATUS

This utility is available in the latest U.S. Service Pack for Windows NT version 3.5. For information on obtaining the Service Pack, query on the following word in the Microsoft Knowledge Base (without the spaces):


   S E R V P A C K 


This utility is included in Windows NT version 3.51.


MORE INFORMATION

Performance Considerations

Core operating system code (for window management, disk and file operations, and application programming interfaces) in Windows NT does not perform floating point calculations, and so will not be affected either by the potential floating point hardware division errors, or by disabling hardware floating point. However, choosing software emulation of floating point will result in lower performance of floating point operations. Some utilities and applications such as the Calculator application provided with Windows NT, and the OpenGL rendering engine, may use floating point hardware when present. Most word processors, databases, email, and so on, perform few or no floating point operations.

Math-intensive applications, including spreadsheets and technical applications, typically perform floating point operations, and therefore will experience some performance degradation. The OpenGL rendering engine, which is part of Windows NT 3.5, and other 3D and CAD applications, are instances of this type of application. The user of such applications will be able to choose between the higher speed of hardware floating point, or slower floating point software emulation libraries, which will not encounter the Pentium floating point division error. Many applications contain their own floating point libraries to use in this case. A few applications (such as Autocad) require floating point hardware and will not run without it. Customers running these applications will need to replace their Pentium processor in order to avoid the floating point division error. The floating point software emulation's libraries are used on systems with 486SX or 386 processors.

Running PENTNT.EXE

To start the PENTNT.EXE utility, at the MS-DOS prompt type:
PENTNT [-C|-c] [-F|-f] [-O|-o] [-?|-H|-h]

The utility will test floating point division. If no error is found, a message will appear recommending that you use floating point hardware. If a division error is detected, a message appears notifying you of the error. You then have several choices: to disable floating point hardware only if you are using a Pentium processor with a division error, or disable floating point hardware always. If you choose to disable or re-enable floating point emulation, you must restart the computer for the changes to take effect.

The complete PENTNT command syntax is as follows:
PENTNT [-C|-c] [-F|-f] [-O|-o] [-?|-H|-h]

where:

-C|-c Turns on conditional emulation. This means that floating point emulation will be forced on if and only if the system detects the Pentium floating point division error at start time. If you select this parameter, you must restart the computer for the changes to take effect.

-F|-f Turns on forced emulation. This means that floating point hardware is disabled and floating point emulation will always be forced on, regardless of whether the system exhibits the Pentium division error. This parameter is useful for testing software emulators and for working around floating point hardware defects known to the operating system. If you select this parameter, you must restart the computer for the changes to take effect.

-O|-o Turns off forced emulation and re-enables floating point hardware if it is present. If you select this parameter, you must restart the computer for the changes to take effect.

-?|-H|-h Displays help for the command.

Registry Entry

The Registry entry for the PENTNT utility is located in the Registry subtree HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager. The following parameter is used by the PENTNT utility:

REG_DWORD
ForceNpxEmulation = 0 | 1 | 2

Specifies if the floating point emulation is turned on or off. If set to 0, floating point emulation is not enabled and floating point hardware is enabled. If set to 1, conditional floating point emulation is enabled. If set to 2, unconditional emulation is enabled. By default, this parameter is set to 0.

Additional query words: prodnt fpu bug intel

Keywords :
Version :
Platform :
Issue type :


Last Reviewed: February 10, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.