US20130055033A1 - Hardware-assisted program trace collection with selectable call-signature capture - Google Patents

Hardware-assisted program trace collection with selectable call-signature capture Download PDF

Info

Publication number
US20130055033A1
US20130055033A1 US13/300,863 US201113300863A US2013055033A1 US 20130055033 A1 US20130055033 A1 US 20130055033A1 US 201113300863 A US201113300863 A US 201113300863A US 2013055033 A1 US2013055033 A1 US 2013055033A1
Authority
US
United States
Prior art keywords
program
call signature
processor
execution
signature
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/300,863
Inventor
Giles R. Frazier
David S. Levitan
Brian R. Mestan
Mauricio J. Serrano
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/214,352 external-priority patent/US8756582B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US13/300,863 priority Critical patent/US20130055033A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FRAZIER, GILES R., LEVITAN, DAVID S., MESTAN, BRIAN R., SERRANO, MAURICIO J.
Publication of US20130055033A1 publication Critical patent/US20130055033A1/en
Priority to US14/069,769 priority patent/US9189365B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Definitions

  • the present invention is related to hardware-assisted program tracing, and more specifically to a processor and method that capture a call signature when a specified root instruction is executed, and optionally when the call signature also has a specified value.
  • Run-time program tracing software provides valuable insight as to the actual patterns of execution encountered during program execution. Such information can be used to selectively optimize program code and to inform developers of actual run-time conditions. Information gathered by profiling programs that study program execution can be used by systems' processes to adapt pre-fetching and for run-time optimization of program code organization and storage.
  • BHT branch history table
  • the invention is embodied in a processor, computer system, computer program product and method that compute and collect a program call signature within the processor, when a specified root instruction is executed.
  • the processor computes the program call signature during program execution to uniquely identify program trace segments between call and return pairs.
  • the method is a method of operation of the processor computer system and the computer program product is a set of program instructions embodied in tangible form in computer readable storage media such as optical, magnetic or electrical removable or non-removable memory that interact with the processor to collect program trace information.
  • the processor includes a root instruction register that is programmed with a root instruction address. When the root instruction is about to be executed, control logic within the processor captures the call signature in a call signature register.
  • the processor may have only a single register for storing the call signature, or multiple storage locations that can store multiple different call signatures.
  • Program tracing software collects branch history information commencing at the root instruction, or at the root instruction only when the call signature matches a call signature stored in the call signature register, or one of the multiple call signature registers, which may be determined based on a selectable operating mode of the processor.
  • FIG. 1 is a block diagram illustrating a processing system according to an embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating a processor according to an embodiment of the present invention.
  • FIG. 3 is a diagram illustrating registers within PMU 43 of the processor depicted in FIG. 2 in accordance with an embodiment of the present invention.
  • FIG. 4 is a flow chart depicting a method in accordance with an embodiment of the present invention.
  • FIG. 5 is a flow chart depicting a method in accordance with an embodiment of the present invention.
  • FIG. 6 is a flow chart depicting a method in accordance with another embodiment of the present invention.
  • FIG. 7 is a flow chart depicting a method in accordance with another embodiment of the present invention.
  • the present invention relates to processors, methods and computer programs for tracing program execution using hardware-assisted program trace collection.
  • the processor includes a register that is programmed with the address of a specified root instruction, and commences capture of branch history information once the root instruction is encountered.
  • the processor also computes a signature that uniquely describes the subroutine call and return history and the value of the signature is captured when the root instruction is executed, in order to identify the sequence of function calls and returns that led to the root instruction.
  • the processor may include a selectable operating mode that governs how capture of the signature is performed. In one operating mode, a program call signature is captured every time the root instruction is executed.
  • the processor waits for the root instruction to be executed again, and subsequently the taken branches are added to a buffer that stores the trace history.
  • the process terminates and software is signaled, e.g., by an interrupt, and reads the branch history that has been collected.
  • the processor waits until the root instruction is executed and the program call signature matches a particular value before adding the taken branches subsequent to the root instruction to the buffer and then interrupting the program tracing software.
  • the depicted computer system includes a workstation 10 A coupled to a hosting server 10 B.
  • the depicted computer system configuration is only provided as an illustration of one possible processing system configuration, and processing systems in accordance with other embodiments of the present invention are within the scope of the present invention.
  • processors according to the present invention may be employed in either or both of workstation computer system 10 A and/or hosting server 10 B, as the present invention may be used to profile program code both in small-scale desktop/notebook computer systems, as well as other intelligent personal devices such as smart phones and tablets, and in large-scale system such as a hosting server 10 B designed to execute multiple operating system images and applications, such as systems that provide cloud computing services.
  • a processor (CPU) 11 A is coupled to a memory 12 A, which contains program instructions implementing programs for interacting with processor 11 A to initialize hardware trace capture mechanisms within processor 11 A and to gather program trace information from processor 11 A over iterations of execution of program code that is being profiled, or traced for debugging purposes, etc.
  • the evaluating/profiling software may be executed from a memory 12 B by a processor 11 B in hosting server 10 B and interact with processor 11 A in workstation computer 10 A, may be executed by workstation computer 10 A to interact with processor 11 B in hosting server or the profiling/debugging program may be executed entirely within a virtualized environment provided by hosting server 10 B, as long as access to processor 11 B is provided to initialize and manage the hardware trace capture facilities of the present invention.
  • Processor 11 A in workstation computer 10 A is coupled to a storage interface 13 , which couples processor 11 A and memory 12 A to storage devices such as hard disc drive 15 and an optical drive 14 .
  • Workstation computer 10 A is coupled to hosting server 10 B via a network interface 18 , which may be a wired or wireless interface.
  • Embodiments of the invention include computer program products that interact with the hardware facilities of the present invention, and are stored in memory 12 A as well as stored on tangible media such as a CD-ROM 16 that may be inserted into optical drive 14 to transfer the profiling/debugging software, as well as other software components to memory 12 A for execution by processor 11 A, or in memory 12 B for execution by processor 11 B.
  • Similar storage devices and interfaces may be provided within hosting server 10 B for use in storing and retrieving program code in accordance with an embodiment of the invention.
  • the illustrated processing system also includes input/output (I/O) interfaces and devices 19 such as mice and keyboards for receiving user input and graphical displays for displaying information, such as user interfaces for controlling and examining the results of test code execution within test platform 20 .
  • I/O input/output
  • FIG. 1 is used to provide an illustration of a system for implementing and interacting with embodiments of the present invention, it is understood that computer systems and programs in accordance with an embodiment of the present invention may be embodied in another general-purpose or special-purpose computer system that does not include the architectural features shown in FIG. 1 .
  • Core 20 includes an instruction fetch unit (IFU) 22 that fetches one or more instruction streams from cache or system memory and presents the instruction stream(s) to an instruction decode unit 24 .
  • IFU instruction fetch unit
  • a global dispatch unit 25 dispatches the decoded instructions to a number of internal processor pipelines.
  • the processor pipelines each include a register mapper 26 , one of issue queues 27 A- 27 D, and an execution unit provided by branch execution unit (BXU) 28 , condition result unit (CRU) 29 , fixed-point unit load-store unit (FXU/LSU) 30 or floating point units (FPUs) 31 A- 31 B.
  • Registers such as counter register (CTR) 23 A, condition register (CR) 23 B general-purpose registers (GPR) 23 D, and floating-point result registers (FPR) 23 C provide locations for results of operations performed by the corresponding execution unit(s).
  • a global completion table (GCT) 21 provides an indication of pending operations that is marked as completed when the results of an instruction are transferred to the corresponding one of result registers 23 A- 23 D.
  • Register mappers 26 allocate storage in the various register sets so that concurrent execution of program code can be supported by the various pipelines.
  • FXU/LSU 30 is coupled to a data cache 44 that provides for loading and storing of data values in memory that are needed or modified by the pipelines in core 20 .
  • Data cache 44 is coupled to one or more translation look-aside buffers (TLB) 45 that map real or virtual addresses in data cache 44 to addresses in an external memory space.
  • TLB translation look-aside buffers
  • Processor core 20 includes a performance monitoring unit (PMU) 40 that, among other functions, maintains a branch history table 32 that collects program trace information.
  • performance monitoring unit (PMU) 40 also includes a signature generator 49 that computes a program call signature at each function call and return, for use in identifying a current execution path of the program code being executed by processor core 20 .
  • the program call signature generating function is reversible and based upon the program instruction address of the call instruction, so that the current value of the program call signature, also referred to herein as the working call signature, is modified at execution of the call instruction, and then the modification is undone when the corresponding return instruction is executed.
  • the address used is the program instruction address after the call instruction, i.e., the return address to which the corresponding return instruction directs execution.
  • the call address or another related program instruction address could be used instead. Therefore, during a sequence of nested calls corresponding to a particular program execution path will have a signature determined from the program instruction addresses of the call instructions, but once execution has returned to the top level, the working call signature will be restored to its original value.
  • An example of such a call signature computation function is described in the above-incorporated parent U.S. Patent Application and is also described below for convenience.
  • a signature generator unit 49 within PMU 40 computes and stores the working call signature (WSIG) according to the following two hashing operations.
  • the fixed amount S determines how many positions to rotate the current value of WSIG left and then the return address is rotated right by two positions and combined in a logical XOR operation with the rotated WSIG:
  • a mode selected by a MODE field within TMSCR 48 determines whether RSIG is used to qualify triggering of program trace history capture.
  • trace capture begins when the root instruction address stored in ROOT 47 is reached.
  • the RSIG field in CSIG 46 is also set to the current value of WSIG when the root instruction address stored in ROOT 47 is reached.
  • trace capture begins when the WSIG is equal to RSIG and the root instruction address stored in ROOT 47 is reached.
  • Other operating modes or alternative embodiments include populating a buffer 43 with multiple values of RSIG that are captured as the root instruction address stored in ROOT 47 is reached.
  • TMSCR 48 also includes a run length RLEN field that is set allow the program to reach a steady-state operating condition before beginning the trace identification process and to limit the number of instructions executed before the tracing process terminates in case the root instruction is never reached, or is never reached with the particular RSIG value after RSIG has been set.
  • TMSCR 48 also includes a flag TC.
  • the TC flag specifies whether the BHT is to be filled with the taken branches on the program path for when the branch instruction at the root address was taken or to be filled with the taken branches on the program path for when the branch instruction at the root address was not taken.
  • the tracing program sets ROOT 47 to a root instruction address at which the processor will capture one or more RSIG values (step 50 ).
  • ROOT 47 is generally set to the address of a particular branch instruction at the start of an execution path that the tracing program is examining, e.g., for debugging, verifying or profiling.
  • the RLEN field in TMSCR 48 is set to a run length that should be long enough to allow the program to reach a steady-state operating condition after initialization and to subsequently reach the instruction specified in ROOT 47 (step 51 ).
  • the TC flag in TMSCR 52 is also set (step 52 ) to capture the desired program path after the root instruction when the root instruction is a branch, and mode field MODE is set to zero to select the operating mode that triggers capture of RSIG when the instruction specified by ROOT 47 is executed (step 53 ).
  • the program being analyzed is run (step 54 ) and when an interrupt is received (decision 55 ), CSIG 46 is read to obtain the captured call signature (step 56 ). If more call signatures are needed at the instruction specified by ROOT 47 (decision 57 ), then steps 51 - 57 are repeated to capture additional signatures. For example, in embodiments of the invention that capture multiple RSIG values in buffers/counters 43 , steps 51 - 57 may only need to be executed once.
  • FIG. 5 a further method of operation of the tracing program in accordance with an embodiment of the present invention is illustrated in a flowchart.
  • the method depicted in FIG. 5 is generally executed after applying the method depicted in FIG. 4 , but there are other methods of obtaining RSIG values, such as computing them from the program code, so it is not a requirement that the method depicted in FIG. 4 be used to obtain the RSIG value used in the method of FIG. 5 .
  • the tracing program sets ROOT 47 to a root instruction address at which the processor will start collecting branch history information and sets the RSIG field to a particular program call signature, such as a signature captured by the method of FIG. 4 (step 60 ).
  • the RLEN field in TMSCR 48 is set to a run length that should be long enough to capture the desired program path after the root instruction when the root instruction is a branch and to subsequently reach the instruction specified in ROOT 47 with the particular signature (step 61 ).
  • the TC flag in TMSCR 52 is also set (step 62 ) to capture the desired program path after the root instruction when the root instruction is a branch, and mode field MODE is set to “ 1 ” to select the operating mode that starts capturing program trace information when when the instruction specified by ROOT 47 is executed and WSIG is equal to RSIG (step 63 ).
  • the program being analyzed is run (step 64 ) and when an interrupt is received (decision 65 ), the branch history table 32 is read to obtain the program trace information (step 66 ). If more traces are needed with different RSIG values or a root instructions, the process depicted in FIG. 5 is repeated.
  • a method of operation of a processor in accordance with an embodiment of the present invention is illustrated in a flowchart.
  • the method is not performed.
  • trace information is gathered (step 71 ) and until the number of instructions specified by the RLEN field in TMSCR 48 are executed (decision 72 ), PMU 40 continues gathering trace information.
  • the number of instructions specified by RLEN have been executed (decision 72 )
  • the RSIG field in CSIG 46 is set to the current WSIG value (step 75 ).
  • FIG. 7 an alternative method of operation of a processor in accordance with an embodiment of the present invention is illustrated in a flowchart.
  • the method depicted in FIG. 7 is an alternative to the method depicted in FIG. 4 , which uses software to determine the multiple call signature values and determine the most common call signature, etc.
  • the method depicted in FIG. 7 is a method of operation of a processor that includes multiple storage locations for storing multiple RSIG values that occur at a particular root instruction, and thus provides some of the functionality provided by software methods such as FIG. 4 , in an alternative hardware implementation. Until call signature capture is not enabled (decision 80 ), the method is not performed.
  • call signature capture is enabled (decision 80 ) then if mode 0 is selected (decision 81 ), once the root instruction is executed (decision 82 ), if the value of the WSIG field is already in the buffer (decision 83 ), until the number of instructions executed has reached the value of RLEN (decision 85 ), execution proceeds. If the value of WSIG is not in the buffer (decision 83 ) it is added to the buffer (step 84 ). Once the number of instructions executed has reached the value of RLEN (decision 85 ), the taken branches are output to the program trace buffer (step 86 ) and the tracing software is interrupted (step 90 ).
  • step 81 If mode 1 is selected (decision 81 ), program trace information is gathered (step 87 ) and once the number of instructions executed has reached the value of RLEN (decision 88 ) and then the instruction specified by ROOT 47 is executed with the value of WSIG equal to the value set in RSIG (decision 89 ), the taken branches are output to the program trace buffer (step 86 ) and the tracing software is interrupted (step 90 ).
  • portions of the present invention may be embodied in a computer program product, which may include firmware, an image in system memory or another memory/cache, or stored on a fixed or re-writable media such as an optical disc having computer-readable code stored thereon. Any combination of one or more computer readable medium(s) may store a program in accordance with an embodiment of the invention.
  • the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
  • the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
  • a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

