Why openSUSE uses i586 architecture

Hi,

I’m just curious to know, why openSUSE uses i586 Architecture? Fedora and Ubuntu use i686 Architecture.

Regards,
Anant

Isn’t i586 architecture 32 bit and i686 architecture is 64 bit? If so I might have an answer for you…

Daqar

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Because is openSUSE, nor Fedora nor Ubuntu :wink:

when programs are compiled they are turned into machine code which can
only work for a certain processor (cause of its new or “special”
features) , the i??? line of processors is all compatible from the
bottom up, so if a program was compiled for i386 , it will work on all
processors that came after it, but if it was compiled for a Pentium ? it
cant work on a i386 because it has instructions which didn’t exist on
that processor

so, openSUSE support more processors than Fedora or Ubuntu


VampirD

Microsoft Windows is like air conditioning
Stops working when you open a window.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org/

iEYEARECAAYFAkursrkACgkQJQ+0ABWtaVltLwCfRiztVW5BkXNVL8LQgUHUqrNS
mSEAn3G5x7bK845gSYqvTKHT4ncSpie0
=jQ2j
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

No, i386, i486, i586 and i686 are x86 architecture (32 bits) and the
x86_64 are the 64 bits


VampirD

Microsoft Windows is like air conditioning
Stops working when you open a window.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org/

iEYEARECAAYFAkurtOwACgkQJQ+0ABWtaVn+9wCgh825q4ICbd/MlxIwAnfuuzVK
cTwAnAiD8Ir4OvCssRzkNMxoQ89ImKXE
=/lAW
-----END PGP SIGNATURE-----

Isn’t i586 architecture 32 bit and i686 architecture is 64 bit? If so I might have an answer for you…

Daqar

No, the 64 bit architecture in “IBM-Compatible” PCs are called AMD64, which is backward-compatible to 32bit ix86 processors or intel64 which is compatible to AMD64.

In the ix86 series, the “x” is the “generation” of the CPUs. There are 16-bit ones in the early generations, but normally “ix86” is used for the 32-bit generations.

That means i586 is the 5. generation, while i686 is the 6. generation. All of those processors always stay compatible to previous generations, so one can run software compiled for i386 on i686 and even on AMD64, but this software won’t use the latest op-code commands, because they are compiled without them in mind, of course.

In this case I believe its better to use i386 architecture, it will support more processors.

Regards,
Anant

On Thu, 2010-03-25 at 19:06 +0000, Daqar wrote:
> Isn’t i586 architecture 32 bit and i686 architecture is 64 bit? If so I
> might have an answer for you…

Architecturally and historically…

5 is the original Pentium (e.g. the P60, P90, etc…)

6 is the Pentium Pro (and also Pentium-M)

7 is the P4 netburst Pentiums (NetBurst pretty much only won the “clock”
war, this is probably the primary reason for returning to i686 style
for the Pentium-M… your 1.4Ghz PIII runs circles around your 2.4Ghz P4
in most cases)

Anything that’s i386 or i486 will be too weak to run openSUSE 11.x properly and building for i386 it will penalise all the rest of us with faster processors by forbidding the use of the extra instructions that come with the higher members of the series. Even a 300MHz Celeron is a i586, so openSUSE is quite generous already.

So you mean to say that Ubuntu or Fedora will not run properly on the older processors like Celeron?

Regards,
Anant

High Level Assembler (hla) has an excellant description of all the changes in processor technology as it pertains to hardware, parallel processes, programming, and application / OS development. To try and summarize as brief as I can, our current level of OS’s are so entrenched in multi-core (which i386 doesn’t handle) and multiple instruction streaming (since the pentium mmx technology) unless you don’t ever plan to play music, play games, watch video, or multi-task, the minimum required architecture is i586. Use of i386 and i486 still can be done but without any multimedia functionality and special builds are needed since they are non-mainstream now.

A i586 architecture has all the i386 instructions + mmx + multi-process register stacks + parallel instruction execution (the ability to start certain instructions before the previous one has completed all it’s cycles) ** this allows the appearance of a one instruction per cycle when in fact the instructions may really be taking 2-4-8-16 cycles each. Where i586 is primarily 32bit with some 64bit emulation and some 64bit and is capable of doing 16bit or even 8bit if it has to, the i686 really suffers on speed and execution if asked to handle below 32bit. There is little benefit in i686 from what I see. I need to see what happening with the whole Intel/HP VR-IA64 scene (has it progressed, has it died like Intel’s IA64?) What I know of it is pretty old now, it was supposed to keep compatibility of i586, scrap i686 compatibility, and promote highly enhanced 64bit RISC but then who knows…

If the package is labelled for i686, that’s right.

