First page Back Continue Last page Overview Graphics
Problems with pipelined architectures
About 20% of instructions in a typical program are branches and jumps.
- Program branches reduce the effectiveness of pipelining.
Program debugging is more complex since several instructions are executed at the same time.
There are methods for compilers and programmers to reduce these problems. However, the methods require understanding of the pipeline architecture.
Code density is low compare to CISC architecture.
There are some limitations to the effectiveness of pipelines. The main problem is branches and jumps in the program. When a program needs to branch or jump, the next instruction to be executed is not the one that immediately follows the current instruction in the pipe. When this happens, the pipeline is said to be broken and the information in the pipe has to be trashed. Since 20% of code is branches or jumps, the actual speed gain for a RISC processor can be significantly lower than the theoretical gain discussed above. However, as shown on the next slide, there are techniques available for addressing this problem.
The other problem is debugging. Since several instructions are in the pipe, some instructions are partially executed when execution stops at a break point. This makes it more difficult to interpret data and alter the values of variables while debugging.