Abstract

Hardware-assisted program tracing is facilitated by a processor that includes a root instruction address register, a program trace signature computation unit and a call signature register. When a program instruction having an address matching the root instruction address register is executed, a program trace signature is captured in the call signature register and capture of branch history is commenced. By accumulating different values of the call signature register, for example in response to an interrupt generated when the root instruction is executed, software that performs program tracing can obtain signatures of all of the multiple execution paths that lead to the root instruction, which is also specified by software in order to set different root instructions for program tracing. In an alternative implementation, a storage for multiple call signatures is provided in the processor and read at once by the software.

Description

  • This U.S. Patent Application is a Continuation-in-Part of, and thus claims priority under 35 U.S.C. 120 to, U.S. patent application Ser. No. 13/214,352 filed on Aug. 22, 2011, the disclosure of which is incorporated herein by reference. The above-incorporated U.S. Patent Application has at least one inventor in common with the present U.S. Patent Application and is assigned to the same Assignee.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention is related to hardware-assisted program tracing, and more specifically to a processor and method that capture a call signature when a specified root instruction is executed, and optionally when the call signature also has a specified value.
  • 2. Description of Related Art
  • Run-time program tracing software provides valuable insight as to the actual patterns of execution encountered during program execution. Such information can be used to selectively optimize program code and to inform developers of actual run-time conditions. Information gathered by profiling programs that study program execution can be used by systems' processes to adapt pre-fetching and for run-time optimization of program code organization and storage.
  • Hardware mechanisms have been used to assist in program tracing, such a branch history table (BHT) storage. The function of the BHT is to identify the program path leading up to an event, such as an interrupt, by including the addresses of the most-recent branch instructions for which the branch was taken leading up to the event. Software subsequently reads the BHT in order to identify the program path leading up to the event.
  • However, specific hardware mechanisms to support program tracing along specific program paths are not generally present in today's processors.
  • Therefore, it would be desirable to provide a processor and software that can cooperate to facilitate program tracing and profiling.
  • BRIEF SUMMARY OF THE INVENTION
  • The invention is embodied in a processor, computer system, computer program product and method that compute and collect a program call signature within the processor, when a specified root instruction is executed. The processor computes the program call signature during program execution to uniquely identify program trace segments between call and return pairs. The method is a method of operation of the processor computer system and the computer program product is a set of program instructions embodied in tangible form in computer readable storage media such as optical, magnetic or electrical removable or non-removable memory that interact with the processor to collect program trace information.
  • The processor includes a root instruction register that is programmed with a root instruction address. When the root instruction is about to be executed, control logic within the processor captures the call signature in a call signature register. The processor may have only a single register for storing the call signature, or multiple storage locations that can store multiple different call signatures. Program tracing software collects branch history information commencing at the root instruction, or at the root instruction only when the call signature matches a call signature stored in the call signature register, or one of the multiple call signature registers, which may be determined based on a selectable operating mode of the processor.
  • The foregoing and other objectives, features, and advantages of the invention will be apparent from the following, more particular, description of the preferred embodiment of the invention, as illustrated in the accompanying drawings.
  • BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING
  • The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives, and advantages thereof, will best be understood by reference to the following detailed description of the invention when read in conjunction with the accompanying Figures, wherein like reference numerals indicate like components, and:
  • FIG. 1 is a block diagram illustrating a processing system according to an embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating a processor according to an embodiment of the present invention.
  • FIG. 3 is a diagram illustrating registers within PMU 43 of the processor depicted in FIG. 2 in accordance with an embodiment of the present invention.
  • FIG. 4 is a flow chart depicting a method in accordance with an embodiment of the present invention.
  • FIG. 5 is a flow chart depicting a method in accordance with an embodiment of the present invention.
  • FIG. 6 is a flow chart depicting a method in accordance with another embodiment of the present invention.
  • FIG. 7 is a flow chart depicting a method in accordance with another embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • The present invention relates to processors, methods and computer programs for tracing program execution using hardware-assisted program trace collection. The processor includes a register that is programmed with the address of a specified root instruction, and commences capture of branch history information once the root instruction is encountered. The processor also computes a signature that uniquely describes the subroutine call and return history and the value of the signature is captured when the root instruction is executed, in order to identify the sequence of function calls and returns that led to the root instruction. The processor may include a selectable operating mode that governs how capture of the signature is performed. In one operating mode, a program call signature is captured every time the root instruction is executed. After execution has proceeded long enough for the program to reach a steady-state condition, the processor waits for the root instruction to be executed again, and subsequently the taken branches are added to a buffer that stores the trace history. When the buffer fills, the process terminates and software is signaled, e.g., by an interrupt, and reads the branch history that has been collected. In another operating mode, the processor waits until the root instruction is executed and the program call signature matches a particular value before adding the taken branches subsequent to the root instruction to the buffer and then interrupting the program tracing software.
  • Referring now to FIG. 1, a system in accordance with an embodiment of the present invention is shown. The depicted computer system includes a workstation 10A coupled to a hosting server 10B. The depicted computer system configuration is only provided as an illustration of one possible processing system configuration, and processing systems in accordance with other embodiments of the present invention are within the scope of the present invention. In particular, techniques and processors according to the present invention may be employed in either or both of workstation computer system 10A and/or hosting server 10B, as the present invention may be used to profile program code both in small-scale desktop/notebook computer systems, as well as other intelligent personal devices such as smart phones and tablets, and in large-scale system such as a hosting server 10B designed to execute multiple operating system images and applications, such as systems that provide cloud computing services. Within workstation computer, a processor (CPU) 11A is coupled to a memory 12A, which contains program instructions implementing programs for interacting with processor 11A to initialize hardware trace capture mechanisms within processor 11A and to gather program trace information from processor 11A over iterations of execution of program code that is being profiled, or traced for debugging purposes, etc. Alternatively, the evaluating/profiling software may be executed from a memory 12B by a processor 11B in hosting server 10B and interact with processor 11A in workstation computer 10A, may be executed by workstation computer 10A to interact with processor 11B in hosting server or the profiling/debugging program may be executed entirely within a virtualized environment provided by hosting server 10B, as long as access to processor 11B is provided to initialize and manage the hardware trace capture facilities of the present invention.
  • Processor 11A in workstation computer 10A is coupled to a storage interface 13, which couples processor 11A and memory 12A to storage devices such as hard disc drive 15 and an optical drive 14. Workstation computer 10A is coupled to hosting server 10B via a network interface 18, which may be a wired or wireless interface. Embodiments of the invention include computer program products that interact with the hardware facilities of the present invention, and are stored in memory 12A as well as stored on tangible media such as a CD-ROM 16 that may be inserted into optical drive 14 to transfer the profiling/debugging software, as well as other software components to memory 12A for execution by processor 11A, or in memory 12B for execution by processor 11B. Similar storage devices and interfaces may be provided within hosting server 10B for use in storing and retrieving program code in accordance with an embodiment of the invention. The illustrated processing system also includes input/output (I/O) interfaces and devices 19 such as mice and keyboards for receiving user input and graphical displays for displaying information, such as user interfaces for controlling and examining the results of test code execution within test platform 20. While the system of FIG. 1 is used to provide an illustration of a system for implementing and interacting with embodiments of the present invention, it is understood that computer systems and programs in accordance with an embodiment of the present invention may be embodied in another general-purpose or special-purpose computer system that does not include the architectural features shown in FIG. 1.
  • Referring now to FIG. 2, details of a processor core 20 that may be provided in one or both of processors 11A and 11B of FIG. 1 are illustrated in accordance with an embodiment of the present invention. Core 20 includes an instruction fetch unit (IFU) 22 that fetches one or more instruction streams from cache or system memory and presents the instruction stream(s) to an instruction decode unit 24. A global dispatch unit 25 dispatches the decoded instructions to a number of internal processor pipelines. The processor pipelines each include a register mapper 26, one of issue queues 27A-27D, and an execution unit provided by branch execution unit (BXU) 28, condition result unit (CRU) 29, fixed-point unit load-store unit (FXU/LSU) 30 or floating point units (FPUs) 31A-31B. Registers such as counter register (CTR) 23A, condition register (CR) 23B general-purpose registers (GPR) 23D, and floating-point result registers (FPR) 23C provide locations for results of operations performed by the corresponding execution unit(s). A global completion table (GCT) 21 provides an indication of pending operations that is marked as completed when the results of an instruction are transferred to the corresponding one of result registers 23A-23D. Register mappers 26 allocate storage in the various register sets so that concurrent execution of program code can be supported by the various pipelines. FXU/LSU 30 is coupled to a data cache 44 that provides for loading and storing of data values in memory that are needed or modified by the pipelines in core 20. Data cache 44 is coupled to one or more translation look-aside buffers (TLB) 45 that map real or virtual addresses in data cache 44 to addresses in an external memory space.
  • Processor core 20 includes a performance monitoring unit (PMU) 40 that, among other functions, maintains a branch history table 32 that collects program trace information. In accordance with an embodiment of the present invention, performance monitoring unit (PMU) 40 also includes a signature generator 49 that computes a program call signature at each function call and return, for use in identifying a current execution path of the program code being executed by processor core 20. The program call signature generating function is reversible and based upon the program instruction address of the call instruction, so that the current value of the program call signature, also referred to herein as the working call signature, is modified at execution of the call instruction, and then the modification is undone when the corresponding return instruction is executed. In the particular embodiment of the invention described herein, the address used is the program instruction address after the call instruction, i.e., the return address to which the corresponding return instruction directs execution. However, the call address or another related program instruction address could be used instead. Therefore, during a sequence of nested calls corresponding to a particular program execution path will have a signature determined from the program instruction addresses of the call instructions, but once execution has returned to the top level, the working call signature will be restored to its original value. An example of such a call signature computation function is described in the above-incorporated parent U.S. Patent Application and is also described below for convenience.
  • A signature generator unit 49 within PMU 40 computes and stores the working call signature (WSIG) according to the following two hashing operations. On CALL instructions, the fixed amount S determines how many positions to rotate the current value of WSIG left and then the return address is rotated right by two positions and combined in a logical XOR operation with the rotated WSIG:
  • (Hash) WSIG=ROTATE_LEFT (WSIG, S) XOR (RETURN_ADDRESS>>2)
  • Upon execution of a return instruction, the value of WSIG un-hashed by again combining WSIG with the return address shifted right by two in a logical-XOR operation, which will reverse a previously applied XOR of the same return address and then fixed amount S is used to rotate the result right by S positions, according to the following un-hash operation:
    (un-Hash) WSIG=ROTATE RIGHT (WSIG XOR (RETURN ADDRESS>>2), S).
    Working call signature is stored in a field of a call signature register (CSIG) 46. PMU 40 also includes a root instruction register (ROOT) 47 and a trace mode status and control register (TMSCR) 48. ROOT 47 is programmed by program tracing software to trigger capture of WSIG when the instruction address stored in ROOT 47 is reached, in order to obtain a reference call signature RSIG, which is stored in another field of CSIG 46.
  • Referring now to FIG. 3, details of the contents of registers within PMU 40 are shown. A mode selected by a MODE field within TMSCR 48 determines whether RSIG is used to qualify triggering of program trace history capture. In a first operating mode, trace capture begins when the root instruction address stored in ROOT 47 is reached. The RSIG field in CSIG 46 is also set to the current value of WSIG when the root instruction address stored in ROOT 47 is reached. In a second operating mode, trace capture begins when the WSIG is equal to RSIG and the root instruction address stored in ROOT 47 is reached. Other operating modes or alternative embodiments include populating a buffer 43 with multiple values of RSIG that are captured as the root instruction address stored in ROOT 47 is reached. Additionally, one or more counters to store a count of the number of times the root instruction was executed with a particular WSIG value can be included in buffer/counters 43. TMSCR 48 also includes a run length RLEN field that is set allow the program to reach a steady-state operating condition before beginning the trace identification process and to limit the number of instructions executed before the tracing process terminates in case the root instruction is never reached, or is never reached with the particular RSIG value after RSIG has been set. TMSCR 48 also includes a flag TC. When the root instruction is a branch instruction, the TC flag specifies whether the BHT is to be filled with the taken branches on the program path for when the branch instruction at the root address was taken or to be filled with the taken branches on the program path for when the branch instruction at the root address was not taken.
  • Referring now to FIG. 4, a method of operation of a tracing program in accordance with an embodiment of the present invention is illustrated in a flowchart. First, the tracing program sets ROOT 47 to a root instruction address at which the processor will capture one or more RSIG values (step 50). ROOT 47 is generally set to the address of a particular branch instruction at the start of an execution path that the tracing program is examining, e.g., for debugging, verifying or profiling. The RLEN field in TMSCR 48 is set to a run length that should be long enough to allow the program to reach a steady-state operating condition after initialization and to subsequently reach the instruction specified in ROOT 47 (step 51). The TC flag in TMSCR 52 is also set (step 52) to capture the desired program path after the root instruction when the root instruction is a branch, and mode field MODE is set to zero to select the operating mode that triggers capture of RSIG when the instruction specified by ROOT 47 is executed (step 53). The program being analyzed is run (step 54) and when an interrupt is received (decision 55), CSIG 46 is read to obtain the captured call signature (step 56). If more call signatures are needed at the instruction specified by ROOT 47 (decision 57), then steps 51-57 are repeated to capture additional signatures. For example, in embodiments of the invention that capture multiple RSIG values in buffers/counters 43, steps 51-57 may only need to be executed once.
  • Referring now to FIG. 5, a further method of operation of the tracing program in accordance with an embodiment of the present invention is illustrated in a flowchart. The method depicted in FIG. 5 is generally executed after applying the method depicted in FIG. 4, but there are other methods of obtaining RSIG values, such as computing them from the program code, so it is not a requirement that the method depicted in FIG. 4 be used to obtain the RSIG value used in the method of FIG. 5. First, the tracing program sets ROOT 47 to a root instruction address at which the processor will start collecting branch history information and sets the RSIG field to a particular program call signature, such as a signature captured by the method of FIG. 4 (step 60). The RLEN field in TMSCR 48 is set to a run length that should be long enough to capture the desired program path after the root instruction when the root instruction is a branch and to subsequently reach the instruction specified in ROOT 47 with the particular signature (step 61). The TC flag in TMSCR 52 is also set (step 62) to capture the desired program path after the root instruction when the root instruction is a branch, and mode field MODE is set to “1” to select the operating mode that starts capturing program trace information when when the instruction specified by ROOT 47 is executed and WSIG is equal to RSIG (step 63). The program being analyzed is run (step 64) and when an interrupt is received (decision 65), the branch history table 32 is read to obtain the program trace information (step 66). If more traces are needed with different RSIG values or a root instructions, the process depicted in FIG. 5 is repeated.
  • Referring now to FIG. 6, a method of operation of a processor in accordance with an embodiment of the present invention is illustrated in a flowchart. Until call signature capture is not enabled (decision 70), the method is not performed. Once call signature capture is enabled (decision 70), then trace information is gathered (step 71) and until the number of instructions specified by the RLEN field in TMSCR 48 are executed (decision 72), PMU 40 continues gathering trace information. Once the number of instructions specified by RLEN have been executed (decision 72), if mode 0 is selected (decision 73), once the root instruction is executed (decision 74), then the RSIG field in CSIG 46 is set to the current WSIG value (step 75). Otherwise, if mode 1 is selected (decision 73), once the root instruction is executed with a WSIG equal to the RSIG value (decision 77), then the taken branches are output to a buffer that can be read by the tracing software (step 76).
  • Referring now to FIG. 7, an alternative method of operation of a processor in accordance with an embodiment of the present invention is illustrated in a flowchart. The method depicted in FIG. 7 is an alternative to the method depicted in FIG. 4, which uses software to determine the multiple call signature values and determine the most common call signature, etc. The method depicted in FIG. 7 is a method of operation of a processor that includes multiple storage locations for storing multiple RSIG values that occur at a particular root instruction, and thus provides some of the functionality provided by software methods such as FIG. 4, in an alternative hardware implementation. Until call signature capture is not enabled (decision 80), the method is not performed. Once call signature capture is enabled (decision 80), then if mode 0 is selected (decision 81), once the root instruction is executed (decision 82), if the value of the WSIG field is already in the buffer (decision 83), until the number of instructions executed has reached the value of RLEN (decision 85), execution proceeds. If the value of WSIG is not in the buffer (decision 83) it is added to the buffer (step 84). Once the number of instructions executed has reached the value of RLEN (decision 85), the taken branches are output to the program trace buffer (step 86) and the tracing software is interrupted (step 90). If mode 1 is selected (decision 81), program trace information is gathered (step 87) and once the number of instructions executed has reached the value of RLEN (decision 88) and then the instruction specified by ROOT 47 is executed with the value of WSIG equal to the value set in RSIG (decision 89), the taken branches are output to the program trace buffer (step 86) and the tracing software is interrupted (step 90).
  • As noted above, portions of the present invention may be embodied in a computer program product, which may include firmware, an image in system memory or another memory/cache, or stored on a fixed or re-writable media such as an optical disc having computer-readable code stored thereon. Any combination of one or more computer readable medium(s) may store a program in accordance with an embodiment of the invention. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
  • In the context of the present application, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form, and details may be made therein without departing from the spirit and scope of the invention.

