The CPUID opcode is 0Fh, A2h (as two bytes, or A20Fh as a single word). While the CPUID instruction is specific to the x86 architecture, other architectures (like ARM) often provide on-chip registers which can be read in prescribed ways to obtain the same sorts of information provided by the x86 CPUID instruction. Because the 68000 offered an unprivileged MOVE from SR the 2 different CPUs could be told apart by a CPU error condition being triggered. This notable instruction (and state machine) change allowed the 68010 to meet the Popek and Goldberg virtualization requirements. In the Motorola 68010 the instruction MOVE from SR became privileged. These could be used to tell various CPU family members apart. In the Motorola 680x0 family - that never had a CPUID instruction of any kind - certain specific instructions required elevated privileges. Outside the x86 family, developers are mostly still required to use esoteric processes (involving instruction timing or CPU fault triggers) to determine the variations in CPU design that are present. With the introduction of the 80386 processor, EDX on reset indicated the revision but this was only readable after reset and there was no standard way for applications to read the value.
Prior to the general availability of the CPUID instruction, programmers would write esoteric machine code which exploited minor differences in CPU behavior in order to determine the processor make and model.
2.5 EAX=4 and EAX=Bh: Intel thread/core and cache topology.2.3 EAX=2: Cache and TLB Descriptor information.2.2 EAX=1: Processor Info and Feature Bits.2.1 EAX=0: Highest Function Parameter and Manufacturer ID.