I was reading a book on computer architecture to improve my understanding on microprocessors when I reached a stumbling block that the author didn't bother to explain. The book is concerned with intel processors from the original Pentium upwards.
The author never explained what x86 actually meant from processor to processor. I'm finding it difficult to understand because during a discussion on the original Pentium, the author said that one of the drawbacks of the Pentium is the that it assigned more than 30% of its transistors for x86 legacy support. So, I thought that he meant that the Pentium has to be compatible with programs written for older generation of processors like the 80386. Later, in another chapter on Pentium 4, he said he said 10% of the transistors were used for x86 support. What I didn't understand is which x86 is he talking about. Also, I'm certain that intel wasn't implementing different instruction sets for each new processor it released. If anything, new instructions will be added for new execution unit. What I'm trying to say is that if that is the case then x86 instructions are already a subset of the new instruction set. Or is that not so ?
I think I'm pretty confused. It would be helpful for someone to explain this x86 support thing and why would anyone want to run legacy software after, say, 10 years ? Also, are there different labels for different x86 implementations ? Because when they say x86 legacy support, do they mean x86 for in 80386 or maybe in 8086 ? Your reply will be cherished. Thanks
aaa
) can be implemented in microcode, which takes die space but doesn't make the CPU slower when it's running code that doesn't use those instructions. x86 legacy baggage is more than just old instructions, though. More important is the hard-to-decode variable-length machine code encoding of all instructions, and some of the weird semantics of common instructions. (e.g. partial flags frominc
and others requires the CPU to rename different parts of EFLAGS separately). – Peter Cordes