CHKCPU comes in two flavors, a DOS version and a Win32 console mode version. I've named the Win32 version CHKCPU32 to distinguish it from the DOS version. Both versions give approximately the same text-based output.
You can download both programs here and in each zip a text-file is included with more information about the program and the changes I've made in this revision.
DOS version: CHKCPU v1.27.1
Win32 version: CHKCPU32 v2.15
Both programs have the same update status regarding the CPU model data, and they are both freeware.
| Feature | CHKCPU | CHKCPU32 | Remarks | 
|---|---|---|---|
| Support for DOS | Yes | No | CHKCPU32 is the 32-bit successor of the 16-bit CHKCPU DOS version. | 
| Support for Windows | Yes, but only 32-bit Windows | Yes, any 32-bit or 64-bit Windows version | CHKCPU32 has better speed indication accuracy under WinNT4 and later Windows versions. CHKCPU32 is 64-bit Windows aware and makes use of additional CPU Topology support of 64-bit Windows. | 
| CPU support | 8086/8088 and up | 586 and up | Support for NexGen and UMC CPUs has been dropped from CHKCPU32. Use CHKCPU if 8086/8088, 80286, 386, 486, NexGen, or Vortex86 support is needed. | 
| Multiplier/FSB support | Yes | No | For most CPUs, CHKCPU will display the multiplier and busspeed in Real mode DOS only. | 
| Multi Core/CPU support | No | Yes | CHKCPU32 shows the processor topology in a system on 3 levels: Physical CPU count, Core count per CPU, Total number of logical processors (=Threads). Note: As with any Win32 process, CHKCPU32 is limited to 32 Threads under 32-bit Windows. Under 64-bit Windows however, CHKCPU32 is able to detect up to 256 logical processors. | 
| XML output | No | Yes | CHKCPU32 can display various CPU details in XML format. Intended for easy parsing of specific CPU data for use in another program. | 
| L1 Cache Mode indication | Yes | No | As this indication lost its meaning on modern Pentium class CPUs, it has been dropped from CHKCPU32. | 
To make using the text-based Chkcpu(32) easier under Windows, I have packed a batch file in the zip of both programs. This batch-file allows a quick check on the CPU details, without opening a command window and typing the required commands. Just unzip the CHKCPU(32).BAT and CHKCPU(32).EXE files in a folder and double-click on the CHKCPU(32).BAT file in explorer.
| 
 CPU Identification utility v1.27.1               (c) 1997-2022 Jan Steunebrink
 ------------------------------------------------------------------------------
 CPU Vendor and Model: AMD K6-III+ 450/475/500/550
 Internal CPU speed  : 601.2 MHz  (using internal Time Stamp Counter)
 Clock Multiplier    : 6.0 
 Bus clock speed     : 100.2 MHz
 CPU-ID Vendor string: AuthenticAMD
 CPU-ID Name string  : AMD-K6(tm)-III Processor
 CPU-ID Signature    : 0005D0
                       |||||+- Stepping or sub-model no.
                       ||||+- Model: Indicates CPU Model and 486 L1 cache mode
                       |||+- Family: 4=486, Am5x86, Cx5x86
                       |||           5=Pentium, Nx586, Cx6x86, K5/K6, C6, mP6
                       |||           6=PentiumPro/II/III, CxMII/III, Athlon, C3
                       |||           F=Pentium4, Athlon64
                       ||+- Type: 0=Standard, 1=Overdrive, 2=2nd Dual Pentium
                       |+- Ext. Model: Extends the Base Model to an 8-bit value
                       +- Ext. Family: Extends the Base Family value
 Current CPU mode    : Real
 Internal (L1) cache : Enabled in Write-Back mode
 | 
Except for the /I switch, CHKCPU32 supports the same switches, adds an /X switch for the XML mode, and uses the /R switch for another purpose:
| 
 CPU Identification utility v2.15                 (c) 1997-2022 Jan Steunebrink
 ------------------------------------------------------------------------------
 CPU Vendor and Model: Intel Celeron M 410/420/423/430 C0-step
 Internal CPU speed  : 1729.0 MHz
 System CPU count    : 1 Physical CPU(s), 1 Core(s) per CPU, 1 Thread(s)
 CPU-ID Vendor string: GenuineIntel
 CPU-ID Name string  : Intel(R) Celeron(R) M CPU        430  @ 1.73GHz
 CPU-ID Signature    : 0006E8
 CPU Features        : Floating-Point Unit on chip  : Yes
                       Time Stamp Counter           : Yes
                       Enhanced SpeedStep Technology: No
                       Hyper-Threading Technology   : No
                       Execute Disable protection   : Yes
                       64-bit support               : No
                       Virtualization Technology    : No
 Instr set extensions: MMX, SSE, SSE2, SSE3
 Size of L1 cache    : 64 KB
 Integrated L2 cache : 1024 KB
 Integrated L3 cache : None
 | 
