Pipeline Operation ------------------------------------------------------------------------------------------------------------------------------------------------------------- 8 NOP 0 ADD 1 ADDI 2 Bcc 4 JMP 5 LDD 5 SW 5 SB 5 LDA 1 ir code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] npc pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 2 a reg[ ir.ra ] reg[ ir.ra ] npc npc br br br br b reg[ ir.rb ] reg[ ir.ra ] reg [ ir.rc ] reg[ ir.rc ] reg[ ir.rc ] reg[ ir.rc ] reg[ ir.rc ] imm ir.d ir.d ir.d ir.d ir.d ir.d ir.d ir.d 3 x a op b a op b a + imm b + imm a + imm a + imm a + imm a + imm xb b b b b cond a func 0 1 4 pc (cond) x ! x ! lmd x x data[ x ] data [x] <- b [x] <- b (lb) x sp 5 reg [c] <- lmd [c] <- lmd [c] <- lmd [c] <- lmd ------------------------------------------------------------------------------------------------------------------------------------------------------------- 3 BSR #1 3 BSR #2 6 LSP 6 LBR 6 SWI #1 6 SWI #2 6 SWI #3 7 GSP 7 SSP 1 ir code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] npc pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 2 a npc b npc npc sr reg[ ir.rc ] imm ir.d ir.d ir.d ir.d 3 x a + imm imm << 7 imm << 7 ir.d << 1 a xb b b b cond 4 pc x ! lmd sp <- x x x #-> priv sp data [-(sp)] <- b [-(ssp)] <- b [-(ssp)] <- b sp x 5 reg [br] <- lmd [c] <- lmd ------------------------------------------------------------------------------------------------------------------------------------------------------------- 7 GSR 7 SSR 7 GUSP 7 PSH 7 POP 8 RTI #1 8 RTI #2 8 RTS 8 STOP 1 ir code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] code[ pc ] npc pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 pc + 1 2 a sr reg[ ir.rc ] b reg[ ir.c ] imm 3 x a a xb b cond 4 pc lmd x x usp data[(sp)+] data[(ssp)+] data[(ssp)+] data[(sp)+] data [-(sp)] <- b sp 5 pc lmd lmd STOP reg [c] <- lmd sr <- lmd [c] <- lmd [c] <- lmd sr <- lmd