WO2009117178A1 - Qualification of conditional debug instructions based on address - Google Patents

Qualification of conditional debug instructions based on address Download PDF

Info

Publication number
WO2009117178A1
WO2009117178A1 PCT/US2009/032793 US2009032793W WO2009117178A1 WO 2009117178 A1 WO2009117178 A1 WO 2009117178A1 US 2009032793 W US2009032793 W US 2009032793W WO 2009117178 A1 WO2009117178 A1 WO 2009117178A1
Authority
WO
WIPO (PCT)
Prior art keywords
debug
instruction
memory
address
semantics
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.)
Ceased
Application number
PCT/US2009/032793
Other languages
English (en)
French (fr)
Inventor
William C. Moyer
Michael D. Snyder
Gary L. Whisenhunt
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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
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
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Priority to JP2011500821A priority Critical patent/JP5335887B2/ja
Priority to CN200980106158.4A priority patent/CN101946232B/zh
Publication of WO2009117178A1 publication Critical patent/WO2009117178A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Definitions

  • This disclosure relates generally to data processing systems, and more specifically, to use of a debug instruction in a data processing system.
  • Debug instructions are commonly used during software development to allow debug operations to take place. Once the software has been developed and checked with debug instructions, these debug instructions are removed so as not to cause undesired exceptions in the software application. However, removal of these debug instructions can change the execution characteristics of the system and may be especially problematic in real-time applications.
  • FIG. 1 is a block diagram of a data processing system, in accordance with one or more embodiments of the present invention.
  • FIG. 2 is a block diagram of a processor in accordance with one or more embodiments of the present invention.
  • FIG. 3 is a flow chart that illustrates address-qualified conditional debug operation of one or more embodiments of the present invention.
  • FIG. 4 illustrates operation of one or more embodiments of the present invention using memory paging system attributes to facilitate conditional debug operation based on address.
  • FIG. 5 illustrates operation of one or more embodiments of the present invention using a segment or region marking technique to facilitate conditional debug operation based on address.
  • FIG. 6 illustrates operation of one or more embodiments of the present invention in which a composition of memory paging system and segment or region marking techniques is employed to facilitate conditional debug operation based on address.
  • Debug instructions are supported in various processor implementations to facilitate conditional entry into a debug halted mode or to facilitate generation of a software debug exception (e.g., a debug interrupt).
  • a software debug exception e.g., a debug interrupt
  • a developer is able to initiate debug operations under software control and based on a current state of the execution environment.
  • those debug instructions that remain in production code can trigger undesired exceptions and debug behaviors unless removed or suppressed.
  • removal of the debug instructions tends to change execution characteristics of the system. That is, the code image itself changes since branch targets, page boundaries, and other instruction relationships may change upon removal of the debug instructions. These changes may be particularly problematic in real-time code.
  • a processor implementation that supports selection of an execution mode for debug instruction instances based on respective addresses thereof in addressable memory can provide an attractive mechanism for executing debug instructions in a way that allows some instances of the instructions to operate with debug semantics while suppressing other instances by executing them with no-operation (NOP) semantics.
  • selection of operative execution semantics may be based on attributes of a memory page in which a particular debug instruction instance resides.
  • portions of an address space may be delimited (e.g., using values stored in bounding registers) and addresses of particular debug instruction instances compared against the delimited portions to select appropriate execution semantics.
  • both types of evaluations may be used in selecting appropriate execution semantics for a particular debug instruction instance.
  • a processor that implements a debug notify halt (dnh) instruction is adapted to provide selective execution semantics for instances of the dnh instruction based on memory address or region in which the instance resides.
  • a memory management unit annotates instruction instances (e.g., as they are fetched from memory) in accord with memory page, segment or region match (or mismatch) criteria and execution semantics are selected based on the annotation.
  • decode logic is employed to supply signals or opcodes for a NOP-type instruction implemented by the processor in place of those signals or opcodes ordinarily supplied for execution of a debug instruction for which NOP semantics are not selected.
  • NOP-type instruction implemented by the processor
  • decode logic is employed to supply signals or opcodes for a NOP-type instruction implemented by the processor in place of those signals or opcodes ordinarily supplied for execution of a debug instruction for which NOP semantics are not selected.
  • FIG. 1 illustrates a data processing system 10 consistent with some embodiments of the invention.
  • data processing system 10 may be implemented on a single integrated circuit or on a plurality of integrated circuits.
  • data processing system 10 may be implemented as a system-on-chip.
  • data processing system 10 includes processor(s) 12, external debug circuitry 14, I/O module 16, and memory 18.
  • processor(s) 12 includes processor(s) 12, external debug circuitry 14, I/O module 16, and memory 18.
  • Components of data processing system 10 are interconnected and interoperate using any suitable techniques. For simplicity, we illustrate interconnection amongst major functional blocks via bus 20, although persons of ordinary skill in the art will recognize that any of a variety of interconnection techniques and topologies may be employed without departing from the present invention.
  • processor(s) 12 typically include fetch buffers or other facilities for storing instructions to be executed by the processor(s), decoder and sequencing logic, one or more execution units, and register storage, together with suitable data, instruction and control paths.
  • units of program code e.g., instructions
  • data reside in memory 18, in one or more levels of cache(s) and/or in processor stores (such as a fetch buffer, registers, etc.)
  • processor stores such as a fetch buffer, registers, etc.
  • any of a variety of memory hierarchies may be employed, including designs that separate or commingle instructions and data in memory or cache.
  • Memory 18 may be located on the same integrated circuit as a processor, may be located on a different integrated circuit than processor(s) 12 or may span multiple integrated circuits.
  • memory 18 may include storage of any suitable type, such as, for example, read only memory (ROM), random access memory (RAM), non-volatile memory (e.g., Flash), etc.
  • External debug circuitry 14 may be contained on the same integrated circuit as a processor, or may be implemented as a separate system independent of any integrated circuits or system-on-chip containing processor(s) 12.
  • FIG. 2 is a block diagram of a processor instance corresponding to processor(s) 12 of data processing system 10 (see FIG. 1), now referred to as processor 12.
  • Processor 12 includes an instruction decoder 22, execution units 24, instruction fetch unit 26, control circuitry 28, general purpose registers 30, load/store unit 32, bus interface unit (BIU) 34 and internal debug circuitry 40.
  • Processor 12 communicates with other components of a data processing system via bus 20 coupled to BIU 34.
  • other components include memory (potentially including cache(s)) and I/O components, as previously illustrated with reference to FIG. 1.
  • memory management unit (MMU) 36 coordinates address translations (e.g., in accord with an implemented segmentation or paged memory model) and provides a convenient place to implement some of the conditional debug controls described herein. Accordingly, in the description that follows, we illustrate some designs that include an MMU facility. Nonetheless, based on the description herein, persons of ordinary skill in the art will recognize that other components along the instruction path from memory to execution units 24 (e.g., instruction fetch unit 26 and instruction decoder 22) may host analogous conditional debug controls or portions of the particular controls described, particularly in embodiments that may omit an MMU.
  • Optional cache 37 which may be provided (e.g., on-chip) together with processor 12 in some embodiments.
  • Optional cache 37 is illustrated as an integrated data/instruction cache, although persons of ordinary skill in the art will recognize that separate data and instruction portions may be provided, if desired, and some embodiments may co-locate only a data-portion or only an instruction-portion together with processor 12.
  • Internal debug circuitry 40 monitors activity within processor 12 and, in response to detecting one or more predetermined conditions based on stored debug configuration information present within debug registers 42 or elsewhere within processor 12, may generate one or more data breakpoint events, instruction breakpoint events, instruction execution events such as a branch or trap taken event, an instruction completion event or the like.
  • Internal debug circuitry 40 may be coupled to external debugging units, such as an IEEE ISTO-5001 compliant NexusTM debugging unit via debug port shown in FIG. 2.
  • External debugging units may include all or a portion of external debug circuitry 14 shown in FIG. 1.
  • NexusTM is a trademark of Freescale Semiconductor, Inc., Austin, Texas.
  • Debug port may be a serial interface, such as JTAG, or may be implemented as a parallel port, a combination of serial and parallel ports, or as an Ethernet port.
  • processor 12 may interface internal debug circuitry to other debug circuitry on-chip using an appropriate interconnect or signaling mechanism.
  • internal debug circuitry 40 includes debug registers 42 and debug control circuitry 44.
  • Debug registers 42 typically include bits grouped in fields for controlling various debug related events, including instruction breakpoints, data breakpoints, watchpoints, and other messaging associated with debugging.
  • these debugging resources may be shared between processor 12 and external debug circuitry 14, and, in any case, may be employed to establish predicate states (such as memory page attributes, marked segments or regions, and/or combinations of address-identifiers) that selectively enable (or disable) based on addresses, the conditional debug controls described herein.
  • debug registers 42 provide storage for one or more address comparison values, address ranges, and data match values that may be useful for implementing instruction and/or data access breakpoint and watchpoint events, and other debug control criteria. These address and data values, along with various control criteria, are used to determine when processor 12 accesses one or more predetermined instruction addresses or data addresses for the purpose of generating a breakpoint or watchpoint event, which can cause processor 12 to begin exception processing for a debug exception when internal debug mode is active, or cause processor 12 to enter a debug halted mode in which it responds to commands provided by external debug circuitry 14 through the debug port of internal debug unit 40 when external debug mode is active.
  • debug registers 42 may include debug control registers suitable for storage of debug configuration information, instruction address compare registers and data address compare registers, as well as debug status registers, debug counters and data value compare registers.
  • debug registers 42 may be a visible part of the user's software programming model.
  • Debug counters may be configured to count-down when one or more count-enabled events occur. When a count value reaches zero, a debug count event may be signaled and a debug interrupt may be generated, if enabled.
  • Data value compare registers may store data values for data comparison purposes, such as in the implementation of conditional breakpoints.
  • register resources are managed by software, and no external debug circuitry usage is required.
  • Software may configure the registers through data movement using move to and from special purpose register instructions which are software instructions to initialize the individual debug registers for performing software-based debugging activities.
  • Enabled debug events trigger software debug interrupts.
  • a software interrupt handler may then perform various desired activity which is determined by the software programmer of data processing system 10.
  • external debug circuitry 14 may be assigned ownership of shared debug registers of debug registers 42, and when a configured debug event occurs, processor 12 may enter a halted state and wait for a command to be provided by external debug circuitry 14. Software no longer has control of the shared debug resources when external debug mode is enabled.
  • debug registers 42 include external debug control registers located within debug registers 42 or elsewhere within processor 12, which may not be part of the user's software programming model. That is, software executing on processor 12 may not have visibility of external debug control registers.
  • External debug circuitry 14 may access the shared debug resources and any dedicated external debug resources directly via the debug port (as shown in FIG.
  • debug registers 42 and external debug control registers may be mapped as JTAG data registers with register selection encodings contained within one or more fields for the various JTAG instructions, which provide for read and write accesses to the registers by the debugger through JTAG IR and DR operations.
  • conditional debug-type instruction for which operation of a given instance thereof may be qualified (using techniques described herein) based on the address at which the instance appears in memory addressable by a processor.
  • the examples are the debug notify halt (dnh) instruction and breakpoint instruction codings implemented by processor cores such as e700/e500 and e200 Core families of cores available from Freescale Semiconductor for cost-sensitive, embedded real-time applications such as in the MPC5000 family of automotive microcontrollers (MCUs).
  • the dnh instruction provides a bridge between execution of instructions on the core in a non-halted mode and subsequent operations of an external debug facility.
  • the dnh instruction allows software to transition the core from a running state to a halted state (if enabled by an external debugger), and to notify the external debugger with both a message and bits coded in the instruction itself.
  • the dnh instruction is a conditional debug instruction in that its runtime effect is determined by the state of certain indications that may be set in debug control registers (see e.g., FIG. 2, debug registers 42).
  • a DNH_NOP indication is set by either the external debug facility or by software and a DNH_EN indication is cleared, dnh instruction instances are executed as nops. If a DNH_WPT indication is set, a watchpoint is signaled external to the CPU.
  • Coarse grain control mechanisms allow the dnh instruction to be treated as a nop, when desirable, instead of halting the processor in a debug state or taking an illegal instruction exception.
  • This control allows dnh instructions to remain embedded in the code image of the application after code development, yet remain innocuous by simply acting as nop operations. In this manner, the code image itself need not change, and predictable execution is provided, since branch targets, page boundaries, and other instruction relationships remain unchanged.
  • coarse grain control of all (or even of an entire group of) instances of a dnh-type instruction may not provide adequate granularity to allow a dnh instruction instance in stable code to be treated as a nop, while simultaneously allowing another dnh instruction instance to operate as a halt or watchpoint.
  • a breakpoint (bkpt) instruction can be employed in some embodiments of the present invention as a debug instruction for which address qualification is provided.
  • a breakpoint instruction may not be explicitly defined by the instruction set architecture (ISA), but may be implemented as an illegal instruction opcode, which upon execution, generates an exception or fault that may be dispatched for handling by a debug facility.
  • a bkpt instruction opcode (or some similar instruction coding) may be defined and provided.
  • a breakpoint instruction as if it were a defined instruction set coding (e.g., a bkpt instruction).
  • coarse grain control mechanisms allow the bkpt instruction to be treated as a nop, when desirable, instead of halting the processor in a debug state.
  • This control allows bkpt instructions to remain embedded in the code image of the application after code development, yet remain innocuous by simply acting as nop operations.
  • predictable execution may be provided since branch targets, page boundaries, and other instruction relationships remain unchanged.
  • coarse grain control of all (or a group of) instances of a bkpt instruction may not provide adequate granularity to allow a bkpt instruction instance in stable code to be treated as a nop, while simultaneously allowing another bkpt instruction instance to operate as a breakpoint.
  • FIG. 3 is a flow chart that illustrates setup and operation of an address-qualified conditional debug technique in accordance with one or more embodiments of the present invention.
  • a setup 301 sequence is illustrated for address- qualified conditional debug.
  • individual code blocks are considered (311 ) for disabling (or enabling) of debug-type instruction instances such as dnh, dnh2, bkpt, etc. appearing therein.
  • code blocks can be of any suitable granularity and may correspond to functions, procedures, modules, sub-sequences of instructions, etc.
  • setup sequence 301 stores corresponding page frame identifiers, segment identifiers, region identifiers (e.g., as base address/mask pairs) and/or any other address- based qualifiers for varying operation or behavior of individual debug instruction instances.
  • each instruction (or group of instructions) is fetched (321), typically from memory or cache in preparation for decode and eventual execution of the instruction (or instructions) in accord with program sequencing.
  • the particular memory address at which the particular instance is found in memory is checked (322) against address-based qualifiers in store 310. If a page, segment or range of memory addresses indicated in store 310 matches (323) the particular memory address of the debug-type instruction instance, then debug execution semantics are suppressed (324) for that instruction instance.
  • a nop instruction opcode is substituted for the matching instruction instance by an instruction fetch or decode unit (see e.g., FIG. 2, instruction fetch unit 26, instruction decoder 22) although other suppression mechanisms may be employed, if desired.
  • the corresponding instruction (with debug execution semantics are suppressed) is executed (325).
  • FIG. 4 illustrates operation of one or more embodiments of the present invention in which memory paging system attributes are used to facilitate conditional debug operation based on the memory address of a particular debug instruction instance.
  • address-based qualifiers are represented in a store based on indications supplied from debug hardware and/or software. More specifically, in the illustration of FIG. 4, debug- related page frame attributes are supplied (405) and encoded in one or more paged memory management stores (e.g., page tables, translation lookaside buffer (TLB) entries, etc.) illustrated collectively as page translations 410.
  • paged memory management stores e.g., page tables, translation lookaside buffer (TLB) entries, etc.
  • Persons of ordinary skill in the art will appreciate any of a variety of suitable implementations for MMU 450 and, more generally, for a paged memory management system. For clarity, and without limitation on the range of suitable implementations, we illustrate only those aspects of a simplified paging system pertinent to an illustration of our techniques.
  • MMU 450 provides translations of virtual addresses (e.g., instruction fetch address 427) to physical addresses in addressable storage (e.g., physical address 499 corresponding to location 471 in memory and/or cache 420).
  • addressable storage e.g., physical address 499 corresponding to location 471 in memory and/or cache 420.
  • addressable storage is viewed at page frame level of granularity, such that a page frame corresponding to virtual address 498 is mapped using page translations 410 to a corresponding page (e.g., physical page 458) in physical address space.
  • page attributes 411 are coded in association with mappings 412.
  • write- through (W), caching-inhibited (I), memory-coherency-required (M), guarded (G) and endianness (E) attributes may be specified as constituent indications within page attributes 411 that are associated with individual translations.
  • W write- through
  • I caching-inhibited
  • M memory-coherency-required
  • G guarded
  • E endianness
  • D debug-disable
  • page attributes 411 may be provided (in some implementations) using an attribute specifically defined in the paging system implementation or (in other implementations) using an otherwise unallocated user-definable page attribute.
  • the particular debug-disable (D) indication 413 retrieved from page translations 410 in connection with fetch of a particular debug-type instruction instance stored at addressed location 471 is used to determine execution semantics for the fetched instruction instance.
  • virtual-to-physical page translations 418 and 419 correspond to respective physical pages 458 and 459 in physical address space. Accordingly, based on corresponding debug-disable (D) indications set (405) in page translations 410, debug-type instruction instances fetched from physical addresses within pages 458 and 459 are executed with nop semantics.
  • debug-disable (D) indication 413 indicates that a corresponding debug-type instruction should be executed with nop semantics.
  • other coding senses may be employed.
  • nop semantics may be provided in any of a variety of ways.
  • MMU 450 may annotate (452) the fetched debug-type instruction instance (or the cache line or other fetch unit in which the debug-type instruction instance appears) to mark it for later substitution (or overloading) at a convenient point along an instruction path.
  • the opcode of a debug-type instruction instance so annotated may be replaced (or overloaded) with a nop instruction opcode in fetch unit 426 (e.g., at 453) or in instruction decoder 422 (e.g., at 454).
  • MMU 450 could itself substitute or overload the nop instruction opcode, although this presumes a level of instruction set knowledge generally not provided in a memory management unit.
  • FIG. 5 illustrates operation of one or more embodiments of the present invention in which a segment or region marking technique is used to facilitate conditional debug operation based on the memory address of a particular debug instruction instance.
  • address-based qualifiers are represented in storage based on indications supplied (505) from debug hardware and/or software. More specifically, in the illustration of FIG. 5, address base/mask pairs (511 ... 512) are used to mark corresponding segments or regions (561 , 562) of addressable storage represented in memory and/or cache 518. Instruction fetch address 527 is compared against address base/mask pairs using a collection of comparators (516 ... 517) and based on a match, an indication 513 is supplied that results in annotation (552) and/or substitution/overloading (at a convenient point along an instruction path) of the corresponding debug-type instruction instance(s).
  • debug-type execution semantics of the instruction instance retrieved from location 571 in addressable memory are suppressed based on correspondence of the instruction fetch address 527 with one or more of the address base/mask pairs (511 ... 512).
  • address base/mask pair indicates that a corresponding debug-type instruction is to be executed with nop semantics, although other coding senses may be employed.
  • convenient points along the instruction path include a fetch unit or instruction decoder.
  • FIG. 6 illustrates operation of one or more embodiments of the present invention in which a composition of memory paging system and marking techniques are employed to facilitate conditional debug operation based on address.
  • address-based qualifiers are represented in storage based on indications supplied (605) from debug hardware and/or software.
  • page frame attributes are encoded in one or more paged memory management stores (e.g., page tables, translation lookaside buffer (TLB) entries, etc.) illustrated collectively as page translations 610.
  • page translations 610 e.g., page tables, translation lookaside buffer (TLB) entries, etc.
  • entry 618 thereof (which corresponds to instruction fetch address 627) provides the translation that identifies page 658 as the page in addressable memory in which location 671 (and the fetched debug instruction) resides.
  • address base/mask pairs (e.g., address base/mask pair 611 ) are used to mark corresponding region 661 within page 658 and to further delimit the portion of addressable storage for which debug-type execution semantics are to be suppressed.
  • FIG. 6 illustrates an AND composition (see logic 699) of (i) results of a comparison (616) between instruction fetch address 627 and contents of address base/mask pair 611 and (ii) the debug-disable (D) indication 613 retrieved from page translations 610 in connection with the corresponding fetch of a particular debug instruction instance stored at addressed location 671.
  • the illustrated configuration provides a mechanism for narrowing the set of memory locations for which debug execution semantics are to be suppressed to a subset of those appearing in pages having debug- disable (D) indications.
  • compositions of page and region indicators are possible and envisioned.
  • a NOT-AND composition can be used to exclude addressable locations that match address base/mask pair 611 from those that otherwise fall within the coverage of a page for which a debug-disable (D) indication has been coded.
  • an OR composition can be used to include addressable locations that either match address base/mask pair 611 or fall within the coverage of a page for which a debug-disable (D) indication has been coded.
  • annotation e.g., 652
  • substitution/overloading at a convenient point along an instruction path
  • debug-type execution semantics of the instruction instance retrieved from location 671 in addressable memory are suppressed based on correspondence of the instruction fetch address 627 with both (i) an entry (618) of translations 610 in which a set debug-disable (D) indication 613 appears and (ii) contents of address base/mask pair (611 ).
  • the debug-disable (D) indication and address base/mask pair cover debug-type instruction instances that are to be executed with nop semantics, although other coding senses may be employed.
  • convenient points along the instruction path for substitution/overloading with a nop opcode include a fetch unit or instruction decoder.
  • Process identifiers PID or address space identifiers (ASID) are often employed in processor implementations and can be used to provide each execution process with its own unique virtual address space. Accordingly, in some embodiments of the present invention, all or a portion of such a PID or ASID field value may be used in a comparison that establishes a set of addresses for which debug-type or nop execution semantics is desired. For example, such a use of PID or ASID field values may include (or exclude) those addresses that fall within a virtual address space associated with a particular process or thread in (or from) a set for which particular execution semantics are specified.
  • virtualization techniques may be employed. Virtualization often establishes logical partitions which operate independent of each other in distinct address spaces. For example, some multithreaded processor implementations, each virtual processor may be assigned to a logical partition. Similarly, in a multi-processor system, each physical processor may be assigned to a logical partition. In general, logical partition assignments may be made by assigning partition ID (LPID) values. A partition ID value forms an extension of the virtual address and can be used to match against the logical partition value for each TLB entry during address translation. Accordingly, in some embodiment of the present invention, all or a portion of a LPID field value may be included as an input to range comparison logic to allow for further specification of one or more virtual address spaces or partitions.
  • LPID partition ID
  • address space comparisons may be employed separately or in combination with lookup or comparisons illustrated or described with reference to FIGS. 3-6.
  • similar functionality could be provided by marking appropriate page attributes on those pages that correspond to an address space; however, marking/unmarking the pages can be time consuming or inconvenient. Therefore, in some embodiments, the preceding alternatives may be attractive.
  • a class of debug instructions allow for grouping of debug instructions into independent groups, where each group has independent control over the action or actions to be taken upon execution, thereby providing additional debug flexibility. These groups may be independently controlled, and the resulting actions may be dynamically modified by either a hardware or software debugger. Techniques of the present invention may also be employed to provide address-qualification for group-delimited debug instructions.
  • Embodiments of the present invention may be implemented using any of a variety of different information processing systems. Accordingly, while FIGS. 1 and 2, together with their accompanying description relate to exemplary data processing system and processor architectures, these exemplary architectures are merely illustrative. Of course, architectural descriptions herein have been simplified for purposes of discussion and those skilled in the art will recognize that illustrated boundaries between logic blocks or components are merely illustrative and that alternative embodiments may merge logic blocks or circuit elements and/or impose an alternate decomposition of functionality upon various logic blocks or circuit elements.
  • Articles, system and apparati that implement the present invention are, for the most part, composed of electronic components, circuits and/or code (e.g., software, firmware and/or microcode) known to those skilled in the art and functionally described herein. Accordingly, component, circuit and code details are explained at a level of detail necessary for clarity, for concreteness and to facilitate an understanding and appreciation of the underlying concepts of the present invention. In some cases, a generalized description of features, structures, components or implementation techniques known in the art is used so as to avoid obfuscation or distraction from the teachings of the present invention.
  • code e.g., software, firmware and/or microcode
  • program and/or “program code” are used herein to describe a sequence or set of instructions designed for execution on a computer system. As such, such terms may include or encompass subroutines, functions, procedures, object methods, implementations of software methods, interfaces or objects, executable applications, applets, servlets, source, object or intermediate code, shared and/or dynamically loaded/linked libraries and/or other sequences or groups of instructions designed for execution on a computer system.
  • All or some of the program code described herein, as well as any software implemented functionality of information processing systems described herein, may be accessed or received by elements of an information processing system, for example, from computer readable media or via other systems.
  • computer readable media may be permanently, removably or remotely coupled to an information processing system.
  • Computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; MRAM; volatile storage media including registers, buffers or caches, main memory, RAM, etc.; and media incident to data transmission including transmissions via computer networks, point-to-point telecommunication equipment, and carrier waves or signals, just to name a few.
  • magnetic storage media including disk and tape storage media
  • optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media
  • nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM
  • ferromagnetic digital memories such as FLASH memory, EEPROM, EPROM,

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
PCT/US2009/032793 2008-03-17 2009-02-02 Qualification of conditional debug instructions based on address Ceased WO2009117178A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011500821A JP5335887B2 (ja) 2008-03-17 2009-02-02 アドレスに基づく条件付きデバッグ命令を認証するデバッグ方法、制御方法、およびデバッグ装置
CN200980106158.4A CN101946232B (zh) 2008-03-17 2009-02-02 基于地址的条件调试指令的认定

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/049,984 2008-03-17
US12/049,984 US8261047B2 (en) 2008-03-17 2008-03-17 Qualification of conditional debug instructions based on address

Publications (1)

Publication Number Publication Date
WO2009117178A1 true WO2009117178A1 (en) 2009-09-24

Family

ID=41064277

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2009/032793 Ceased WO2009117178A1 (en) 2008-03-17 2009-02-02 Qualification of conditional debug instructions based on address

Country Status (5)

Country Link
US (1) US8261047B2 (enExample)
JP (1) JP5335887B2 (enExample)
CN (1) CN101946232B (enExample)
TW (1) TWI464576B (enExample)
WO (1) WO2009117178A1 (enExample)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6858615B2 (en) 2002-02-19 2005-02-22 Parion Sciences, Inc. Phenyl guanidine sodium channel blockers
AR086745A1 (es) 2011-06-27 2014-01-22 Parion Sciences Inc 3,5-diamino-6-cloro-n-(n-(4-(4-(2-(hexil(2,3,4,5,6-pentahidroxihexil)amino)etoxi)fenil)butil)carbamimidoil)pirazina-2-carboxamida
US8700955B2 (en) * 2011-09-22 2014-04-15 Freescale Semiconductor, Inc. Multi-processor data processing system having synchronized exit from debug mode and method therefor
US9029382B2 (en) 2012-12-17 2015-05-12 Parion Sciences, Inc. 3,5-diamino-6-chloro-N-(N-(4-phenylbutyl)carbamimidoyl) pyrazine-2-carboxamide compounds
BR112015014349A2 (pt) 2012-12-17 2017-07-11 Parion Sciences Inc derivados de cloro-pirazina carboxamida úteis para o tratamento de doenças favorecidas por hidratação mucosa insuficiente
US9330011B2 (en) * 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9411745B2 (en) * 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9102633B2 (en) 2013-12-13 2015-08-11 Parion Sciences, Inc. Arylalkyl- and aryloxyalkyl-substituted epithelial sodium channel blocking compounds
US9600505B2 (en) * 2014-09-23 2017-03-21 Sap Se Code optimization based on customer logs
TWI566090B (zh) * 2014-10-17 2017-01-11 Insyde Software Corp Debugging firmware / software to produce tracking systems and methods, recording media and computer program products
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US9886194B2 (en) * 2015-07-13 2018-02-06 Samsung Electronics Co., Ltd. NVDIMM adaptive access mode and smart partition mechanism
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
US11074988B2 (en) * 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10628288B2 (en) 2016-07-22 2020-04-21 International Business Machines Corporation Debugger that correlates differing values to system environments in a distributed system
US10191836B2 (en) 2016-12-28 2019-01-29 Nxp Usa, Inc. Software watchpoints apparatus for variables stored in registers
US10599555B2 (en) * 2017-09-20 2020-03-24 Texas Instruments Incorporated Context-sensitive debug requests for memory access
TWI659361B (zh) * 2018-01-09 2019-05-11 國立中央大學 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品
US11010280B1 (en) * 2019-03-13 2021-05-18 Parallels International Gmbh System and method for virtualization-assisted debugging
CN111984325B (zh) * 2019-05-23 2024-12-24 三星电子株式会社 提高分支预测吞吐量的装置及系统
CN111898120B (zh) * 2020-06-29 2023-10-10 中国科学院信息工程研究所 控制流完整性保护方法及装置
TWI790506B (zh) * 2020-11-25 2023-01-21 凌通科技股份有限公司 開發介面系統與在開發介面進行大量資料傳輸方法
TWI764581B (zh) * 2021-02-22 2022-05-11 群聯電子股份有限公司 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統
CN112820341B (zh) * 2021-03-03 2024-05-07 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统
GB2605796B (en) * 2021-04-13 2023-06-28 Advanced Risc Mach Ltd Apparatus and method for generating debug information

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154463A1 (en) * 2002-02-08 2003-08-14 Betker Michael Richard Multiprocessor system with cache-based software breakpoints
US20050240820A1 (en) * 2004-03-31 2005-10-27 Vannerson Eric F Method and apparatus for multiprocessor debug support
US20070006158A1 (en) * 2005-05-27 2007-01-04 Matsushita Electric Industrial Co., Ltd. Instruction execution device, debugging method, debugging device, and debugging program

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
JPS6476233A (en) * 1987-09-18 1989-03-22 Fujitsu Ltd Tracing device
JPH02214949A (ja) * 1989-02-16 1990-08-27 Nec Corp システム資源の使用状態表示装置
US5491793A (en) * 1992-07-31 1996-02-13 Fujitsu Limited Debug support in a processor chip
JPH1011320A (ja) * 1996-06-19 1998-01-16 Matsushita Electric Ind Co Ltd 計算機等の処理装置におけるromプログラムモニタ装置
US6289300B1 (en) * 1998-02-06 2001-09-11 Analog Devices, Inc. Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit
JP2000235510A (ja) * 1999-02-15 2000-08-29 Hitachi Ltd プロセッサおよびそのためのコンパイルプログラム記録媒体
US6587967B1 (en) * 1999-02-22 2003-07-01 International Business Machines Corporation Debugger thread monitor
US6834338B1 (en) * 2000-02-18 2004-12-21 Texas Instruments Incorporated Microprocessor with branch-decrement instruction that provides a target and conditionally modifies a test register if the register meets a condition
US6865663B2 (en) * 2000-02-24 2005-03-08 Pts Corporation Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode
JP2002189613A (ja) * 2000-12-21 2002-07-05 Toshiba Corp ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体
GB0125628D0 (en) * 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
US20050289396A1 (en) * 2004-06-25 2005-12-29 Hooper Donald F Conditional breakpoint using breakpoint function and breakpoint command
US7237149B2 (en) * 2005-02-25 2007-06-26 Freescale Semiconductor, Inc. Method and apparatus for qualifying debug operation using source information
EP1736881A1 (en) * 2005-06-15 2006-12-27 Research In Motion Limited Controlling collection of debugging data
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154463A1 (en) * 2002-02-08 2003-08-14 Betker Michael Richard Multiprocessor system with cache-based software breakpoints
US20050240820A1 (en) * 2004-03-31 2005-10-27 Vannerson Eric F Method and apparatus for multiprocessor debug support
US20070006158A1 (en) * 2005-05-27 2007-01-04 Matsushita Electric Industrial Co., Ltd. Instruction execution device, debugging method, debugging device, and debugging program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"6th International Conference on VLSI and CAD, IEEE, 1999", ISBN: 0-7803-5727-2, article YEON-HO IM. ET AL.: "Co-development of Media-processor and Source-level Debugger using Hardware Emulation-based Validation", pages: 95 - 98 *

Also Published As

Publication number Publication date
JP2011514606A (ja) 2011-05-06
CN101946232A (zh) 2011-01-12
TW200945022A (en) 2009-11-01
CN101946232B (zh) 2014-11-26
TWI464576B (zh) 2014-12-11
JP5335887B2 (ja) 2013-11-06
US8261047B2 (en) 2012-09-04
US20090235059A1 (en) 2009-09-17

Similar Documents

Publication Publication Date Title
US8261047B2 (en) Qualification of conditional debug instructions based on address
JP5778283B2 (ja) データ処理装置のデバッグ処理
JP5546859B2 (ja) プロセッサ命令セット動作モードを比較するデバッグ回路
US7334161B2 (en) Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
US9003376B2 (en) Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems
KR101793318B1 (ko) 명령어 에뮬레이션 프로세서, 방법 및 시스템
US8024620B2 (en) Dynamic address-type selection control in a data processing system
CN103119566A (zh) 数据处理装置的除错
US7689815B2 (en) Debug instruction for use in a data processing system
US7870430B2 (en) Method and apparatus for sharing debug resources
US7870434B2 (en) Method and apparatus for masking debug resources
CN113474754A (zh) 有条件退让给管理程序指令
US20150186140A1 (en) Opcode trapping
JPH0675858A (ja) キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980106158.4

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09721895

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011500821

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09721895

Country of ref document: EP

Kind code of ref document: A1