- Mar 31, 2003
- 11,679
- 0
- 81
We are studying the MIPS architecture right now in one of my upper level CS courses and I had a quick question.
When using beq and another instruction; obviously, there is a hazard there that cannot be forwarded around (Especially if the branch was predicted incorrectly). The pipeline then either stalls or flushes to prevent an incorrect memory address from being loaded.
The way we were explained, is that all the control lines were set to 0, so the instructions that had already passed through stages 1-4 were just lost. After that, the buffer between the Instruction Fetch and the Instruction Decode stage was used to restore the previous value of the PC.
Instead of setting all control lines to 0, is it not possible to power down certain parts (ie: ALU, Forwarding Control, Registers in question) instead of sending a 0 (Which admittedly is a 0V signal so those parts lose power) to save power. Pipeline stalls/flushes, especially on the old Netburst Architecture happened a lot, why can you not just shut down certain individual components?
Thanks,
-Kevin
When using beq and another instruction; obviously, there is a hazard there that cannot be forwarded around (Especially if the branch was predicted incorrectly). The pipeline then either stalls or flushes to prevent an incorrect memory address from being loaded.
The way we were explained, is that all the control lines were set to 0, so the instructions that had already passed through stages 1-4 were just lost. After that, the buffer between the Instruction Fetch and the Instruction Decode stage was used to restore the previous value of the PC.
Instead of setting all control lines to 0, is it not possible to power down certain parts (ie: ALU, Forwarding Control, Registers in question) instead of sending a 0 (Which admittedly is a 0V signal so those parts lose power) to save power. Pipeline stalls/flushes, especially on the old Netburst Architecture happened a lot, why can you not just shut down certain individual components?
Thanks,
-Kevin