Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!uunet!mcvax!ukc!etive!dcl-cs!aber-cs!thor!pcg From: pcg@thor.cs.aber.ac.uk (Piercarlo Grandi) Newsgroups: comp.arch Subject: Number of registers, windows Message-ID: Date: 11 Jul 89 15:34:53 GMT Sender: pcg@aber-cs.UUCP Organization: Coleg Prifysgol Cymru Lines: 55 Posting-Front-End: GNU Emacs 18.47.1 of Wed Mar 15 1989 on thor (berkeley-unix) I was rereading some articles on register windows, and I found again a relatively old paper that contributed to my old opinion that you don't need many registers. It is "a Reduced register file for RISC architectures", in CompArchNews, Sept. 1985. The authors (Huguet et Lang, UCLA) start off with the same reservations I had voiced about large register sets (probably I was just unconsciously repeating them), i.e. large chip area, cost of context switch, lengthening of cycle time. They advance some interesting proposals,a nd have some intriguing results. The proposal (that apparently the 29k guys took well) was to have multiple sized windows, i.e. essentially a flat register file, organized mostly by convention as a set of windows (of a few discrete sizes). They find that this is remarkably effective. The interesting figure is that they find that a 32 registers file with windows of 4 registers (8 and 12 are much more rare) are very effective. Now 32 is fairly small as things go these days, and the size of the window is quite small as well. Note that they have 4 registers overlapped for arg passing, and there are 4 registers for global register variables. Note also that they are using PCC, without coloring; but then coloring (if it uses or estimates dynamic usage) is supposed to do even better :->. And there is still the argument (that I find mildly persuasive) that windows are not necessarily always optimal (ask MIPSco and the Titan people... but on the other hand I would not object to such a small register file). As to this, the paper actually says that the windowing scheme they prefer is virtually invisible (like the i860 one), as the instructions denote registers only with 4 bits (16 regs == 12 regs for largest window plus 4 regs for globals), i.e. the program only sees the current window. Rereading this paper has amused me greatly, there are some little numbers here and there ("Pyramid 90x and Celerity C1200 have a single window size of 32 registers. Our measurements have not shown any reason for such a large window size because with a window size of 24 registers all local simple variables can be allocated to registers" ... "our measurements show that only 0.2% of the data objects are local simple variables with the address operator and they account for 0.0013% of the executed objects") that tend to be so unfashionable... :-> -- Piercarlo "Peter" Grandi | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk Dept of CS, UCW Aberystwyth | UUCP: ...!mcvax!ukc!aber-cs!pcg Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk