System to profile and optimize user software in a managed run-time environment
AssigneeIntel Corporation
InventorsChris J. Newburn, Robert Knight, Robert Geva, Dion Rodgers, Xiang Zou, Hong Wang, Bryant E. Bigbee, Ittai Anati
Life of this patent
Estimating the term…
Abstract
Method, apparatus, and system for monitoring performance within a processing resource, which may be used to modify user-level software. Some embodiments of the invention pertain to an architecture to allow a user to improve software running on a processing resources on a per-thread basis in real-time and without incurring significant processing overhead.
Claims22
A system comprising:
- a processor including a plurality of channels to store a plurality of state information corresponding to a plurality of instruction threads, each channel having a different priority and specifying a trigger-action mapping for a scenario associated with the channel responsive to which a yield event is to occur to transfer execution to a yield event service routine associated with the channel, and a block indicator to provide an override of the yield event, wherein if multiple yield events occur simultaneously, a highest priority channel is selected for servicing;
- a scenario detection unit to detect performance characteristics via interpretation of the occurrence of events within the processor, a combination of events being determined by the plurality of state information;
- a profiling unit to generate a profile of the combination of events according to a user model, and a profile method generator to translate the profile into a method;
- a managed run-time environment (MRTE) to modify user code of at least one of the plurality of instruction threads within the MRTE to improve the user code during run-time of the at least one instruction thread according to the combination of events detected by the scenario detection unit, the modification including optimization of the user code of the at least one instruction thread via the method.
An apparatus comprising:
- a processing resource;
- a plurality of state registers to store a plurality of event triggering conditions corresponding to a plurality of threads of instructions to be performed by the processing resource, each of the plurality of state registers having a different priority and specifying a trigger-action mapping for a scenario associated with the state register responsive to which a yield event is to occur to transfer execution to a yield event service routine associated with the state register, and a block indicator to provide an override of the yield event, wherein if multiple yield events occur simultaneously, a highest priority state register is selected for servicing;
- a profiling unit to generate a profile of the plurality of event triggering conditions according to a user model;
- a profile method generator to translate the profile into a method, user code of at least one of the plurality of threads to be modified in a managed run-time environment (MRTE) during run-time of the at least one thread in response to the occurrence of at least one of the plurality of event triggering conditions according to the user model to change the performance of the at least one thread by the processing resource by optimization of the at least one thread via the method.
A method comprising:
- monitoring performance of a processing resource, including detecting a plurality of scenarios occurring within the processing resource, each of the plurality of scenarios assigned to one of a plurality of channels each channel to store state information corresponding to an instruction thread, each channel having a different priority and specifying a trigger-action mapping for a scenario associated with the channel responsive to which a yield event is to occur to transfer execution to a yield event service routine associated with the channel, the processing resource further including a block indicator to provide an override of the yield event, wherein if multiple yield events occur simultaneously, a highest priority channel is selected for servicing;
- performing a fault-like or a trap-like yield in response to detecting the plurality of scenarios;
- generating a profile of information from the occurrence of the plurality of scenarios;
- optimizing the performance of a thread of instructions according to the profile of information by translation of the profile of information into a method to modify user code of the thread in real-time during run-time of the thread, without recompiling the thread before the thread is performed by the processing resource.
A non-transitory machine-readable medium having stored thereon a set of instructions, which if executed by a machine cause the machine to perform a method comprising:
- monitoring performance of a processing resource, including detecting a plurality of scenarios occurring within the processing resource, each of the plurality of scenarios assigned to one of a plurality of channels each channel to store state information corresponding to an instruction thread, each channel having a different priority and specifying a trigger-action mapping for a scenario associated with the channel responsive to which a yield event is to occur to transfer execution to a yield event service routine associated with the channel, the processing resource further including a block indicator to provide an override of the yield event, wherein if multiple yield events occur simultaneously, a highest priority channel is selected for servicing;
- optimizing the performance of a thread of instructions according to a profile of information by translation of the profile of information into a method to modify user code of the thread in real-time during run-time of the thread, without recompiling the thread before the thread is performed by the processing resource.
Dependencies are inferred from the claim text.