Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jul 2005 10:57:42 -0700
From:      Peter Wemm <peter@wemm.org>
To:        freebsd-amd64@freebsd.org
Subject:   Re: Benchmarks: AMD64 vs i386 on Dual 246 Opteron
Message-ID:  <200507281057.43655.peter@wemm.org>
In-Reply-To: <20050728163602.GC64153@troutmask.apl.washington.edu>
References:  <3.0.1.32.20050728080526.00aa4098@pop.redshift.com> <3.0.1.32.20050728092338.01207628@pop.redshift.com> <20050728163602.GC64153@troutmask.apl.washington.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 28 July 2005 09:36 am, Steve Kargl wrote:

> As mentioned elsewhere, I would look for optimizations within
> the software packages that target i386.  Additionally, the
> instruction schedulers in gcc/gas have had many more years
> of development in comparison to the amd64 schedulers.

Take libc and libm for example...

libc:
peter@overcee[10:50am]~/fbp4/hammer/lib/libc-112> ls i386/string/
Makefile.inc    index.S         memset.S        strcpy.S        wcschr.S
bcmp.S          memchr.S        rindex.S        strlen.S        wcscmp.S
bcopy.S         memcmp.S        strcat.S        strncmp.S       wcslen.S
bzero.S         memcpy.S        strchr.S        strrchr.S       wmemchr.S
ffs.S           memmove.S       strcmp.S        swab.S
peter@overcee[10:50am]~/fbp4/hammer/lib/libc-113> ls amd64/string/
Makefile.inc    bzero.S         memmove.S       strcmp.S
bcmp.S          memcmp.S        memset.S        strcpy.S
bcopy.S         memcpy.S        strcat.S
peter@overcee[10:50am]~/fbp4/hammer/lib/libc-114>

libm:
peter@overcee[10:51am]~/fbp4/hammer/lib/msun-117> ls i387
Makefile.inc            s_ceilf.S               s_remquo.S
e_exp.S                 s_ceill.S               s_remquof.S
e_fmod.S                s_copysign.S            s_rint.S
e_log.S                 s_copysignf.S           s_rintf.S
e_log10.S               s_copysignl.S           s_scalbn.S
e_log10f.S              s_cos.S                 s_scalbnf.S
e_logf.S                s_finite.S              s_scalbnl.S
e_remainder.S           s_floor.S               s_significand.S
e_remainderf.S          s_floorf.S              s_significandf.S
e_scalb.S               s_floorl.S              s_sin.S
e_scalbf.S              s_llrint.S              s_tan.S
e_sqrt.S                s_llrintf.S             s_trunc.S
e_sqrtf.S               s_logb.S                s_truncf.S
fenv.c                  s_logbf.S               s_truncl.S
fenv.h                  s_lrint.S
s_ceil.S                s_lrintf.S
peter@overcee[10:51am]~/fbp4/hammer/lib/msun-118> ls amd64/
Makefile.inc    fenv.c          s_llrintf.S     s_remquo.S      s_scalbnf.S
e_sqrt.S        fenv.h          s_lrint.S       s_remquof.S     s_scalbnl.S
e_sqrtf.S       s_llrint.S      s_lrintf.S      s_scalbn.S
peter@overcee[10:51am]~/fbp4/hammer/lib/msun-119>  

Now granted gcc has many of these as builtins.. but it illustrates
the point I'm trying to make.  Lots of code has hand-tuned i386
assembler optimization and falls back to generic C code for 64 bit
mode.

Mysql could also easily be affected by inefficiencies in the amd64
pthread libraries too.

-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507281057.43655.peter>