Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!decwrl!labrea!rutgers!sunybcs!bingvaxu!leah!uwmcsd1!uwmacc!uwvax!astroatc!johnw From: johnw@astroatc.UUCP (John F. Wardale) Newsgroups: comp.arch Subject: Re: register windows Really Stack machines/stack-caches Message-ID: <543@astroatc.UUCP> Date: Tue, 3-Nov-87 00:13:06 EST Article-I.D.: astroatc.543 Posted: Tue Nov 3 00:13:06 1987 Date-Received: Sat, 7-Nov-87 00:28:28 EST Reply-To: johnw@astroatc.UUCP (John F. Wardale) Organization: Astronautics Technology Cntr, Madison, WI Lines: 38 Summary: Stack machines turn out to be bad There has been discussion about using a stack, a stack architecture (I assume) and a stack-cache to get many of the gains of register windows cheaply. Unless I'm totally missing the boat, this requires using a stack architecture. These architectures were thought to be great at increasing code density by eliminating all those repetative operandes....just keep them on a stack. Analyses of real code shows that most expressions are of one of these 3 forms: (Sorry, I forgot the numbers...) a=0; a++; a=b+c; All of which tend to take more code on a stack architecture than on a vax, or RISC beast (to be fair, count bits...) The other *BIG* loss for a stack machine is that using the stack for temporaries, tends to *CREATE* hazards (in the stack) A = B*C + D*E B;C;*;D;E;*;+;store A (operations pushes implied) 1 2 1 2 3 2 1 0 (stack depth) Here the 2nd * must wait for the the first to complete. With a pipelined multiplier on a register based machine, the *'s can proceed in parallel. Sorry if this is clear as mud...basically, Stack machines have lost popularity because we've discovered better ways to build fast computers, or more specifically, its hard to build really fast stack-architecture machines. -- John Wardale ... {seismo | harvard | ihnp4} ! {uwvax | cs.wisc.edu} ! astroatc!johnw To err is human, to really foul up world news requires the net!