
US Patent No: 7,290,255
Number of patents in Portfolio can not be more than 2000
Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
Stats
-
Oct 30, 2007
Issued date -
Jan 14, 2004
filing date -
10/757,156
serial no -
Expired
status
Importance
Loading Importance Indicators...
Abstract
A method, apparatus, and computer instructions for local program reorganization using branch count per instruction hardware. In a preferred embodiment, a hardware counter is used in the present invention to count the number of times a branch is taken when branch instructions are executed. Branch count statistics generated from the hardware counters are available to a program in order to analyze whether code reorganization is necessary. If reorganization is necessary, the program autonomically reorganizes instructions locally at run time to allow more instructions to be executed prior to taking a branch, so that the number of branches taken is minimized without modifying underlying program code.
Loading the Abstract Image...
First Claim
Related Publications
Loading Related Publications...
International Classification(s)
- [Classification Symbol]
- [Patents Count]
Cited Art
| Patent Info | (Count) | # Cites | Year |
|---|---|---|---|
|
|
|||
| 5,689,712 Profile-based optimizing postprocessors for data references | 56 | 1994 | |
| 6,006,033 Method and system for reordering the instructions of a computer program to optimize its execution | 92 | 1994 | |
| 6,206,584 Method and apparatus for modifying relocatable object code files and monitoring programs | 51 | 1995 | |
| 5,691,920 Method and system for performance monitoring of dispatch unit efficiency in a processing system | 75 | 1995 | |
| 5,752,062 Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system | 65 | 1995 | |
| 5,774,724 System and method for acquiring high granularity performance data in a computer system | 71 | 1995 | |
| 5,937,437 Method and apparatus for monitoring address translation performance | 45 | 1996 | |
| 5,938,760 System and method for performance monitoring of instructions in a re-order buffer | 37 | 1996 | |
| 5,950,009 Method and apparatus for profile-based reordering of program portions in a computer program | 71 | 1997 | |
| 5,970,439 Performance monitoring in a data processing system | 36 | 1997 | |
| 5,940,618 Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments | 77 | 1997 | |
| 6,101,524 Deterministic replay of multithreaded applications | 92 | 1997 | |
| 5,938,778 System and method for tracing instructions in an information handling system without changing the system source code | 52 | 1997 | |
| 6,256,775 Facilities for detailed software performance analysis in a multithreaded processor | 112 | 1997 | |
| 6,189,142 Visual program runtime performance analysis | 68 | 1998 | |
| 6,223,338 Method and system for software instruction level tracing in a data processing system | 55 | 1998 | |
| 6,446,029 Method and system for providing temporal threshold support during performance monitoring of a pipelined processor | 53 | 1999 | |
| 2005/0071,516 Method and apparatus to autonomically profile applications | 12 | 2003 | |
| 2005/0071,608 Method and apparatus for selectively counting instructions and data accesses | 10 | 2003 | |
| 2005/0071,609 Method and apparatus to autonomically take an exception on specified instructions | 10 | 2003 | |
| 2005/0071,610 Method and apparatus for debug support for individual instructions and memory locations | 10 | 2003 | |
| 2005/0071,611 Method and apparatus for counting data accesses and instruction executions that exceed a threshold | 16 | 2003 | |
| 2005/0071,612 Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations | 12 | 2003 | |
| 2005/0071,816 Method and apparatus to autonomically count instruction execution for applications | 14 | 2003 | |
| 2005/0071,817 Method and apparatus for counting execution of specific instructions and accesses to specific data locations | 13 | 2003 | |
| 2005/0071,821 Method and apparatus to autonomically select instructions for selective counting | 15 | 2003 | |
|
|
|||
| 5,142,634 Branch prediction | 196 | 1989 | |
| 5,394,529 Branch prediction unit for high-performance processor | 98 | 1993 | |
| 5,966,538 Method and apparatus for automatically determining which compiler options should be used when compiling a computer program | 40 | 1997 | |
| 6,070,009 Method for estimating execution rates of program execution paths | 105 | 1997 | |
| 6,119,075 Method for estimating statistics of properties of interactions processed by a processor pipeline | 44 | 1997 | |
| 6,442,585 Method for scheduling contexts based on statistics of memory system interactions in a computer system | 99 | 1997 | |
| 6,631,514 Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations | 85 | 1998 | |
| 6,324,689 Mechanism for re-writing an executable having mixed code and data | 38 | 1998 | |
| 6,192,513 Mechanism for finding spare registers in binary code | 40 | 1998 | |
| 6,351,844 Method for selecting active code traces for translation in a caching dynamic translator | 142 | 1998 | |
| 6,430,741 System and method for data coverage analysis of a computer program | 54 | 1999 | |
|
|
|||
| 5,966,537 Method and apparatus for dynamically optimizing an executable computer program using input data | 98 | 1997 | |
| 6,330,662 Apparatus including a fetch unit to include branch history information to increase performance of multi-cylce pipelined branch prediction structures | 36 | 1999 | |
| 6,237,141 Method and apparatus for dynamically optimizing byte-coded programs | 42 | 1999 | |
| 6,594,820 Method and apparatus for testing a process in a computer system | 36 | 1999 | |
| 2002/0073,406 Using performance counter profiling to drive compiler optimization | 30 | 2000 | |
| 2003/0131,343 Framework for system monitoring | 40 | 2001 | |
|
|
|||
| 5,659,679 Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system | 72 | 1995 | |
| 6,134,676 Programmable hardware event monitoring method | 123 | 1998 | |
| 2002/0199,179 Method and apparatus for compiler-generated triggering of auxiliary codes | 39 | 2001 | |
| 7,181,723 Methods and apparatus for stride profiling a software application | 28 | 2003 | |
|
|
|||
| 5,212,794 Method for optimizing computer code to provide more efficient execution on computers having cache memories | 106 | 1990 | |
| 6,480,938 Efficient I-cache structure to support instructions crossing line boundaries | 43 | 2000 | |
|
|
|||
| 5,794,028 Shared branch prediction structure | 52 | 1996 | |
|
|
|||
| 5,768,500 Interrupt-based hardware support for profiling memory system performance | 155 | 1996 | |
|
|
|||
| 5,103,394 Software performance analyzer | 119 | 1989 | |
|
|
|||
| 2001/0032,305 Methods and apparatus for dual-use coprocessing/debug interface | 102 | 2001 | |
|
|
|||
| 6,026,235 System and methods for monitoring functions in natively compiled software programs | 59 | 1997 | |
|
|
|||
| 4,316,245 Apparatus and method for semaphore initialization in a multiprocessing computer system for process synchronization | 143 | 1978 | |
|
|
|||
| 6,961,925 Parallelism performance analysis based on execution trace information | 53 | 2001 | |
|
|
|||
| 5,950,003 Profile instrumentation method and profile data collection method | 72 | 1996 | |
|
|
|||
| 6,505,292 Processor including efficient fetch mechanism for L0 and L1 caches | 27 | 2002 | |
|
|
|||
| 4,291,371 I/O Request interrupt mechanism | 51 | 1979 | |
|
|
|||
| 6,374,364 Fault tolerant computing system using instruction counting | 39 | 1999 | |
|
|
|||
| 6,189,141 Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control | 122 | 1998 | |
|
|
|||
| 2003/0066,055 Profiling computer programs | 41 | 2002 | |
|
|
|||
| 6,286,132 Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program | 47 | 1999 | |
|
|
|||
| 2003/0040,955 Market monitoring architecture for detecting alert conditions | 60 | 2002 | |
|
|
|||
| 5,051,944 Computer address analyzer having a counter and memory locations each storing count value indicating occurrence of corresponding memory address | 29 | 1986 | |
|
|
|||
| 5,930,508 Method for storing and decoding instructions for a microprocessor having a plurality of function units | 65 | 1997 | |
|
|
|||
| 5,581,778 Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock | 63 | 1995 | |
|
|
|||
| 6,233,679 Method and system for branch prediction | 30 | 1999 | |
|
|
|||
| 6,243,804 Single cycle transition pipeline processing using shadow registers | 74 | 1998 | |
|
|
|||
| 6,542,985 Event counter | 34 | 1999 | |
|
|
|||
| 5,987,250 Transparent instrumentation for computer program behavior analysis | 46 | 1997 | |
Patent Citation Ranking
Maintenance Fees
| Fee | Large entity fee | small entity fee | micro entity fee | due date |
|---|---|---|---|---|
| 7.5 Year Payment | $3600.00 | $1800.00 | $900.00 | Apr 30, 2015 |
| 11.5 Year Payment | $7400.00 | $3700.00 | $1850.00 | Apr 30, 2019 |
| Fee | Large entity fee | small entity fee | micro entity fee |
|---|---|---|---|
| Surcharge - 7.5 year - Late payment within 6 months | $160.00 | $80.00 | $40.00 |
| Surcharge - 11.5 year - Late payment within 6 months | $160.00 | $80.00 | $40.00 |
| Surcharge after expiration - Late payment is unavoidable | $700.00 | $350.00 | $175.00 |
| Surcharge after expiration - Late payment is unintentional | $1,640.00 | $820.00 | $410.00 |