On Fri, 18 Feb 2005 16:23:04 +0000, Paul Howarth <paul@xxxxxxxxxxxx> wrote: > Kumara wrote: > > Hi all, > > i'm not clear of what is > > i386 > > i586 > > i686 etc.. > > could somebody brief me > > A detailed history can be found at: > http://www.pcmech.com/show/processors/35/ 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.