Abstract
Predicting indirect-branch targets has become a performance bottleneck for many applications. Previous high-performance indirect-branch predictors usually require significant hardware storage or additional compiler support, which increases the complexity of the processor front-end or the compilers. This paper proposes a complexity-effective indirect-branch prediction mechanism, called the Set-Way Index Pointing (SWIP) prediction. It stores multiple indirect-branch targets in different branch target buffer (BTB) entries, whose set indices and way locations are treated as set-way index pointers. These pointers are stored in the existing branch-direction predictor. SWIP prediction reuses the branch direction predictor to provide such pointers, and then accesses the pointed BTB entries for the predicted indirect-branch target. Our evaluation shows that SWIP prediction could achieve attractive performance improvement without requiring large dedicated storage or additional compiler support. It improves the indirect-branch prediction accuracy by 36.5% compared to that of a commonly-used BTB, resulting in average performance improvement of 18.56%. Its energy consumption is also reduced by 14.34% over that of the baseline.
Similar content being viewed by others
References
Jiménez D A, Lin C. Dynamic branch prediction with perceptrons. In Proc. the 7th HPCA, Jan. 2001, pp.197–206.
McFarling S. Combining branch predictors. Technical Report TN-36, Western Research Laboratory, June 1993.
Kim H, Mutlu O, Stark J, Patt Y. Wish branches: Combining conditional branching and predication for adaptive predicated execution. In Proc. the 38th MICRO, Nov. 2005, pp.43–54.
Seznec A. Analysis of the O-GEometric history length branch predictor. In Proc. the 32nd ISCA, Jun. 2005, pp.394–405.
Yeh T Y, Patt Y. A comparison of dynamic branch predictors that use two levels of branch history. In Proc. the 20th ISCA, May 1993, pp.257–266.
Calder B, Grunwald D, Zorn B. Quantifying behavioral differences between C and C++ programs. Journal of Programming Languages, 1994, 2(4): 323–351.
Chang P Y, Hao E, Patt Y. Target prediction for indirect jumps. In Proc. the 24th ISCA, June 1997, pp.274–283.
Driesen K, Hölzle U. The cascaded predictor: Economical and adaptive branch target prediction. In Proc. the 31st MICRO, Nov. 30-Dec. 2 1998, pp.249–258.
Kim H, Joao J A, Mutlu O, Lee C J, Patt Y, Cohn R. VPC prediction: Reducing the cost of indirect branches via hardware-based dynamic devirtualization. In Proc. the 34th ISCA, June 2007, pp.424–435.
Driesen K, Hözle U. Accurate indirect branch prediction. Technical Report TRCS97-19, University of California, March 1998.
Kalamatianos J, Kaeli D R. Predicting indirect branches via data compression. In Proc. the 31st MICRO, Nov. 30-Dec. 2, 1998, pp.272–281.
Driesen K, Hölzle U. Multi-stage cascaded prediction. In Proc. the 5th Euro-Par Conference on Parallel Processing, Aug. 31-Sept. 3, 1999, pp.1312–1321.
Seznec A, Michaud P. A case for (partially) TAgged GEometric history length branch prediction. Journal of Instruction-Level Parallelism (JILP), 2006, 8(1): 1–23.
Joao J A, Mutlu O, Kim H, Agarwal R, Patt Y. Improving the performance of object-oriented languages with dynamic predication of indirect jumps. In Proc. the 13th ASPLOS, March 2008, pp.80–90.
Farooq M, Chen L, John L K. Value based BTB indexing for indirect jump prediction. In Proc. the 16th HPCA, Jan. 2010.
Azizi O, Mahesri A, Lee B C, Patel S J, Horowitz M. Energy-performance tradeoffs in processor architecture and circuit design: A marginal cost analysis. In Proc. the 37th ISCA, Jun. 2010, pp.26–36.
Hameed R, Qadeer W, Wachs M et al. Understanding sources of inefficiency in general-purpose chips. In Proc. the 37th ISCA, June 2010, pp.37–47.
Lin Y L. Essential Issues in System-On-a-Chip Design, Springer-Verlag, 2006.
Lee J K F, Smith A J. Branch prediction strategies and branch target buffer design. IEEE Computer, 1984, 17(1): 6–22.
Yeh T Y, Patt Y. Two-level adaptive training branch prediction. In Proc. the 24th MICRO, Nov. 1991, pp.51–61.
Roth A, Moshovos A, Sohi G S. Improving virtual function call target prediction via dependence-based pre-computation. In Proc. the 13th ICS, June 1999, pp.356–364.
Gochman S, Ronen R, Anati I et al. The Intel® Pentium® M processor: Microarchitecture and performance. Intel Technology Journal, 2003, 7(2): 21–59.
IBM. IBM PowerPC 970FX RISC Microprocessor user’s manual. Version 2.3, March 2008.
SPEC. Standard Performance Evaluation Corporation. http://www.spec.org, July 2011.
Burger D, Austin T M. The simpleScalar tool set, version 2.0. SIGARCH Comput. Archit. News, 1997, 25(3): 13–25.
Brooks D, Tiwari V, Martonosi M. Wattch: A framework for architectural-level power analysis and optimizations. In Proc. the 27th ISCA, June 2000, pp.83–94.
Wolczko M. Benchmarking Java with the Richards benchmark. http://research.sun.com/people/mario/java_benchmarking/richards/richards.html, July 2011.
Perelman E, Hamerly G, Van Biesbrouck M et al. Using Sim-Point for accurate and efficient simulation. In Proc. SIGMETRICS, June 2003, pp.318–319.
Yeh T Y, Marr D, Patt Y. Increasing the instruction fetch rate via multiple branch prediction and branch address cache. In Proc. the 7th ICS, July 1993, pp.67–76.
Thoziyoor S, Muralimanohar N, Ahn J N, Jouppi N P. CACTI 5.1. Technical Report HPL-2008-20, Hp Labs, 2008, http://www.hpl.hp.com/techreports/2008/HPL-2008-20.html.
Author information
Authors and Affiliations
Corresponding author
Additional information
This work is supported by the “HGJ” National Science and Technology Major Project of China under Grant No. 2009ZX01029-001-002.
Rights and permissions
About this article
Cite this article
Xie, ZC., Tong, D., Huang, MK. et al. SWIP Prediction: Complexity-Effective Indirect-Branch Prediction Using Pointers. J. Comput. Sci. Technol. 27, 754–768 (2012). https://doi.org/10.1007/s11390-012-1262-8
Received:
Revised:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11390-012-1262-8