processor type.

John Baldwin jhb at FreeBSD.org
Fri Jan 14 11:41:29 PST 2005


On Friday 14 January 2005 01:26 pm, Wilko Bulte wrote:
> On Fri, Jan 14, 2005 at 10:43:00AM -0500, John Baldwin wrote..
>
> > On Friday 14 January 2005 02:43 am, Wilko Bulte wrote:
> > > On Thu, Jan 13, 2005 at 04:26:51PM -0800, David O'Brien wrote..
> > >
> > > > On Mon, Jan 10, 2005 at 08:16:06AM -0500, David Gilbert wrote:
> > > > > I see in the compiler lines crawling by that gcc is asked to
> > > > > optimize for 'EV5' while being compatible with 'EV4'.  My Alpha is
> > > > > an EV4 --- I'm wondering if I would see better performance with a
> > > > > different flag there, but the gcc manual doesn't even acknowledge
> > > > > the existance of the options that are in use, let alone the
> > > > > available options.
> > > >
> > > > It doens't???
> > > >
> > > > >From /usr/share/mk/bsd.cpu.mk:
> > > >
> > > >     . elif ${MACHINE_ARCH} == "alpha"
> > > >     _CPUCFLAGS = -mcpu=ev4 -mtune=ev5
> > > >
> > > > http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/DEC-Alpha-Options.html#DE
> > > >C-Al pha-Options clearly tells:
> > > >
> > > > -mcpu=cpu_type
> > > >     Set the instruction set and instruction scheduling parameters for
> > > >     machine type cpu_type. You can specify either the EV style name
> > > > or the corresponding chip number. GCC supports scheduling parameters
> > > > for the EV4, EV5 and EV6 family of processors.
> > > >
> > > > -mtune=cpu_type
> > > >     Set only the instruction scheduling parameters for machine type
> > > >     cpu_type. The instruction set is not changed.
> > > >
> > > >
> > > > That said, you should remove the -mtune=ev5 or change it to
> > > > -mtune=ev4. My guess is you won't notice a difference, but this this
> > > > change will produce the best code for your machine.
> > >
> > > Any idea how drastic -mtune=ev6 would change things on a DS10 (to name
> > > a random box ;-) ?
> > >
> > > Am I correct in assuming that -mcpu=ev4 will result in not using the
> > > BWX etc of the newer CPUs?  And that -mcpu=ev6 will result in code that
> > > does not run on anything older than EV6 due to missing instructions
> > > etc?
> >
> > Yes.  Note that setting CPUTYPE in make.conf gets all the right flags set
> > for> you automagically.
>
> I think I need to go and just investigate, but let me fire another silly
> question:
>
> Where does this kind of option get set for a make release?  I need to
> avoid any /etc/make.conf stuff making its way into the Alpha releases
> I build ;-)
>
> I sort of expect the settings in /etc/make.conf to only apply to building
> world and not to building release. Correct?

Yes, a release is built in a "clean-room" chroot where make.conf doesn't 
affect what happens.  In that case, the default values quoted at the top of 
this thread are used (tune for an ev5, but only use instructions on an ev4).  
The idea is that the GENERIC kernel for a release should be optimized to run 
on "common" machines while still supporting older models.  There's certainly 
no harm in bumping the default -mtune to ev6 if we feel that most Alpha users 
are ev6 rather than ev5.

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the freebsd-alpha mailing list