This paper gives a method to make branch prediction according to the register values a number of cycles before the execution of branch. I think this method is very interesting. The decision of whether a branch will take or not is related to the values in registers, but old branch prediction methods did not consider it. The prediction was based on the branch history and the correlation among branches. However, it is surprising that the results show that this mothod is not much better than two-level PAg (sometimes, even worse) . The problem may be the not-so-good cut-points. A better algorithm to search cut-points may be helpful. Also, a better technique for predictor is helpful. One difficulty in designing new predictors is that it should be very simple and easy to implemented. Otherwise, the time spent on the added instructions for the predicator can outweigh the benefit we get.
Another point is that in this paper, all register values are checked, though normally, we have only two values used in the branch instruction. We can focus on the value that may be used in the branch. The data flow analysis in the compiler can help. If this is possible, we can create the predictor without the profiling information, then reduce the compilation time.
This paper describes two schemes of the predicate-based branch prediction: POP and PEP. More important, it gives quite a few promising reseach directions in Section 4.
Zhijie SHI