 Our MN branch predictors gave us a way to integrate both global branch prediction and local branch prediction. A tournament branch predictor is another way of integrating these two different algorithms. So a tournament branch predictor chooses between using a local branch predictor and a global branch predictor for each branch instruction that we've got. On the global side, we can just keep a table of N-bit branch predictors that's indexed by the last M global branch results. On the local side, we can also use a table of N-bit branch predictors indexed by the last, say, K local branch results. Now we've got N-bit branch predictors for global side, N-bit branch predictors for the local side, and we can choose between those by using another branch predictor. So probably a two-bit branch predictor and that branch predictor will just choose whether we should use the global branch predictor or the local branch predictor. This top-level branch predictor will be indexed based on the actual instruction address. So we'd use this branch predictor to choose whether we want to use the global branch predictor or the local branch predictor systems. This method works a little bit better than the MN branch predictors. This time we can get up to 97% branch prediction accuracy. But we've still got some room to improve. So next time we'll be looking at another method that we can use to improve our prediction even further.