🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.arch
Article #10893

Re: why no register + register addressing mode in R3000 (repost)

#10893
From: PB Endecott (PhD SFurber)
Date: Fri, 13 Nov 1992 17:26
53 lines
2620 bytes
tremblay@flayout.Eng.Sun.COM (Marc Tremblay) writes:


>Here is the percentage of loads and stores for SPECint92 benchmarks
>running on SPARC which use the two register addressing mode [RX + RY]:

>benchmark	loads	stores
>---------	-----	------
>espresso	37%	9.8%
>li		2.5%	2.8%
>eqntott	76.4%	5.4%
>compress	27%	7.3%
>sc		13.5%	7.9%
>gcc		18.9%	37.5%

Interesting numbers, thank you.

I calculate from this that an average of 11.8% of stores and 29.2% of loads
use a two-register addressing mode.

Using numbers from Hennessey & Patterson fig 4.34 (sorry I don't have them
for the SPEC benchmarks), 8% of instructions in dynamic execution are
stores, and 18% are loads.  So, (8% x 11.8%) = 0.9% of instructions are
stores that use two registers, and (18% x 29.2%) = 5.3% of instructions are
loads that use two registers; a total of 6.2% of instructions use
two-register addressing modes.

On an architecture without this mode, assuming that each of these
operations would need a separate ADD to calculate the address, the number
of instructions needed to do the same work would increase by 6.2%.  Does a
6.2% performance increase justify an extra register read port ?

The answer depends on the actual cost of adding the read port, and other
factors such as the impact on code density of the extra code.

Question : does the Sparc do both sorts of addressing in the same number of
cycles, or does it use an extra cycle for reading the extra register ?

The 6.2% is a maximum; clever compiler techniques should reduce this.
 
Consider a processor which implements register+register for loads (where
the extra port is available) but not for stores, where the port is needed
for the data.  I believe that the HP-PA does this.  From the above numbers,
0.9% of instructions need an extra ADD for address calculations compared to
a machine with register+register for loads and stores.  Is this a good
compromise ?

In a superscalar implementation, you have lots of register ports.  For
example, you may have four read ports so that you can do two ALU operations
simultaneously.  You could then do a store with two registers for the
address at the same time as a monadic ALU operation!

--Phil.
Technical Details
Message-ID: <endecotp.721675619@cs.man.ac.uk>
Path: arc1-ca.pugleaf.net!sparky!uunet!mcsun!uknet!mucs!cs.man.ac.uk!endecotp
References: <lg5i5oINN1q4@exodus.Eng.Sun.COM>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!mcsun!uknet!mucs!cs.man.ac.uk!endecotp
From: endecotp@cs.man.ac.uk (PB Endecott (PhD SFurber))
Newsgroups: comp.arch
Subject: Re: why no register + register addressing mode in R3000 (repost)
Message-ID: <endecotp.721675619@cs.man.ac.uk>
Date: 13 Nov 92 17:26:59 GMT
References: <lg5i5oINN1q4@exodus.Eng.Sun.COM>
Sender: news@cs.man.ac.uk
Lines: 53