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

Discussion in 'Tutorials' started by mrmani, Oct 9, 2006.

Thread Status:
Not open for further replies.
  1. mrmani

    mrmani Mani

    Joined:
    Jun 13, 2006
    Messages:
    14
    Likes Received:
    0
    Trophy Points:
    0
    i386(Suse)
    i486
    i586(mandriva)
    i686(Gentoo)
     
  2. drsethi

    drsethi New Member

    Joined:
    Jan 29, 2004
    Messages:
    220
    Likes Received:
    4
    Trophy Points:
    0
    Location:
    Amritsar
    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
    https://www.redhat.com/archives/fedora-list/2005-February/msg05183.html
     
Thread Status:
Not open for further replies.

Share This Page