Reply 60 of 72, by aquishix
- Rank
- Member
wrote:The Am386DX-40 doesn't have a built-in FPU. The Am386DX is basically just a 'carbon copy' of the Intel 386DX, and the 40 MHz ver […]
wrote:I would if I could, but I don't have a separate FPU installed(yet -- I've ordered a Cyrix fastmath one, but it hasn't arrived). This is just the integrated FPU circuitry of the Am386DX-40.
The Am386DX-40 doesn't have a built-in FPU.
The Am386DX is basically just a 'carbon copy' of the Intel 386DX, and the 40 MHz version is just a 33 MHz one with slightly more modern manufacturing, which allows the higher clockspeed (some late Intel 33 MHz ones could also run at 40 MHz, if you cherry-pick them).
As such, there is no internal FPU.So if your machine insists that it has an FPU, that is strange... And if performance is very low, chances are it is not a physical CPU, but some software emulation?
I knew that the Am386DX-40 didn't have a built in floating point co-processor. Up until now, I thought that the terminology was consistent with, say, ALUs:
https://en.wikipedia.org/wiki/Arithmetic_logic_unit
And since an ALU is integrated into the circuitry of the CPU(always), I thought that some kind of FPU was as well(always). From what you just said and what I found on the web, the industry uses the term "FPU" to mean "co-processor", because x86 series processors without co-processors (prior to the 486DX) also didn't have any internal floating point circuitry of any kind. I thought that floating point op codes were implemented in the base x86 models, but just inefficiently. I thought there was an analogy between, say, an i7 CPU with a (crappy) integrated GPU, as distinct from a (powerful) external GPU. I see now that it's more like the old days when "software rendering" was an option in 3D games -- I.e., the CPU was doing, via specialized software, all the calculations that a GPU now handles in the stream processors / CUDA "cores".
So in other words, the terms "FPU" and "floating point co-processor" mean the same thing. That clears that up. Thanks!
In fact, that makes me think that the floating point performance has nothing to do with my overall system performance problems, since if Warcraft I can run at all in a system with no FPU installed, it cannot even be trying to use those FPU op codes.
Clear something else up for me -- when a game or other program is compiled to use an FPU, will it simply crash if an FPU is not present? If that's the case, how do programmers leverage the FPU's abilities when it's not known in advance that an FPU is present? Seems like they'd have to compile it at least twice -- once for systems without an FPU, and once for systems with an FPU...and then run whichever executable makes sense. Or use dynamically linked libraries...or simply only call special floating point functions based on a boolean value that's set when the FPU is detected at the time the program is loaded.