Skip site navigation (1)Skip section navigation (2)
Date:      06 Apr 1999 12:14:37 +0300
From:      Ville-Pertti Keinonen <will@iki.fi>
To:        dyson@iquest.net
Cc:        current@freebsd.org
Subject:   Re: SMP users (important)
Message-ID:  <86wvzqm7pe.fsf@not.oeno.com>
In-Reply-To: "John S. Dyson"'s message of "3 Apr 1999 16:16:28 %2B0300"
References:  <199904031316.IAA45781@y.dyson.net.newsgate.clinet.fi>

index | next in thread | previous in thread | raw e-mail


"John S. Dyson" <dyson@iquest.net> writes:

> I just wanted to "chime in" and say that the new patches are based
> on a really good concept, and is much cleaner than the previous
> method.  Also, many RISC architectures can utilize this
> method due to the availability of lots of general registers.
> (One could go so far as to have the compiler reserve the
>  register.)  Non-threaded user mode apps could optionally
>  use the reserved register, but for threaded user mode apps,
>  that reserved register could also be used as a per-thread
>  base pointer.

Reserving an arbitrary register can make binary compatibility with
other systems more difficult.

On the i386 it isn't bad since only a few horribly machine-dependent
programs might use %fs for anything.

Something to look at as a precedent for other processors should be
what commercial Unix systems on various non-i386 processors do.

> I believe that NT does the above (%fs for X86, and general
> register for Alpha.)  On PPC, there are several local,

Digital UNIX does not reserve a register.  Based on a quick check it
would seem to be using a call to PALcode to find the thread-specific
data.  Note that this is nothing like a system call, it's much faster
(something like 10 clocks).

> per-processor registers that one could use (but loading a
> general register with that per processor register would be
> needed for access.)  Also, since the PPC has lots of registers,
> one could? permanently reserve one of the general registers (r13?).

I really don't like the idea of breaking the normal language
conventions for any processor.  For the i386, the use of segment
registers is not relevant to C language conventions, but reserving a
general register on any architecture should, IMHO, be avoided if at
all possible.

> All in all, this change has the potential for better context
> switching time (and less memory/better performance for multi-threaded

I believe that having meaningful values context-switched in segment
registers can add context switch overhead.  It shouldn't be
significant, though.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



help

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