Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site watmum.UUCP Path: utzoo!watmath!watnot!watmum!cdshaw From: cdshaw@watmum.UUCP (Chris Shaw) Newsgroups: net.arch Subject: Re: risc, cisc, and microprogramming Message-ID: <171@watmum.UUCP> Date: Sun, 23-Jun-85 06:18:51 EDT Article-I.D.: watmum.171 Posted: Sun Jun 23 06:18:51 1985 Date-Received: Mon, 24-Jun-85 02:36:24 EDT References: <557@hou2b.UUCP> <1078@peora.UUCP> <334@spar.UUCP> <145@mips.UUCP> <350@spar.UUCP> Reply-To: cdshaw@watmum.UUCP (Chris Shaw) Organization: U of Waterloo, Ontario Lines: 29 Does not the average RISC type machine do a purge-pipe action upon receipt of a branch instruction, or is there something so incredibly obvious going on here that I am missing? The reason I ask is that in any but the most nontrivial loops, throwing in enough NOPs to fill the pipe so that the next instruction is the right one strikes me as grossly inefficient. The alternative with a simple "purge-pipe" is to repeat enough of the beginning of the loop such that you end up doing the right instructions if you branched to continue the loop. Otherwise you purge, and continue after the repeated instructions without actually executing any of them. Thus we have a bogus program with a 2-element pipe: start: load a store b start+2:add c store d decr e brnz start+2: load a \ do these 2 if branch taken, else throw them away store b / ... (purge) and do the xor xor a ---> continue here because "load" & "store" were purged ... when the branch was not taken (Forgive me if this was utterly stupid) Chris Shaw watmath!watmum!cdshaw or cdshaw@watmath University of Waterloo In doubt? Eat hot high-speed death -- the experts' choice in gastric vileness !