What is the different of i386, i486, i586, i686 in linux

Status
Not open for further replies.

drsethi

Journeyman
In terms of what it means in the Linux world, those indicate compiler
optimization and processor features required. You should realize that
non-Intel processors are typically lumped into those categories too,
so for example AMD K7 (Athlon) is considered to be a i686 for most
Linux purposes.

There may be a few very low level kernel features that are disabled
when on very old processors; but in reality the most significant
feature differences are for pre-i386 models (and also why Fedora
doesn't ship say i286 binaries).

It's generally upwards compatible; so i386 binaries will run fine on
a i586 or i686 system; but the other way around *may* not work, or
if they do may actually be slower.

For most binaries (like applications), the compiler optimization differences
are so small that it's not worth compiling for anything other than i386.
However a select few packages, like the kernel, glibc, and openssl,
may have dramatic performance benifits when compiled specifcally
for the processor you have, so the distro makes different binaries available.
And the installer will automatically pick the best one your hardware
can support.

Some useful details is available in the gcc manual (use "info gcc"
to browse the manual, then go to "Invoking GCC" -> "Submodel options"
-> "i386 and x86-64 Options").

As you'll find there are dozens of different chip types. Most of them
are nearly identical with perhaps just a few minor differences that
can be easily compensated for.

So to prevent having to provide a dozen different binaries, most Linux
distros (with perhaps Gentoo being an exception) only compile for a
small number of chips; the i386, i586, and i686. There's enough
difference between those that the compiler optimizations make it worth
having them; but in reality the other differences between all the other
varieties is so insignificant to not make it worth doing more chip types.

Incidentally, for some of the older Red Hat Linux versions, RH did in
fact also provide Athlon-specific binaries for the kernel and glibc.
But nowdays, in Fedora, all modern 32-bit desktop chips are lumped
into i686.

What follows is excerpted from the gcc manual:
--
Deron Meranda

*FROM GCC 3.4 MANUAL*
3.17.11 Intel 386 and AMD x86-64 Options
----------------------------------------

These `-m' options are defined for the i386 and x86-64 family of
computers:

`-mtune=CPU-TYPE'
Tune to CPU-TYPE everything applicable about the generated code,
except for the ABI and the set of available instructions. The
choices for CPU-TYPE are:
_i386_
Original Intel's i386 CPU.

_i486_
Intel's i486 CPU. (No scheduling is implemented for this
chip.)

_i586, pentium_
Intel Pentium CPU with no MMX support.

_pentium-mmx_
Intel PentiumMMX CPU based on Pentium core with MMX
instruction set support.

_i686, pentiumpro_
Intel PentiumPro CPU.

_pentium2_
Intel Pentium2 CPU based on PentiumPro core with MMX
instruction set support.

_pentium3, pentium3m_
Intel Pentium3 CPU based on PentiumPro core with MMX and SSE
instruction set support.

_pentium-m_
Low power version of Intel Pentium3 CPU with MMX, SSE and
SSE2 instruction set support. Used by Centrino notebooks.

_pentium4, pentium4m_
Intel Pentium4 CPU with MMX, SSE and SSE2 instruction set
support.

_prescott_
Improved version of Intel Pentium4 CPU with MMX, SSE, SSE2
and SSE3 instruction set support.

_nocona_
Improved version of Intel Pentium4 CPU with 64-bit
extensions, MMX, SSE, SSE2 and SSE3 instruction set support.

_k6_
AMD K6 CPU with MMX instruction set support.

_k6-2, k6-3_
Improved versions of AMD K6 CPU with MMX and 3dNOW!
instruction set support.

_athlon, athlon-tbird_
AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and SSE
prefetch instructions support.

_athlon-4, athlon-xp, athlon-mp_
Improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and
full SSE instruction set support.

_k8, opteron, athlon64, athlon-fx_
AMD K8 core based CPUs with x86-64 instruction set support.
(This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and
64-bit instruction set extensions.)
_winchip-c6_
IDT Winchip C6 CPU, dealt in same way as i486 with additional
MMX instruction set support.

_winchip2_
IDT Winchip2 CPU, dealt in same way as i486 with additional
MMX and 3dNOW! instruction set support.

_c3_
Via C3 CPU with MMX and 3dNOW! instruction set support. (No
scheduling is implemented for this chip.)

_c3-2_
Via C3-2 CPU with MMX and SSE instruction set support. (No
scheduling is implemented for this chip.)

While picking a specific CPU-TYPE will schedule things
appropriately for that particular chip, the compiler will not
generate any code that does not run on the i386 without the
`-march=CPU-TYPE' option being used.
For details
*www.redhat.com/archives/fedora-list/2005-February/msg05183.html
 
Status
Not open for further replies.
Top Bottom