Article View: comp.arch
Article #13126Re: register window machine questions
From: markp
Date: Sun, 01 Mar 1987 08:26
Date: Sun, 01 Mar 1987 08:26
49 lines
3263 bytes
3263 bytes
> Register window machines such as the Berkeley RISCs have been discussed
> recently in this group. I have some questions about these architectures:
>
> (1) Has anyone tried making the window block size be just one register,
> i.e. the window can have an arbitrary alignment in relation to memory?
> I would expect this to be more efficient in terms of registers used (and
> therefore also memory), but register access time might suffer.
>
I believe that the "Strategies for Managing the Register file in RISC"
paper, mentioned earlier, concluded that fully-programmble register window
size had very low marginal utility over a small variety of fixed sizes (i.e.
4/8/12 registers), and would probably be a lose considering the additional
complexity and critical path effects. (i.e. you're better off making a
larger file with less control complexity)
The other significant conclusion that I recall they made was that the
most effective overflow/underflow handling mechanism (averaged across
many applications) is to save exactly one context on demand (subroutine
call overflows), and to restore exactly one context on demand (subroutine
return underflows).
Overflow/underflow problems are correlated with the subroutine nesting
depth over time of an application. Programs which go down and come back
up several levels with few repetitions at any given level (i.e. Ackerman's
function) tend to be pathological overflowers, while programs which spend
a great deal of time at or near a particular nesting depth practically never
overflow. The point here is that sensible thinking about the calling pattern
of your program can dramatically improve performance in a register-window
machine. This isn't really a very difficult concept, but people don't always
think about it.
> (3) Are there machines with both dynamic (windowed) and static (normal)
> registers? For instance it might be useful for quick O.S. interrupts to
> use only statics and not go to the trouble of setting up a register
> window stack (which would involve lots of reads and writes moving the
> old stack completely out to memory and then back again later). Static
> registers could also be useful for non-local variables.
Absolutely. A register window implementation generally maintains a set of
global registers which are accessible from any context (i.e. rM-rN are always
global registers). Non-register window RISC machines must make a distinction
between globals, locals, and parameter registers in order to make the best
use of the register file, though the allocation is done by the smart
compiler/optimizer. I'm sure John can speak more specifically.
Mark Papamarcos
Valid Logic
{ihnp4,hplabs}!pesnta!valid!markp
Technical Details
Message-ID:
<1034@valid.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!water!watnot!watmath!clyde!cbatt!ihnp4!ptsfa!lll-lcc!pyramid!pesnta!valid!markpReferences:
<4376@columbia.UUCP>Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watnot!watmath!clyde!cbatt!ihnp4!ptsfa!lll-lcc!pyramid!pesnta!valid!markp From: markp@valid.UUCP Newsgroups: comp.arch Subject: Re: register window machine questions Message-ID: <1034@valid.UUCP> Date: Sun, 1-Mar-87 03:26:33 EST Article-I.D.: valid.1034 Posted: Sun Mar 1 03:26:33 1987 Date-Received: Wed, 4-Mar-87 20:40:43 EST References: <4376@columbia.UUCP> Organization: Valid Logic, San Jose, CA Lines: 49