From: Doug Evans <dje@transmeta.com>
To: "Frank Ch. Eigler" <fche@redhat.com>
Cc: cgen@sources.redhat.com
Subject: generalizing the delay rtx function
Date: Mon, 12 Mar 2001 20:33:00 -0000 [thread overview]
Message-ID: <15021.41744.856629.922018@casey.transmeta.com> (raw)
In-Reply-To: <20010308160106.A28162@redhat.com>
Frank Ch. Eigler writes:
> Hi -
>
> As you may be aware, the delay rtx function is used, despite its
> work-in-progress designation,
Despite? How do you define "work-in-progress"?
> to model delayed branches in
> constructs like
> (delay 1
> (set pc (add pc 42)))
> The DELAY-SLOT insn attribute is inferred from this for use by
> simulator mainlines. That's the extent of the effect of the delay
> rtx.
>
> In order to model architectures with exposed pipelines (i.e., no
> or limited pipeline interlocks), and related effects like delayed
> loads, I'd like to take it beyond this, by coupling it to the
> parallel-write mechanism.
You mean take the work-in-progress and finish(*1) the work?
[(*1) or make closer to being finished ...]
> As you might be aware, ports that have VLIW features tend to use
> the "parallel-write" mechanism in their semantic blocks in order
> to queue updates to registers/memory? until after all concurrently
> executed instructions have been processed. This lets multiple
> reader instructions execute together with a writer instruction,
> without detailed worry about the evaluation sequence.
>
> Anyway, how about a scheme such as this:
>
> - Provide a clear definition for the DELAY rtx:
> The numeric argument is the number of instruction cycles
> after the current one, at which the enclosed set expressions
> take effect.
> - Restrict the use of the DELAY rtx to only contain SET expressions
> to hardware/memory registers. Forbid other calculations.
Ok.
> - Possibly, force use of (DELAY 0 ....) to express VLIW concurrency,
> at least in new ports.
Ick. Or rather, got an example?
> - Infer "parallel-write?" (or a new equivalent) from the presence of
> DELAY rtxs.
Ditto.
> - Eliminate special treatment of PC by fitting delayed branches into
> this model.
No current opinion.
> Then, the generated simulator code would be changed, so that:
>
> - Semantic functions, instead of taking a single parexec structure
> pointer (for write queueing), take an array of them. Within
> (DELAY <N> RTX*) blocks, define OPRND to point to the appropriate
> elements in the parexec array.
Guess I'd have to see the implementation.
> - The insn evaluation loop would keep an array of parexec structs
> as a rotating buffer, always running the writeback code on the first
> one, then rotating the set, then passing it to the next insn. cgen
> could compute the maximum index needed.
>
> This way, code like
> (set reg1 1)
> (delay 0 (set reg1 3))
> (delay 1 (set reg2 5))
> (delay 2 (set reg1 6))
> would each be well-defined and useful.
Yep.
> An alternate cgen syntax possibility is to introduce a
> (delayed-set N lvalue rvalue)
> rtx.
>
> Any advice?
Eat healthy and exercise.
next prev parent reply other threads:[~2001-03-12 20:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-08 13:01 Frank Ch. Eigler
2001-03-12 20:04 ` Ben Elliston
2001-03-12 20:33 ` Doug Evans [this message]
2001-03-13 23:40 ` matthew green
2001-03-14 5:05 ` Frank Ch. Eigler
2001-03-14 16:43 ` matthew green
2001-03-14 16:55 ` Frank Ch. Eigler
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=15021.41744.856629.922018@casey.transmeta.com \
--to=dje@transmeta.com \
--cc=cgen@sources.redhat.com \
--cc=fche@redhat.com \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).