Differences between i386, i486 and i586

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
tobbebia
Posts: 17
Joined: Fri Feb 19, 2010 1:49 pm
Location: Sweden

Differences between i386, i486 and i586

Post 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
My GitHub account: http://github.com/tobbebia
User avatar
NickJohnson
Member
Member
Posts: 1249
Joined: Tue Mar 24, 2009 8:11 pm
Location: Sunnyvale, California

Re: Differences between i386, i486 and i586

Post 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.
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: Differences between i386, i486 and i586

Post 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.
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
Candy
Member
Member
Posts: 3882
Joined: Tue Oct 17, 2006 11:33 pm
Location: Eindhoven

Re: Differences between i386, i486 and i586

Post 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 :-)
User avatar
JackScott
Member
Member
Posts: 1032
Joined: Thu Dec 21, 2006 3:03 am
Location: Hobart, Australia
Mastodon: https://aus.social/@jackscottau
GitHub: https://github.com/JackScottAU
Contact:

Re: Differences between i386, i486 and i586

Post by JackScott »

This may also help: IA32 Architecture Family. Everything there is fairly accurate, but more information is always welcome!
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: Differences between i386, i486 and i586

Post 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*
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
Post Reply