This document describes the implementation of a piecewise linear branch prediction algorithm. It discusses:
1) The algorithm uses a three dimensional array to store weights for branch predictions based on branch address, path history, and global history register.
2) It provides the prediction algorithm that uses the stored weights to calculate an output to predict branches, and the update algorithm that adjusts the weights based on actual branch outcomes.
3) An experiment was conducted to evaluate the performance with different array dimensions, finding the best miss prediction rate with a 64K size array using 64 entries for branch address, 16 for path history, and 64 for global history.