It's not just OOO that gives optimized compilers an advantage over
manually crafted assembler. It's been true since zArchitecture that to
write highly effecient code one needs knowledge of the pipeline There
was a redbook when the zArch machines z/800 z/900 came out
that mentions the non-sequential code that compilers generate.
http://www.redbooks.ibm.com/redbooks/pdfs/sg246515.pdf
<snip>
There is one programming aspect that is relevant, although only slightly
linked to the use of a
split cache. For many years, it has been an axiom among S/360 - S/390
users that assembly
language programmers probably produce faster code than high-level
language compilers.
This is no longer true. Processors that use pipelines (including z800
and z900 machines)
require a certain amount of nonsequential code to obtain the best
performance. For example,
if an instruction loads a register and the next instruction uses the
register, we do not have
optimum code. This sequence will stall the pipeline for several
processor cycles. (The
instructions work correctly, of course, but they take longer than
necessary.) The best
technique is to interleave several unrelated instructions between
loading a register and using
the new contents of the register.
This is not natural, sequential thinking for an assembly programmer,
although he could learn
to do it. IBM’s recent S/390 compilers contain logic to produce this
sort of optimized code.
On 2/06/2011 12:09 AM, Anne & Lynn Wheeler wrote:
re:
http://www.garlic.com/~lynn/2011g.html#57 What is the current feeling for MVC
loop vs. MVCL?
other recent gcc reference:
http://www.garlic.com/~lynn/2011g.html#50 My first mainframe experience
... and recent reference to out-of-order pipeline introduced
http://www.garlic.com/~lynn/2011f.html#46 At least two decades back, some gurus
predicted that mainframes would disappear in future and it still has not
happened
mentions that introduction of out-of-order in most recent mainframe
accounts for significant part of throughput increase (although it has
been in other architectures for decades).
decades ago, out-of-order was given as major rise of advanced compilers
for high-throughput optimization ... since internal machine processing
was getting a lot more complex with various kinds of instruction
interdependencies and complex dataflow ... becoming harder and harder to
address with manual effort.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html