Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!husc6!sri-unix!hplabs!decwrl!labrea!Shasta!andy From: andy@Shasta.UUCP Newsgroups: comp.arch Subject: RISC register windows Message-ID: <1335@Shasta.STANFORD.EDU> Date: Wed, 25-Feb-87 03:46:25 EST Article-I.D.: Shasta.1335 Posted: Wed Feb 25 03:46:25 1987 Date-Received: Fri, 27-Feb-87 22:35:04 EST References: <1881@homxc.UUCP> <898@moscom.UUCP> <476@mntgfx.MENTOR.COM> Reply-To: andy@Shasta.UUCP (Andy Freeman) Organization: Stanford University Lines: 28 The sliding register window had an area for parameters passed to the procedure, locals, and parameters passed to other procedures. Calling lots of little procedures (that don't call other procedures) that don't use their window fully is equivalent to doing a better job allocating but having one less window. The first call might overflow, but subsequent ones won't. There were also a set of global registers. One argument for fixed window sizes is that register access shouldn't require an addition. Bit-wise or is one thing (or the register number with the current base to determine the register); addition is an expensive operation to put on the register access data path. This basically restricts window sizes to powers of two. (Then again, if there are cheap functions that one could use to implement variable size register windows, I'm sure someone on the net will mention them.) It then is probably easier to pick a power than support a range of them. Then again, I seem to remember that the window size wasn't a power of two on the Berkeley RISC, which surprised me. Maybe I'm wrong. -andy -- Andy Freeman UUCP: ...!decwrl!shasta!andy forwards to ARPA: andy@sushi.stanford.edu (415) 329-1718/723-3088 home/cubicle