2015 · 13 citations · 24 references
EngineeringComputer EngineeringComputer ScienceCompilersComputer ArchitectureProgramming LanguagesBranch PredictionInterpreter DesignMicroarchitecture DesignBranch Prediction AccuracyBranch Prediction AnalysisHardware Performance CountersIndirect Branch PredictionInterpreter OptimizationInterpretersPenalty Mitigation
Interpreters have been used in many contexts. They provide portability and ease of development at the expense of performance. The literature of the past decade covers analysis of why interpreters are slow, and many software techniques to improve them. A large proportion of these works focuses on the dispatch loop, and in particular on the implementation of the switch statement: typically an indirect branch instruction. Folklore attributes a significant penalty to this branch, due to its high misprediction rate. We revisit this assumption, considering state-of-the-art branch predictors and the three most recent Intel processor generations on current interpreters. Using both hardware counters on Has well, the latest Intel processor generation, and simulation of the IT-TAGE, we show that the accuracy of indirect branch prediction is no longer critical for interpreters. We further compare the characteristics of these interpreters and analyze why the indirect branch is less important than before.
24
Chi-Keung Luk, Robert Cohn, Robert Muth et al. · 2005 · 2.3K citations
Two-level adaptive training branch prediction
Tse-Yu Yeh, Yale N. Patt · 1991 · 569 citations · Full text
Dynamic branch prediction with perceptrons
Daniel A. Jiménez, Calvin Lin · 2002 · 410 citations
An analysis of the dynamic behavior of JavaScript programs
Gregor Richards, Sylvain Lebresne, Brian R. Burg et al. · 2010 · 356 citations
James Bell · Communications of the ACM · 1973 · 305 citations · Full text