LinuxQuestions.org
Review your favorite Linux distribution.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware
User Name
Password
Linux - Hardware This forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?

Notices


Reply
  Search this Thread
Old 02-01-2005, 01:41 PM   #1
begby
LQ Newbie
 
Registered: Jan 2005
Location: Toronto
Posts: 28

Rep: Reputation: 15
Question Architecture question


Hello,
Can someone please explain, or point me in the direction where I could find out, what is meant by i386/486/586, amd64, sparc, x86? How does someone know what they are running?
 
Old 02-01-2005, 01:51 PM   #2
michaelk
Moderator
 
Registered: Aug 2002
Posts: 19,681

Rep: Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206Reputation: 3206
Have you tried seaching this website or googling the web?

In a nutshell:
x86 is generic for Intel CPUs.
i386 - Intel 80386 CPU
i486 - 80406
i586 - Pentium class
i686 - Pentium /mmx

amd64 - AMD 64 bit CPU.

Sparc - The CPU in Sun's servers and workstations

Last edited by michaelk; 02-01-2005 at 01:52 PM.
 
Old 02-01-2005, 02:31 PM   #3
adam_mccullough
LQ Newbie
 
Registered: Oct 2004
Posts: 14

Rep: Reputation: 0
do `cat /proc/cpuinfo` and you'll see a few lines telling you about your processor.

i386, i486, i586 etc are designations for the type of processor a given chunk of executable code is compiled for. Different designs of processor use different opcodes and argument conventions to achieve a result, as well as often being capable of functions that other processors may not implement at all. Obviously, the big sweaty pentium4 / athlon or whatever in your desktop is going to work in a fundamentally different way to the little ARM chip in your PDA, and provide more instructions and special features (mmx, sse etc.) as well as having a lot more registers, completely different memory management systems and quite possibly (in the case of modern AMD CPUs anyway) having more than one execution unit in there running in parallel.

To oversimplify quite a complicated subject, these designations basically just specify the instruction language your code is written for. The i386 family goes a bit further, in that the chips are back-compatible as far as code is concerned, so that the code that tells a 386 to add x and y will do the same in a 486, pentium, pentium 2, 3, 4 and so on until it becomes too difficult for intel to keep supporting their old designs. It's the same with, for example, the motorola 68000 family: a 68030 will still run 68000 code.

However, if code is specified as being compiled for a 686 (pentium pro/ pentium3, etc) then it may well include instructions that are not available on a 386, 486 or 586 system, and will not behave properly on these architectures.

My pentium 3 mobile laptop, for example, produces this:

Code:
adam@alyosha:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 3
cpu MHz         : 597.411
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips        : 1192.75
Hope this makes things clearer!

A
 
Old 02-02-2005, 12:58 AM   #4
Electro
LQ Guru
 
Registered: Jan 2002
Posts: 6,042

Rep: Reputation: Disabled
Quote:
Originally posted by adam_mccullough
do `cat /proc/cpuinfo` and you'll see a few lines telling you about your processor.

i386, i486, i586 etc are designations for the type of processor a given chunk of executable code is compiled for. Different designs of processor use different opcodes and argument conventions to achieve a result, as well as often being capable of functions that other processors may not implement at all. Obviously, the big sweaty pentium4 / athlon or whatever in your desktop is going to work in a fundamentally different way to the little ARM chip in your PDA, and provide more instructions and special features (mmx, sse etc.) as well as having a lot more registers, completely different memory management systems and quite possibly (in the case of modern AMD CPUs anyway) having more than one execution unit in there running in parallel.

To oversimplify quite a complicated subject, these designations basically just specify the instruction language your code is written for. The i386 family goes a bit further, in that the chips are back-compatible as far as code is concerned, so that the code that tells a 386 to add x and y will do the same in a 486, pentium, pentium 2, 3, 4 and so on until it becomes too difficult for intel to keep supporting their old designs. It's the same with, for example, the motorola 68000 family: a 68030 will still run 68000 code.

However, if code is specified as being compiled for a 686 (pentium pro/ pentium3, etc) then it may well include instructions that are not available on a 386, 486 or 586 system, and will not behave properly on these architectures.

My pentium 3 mobile laptop, for example, produces this:

Code:
adam@alyosha:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 3
cpu MHz         : 597.411
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips        : 1192.75
Hope this makes things clearer!

A

I have been following Intel's processor model since 8086 came out and I was confused by your reply.

Intel needed a way classify its processors so they used the 80x86 naming scheme. The x designates the model of the processor. The i386/i486/i586 are different kinds 80x86 instruction models. The i386 is an 80386 instruction model which can run instructions that was used for 8086 to 80386, but it can not run instructions that was compiled for 80486 (i486) and up. When Intel got to 80586, they change the name but not the model. They change it to Pentium. Pent means five and ium means powerful (I think). There are many models to date which are Pentium II (i686), Pentium III (i686), AMD Athlon (i686), Pentium 4 (i786), and AMD Athlon 64 (i686) to just name few that you may came across in a few years. As you can see, if you compile a program for a Pentium 4 or i786 instructions it will not run on any processor, but the Pentium 4. Each model increase should increase in speed and how powerful it is, but in many cases it is not. The AMD Athlon 64 outpreforms the Pentium 4.

