US7296259B2 - Processor system with cache-based software breakpoints - Google Patents
Processor system with cache-based software breakpoints Download PDFInfo
- Publication number
- US7296259B2 US7296259B2 US10/241,400 US24140002A US7296259B2 US 7296259 B2 US7296259 B2 US 7296259B2 US 24140002 A US24140002 A US 24140002A US 7296259 B2 US7296259 B2 US 7296259B2
- Authority
- US
- United States
- Prior art keywords
- state
- breakpoint
- processor
- particular location
- instruction cache
- 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.)
- Expired - Fee Related, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
Definitions
- the present invention relates generally to processor integrated circuits and other types of systems which include one or more processors, and more particularly to techniques for implementing software breakpoints in such systems.
- Software breakpoints are typically implemented as assembly instructions embedded in a program. A given one of these assembly instructions when encountered in the program causes execution of the program to transfer to a debugger. As is well known, the use of designated breakpoints in conjunction with the debugger allows a programmer to inspect the state of the program in order to fix a problem or better understand program behavior.
- a software breakpoint may be embedded in a program by overwriting an existing instruction at the desired breakpoint location with an assembly instruction in the form of a specified debug operation code, also referred to as an opcode.
- the overwritten instruction is stored by the debugger so that it may subsequently replace the inserted opcode upon resumption of normal operation, as will be described below.
- Examples of conventional debug opcodes include opcodes referred to as DEBUG, TRAP, etc. These debug opcodes generally vary depending on the processor.
- a two step process typically takes place.
- the debugger replaces the debug opcode with the previously-overwritten existing instruction, so that this instruction alone may be executed (or “stepped”). Then the debug opcode is restored at the desired breakpoint location so that the next time program execution reaches this point, another breakpoint will occur.
- An instruction cache enables the processor to store frequently accessed instructions in a fast local memory that adapts its contents to the executing program.
- a multiprocessor system generally includes multiple processors each connected to a common bus. Also connected to the common bus is a shared main memory that stores instructions and data for use by the processors. In such a system, each of the processors will typically have its own instruction cache. These instruction caches are particularly important in multiprocessor systems in that the caches serve to significantly reduce the bus traffic associated with the instruction and data fetches of the multiple processors.
- the conventional single-processor software breakpoints described above generally do not work in a multiprocessor system. More particularly, in a multiprocessor system, once a particular one of the processors has taken a software breakpoint, the corresponding actual instruction must be written to the shared memory so the stopped processor can subsequently fetch and execute it. However, while the actual instruction is in shared memory, the other processors may fetch and execute it, thus missing the breakpoint. Thus, in a shared-memory multiprocessor system, the programmer utilizing conventional single-processor software breakpoint techniques would be likely to observe erratic behavior, e.g., sometimes a given processor would stop at a software breakpoint and other times it would not.
- Examples of known multiprocessor systems include the DSP 16410 and DSP 16270 shared-memory multiprocessor digital signal processors (DSPs) available from Agere Systems Inc. of Allentown, Pa., USA. Each of these systems includes two processors, denoted DSP 0 and DSP 1 . These processors do not have instruction caches, but can execute from a common shared memory. Consider a case where a software breakpoint has been set in the shared memory and executed by DSP 0 . In order to resume normal execution after the breakpoint is taken, the actual instruction code at the breakpoint location should be placed in local memory that is private to DSP 0 . This enables DSP 0 to execute the actual instruction without preventing DSP 1 from hitting the desired breakpoint.
- DSPs shared-memory multiprocessor digital signal processors
- a given processor If a given processor is a target of the breakpoint, it transfers control to the debugger, and if it is not a target of the breakpoint, it resumes execution. In either case, while the given processor was stopped it may have violated real-time processing constraints or other application requirements, thereby leading to a system failure. Even for a processor that is an intended target of the breakpoint, it may be preferable to minimize the amount of time that the processor is stopped. For example, the action on stopping may be to execute a debug script and then automatically resume execution.
- the invention provides improved techniques for implementing software breakpoints in a single-processor system or a shared-memory multiprocessor system.
- An exclusive software breakpoint refers generally to a software breakpoint for which one or more, but less than all, of the processors of the multiprocessor system stop.
- an exclusive software breakpoint is implemented in a multiprocessor system having a number of processors each coupled to a main memory and each having an instruction cache associated therewith.
- a breakpoint code is inserted at a particular location in the instruction cache of at least a given one of the processors, and a control indicator associated with the particular location is set to a first state which allows the breakpoint code to be returned to the given processor from the instruction cache in response to a first fetch request directed to a corresponding address.
- the control indicator associated with the particular location is set to a second state which directs that a second fetch request to the corresponding address will be serviced from the main memory.
- the control indicator state is then changed again, e.g., reset back to the first state, after a determination has been made, from the control indicator having been set to the second state, that the second fetch request to the corresponding address will be serviced from the main memory. While the control indicator is set to the first state, a miss event in the instruction cache does not lead to replacement of the breakpoint code in the particular location in the instruction cache.
- the control indicator may be in the form of a single-bit or multi-bit indicator associated with a given set of the instruction cache.
- a single-bit indicator may be utilized in which the first state comprises a debug lock state and the second state comprises a don't use once state.
- a two-bit indicator may specify at least one additional state, comprising a normal mode of operation state specifying operation without utilization of the software breakpoint.
- Other control indicator formats can also be used.
- FIG. 1 is a block diagram of an example multiprocessor system in which the present invention is implemented.
- FIG. 2 illustrates the operation of an instruction cache of the FIG. 1 multiprocessor system in accordance with the invention.
- FIG. 3 illustrates the interaction of the FIG. 1 multiprocessor system with a debugger.
- processor system as used herein is intended to include any device in which retrieved instructions are executed using one or more processors.
- processor is intended to include, by way of example and without limitation, microprocessors, central processing units (CPUs), very long instruction word (VLIW) processors, single-issue processors, multi-issue processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), and other types of data processing devices, as well as portions and combinations of these and other devices.
- CPUs central processing units
- VLIW very long instruction word
- DSPs digital signal processors
- ASICs application-specific integrated circuits
- FIG. 1 shows a shared-memory multiprocessor system 100 in which the present invention is implemented.
- the system 100 includes a number of processors 102 - 1 , 102 - 2 , . . . 102 -N, each coupled to a main memory 104 via a common bus 106 .
- Also associated with each of the processors 102 - i , i 1, 2, . . . N, is a corresponding multiplexer 108 - i and instruction cache (Icache) 110 - i .
- the processors 102 each retrieve instructions for execution, as well as associated data, from the main memory 104 .
- the instructions may be retrieved directly from the main memory 104 via a first path through the multiplexer 108 , or from the instruction cache 110 via a second path through the multiplexer 108 .
- the processors 102 also return instruction execution results to the main memory 104 via bus 106 , although separate return paths from the processors to the bus 106 are not explicitly shown in the figure. These return paths may be combined in whole or in part with the illustrative signal lines used to retrieve the instructions and data, i.e., bidirectional signal lines may be used.
- a set of cache control logic 112 is also included in the multiprocessor system 100 .
- the cache control logic 112 may be coupled to each of the instruction caches 110 .
- the cache control logic 112 may be distributed across the instruction caches 110 such that a portion of the cache control logic 112 forms an internal portion of each of the instruction caches 110 .
- Other arrangements may also be used, e.g., various combinations of centralized and distributed logic. For example, portions of the cache control logic may be distributed across the processors 102 .
- the operation of the cache control logic 112 will be described in greater detail below in conjunction with the description of FIGS. 2 through 5 . Suitable hardware or software elements, or various combinations thereof, may be configured in a straightforward manner to provide the cache control logic functionality described herein, as will be appreciated by those skilled in the art.
- the cache control logic 112 may therefore be implemented in hardware, in software, or as a combination of hardware and software.
- noncacheable attribute indicates whether a particular instruction address is allowed to be stored in the instruction cache.
- Each of the processors 102 typically includes hardware for interpreting such attributes.
- the cache control logic typically always treats a fetch to this address as a miss.
- an exclusive software breakpoint refers generally to a software breakpoint for which one or more, but less than all, of the processors of the system stop.
- the instruction caches 110 of the FIG. 1 system are configured so as to permit a debugger to place and mark an existing instruction, for which an exclusive breakpoint is to be established, in a given one of the instruction caches of a particular processor.
- the placing and marking of the instruction may be configured so as to ensure that other processors of the system for which the exclusive breakpoint is not intended will not stop at the breakpoint, while also allowing any stopped processor(s) to more efficiently resume from the breakpoint.
- the illustrative embodiment of the invention implements this capability in part through the addition of one or more control bits, more specifically referred to herein as debug control (D) bits, to instruction information stored in the instruction cache, and by permitting the debugger to write this information directly to the instruction cache.
- D debug control
- FIG. 2 illustrates the instruction processing in a given one of the instruction caches 110 of the FIG. 1 system, i.e., a particular instruction cache 110 - i , although it should be understood that substantially the same instruction processing is utilized in each of the instruction caches 110 .
- the corresponding processor 102 - i fetches an instruction from the instruction cache 110 - i , it presents an address 200 to the cache.
- the address 200 as shown in FIG. 2 includes a tag field 202 , an index field 204 , and a block offset field 206 .
- the address 200 in this example is a 32-bit address, with bits 0 - 3 corresponding to the block offset, bits 4 - 11 corresponding to the index, and bits 12 - 31 corresponding to the tag.
- the index field 204 of the address 200 is used to select one of several sets in the instruction cache 110 - i . More specifically, the particular value of the index field 204 specifies a particular set 210 within a group 211 of such sets, where each of the sets in the group 211 corresponds generally to a set of one or more instructions stored in the cache. Each set in the group 211 has associated therewith a valid (V) bit, the above-mentioned debug control (D) bits, a tag field, and instruction data, e.g., 16 bytes of instruction data in this illustrative example.
- V valid
- D debug control
- the instruction cache 110 - i in accordance with the invention includes logic elements 212 and 214 , which may be implemented in a straightforward manner well-known to those skilled in the art.
- logic element 212 compares the tag field 202 of the presented address 200 to the tag field of the set 210 as selected using the index field 204
- logic element 214 performs an AND operation on the output of the logic element 212 and the valid bit.
- the output of logic element 214 is at a logic high level if for a given set 210 the tag field 202 matches its tag field and its valid bit is set, i.e., at a logic high level. In this situation, the cache is said to “hit” at the instruction address 200 , and otherwise to “miss” at the instruction address 200 .
- the desired instruction data is in the cache 110 - i and is returned to the corresponding processor 102 - i . If there is no match or the valid bit is clear, the desired instruction data is not in the cache 110 - i , and therefore must be fetched from the main memory 104 .
- the debug control bits are utilized to implement exclusive software breakpoints in an advantageous manner in accordance with the techniques of the invention.
- exclusive breakpoints may be inserted using an arrangement such as that shown in FIG. 3 .
- a debugger 302 interacts via an interface 304 with the multiprocessor system 100 of FIG. 1 .
- the debugger 302 which may also be referred to as a debugger tool, may be implemented using appropriately-configured hardware and software elements, as is well known.
- the interface 304 may also be implemented in manner well understood by those skilled in the art, and is therefore not described in detail herein. It is to be appreciated that the invention does not require the use of any particular type of debugger or multiprocessor system interface.
- the debugger 302 will typically run on a processor that is not an element of the system 100 , but this is by way of example and not limitation.
- the debugger 302 of FIG. 3 may be utilized to program an exclusive software breakpoint for a given processor of the multiprocessor system 100 , as will be described in greater detail below.
- debug control bits referred to above may be implemented in the illustrative embodiment, by way of example and without limitation, as a pair of bits collectively specifying one of three particular debug control states, namely, a “debug lock” state, a “don't use once” state, and a “nondbg” state.
- the latter state denotes normal operation without any exclusive software breakpoints.
- the operation of the system 100 using this debug control bit configuration will be described in greater detail below in conjunction with FIGS. 4 and 5 .
- the debug control bits are more generally referred to herein as a debug control indicator.
- the debug control indicator can take on one of the three states noted above, that is, debug lock, don't use once or nondbg.
- the invention does not require the use of this particular debug control bit configuration, and numerous other formats may be used in implementing the techniques described herein.
- a single-bit D indicator may be used, specifying only the debug lock and don't use once states.
- association of a single debug indicator with each of the cache sets as shown in FIG. 2 is exemplary only. In other embodiments, it may be possible to associate a debug indicator with each instruction in a given cache set.
- a given instruction cache 110 - i utilizes its corresponding debug control bits in the following manner.
- a programmer may write a debug opcode into the cache location that normally would hold the corresponding bytes from main memory.
- the debug control indicator for that cache location is then set to the debug lock state, e.g., from a default state such as the nondbg state.
- the processor 102 - i fetches from the breakpoint address, there will be a hit in the cache and the debug opcode will be returned to the processor, even if the above-described noncacheable attribute has been set for that address.
- the processor then executes the debug opcode and enters the debug mode.
- the cache control logic does not permit this set to be replaced with new data. Instead, the set containing the debug opcode is preserved so that the breakpoint will be taken when the processor fetches from the breakpoint address with the debug control indicator in the debug lock state.
- the debugger changes the debug control indicator for the cache location to the don't use once state and resumes the processor.
- the resumption begins with the processor fetching from the address of the actual instruction.
- the don't use once state of the debug control indicator directs the cache control logic to service the fetch request from main memory instead of using any matching data from the cache.
- the fetch request is forwarded to main memory and the actual instruction is returned from there to the processor.
- the debug control indicator is automatically set back to the debug lock state.
- the contents of the cache location with the debug opcode will be returned.
- the invention can be used in a single-processor system, such as a system including a single processor and associated instruction cache and main memory elements.
- a single-processor system the invention provides the advantage of efficiently resuming the processor after a breakpoint is taken.
- the debug control state changes the handling of the noncacheable attribute so that an exclusive software breakpoint can be set on a noncacheable instruction.
- the processor fetch is serviced by the cache even though the attribute would otherwise prevent it from being serviced by the cache.
- the debug control bits allow exclusive software breakpoints to be set on both cacheable and noncacheable instructions without impacting the other processors in a multiprocessor system such as system 100 .
- FIG. 4 shows a state and flow diagram 400 which illustrates in greater detail the above-described cache-based software breakpoint process as implemented in multiprocessor system 100 .
- the diagram 400 includes an IDLE state 402 and a MISS state 404 .
- step 410 determines (i) if there has been an instruction cache hit for the given processor, and (ii) if the cacheable attribute is present or the debug control indicator is set to debug lock. If either of conditions (i) and (ii) is not satisfied in step 412 , the given processor is stalled and the instruction request is directed to the main memory 104 of the system, as indicated in step 414 .
- Step 416 determines if the debug control indicator is in the don't use once state. If it is, the debug control indicator state is changed to debug lock in step 418 , and the process enters the MISS state 404 . Otherwise, the process enters the MISS state 404 without changing the debug control indicator state.
- step 412 If both conditions (i) and (ii) are satisfied in step 412 , the instruction fetch data is returned from the instruction cache as indicated in step 420 , and the process returns to the IDLE state 402 as indicated.
- step 424 determines if the instruction fetch data has been returned from the main memory. If it has, the process returns the instruction fetch data to the requesting processor as indicated in step 426 , and returns to the IDLE state 402 as indicated. Otherwise, the process returns to the MISS state 404 .
- the cache control logic 112 of FIG. 1 can be implemented using the cache control logic 112 of FIG. 1 .
- the cache control logic may be configured to control the state of the debug control indicator, and to perform other functions associated with the FIG. 4 process.
- suitable arrangements of hardware, software or both for accomplishing these and other operations in the cache control logic will be readily apparent to those skilled in the art.
- FIG. 4 It is also to be appreciated that the particular processing operations shown in FIG. 4 are by way of example only, and should not be construed as limitations of the invention. Those skilled in the art will recognize that the techniques of the invention can be implemented using other arrangements of processing operations.
- FIG. 5 is a more particular example illustrating the operation of a three-processor implementation of the multiprocessor system 100 in accordance with the invention.
- the three processors are denoted P 0 , P 1 and P 2 for purposes of this example.
- the figure includes portions (a) through (d) which represent the changes in the state of the three-processor system 100 as software breakpoints are taken with the debug control mechanism described above. For each of the portions (a) through (d), the states of the three processors are shown. Each line indicates a different aspect of the state of the corresponding processor.
- the Pi state indicates whether the corresponding processor is in a debug state or a nondebug state. These states are also referred to as modes.
- the other states utilized in the figure are as follows:
- Pi cache[ . . . ] V state indicates the state of the valid bit for a specific set in the cache for Pi.
- Pi cache[ . . . ] D state indicates the state of the debug control bit for a specific set in the cache for Pi.
- Pi cache[ . . . ] Tag state indicates the state of the tag part for a specific set in the cache for Pi.
- Data state indicates the state of the data part for a specific set in the cache for Pi.
- index(x) denotes the index field 204 of the address of x.
- cache[y] denotes the set of cache 210 addressed by y.
- tag(z) indicates the tag field 202 of the address of z.
- processor P 0 has an exclusive software breakpoint set on an instruction at the address swbpt in accordance with the techniques of the invention.
- the actual instruction at this address is denoted as bpopcode.
- the debug control indicator for the P 0 cache set at the index given by index(swbpt) is set to debug lock, and the actual instruction bpopcode is replaced by the debug opcode.
- P 0 is in the DEBUG state and P 1 and P 2 remain in the NONDEBUG state.
- the P 0 cache has a debug opcode stored in the set identified by index (swbpt).
- P 0 enters the DEBUG state upon fetching and executing this debug opcode.
- P 1 has made a fetch request to this same address (swbpt). Since the debug control indicator of the corresponding cache set is set to nondbg (normal operation), the actual instruction (bpopcode) is fetched from main memory. This illustrates how P 0 can take an exclusive software breakpoint on the swbpt address without interfering with execution by P 1 of the actual instruction at this address.
- P 0 has completed handling of its debug event.
- the debug control indicator of the cache set holding the debug opcode is changed to don't use once.
- the next fetch to the swbpt address by P 0 will be serviced from main memory.
- the actual instruction (bpopcode) is fetched and returned from main memory without modifying the contents of the cache set.
- the state of the debug control indicator is changed to debug lock.
- P 1 the contents of the set for address swbpt are still in the cache.
- P 2 has not yet fetched the swbpt address.
- P 0 is continuing to execute code other than the breakpoint instruction.
- P 1 has fetched an instruction that has replaced the bpopcode instruction in its cache.
- P 2 has made a fetch request to the swbpt address and brought the instruction at this address into its cache. P 2 will not encounter a debug event since the bytes it fetched from main memory do not include a debug opcode.
- the invention provides exclusive software breakpoint capability in a multiprocessor system with little or no impact on processor cycle time, minimal hardware cost, and without requiring program alteration.
- the action of changing the debug control indicator state from don't use once to debug lock does not take place during the lookup process where the index is used to find a set and the tags are compared. Rather, the action of changing the debug control bit state takes place after the hit or miss determination is compete.
- the executable code of a given user program can be used as is. There is no need to relocate it to private local memory so that the debug opcode can be managed.
- the invention allows exclusive software breakpoints to be used for code that is not cached, e.g., for code that has the noncacheable attribute.
- the invention makes the debugger more efficient when resuming from a breakpoint. With the invention, the debugger no longer has to perform the previously described two-step process of stepping the actual instruction and then replacing the debug opcode. This is a significant performance advantage for the debugger.
- the invention can be implemented at least in part utilizing dedicated hardware which provides the functionality described above but does not otherwise serve as an actual instruction cache in normal operation of a multiprocessor system.
- the dedicated hardware is configured substantially as an instruction cache but is used only in implementing exclusive breakpoints in accordance with the techniques of the invention.
- instruction cache as used herein is intended to include this type of dedicated hardware.
- the present invention may be configured to meet the requirements of a variety of different processing applications and environments, using any desired types and arrangements of processor, instruction cache, bus and main memory elements.
- the above-described embodiments of the invention are therefore intended to be illustrative only, and numerous alternative embodiments may be used.
- the illustrative embodiment utilizes a particular debug control indicator format for breakpointed instructions stored in an instruction cache, other single-bit or multiple-bit indicators can also be used, as can other arrangements of different types of single-bit or multiple-bit indicators.
- the particular manner in which the a debug control indicator is updated may be altered.
- the breakpoint code, instruction, instruction address and cache set configurations may be varied as required to accommodate a given processing application or environment.
- cache architectures may be implemented with the debug control indicator feature of the present invention, including without limitation caches that implement multiple sets associated with each tag, that is, n-way set associative caches where n is 2, 4, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims (16)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/241,400 US7296259B2 (en) | 2002-09-11 | 2002-09-11 | Processor system with cache-based software breakpoints |
JP2003319655A JP4689951B2 (en) | 2002-09-11 | 2003-09-11 | Processor system with cache-based software breakpoints |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/241,400 US7296259B2 (en) | 2002-09-11 | 2002-09-11 | Processor system with cache-based software breakpoints |
Publications (2)
Publication Number | Publication Date |
---|---|
US20040049712A1 US20040049712A1 (en) | 2004-03-11 |
US7296259B2 true US7296259B2 (en) | 2007-11-13 |
Family
ID=31991189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/241,400 Expired - Fee Related US7296259B2 (en) | 2002-09-11 | 2002-09-11 | Processor system with cache-based software breakpoints |
Country Status (2)
Country | Link |
---|---|
US (1) | US7296259B2 (en) |
JP (1) | JP4689951B2 (en) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060190769A1 (en) * | 2005-02-18 | 2006-08-24 | Intel Corporation | Method and system for setting a breakpoint |
US20100070804A1 (en) * | 2003-12-31 | 2010-03-18 | Dominique Bolignano | Method for controlling program execution integrity by verifying execution trace Prints |
US20100332764A1 (en) * | 2007-02-14 | 2010-12-30 | Norman Paul Jouppi | Modular Three-Dimensional Chip Multiprocessor |
CN102567220A (en) * | 2010-12-10 | 2012-07-11 | 中兴通讯股份有限公司 | Cache access control method and Cache access control device |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US20130117732A1 (en) * | 2011-11-09 | 2013-05-09 | Jeffrey David Zoller | Technique to improve performance of software breakpoint handling |
US8615619B2 (en) | 2004-01-14 | 2013-12-24 | International Business Machines Corporation | Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US8689190B2 (en) | 2003-09-30 | 2014-04-01 | International Business Machines Corporation | Counting instruction execution and data accesses |
US8782664B2 (en) | 2004-01-14 | 2014-07-15 | International Business Machines Corporation | Autonomic hardware assist for patching code |
US9164813B2 (en) | 2010-12-16 | 2015-10-20 | International Business Machines Corporation | Using a debug engine to identify threads that wait for a mutex |
US9223680B2 (en) | 2013-03-19 | 2015-12-29 | Kabushiki Kaisha Toshiba | Information processing apparatus and debugging method |
US9262302B2 (en) | 2010-12-16 | 2016-02-16 | International Business Machines Corporation | Displaying values of variables in a first thread modified by another thread |
US9336123B1 (en) * | 2012-02-14 | 2016-05-10 | Cadence Design Systems, Inc. | Method and system for automatically establishing a component description format (CDF) debugging environment |
CN107810486A (en) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | Lock the value of the operand of the instruction group for atomically performing |
US10268558B2 (en) * | 2017-01-13 | 2019-04-23 | Microsoft Technology Licensing, Llc | Efficient breakpoint detection via caches |
US10740220B2 (en) | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7373637B2 (en) * | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US7937691B2 (en) | 2003-09-30 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for counting execution of specific instructions and accesses to specific data locations |
US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US7392370B2 (en) * | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7526616B2 (en) * | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
US7421684B2 (en) * | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
US7299319B2 (en) * | 2004-03-22 | 2007-11-20 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for code coverage |
US8135915B2 (en) * | 2004-03-22 | 2012-03-13 | International Business Machines Corporation | Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator |
FR2880963B3 (en) * | 2005-01-19 | 2007-04-20 | Atmel Corp | SOFTWARE STOPPING POINTS FOR USE WITH MEMORY DEVICES |
US7506206B2 (en) * | 2005-06-07 | 2009-03-17 | Atmel Corporation | Mechanism for providing program breakpoints in a microcontroller with flash program memory |
US7506205B2 (en) * | 2006-02-14 | 2009-03-17 | Atmel Corporation | Debugging system and method for use with software breakpoint |
JP5255887B2 (en) * | 2008-04-08 | 2013-08-07 | ルネサスエレクトロニクス株式会社 | Information processing apparatus and debugging method |
US20120144171A1 (en) * | 2010-12-07 | 2012-06-07 | Jonathan Masters | Mechanism for Detection and Measurement of Hardware-Based Processor Latency |
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
US10289411B2 (en) | 2013-11-18 | 2019-05-14 | Microsoft Technology Licensing, Llc | Diagnosing production applications |
US9632915B2 (en) * | 2014-10-29 | 2017-04-25 | Microsoft Technology Licensing, Llc. | Historical control flow visualization in production diagnostics |
CN107273291B (en) * | 2017-06-14 | 2021-01-01 | 湖南国科微电子股份有限公司 | Processor debugging method and system |
US20190354369A1 (en) * | 2018-05-15 | 2019-11-21 | Sandisk Technologies, Llc | Computing architecture to provide simplified post-silicon debugging capabilities |
JP6981920B2 (en) * | 2018-05-25 | 2021-12-17 | ルネサスエレクトロニクス株式会社 | Semiconductor devices and debugging methods |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0470574A2 (en) * | 1990-08-06 | 1992-02-12 | Fujitsu Limited | Multiprocessor system including cache memories and method of controlling cache memories to maintain coherence of data therebetween |
US5493664A (en) * | 1992-01-24 | 1996-02-20 | Mitsubishi Denki Kabushiki Kaisha | Microcomputer that transfers address and control to a debugging routine when an input address is a breakpoint address and a user accessible register for signalling if the breakpoint address is from the cache memory or a main memory |
US5699551A (en) * | 1989-12-01 | 1997-12-16 | Silicon Graphics, Inc. | Software invalidation in a multiple level, multiple cache system |
US5724505A (en) * | 1996-05-15 | 1998-03-03 | Lucent Technologies Inc. | Apparatus and method for real-time program monitoring via a serial interface |
US5889981A (en) * | 1996-05-07 | 1999-03-30 | Lucent Technologies Inc. | Apparatus and method for decoding instructions marked with breakpoint codes to select breakpoint action from plurality of breakpoint actions |
US6052774A (en) * | 1997-09-09 | 2000-04-18 | Arm Limited | Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command |
US6092186A (en) * | 1996-05-07 | 2000-07-18 | Lucent Technologies Inc. | Apparatus and method for aborting un-needed instruction fetches in a digital microprocessor device |
US6223266B1 (en) * | 1997-08-20 | 2001-04-24 | Cypress Semiconductor Corp. | System and method for interfacing an input/output system memory to a host computer system memory |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
US20020100024A1 (en) * | 2001-01-24 | 2002-07-25 | Hunter Jeff L. | Shared software breakpoints in a shared memory system |
US20020100020A1 (en) * | 2001-01-24 | 2002-07-25 | Hunter Jeff L. | Method for maintaining cache coherency in software in a shared memory system |
US20020152330A1 (en) * | 2001-04-12 | 2002-10-17 | International Business Machines Corporation | Apparatus, method and computer program product for stopping processors without using non-maskable interrupts |
US20020174415A1 (en) * | 2000-06-23 | 2002-11-21 | Hines Kenneth J. | System and method for debugging distributed software environments |
US6505309B1 (en) * | 1998-09-21 | 2003-01-07 | Fujitsu Limited | Processing unit and method of debugging the processing unit |
US20030014736A1 (en) * | 2001-07-16 | 2003-01-16 | Nguyen Tai H. | Debugger breakpoint management in a multicore DSP device having shared program memory |
US20030074650A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Debugger operating system for embedded systems |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6681384B1 (en) * | 1999-12-23 | 2004-01-20 | International Business Machines Corporation | Multi-threaded break-point |
US6691308B1 (en) * | 1999-12-30 | 2004-02-10 | Stmicroelectronics, Inc. | Method and apparatus for changing microcode to be executed in a processor |
US20040111707A1 (en) * | 2000-12-15 | 2004-06-10 | Bliss Andrew L. | Debugger for multiple processors and multiple debugging types |
US20040205747A1 (en) * | 2000-12-21 | 2004-10-14 | Debra Bernstein | Breakpoint for parallel hardware threads in multithreaded processor |
US20050086650A1 (en) * | 1999-01-28 | 2005-04-21 | Ati International Srl | Transferring execution from one instruction stream to another |
US6934937B1 (en) * | 2000-03-30 | 2005-08-23 | Broadcom Corporation | Multi-channel, multi-service debug on a pipelined CPU architecture |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761731A (en) * | 1985-08-14 | 1988-08-02 | Control Data Corporation | Look-ahead instruction fetch control for a cache memory |
JPH03169664A (en) * | 1989-11-30 | 1991-07-23 | Ncr Corp | Bankbook printing machine |
EP0435695B1 (en) * | 1989-12-29 | 1996-05-29 | Canon Kabushiki Kaisha | Ink jet recording apparatus |
US5108205A (en) * | 1991-03-04 | 1992-04-28 | International Business Machines Corp. | Dual lever paper gap adjustment mechanism |
JP2663077B2 (en) * | 1991-03-25 | 1997-10-15 | テクトロニクス・インコーポレイテッド | Ink supply device |
JPH05334082A (en) * | 1992-06-02 | 1993-12-17 | Nec Ic Microcomput Syst Ltd | Microprocessor |
US5309176A (en) * | 1992-08-25 | 1994-05-03 | Sci Systems, Inc. | Airline ticket printer with stepper motor for selectively engaging print head and platen |
JP2731692B2 (en) * | 1993-04-28 | 1998-03-25 | 日本電気アイシーマイコンシステム株式会社 | Debug device |
JPH0744419A (en) * | 1993-08-03 | 1995-02-14 | Nec Ic Microcomput Syst Ltd | Microcomputer development back up device |
JPH07191879A (en) * | 1993-12-27 | 1995-07-28 | Toshiba Corp | Microprocessor provided with executing function of instruction for debugging and debugging method |
US5570959A (en) * | 1994-10-28 | 1996-11-05 | Fujitsu Limited | Method and system for printing gap adjustment |
DE19522593C2 (en) * | 1995-06-19 | 1999-06-10 | Francotyp Postalia Gmbh | Device for keeping the nozzles of an ink print head clean |
US6102509A (en) * | 1996-05-30 | 2000-08-15 | Hewlett-Packard Company | Adaptive method for handling inkjet printing media |
KR100186611B1 (en) * | 1996-06-26 | 1999-05-15 | 김광호 | Paper thickness sensing device of image recording apparatus and recording head auto-controlling apparatus of inkjet recording apparatus and method thereof |
US6113232A (en) * | 1997-12-19 | 2000-09-05 | Hewlett-Packard Company | Stationary pen printer |
US6553513B1 (en) * | 1999-02-19 | 2003-04-22 | Texas Instruments Incorporated | Emulation suspend mode with differing response to differing classes of interrupts |
JP2000267885A (en) * | 1999-03-16 | 2000-09-29 | Toshiba Corp | Breakpoint setting method and computer readable recording medium recording program for setting breakpoint |
US6398330B1 (en) * | 2000-01-04 | 2002-06-04 | Hewlett-Packard Company | Apparatus for controlling pen-to-print medium spacing |
US6862694B1 (en) * | 2001-10-05 | 2005-03-01 | Hewlett-Packard Development Company, L.P. | System and method for setting and executing breakpoints |
-
2002
- 2002-09-11 US US10/241,400 patent/US7296259B2/en not_active Expired - Fee Related
-
2003
- 2003-09-11 JP JP2003319655A patent/JP4689951B2/en not_active Expired - Fee Related
Patent Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699551A (en) * | 1989-12-01 | 1997-12-16 | Silicon Graphics, Inc. | Software invalidation in a multiple level, multiple cache system |
EP0470574A2 (en) * | 1990-08-06 | 1992-02-12 | Fujitsu Limited | Multiprocessor system including cache memories and method of controlling cache memories to maintain coherence of data therebetween |
US5493664A (en) * | 1992-01-24 | 1996-02-20 | Mitsubishi Denki Kabushiki Kaisha | Microcomputer that transfers address and control to a debugging routine when an input address is a breakpoint address and a user accessible register for signalling if the breakpoint address is from the cache memory or a main memory |
US6092186A (en) * | 1996-05-07 | 2000-07-18 | Lucent Technologies Inc. | Apparatus and method for aborting un-needed instruction fetches in a digital microprocessor device |
US5889981A (en) * | 1996-05-07 | 1999-03-30 | Lucent Technologies Inc. | Apparatus and method for decoding instructions marked with breakpoint codes to select breakpoint action from plurality of breakpoint actions |
US5724505A (en) * | 1996-05-15 | 1998-03-03 | Lucent Technologies Inc. | Apparatus and method for real-time program monitoring via a serial interface |
US6223266B1 (en) * | 1997-08-20 | 2001-04-24 | Cypress Semiconductor Corp. | System and method for interfacing an input/output system memory to a host computer system memory |
US6052774A (en) * | 1997-09-09 | 2000-04-18 | Arm Limited | Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
US6505309B1 (en) * | 1998-09-21 | 2003-01-07 | Fujitsu Limited | Processing unit and method of debugging the processing unit |
US20050086650A1 (en) * | 1999-01-28 | 2005-04-21 | Ati International Srl | Transferring execution from one instruction stream to another |
US6681384B1 (en) * | 1999-12-23 | 2004-01-20 | International Business Machines Corporation | Multi-threaded break-point |
US6691308B1 (en) * | 1999-12-30 | 2004-02-10 | Stmicroelectronics, Inc. | Method and apparatus for changing microcode to be executed in a processor |
US6934937B1 (en) * | 2000-03-30 | 2005-08-23 | Broadcom Corporation | Multi-channel, multi-service debug on a pipelined CPU architecture |
US20050188358A1 (en) * | 2000-03-30 | 2005-08-25 | Broadcom Corporation | Multi-channel, multi-service debug on a pipelined CPU architecture |
US20020174415A1 (en) * | 2000-06-23 | 2002-11-21 | Hines Kenneth J. | System and method for debugging distributed software environments |
US20040111707A1 (en) * | 2000-12-15 | 2004-06-10 | Bliss Andrew L. | Debugger for multiple processors and multiple debugging types |
US20040205747A1 (en) * | 2000-12-21 | 2004-10-14 | Debra Bernstein | Breakpoint for parallel hardware threads in multithreaded processor |
US20020100020A1 (en) * | 2001-01-24 | 2002-07-25 | Hunter Jeff L. | Method for maintaining cache coherency in software in a shared memory system |
US20020100024A1 (en) * | 2001-01-24 | 2002-07-25 | Hunter Jeff L. | Shared software breakpoints in a shared memory system |
US20020152330A1 (en) * | 2001-04-12 | 2002-10-17 | International Business Machines Corporation | Apparatus, method and computer program product for stopping processors without using non-maskable interrupts |
US20030014736A1 (en) * | 2001-07-16 | 2003-01-16 | Nguyen Tai H. | Debugger breakpoint management in a multicore DSP device having shared program memory |
US20030074650A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Debugger operating system for embedded systems |
Non-Patent Citations (2)
Title |
---|
Stewart et al., "Non-Stop Monitoring and Debugging on Shared-Memory Multiprocessors," 1997. * |
U.S. Appl. No. 10/072,529, filed Feb. 8, 2002, M.R. Betker et al., "Multiprocessor System with Cache-Based Software Breakpoints." |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8689190B2 (en) | 2003-09-30 | 2014-04-01 | International Business Machines Corporation | Counting instruction execution and data accesses |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US20100070804A1 (en) * | 2003-12-31 | 2010-03-18 | Dominique Bolignano | Method for controlling program execution integrity by verifying execution trace Prints |
US7882396B2 (en) * | 2003-12-31 | 2011-02-01 | Trusted Logic | Method for controlling program execution integrity by verifying execution trace prints |
US8615619B2 (en) | 2004-01-14 | 2013-12-24 | International Business Machines Corporation | Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US8782664B2 (en) | 2004-01-14 | 2014-07-15 | International Business Machines Corporation | Autonomic hardware assist for patching code |
US7840845B2 (en) * | 2005-02-18 | 2010-11-23 | Intel Corporation | Method and system for setting a breakpoint |
US20060190769A1 (en) * | 2005-02-18 | 2006-08-24 | Intel Corporation | Method and system for setting a breakpoint |
US8105882B2 (en) * | 2007-02-14 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Processing a memory request in a chip multiprocessor having a stacked arrangement |
US20100332764A1 (en) * | 2007-02-14 | 2010-12-30 | Norman Paul Jouppi | Modular Three-Dimensional Chip Multiprocessor |
CN102567220A (en) * | 2010-12-10 | 2012-07-11 | 中兴通讯股份有限公司 | Cache access control method and Cache access control device |
US9262302B2 (en) | 2010-12-16 | 2016-02-16 | International Business Machines Corporation | Displaying values of variables in a first thread modified by another thread |
US9164813B2 (en) | 2010-12-16 | 2015-10-20 | International Business Machines Corporation | Using a debug engine to identify threads that wait for a mutex |
US8726244B2 (en) * | 2011-11-09 | 2014-05-13 | Mediatek Singapore Pte. Ltd. | Software breakpoint handling by eliminating instruction replacement and execution under certain conditions |
US20130117732A1 (en) * | 2011-11-09 | 2013-05-09 | Jeffrey David Zoller | Technique to improve performance of software breakpoint handling |
US9336123B1 (en) * | 2012-02-14 | 2016-05-10 | Cadence Design Systems, Inc. | Method and system for automatically establishing a component description format (CDF) debugging environment |
US9223680B2 (en) | 2013-03-19 | 2015-12-29 | Kabushiki Kaisha Toshiba | Information processing apparatus and debugging method |
CN107810486A (en) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | Lock the value of the operand of the instruction group for atomically performing |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN107810486B (en) * | 2015-06-26 | 2021-10-22 | 微软技术许可有限责任公司 | Locking values of operands of an instruction group for atomic execution |
US10268558B2 (en) * | 2017-01-13 | 2019-04-23 | Microsoft Technology Licensing, Llc | Efficient breakpoint detection via caches |
US10740220B2 (en) | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
Also Published As
Publication number | Publication date |
---|---|
JP4689951B2 (en) | 2011-06-01 |
JP2004103024A (en) | 2004-04-02 |
US20040049712A1 (en) | 2004-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7296259B2 (en) | Processor system with cache-based software breakpoints | |
US7168067B2 (en) | Multiprocessor system with cache-based software breakpoints | |
US8140801B2 (en) | Efficient and flexible memory copy operation | |
US7882321B2 (en) | Validity of address ranges used in semi-synchronous memory copy operations | |
US7890703B2 (en) | Cache injection using semi-synchronous memory copy operation | |
USRE49305E1 (en) | Data processing system having cache memory debugging support and method therefor | |
US5226130A (en) | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency | |
US5790823A (en) | Operand prefetch table | |
US7930504B2 (en) | Handling of address conflicts during asynchronous memory move operations | |
US20010052053A1 (en) | Stream processing unit for a multi-streaming processor | |
US20030135719A1 (en) | Method and system using hardware assistance for tracing instruction disposition information | |
US5297281A (en) | Multiple sequence processor system | |
JPH0557617B2 (en) | ||
US20110154111A1 (en) | Memory Based Hardware Breakpoints | |
US5649137A (en) | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency | |
US6360298B1 (en) | Load/store instruction control circuit of microprocessor and load/store instruction control method | |
US5926841A (en) | Segment descriptor cache for a processor | |
WO1997034229A9 (en) | Segment descriptor cache for a processor | |
US9405690B2 (en) | Method for storing modified instruction data in a shared cache | |
US20200034152A1 (en) | Preventing Information Leakage In Out-Of-Order Machines Due To Misspeculation | |
US20010027510A1 (en) | Mircoprocessor and cache controlling method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: AGERE SYSTEMS INC., PENNSYLVANIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BETKER, MICHAEL RICHARD;SCHLIEDER, BRYAN;WHALEN, SHAUN PATRICK;AND OTHERS;REEL/FRAME:013279/0140 Effective date: 20020910 |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AG Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:LSI CORPORATION;AGERE SYSTEMS LLC;REEL/FRAME:032856/0031 Effective date: 20140506 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AGERE SYSTEMS LLC;REEL/FRAME:035365/0634 Effective date: 20140804 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Expired due to failure to pay maintenance fee |
Effective date: 20151113 |
|
AS | Assignment |
Owner name: LSI CORPORATION, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 Owner name: AGERE SYSTEMS LLC, PENNSYLVANIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 |