Check out the Cyrix MII processor

Home  Index  Contact  What's New













Cyrix CPU Detection Guide

Preliminary Revision 1.01

?1997 Cyrix Corporation. All Rights Reserved.

Cyrix reserves the right to make changes in its products without notice in order to improve design or performance characteristics.
The information in this publication is believed to be accurate at the time of publication, but Cyrix makes no representations or warranties with respect to the accuracy or completeness of the contents of this publication or the information contained herein, and reserves the right to make changes at any time, without notice. Cyrix disclaims responsibility for any consequences resulting from the use of the information included in this publication.
This publication neither states nor implies any representations or warranties of any kind, including but not limited to, any implied warranty of merchantability or fitness for a particular purpose. Cyrix products are not authorized for use as critical components in life support devices or systems without Cyrix's written approval. Cyrix assumes no liability whatsoever for claims associated with the sale or use (including the use of engineering samples) of Cyrix products except as provided in Cyrix's Terms and Conditions of Sale for such product.

Trademarks

Cyrix, the Cyrix logo, and combinations thereof are trademarks of Cyrix Corporation.

5x86, 6x86, 6x86MX, MediaGX are registered trademarks of Cyrix Corporation.

MMX is a trademark of Intel Corporation.

Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies.

Revision History

REVISION RELEASE DATE DESCRIPTION OF CHANGES
1.00 09/30/97 First Release (preliminary).
1.01 10/02/97 Corrected the GXm and MediaGX values for DIR0 lookups
?/FONT> ?/FONT> ?/FONT>

Cyrix CPU Detection

Introduction

This document provides an overview of the three possible methods for detecting a Cyrix CPU. Once the correct method is identified (flowchart below), each detection method is covered in detail. This includes: How to detect the Cyrix CPU; Which CPU is present; What is the standard feature set; What are the Cyrix specific features.

The three CPU detection methods are:

1. CPUID - Standard Levels

This method provides the standard feature set (not vendor specific feature such as Extended MMX) and requires a look-up table.

2. CPUID - Extended Levels

This is the preferred method of detection because it provides the ability to get the CPU name without requiring a look-up table. It also provides information that may be Cyrix specific. The CPUID - Extended Levels are only supported in the most recent CPUs such as GXm.

3. The 5/2 Method

This method is used for older CPUs that do not support CPUID such as the 486DLC, 486SLC, 486DX, 486DX2 etc.

The flowchart below should be used to determine the correct detection method. After identifying which method to use, refer to the correct section for further explanation.

CPUID - Standard Levels

Overview

The CPUID instruction is an application level (ring 3) instruction that provides information about the system's processor and its feature set. The CPUID instruction provides multiple functions, each containing different information about the processor. The CPUID instruction is used to identify the vendor, family, and type of processor, as well as information about any special features, like MMX™, that the processor may support. The CPUID instruction may be executed at any privilege level.

Testing for CPUID Support

In order to avoid an invalid opcode exception on processors that do not support the CPUID instruction, software must first verify that the processor supports the CPUID instruction. The presence of the CPUID instruction is indicated by the ID bit (bit 21) in the EFLAGS register. If this bit can be toggled, the CPUID instruction is present and enabled on the processor. The following sample code will check for the presence of the CPUID instruction. The following code should be executed after support for EFLAGS is verified or at least a 80386/80486 is known to be present.

Sample Code

pushfd; get extended flags
pop eax; store extended flags in eax
mov ebx, eax; save current flags
xor eax, 200000h; toggle bit 21
push eax; put new flags on stack
pushfd; get extended flags
pop eax; store extended flags in eax
xor eax, ebx; if bit 21 r/w then eax <> 0
popfd; flags updated now in flags
je no_cpuid; can't toggle id bit (21) no cpuid here

Standard CPUID Levels

Each of the standard CPUID levels (EAX = 0 and EAX = 1) contain the same information for all vendors. The higher CPUID levels, including the extended levels, report information that is specific to the Cyrix family of processors.

Table 1 summarizes the actual CPUID values currently returned by Cyrix processors.

Table 1. Actual CPUID Result Values:

Description 6x86 6x86 (4.x) MediaGX 6x86MX GXm
Standard Levels 1 1 1 1 1 2
Stepping xx xx xx 0 0
Model 2 2 4 0 4
Family 5 5 4 6 5
Type 0 0 0 0 0
Extended Levels 2 - - - - 8000 0005h
TLB Info 3 - - - - 00 00 70 01h
Cache Info 3 - - - - 00 00 00 80h

1 EAX Value when CPUID (EAX = 0) Executed
2 Extended CPUID - EAX = 8000 0000h
3 EAX = 2; See Table 5 for Value Definitions

(EAX = 0h) - Vendor String and Max Standard CPUID Levels Supported

Standard function 0h (EAX = 0) of the CPUID instruction returns the maximum standard CPUID levels supported by the current processor in EAX. EBX through EDX return the vendor string of the processor. Please make note of the order of the registers.

EAX Max Standard Levels
EBX Vendor ID String 1
ECX Vendor ID String 3
EDX Vendor ID String 2

(EAX = 01h) - Processor Signature and Standard Feature Flags

Standard function 01h (EAX = 1) of the CPUID instruction returns the Processor Type, Family, Model, and Stepping information of the current processor in EAX. The Standard Feature Flags supported are returned in EDX. The other registers upon return are currently reserved. The breakdown of the EAX register is as follows:

EAX[3:0] Stepping ID
EAX[7:4] Model
EAX[11:8] Family
EAX[15:12] Type
EAX[31:16] Reserved
EBX Reserved
ECX Reserved
EDX Standard Feature Flags

(EAX = 02h) - TLB and L1 Cache Information

Standard function 02h (EAX = 02h) of the CPUID instruction returns information that is specific to the Cyrix family of processors. Information about the TLB is returned in EAX. Information about the L1 Cache is returned in EDX. This information is to be looked up in a lookup table. (See Table 5)

EAX TLB Information
EBX Reserved
ECX Reserved
EDX L1 Cache Information

Standard Feature Flags

The standard feature flags are returned in the EDX register when the CPUID instruction is called with standard function 01h (EAX = 1). Each flag refers to a specific feature and indicates if that feature is present on the processor. Some of these features require enabling or have protection control in CR4. Table 2 summarizes the standard feature flags.

Before using any of these features on the processor, the software should check the corresponding feature flag. Attempting to execute an unavailable feature can cause exceptions and unexpected behavior. For example, software must check bit 4 before attempting to use the Time Stamp Counter instruction. See the glossary for a definition of each feature.

Table 2 - Standard Feature Flags Values:

Feature Flag EDX Bit CR4 Bit 6x86* 6x86* (4.x) MediaGX* 6x86MX GXm
FPU 0 - X X X X X
V86 1 0,1 - - - - -
Debug 2 3 - X - X -
Page Size 3 4 - - - X -
Time Stamp Counter 4 2 - - - X X
RDMSR/ WRMSR 5 8 - - - X X
PAE 6 5 - - - - -
MC Exception 7 6 - - - - -
CMPXCHG8B 8 - - X - X X
APIC on Chip 9 - - - - - -
Reserved 10-11 - - - - - -
MTRR 12 - - - - - -
Global Bit 13 7 - - - X -
Machine Check 14 - -
Did you find what you were looking for??/FONT> Yes No
If not, what were you looking for?
What type of visitor are you?
?/font>


Can't find it? ��
?
Copyright & Legal Info ?1999 VIA-Cyrix Inc.