Detecting the CPU model has been easy since Intel added the
CPUID instruction to their Pentium processors (and some late 486s). However, earlier CPUs did not have this feature, so software had to rely on the slight differences between models.
This page by R. Collins explains quite well how to create a detection algorithm, however it doesn't explain how to tell apart some of the models (such as DX2 vs DX4), or how to find the specific models of non-Intel CPUs.
Specifically, is it possible to tell apart a i486DX vs i487SX? Or a i486DX vs i486DX2 vs i486DX4? I am trying to create a DOS program that displays as much information about the CPU as possible.
By the way, I am aware of the CPU leaving its stepping information in
EDX at reset, just as described in the page, but I would like to know if there are also alternative methods, since some BIOSes are mapped both at 0xFFFFFFF0 and 0xFFEFFFF0, meaning that the A20 gate trick described in the article above won't work.