Claims (24)

1. A method of collecting program trace information of program code executed by a processor, the method comprising:
computing a program call signature at program calls and returns within the program code that uniquely identifies a call and return history extending to a currently executing instruction;
specifying a root instruction at which to collect the program call signature by storing an address of the root instruction in a root instruction register of the processor;
during execution of the program code, detecting that the execution has reached the root instruction; and
responsive to detecting that the execution has reached the root instruction, storing a current value of the program call signature in a call signature register and commencing capture of program trace information in a branch history buffer as execution of the program code proceeds.
2. The method of claim 1, further comprising specifying a particular value of the program call signature at which to commence capture of program trace information, wherein the detecting further detects that a current value of the program call signature matches the particular value of the program call signature when the execution has reached the root instruction, and wherein the commencing capture of program trace information is performed responsive to detecting that the execution has reached the root instruction and that the current value of the program call signature matches the particular value of the program call signature.
3. The method of claim 2, further comprising selecting a trace capture mode of the processor, and wherein, in a first operating mode, the commencing capture is performed responsive to detecting that the execution has reached the root instruction and that the current value of the program call signature matches the particular value of the program call signature, and wherein in a second operating mode, the commencing capture is performed responsive to detecting that the execution has reached the root instruction independent of the current value of the program call signature.
4. The method of claim 1, further comprising responsive to a subsequent execution of the root instruction, interrupting the processor, whereby results of the capturing can be obtained from the branch history buffer.
5. The method of claim 1, wherein the storing stores the current value of the program call signature in one of multiple call signature registers forming a call signature buffer, wherein the storing populates the call signature buffer at multiple occurrences of the detecting having detected that the execution has reached the root instruction.
6. The method of claim 1, wherein the computing the program call signature comprises hashing addresses of the program calls with current values of the program call signature as the program calls are encountered and un-hashing the current values of the program call signature with addresses of the program calls when the corresponding program returns are encountered.
7. A processor, comprising:
an instruction fetch unit for fetching program instructions for execution by functional units within the processor;
an instruction decoder for decoding the program instructions fetched by the instruction fetch unit;
an instruction dispatch unit for dispatching the decoded program instructions to the functional units;
a computation unit for computing a program call signature at calls and returns encountered in the program instructions, wherein the program call signature uniquely identifies a call and return history extending to a currently executing instruction;
a root instruction register for storing an address of a specified a root instruction at which to collect the program call signature; and
control logic that, responsive to execution reaching the root instruction, stores the program call signature in a call signature register of the processor and triggers capture of program trace information in a branch history buffer of the processor.
8. The processor of claim 7, wherein the control logic further detects when a current value of the program call signature matches a value of the program call signature stored in the call signature register, and commences triggers capture of the program trace information when the current value of the program call signature matches the value of the program call signature stored in the call signature register and the execution has reached the root instruction.
9. The processor of claim 8, wherein the control logic includes a control register for selecting an operating mode the processor, and wherein the control logic, responsive to selecting a first operating mode of the processor, and further responsive to detecting that the execution has reached the root instruction and that the current value of the program call signature matches the value of the program call signature stored in the call signature register, stores the current value of the call signature register and triggers the capture of the program trace information, and wherein the control logic, responsive to selecting a second operating mode of the processor, stores the current value of the call signature register and triggers the capture of the program trace information when the execution has reached the root instruction independent of the current value of the program call signature.
10. The processor of claim 7, wherein the control logic generates an interrupt responsive to a subsequent execution of the root instruction to signal a program to collect the program call signature and program trace information from the processor.
11. The processor of claim 7, wherein the control logic stores the current value of the program call signature in one of multiple call signature registers forming a call signature buffer and populates the call signature buffer at multiple occurrences of the execution having reached the root instruction.
12. The processor of claim 7, wherein the computation unit computes the program call signature by hashing addresses of the program calls with current values of the program call signature as the program calls are encountered and un-hashing the current values of the program call signature with addresses of the program calls when the corresponding program returns are encountered.
13. A computer system comprising:
a processor for executing program instructions, wherein the processor computes a program call signature at calls and returns encountered in the program instructions, wherein the program call signature uniquely identifies a call and return history extending to a currently executing instruction, and wherein the processor stores the program call signature in a call signature register of the processor and triggers capture of program trace information in a branch history buffer of the processor, when an address of the currently executing instruction matches a root instruction register of the processor; and
a memory coupled to the processor for storing the program instructions, wherein the program instructions are program instructions for tracing execution of program code by the processor wherein the program instructions comprising program instructions for specifying the root instruction at which to collect the program trace signature by storing an address of the root instruction in a root instruction register of the processor, and collecting multiple different values of the program call signature during execution of the program code to obtain a complete execution trace for the program code by reading the call signature register of the processor.
14. The computer system of claim 13, wherein the processor further detects when a current value of the program call signature matches a value of the program call signature stored in the call signature register, and commences triggers capture of the program trace information when the current value of the program call signature matches the value of the program call signature stored in the call signature register and the execution has reached the root instruction.
15. The computer system of claim 14, wherein the processor includes a control register for selecting an operating mode the processor, and wherein the processor, responsive to selecting a first operating mode, and further responsive to detecting that the execution has reached the root instruction and that the current value of the program call signature matches the value of the program call signature stored in the call signature register, stores the current value of the call signature register and triggers the capture of the program trace information, and wherein the processor, responsive to selecting a second operating mode, stores the current value of the call signature register and triggers the capture of the program trace information when the execution has reached the root instruction independent of the current value of the program call signature.
16. The computer system of claim 13, wherein the processor generates an interrupt responsive to a subsequent execution of the root instruction to signal a program to collect the program call signature and program trace information from the processor.
17. The computer system of claim 13, wherein the processor stores the current value of the program call signature in one of multiple call signature registers forming a call signature buffer and populates the call signature buffer at multiple occurrences of the execution having reached the root instruction.
18. The computer system of claim 13, wherein the computation unit computes the program call signature by hashing addresses of the program calls with current values of the program call signature as the program calls are encountered and un-hashing the current values of the program call signature with addresses of the program calls when the corresponding program returns are encountered.
19. A computer program product comprising computer-readable storage media encoding program instructions for execution by a general-purpose computer system, wherein the program instructions are program instructions for tracing execution of program code by a processor, wherein the program instructions comprising program instructions for:
specifying a root instruction at which to collect the program call signature by storing an address of the root instruction in a root instruction register of the processor, wherein the program call signature uniquely identifies a call and return history extending to a currently executing instruction; and
collecting multiple different values of the program call signature and corresponding program trace information during execution of the program code to obtain a program execution trace for the program code by reading a call signature register and branch history buffer of the processor.
20. The computer program product of claim 19, wherein the program instructions for collecting reads the call signature register after the program call signature has been captured for multiple occurrences of the capturing, in order to obtain the multiple different values of the program call signature.
21. The computer program product of claim 20, wherein the program instructions for collecting form part of an interrupt handler that are executed responsive to the processor capturing a value of the program call signature.
22. The computer program product of claim 19, wherein the program instructions for collecting collect multiple difference values of the program call signature from a storage within the processor.
23. The computer program product of claim 19, further comprising program instructions for selecting a particular operating mode of the processor, and wherein the processor, responsive to selecting a first operating mode of the processor, and further responsive to detecting that execution of the program code has reached the root instruction and that a current value of the program call signature within the processor matches a value of the program call signature stored in the call signature register, stores the current value of the call signature register and triggers the capture of the program trace information, and wherein the processor, responsive to selecting a second operating mode of the processor, stores the current value of the call signature register and triggers the capture of the program trace information when the execution of the program code has reached the root instruction independent of the current value of the program call signature.
24. The computer program product of claim 19, wherein the program call signature is a hash of addresses of the program calls with current values of the program call signature as the program calls are encountered and an un-hash of the current values of the program call signature with addresses of the program calls when the corresponding program returns are encountered.
US13/300,863 2011-08-22 2011-11-21 Hardware-assisted program trace collection with selectable call-signature capture Abandoned US20130055033A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/300,863 US20130055033A1 (en) 2011-08-22 2011-11-21 Hardware-assisted program trace collection with selectable call-signature capture
US14/069,769 US9189365B2 (en) 2011-08-22 2013-11-01 Hardware-assisted program trace collection with selectable call-signature capture

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/214,352 US8756582B2 (en) 2011-08-22 2011-08-22 Tracking a programs calling context using a hybrid code signature
US13/300,863 US20130055033A1 (en) 2011-08-22 2011-11-21 Hardware-assisted program trace collection with selectable call-signature capture

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/214,352 Continuation-In-Part US8756582B2 (en) 2011-08-22 2011-08-22 Tracking a programs calling context using a hybrid code signature

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/069,769 Continuation US9189365B2 (en) 2011-08-22 2013-11-01 Hardware-assisted program trace collection with selectable call-signature capture

