The patent badge is an abbreviated version of the USPTO patent document. The patent badge does contain a link to the full patent document.
The patent badge is an abbreviated version of the USPTO patent document. The patent badge covers the following: Patent number, Date patent was issued, Date patent was filed, Title of the patent, Applicant, Inventor, Assignee, Attorney firm, Primary examiner, Assistant examiner, CPCs, and Abstract. The patent badge does contain a link to the full patent document (in Adobe Acrobat format, aka pdf). To download or print any patent click here.
Patent No.:
Date of Patent:
May. 29, 2012
Filed:
Aug. 27, 2007
Roch G. Archambault, North York, CA;
Geoffrey O. Blandy, Austin, TX (US);
Roland Froese, Toronto, CA;
Yaoqing Gao, North York, CA;
Liangxiao HU, Markham, CA;
James L. Mcinnes, Toronto, CA;
Raul E. Silvera, Woodbridge, CA;
Roch G. Archambault, North York, CA;
Geoffrey O. Blandy, Austin, TX (US);
Roland Froese, Toronto, CA;
Yaoqing Gao, North York, CA;
Liangxiao Hu, Markham, CA;
James L. McInnes, Toronto, CA;
Raul E. Silvera, Woodbridge, CA;
International Business Machines Corporation, Armonk, NY (US);
Abstract
Systems, methods and computer products for compiler support for aggressive safe load speculation. Exemplary embodiments include a method for aggressive safe load speculation for a compiler in a computer system, the method including building a control flow graph, identifying both countable and non-countable loops, gathering a set of candidate loops for load speculation, and for each candidate loop in the set of candidate loops gathered for load speculation, computing an estimate of the iteration count, delay cycles, and code size, performing a profitability analysis and determining an unroll factor based on the delay cycles and the code size, transforming the loop by generating a prologue loop to achieve data alignment and an unrolled main loop with loop directives, indicating which loads can safely be executed speculatively and performing low-level instruction scheduling on the generated unrolled main loop.