From: "H. Peter Anvin" <hpa@zytor.com>
To: linux-kernel@vger.kernel.org
Subject: Re: Intel I860
Date: 9 Dec 2001 14:03:47 -0800 [thread overview]
Message-ID: <9v0n43$ok$1@cesium.transmeta.com> (raw)
In-Reply-To: <20011127003327.C1546@werewolf.able.es> <200112091201.fB9C1wD158088@saturn.cs.uml.edu>
Followup to: <200112091201.fB9C1wD158088@saturn.cs.uml.edu>
By author: "Albert D. Cahalan" <acahalan@cs.uml.edu>
In newsgroup: linux.dev.kernel
>
> It's a RISC chip with the Pentium MMU. To get any speed out of it,
> you have to enable some strange features. First of all, you need
> the double-instruction mode. In every 64-bit chunk of memory you
> place 1 floating-point instruction and 1 integer instruction.
> Second of all, you need to enable pipelined FPU operation. This is
> an exposed pipeline, so watch out! Look what happens:
>
> a = x + x
> b = a + a <-- uses old value of "a", not x+x
> nop
> nop
> nop
> c = a + a
>
> Yep, c!=a after this! Actually, "c" won't be set until a few
> instructions later because it too is still in the pipeline.
> You need a few dummy operations to push it out.
>
Nononon... it's much worse than that.
The i860 used a non-self-terminating pipeline, which meant that for
each instruction you had "what to stuff into the pipeline at this
stage" and "what to do with what comes out of the pipeline here",
which means that to compute d = a + b - c you'd have to do something
like:
X = a + b
nop
nop
nop
t = XXX
X = t - c
nop
nop
nop
d = XXX
... where X means don't care. To compute, say, h = e + f - g in
parallel with this, it would look something like:
X = a + b
X = e + f
nop
nop
t = XXX
u = t - c
X = u - g
nop
nop
d = XXX
h = XXX
Note the instruction u = t - c, even though the left side and right
side don't even belong to the same thread of execution...
-hpa
--
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt <amsp@zytor.com>
next prev parent reply other threads:[~2001-12-09 22:04 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-22 14:43 Intel I860 Achim Krümmel
2001-11-26 22:21 ` Randy.Dunlap
2001-11-26 22:28 ` n0ano
2001-11-26 22:50 ` Josh Fryman
2001-11-26 22:55 ` Stefan Smietanowski
2001-11-26 23:18 ` David Weinehall
2001-11-26 23:33 ` J.A. Magallon
2001-12-09 12:01 ` Albert D. Cahalan
2001-12-09 16:38 ` Alan Cox
2001-12-09 22:03 ` H. Peter Anvin [this message]
2001-11-27 1:46 ` Steve Underwood
-- strict thread matches above, loose matches on Subject: below --
2001-11-26 22:48 Marvin Justice
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='9v0n43$ok$1@cesium.transmeta.com' \
--to=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox