Page 1 of 1

Differences between i386, i486 and i586

Posted: Sat Jul 24, 2010 4:09 pm
by tobbebia
Hello again!

I am wondering what the differences between i386, i486 and i586 are. I know that they are different processor types based on the same architechture. Are there more opcodes in the newer ones? Are there any other differences?

tobbebia

Re: Differences between i386, i486 and i586

Posted: Sat Jul 24, 2010 4:19 pm
by NickJohnson
IIRC, the major difference between the i386 and i486 was the addition of a floating point unit, and the major difference between the i486 and i586 was the renaming to "Pentium" (and maybe cmpxchg?). Of course, there are plenty of opcodes that were added as well: if you look through any opcode reference, it will usually tell you if an opcode will only work on certain processors.

Re: Differences between i386, i486 and i586

Posted: Sun Jul 25, 2010 2:52 am
by Combuster
There are 486s without FPU, so that doesn't work.

The real difference is that the 486 adds support for multiprocessing. It features new opcodes from wait-free programming theory (compare-and-swap and fetch-and-increment). It also adds cache support and cache management (both for RAM and TLBs), most notably adding the invlpg instruction. Establishing 386-compatibility from a 486-design is (beep).

From i586 on, you have a guaranteed built-in FPU, model-specific registers, global pages, and the CMPXCHG8B instruction. Essentially, you only need to do without the 64-bit compare-and-swap in your design to go from 586-compatibility to 486-compatibility - the other features can be ignored or are rather silent (like not having PG only leads to some more TLB flushes). From the end user's point of view, the improved clock speeds and the superscalar architecture is the only thing that really matters over the 486.

Re: Differences between i386, i486 and i586

Posted: Sun Jul 25, 2010 3:31 am
by Candy
tobbebia wrote:Hello again!

I am wondering what the differences between i386, i486 and i586 are. I know that they are different processor types based on the same architechture. Are there more opcodes in the newer ones? Are there any other differences?

tobbebia
A bit from memory. You should be able to find most of it on wikipedia though.

The 386 was the first CPU with a 32-bit processing core. It also extended protected mode to 32-bits. It was still non-pipelined and ran at a speed of up to 16 or 25 MHz (iirc).

The 486 was like a 386, except that it now came in two packages (the SX and DX package, the latter of which also contained a 487 FPU). You could also buy a separate 387 to put next to your 486SX or you could use a 486 overdrive, which was basically a 486dx that disabled your SX. Internally, it was pipelined (unlike the 386!) into a pipeline with (iirc) 4 stages. No superscalar stuff yet, but it did start pipelining.

The 586, called Pentium for trademark issues, wasn't just pipelined but had two of them - a U and a V pipeline. The U pipeline could do any instruction, the V pipeline could do the simple ones. In effect, the V pipeline was very underpowered but could still handle some 60% of the instructions in your program. That meant that if you either optimized your assembly code really well or had a UV understanding compiler, you'd get code that's twice as fast. It still didn't have out of order execution so the order of your instructions still mattered a lot.

Then came a PPro which had PSE, out-of-order execution (iirc) & a different bus, the Pentium MMX which added MMX, the Pentium 2 which added the MMX and the pro together, the pentium 3 which added some SSE. ..

Go google on wikipedia :-)

Re: Differences between i386, i486 and i586

Posted: Sun Jul 25, 2010 3:53 am
by JackScott
This may also help: IA32 Architecture Family. Everything there is fairly accurate, but more information is always welcome!

Re: Differences between i386, i486 and i586

Posted: Sun Jul 25, 2010 4:01 am
by Combuster
JackScott wrote:This may also help: IA32 Architecture Family. Everything there is fairly accurate, but more information is always welcome!
fairly accurate *cough*