🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.arch
Article #13126

Re: register window machine questions

#13126
From: markp
Date: Sun, 01 Mar 1987 08:26
49 lines
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!markp
References: <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