Claims
- 1. A method comprising:
selecting one or more microarchitecture events relating to a microprocessor executing an application process to be monitored by one or more hardware monitors; establishing parameters regarding the monitoring of the microarchitecture events by setting one or more monitor control vectors; processing profile data captured by the one or more hardware monitors regarding the occurrence of the one or more microarchitecture events; identifying a region of interest in the application process for optimization based at least in part on the captured profile data; and optimizing the region of interest in the application process.
- 2. The method of claim 1, wherein setting each monitor control vector comprises setting one or more fields of the monitor control vector to control the monitoring of the microarchitecture event.
- 3. The method of claim 2, wherein setting the one or more fields of each monitor control vector includes setting a control field to establish the type of microarchitecture event that is monitored by a hardware monitor.
- 4. The method of claim 2, wherein setting the one or more fields of each monitor control vector includes setting a trigger field to control when a microarchitecture event is monitored.
- 5. The method of claim 2, wherein setting the one or more fields of each monitor control vector includes storing a pointer in a handler field, the pointer identifying a handler routine to process the captured profile data associated with the occurrence of a microarchitecture event corresponding to the monitor control vector.
- 6. The method of claim 1, further comprising obtaining the captured profile data for each monitored microarchitecture event from a profile buffer.
- 7. The method of claim 6, wherein obtaining the captured profile data for a microarchitecture event from the memory buffer occurs when a memory buffer in the profile buffer that is assigned for the monitored microarchitecture event is fully allocated.
- 8. The method of claim 7, further comprising setting one or more conditions for obtaining captured profile data when the memory buffer in the profile buffer is not fully allocated, and setting one or more conditions for transferring captured profile data from a first level in the profile buffer to a second level in the profile buffer.
- 9. The method of claim 8, further comprising receiving an interrupt or special event handler if the buffer that is assigned for the microarchitecture event is fully allocated or if a condition for obtaining captured profile data when the memory buffer in the profile buffer is not fully allocated is met.
- 10. The method of claim 1, wherein the microarchitecture event monitored is an instruction cache miss event.
- 11. A machine-readable medium having stored thereon data representing instructions that, when executed by a processor, cause the processor to perform operations comprising:
selecting one or more microarchitecture events relating to a microprocessor executing an application process to be monitored by one or more hardware monitors; establishing parameters regarding the monitoring of the microarchitecture events by setting one or more monitor control vectors; processing profile data captured by the one or more hardware monitors regarding the occurrence of the one or more microarchitecture events; identifying a region of interest in the application process for optimization based at least in part on the captured profile data; and optimizing the region of interest in the application process.
- 12. The medium of claim 11, wherein setting each monitor control vector comprises setting one or more fields of the monitor control vector to control the monitoring of the microarchitecture event.
- 13. The medium of claim 12, wherein setting the one or more fields of each monitor control vector includes setting a control field to establish the type of microarchitecture event that is monitored by a hardware monitor.
- 14. The medium of claim 12, wherein setting the one or more fields of each monitor control vector includes setting a trigger field to control when a microarchitecture event is monitored.
- 15. The medium of claim 12, wherein setting the one or more fields of each monitor control vector includes storing a pointer in a handler field, the pointer identifying a handler routine to process the captured profile data associated with the occurrence of a microarchitecture event corresponding to the monitor control vector.
- 16. The medium of claim 11, wherein the instructions include instructions that, when executed by a processor, cause the processor to perform operations comprising obtaining the captured profile data for each monitored microarchitecture event from a profile buffer.
- 17. The medium of claim 16, wherein obtaining the captured profile data for a microarchitecture event from the memory buffer occurs when a buffer in the memory buffer that is assigned for the monitored microarchitecture event is fully allocated.
- 18. The medium of claim 17, wherein the instructions include instructions that, when executed by a processor, cause the processor to perform operations comprising setting one or more conditions for obtaining captured profile data when the memory buffer in the profile buffer is not fully allocated, and setting one or more conditions for transferring captured profile data from a first level in the profile buffer to a second level in the profile buffer.
- 19. The medium of claim 18, wherein the sequences of instructions include instructions that, when executed by a processor, cause the processor to perform operations comprising receiving an interrupt or special event handler if the buffer that is assigned for the microarchitecture event is fully allocated or if a condition for obtaining captured profile data when the memory buffer in the profile buffer is not fully allocated is met.
- 20. The medium of claim 11, wherein the microarchitecture event monitored is an instruction cache miss event.
- 21. A hardware assisted dynamic optimizer, comprising:
an interface to a microprocessor through which the hardware assisted dynamic optimizer establishes parameters regarding the monitoring of one or more microarchitecture events occurring during the execution of an application by the microprocessor; one or more handler routines, each handler routine including instructions to process profiles of a monitored microarchitecture event that are captured by the microprocessor; and one or more optimizers, each optimizer including instructions for optimizing a section of the application, the section of the application being chosen by the hardware assisted dynamic optimizer at least in part based on the captured profiles of a monitored microarchitecture event.
- 22. The hardware assisted dynamic optimizer of claim 21, wherein each monitor control vector includes a plurality of fields to control the monitoring of the microarchitecture event, the plurality of fields being set by the hardware assisted dynamic optimizer.
- 23. The hardware assisted dynamic optimizer of claim 22, wherein the plurality of fields includes:
a control field to establish the type of microarchitecture event that is monitored, a trigger field to control when the microarchitecture event is monitored, and a handler field to store a pointer to the handler routine for the microarchitecture event.
- 24. The hardware assisted dynamic optimizer of claim 21, wherein optimizing a section of the application includes increasing the speed of processing of the section of the application.
- 25. The hardware assisted dynamic optimizer of claim 21, wherein the hardware assisted dynamic optimizer obtains the captured profiles of the one or more microarchitecture events from a profile buffer.
- 26. The hardware assisted dynamic optimizer of claim 25, wherein at least a portion of the profile buffer is architecturally visible to the hardware assisted dynamic optimizer.
- 27. The hardware assisted dynamic optimizer of claim 26, wherein the profile buffer has a first level and a second level, and wherein the hardware assisted dynamic optimizer sets conditions for transferring captured profiles from the first level to the second level.
- 28. The hardware assisted dynamic optimizer of claim 27, wherein the hardware assisted dynamic optimizer sets one or more conditions for obtaining captured profiles from the profile buffer.
- 29. The hardware assisted dynamic optimizer of claim 28, wherein a memory buffer in the second level of the profile buffer is assigned to a microarchitecture event, and wherein the hardware assisted dynamic optimizer accesses the profiles of the microarchitecture event when the memory buffer assigned to the microarchitecture event is fully allocated or when a condition for obtaining captured profiles is met.
- 30. The hardware assisted dynamic optimizer of claim 29, wherein the hardware assisted dynamic optimizer accesses the profiles of a microarchitecture event upon receiving an interrupt or special event handler.
Parent Case Info
[0001] This application claims the benefit of U.S. Provisional Application No. 60/302,071, filed Jun. 28, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60302071 |
Jun 2001 |
US |