While you wouldn’t want to do those things on such a slow processor, it’s not correct that you cannot do never do so because the instructions are missing. If building for a lower series processor, the compiler would generate more instructions to do the same operation, and adding even more penalty to a slow processor. That’s the benefit of using a language like C, the compiler takes care of these details for the developer.

On Thu, 2010-03-25 at 21:46 +0000, anantg wrote:
> ken_yap;2142781 Wrote:
> > Anything that’s i386 or i486 will be too weak to run openSUSE 11.x
> > properly and building for i386 it will penalise all the rest of us with
> > faster processors by forbidding the use of the extra instructions that
> > come with the higher members of the series. Even a 300MHz Celeron is a
> > i586, so openSUSE is quite generous already.
>
> So you mean to say that Ubuntu or Fedora will not run properly on the
> older processors like Celeron?

Celeron is i686

And no… AFAIK, it will still run… we’re talking about OLD processors
like the P60, P66, P90 (i586). AFAIK, i686 will run on those, but maybe
with some inefficiencies (??).

You’re right, I was thinking of the K6, which was missing one instruction, CMOV, to make it i686. But some of the Via CPUs were also missing i686 instructions, to the consternation of users.

I am talking natively … Yes you can make a processor do the operations by executing multiple bits of code instead of just executing a single instruction. And yes you can use a C compiler to hide the details from the developer. Sorry if I am taken wrong here I deal mostly with Assembly and xBasic which produces Assembly. My attempts with C/C++ find me going back to assembly over and over again because it too slow and way to many dependancies IMHO.

No, an i586 processor cannot run i686 code without possible failure. It will do, but will immediately fail, if there is an instruction in the code which is supported by i686 but not by i586.

Think about a processor “v1” supporting “add” [11], “substract”[12] and “multiply”[13], and a processor “v2”, which is completely backward compatible, but has additional support for “divide”[20].

If you compile a calculator for v1 it has to do the division in software by multiple substractions. It will run on v2, but because the divide instruction is not called, it is not used. Even if supported in hardware by v2, your calculator will divide in software.

Now recompile the calculator for v2. For divisions it will now use the extremely more efficient divide instruction instead of the sofware solution with multiple substractions. But when trying to run on v1, it will fail if the processor reads the opcode [20] for the “divide” instruction, because the v1 processor don’t know this command. Perhaps you can work with your calculator as long as you don’t try to divide something.

Ah, whizzed past this second part. BuddelBob is right, i686 packages won’t run on those OLD processors. The compiler will generate some i686 instructions and these will cause a trap on i586 processors. I know this because AntiX won’t run on my K6 unless I replace the (Debian) kernel with a i[45]86 version.

I’m having problems with the i586 distribution of OpenSuSE 12.1. It apparently uses the cmov instruction, an i686 feature.

I had to recompile the kernel (on a newer host) by modifying the SOURCES/config.tar.bz2 file and commenting out “CONFIG_X86_CMOV=y” in config/i386/*. That at least got the system booted.

Also, the objdump utility reports that the compiler has the ‘cmov’ instruction in it. So I can’t recompile anything on the actual i586 system; not even ‘hello, world’.

objdump --disassemble /usr/lib/gcc/i586-suse-linux/4.6/cc1 | grep cmov

805ffd5: 0f 44 f0 cmove %eax,%esi
805ffa2: 0f 44 f0 cmove %eax,%esi

Does anyone agree this isn’t what was intended?

It seems like i586 opensuse still uses some i686 code.
For example on my VIA C3 server php reports i686 kernel (3.2.1-1-default (SMP) i686)
I’ve seen i686 glibc somewhere in repositories too.

So, I’m not sure if suse can run without cmov, but it can run without PAE extensions for sure.

Am 28.01.2012 15:46, schrieb sobrus:
>
> It seems like i586 opensuse still uses some i686 code.
> For example on my VIA C3 server php reports i686 kernel
> (3.2.1-1-default (SMP) i686)
> I’ve seen i686 glibc somewhere in repositories too.
>
> So, I’m not sure if suse can run without cmov, but it can run without
> PAE extensions for sure.
>
>
How did you install it. The live CDs are i686 and will lead to such
situation. A longer time ago I installed a i586 system (the AMD geode is
not i686 compliant but only i586) with the net installer, at that time
it worked as expected (that was maybe with 11.2).
If that does no longer work and if the error from the OP is really in
the i586 version of the kernel all this should be reported as bugs so it
can be solved.
It can probably also happen that a i586 is somehow misinterpreted as
i686 by the installer, this is just a guess and the wrong kernel version
is chosen.


PC: oS 11.4 (dual boot 12.1) 64 bit | Intel Core i7-2600@3.40GHz | KDE
4.6.0 | GeForce GT 420 | 16GB Ram
Eee PC 1201n: oS 11.4 64 bit | Intel Atom 330@1.60GHz | KDE 4.8.0 |
nVidia ION | 3GB Ram