ReadMe32.txt---------------------------------------------------- 32-bit DLL and Test Program Contents: o EXECUTE\CPUINF32.DLL -- 32-bit CPUINFO DLL o EXECUTE\TSTDLL32.EXE -- Test Program for CPUINF32.DLL o SOURCE\*.* -- Source Files for the DLLs, the test programs, and the DOS code Installation: Copy both the TSTDLL32.EXE file and the CPUINF32.DLL file to the same directory. Execute the TSTDLL32.EXE program. The DLL does not have to be placed in the same directory, but if it is not placed in the same directory that the program is executed from, the DLL must be pointed to by the PATH. Otherwise the Windows* will not know where to find the file. OVERVIEW TSTDLL32 is a 32-bit MS-Windows* test program for the CPUINF32 DLL. TSTDLL32 requires at least an Intel386(TM) processor and MS-Windows 3.1 with Win32s,Windows 95, or Windows NT. CPUINF32 contains functions to return the family, type/family/model/ stepping, feature flags, processor speed, and time stamp reading of the host processor. Note that some functions do not pertain to all systems. See below for further information. To determine what type of processor is in the computer, the CPUINF32 DLL uses the standard Intel cpuid assembly code. To determine clock speed, the CPUINF32 DLL uses one of two algorithms. The first algorithm (for use on systems not supporting the Time Stamp Register) uses the Win32 API call QueryPerformanceCounter() to determine the amount of time taken to run a specified set of instructions. The speed is then calculated based on the number of cycles run and the number of microseconds it took to run them. This algorithm is basically a very crude benchmark test. The second algorithm (for use on systems which do support the Time Stamp Register) again utilizes QueryPerformanceCounter(). Instead of using a set number of instructions to determine the number of cycles executed throughout the test, this algorithm simply reads the Time Stamp at the beginning and the end of the test to find how many cycles have passed. Test Program Functionality 1. CPU Family - this tests the wincpuid() function in CPUINF32.DLL, and returns the cpu Family (5-Pentium(R) processor, 4-i486(TM) processor ...) as a hex number in a windows message box. 2. CPU Extensions - this tests the wincpuidext() function in CPUINF32.DLL, and returns the Processor Type/Family/ Model/Stepping as a hexidecimal number in a windows message box. The processor T/F/M/S are a 16-bit quantity returned in the AX register by the CPUID operation. If CPUID is not supported, only the Family, in bits 11:8, are displayed by TSTDLL32. AX(15:14) = Reserved AX(13:12) = Processor type AX(11:8) = CPU Family AX(7:4) = CPU Model(if CPUID supported) AX(3:0) = Stepping #(if CPUID supported) 3. CPU Speed - this tests the cpuspeed() function in CPUINF32.DLL, and returns a FREQ_INFO structure which contains the calculated speed of the processor, the normalized (to the nearest known processor speed) value of the processor, and the number of clock cycles and microseconds that elapsed during the test sampling. After displaying this information, the user is asked whether to proceed with the testing and run 1000 more iterations of the test. The results are then displayed statistically. This statistical feedback is primarily for the user to get information on the precision of the cpuspeed() function. Note- Multiple sampling iterations are done within cpuspeed() as well. In most cases, multiple calls to cpuspeed will not increase the accuracy of the data. If greater accuracy is necessary simply adjust the constants in SPEED.H. 4. CPU Features - this tests the wincpufeatures() function in cpuid32.DLL, and returns the Feature Flags as a hexidecimal number in a windows message box. The Feature Flags are a 32-bit quantity returned in the EDX register by the CPUID operation. 5. Read Time Stamp - this tests the winstampread() function in CPUINF32.DLL. The 64-bit Time Stamp register is currently available only on Pentium(R) and Pentium Pro(R) processors. All other processors will return all zeroes for the time stamp value. 6. Get DLL Version - this tests the getdllversion() function in CPUINF32.DLL. It returns an unsigned short. The upper byte is the major version and the lower byte is the minor version. +----------------------------------------------------------+ | This program has been developed by Intel Corporation. | | You have Intel's permission to incorporate this code | | into your product, royalty free. Intel has various | | intellectual property rights which it may assert under | | certain circumstances, such as if another manufacturer's | | processor mis-identifies itself as being "GenuineIntel" | | when the CPUID instruction is executed. | | | | Intel specifically disclaims all warranties, express or | | implied, and all liability, including consequential and | | other indirect damages, for the use of this code, | | including liability for infringement of any proprietary | | rights, and including the warranties of merchantability | | and fitness for a particular purpose. Intel does not | | assume any responsibility for any errors which may | | appear in this code nor any responsibility to update it. | +----------------------------------------------------------+ Information in this document is provided in connection with Intel products. Intel assumes no liability whatsoever, including infringement of any patent or copyright, for sale and use of Intel products except as provided in Intel's Terms and Conditions of Sale for such products. Intel retains the right to make changes to these specifications at any time, without notice. * Other brands and names are the property of their respective owners. Copyright (c) 1995, Intel Corporation. All rights reserved. ----------------------------------------------------ReadMe32.txt