Source: http://www.google.fr/patents/US9471315
Timestamp: 2018-01-20 17:24:13
Document Index: 757532592

Matched Legal Cases: ['Application No. 201380014658', 'Application No. 201380014676', 'Application No. 13760362', 'Application No. 13760606', 'Application No. 13761389', 'Application No. 13760324', 'Application No. 13760760', 'Application No. 13761271', 'Application No. 13762008']

Brevet US9471315 - Run-time instrumentation reporting - Google Brevets
An aspect includes run-time instrumentation reporting. An instruction stream is executed by a processor. Run-time instrumentation information of the executing instruction stream is captured by the processor. Run-time instrumentation records are created based on the captured run-time instrumentation information....http://www.google.fr/patents/US9471315?utm_source=gb-gplus-shareBrevet US9471315 - Run-time instrumentation reporting
Numéro de publication US9471315 B2
Numéro de demande US 13/422,552
Autre référence de publication CA2866793A1, CN104380264A, CN104380264B, EP2825963A1, EP2825963A4, US9280346, US20130246755, US20130246776, WO2013136700A1
Numéro de publication 13422552, 422552, US 9471315 B2, US 9471315B2, US-B2-9471315, US9471315 B2, US9471315B2
Inventeurs Mark S. Farrell, Charles W. Gainey, Jr., Marcel Mitran, Chung-Lung K. Shum, Brian L. Smith
Citations de brevets (149), Citations hors brevets (87), Classifications (8), Événements juridiques (1)
Run-time instrumentation reporting
US 9471315 B2
An aspect includes run-time instrumentation reporting. An instruction stream is executed by a processor. Run-time instrumentation information of the executing instruction stream is captured by the processor. Run-time instrumentation records are created based on the captured run-time instrumentation information. A run-time instrumentation sample point of the executing instruction stream on the processor is detected. A reporting group is stored in a run-time instrumentation program buffer. The storing is based on the detecting and the storing includes: determining a current address of the run-time instrumentation program buffer, the determining based on instruction accessible run-time instrumentation controls; and storing the reporting group into the run-time instrumentation program buffer based on an origin address and the current address of the run-time instrumentation program buffer, the reporting group including the created run-time instrumentation records.
1. A computer program product for run-time instrumentation reporting, the computer program product comprising:
executing an instruction stream of a computer program, the executing by a processor;
determining, based on contents of an instrumentation control field in a program status word (PSW) associated with the computer program, that run-time instrumentation information of said executing instruction stream should be captured, wherein the contents of the PSW associated with the computer program persist during context switches by the processor;
storing the reporting group into the run-time instrumentation program buffer based on an origin address of the run-time instrumentation program buffer and the current address of the run-time instrumentation program buffer, the reporting group comprising said created run-time instrumentation records.
2. The computer program product of claim 1, wherein the reporting group includes a predetermined number of run-time instrumentation records specified by the run-time instrumentation controls.
3. The computer program product of claim 1, wherein the method further comprises executing a program in a supervisor state to set any one of the origin address of the run-time instrumentation program buffer or the current address of the run-time instrumentation program buffer in the run-time instrumentation controls.
4. The computer program product of claim 3, wherein the program includes one of a load run-time instrumentation controls (LRIC) instruction and a modify run-time instrumentation controls (MRIC) instruction.
5. The computer program product of claim 1, wherein the method further comprises executing a program in a problem state to set the origin address of the run-time instrumentation program buffer in the run-time instrumentation controls, wherein the program includes a modify run-time instrumentation controls (MRIC) instruction.
6. The computer program product of claim 1, wherein the run-time instrumentation controls specify a number of records in each reporting group in the run-time instrumentation program buffer.
7. The computer program product of claim 1, wherein the run-time instrumentation program buffer is located in an address space that is accessible by an application program.
8. A system for run-time instrumentation reporting, the system comprising:
executing an instruction stream of a computer program, the executing by the processor;
9. The system of claim 8, wherein the reporting group includes a predetermined number of run-time instrumentation records specified by the run-time instrumentation controls.
10. The system of claim 8, wherein the method further comprises executing a program in a supervisor state to set any one of the origin address of the run-time instrumentation program buffer or the current address of the run-time instrumentation program buffer in the run-time instrumentation controls.
11. The system of claim 10, wherein the program includes one of a load run-time instrumentation controls (LRIC) instruction and a modify run-time instrumentation controls (MRIC) instruction.
12. The system of claim 8, wherein the method further comprises executing a program in a problem state to set the origin address of the run-time instrumentation program buffer in the run-time instrumentation controls, wherein the program includes a modify run-time instrumentation controls (MRIC) instruction.
13. The system of claim 8, wherein the run-time instrumentation controls specify a number of records in each reporting group in the run-time instrumentation program buffer.
Embodiments include a computer program product, and system for run-time instrumentation reporting. An instruction stream is executed by a processor. Run-time instrumentation information of the executing instruction stream is captured by the processor. Run-time instrumentation records are created based on the captured run-time instrumentation information. A run-time instrumentation sample point of the executing instruction stream on the processor is detected. A reporting group is stored in a run-time instrumentation program buffer. The storing is based on the detecting and the storing includes: determining a current address of the run-time instrumentation program buffer, the determining based on instruction accessible run-time instrumentation controls; and storing the reporting group into the run-time instrumentation program buffer based on an origin address and the current address of the run-time instrumentation program buffer, the reporting group including the created run-time instrumentation records.
The embodiment of the collection buffer 508 shown in FIG. 8 is capable of storing up to thirty-two entries (i.e., information about thirty-two events), with each instruction address 802 specified by sixty-four bits (e.g., bits 0:63), and event metadata 804 by sixty-four bits (e.g., bits 64:127). The size of the collection buffer (RCB) is a model dependent count, representing a number of records. In the embodiment of the collection buffer 508 shown in FIG. 8, the byte size of the collection buffer is a multiple of the sixteen byte record size. In an embodiment, the size of the collection buffer is a number of records greater than or equal to the difference between the count of the largest reporting group (RRG) of the model and the count of the records in a reporting group that are not acquired from the collection buffer (RNC). Thus, in an embodiment, the size of the collection buffer is expressed as: RCB≧(RRG-RNC).
FIG. 9 depicts a high-level example of a reporting group 900 stored to program buffer 522 at a sample point. The number of valid records from the collection buffer 508, represented by RVCB, is in the range 0≦RVCB≦RCB (where RCB is the size of the collection buffer 508). The size of a reporting group 900 in records, represented by RRG, is equal to 2(RGS+1), where RGS is the reporting group size as an exponent. A model-dependent number of records (RNC), such as an instruction record, copied from a location other than the collection buffer 508 may or may not be copied non-destructively when used in a reporting group 900. In an embodiment, if the RVCB is less than RRG-RNC, then the remainder of the reporting group 900 is filled with filler type records, such that the requisite count of RRG records in the reporting group 900 is met. In the example of FIG. 9, RRG=8, RGS=2, and RNC=4. In an embodiment RRG is in the range 2≦RRG≦28 records. In accordance with an embodiment, RGS is limited to a model dependent maximum that is less than seven, so the largest reporting group size in a model may be less than 256, but is still a power of two.
In accordance with an embodiment, the first record of a reporting group 900 is in the header section 902 and is either a begin record or a timestamp record to hold status, tracking, and/or timing information. A begin record is stored for the first reporting group 900 stored in a program buffer 522 (i.e., when the RCA 706 is equal to the ROA 702). A timestamp record is stored as the first record of each subsequent reporting group. Neither the begin record nor the timestamp record are acquired from the collection buffer 508 and thus they are part of the RNC count. When RRG equals RNC, the body is null and no records from the collection buffer 508 are stored in the reporting group. When RRG is greater than RNC and RNC is equal to two, the contents of records one through RRG-RNC of a reporting group are in the body section of a reporting group 900 and are acquired from the collection buffer 508.
The collection buffer records stored in the body of a reporting group 900 are organized from oldest to newest in accordance with an embodiment, with the newest record being stored in record RRG-RNC when the collection buffer 508 has a sufficient number of valid records. When multiple records from the collection buffer 508 are stored as part of a reporting group 900, record one is the oldest collection buffer record reported, although the collection buffer 508 may have records even older that do not fit into the body, since the newest record in the collection buffer 508 must be reported. If the number of valid records in the collection buffer 508 is insufficient to fill a reporting group 900, one or more filler records are used to fill as many reporting group records as necessary, starting at the record immediately following the newest collection buffer record. That is, when necessary filler-type records are placed at the bottom of the body section 904.
When RRG is greater than RNC, and RNC is greater than two, the contents of records (RRG-RNC+1) through (RRG-2) are the extra section 906 of a reporting group 900 and contain one or more model dependent or extra records. When RNC is equal to two, the extra section 906 is null and no extra records are stored. Extra or model dependent type records in the extra section 906 occupy the space required and any remaining space becomes part of the body section 904.
In an embodiment, record RRG-1 of a reporting group 900 is the footer section 908 and contains an instruction record representing a sample instruction. The instruction record is not acquired from the collection buffer 508 and is partially acquired from the instruction-data buffer.
In an embodiment, a transfer record has a record type field of “14” and is created by execution of a return type branch instruction such as: a. BRANCH ON CONDITION (BCR) when the R2 field is nonzero and the mask is in the range 1-14; b. BRANCH ON CONDITION (BC) when the J bit is zero or the mask is in the range 1-14; c. BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR); d. BRANCH ON INDEX HIGH (BXH, BXHG); e. BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); f. BRANCH RELATIVE ON CONDITION (BRC); g. BRANCH RELATIVE ON CONDITIONLONG (BRCL); h. BRANCH RELATIVE ON COUNT (BRCT,BRCTG); i. BRANCH RELATIVE ON COUNT HIGH (BRCTH); j. BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); k. BRANCH RELATIVE ON INDEX LOW OREQUAL (BRXLE, BRXLG); l. COMPARE AND BRANCH (CRB, CGRB); m. COMPARE AND BRANCH RELATIVE (CRJ,CGRJ); n. COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); o. COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); p. COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); q. COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); r. COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); and s. COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ). The transfer record is created when the branch is taken. For the transfer record, the instruction address field contains the address of the branch instruction or execute type instruction if the branch as the target of an execute type instruction, and the target address field contains the return location.
FIG. 17 depicts a process flow for run-time instrumentation reporting in accordance with an embodiment. In an embodiment, the processing shown in FIG. 17 is performed by instrumentation module 506. At block 1702, an instruction stream is executed on a processor, such as processor 106 or emulated processor 29. At block 1704, run-time instrumentation information of the executing instruction stream is captured, and at block 1706 run-time instrumentation records (such as those shown in collection buffer 508) are created based on the captured run-time instrumentation information. A run-time instrumentation sample point of the executing instruction is detected at block 1708. At block 1710, a reporting group, such as reporting group 900, is stored in a run-time instrumentation program buffer, such as program buffer 522. The storing includes determining a current address of the run-time instrumentation program buffer based on the run-time instrumentation controls. In an embodiment, the current address of the run-time instrumentation controls is the RCA 706 stored in the RICCB 700. The storing is based on the origin address (e.g., ROA 702) and the current address of the run-time instrumentation program buffer.
US5737516 30 août 1995 7 avr. 1998 Motorola, Inc. Data processing system for performing a debug function and method therefor
US5809325 9 juil. 1996 15 sept. 1998 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5887189 * 21 janv. 1997 23 mars 1999 Philips Electronics North America Corporation Microcontroller system for performing operations of multiple microcontrollers
US5944841 * 15 avr. 1997 31 août 1999 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6243836 * 17 août 1998 5 juin 2001 Lucent Technologies, Inc. Apparatus and method for circular buffering on an on-chip discontinuity trace
US6769054 * 31 déc. 2002 27 juil. 2004 Emc Corporation System and method for preparation of workload data for replaying in a data storage environment
US6918065 1 oct. 1999 12 juil. 2005 Hitachi, Ltd. Method for compressing and decompressing trace information
US7047521 7 juin 2001 16 mai 2006 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US7870438 * 15 févr. 2008 11 janv. 2011 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US7904460 23 avr. 2008 8 mars 2011 Microsoft Corporation Determining computer information from processor properties
US8707314 16 déc. 2011 22 avr. 2014 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US20030005423 * 28 sept. 2001 2 janv. 2003 Dong-Yuan Chen Hardware assisted dynamic optimization of program execution
US20060277441 * 2 juin 2005 7 déc. 2006 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US20080189529 * 1 févr. 2007 7 août 2008 International Business Machines Corporation Controlling instruction execution in a processing environment
US20100146220 4 déc. 2008 10 juin 2010 Panchenko Maksim V Efficient program instrumentation for memory profiling
CN1867893A 14 oct. 2004 22 nov. 2006 史坦利·M·海德克 Method and apparatus for accelerating the verification of application specific integrated circuit designs
4 Chinese Office Action for Chinese Application No. 201380014658.1, Mailed Jul. 22, 2016.
5 Chinese Office Action for Chinese Application No. 201380014676.X, Mailed Apr. 18, 2016; 11 pages.
6 Chinese Office Action for Chinese Application Serial No. 201380014669.X, Mailed Apr. 14, 2016, 9 pages.
7 EP Application No. 13760362.7 Extended European Search Report dated Apr. 8, 2015, 5 pages.
8 EP Application No. 13760606 Extended European Search Report dated Dec. 11, 2014; 7 pages.
9 EP Application No. 13761389.9 Extended European Search Report dated Apr. 8, 2015, 8 pages.
10 European Application No. 13760324.7 Extended European Search Report dated Jan. 28, 2015, 7 pages.
11 European Application No. 13760760.2 Extended European Search Report dated Mar. 30, 2015, 8 pages.
12 European Application No. 13761271.9 Extended European Search Report dated Mar. 2, 2015 for POU920120002EP1, 7 pages.
16 European Patent Application No. 13762008.4 Extended European Search Report dated Mar. 16, 2015, 7 pages.
17 Extended European Search Report, POU920120015EP1, Mailing Date: Jun. 25, 2015; 8 pages.
18 FE Sakalay, Program Event Recording, IBM Technical Disclosure Bulletin, vol. 15, No. 4, Sep. 1972, 3 pages.
19 Gschwind, et al., "Binary Translation and Architecture Convergence Issues for IBM System/390," International Conference on Supercomputing, Conference Proceedings, ACM, New York, May 8, 2000, 12 pages.
20 Hassan Shojania, "Hardware-based performance monitoring with VTune Performance Analyzerunder Linux", 2003, pp. 1-12.
21 Intel, "IA-32 Intel Architecture Software Developer's Manual"; Jun. 2005; 13 pages.
22 International Application No. PCT/JP2013/001009 International Search Report and Written Opinion dated May 14, 2013, 5 pages.
23 International Application No. PCT/JP2013/001016 International Search Report and Written Opinion dated May 14, 2013, 6 pages.
24 International Application No. PCT/JP2013/001224; International Search Report and Written Opinion dated May 7, 2013, 7 pages.
25 International Application No. PCT/JP2013/001267, International Search Report and Written Opinion dated May 14, 2013, 8 pages.
26 International Application No. PCT/JP2013/001379 International Search Report and Written Opinion dated May 14, 2013, 5 pages.
27 International Application No. PCT/JP2013/001412 International Search Report and Written Opinion dated May 14, 2013, 6 pages.
28 International Application No. PCT/JP2013/001464 International Search Report and Written Opinion dated May 14, 2013, 5 pages.
29 International Search Report for International Application No. PCT/JP2013/001013; International Filing Date Feb. 22, 2013; Date of Mailing: May 14, 2013; 2 pages.
30 International Search Report for International Application No. PCT/JP2013/001240; International Filing Date Feb. 28, 2013; Date of Mailing: May 14, 2013; 3 pages.
31 International Search Report for International Application No. PCT/JP2013/001262; International Filing Date Mar. 1, 2013; Date of Mailing: May 7, 2013; 2 pages.
32 International Search Report for International Application No. PCT/JP2013/001264; International Filing Date Mar. 1, 2013; Date of Mailing: May 14, 2013; 3 pages.
33 International Search Report for International Application No. PCT/JP2013/001268; International Filing Date Mar. 1, 2013; Date of Mailing: May 7, 2013; 2 pages.
34 K. Getzlaff, et al., Hardware-Implemented Program Event Recording, http://ww.ip.com;pubview/IPCOM000121669D; Sep. 1, 1991, 4 pages.
35 Matthew C. Merten et al. "A Hardware-Driven Profiling Scheme for Identifying Program Hot Spots to Support Runtime Optimization"; Appears in Proceedings of the 26th Annual Intl. Symposium on Compjer Architecture (ISCA); pp. 136-147; May 1999.
36 RJ Bullions, et al., Dynamic Enabling/Disabiling of Program Event Recording Range Compare, IBM Technical Disclosure Bulletin, vol. 20, No. 9, 1978, 3 pages.
43 U.S. Appl. No. 13/422,542 Non-Final Office Action dated Feb. 2, 2015, 15 pages.
44 U.S. Appl. No. 13/422,542 Notice of Allowance dated Oct. 24, 2014, 25 pages.
45 U.S. Appl. No. 13/422,542, Non-Final Office Action dated May 23, 2014, 31 pages.
46 U.S. Appl. No. 13/422,546; Non-Final Office Action; Date Filed: Mar. 16, 2012; Date Mailed: Apr. 15, 2014; 32 pages.
47 U.S. Appl. No. 13/422,546; Non-Final Office Action; Date Filed: Mar. 16, 2012; Date Mailed: Jan. 14, 2015; 27 pages.
48 U.S. Appl. No. 13/422,546; Notice of Allowance; Date Filed: Mar. 16, 2012; Date Mailed: Aug. 4, 2014; 16 pages.
49 U.S. Appl. No. 13/422,550 Non-Final Office Action dated Aug. 15, 2014, 46 pages.
50 U.S. Appl. No. 13/422,550 Notice of Allowance dated Dec. 24, 2014, 18 pages.
55 U.S. Appl. No. 13/422,577; Notice of Allowance; Date Filed Mar. 16, 2012; Date Mailed: Mar. 4, 2015; 14 pages.
58 U.S. Appl. No. 13/422,588; Notice of Allowance: Date Filed: Mar. 16, 2012; Date Mailed: Mar. 12, 2015; 15 pages.
59 U.S. Appl. No. 13/422,589; Non-Final Office Action; Date Filed: Mar. 16, 20112; Date Mailed: May 11, 2015; 72 pages.
60 U.S. Appl. No. 13/422,596 Notice of Allowance dated Oct. 7, 2014, 19 pages.
61 U.S. Appl. No. 13/422,596, Final Office Action dated Jun. 18, 2014, 28 pages.
62 U.S. Appl. No. 13/422,596, Non-Final Office Action dated Jan. 31, 2014, 39 pages.
63 U.S. Appl. No. 13/422,598; Non-Final Office Action, Date Filed: Mar. 16, 2012; Date Mailed: May 6, 2015; 73 pages.
64 U.S. Appl. No. 13/784,868, Non-Final Office Actin dated May 14, 2014, 33 pages.
65 U.S. Appl. No. 13/784,868; Final Office Action; Date Filed: Mar. 5, 2013; Date Mailed: Oct. 1, 2014; 46 pages.
66 U.S. Appl. No. 13/784,872, Non-Final Office Action dated May 8, 2014, 32 pages.
67 U.S. Appl. No. 13/784,872, Notice of Allowance dated Sep. 19, 2014, 43 pages.
68 U.S. Appl. No. 13/785,089; Non-Final Office Action; Date Filed: Mar. 5, 2013; Date Mailed Jan. 3, 2014; 28 pages.
69 U.S. Appl. No. 13/785,089; Notice of Allowance; Date Filed: Mar. 5, 2013; Date Mailed: Apr. 24, 2015; 34 pages.
70 U.S. Appl. No. 13/785,089; Notice of Allowance; Date Filed: Mar. 5, 2013; Date Mailed: Dec. 24, 2014; 15 pages.
71 U.S. Appl. No. 13/785,089; Notice of Allowance; Date Filed: Mar. 5, 2013; Date Mailed: Jul. 29, 2014; 31 pages.
72 U.S. Appl. No. 13/788,368 Final Office Action dated May 12, 2015, 25 pages. (I470124USC).
73 U.S. Appl. No. 13/788,368 Non-Final Office Action dated Nov. 18, 2014, 47 pages.
74 U.S. Appl. No. 13/788,368 Non-Final Office Action dated Sep. 9, 2015, 22 pages.
75 U.S. Appl. No. 13/788,490 Notice of Allowance dated Aug. 1, 2014, 27 pages.
76 U.S. Appl. No. 13/788,490, Non-Final Office Action dated Jan. 16, 2014, 31 pages.
77 U.S. Appl. No. 13/788,490; Notice of Allowance; Date Filed: Mar. 7, 2013, Date Mailed: Apr. 1, 2015; 20 pages.
80 William E. Cohen, "Tuning Programs with OProfile", Wide Open Magazine, 2004, pp. 53-61.
81 Written Opinion of the International Searching Authority for International Application No. PCT/JP2013/001013 mailed May 14, 2013; 3 pages.
82 Written Opinion of the International Searching Authority for International Application No. PCT/JP2013/001240 mailed May 14, 2013; 3 pages.
83 Written Opinion of the International Searching Authority for International Application No. PCT/JP2013/001262 mailed May 7, 2013; 3 pages.
84 Written Opinion of the International Searching Authority for International Application No. PCT/JP2013/001264 mailed May 14, 2013; 3 pages.
85 Written Opinion of the International Searching Authority for International Application No. PCT/JP2013/001268 mailed May 7, 2013; 3 pages.
86 Yoshioka Hirotaka, Developing memory profiling tools, Interface, Aug. 1, 2003, Vo. 29, No. 8, pp. 132-142.
87 z/Architecture: "Principles of Operation"; Sixth Edition, Apr. 2007, Publication No. SA22-7832-08, copyright IBM Corp.
Classification internationale G06F9/455, G06F11/36, G06F9/30
Classification coopérative G06F9/30145, G06F9/3005, G06F9/45504, G06F11/3636, G06F11/3648
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FARRELL, MARK S.;GAINEY, CHARLES W.;MITRAN, MARCEL;AND OTHERS;REEL/FRAME:027964/0751