ACM Home Page
Please provide us with feedback. Feedback
Reducing indirect function call overhead in C++ programs
Full text PdfPdf (1.27 MB)
Source Annual Symposium on Principles of Programming Languages archive
Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages table of contents
Portland, Oregon, United States
Pages: 397 - 408  
Year of Publication: 1994
ISBN:0-89791-636-0
Authors
Brad Calder  Department of Computer Science, Campus Box 430, University of Colorado, Boulder, CO
Dirk Grunwald  Department of Computer Science, Campus Box 430, University of Colorado, Boulder, CO
Sponsors
SIGACT: ACM Special Interest Group on Algorithms and Computation Theory
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 12,   Downloads (12 Months): 60,   Citation Count: 44
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues   peer to peer  

Tools and Actions: Review this Article  
Save this Article to a Binder    Display Formats: BibTex  EndNote ACM Ref   
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/174675.177973
What is a DOI?

ABSTRACT

Modern computer architectures increasingly depend on mechanisms that estimate future control flow decisions to increase performance. Mechanisms such as speculative execution and prefetching are becoming standard architectural mechanisms that rely on control flow prediction to prefetch and speculatively execute future instructions. At the same time, computer programmers are increasingly turning to object-oriented languages to increase their productivity. These languages commonly use run time dispatching to implement object polymorphism. Dispatching is usually implemented using an indirect function call, which presents challenges to existing control flow prediction techniques. We have measured the occurrence of indirect function calls in a collection of C++ programs. We show that, although it is more important to predict branches accurately, indirect call prediction is also an important factor in some programs and will grow in importance with the growth of object-oriented programming. We examine the improvement offered by compile-time optimizations and static and dynamic prediction techniques, and demonstrate how compilers can use existing branch prediction mechanisms to improve performance in C++ programs. Using these methods with the programs we examined, the number of instructions between mispredicted breaks in control can be doubled on existing computers.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
2
3
4
 
5
Brad Calder and Dirk Grunwald. Branch alignment. Technical Report (In Preperation), Univ. of Colorado- Boulder, 1993.
 
6
Brad Calder and Dirk Grunwald. Fast & accurate instruction fetch and branch prediction. CU-CS xxx, Univ. of Colorado, October 1993. (in preperation).
 
7
Brad Calder, Dirk Grunwald, and Benjamin Zorn. Exploiting behavioral differences between C and C++ programs. Technical Report (In Preperation), Univ. of Colorado-Boulder, 1993.
8
9
 
10
11
12
13
 
14
15
16
 
17
Johnny K. F. Lee and Alan Jay Smith. Branch prediction strategies and branch target buffer design. IEEE Computer, pages 6-22, January 1984.
 
18
19
20
21
 
22
Hemant D. Pande and Barbera G. Ryder. Static type determination for C++. Technical Report LCSR-TR- 197, Rutgers Univ., February 1993.
 
23
 
24
Barbera G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216-226, May 1979.
 
25
26
27
28
29

CITED BY  44
 
 
 
 
 
 
 
 
 
 
 
 
 

Collaborative Colleagues:
Brad Calder: colleagues
Dirk Grunwald: colleagues

Peer to Peer - Readers of this Article have also read: