Related articles |
---|
200 way issue? davidm@questor.rational.com (1993-09-29) |
Re: 200 way issue? anton@mips.complang.tuwien.ac.at (1993-09-30) |
Re: 200 way issue? pop@mtu.edu (1993-09-30) |
Re: 200 way issue? grover@brahmand.Eng.Sun.COM (1993-09-30) |
Re: 200 way issue? petersen@sp51.csrd.uiuc.edu (1993-09-30) |
Re: 200 way issue? mac@coos.dartmouth.edu (1993-10-01) |
Re: 200 way issue? preston@dawn.cs.rice.edu (1993-10-01) |
Re: 200 way issue? daveg@thymus.synaptics.com (Dave Gillespie) (1993-10-04) |
Newsgroups: | comp.compilers |
From: | anton@mips.complang.tuwien.ac.at (Anton Ertl) |
Keywords: | performance |
Organization: | Institut fuer Computersprachen, Technische Universitaet Wien |
References: | 93-09-142 |
Date: | Thu, 30 Sep 1993 11:11:29 GMT |
davidm@questor.rational.com (David Moore) writes:
> HOWEVER, the question I want to raise is this: How many way issue can one
> actually use on real code.
>
> Suppose, for example, we took the spec benchmarks and optimized for an
> infinite issue machine. Now suppose we built a histogram of actual number
> of instructions issued per machine cycle. Has anyone published a paper on
> what this histogram would look like?
There have been lots of papers on the limits of instruction-level
parallelism, and I also remember one that tried to do something like what
you are asking for (I don't have the reference handy, but the paper was
not so impressive anyway).
To answer your first question: It's not hard to make use of all issue
bandwidth available, due to one technique: speculative execution. Just
execute all instructions on any possible execution path, where the data is
ready. With infinite loop unrolling and combining (a transformation) a
loop like SAXPY would even use an infinite issue machine 100%. Although of
course only 0% of that work would be really useful. (Note that there are
also some problems with exceptions of speculatively executed instructions,
but with a bit of architectural support they can be solved.)
The big question is: With the limited issue bandwidth we have, which
instructions do we execute speculatively in order to maximize the amount
of really useful work done. There have been lots of papers about this
question, just search in your literature database for suftware pipelining
and (global) scheduling or take a look in the MICRO proceedings.
- anton
--
M. Anton Ertl, anton@mips.complang.tuwien.ac.at
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.