Throughout my research I came to realize that my opinions were based on nothing
but myths. In many respects the two coprocessors are very similar to each other,
while in other respects the coprocessors differ radically in design and
implementation. I will sum up the points I consider most important.
1. Intel uses a synchronous bus between the CPU and the MCP, while the actual
internal floating unit can run asynchronously to this. This increases complexity
of the design as synchronization logic must exist between the two processors,
but like this the floating point unit can run at a higher clock speed than the
CPU upon installation of a dedicated clock generator. 2. The (logical, not
physical) addition of tag fields to the data registers in the 80387 to signal
certain conditions of the data registers makes certain operations that support
tags much faster, as certain information does not need to be decoded as it is ?
cached? in the tag fields. 3. The 80387 can use its registers either in stack
mode or absolute addressing mode. Though some operations require stack
addressing, this feature adds a little more flexibility to the MCP (even though
the stack operations might be a legacy from the 8087 or 80287).
In most other fields, the coprocessors are equals. They have the same number of
data registers, both add their own instruction set and registers to programmers
in a transparent fashion and both support the same IEEE numeric representation
standards. Probably both coprocessors have similar processing power at equal
clockspeed as well. Even though the Motorola coprocessor seems to be superior by
name, I have to admit that the 80387 gets my vote for more flexibility and
thoughtful optimizations (tags).