Valid HTML 4.01 Transitional Valid CSS Valid SVG 1.0

Me, myself & IT

CPUID Enumerator and Decoder

Purpose
Sample Output
Specification
Implementation and Build Details
Authenticity and Integrity

Purpose

The command line alias console program CPUPRINT.EXE for Microsoft® Windows® NT decodes and prints the information gathered from the processor’s CPUID and XGETBV instructions.

CPUPRINT.EXE enumerates the processor capabilities alias features IBRS, STIBP, IBPB, L1D_FLUSH and SSBD as well as the presence of the IA32_ARCH_CAPABILITIES and IA32_FLUSH_CMD model specific registers, introduced by AMD and Intel with firmware alias microcode updates to fix the vulnerabilities CVE-2017-5715 alias Branch Target Injection, CVE-2017-5753 alias Bounds Check Bypass, CVE-2017-5754 alias Rogue Data Cache Load, CVE-2018-3639 alias Speculative Store Bypass, CVE-2018-3640 alias Rogue System Register Read, CVE-2018-3693 alias Bounds Check Bypass Store, and CVE-2018-3615, CVE-2018-3620 plus CVE-2018-3646 alias L1 Termination Fault, better known by their nicknames Meltdown, Spectre, Spectre-NG and Foreshadow.
It also enumerates the processor capabilities alias features PCID, introduced 2010 in first generation Intel Core processors with Westmere microarchitecture, and INVPCID, introduced 2013 in fourth generation Intel Core processors with Haswell microarchitecture, both available only in long mode, i.e. to 64-bit operating systems, which are necessary to reduce the performance impact of the fix for CVE-2017-5754 alias Meltdown.

Note: when started in its own console window, for example per double-click, CPUPRINT.EXE waits for a keypress before it exits and its console window closes; it beeps once and flashes the title bar of its console window to indicate this wait state.

Sample Output

CPUPRINT.EEE shows typical output for an Intel® Atom processor.

CPUPRINT.LOG and CPUPRINT.TXT show typical outputs for Intel® Core processors.

CPUPRINT.AMD shows typical output for an AMD® Athlon processor.

CPUPRINT.ZEN shows the output for an AMD® Ryzen7 2700X processor.
CPUPRINT.ZEN2 shows the output for an AMD® Ryzen5 3600 processor.
CPUPRINT.EPYC shows the output for an AMD® EPYC 7713 processor.
CPUPRINT.EXC shows the output for an AMD® A4-9125 Radeon R3 processor with microcode update applied.

CPUPRINT.CFL shows the output for an Intel® Core i5-8400 Coffee Lake processor with microcode update applied.
CPUPRINT.NEW shows the output for an Intel® Core i7-7500U processor with microcode update applied.

CPUPRINT.ICL shows the output for an Intel® Core i5-1035G1 Ice Lake processor with microcode update applied.
CPUPRINT.HVP shows the output for the same processor running under Microsoft Hyper-V, which but exhibits significant differences to the previous output.

CPUPRINT.KVM shows the output for an Intel® Xeon® Platinum 8124M processor running under Linux’ KVM.

Specification

CPUPRINT.EXE supports multiple specifications of (real and virtualised) x86 and x64 processors from several vendors: AMD logo
AMD64 Architecture Programmer’s Manual Volume 2: System Programming
Revision 3.37, March 8, 2021
AMD64 Architecture Programmer’s Manual Volume 3: General Purpose and System Instructions
Revision 3.32, March 8, 2021
AMD64 Technology Indirect Branch Control Extension
Revision 4.10.18, April 2018
AMD64 Speculative Store Bypass Disable
Revision 5.21.18, May 2018
AMD Geode LX Processors Data Book
February 2009
Intel logo
Intel® 64 and IA-32 Architectures Software Developer’s Manuals
Revision 075, June 2021
Intel® Architecture Instruction Set Extensions and Future Features Programming Reference
Revision 044, June 8, 2021
Intel® Software ISA Extensions
October 2017
Speculative Execution Side Channel Mitigations
Revision 2.0, May 2018
Intel® Architecture Memory Encryption Technologies Specification
Revision 1.1, December 2017
Control-flow Enforcement Technology Preview
Revision 3.0, May 2019
Intel® Itanium® Architecture Software Developer’s Manual
Revision 2.3, May 2010
Microsoft logo
Microsoft Hypervisor Top Level Functional Specification
Version 6.0b, February 2020 (which is but incomplete)
VIA logo
VIA C7-M Processor Datasheet
Revision 2.50, May 2008
VIA Eden Processor Datasheet
Revision 1.70, January 2006
VIA PadLock Programming Guide
August 2005
VIA Eden ESP Processor Datasheet
Revision 1.79, October 2004
VIA C3 Nehemiah Processor Datasheet
Revision 1.13, September 2004
VIA Antaur Processor Datasheet
July 2003

Implementation and Build Details

CPUPRINT.EXE is a pure Win32 binary executable, written from scratch in ANSI C, built with the Platform SDK for Windows Server 2003 R2 Microsoft Visual C++ Compiler 2010 SP1 from update 2519277, but without the MSVCRT libraries, for use on Windows XP and newer versions of Windows NT as well as Windows PE.

CPUPRINT.EXE is available for the I386 alias x86 and AMD64 alias x64 processor architectures of Windows NT.
Note: on the IA64 processor architecture, the CPUID instruction is supported in the emulated I386 alias x86 execution environment only!

Note: CPUPRINT.EXE is neither based on other abandoned or outdated tools like cpuid, cpuid or cpuid nor related to any of them!

Authenticity and Integrity

CPUPRINT.EXE is digitally signed using a (self-issued) X.509 leaf certificate and time stamped.

Download and install the (self-signed) X.509 root certificate to validate and verify the digital certificate and the signature.

Contact

If you miss anything here, have additions, comments, corrections, criticism or questions, want to give feedback, hints or tipps, report broken links, bugs, deficiencies, errors, inaccuracies, misrepresentations, omissions, shortcomings, vulnerabilities or weaknesses, …: don’t hesitate to contact me and feel free to ask, comment, criticise, flame, notify or report!

Use the X.509 certificate to send S/MIME encrypted mail.

Note: email in weird format and without a proper sender name is likely to be discarded!

I dislike HTML (and even weirder formats too) in email, I prefer to receive plain text.
I also expect to see your full (real) name as sender, not your nickname.
I abhor top posts and expect inline quotes in replies.

Terms and Conditions

By using this site, you signify your agreement to these terms and conditions. If you do not agree to these terms and conditions, do not use this site!

Data Protection Declaration

This web page records no (personal) data and stores no cookies in the web browser.

The web service is operated and provided by

Telekom Deutschland GmbH
Business Center
D-64306 Darmstadt
Germany
<‍hosting‍@‍telekom‍.‍de‍>
+49 800 5252033

The web service provider stores a session cookie in the web browser and records every visit of this web site with the following data in an access log on their server(s):


Copyright © 1995–2021 • Stefan Kanthak • <‍stefan‍.‍kanthak‍@‍nexgo‍.‍de‍>