From owner-freebsd-current Mon May 6 05:58:52 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id FAA10189 for current-outgoing; Mon, 6 May 1996 05:58:52 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id FAA10161 for ; Mon, 6 May 1996 05:58:22 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.12/8.6.9) id WAA04793; Mon, 6 May 1996 22:07:13 +1000 Date: Mon, 6 May 1996 22:07:13 +1000 From: Bruce Evans Message-Id: <199605061207.WAA04793@godzilla.zeta.org.au> To: asami@cs.berkeley.edu, current@FreeBSD.org Subject: Re: more on fast bcopy Cc: nisha@cs.berkeley.edu Sender: owner-current@FreeBSD.org X-Loop: FreeBSD.org Precedence: bulk >The FP thing is still by far the fastest for large copies on all the >Pentiums we've tried over here, but we can't use that in the kernel. Why not? :-) It should be possible to use the fpu after saving and restoring the FP registers reentrantly. >We've got 67MB/s on the 133MHz Pentium + Triton here. Wow. Same here. An FP method seems to be the fastest way of bzeroing uncached memory too. I get about 150MB/sec for an FP based bzero and about 85MB/sec (max) for all reasonable integer register based versions. The key difference seems to be that FP stores to uncached memory are the same speed as integer register stores but they can be twice as wide. OTOH, FP loads from uncached memory are almost the same speed as _pairs_ of integer register loads - both cases have to wait for a cache line fetch, and pairing works right after the line is fetched. I couldn't get pairs of uncached writes to work at all. Even `pushal' apparently does 8 separate writes. This is on an ASUS P55TP4XE. Is this an ASUS or Triton limitation? >Please send the output of "sh runtests", I would lie to hear >especially from people with 486/P6 or Pentium with slow memory >systems. It gave 0.2MB/sec for swapping on a slow IDE disk on a 486/33 with 8MB, and the Makefile failed because "." isn't in my $PATH :-). Bruce