Chris M. McKinsey - Alpharetta GA Jayashankar Bharadwaj - Saratoga CA
Assignee:
Intel Corporation - Santa Clara CA
International Classification:
G06F 945
US Classification:
717161, 717157
Abstract:
Path speculating instruction scheduler. According to one embodiment of the present invention instructions are placed into a control flow graph having blocks of the instructions, the control flow graph defining a number of paths of control flow through the blocks of instructions. A list of candidate instructions to be scheduled into a target block in the control flow graph for execution is built, and one of the candidate instructions is selected to be scheduled into the target block based on whether a single copy on a path property for the selected instruction in the target block will be maintained or terminated on one or more paths through the target block.
A system and method of compiling source code. A compiler generates intermediate code from the source code, generates object code instructions from the intermediate code and schedules the object code instructions. Object code instructions are scheduled by inserting a speculation check into the object code instructions, storing recovery code associated with the speculation check and generating a control flow graph. The control flow graph is generated by converting the speculation check to a non-flow control check instruction, attaching one or more pseudo instructions to the check instruction and converting the non-flow control check instruction to a flow control check instruction, wherein the pseudo instructions represent recovery code behavior for the recovery code associated with the check instruction.
Microsoft
Director of Engineering, Visual C
Microsoft Nov 2008 - Aug 2014
Prinicpal Development Lead
Microsoft Nov 2008 - Aug 2014
Prinicpal Development Manager
Microsoft Jul 2002 - Nov 2008
Principal Architect
Freescale Semiconductor Mar 1999 - Jul 2002
Development Lead
Education:
Purdue University 1990 - 1994
Bachelors, Bachelor of Science, Computer Science
Skills:
Debugging Distributed Systems Software Engineering Algorithms Software Design Software Development Compilers Computer Architecture C++ C Multithreading Win32 Api Parallel Computing C# High Performance Computing Scalability Device Drivers Agile Methodologies Embedded Systems Arm