First page Back Continue Last page Overview Text
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.