Using "uname -m" and "cat /proc/cpuinfo" will give you information about your processor without opening up the computer and doing heart surgery. Though pretending the processor as a heart instead of a brain is a lot easier to program smarts in the computer.

For more information go to http://www.sandpile.org/.
 
Old 02-02-2005, 03:08 AM   #5
daihard
Member
 
Registered: Jul 2003
Location: Seattle, WA
Distribution: Kubuntu 14.04 LTS
Posts: 915

Rep: Reputation: 34
Quote:
Originally posted by Electro
[B]The i386 is an 80386 instruction model which can run instructions that was used for 8086 to 80386, but it can not run instructions that was compiled for 80486 (i486) and up. When Intel got to 80586, they change the name but not the model. They change it to Pentium. Pent means five and ium means powerful (I think). There are many models to date which are Pentium II (i686), Pentium III (i686), AMD Athlon (i686), Pentium 4 (i786), and AMD Athlon 64 (i686) to just name few that you may came across in a few years. As you can see, if you compile a program for a Pentium 4 or i786 instructions it will not run on any processor, but the Pentium 4. Each model increase should increase in speed and how powerful it is, but in many cases it is not. The AMD Athlon 64 outpreforms the Pentium 4.
Just to add a bit, Pentium Pro is the first i686 processor. I believe Pentium II is a Pentium Pro with MMX. Pentium III added SSE, and Pentium 4 SSE2. I did not realize that P4 was designated "i786," though.
 
Old 02-02-2005, 09:44 AM   #6
begby
LQ Newbie
 
Registered: Jan 2005
Location: Toronto
Posts: 28

Original Poster
Rep: Reputation: 15
wow, thanks for your replies! Just one of those things I've always heard be never knew what it meant. Thanks
 
Old 02-02-2005, 07:14 PM   #7
adam_mccullough
LQ Newbie
 
Registered: Oct 2004
Posts: 14

Rep: Reputation: 0
Quote:
Originally posted by Electro
[B]
I have been following Intel's processor model since 8086 came out and I was confused by your reply.

Intel needed a way classify its processors so they used the 80x86 naming scheme. The x designates the model of the processor. The i386/i486/i586 are different kinds 80x86 instruction models. The i386 is an 80386 instruction model which can run instructions that was used for 8086 to 80386, but it can not run instructions that was compiled for 80486 (i486) and up. When Intel got to 80586, they change the name but not the model. They change it to Pentium. Pent means five and ium means powerful (I think). There are many models to date which are Pentium II (i686), Pentium III (i686), AMD Athlon (i686), Pentium 4 (i786), and AMD Athlon 64 (i686) to just name few that you may came across in a few years. As you can see, if you compile a program for a Pentium 4 or i786 instructions it will not run on any processor, but the Pentium 4. Each model increase should increase in speed and how powerful it is, but in many cases it is not. The AMD Athlon 64 outpreforms the Pentium 4.

Oh, it gets much more confusing than that. If I recall, when the AMD K5, and then intel's pentium pro came out they moved from a cisc core model to a new risc one, with what basically amounted to a x86 interpreter in microcode. I also understand that AMD's new multicore chips have some pretty involved logic to run the multiple cores. Other complications are introduced by things like the new logic in the Pentium M - it's branch prediction unit is apparently incredible and it has a crazy multiassociative cache model that's very efficient (both courtesy of some very very clever Israeli engineers, I hear), which is why it can outperform pentium 4's at double the clock speed using less power.

I always thought intel broke the back-compatibility chain with the 386, which is why it is the lowest common denominator, code-wise, but I'm not surprised to hear otherwise since I wasn't following microprocessor design developments until the days of the pentium. I know my old 8088 at 8 MHz only has a 16 bit core and 8 bit data bus, so I'm surprised that the opcode/arg format didn't change considerably when the (32-bit cored) 386 arrived. The 386 and 486 instruction sets were identical, as far as I know, and the pentium only added a couple of new instructions, keeping the format and implementing the 386 instruction set even though it had a new 64 bit data bus. Internally, it was very different though - it had a second pipeline so it could execute some instructions in parallel (if the code was organised to take advantage of the feature). The MMX version added the famous extra integer simd instructions, and the pattern has continued ever since - with new chips from intel, AMD, etc. keeping the 386 instruction set but adding to it with mmx2, sse and so on. This means that generally a processor will run code compiled for any chip with fewer or the same features, so any x86 compatible chip should run 386 code.

Another consideration (and one of the things I was alluding to with my comment about simplifying a complicated subject) is quite separate from the instruction set. even if you limit the instructions allowed, how the code is arranged can be tweaked to optimise for the quirks of any particular processor. If you've done any coding for the 68k family you may have discovered that organising your code to work nicely with the cache and memory arrangements can boost performance massively. Similarly, arranging your instructions to take advantage of the parallel execution units in the pentium will cause a big boost, without deviating from the x86 instruction set.

