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

ALSO PUBLISHED AS: 20050155025
ATTORNEY / AGENT: (SPONSORED)
 

Importance

Loading Importance Indicators... loading....

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... loading....

First Claim

Related Publications

Loading Related Publications... loading....

Patent Owner(s)

Patent OwnerAddressTotal Patents
INTEL CORPORATIONSANTA CLARA, CA24199

International Classification(s)

  • [Classification Symbol]
  • [Patents Count]

Inventor(s)

Inventor Name Address # of filed Patents Total Citations
DeWitt, Jr Jimmie Earl Georgetown, TX 21 104
Levine, Frank Eliot Austin, TX 247 2756
Richardson, Christopher Michael Austin, TX 53 485
Urquhart, Robert John Austin, TX 122 1228

Cited Art

Patent Info (Count) # Cites Year
 
INTERNATIONAL BUSINESS MACHINES CORPORATION (26)
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
 
HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. (11)
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
 
SUN MICROSYSTEMS, INC. (6)
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
 
INTEL CORPORATION (4)
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
 
HEWLETT-PACKARD COMPANY (2)
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
 
ADVANCED MICRO DEVICES, INC. (1)
5,794,028 Shared branch prediction structure 52 1996
 
AGERE SYSTEMS INC. (1)
5,768,500 Interrupt-based hardware support for profiling memory system performance 155 1996
 
AGILENT TECHNOLOGIES, INC. (1)
5,103,394 Software performance analyzer 119 1989
 
ALTERA CORPORATION (1)
2001/0032,305 Methods and apparatus for dual-use coprocessing/debug interface 102 2001
 
BORLAND SOFTWARE CORPORATION (1)
6,026,235 System and methods for monitoring functions in natively compiled software programs 59 1997
 
CII-HONEYWELL BULL (1)
4,316,245 Apparatus and method for semaphore initialization in a multiprocessing computer system for process synchronization 143 1978
 
CRAY INC. (1)
6,961,925 Parallelism performance analysis based on execution trace information 53 2001
 
FUJITSU LIMITED (1)
5,950,003 Profile instrumentation method and profile data collection method 72 1996
 
GLOBALFOUNDRIES INC. (1)
6,505,292 Processor including efficient fetch mechanism for L0 and L1 caches 27 2002
 
HONEYWELL INFORMATION SYSTEMS INC. (1)
4,291,371 I/O Request interrupt mechanism 51 1979
 
HONEYWELL INTERNATIONAL INC. (1)
6,374,364 Fault tolerant computing system using instruction counting 39 1999
 
HTC CORPORATION (1)
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
 
ISIS INNOVATION LIMITED (1)
2003/0066,055 Profiling computer programs 41 2002
 
MATSUSHITA ELECTRIC INDUSTRIAL CO., LTD. (1)
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
 
NASDAQ OMX GROUP, INC., THE (1)
2003/0040,955 Market monitoring architecture for detecting alert conditions 60 2002
 
NCR CORPORATION (1)
5,051,944 Computer address analyzer having a counter and memory locations each storing count value indicating occurrence of corresponding memory address 29 1986
 
SAMSUNG ELECTRONICS CO., LTD. (1)
5,930,508 Method for storing and decoding instructions for a microprocessor having a plurality of function units 65 1997
 
SARNOFF CORPORATION (1)
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
 
TELEFONAKTIEBOLAGET LM ERICSSON (PUBL) (1)
6,233,679 Method and system for branch prediction 30 1999
 
UNGER-LUCHSINGER FAMILY TRUST, THE (1)
6,243,804 Single cycle transition pipeline processing using shadow registers 74 1998
 
UNISYS CORPORATION (1)
6,542,985 Event counter 34 1999
 
WICRESOFT CO., LTD. (1)
5,987,250 Transparent instrumentation for computer program behavior analysis 46 1997

Patent Citation Ranking

Forward Cites

Patent Info (Count) # Cites Year
 
INTERNATIONAL BUSINESS MACHINES CORPORATION (1)
8,255,884 Optimized scalar promotion with load and splat SIMD instructions 0 2008

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