sj95126 wrote:
For the 8086, it was the 8087 FPU, for the 80286 it was the 80287, etc. etc.
For the 386, it was the 387, except it took Intel a while to finish the 387 so they made the 386 also work with the 287. (Then they later went back and made a 387 that worked with the 186 and 286.) FPU history is fun!
sj95126 wrote:
If there was an FPU, there was a mechanism for software to detect it (I forget what it was, whether it was attempting an instruction like FINIT and catching the exception, or something else).
Catching exceptions would be too easy. You had to tell the FPU to write its control and status registers into memory, then read that memory and see if the values looked like something a FPU would write. You also had to be careful which instructions you used, since some of them could cause the CPU to hang if no FPU was installed.
sj95126 wrote:
(I can't remember if there wasn't even one in the silicon, or if it was disabled).
It's both. Earlier ones had it disabled, later ones removed it. It's not clear exactly how it was disabled, since disabling the FPU also required changing the CPU signature.