Apparently, intel chose the name 'pentium' instead of '586' because AMD and co kept making 386/486/etc chips which were indistinguishable from theirs by the man on the street. Since numbers cannot be registered as trademarks, they needed a name... and successfully created one of the most recognised brands in existence.

AMD's (or almost anybody's, for that matter...) 64 bit chip should theoretically crunch numbers much faster than even a more 'advanced' 32 bit pentium 4 - this is to be expected. I'm looking forward to getting one...

Last edited by adam_mccullough; 02-02-2005 at 07:19 PM.
 
Old 02-02-2005, 08:32 PM   #8
daihard
Member
 
Registered: Jul 2003
Location: Seattle, WA
Distribution: Kubuntu 14.04 LTS
Posts: 915

Rep: Reputation: 34
Quote:
Originally posted by adam_mccullough
Oh, it gets much more confusing than that. If I recall, when the AMD K5, and then intel's pentium pro came out they moved from a cisc core model to a new risc one, with what basically amounted to a x86 interpreter in microcode. I also understand that AMD's new multicore chips have some pretty involved logic to run the multiple cores.
The Pentium Pro (i686) architecture is CISC-RISC hybrid, not pure RISC.

Quote:
AMD's (or almost anybody's, for that matter...) 64 bit chip should theoretically crunch numbers much faster than even a more 'advanced' 32 bit pentium 4 - this is to be expected. I'm looking forward to getting one...
Athlon 64 is supposed to be much faster than Pentium 4 even when running 32-bit applications (which it can do natively).

That said, I myself don't see that much of a performance difference between Athlon 64 and P4. My wife's got two Shuttle PC's - one with an Athlon 64 2800+ and the other with an Athlon 3000+. They both have 1GB PC3200 RAM and run Windows Server 2003. They seem to be running about the same speed as far as I can tell.
 
Old 02-02-2005, 10:22 PM   #9
Electro
LQ Guru
 
Registered: Jan 2002
Posts: 6,042

Rep: Reputation: Disabled
adam_mccullough, what I mean I learn nothing from your first reply even though I know what processor has what. Also your first reply has nothing do with the question. You went off topic.
 
Old 02-04-2005, 09:08 AM   #10
adam_mccullough
LQ Newbie
 
Registered: Oct 2004
Posts: 14

Rep: Reputation: 0
Hmm. I thought the topic was about the differences between successive processor designs and how this relates to the i386/i486/etc architecture designations, which is what my replies were about. I wasn't sure what your first post was asking about mine, since you basically reiterated what I'd said about back-compatibility. I'm not sure if replying in more depth than is really necessary counts as off-topic - I thought the question was one of curiosity and interest in these things, which is something I share - hence my interest in OS software/hardware in general... plus the fact that I've done some work in low level software/firmware and microprocessor design - I guess I find these things more interesting than I should

I'll get back to my 68k manual now, I think...
 
Old 02-04-2005, 11:30 AM   #11
daihard
Member
 
Registered: Jul 2003
Location: Seattle, WA
Distribution: Kubuntu 14.04 LTS
Posts: 915

Rep: Reputation: 34
Quote:
Originally posted by adam_mccullough
Hmm. I thought the topic was about the differences between successive processor designs and how this relates to the i386/i486/etc architecture designations, which is what my replies were about. I wasn't sure what your first post was asking about mine, since you basically reiterated what I'd said about back-compatibility. I'm not sure if replying in more depth than is really necessary counts as off-topic - I thought the question was one of curiosity and interest in these things, which is something I share - hence my interest in OS software/hardware in general... plus the fact that I've done some work in low level software/firmware and microprocessor design - I guess I find these things more interesting than I should
I'm not the OP, but I did find your replies informative and interesting.
 
Old 04-18-2005, 02:00 AM   #12
koswo
Member
 
Registered: Oct 2003
Location: Drieslinter, Belgium
Distribution: Fedora Core 3 / Knoppix 3.7
Posts: 53

Rep: Reputation: 15
Hello,

I have a Mobile Pentium 4, I suppose that's i686? Right?

Thanks,

koswo
 
Old 04-18-2005, 04:44 AM   #13
Electro
LQ Guru
 
Registered: Jan 2002
Posts: 6,042

Rep: Reputation: Disabled
Pentium 4 are 80786.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
System Architecture Question Centinul Linux - Newbie 6 07-20-2005 04:15 PM
RPM architecture question aviceda Linux - Newbie 3 12-15-2004 06:17 AM
architecture question jhon Linux - Networking 1 09-13-2004 09:04 AM
Linux Architecture question wae Linux - Newbie 3 10-16-2003 03:50 AM
Architecture Question snocked Linux - Newbie 15 01-02-2003 10:24 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware

All times are GMT -5. The time now is 10:05 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration