All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kevin D. Kissell" <kevink@mips.com>
To: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>
Cc: "Florian Lohoff" <flo@rfc822.org>, <debian-mips@lists.debian.org>,
	<linux-mips@oss.sgi.com>
Subject: Re: first packages for mipsel
Date: Sat, 7 Apr 2001 11:05:56 +0200	[thread overview]
Message-ID: <004f01c0bf41$fe823720$0deca8c0@Ulysses> (raw)
In-Reply-To: Pine.GSO.3.96.1010406182059.15958E-100000@delta.ds2.pg.gda.pl

Maciej W. Rozycki" <macro@ds2.pg.gda.pl> wrote:
> On Fri, 6 Apr 2001, Kevin D. Kissell wrote:
>
> > What advantage would there be to using sysmips() as opposed
> > to doing the ll/sc emulation?  It seems to me that the decode path
> > in the kernel would be just as fast, and there would be a single
> > "ABI" for all programs - the ll/sc instructions themselves.
>
>  It was discussed a few times already.  It's ugly and is an overkill for
> UP machines -- you take at least two faults for ll/sc emulation and only a
> single syscall for TAS.

Depends on your point of view.  Syscalls will be faster than
emulation on processors without LL/SC support, certainly,
but much slower than just executing the instructions on processors
that do support LL/SC.  Intuitively, emulation would be roughly
2x worse for an R3K, but a syscall will be 10-100 times worse
for an R4K.  If we gave an equal weight to both families, that
would argue in favor of LL/SC emulation - and working for
MIPS Technologies (where all our designs for the past
10 years have supported LL/SC) I would consider equal
weighting to be very generous!  ;-)

I've seen the hybrid proposal of having libc determine the LL/SC
capability of the processor and either executing the instructions
or doing the syscall as appropriate. While that would allow
near-optimal performance on all systems, I find it troublesome,
both on the principle that the OS should conceal hardware
implementation details from the user, and on the practical basis
that glibc is the last place I would want to put more CPU-specific
cruft.  But reasonable people can disagree.

            Kevin K.

WARNING: multiple messages have this Message-ID (diff)
From: "Kevin D. Kissell" <kevink@mips.com>
To: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>
Cc: Florian Lohoff <flo@rfc822.org>,
	debian-mips@lists.debian.org, linux-mips@oss.sgi.com
Subject: Re: first packages for mipsel
Date: Sat, 7 Apr 2001 11:05:56 +0200	[thread overview]
Message-ID: <004f01c0bf41$fe823720$0deca8c0@Ulysses> (raw)
Message-ID: <20010407090556.wjRAwvpx5jsE8f3OBcshEo8Bve64GbSJtQ4Ss6kLJao@z> (raw)
In-Reply-To: Pine.GSO.3.96.1010406182059.15958E-100000@delta.ds2.pg.gda.pl

Maciej W. Rozycki" <macro@ds2.pg.gda.pl> wrote:
> On Fri, 6 Apr 2001, Kevin D. Kissell wrote:
>
> > What advantage would there be to using sysmips() as opposed
> > to doing the ll/sc emulation?  It seems to me that the decode path
> > in the kernel would be just as fast, and there would be a single
> > "ABI" for all programs - the ll/sc instructions themselves.
>
>  It was discussed a few times already.  It's ugly and is an overkill for
> UP machines -- you take at least two faults for ll/sc emulation and only a
> single syscall for TAS.

Depends on your point of view.  Syscalls will be faster than
emulation on processors without LL/SC support, certainly,
but much slower than just executing the instructions on processors
that do support LL/SC.  Intuitively, emulation would be roughly
2x worse for an R3K, but a syscall will be 10-100 times worse
for an R4K.  If we gave an equal weight to both families, that
would argue in favor of LL/SC emulation - and working for
MIPS Technologies (where all our designs for the past
10 years have supported LL/SC) I would consider equal
weighting to be very generous!  ;-)

I've seen the hybrid proposal of having libc determine the LL/SC
capability of the processor and either executing the instructions
or doing the syscall as appropriate. While that would allow
near-optimal performance on all systems, I find it troublesome,
both on the principle that the OS should conceal hardware
implementation details from the user, and on the practical basis
that glibc is the last place I would want to put more CPU-specific
cruft.  But reasonable people can disagree.

            Kevin K.

  reply	other threads:[~2001-04-07  9:02 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20010406130958.A14083@paradigm.rfc822.org>
2001-04-06 11:22 ` first packages for mipsel Florian Lohoff
2001-04-06 11:43   ` Kevin D. Kissell
2001-04-06 11:43     ` Kevin D. Kissell
2001-04-06 11:58     ` Florian Lohoff
2001-04-06 12:23       ` Kevin D. Kissell
2001-04-06 12:23         ` Kevin D. Kissell
2001-04-06 13:28         ` Florian Lohoff
2001-04-06 15:33           ` Kevin D. Kissell
2001-04-06 15:33             ` Kevin D. Kissell
2001-04-06 16:48           ` Maciej W. Rozycki
2001-04-06 16:40     ` Maciej W. Rozycki
2001-04-07  9:05       ` Kevin D. Kissell [this message]
2001-04-07  9:05         ` Kevin D. Kissell
2001-04-07 10:55         ` Maciej W. Rozycki
2001-04-07 15:29           ` Florian Lohoff
2001-04-09  9:48             ` Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='004f01c0bf41$fe823720$0deca8c0@Ulysses' \
    --to=kevink@mips.com \
    --cc=debian-mips@lists.debian.org \
    --cc=flo@rfc822.org \
    --cc=linux-mips@oss.sgi.com \
    --cc=macro@ds2.pg.gda.pl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.