Publications (1)

Publication Number Publication Date
US20130055033A1 true US20130055033A1 (en) 2013-02-28

Family

ID=47745448

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/300,863 Abandoned US20130055033A1 (en) 2011-08-22 2011-11-21 Hardware-assisted program trace collection with selectable call-signature capture
US14/069,769 Expired - Fee Related US9189365B2 (en) 2011-08-22 2013-11-01 Hardware-assisted program trace collection with selectable call-signature capture

Family Applications After (1)

Application Number Title Priority Date Filing Date
US14/069,769 Expired - Fee Related US9189365B2 (en) 2011-08-22 2013-11-01 Hardware-assisted program trace collection with selectable call-signature capture

Country Status (1)

Country Link
US (2) US20130055033A1 (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318327A1 (en) * 2012-05-22 2013-11-28 Infineon Technologies Ag Method and apparatus for data processing
US20140245259A1 (en) * 2013-02-26 2014-08-28 Dominique Bolignano Method for securing a program
US8868886B2 (en) 2011-04-04 2014-10-21 International Business Machines Corporation Task switch immunized performance monitoring
US9104402B2 (en) * 2013-08-21 2015-08-11 Vmware, Inc. Branch trace compression
WO2015153178A1 (en) * 2014-03-31 2015-10-08 Nec Laboratories America, Inc. Dynamic border line tracing for tracking message flows across distributed systems
US9256515B2 (en) 2013-08-21 2016-02-09 Vmware, Inc. Stack trace compression
US9275236B2 (en) 2013-06-28 2016-03-01 Dominique Bolignano Method for securing a program
US20160117217A1 (en) * 2014-10-22 2016-04-28 Xpliant, Inc. Apparatus and a method of detecting errors on registers
US9342432B2 (en) 2011-04-04 2016-05-17 International Business Machines Corporation Hardware performance-monitoring facility usage after context swaps
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US20230161684A1 (en) * 2021-11-23 2023-05-25 International Business Machines Corporation Identification of program path profile for program optimization

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10013335B2 (en) * 2015-12-21 2018-07-03 Intel Corporation Data flow analysis in processor trace logs using compiler-type information method and apparatus
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US11301253B2 (en) * 2018-08-10 2022-04-12 Arm Limited Branch prediction structure indexed based on return address popped from a call-return stack

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513133B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Uniformly distributed induction of exceptions for testing computer software
US6647491B2 (en) * 1999-02-18 2003-11-11 Hewlett-Packard Development Company, L.P. Hardware/software system for profiling instructions and selecting a trace using branch history information for branch predictions
US20050081107A1 (en) * 2003-10-09 2005-04-14 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US20060080531A1 (en) * 2002-04-03 2006-04-13 Microsoft Corporation Integrity Ordainment and Ascertainment of Computer-Executable Instructions with Consideration for Execution Context
US20080171598A1 (en) * 2006-11-10 2008-07-17 Bally Gaming, Inc. Secure communications in gaming system
US8261244B2 (en) * 2006-06-02 2012-09-04 Microsoft Corporation Arbitrary runtime function call tracing

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993017385A1 (en) 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
US5875324A (en) 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5970439A (en) 1997-03-13 1999-10-19 International Business Machines Corporation Performance monitoring in a data processing system
US6170083B1 (en) 1997-11-12 2001-01-02 Intel Corporation Method for performing dynamic optimization of computer code
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US6253338B1 (en) 1998-12-21 2001-06-26 International Business Machines Corporation System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block
JP3723020B2 (en) 1999-09-30 2005-12-07 富士通株式会社 Branch history information writing control apparatus and method
US6539500B1 (en) 1999-10-28 2003-03-25 International Business Machines Corporation System and method for tracing
US20020066081A1 (en) 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US7103877B1 (en) 2000-11-01 2006-09-05 International Business Machines Corporation System and method for characterizing program behavior by sampling at selected program points
KR20040045467A (en) 2001-10-02 2004-06-01 코닌클리케 필립스 일렉트로닉스 엔.브이. Speculative execution for java hardware accelerator
US7076640B2 (en) 2002-02-05 2006-07-11 Sun Microsystems, Inc. Processor that eliminates mis-steering instruction fetch resulting from incorrect resolution of mis-speculated branch instructions
JP3800533B2 (en) 2002-06-28 2006-07-26 富士通株式会社 Program counter control method and processor
JP3839755B2 (en) 2002-06-28 2006-11-01 富士通株式会社 Instruction control method and processor
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7657893B2 (en) 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20050132363A1 (en) 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US7496908B2 (en) 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7987453B2 (en) 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US7490229B2 (en) 2004-03-30 2009-02-10 Sun Microsystems, Inc. Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution
US20050223364A1 (en) * 2004-03-30 2005-10-06 Peri Ramesh V Method and apparatus to compact trace in a trace buffer
JP4599902B2 (en) 2004-06-18 2010-12-15 株式会社日立製作所 Performance analysis method using hardware monitor
US20060005180A1 (en) 2004-06-30 2006-01-05 Nefian Ara V Method and system for hot path detection and dynamic optimization
US20060168432A1 (en) 2005-01-24 2006-07-27 Paul Caprioli Branch prediction accuracy in a processor that supports speculative execution
US7469362B2 (en) * 2005-04-15 2008-12-23 Microsoft Corporation Using a call stack hash to record the state of a process
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7694281B2 (en) 2005-09-30 2010-04-06 Intel Corporation Two-pass MRET trace selection for dynamic optimization
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7934081B2 (en) 2006-10-05 2011-04-26 International Business Machines Corporation Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
JP4871174B2 (en) 2007-03-09 2012-02-08 株式会社日立製作所 Virtual computer system
JP5145809B2 (en) 2007-07-31 2013-02-20 日本電気株式会社 Branch prediction device, hybrid branch prediction device, processor, branch prediction method, and branch prediction control program
JP4468426B2 (en) 2007-09-26 2010-05-26 株式会社東芝 High availability system and execution state control method
US8407518B2 (en) 2007-10-26 2013-03-26 Vmware, Inc. Using virtual machine cloning to create a backup virtual machine in a fault tolerant system
US9015727B2 (en) 2008-04-02 2015-04-21 Qualcomm Incorporated Sharing operating system sub-processes across tasks
US8280683B2 (en) 2008-07-17 2012-10-02 International Business Machines Corporation Probabilistic framework for the highly efficient correlation of call chains with hardware events
US7877642B2 (en) * 2008-10-22 2011-01-25 International Business Machines Corporation Automatic software fault diagnosis by exploiting application signatures
US8219990B2 (en) 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8042007B1 (en) 2009-08-27 2011-10-18 Xilinx, Inc. Trace module for integrated circuit devices
US9952869B2 (en) 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
US8612730B2 (en) 2010-06-08 2013-12-17 International Business Machines Corporation Hardware assist thread for dynamic performance profiling
US8489866B2 (en) 2010-06-30 2013-07-16 International Business Machines Corporation Branch trace history compression
US20120005462A1 (en) 2010-07-01 2012-01-05 International Business Machines Corporation Hardware Assist for Optimizing Code During Processing
US8868886B2 (en) 2011-04-04 2014-10-21 International Business Machines Corporation Task switch immunized performance monitoring
US9342432B2 (en) 2011-04-04 2016-05-17 International Business Machines Corporation Hardware performance-monitoring facility usage after context swaps

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647491B2 (en) * 1999-02-18 2003-11-11 Hewlett-Packard Development Company, L.P. Hardware/software system for profiling instructions and selecting a trace using branch history information for branch predictions
US6513133B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Uniformly distributed induction of exceptions for testing computer software
US20060080531A1 (en) * 2002-04-03 2006-04-13 Microsoft Corporation Integrity Ordainment and Ascertainment of Computer-Executable Instructions with Consideration for Execution Context
US20050081107A1 (en) * 2003-10-09 2005-04-14 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US8261244B2 (en) * 2006-06-02 2012-09-04 Microsoft Corporation Arbitrary runtime function call tracing
US20080171598A1 (en) * 2006-11-10 2008-07-17 Bally Gaming, Inc. Secure communications in gaming system

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342432B2 (en) 2011-04-04 2016-05-17 International Business Machines Corporation Hardware performance-monitoring facility usage after context swaps
US8868886B2 (en) 2011-04-04 2014-10-21 International Business Machines Corporation Task switch immunized performance monitoring
US9003198B2 (en) * 2012-05-22 2015-04-07 Infineon Technologies Ag Method and apparatus for data processing
US20130318327A1 (en) * 2012-05-22 2013-11-28 Infineon Technologies Ag Method and apparatus for data processing
US20140245259A1 (en) * 2013-02-26 2014-08-28 Dominique Bolignano Method for securing a program
US9892016B2 (en) 2013-02-26 2018-02-13 Dominique Bolignano Method for securing a program
US9501383B2 (en) * 2013-02-26 2016-11-22 Dominique Bolignano Method for securing a program
US9275236B2 (en) 2013-06-28 2016-03-01 Dominique Bolignano Method for securing a program
US9104402B2 (en) * 2013-08-21 2015-08-11 Vmware, Inc. Branch trace compression
US9256515B2 (en) 2013-08-21 2016-02-09 Vmware, Inc. Stack trace compression
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US10785169B2 (en) 2013-12-30 2020-09-22 Marvell Asia Pte, Ltd. Protocol independent programmable switch (PIPS) for software defined data center networks
US11824796B2 (en) 2013-12-30 2023-11-21 Marvell Asia Pte, Ltd. Protocol independent programmable switch (PIPS) for software defined data center networks
WO2015153178A1 (en) * 2014-03-31 2015-10-08 Nec Laboratories America, Inc. Dynamic border line tracing for tracking message flows across distributed systems
US20160117217A1 (en) * 2014-10-22 2016-04-28 Xpliant, Inc. Apparatus and a method of detecting errors on registers
US10656992B2 (en) * 2014-10-22 2020-05-19 Cavium International Apparatus and a method of detecting errors on registers
US20230161684A1 (en) * 2021-11-23 2023-05-25 International Business Machines Corporation Identification of program path profile for program optimization

Also Published As

Publication number Publication date
US9189365B2 (en) 2015-11-17
US20140059523A1 (en) 2014-02-27

Similar Documents

Publication Publication Date Title
US9189365B2 (en) Hardware-assisted program trace collection with selectable call-signature capture
AU2013233830B2 (en) Controlling operation of a run-time instrumentation facility from a lesser-privileged state
TWI338218B (en) Method and apparatus for prefetching data from a data structure
EP2810168B1 (en) Run-time instrumentation sampling in transactional-execution mode
JP5323936B2 (en) Apparatus and method for speculative interrupt vector prefetch
CN109313567A (en) Virtualization is accurately based on the sampling of event
JP6195566B2 (en) Runtime instrumentation report
JP6058012B2 (en) Computer program product, method, and system for monitoring processor characteristics information of a processor using runtime instrumentation (runtime instrumentation monitoring of processor characteristics)
JP6153533B2 (en) Runtime instrumentation oriented sampling
US9483268B2 (en) Hardware based run-time instrumentation facility for managed run-times
US20070261033A1 (en) Method and apparatus for selectively marking and executing instrumentation code
US20070260849A1 (en) Method and apparatus for executing instrumentation code using a target processor
CN107577593B (en) Diagnosing code using performing a single step
TWI506544B (en) Decoding instructions from multiple instruction sets
US9405541B2 (en) Run-time instrumentation indirect sampling by address
US10564992B2 (en) Simulation apparatus and storage medium
CN102789377B (en) The method and apparatus of processing instruction grouping information
US20150248295A1 (en) Numerical stall analysis of cpu performance
US9081895B2 (en) Identifying and tagging breakpoint instructions for facilitation of software debug
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
US20150127318A1 (en) Apparatus and method for simulating an operation of an out-of-order processor

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FRAZIER, GILES R.;LEVITAN, DAVID S.;MESTAN, BRIAN R.;AND OTHERS;SIGNING DATES FROM 20111115 TO 20111116;REEL/FRAME:027265/0009

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION