Path: utzoo!attcan!uunet!lll-winken!lll-tis!ames!claris!apple!baum From: baum@Apple.COM (Allen J. Baum) Newsgroups: comp.arch Subject: Re: Branch Delay Annullment Message-ID: <12211@apple.Apple.COM> Date: 15 Jun 88 16:53:35 GMT References: <22065@amdcad.AMD.COM> Reply-To: baum@apple.UUCP (Allen Baum) Organization: Apple Computer, Inc. Lines: 19 [] >In article <22065@amdcad.AMD.COM> tim@amdcad.AMD.COM (Tim Olson) writes: >...this says that m88000 branch delay annullment ("squashing") takes >place if the branch is taken, causing the branch to take 2 cycles. > >This is the opposite of what the SPARC annulled branch does -- it >squashes untaken branches. Squashing the untaken branches seems more >effective to me. (..example showing top of loop duplicated in branch shdw) > >Any thoughts as to the benefits of annul-taken form? In the looping case, obviously squash-on-non-taken works. However, in the standard if-then-else case (which can occur inside a loop remember, so it can occur even more frequently than loop-closers dynamically) just the opposite is true. The HP Precision squashes according to the sign of the branch displacement in conditional branches. Backwards branches (loop closers) squash on non-taken, forward branches (if-then-else types, typically) squash on taken. The best of both worlds, I think. -- {decwrl,hplabs,ihnp4}!nsc!apple!baum (408)973-3385