Mention Intel Atom in Kconfig.cpu
PATCH 1/1 Mention Intel Atom in Kconfig.cpu
Am I right in thinking that CONFIG_MCORE2 is the correct choice for an Intel Atom? (It seems to work for me, so far.) If this is true, since there are quite a lot of these chips in circulation now and the choice is not obvious, I think it would be helpful to add something along the following lines to arch/x86/Kconfig.cpu.
---
arch/x86/Kconfig.cpu +0 -0
@@ -263,11 +263,12 @@ config MPSC in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a
newer one.
config MCORE2
- bool "Core 2/newer Xeon"
+ bool "Core 2/newer Xeon/Atom"
help
- Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and 53xx) - CPUs. You can distinguish newer from older Xeons by the CPU family - in /proc/cpuinfo. Newer ones have 6 and older ones 15 (not a typo) + Select this for Intel Core 2, newer Core 2 Xeon (Xeon 51xx and 53xx) + and Intel Atom CPUs. You can distinguish newer from older Xeons by + the CPU family in /proc/cpuinfo. Newer ones have 6 and older ones 15 + (not a typo).
config GENERIC_CPU
bool "Generic-x86-64"
PATCH 1/1 Mention Intel Atom in Kconfig.cpu (less garbled this time)
[Appoligies for the garbled first attempt at posting this. Blame the original author for the long lines!?]
Am I right in thinking that CONFIG_MCORE2 is the correct choice for an Intel Atom? (It seems to work for me, so far.) If this is true, since there are quite a lot of these chips in circulation now and the choice is not obvious, I think it would be helpful to add something along the following lines to arch/x86/Kconfig.cpu.
---
arch/x86/Kconfig.cpu +5 -4
@@ -263,11 +263,12 @@ config MPSC in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one. config MCORE2 - bool "Core 2/newer Xeon" + bool "Core 2/newer Xeon/Atom" help - Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and 53xx) - CPUs. You can distinguish newer from older Xeons by the CPU family - in /proc/cpuinfo. Newer ones have 6 and older ones 15 (not a typo) + Select this for Intel Core 2, newer Core 2 Xeon (Xeon 51xx and 53xx) + and Intel Atom CPUs. You can distinguish newer from older Xeons by + the CPU family in /proc/cpuinfo. Newer ones have 6 and older ones 15 + (not a typo). config GENERIC_CPU bool "Generic-x86-64"
Re: [PATCH] Mention Intel Atom in Kconfig.cpu (less garbled this time)
Quoted 23 lines · Phil Endecott
[Appoligies for the garbled first attempt at posting this. Blame the original author for the long lines!?]
Am I right in thinking that
CONFIG_MCORE2is the correct choice for an Intel Atom? (It seems to work for me, so far.) If this is true, since there are quite a lot of these chips in circulation now and the choice is not obvious, I think it would be helpful to add something along the following lines toarch/x86/Kconfig.cpu.Signed-off-by Phil Endecott <[email protected]>---
arch/x86/Kconfig.cpu +1
-1@@ -263,11 +263,12 @@ config MPSC in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one. config MCORE2 - bool "Core 2/newer Xeon" + bool "Core 2/newer Xeon/Atom" help
arch/x86/Kconfig.cpu config MPSC · line 274
Quoted 10 lines
arch/x86/Kconfig.cpu +4
-3- Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and 53xx) - CPUs. You can distinguish newer from older Xeons by the CPU family - in /proc/cpuinfo. Newer ones have 6 and older ones 15 (not a typo) + Select this for Intel Core 2, newer Core 2 Xeon (Xeon 51xx and 53xx) + and Intel Atom CPUs. You can distinguish newer from older Xeons by + the CPU family in /proc/cpuinfo. Newer ones have 6 and older ones 15 + (not a typo). config GENERIC_CPU bool "Generic-x86-64"
I think Atom is worth a separate setting. It can share some flags with other processors but has some very special features. And perhaps (I would like it) distros begin to ship special 'netbook' kernels without all the extras you don't need (raid, scsi adapters, etc...), with some tunes (iosched=nopp for SSDs...), and memory scrapping settings (NR_CPUS=2 or 4...).
Some questions:
- How worthy is to reduce NR_CPUS from 64 (standard in many distros) to 2 or 4 ?
- Atom is an in-order processor. Intel included some flag in icc to build code with in-order scheduling, which will be the best settings in gcc ? From what I have found, apart from other things, -match=prescott is the best for Atom, wrt processor features. Perhaps the best settings are -march=prescott -mtune=generic
until gcc people implement an in-order scheduler.
- Anyways, what does all this matter if Makefile_32.cpu reads:
cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call tune,pentium2)
cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call tune,pentium3)
cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call tune,pentium3) cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call tune,pentium4) cflags-$(CONFIG_MCORE2) += -march=i686 $(call tune,core2)
ie, no march=xxxx ? Why don't we use something like
cflags-$(CONFIG_MCORE2) += $(call cc-option,-march=core2,-march=i686) $(call tune,core2)
TIA
Signature · 4 lines
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2009.0 (Cooker) for i586
Linux 2.6.25-jam18 (gcc 4.3.1 20080626 (GCC) #1 SMPQuoted 2 lines · Phil Endecott
Am I right in thinking that
CONFIG_MCORE2is the correct choice for an Intel Atom?
No, Atom is completely different from a Core2.
Right now 586 or 686 is a reasonable choice.
-Andi
Quoted 8 lines · On Mon, 13 Oct 2008 14:28:06 +0200 Andi Kleen <[email protected]> wrote:
Quoted 2 lines · Phil Endecott
Am I right in thinking that
CONFIG_MCORE2is the correct choice for an Intel Atom?No, Atom is completely different from a Core2.
Right now 586 or 686 is a reasonable choice.
actually 586 is completely wrong.
Core2 instruction set with tune=generic is still the best to set.
Signature · 3 lines
Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org
Quoted 5 lines · Arjan van de Ven
Quoted 2 lines · On Mon, 13 Oct 2008 14:28:06 +0200 Andi Kleen <[email protected]> wrote:
"Phil Endecott" <[email protected]> writes:
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
Am I right in thinking that
CONFIG_MCORE2is the correct choice for an Intel Atom?No, Atom is completely different from a Core2.
Right now 586 or 686 is a reasonable choice.
actually 586 is completely wrong.
It is nearest in scheduling at least. You'll lose CMOV, but that's not a big loss.
Quoted 1 line
Core2 instruction set with tune=generic is still the best to set.
Not sure that is true. These option are mostly for the compiler.
-Andi
Signature · 1 line
[email protected]
Quoted 4 lines · On Mon, 13 Oct 2008 15:30:51 +0200 Andi Kleen <[email protected]> wrote:
Quoted 2 lines
Core2 instruction set with tune=generic is still the best to set.
Not sure that is true. These option are mostly for the compiler.
exactly, and our benchmarks show that tune=generic is best right now for Atom.
(586 scheduling sounds nice, but the pipelines are rather different. And the benchmarks don't lie.. ;-)
Signature · 3 lines
Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org
Quoted 8 lines · Arjan van de Ven
Quoted 4 lines · On Mon, 13 Oct 2008 15:30:51 +0200 Andi Kleen <[email protected]> wrote:
Quoted 2 lines
Core2 instruction set with tune=generic is still the best to set.
Not sure that is true. These option are mostly for the compiler.
exactly, and our benchmarks show that tune=generic is best right now
So it doesn't matter as long as you set X86_GENERIC (and CONFIG_CC_OPTIMIZE_FOR_SIZE)
It would probably make sense to add a setting for those.
-Andi
Signature · 1 line
[email protected]
Quoted 11 lines · Arjan van de Ven
Quoted 4 lines · On Mon, 13 Oct 2008 15:30:51 +0200 Andi Kleen <[email protected]> wrote:
Quoted 2 lines
Core2 instruction set with tune=generic is still the best to set.
Not sure that is true. These option are mostly for the compiler.
exactly, and our benchmarks show that tune=generic is best right now for Atom.
(586 scheduling sounds nice, but the pipelines are rather different. And the benchmarks don't lie.. ;-)
That sounds a bit dangerous since tune=generic is documented to change the semantics between gcc versions to better fit more recent CPUs (there's even a small difference between gcc 4.2 and gcc 4.3):
As new processors are deployed in the marketplace, the behavior of this option will change. Therefore, if you upgrade to a newer version of GCC, the code generated option will change to reflect the processors that were most common when that version of GCC was released.
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 9 lines · On Mon, 13 Oct 2008 17:02:30 +0300 Adrian Bunk <[email protected]> wrote:
Quoted 8 lines · Arjan van de Ven
Quoted 5 lines · On Mon, 13 Oct 2008 15:30:51 +0200 Andi Kleen <[email protected]> wrote:
Quoted 3 lines
Core2 instruction set with tune=generic is still the best to set.
Not sure that is true. These option are mostly for the compiler.
Quoted 9 lines
Quoted 4 lines
exactly, and our benchmarks show that tune=generic is best right now for Atom.
(586 scheduling sounds nice, but the pipelines are rather different. And the benchmarks don't lie.. ;-)That sounds a bit dangerous since tune=generic is documented to change the semantics between gcc versions to better fit more recent CPUs (there's even a small difference between gcc 4.2 and gcc 4.3):
reality is that tune=generic avoids the things that are "really bad" for a wide generation of cpus; the world of x86 is such that there really are many common things that are good for the vast majority of the cpus out there (or at least neutral).
Future versions of GCC might have a specific ATOM model. Until they do, tune=generic is the right thing based on tests over a few gcc versions. Yes it's a bit fluid, but no gcc isn't going to suddenly go do stupid things for currently mass-sold cpus.
Signature · 3 lines
Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org
Arjan van de Ven wrotes:
Quoted 26 lines
Quoted 9 lines · On Mon, 13 Oct 2008 17:02:30 +0300 Adrian Bunk <bunk <at> kernel.org> wrote:
Quoted 8 lines · Arjan van de Ven
Quoted 5 lines · On Mon, 13 Oct 2008 15:30:51 +0200 Andi Kleen <andi <at> firstfloor.org> wrote:
Quoted 3 lines
Core2 instruction set with tune=generic is still the best to set.
Not sure that is true. These option are mostly for the compiler.
Quoted 8 lines
Quoted 3 lines
exactly, and our benchmarks show that tune=generic is best right now for Atom. (586 scheduling sounds nice, but the pipelines are rather different. And the benchmarks don't lie..
That sounds a bit dangerous since tune=generic is documented to change the semantics between gcc versions to better fit more recent CPUs (there's even a small difference between gcc 4.2 and gcc 4.3):
reality is that tune=generic avoids the things that are "really bad" for a wide generation of cpus; the world of x86 is such that there really are many common things that are good for the vast majority of the cpus out there (or at least neutral).
Quoted 4 lines
Future versions of GCC might have a specific ATOM model. Until they do, tune=generic is the right thing based on tests over a few gcc versions. Yes it's a bit fluid, but no gcc isn't going to suddenly go do stupid things for currently mass-sold cpus.
Well, if the Intel experts can't even agree, what hope do I have of getting it right :-( I chose Core2 because I read somewhere that Atom was "feature compatible" with it, but of course that doesn't say anything about the optimal optimisations. I trust that someone will update Kconfig.cpu with their idea of the right choice for Atom eventually.
(Maybe there should be a way to auto-suggest the right setting for a native build based on /proc/cpuinfo? I think the gcc build process can do something like that.)
Cheers, Phil.