| 
 CPU Identification utility v2.15                 (c) 1997-2022 Jan Steunebrink
 ------------------------------------------------------------------------------
 CPU Vendor and Model: AMD Ryzen 5 3600/3600X Six-Core B0-rev.
 Internal CPU speed  : 3599.9 MHz
 System CPU count    : 1 Physical CPU(s), 6 Core(s) per CPU, 12 Thread(s)
 CPU-ID Vendor string: AuthenticAMD
 CPU-ID Name string  : AMD Ryzen 5 3600 6-Core Processor              
 CPU-ID Signature    : 870F10
 CPU Features        : Floating-Point Unit on chip  : Yes
                       Time Stamp Counter           : Yes
                       Cool'n'Quiet support         : Yes
                       Hyper-Threading Technology   : Yes
                       Execute Disable protection   : Yes
                       64-bit support               : Yes
                       Virtualization Technology    : Yes
 Instr set extensions: MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4A,
                       AES, AVX, AVX2, F16C, FMA3, SHA
 Size of L1 cache    : 6 x 64 KB
 Integrated L2 cache : 6 x 512 KB
 Integrated L3 cache : 32768 KB
 | 
CHKCPU32 is meant to be used on 586/Pentium or higher CPUs only. CPUs which do not know the CPUID instruction are not supported by CHKCPU32. In addition, CHKCPU32 relies solely on the TSC for CPU speed measurement.
CHKCPU32 recognizes CPUs from Intel, AMD, Cyrix/IBM, IDT, VIA, Rise, and Transmeta.
Most CPUs provide data on which Clock multiplier setting they are running.
CHKCPU will display the Clock multiplier when available, and also calculate and displays the Bus clock speed in this case.
Note that the classic Pentiums, like the Intel Pentium I, Pentium MMX, and AMD K6 do not provide any clock multiplier data.
For Intel CPUs the internal speed equals the rating. So a Pentium 200 will run internally at 200 MHz. (66.6 x 3)
For AMD, Cyrix, and Rise CPUs the internal speed can be lower than the PR rating due newer and more efficient design.
For the K6-2 and later AMD CPUs upto 1400MHz, the internal speed equals the rating but modern CPUs use a performance figure as rating.
CHKCPU measures the CPU speed by accurately timing the execution of a bunch of slow 'Divide' instructions.
For Pentium class CPUs however, the internal Time Stamp Counter (TSC) is used whenever possible to further improve the accuracy of the speed measurement.
A message behind the CPU speed display indicates if the TSC is used.
As using the TSC would crash CHKCPU when the CPU is in 'Virtual mode', the CPU speed measurement switches back to the (less accurate) instruction timing method when the CPU is not in 'Real or Protected mode'.
CHKCPU32 measures the CPU speed by accurately timing the increment of the CPU's internal Time Stamp Counter (TSC). As a timebase, the Windows own PerformanceCounter is used which in turn is based on one of the motherboard's hardware timers.
When the /R switch is used, the displayed CPU speed is a value measured by Windows early during the boot process and stored in the Registry. This value can therefore deviate from the actual CPU speed when running CHKCPU32.
CHKCPU32 only:
The 'System CPU count' display indicates the hardware topology of enabled logical processors in the system on 3 levels:
1) Number of physical CPU packages
2) Number of Cores per CPU package
3) Total number of logical processors (=Threads).
Without Hyper-Threading, the number of logical processors is equal to the number of Cores per CPU times the number of physical CPU packages.
But with Hyper-Threading enabled, the indicated number of logical processors is double the number of physical cores in a system.
The Pentium and higher CPU families normally operate their L1 cache in Write-Back mode.
Exceptions are: the Nx586, the Intel Pentium 63/83 ODP (P24T), the Cyrix 6x86/6x86MX/MII, and the DMP Vortex86.
The Nx586 and Vortex86 have only Write-Through mode and are indicated as such.
The P24T can operate in either the Write-Through or Write-Back mode. For this CPU, CHKCPU uses a special routine to detect the difference.
The Cyrix 6x86 series usually operates in Write-Back mode but can be switched to Write-Through mode by enabling CR0 bit 29 (NW - No Write-back). (Note that the Cyrix MediaGX/GXm has the definition of this NW bit reversed and on this model it is named NW - No Write-Through.) CHKCPU checks this NW bit and displays the L1 cache mode accordingly.
For all other Pentium class CPUs, CHKCPU assumes Write-Back mode.
   