On 19 Mar 2001, Dag-Erling Smorgrav wrote:

> Bruce Evans <[EMAIL PROTECTED]> writes:
> > K6-2's aren't really i586's and i586_bzero should never be used for
> > them (generic bzero is faster),
> Wrong. I fixed machdep.c to compute and print the bandwidth correctly:

Wrong yourself.  The fpu is too slow to use for copying for everything
except original Pentiums.  The bandwidth test is just done to avoid hard-
configuring this knowledge.

> des@des ~% egrep '(CPU|bzero)' /var/run/dmesg.boot
> CPU: AMD-K6(tm) 3D processor (350.80-MHz 586-class CPU)
> i586_bzero() bandwidth = 1056759 kBps
> bzero() bandwidth = 124211 kBps

I don't believe a bandwitdh of 1 GB/sec.  It may be possible if the
buffer fits in an L1 or on-chip L2 cache (the test buffer is a bit small
for today's L2 cache sizes), but then plain bzero() would also benefit
from the cache.

> > i586_bzero gets used because negative bandwidths are significantly
> > smaller than positive ones,
> Uh, Bruce, we pick the method that gives the *highest* bandwidth, not
> the lowest.

Sorry, I meant "should not get used".

> >                             so plain bzero is faster according to this
> > message,
> There you go contradicting yourself...

This part is correct.

> Anyway, the bug is not K6-specific - I guess the reason why we're only
> seeing it on K6's is that they're the only 586-class CPUs that are
> fast enough to still be in widespread use.

The bug in i586_bzero() affects anything that gets that far, but only
original Pentiums should get that far.  Apparently not many people
run -current on those.  I actually turned on ny P5/133 a week ago,
but I didn't notice the bug.

The "bug" in npx.c is not really a bug.  It's just that the printf was
written before %lld was supported in the kernel, so it truncates to
long and uses %ld.  This shouldn't be a problem until the bandwidth
of main memory exceeds 2GB/sec, which won't happen soon (neither will
your apparent 1GB/sec bandwidth).  However, bugs in microtime() sometime
cause the bandwidth to apparently exceed 2GB/sec.  It is a feature that
huge bandwidths sometimes get printed as negative values -- negative
values are more obviously wrong.  This is why %ld is used instead of %lu.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to