Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jan 2007 14:17:57 -0800
From:      Chuck Swiger <cswiger@mac.com>
To:        Maxim Sobolev <sobomax@FreeBSD.org>
Cc:        freebsd-current@FreeBSD.org, freebsd-arch@FreeBSD.org
Subject:   Re: [PATCH] Mantaining turnstile aligned to 128 bytes in i386 CPUs
Message-ID:  <25EB3FED-71A9-4AE1-9A38-5D2DC27D0DF7@mac.com>
In-Reply-To: <45AFED63.7020009@FreeBSD.org>
References:  <3bbf2fe10607250813w8ff9e34pc505bf290e71758@mail.gmail.com> <3bbf2fe10607281004o6727e976h19ee7e054876f914@mail.gmail.com> <3bbf2fe10701160851r79b04464m2cbdbb7f644b22b6@mail.gmail.com> <20070116154258.568e1aaf@pleiades.nextvenue.com> <b1fa29170701161355lc021b90o35fa5f9acb5749d@mail.gmail.com> <eoji7s$cit$2@sea.gmane.org> <b1fa29170701161425n7bcfe1e5m1b8c671caf3758db@mail.gmail.com> <eojlnb$qje$1@sea.gmane.org> <3bbf2fe10701161525j6ad9292y93502b8df0f67aa9@mail.gmail.com> <45AD6DFA.6030808@FreeBSD.org> <3bbf2fe10701161655p5e686b52n7340b3100ecfab93@mail.gmail.com> <200701172022.l0HKMYV8053837@apollo.backplane.com> <20070118113831.A11834@delplex.bde.org> <200701181948.l0IJmdfn061671@apollo.backplane.com> <45AFED63.7020009@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jan 18, 2007, at 1:57 PM, Maxim Sobolev wrote:
> Heh, it's so complex, so machine-dependent....

Well, yes.  :)

> That makes me wonder why we still don't have 3 simple to use  
> instructions that do equivalent of memmove(), memcpy() and memset()  
> all in hardware in the best possible way with the respect of block  
> size, alignment, caches, chipset, you-name-it? Virtually every  
> program would benefit from such instructions.

Unfortunately, there are simply different tradeoffs between  
mechanisms for copying depending on whether you want to use or avoid  
using/thrashing the L1/L2 caches, whether the data is cache-aligned,  
and so forth; the CPU can't infer what you want to occur-- you have  
to tell it.  I find it interesting that some of the architectures (PA- 
RISC, SPARC) do allow for simple instructions with cache-control  
hinting:

   http://gcc.gnu.org/projects/prefetch.html

-- 
-Chuck




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?25EB3FED-71A9-4AE1-9A38-5D2DC27D0DF7>