WO2008050076A1 - Performing diagnostic operations upon an asymmetric multiprocessor apparatus - Google Patents

Performing diagnostic operations upon an asymmetric multiprocessor apparatus Download PDF

Info

Publication number
WO2008050076A1
WO2008050076A1 PCT/GB2007/003223 GB2007003223W WO2008050076A1 WO 2008050076 A1 WO2008050076 A1 WO 2008050076A1 GB 2007003223 W GB2007003223 W GB 2007003223W WO 2008050076 A1 WO2008050076 A1 WO 2008050076A1
Authority
WO
WIPO (PCT)
Prior art keywords
execution
diagnostic
master
mechanisms
unit
Prior art date
Application number
PCT/GB2007/003223
Other languages
French (fr)
Inventor
Simon Andrew Ford
Alastair David Reid
Katherine Elizabeth Kneebone
Edmund Grimley-Evans
Original Assignee
Arm Limited
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 Arm Limited filed Critical Arm Limited
Priority to EP07789311A priority Critical patent/EP2076837B1/en
Priority to DE602007009857T priority patent/DE602007009857D1/en
Priority to CN2007800396948A priority patent/CN101529391B/en
Priority to KR1020097010591A priority patent/KR101325229B1/en
Priority to JP2009533925A priority patent/JP5054115B2/en
Publication of WO2008050076A1 publication Critical patent/WO2008050076A1/en
Priority to IL197314A priority patent/IL197314A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Definitions

  • This invention relates to data processing systems. More particularly, this invention relates to the provision of diagnostic mechanisms for use with asymmetric multiprocessor apparatus.
  • Diagnostic mechanisms such as debug mechanisms, trace mechanisms and profiling mechanisms, are increasingly significant in the field of data processing system development. As data processing systems become more complex, and the time for their development and testing becomes shorter, there is an increasing need for powerful and easy-to-use diagnostic mechanisms that can be used to identify problems associated with data processing systems and improve the performance of those data processing systems by adjusting their design and configuration.
  • a symmetric multiprocessor system typically include a plurality of identical processor cores each having an identical coherent view of program and data memory and operating system software is responsible for allocating the tasks/threads to be performed to the individual processors and for migrating a task/thread between processors. That is, a single thread of program instruction execution is time- multiplexed between a plurality of processors under operating system control.
  • the operating system can be used to determine where individual tasks/threads are being executed and provide a programmer with the appearance of a single thread executing on a single processor even when the operating system scheduling migrates execution from one processor to another processor.
  • Such an approach is limited to processors which are identical and where migration is performed by the operating system, i.e. without being triggered by the program itself.
  • symmetric multiprocessor systems can improve processing performance, they are inefficient to some degree. As an example, if the processing to be performed requires some operations which would best be performed by a DSP type core (e.g. highly numerically intensive and repetitive) and other tasks better performed by a general purpose processor (e.g.
  • a symmetric multiprocessor is a relatively inefficient way of implementing such processing. This has been recognised and it is known to provide asymmetric multiprocessing (AMP) systems.
  • AMP asymmetric multiprocessing
  • An example of such a system would be the OMAP platform designed by Texas Instruments. Within such platforms multiple different processors are provided with each of these having characteristics making it better suited to some tasks over others.
  • an asymmetric multiprocessor may include a DSP core as well as a general purpose microprocessor core. Whilst such asymmetric multiprocessors have strong advantages in terms of the processing performance they can deliver with relatively low cost and low power consumption, they are more difficult to program and develop due to their heterogeneous nature.
  • the present invention provides an asymmetric multiprocessor apparatus comprising: a plurality of execution mechanisms responsive to respective program instructions to perform data processing operations, a thread of program instruction execution being time-multiplexed between said plurality of execution mechanisms; a plurality of slave diagnostic units each associated with a respective execution mechanism to perform diagnostic operations thereupon; a master diagnostic unit coupled to said plurality of slave diagnostic units and responsive to a migration of execution of a given thread between execution mechanisms to make a corresponding change in which of said slave diagnostic units is currently active to perform diagnostic operations in respect of said given thread such that said master diagnostic tracks changes in which execution mechanism is executing said given thread.
  • the present technique provides a structure in which the respective execution mechanisms within the asymmetric multiprocessor are provided with their own slave diagnostic units. These slave diagnostic units are coupled to a master diagnostic unit which has the responsibility for tracking the migration of threads between execution units and thereby enable the provision of a single view of the execution of a given thread even when this is split across different execution mechanisms within the asymmetric multiprocessor system. This significantly eases the task of identifying and understanding problems which arise with the programming configuration since individual threads of execution may be tracked across such a heterogeneous environment, e.g. code split across processors in an AMP system can be debugged as a single entity.
  • an asymmetric multiprocessor may be asymmetric by virtue of having an asymmetric memory hierarchy, it may also be asymmetric by virtue of at least some of the execution mechanisms differing in their processing architecture. This is commonly the case such that different processors can be targeted at different types of task and the present techniques are useful in assisting the programmer in dealing with such complexity.
  • the present technique is able to cope with systems in which it is the program itself which controls migration of tasks between execution mechanisms.
  • a particularly efficient way of achieving this is one in which a synchronous remote procedure call from one execution mechanism to another execution mechanisms initiates migration of execution of a thread.
  • the migration is being performed explicitly by the program and the remote procedure calls may be performed by one of a pool of routines which can execute on the callee execution mechanisms and target different destination execution mechanisms.
  • the usability of the present technique is enhanced when the master diagnostic unit provides a diagnostic output from execution of a given thread by an execution mechanism and is responsive to a change in the execution mechanism for that thread to make a corresponding change in the diagnostic output such that the programmer can recognise that a migration of execution mechanism has occurred. It is often be the case that problems with a program are associated with migration and accordingly •this information is useful to the programmer.
  • the slave diagnostic units associated with the different execution mechanisms may require programming to perform diagnostic operations upon particular threads of execution.
  • the master diagnostic unit which has tracked the threads as they are executed by different execution mechanisms, is able to direct the diagnostic commands in respect of a given thread to the slave diagnostic unit associated with that given thread at the relevant time.
  • the diagnostic units could take a wide variety of different forms. For example, they may be breakpoint units, watchpoint units, trace units and/or profiling units. These diagnostic units can be provided by pure hardware,, a mixture of hardware and software or pure software. Some diagnostic units are better suited for implementation in hardware, such as tracing units which require particularly high bandwidth in order to trace the real time operation of processors.
  • the execution mechanisms can take a wide variety of different forms as discussed above.
  • the execution mechanisms can include one or more of a general purpose processor, a direct memory access unit, a coprocessor, a VLIW processor, a digital signal processor and/or a hardware accelerator unit.
  • a general purpose processor a general purpose processor
  • a direct memory access unit a coprocessor
  • a VLIW processor a VLIW processor
  • a digital signal processor and/or a hardware accelerator unit.
  • These various forms of execution mechanism other than the general purpose processor can be considered as a variety of different forms of special purpose processor.
  • the asymmetric memory hierarchy discussed above can similarly be formed in a variety of different ways.
  • the memories provided may be cache memories, private memories, shared memories or global memories. These will be mixed together in an asymmetric form, which may be efficient for the ultimate implementation and use of the asymmetric multiprocessor apparatus, but which provides an increased level of difficulty in performing diagnostic operations upon the system. It will be appreciated that a parallel system typically contains multiple threads each of which may be time-multiplexed across the plurality of execution mechanisms.
  • the present invention provides a method of performing diagnostic operations upon an asymmetric multiprocessor apparatus, said method comprising the steps of: in response to respective program instructions performing data processing operations with a plurality of execution mechanisms, a thread of program instruction execution being time-multiplexed between said plurality of execution mechanisms; performing diagnostic operations upon said plurality of execution mechanisms with respective slave diagnostic units associated therewith; using a master diagnostic unit coupled to said plurality of slave diagnostic units and responsive to a migration of execution of a given thread between execution mechanisms to make a corresponding change in which of said slave diagnostic units is currently active to perform diagnostic operations in respect of said given thread such that said master diagnostic tracks changes in which execution mechanism is executing said given thread.
  • Figure 1 schematically illustrates an asymmetric multiprocessor apparatus in accordance with one example of the present technique
  • Figure 2 schematically illustrates the migration of execution of a given thread within a program between different execution mechanisms and the tracking of such migration by the master diagnostic unit;
  • Figure 3 is a flow diagram schematically illustrating the initiation of diagnostic operations and the tracking of thread migration.
  • Figure 4 is a flow diagram schematically illustrating the initial programming of the diagnostic mechanisms of the present technique in accordance with one example embodiment.
  • FIG. 1 schematically illustrates an asymmetric multiprocessor apparatus 2 connected to a general purpose computer 4.
  • the general purpose computer is used to program and control diagnostic operations.
  • the asymmetric multiprocessor apparatus 2 comprises a plurality of execution mechanisms in the form of a general purpose processor 6, a digital signal processor 8, an accelerator 10 and a direct memory access (DMA) unit 12.
  • DMA direct memory access
  • asymmetric multiprocessor apparatus such as an VLIW processor and/or a coprocessor.
  • such an asymmetric multiprocessor apparatus may include multiple execution mechanisms of a given type, which may be identical, as well as one or more execution mechanisms of a different type, e.g. a single general purpose processor with multiple DSP units.
  • the asymmetric multiprocessor apparatus 2 of Figure 1 has an asymmetric memory hierarchy comprising a cache memory 14, which is local to the general purpose processor 6, a shared memory 16 which is accessible to the accelerator 10, the general purpose processor 6 and the DMA unit 12 and a private memory 18.
  • the private memory 18 is accessible only to the DSP unit 8 and the DMA unit 12.
  • the DMA unit 12 is controlled by the general purpose processor 6, which sets up DMA operations to be performed by the DMA unit 12. These will typically include transferring data between the private memory 18 and the shared memory 16.
  • a block of input data may be transferred from the shared memory 16 under control of the general purpose processor 6 into the private memory 18 where it can be subject to intensive numeric processing by the DSP unit 8 before the results of that processing are recovered from the private memory 18 into the shared memory 16 by the general purpose processor 6.
  • the processing being performed by the DSP unit 8 is part of the same program thread, which is also at least partially running on the general purpose processor 6, and when the point within that thread is reached at which processing by the DSP unit 8 is required, then a synchronous remote procedure call is made from the general purpose processor 6 to the DSP unit 8 to initiate processing upon the DSP unit 8.
  • a further synchronous remote procedure call is made to elsewhere or a simple return from the remote-procedure call can be made.
  • each of the execution mechanisms 6, 8 and 10 in- elude respective slave diagnostic unit 20, 22 and 24.
  • the DMA unit 12, as this operates only under control of the general purpose processor 6, does not have its own slave diagnostic unit.
  • the different processor architectures provided by the different execution mechanisms 6, 8, 10 will mean that the slave diagnostic units 20, 22 and 24 have different forms and capabilities, as well as requir- ing different types of programming, and produce different forms of output. This diversity across an asymmetric multiprocessor apparatus 2 is what conventionally presents difficulty to a programmer trying to understand the execution of a given thread which migrates between different execution mechanisms 6, 8, 10.
  • a master diagnostic unit 26 which is coupled to each of the slave diagnostic units 20, 22, 24.
  • the master diagnostic unit via the slave diagnostic units 20, 22, 24, serves to monitor program thread migration, such as by identifying synchronous remote procedure calls and returns.
  • the master diagnostic unit 26 is connected to a general purpose computer 4 which is used to program diagnostic operations to be performed and monitor the diagnostic output and display the diagnostic output to a programmer.
  • the master diagnostic unit 26 can be provided as a hardware component, as a mixed hardware and software component, or as a pure software component executing upon the general purpose computer 4.
  • the slave diagnostic units 20, 22 and 24 are illustrated as being provided within each of their respective execution mechanisms 6, 8, 10, but it will be appreciated that the slave diagnostic units 20, 22, 24 could be separately provided outside of the execution mechanisms 6, 8, 10 concerned.
  • a slave diagnostic unit can be shared between multiple execution mechanisms, e.g. a tracing unit which is monitoring data being written to or read from the shared memory 16 will perform tracing in respect of more than one of the execution mechanisms 6, 8, 10. Nevertheless, such a tracing unit would be associated with at least one of the execution mechanisms in that it performed tracing in respect of at least one of the execution_rnechanisrns.
  • Figure 2 is a diagram schematically illustrating the migration of a given thread of program execution between different execution mechanisms.
  • execution mechanisms there are three different execution mechanisms. These may be considered to correspond to the general purpose processor 6, the DSP unit 8 and the accelerator 10 of Figure 1 , although other mappings to different execution mechanisms would equally be possible.
  • the program thread starts execution upon execution mechanism 1 and then is subject to migration via a synchronous remote procedure call to execution mechanism 2. After executing upon execution mechanism 2 for a period of time a return is made to execution mechanism 1. Subsequent migrations are made to execution mechanisms 2 and 3 as illustrated.
  • the master diagnostic unit 26 monitors the occurrence of synchronous remote proce- dure calls switching the execution of the program thread between the different execution mechanisms and accordingly tracks which execution mechanism is currently active in processing the program thread. This is the tracking information illustrated at the lefthand side of Figure 2. This tracking information is used by the master diagnostic unit 26 to channel the diagnostic information recovered from the different slave diagnostic units 20, 22, 24 to be displayed in association with the appropriate program thread when this is displayed and subject to interaction by the programmer upon the general purpose computer 4.
  • the diagnostic information display includes the identification of the currently active execution mechanism for the point in the program concerned.
  • the halt command will be directed to execution mechanism 2 as the master diagnostic unit 26 determines that it is execution mechanism 2 which is currently active in processing the thread.
  • FIG. 3 is a flow diagram schematically illustrating the type of thread tracking which is performed by the master diagnostic unit 26.
  • processing of the different threads on the execution mechanisms 6, 8, 10 is initiated and the associated slave diagnostic units 20, 22, 24 are programmed with their diagnostic parameters (e.g. breakpoints, watchpoints, profiling parameters, trace parameters etc).
  • the master diagnostic unit 26 identifies which threads are executing ⁇ on which execution mechanisms and this data is collected and held by the master diagnostic unit 26, such as within a thread data table. It will be appreciated that which execu- tion mechanism executes which particular thread may not be predetermined by the program itself as it may be heuristically determined at runtime depending upon loading and other factors.
  • the master diagnostic unit 26 monitors to check whether any thread migration has taken place, such as by virtue of a issue of synchronous remote procedure call.
  • processing proceeds to step 34 at which the data indicating which thread is executing on which execution mechanism is updated to take account of the caller no longer executing a thread and the callee now executing that thread.
  • step 36 the programming of the slave diagnostic units 20, 22 and 24 is altered (if needed) to take account of the migration which has occurred. For example, if the caller execution unit was monitoring for a particular breakpoint or watchpoint in respect of the thread, then when that execution mechanism is no longer executing that thread, then it would be inappropriate to continue to monitor for those breakpoints and watchpoints as this could give false results due to aliasing of those breakpoints or watchpoints with the execution occurring in response to a different program thread. After any necessary reprogramming of the slave diagnostic units at step 36, processing is returned to step 32 where monitoring for further thread migration can be performed.
  • Figure 4 schematically illustrates the setup of the diagnostic operations within the system of Figure 1.
  • a programmer using the general purpose computer 4 instructs a given diagnostic command to be performed and this command is sent to the master diagnostic unit 26 where it is received at step 38.
  • Step 40 corresponds to the master diagnostic unit 26 determining which execution mechanism (or memory in the case of a watchpoint) is associated with the thread in respect of which the diagnostic command is to be performed.
  • Step 42 programs/initialises the relevant slave diagnostic unit for the thread in respect of the command which has been received.

Abstract

An asymmetric multiprocessor apparatus (2) is provided in which respective slave diagnostic units (20, 22, 24) are associated with corresponding execution mechanisms (6, 8, 10). A master, diagnostic unit (26) tracks the migration of thread execution between the different execution mechanisms (6, 8, 10) so that the execution of a given thread can be followed by the diagnostic mechanisms (20, 22, 24, 26) and this information provided to the programmer. The execution mechanisms (6, 8, 10) can be diverse such as a general purpose processor (6), a DMA unit (12), a coprocessor, an VLIW processor, a digital signal processor (8) and a hardware accelerator (10). The asymmetric multiprocessor apparatus (2) will also typically include an asymmetric memory hierarchy such as including two or more of a global memory, a shared memory (16), a private memory (18) and a cache memory (14).

Description

PERFORMING DIAGNOSTIC OPERATIONS UPON AN ASYMMETRIC MULTIPROCESSOR APPARATUS
This invention relates to data processing systems. More particularly, this invention relates to the provision of diagnostic mechanisms for use with asymmetric multiprocessor apparatus.
Diagnostic mechanisms, such as debug mechanisms, trace mechanisms and profiling mechanisms, are increasingly significant in the field of data processing system development. As data processing systems become more complex, and the time for their development and testing becomes shorter, there is an increasing need for powerful and easy-to-use diagnostic mechanisms that can be used to identify problems associated with data processing systems and improve the performance of those data processing systems by adjusting their design and configuration.
Another trend within data processing systems is the increasing use of multiprocessor systems. These are used to deliver higher performance by permitting processing to be performed in parallel, typically by different threads of a program or task. One form of such multiprocessor systems is known as a symmetric multiprocessor system. Such symmetric systems typically include a plurality of identical processor cores each having an identical coherent view of program and data memory and operating system software is responsible for allocating the tasks/threads to be performed to the individual processors and for migrating a task/thread between processors. That is, a single thread of program instruction execution is time- multiplexed between a plurality of processors under operating system control.
Within such symmetric systems the operating system can be used to determine where individual tasks/threads are being executed and provide a programmer with the appearance of a single thread executing on a single processor even when the operating system scheduling migrates execution from one processor to another processor. Such an approach is limited to processors which are identical and where migration is performed by the operating system, i.e. without being triggered by the program itself. Whilst symmetric multiprocessor systems can improve processing performance, they are inefficient to some degree. As an example, if the processing to be performed requires some operations which would best be performed by a DSP type core (e.g. highly numerically intensive and repetitive) and other tasks better performed by a general purpose processor (e.g. flow control, user input etc), then a symmetric multiprocessor is a relatively inefficient way of implementing such processing. This has been recognised and it is known to provide asymmetric multiprocessing (AMP) systems. An example of such a system would be the OMAP platform designed by Texas Instruments. Within such platforms multiple different processors are provided with each of these having characteristics making it better suited to some tasks over others. As an example, an asymmetric multiprocessor may include a DSP core as well as a general purpose microprocessor core. Whilst such asymmetric multiprocessors have strong advantages in terms of the processing performance they can deliver with relatively low cost and low power consumption, they are more difficult to program and develop due to their heterogeneous nature. In order to make good use of such asymmetric multiprocessor systems, it is normal for the migration of tasks between threads to be performed by the program itself rather than under control of an operating system. Furthermore, the different processing architectures of the different processors mean that significantly different diagnostic mechanisms may be appropriate to each of the processors. Synchronous remote procedure calls in AMP systems can be viewed as program controlled migration of threads from one processor to the other in analogy to operating system controlled migration of threads in SMP systems but this simple view of the system is not supported by existing diagnostic mechanisms which partition the system according to which processor performs the operations. This has the result that the relatively simple diagnostic techniques associated with symmetric multiprocessing systems cannot readily be used with asymmetric multiprocessor systems even though the complexity and difficulty of programming such asymmetric processing systems mean that diagnostic mechanisms are even more important. In a traditional AMP system, code running on each processor is treated separately. The code for each processor is debugged as if it were a separate program which communicates with separate programs on other processors.
Viewed from one aspect the present invention provides an asymmetric multiprocessor apparatus comprising: a plurality of execution mechanisms responsive to respective program instructions to perform data processing operations, a thread of program instruction execution being time-multiplexed between said plurality of execution mechanisms; a plurality of slave diagnostic units each associated with a respective execution mechanism to perform diagnostic operations thereupon; a master diagnostic unit coupled to said plurality of slave diagnostic units and responsive to a migration of execution of a given thread between execution mechanisms to make a corresponding change in which of said slave diagnostic units is currently active to perform diagnostic operations in respect of said given thread such that said master diagnostic tracks changes in which execution mechanism is executing said given thread.
The present technique provides a structure in which the respective execution mechanisms within the asymmetric multiprocessor are provided with their own slave diagnostic units. These slave diagnostic units are coupled to a master diagnostic unit which has the responsibility for tracking the migration of threads between execution units and thereby enable the provision of a single view of the execution of a given thread even when this is split across different execution mechanisms within the asymmetric multiprocessor system. This significantly eases the task of identifying and understanding problems which arise with the programming configuration since individual threads of execution may be tracked across such a heterogeneous environment, e.g. code split across processors in an AMP system can be debugged as a single entity.
The complexity and difficulty in understanding the operation of such an asymmetric multiprocessor systems are compounded, and accordingly the advantages of the present technique enhanced, in systems comprising an asymmetric memory hierarchy such that the plurality of execution mechanisms do not share a common memory map. Within systems having such an asymmetric memory hierarchy, the complexity of the different memory maps used by the different execution mechanisms makes using individual diagnostic units associated with individual execution mechanisms more difficult for a programmer to understand as the same data item may be referenced in different ways by the different execution mechanisms. The master diagnostic unit of the present technique which is able to track thread changes is able to take account of these memory mapped differences on behalf of the programmer thereby significantly easing the programmer's task.
Whilst an asymmetric multiprocessor may be asymmetric by virtue of having an asymmetric memory hierarchy, it may also be asymmetric by virtue of at least some of the execution mechanisms differing in their processing architecture. This is commonly the case such that different processors can be targeted at different types of task and the present techniques are useful in assisting the programmer in dealing with such complexity.
As mentioned above, the present technique is able to cope with systems in which it is the program itself which controls migration of tasks between execution mechanisms. A particularly efficient way of achieving this, which would be difficult to deal with from a diagnostic sense without the present technique, is one in which a synchronous remote procedure call from one execution mechanism to another execution mechanisms initiates migration of execution of a thread. In this case the migration is being performed explicitly by the program and the remote procedure calls may be performed by one of a pool of routines which can execute on the callee execution mechanisms and target different destination execution mechanisms.
The usability of the present technique is enhanced when the master diagnostic unit provides a diagnostic output from execution of a given thread by an execution mechanism and is responsive to a change in the execution mechanism for that thread to make a corresponding change in the diagnostic output such that the programmer can recognise that a migration of execution mechanism has occurred. It is often be the case that problems with a program are associated with migration and accordingly •this information is useful to the programmer.
The slave diagnostic units associated with the different execution mechanisms may require programming to perform diagnostic operations upon particular threads of execution. The master diagnostic unit, which has tracked the threads as they are executed by different execution mechanisms, is able to direct the diagnostic commands in respect of a given thread to the slave diagnostic unit associated with that given thread at the relevant time.
The diagnostic units could take a wide variety of different forms. For example, they may be breakpoint units, watchpoint units, trace units and/or profiling units. These diagnostic units can be provided by pure hardware,, a mixture of hardware and software or pure software. Some diagnostic units are better suited for implementation in hardware, such as tracing units which require particularly high bandwidth in order to trace the real time operation of processors.
It will be appreciated that the execution mechanisms can take a wide variety of different forms as discussed above. For example, the execution mechanisms can include one or more of a general purpose processor, a direct memory access unit, a coprocessor, a VLIW processor, a digital signal processor and/or a hardware accelerator unit. These various forms of execution mechanism other than the general purpose processor can be considered as a variety of different forms of special purpose processor.
The asymmetric memory hierarchy discussed above can similarly be formed in a variety of different ways. The memories provided may be cache memories, private memories, shared memories or global memories. These will be mixed together in an asymmetric form, which may be efficient for the ultimate implementation and use of the asymmetric multiprocessor apparatus, but which provides an increased level of difficulty in performing diagnostic operations upon the system. It will be appreciated that a parallel system typically contains multiple threads each of which may be time-multiplexed across the plurality of execution mechanisms.
Viewed from another aspect the present invention provides a method of performing diagnostic operations upon an asymmetric multiprocessor apparatus, said method comprising the steps of: in response to respective program instructions performing data processing operations with a plurality of execution mechanisms, a thread of program instruction execution being time-multiplexed between said plurality of execution mechanisms; performing diagnostic operations upon said plurality of execution mechanisms with respective slave diagnostic units associated therewith; using a master diagnostic unit coupled to said plurality of slave diagnostic units and responsive to a migration of execution of a given thread between execution mechanisms to make a corresponding change in which of said slave diagnostic units is currently active to perform diagnostic operations in respect of said given thread such that said master diagnostic tracks changes in which execution mechanism is executing said given thread.
Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings in which:
Figure 1 schematically illustrates an asymmetric multiprocessor apparatus in accordance with one example of the present technique;
Figure 2 schematically illustrates the migration of execution of a given thread within a program between different execution mechanisms and the tracking of such migration by the master diagnostic unit;
Figure 3 is a flow diagram schematically illustrating the initiation of diagnostic operations and the tracking of thread migration; and
Figure 4 is a flow diagram schematically illustrating the initial programming of the diagnostic mechanisms of the present technique in accordance with one example embodiment.
Figure 1 schematically illustrates an asymmetric multiprocessor apparatus 2 connected to a general purpose computer 4. The general purpose computer is used to program and control diagnostic operations. The asymmetric multiprocessor apparatus 2 comprises a plurality of execution mechanisms in the form of a general purpose processor 6, a digital signal processor 8, an accelerator 10 and a direct memory access (DMA) unit 12. It will be appreciated that different combinations of execution mechanisms may be provided within asymmetric multiprocessor apparatus, such as an VLIW processor and/or a coprocessor. Furthermore, such an asymmetric multiprocessor apparatus may include multiple execution mechanisms of a given type, which may be identical, as well as one or more execution mechanisms of a different type, e.g. a single general purpose processor with multiple DSP units.
The asymmetric multiprocessor apparatus 2 of Figure 1 has an asymmetric memory hierarchy comprising a cache memory 14, which is local to the general purpose processor 6, a shared memory 16 which is accessible to the accelerator 10, the general purpose processor 6 and the DMA unit 12 and a private memory 18. The private memory 18 is accessible only to the DSP unit 8 and the DMA unit 12. The DMA unit 12 is controlled by the general purpose processor 6, which sets up DMA operations to be performed by the DMA unit 12. These will typically include transferring data between the private memory 18 and the shared memory 16. It will be appreciated that with such an arrangement a block of input data may be transferred from the shared memory 16 under control of the general purpose processor 6 into the private memory 18 where it can be subject to intensive numeric processing by the DSP unit 8 before the results of that processing are recovered from the private memory 18 into the shared memory 16 by the general purpose processor 6. The processing being performed by the DSP unit 8 is part of the same program thread, which is also at least partially running on the general purpose processor 6, and when the point within that thread is reached at which processing by the DSP unit 8 is required, then a synchronous remote procedure call is made from the general purpose processor 6 to the DSP unit 8 to initiate processing upon the DSP unit 8. At the end of the process- ing by the DSP unit 8, a further synchronous remote procedure call is made to elsewhere or a simple return from the remote-procedure call can be made.
As will be seen in Figure 1, each of the execution mechanisms 6, 8 and 10 in- elude respective slave diagnostic unit 20, 22 and 24. The DMA unit 12, as this operates only under control of the general purpose processor 6, does not have its own slave diagnostic unit. It will be appreciated that the different processor architectures provided by the different execution mechanisms 6, 8, 10, will mean that the slave diagnostic units 20, 22 and 24 have different forms and capabilities, as well as requir- ing different types of programming, and produce different forms of output. This diversity across an asymmetric multiprocessor apparatus 2 is what conventionally presents difficulty to a programmer trying to understand the execution of a given thread which migrates between different execution mechanisms 6, 8, 10.
In addition to the plurality of slave diagnostic units 20, 22, 24, there is provided a master diagnostic unit 26 which is coupled to each of the slave diagnostic units 20, 22, 24. The master diagnostic unit, via the slave diagnostic units 20, 22, 24, serves to monitor program thread migration, such as by identifying synchronous remote procedure calls and returns. The master diagnostic unit 26 is connected to a general purpose computer 4 which is used to program diagnostic operations to be performed and monitor the diagnostic output and display the diagnostic output to a programmer. The master diagnostic unit 26 can be provided as a hardware component, as a mixed hardware and software component, or as a pure software component executing upon the general purpose computer 4.
The slave diagnostic units 20, 22 and 24 are illustrated as being provided within each of their respective execution mechanisms 6, 8, 10, but it will be appreciated that the slave diagnostic units 20, 22, 24 could be separately provided outside of the execution mechanisms 6, 8, 10 concerned. A slave diagnostic unit can be shared between multiple execution mechanisms, e.g. a tracing unit which is monitoring data being written to or read from the shared memory 16 will perform tracing in respect of more than one of the execution mechanisms 6, 8, 10. Nevertheless, such a tracing unit would be associated with at least one of the execution mechanisms in that it performed tracing in respect of at least one of the execution_rnechanisrns.
Figure 2 is a diagram schematically illustrating the migration of a given thread of program execution between different execution mechanisms. In this illustration, there are three different execution mechanisms. These may be considered to correspond to the general purpose processor 6, the DSP unit 8 and the accelerator 10 of Figure 1 , although other mappings to different execution mechanisms would equally be possible. As illustrated, the program thread starts execution upon execution mechanism 1 and then is subject to migration via a synchronous remote procedure call to execution mechanism 2. After executing upon execution mechanism 2 for a period of time a return is made to execution mechanism 1. Subsequent migrations are made to execution mechanisms 2 and 3 as illustrated. During all of this period, the master diagnostic unit 26 monitors the occurrence of synchronous remote proce- dure calls switching the execution of the program thread between the different execution mechanisms and accordingly tracks which execution mechanism is currently active in processing the program thread. This is the tracking information illustrated at the lefthand side of Figure 2. This tracking information is used by the master diagnostic unit 26 to channel the diagnostic information recovered from the different slave diagnostic units 20, 22, 24 to be displayed in association with the appropriate program thread when this is displayed and subject to interaction by the programmer upon the general purpose computer 4. The diagnostic information display includes the identification of the currently active execution mechanism for the point in the program concerned. As an example, if whilst a thread is executing on excution mechanisms 2 the programmer wishes to halt that thread, then the halt command will be directed to execution mechanism 2 as the master diagnostic unit 26 determines that it is execution mechanism 2 which is currently active in processing the thread.
Figure 3 is a flow diagram schematically illustrating the type of thread tracking which is performed by the master diagnostic unit 26. At step 28 processing of the different threads on the execution mechanisms 6, 8, 10 is initiated and the associated slave diagnostic units 20, 22, 24 are programmed with their diagnostic parameters (e.g. breakpoints, watchpoints, profiling parameters, trace parameters etc). At step 30, the master diagnostic unit 26 identifies which threads are executing^ on which execution mechanisms and this data is collected and held by the master diagnostic unit 26, such as within a thread data table. It will be appreciated that which execu- tion mechanism executes which particular thread may not be predetermined by the program itself as it may be heuristically determined at runtime depending upon loading and other factors.
At step 32, the master diagnostic unit 26 monitors to check whether any thread migration has taken place, such as by virtue of a issue of synchronous remote procedure call. When thread migration is detected, then processing proceeds to step 34 at which the data indicating which thread is executing on which execution mechanism is updated to take account of the caller no longer executing a thread and the callee now executing that thread.
At step 36 the programming of the slave diagnostic units 20, 22 and 24 is altered (if needed) to take account of the migration which has occurred. For example, if the caller execution unit was monitoring for a particular breakpoint or watchpoint in respect of the thread, then when that execution mechanism is no longer executing that thread, then it would be inappropriate to continue to monitor for those breakpoints and watchpoints as this could give false results due to aliasing of those breakpoints or watchpoints with the execution occurring in response to a different program thread. After any necessary reprogramming of the slave diagnostic units at step 36, processing is returned to step 32 where monitoring for further thread migration can be performed.
Figure 4 schematically illustrates the setup of the diagnostic operations within the system of Figure 1. At step 38, a programmer using the general purpose computer 4 instructs a given diagnostic command to be performed and this command is sent to the master diagnostic unit 26 where it is received at step 38. Step 40 corresponds to the master diagnostic unit 26 determining which execution mechanism (or memory in the case of a watchpoint) is associated with the thread in respect of which the diagnostic command is to be performed. Step 42 then programs/initialises the relevant slave diagnostic unit for the thread in respect of the command which has been received.

Claims

1. An asymmetric multiprocessor apparatus comprising: a plurality of execution mechanisms responsive to respective program instructions to perform data processing operations, a thread of program instruction execution being time-multiplexed between said plurality of execution mechanisms; a plurality of slave diagnostic units each associated with a respective execution mechanism to perform diagnostic operations thereupon; a master diagnostic unit coupled to said plurality of slave diagnostic units and responsive to a migration of execution of a given thread between execution mechanisms to make a corresponding change in which of said slave diagnostic units is currently active to perform diagnostic operations in respect of said given thread such that said master diagnostic tracks changes in which execution mechanism is executing said given thread.
2. An asymmetric multiprocessor apparatus as claimed in claim 1, comprising an asymmetric memory hierarchy such that said plurality of execution mechanisms do not share a common memory map.
3. An asymmetric multiprocessor apparatus as claimed in any one of claims 1 and 2, wherein at least one of said plurality of execution mechanisms has a different processing architecture than one or more other of said plurality of execution mechanisms.
4. An asymmetric multiprocessor apparatus as claimed in any one of claims 1, 2 and 3, wherein said migration of execution is by a synchronous remote procedure call from one execution mechanism to another execution mechanism.
5. An asymmetric multiprocessor apparatus as claimed in any one of the preceding claims, wherein said master diagnostic unit provides diagnostic output from an execution mechanism and is responsive to a change in execution mechanism for said given thread to make a corresponding change in said diagnostic output.
6. An asymmetric multiprocessor apparatus as claimed in any one of the preceding claims, wherein said master diagnostic unit directs diagnostic commands in respect of said given thread to a slave diagnostic unit associated with an execution mechanism, currently executing said given thread.
7. An asymmetric multiprocessor apparatus as claimed in any one of the preceding claims, wherein said master diagnostic unit sets a breakpoint in respect of a portion of said given thread upon each of those execution mechanisms upon which said portion can be executed.
8. An asymmetric multiprocessor apparatus as claimed in claim 1, wherein said breakpoint is set with a memory address matched with a memory address used for said portion by respective execution mechanisms.
9. An asymmetric multiprocessor apparatus as claimed in claim 7, wherein when said breakpoint is triggered, said master diagnostic unit determines which thread has triggered said breakpoint.
10. An asymmetric multiprocessor apparatus as claimed in any one of the preceding claims, comprising a plurality of memories and wherein said master diagnostic unit sets a watchpoint for a data item in respect of each of said plurality of memories that can store said data item.
11. An asymmetric multiprocessor apparatus as claimed in claim 10, wherein said watchpoint is set with a memory address matched with a memory address used for said data item within respective memories.
12. An asymmetric multiprocessor apparatus as claimed in claim 10, wherein when said watchpoint is triggered, said master diagnostic unit determines which thread has triggered said watchpoint.
13. An asymmetric multiprocessor apparatus- as claimed in any one of the preceding claims, wherein said slave diagnostic units are slave tracing units, said master diagnostic unit is a master tracing unit and said master tracing unit tracks migration of execution of said given thread between different execution mechanisms when forming a trace output for said given thread.
14. An asymmetric multiprocessor apparatus as claimed in any one of the preceding claims, wherein said slave diagnostic units are slave profiling units, said master diagnostic unit is a master profiling unit and said master profiling unit tracks migration of execution of said given thread between different execution mechanisms when forming a profiling output for said given thread.
15. A method as claimed in any one of the preceding claims, wherein said plurality of execution mechanisms include one or more of: a general purpose processor; a direct memory access unit; a coprocessor; an VLIW processor; a digital signal processor; and a hardware accelerator unit.
16. A method as claimed in claim 4, wherein said asymmetric memory hierarchy comprises two or more of: a global shared memory accessible to all of said execution mechanisms; a shared memory accessible to at least two of said execution mechanisms; and a private memory accessible to one of said execution mechanisms.
17. A method of performing diagnostic operations upon an asymmetric multiprocessor apparatus, said method comprising the steps of: in response to respective program instructions performing data processing operations with a plurality of execution mechanisms, a thread of program instruction execution being time-multiplexed between said plurality of execution mechanisms; performing diagnostic operations upon said plurality of execution mechanisms with respective slave diagnostic units associated therewith; using a master diagnostic unit coupled to said plurality of slave diagnostic units and responsive to a migration of execution of a given thread between execution mechanisms to make a corresponding change in which of said slave diagnostic units is currently active to perform diagnostic operations in respect of said given thread such that said master diagnostic tracks changes in which execution mechanism is executing said given thread.
18. A method as claimed in claim 17, wherein said asymmetric multiprocessing apparatus comprises an asymmetric memory hierarchy such that said plurality of execution mechanisms do not share a common memory map.
19. A method as claimed in any one of claims 17 and 18, wherein at least one of said plurality of execution mechanisms has a different processing architecture than one or more other of said plurality of execution mechanisms.
20. A method as claimed in any one of claims 17, 18 and 19, wherein said migration of execution is by a synchronous remote procedure call from one execution mechanism to another execution mechanism.
21. A method as claimed in any one of claims 17 to 20, wherein said master diagnostic unit provides diagnostic output from an execution mechanism and is responsive to a change in execution mechanism for said given thread to make a corresponding change in said diagnostic output.
22. A method as claimed in any one of claims 17 to 21, wherein said master diagnostic unit directs diagnostic commands in respect of said given thread to a slave diagnostic unit associated with an execution mechanism, currently executing said given thread.
23. A method as claimed in any one of claims 17 to 22, wherein said master diagnostic unit sets a breakpoint in respect of a portion of said given thread upon each of those execution mechanisms upon which said portion can be executed.
24. A method as claimed in claim 23, wherein said breakpoint is set with a memory address matched with a memory address used for said portion by respective execution mechanisms.
25. A method as claimed in claim 23, wherein when said breakpoint is triggered, said master diagnostic unit determines which thread has triggered said breakpoint.
26. A method as claimed in any one of claims 17 to 25, wherein said asymmetric multiprocessing apparatus comprises a plurality of memories and said master diagnostic unit sets a watchpoint for a data item in respect of each of said plurality of memories that can store said data item.
27. A method as claimed in claim 26, wherein said watchpoint is set with a memory address matched with a memory address used for said data item within respective memories.
28. A method as claimed in claim 26, wherein when said watchpoint is triggered, said master diagnostic unit determines which thread has triggered said watchpoint.
29. A method as claimed in any one of claims 17 to 28, wherein said slave diagnostic units are slave tracing units, said master diagnostic unit is a master tracing unit and said master tracing unit tracks migration of execution of said given thread between different execution mechanisms when forming a trace output for said given thread.
30. A method as claimed in any one of claims 17 to 29, wherein said slave diagnostic units are slave profiling units, said master diagnostic unit is a master profiling unit and said master profiling unit tracks migration of execution of said given thread between different execution mechanisms when forming a profiling output for said given thread.
31. A method as claimed in any one of claims 17 to 30, wherein said plurality of execution mechanisms include one or more of: a general purpose, processor; a direct memory access unit; a coprocessor; an VLIW processor; a digital signal processor; and a hardware accelerator unit.
32. A method as claimed in claim 20, wherein said asymmetric memory hierarchy comprises two or more of: a global shared memory accessible to all of said execution mechanisms; a shared memory accessible to at least two of said execution mechanisms; and a private memory accessible to one of said execution mechanisms.
33. A computer program product carrying a computer program for controlling a computer to control a master diagnostic unit and a plurality of slave diagnostic units in accordance with a method as claimed in any one of claims 17 to 32.
PCT/GB2007/003223 2006-10-24 2007-08-24 Performing diagnostic operations upon an asymmetric multiprocessor apparatus WO2008050076A1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
EP07789311A EP2076837B1 (en) 2006-10-24 2007-08-24 Performing diagnostic operations upon an asymmetric multiprocessor apparatus
DE602007009857T DE602007009857D1 (en) 2006-10-24 2007-08-24 PERFORMING DIAGNOSTIC OPERATIONS ON AN ASYMMETRIC MULTIPROCESSOR DEVICE
CN2007800396948A CN101529391B (en) 2006-10-24 2007-08-24 Performing diagnostic operations upon an asymmetric multiprocessor apparatus
KR1020097010591A KR101325229B1 (en) 2006-10-24 2007-08-24 Performing diagnostic operations upon an asymmetric multiprocessor apparatus
JP2009533925A JP5054115B2 (en) 2006-10-24 2007-08-24 Performing diagnostic operations on asymmetric multiprocessor devices.
IL197314A IL197314A (en) 2006-10-24 2009-02-26 Performing diagnostic operations upon an asymmetric multiprocessor apparatus

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US85375606P 2006-10-24 2006-10-24
US60/853,756 2006-10-24
GB0709182.0 2007-05-11
GB0709182A GB2443277B (en) 2006-10-24 2007-05-11 Performing diagnostics operations upon an asymmetric multiprocessor apparatus

Publications (1)

Publication Number Publication Date
WO2008050076A1 true WO2008050076A1 (en) 2008-05-02

Family

ID=38219318

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB2007/003223 WO2008050076A1 (en) 2006-10-24 2007-08-24 Performing diagnostic operations upon an asymmetric multiprocessor apparatus

Country Status (11)

Country Link
US (5) US20080098207A1 (en)
EP (1) EP2076837B1 (en)
JP (1) JP5054115B2 (en)
KR (1) KR101325229B1 (en)
CN (1) CN101529391B (en)
DE (1) DE602007009857D1 (en)
GB (1) GB2443277B (en)
IL (1) IL197314A (en)
MY (1) MY144449A (en)
TW (1) TWI407374B (en)
WO (1) WO2008050076A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010106403A1 (en) * 2009-03-17 2010-09-23 Toyota Jidosha Kabushiki Kaisha Failure diagnostic system, electronic control unit for vehicle, failure diagnostic method

Families Citing this family (264)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6786420B1 (en) 1997-07-15 2004-09-07 Silverbrook Research Pty. Ltd. Data distribution mechanism in the form of ink dots on cards
US6618117B2 (en) 1997-07-12 2003-09-09 Silverbrook Research Pty Ltd Image sensing apparatus including a microcontroller
US20040119829A1 (en) 1997-07-15 2004-06-24 Silverbrook Research Pty Ltd Printhead assembly for a print on demand digital camera system
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US6690419B1 (en) 1997-07-15 2004-02-10 Silverbrook Research Pty Ltd Utilising eye detection methods for image processing in a digital image camera
US7110024B1 (en) 1997-07-15 2006-09-19 Silverbrook Research Pty Ltd Digital camera system having motion deblurring means
US6624848B1 (en) 1997-07-15 2003-09-23 Silverbrook Research Pty Ltd Cascading image modification using multiple digital cameras incorporating image processing
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
US7614037B2 (en) * 2004-05-21 2009-11-03 Microsoft Corporation Method and system for graph analysis and synchronization
US8079019B2 (en) * 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US10353797B2 (en) * 2006-12-29 2019-07-16 International Business Machines Corporation Using memory tracking data to inform a memory map tool
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
WO2008144960A1 (en) * 2007-05-31 2008-12-04 Intel Coporation Method and apparatus for mpi program optimization
CN101329638B (en) * 2007-06-18 2011-11-09 国际商业机器公司 Method and system for analyzing parallelism of program code
US20090007115A1 (en) * 2007-06-26 2009-01-01 Yuanhao Sun Method and apparatus for parallel XSL transformation with low contention and load balancing
US20090089031A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Integrated simulation of controllers and devices
US7801710B2 (en) * 2007-09-28 2010-09-21 Rockwell Automation Technologies, Inc. Simulation controls for model variability and randomness
US8548777B2 (en) * 2007-09-28 2013-10-01 Rockwell Automation Technologies, Inc. Automated recommendations from simulation
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US8181165B2 (en) * 2007-10-30 2012-05-15 International Business Machines Corporation Using annotations to reuse variable declarations to generate different service functions
US8402438B1 (en) 2007-12-03 2013-03-19 Cadence Design Systems, Inc. Method and system for generating verification information and tests for software
US8156474B2 (en) * 2007-12-28 2012-04-10 Cadence Design Systems, Inc. Automation of software verification
US8468504B2 (en) * 2007-12-28 2013-06-18 Streaming Networks (Pvt.) Ltd. Method and apparatus for interactive scheduling of VLIW assembly code
US9063778B2 (en) * 2008-01-09 2015-06-23 Microsoft Technology Licensing, Llc Fair stateless model checking
GB2456813B (en) 2008-01-24 2012-03-07 Advanced Risc Mach Ltd Diagnostic context construction and comparison
US8341635B2 (en) * 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8516484B2 (en) * 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8127080B2 (en) * 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8612977B2 (en) * 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8225120B2 (en) * 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8312458B2 (en) * 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8316218B2 (en) * 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8732683B2 (en) * 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8880853B2 (en) * 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8171476B2 (en) * 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
WO2009101976A1 (en) * 2008-02-15 2009-08-20 Nec Corporation Program parallelization device, program parallelization method and program parallelization program
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8751211B2 (en) 2008-03-27 2014-06-10 Rocketick Technologies Ltd. Simulation using parallel processors
US9678775B1 (en) 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US8776030B2 (en) * 2008-04-09 2014-07-08 Nvidia Corporation Partitioning CUDA code for execution by a general purpose processor
GB0808576D0 (en) * 2008-05-12 2008-06-18 Xmos Ltd Compiling and linking
FR2931269A1 (en) * 2008-05-16 2009-11-20 Ateji Soc Par Actions Simplifi METHOD AND SYSTEM FOR DEVELOPING PARALLEL PROGRAMS
US9223677B2 (en) 2008-06-11 2015-12-29 Arm Limited Generation of trace data in a multi-processor system
US8966490B2 (en) * 2008-06-19 2015-02-24 Freescale Semiconductor, Inc. System, method and computer program product for scheduling a processing entity task by a scheduler in response to a peripheral task completion indicator
US9058206B2 (en) * 2008-06-19 2015-06-16 Freescale emiconductor, Inc. System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity
US20110099552A1 (en) * 2008-06-19 2011-04-28 Freescale Semiconductor, Inc System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system
US8572577B2 (en) * 2008-06-20 2013-10-29 International Business Machines Corporation Monitoring changes to data within a critical section of a threaded program
US8332825B2 (en) * 2008-06-26 2012-12-11 Microsoft Corporation Dynamically monitoring application behavior
KR101607495B1 (en) * 2008-07-10 2016-03-30 로케틱 테크놀로지즈 리미티드 Efficient parallel computation of dependency problems
US9032377B2 (en) * 2008-07-10 2015-05-12 Rocketick Technologies Ltd. Efficient parallel computation of dependency problems
JP2010026851A (en) * 2008-07-22 2010-02-04 Panasonic Corp Complier-based optimization method
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US20110113221A1 (en) * 2008-08-18 2011-05-12 Telefonaktiebolaget L M Ericsson (Publ) Data Sharing in Chip Multi-Processor Systems
US8230442B2 (en) * 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8504344B2 (en) * 2008-09-30 2013-08-06 Cadence Design Systems, Inc. Interface between a verification environment and a hardware acceleration engine
US20100095286A1 (en) * 2008-10-10 2010-04-15 Kaplan David A Register reduction and liveness analysis techniques for program code
US8418146B2 (en) * 2008-11-26 2013-04-09 Microsoft Corporation Sampling techniques for dynamic data-race detection
US9274930B2 (en) * 2008-12-22 2016-03-01 Microsoft Technology Licensing, Llc Debugging system using static analysis
GB0823329D0 (en) * 2008-12-22 2009-01-28 Geotate Bv Position signal sampling method and apparatus
KR101511273B1 (en) * 2008-12-29 2015-04-10 삼성전자주식회사 System and method for 3d graphic rendering based on multi-core processor
US8527734B2 (en) * 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US9286232B2 (en) * 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US8843880B2 (en) * 2009-01-27 2014-09-23 International Business Machines Corporation Software development for a hybrid computing environment
US8255909B2 (en) 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
US9170864B2 (en) * 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
JP2012518215A (en) * 2009-02-16 2012-08-09 インチロン ゲーエムベーハー Analysis method of real-time processing capacity of system
US8205117B2 (en) * 2009-02-25 2012-06-19 Hewlett-Packard Development Company, L.P. Migratory hardware diagnostic testing
US20100242014A1 (en) * 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US8239847B2 (en) * 2009-03-18 2012-08-07 Microsoft Corporation General distributed reduction for data parallel computing
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8886919B2 (en) * 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8230201B2 (en) 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US8413108B2 (en) * 2009-05-12 2013-04-02 Microsoft Corporation Architectural data metrics overlay
US9378062B2 (en) * 2009-06-18 2016-06-28 Microsoft Technology Licensing, Llc Interface between a resource manager and a scheduler in a process
US8719831B2 (en) * 2009-06-18 2014-05-06 Microsoft Corporation Dynamically change allocation of resources to schedulers based on feedback and policies from the schedulers and availability of the resources
DE102009025572A1 (en) * 2009-06-19 2010-12-23 Wolfgang Pree Gmbh A method for developing guaranteed real-time systems
US8914799B2 (en) * 2009-06-30 2014-12-16 Oracle America Inc. High performance implementation of the OpenMP tasking feature
FR2948206B1 (en) * 2009-07-15 2011-08-05 Commissariat Energie Atomique DEVICE AND METHOD FOR THE DISTRIBUTED EXECUTION OF DIGITAL DATA PROCESSES
JP5452125B2 (en) 2009-08-11 2014-03-26 クラリオン株式会社 Data processing apparatus and data processing method
US8566804B1 (en) * 2009-08-13 2013-10-22 The Mathworks, Inc. Scheduling generated code based on target characteristics
US8990783B1 (en) 2009-08-13 2015-03-24 The Mathworks, Inc. Scheduling generated code based on target characteristics
US8381194B2 (en) 2009-08-19 2013-02-19 Apple Inc. Methods and apparatuses for selective code coverage
US8392403B2 (en) * 2009-09-18 2013-03-05 Microsoft Corporation Management of data and computation in data centers
US9430353B2 (en) * 2009-10-26 2016-08-30 Microsoft Technology Licensing, Llc Analysis and visualization of concurrent thread execution on processor cores
US9594656B2 (en) 2009-10-26 2017-03-14 Microsoft Technology Licensing, Llc Analysis and visualization of application concurrency and processor resource utilization
US8359588B2 (en) * 2009-11-25 2013-01-22 Arm Limited Reducing inter-task latency in a multiprocessor system
US8392929B2 (en) * 2009-12-15 2013-03-05 Microsoft Corporation Leveraging memory isolation hardware technology to efficiently detect race conditions
US8826234B2 (en) * 2009-12-23 2014-09-02 Intel Corporation Relational modeling for performance analysis of multi-core processors
WO2011083459A1 (en) * 2010-01-08 2011-07-14 Daniel Geist Utilizing temporal assertions in a debugger
US8516467B2 (en) * 2010-01-29 2013-08-20 Nintendo Co., Ltd. Method and apparatus for enhancing comprehension of code time complexity and flow
US9417905B2 (en) * 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
US8578132B2 (en) * 2010-03-29 2013-11-05 International Business Machines Corporation Direct injection of data to be transferred in a hybrid computing environment
US8612952B2 (en) 2010-04-07 2013-12-17 International Business Machines Corporation Performance optimization based on data accesses during critical sections
US8959496B2 (en) * 2010-04-21 2015-02-17 Microsoft Corporation Automatic parallelization in a tracing just-in-time compiler system
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
US8756590B2 (en) * 2010-06-22 2014-06-17 Microsoft Corporation Binding data parallel device source code
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US9652365B2 (en) * 2010-08-24 2017-05-16 Red Hat, Inc. Fault configuration using a registered list of controllers
US20120240224A1 (en) * 2010-09-14 2012-09-20 Georgia Tech Research Corporation Security systems and methods for distinguishing user-intended traffic from malicious traffic
US8990551B2 (en) 2010-09-16 2015-03-24 Microsoft Technology Licensing, Llc Analysis and visualization of cluster resource utilization
US20120096445A1 (en) * 2010-10-18 2012-04-19 Nokia Corporation Method and apparatus for providing portability of partially accelerated signal processing applications
US8656496B2 (en) * 2010-11-22 2014-02-18 International Business Machines Corporations Global variable security analysis
US8832659B2 (en) * 2010-12-06 2014-09-09 University Of Washington Through Its Center For Commercialization Systems and methods for finding concurrency errors
US8959501B2 (en) * 2010-12-14 2015-02-17 Microsoft Corporation Type and length abstraction for data types
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US20120160272A1 (en) * 2010-12-23 2012-06-28 United Microelectronics Corp. Cleaning method of semiconductor process
KR101785116B1 (en) * 2010-12-24 2017-10-17 한양대학교 산학협력단 Software-defined raido terminal for modem hardware independent radio applications
US8856764B2 (en) * 2011-01-25 2014-10-07 International Business Machines Corporation Distributed static analysis of computer software applications
US8566831B2 (en) 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
US8726245B2 (en) * 2011-01-28 2014-05-13 International Business Machines Corporation Static analysis of computer software applications having a model-view-controller architecture
DE102011004363B4 (en) * 2011-02-18 2023-10-05 Airbus Operations Gmbh Control device for controlling network participants, method for operating a computer network and computer network
US8533720B2 (en) 2011-02-25 2013-09-10 International Business Machines Corporation Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit
US8621430B2 (en) 2011-03-03 2013-12-31 International Business Machines Corporation Method for code transformation supporting temporal abstraction of parameters
US9189283B2 (en) * 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
GB2489278B (en) * 2011-03-24 2019-12-25 Advanced Risc Mach Ltd Improving the scheduling of tasks to be performed by a non-coherent device
US8650542B1 (en) * 2011-03-25 2014-02-11 The Mathworks, Inc. Hierarchical, self-describing function objects
US9015688B2 (en) * 2011-04-01 2015-04-21 Intel Corporation Vectorization of scalar functions including vectorization annotations and vectorized function signatures matching
US9128748B2 (en) 2011-04-12 2015-09-08 Rocketick Technologies Ltd. Parallel simulation using multiple co-simulators
US8949777B2 (en) * 2011-04-22 2015-02-03 Intel Corporation Methods and systems for mapping a function pointer to the device code
US8855194B2 (en) * 2011-05-09 2014-10-07 Texas Instruments Incorporated Updating non-shadow registers in video encoder
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
US9069545B2 (en) * 2011-07-18 2015-06-30 International Business Machines Corporation Relaxation of synchronization for iterative convergent computations
US20130055224A1 (en) * 2011-08-25 2013-02-28 Nec Laboratories America, Inc. Optimizing compiler for improving application performance on many-core coprocessors
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US8219684B1 (en) 2011-11-02 2012-07-10 Google Inc. Redundant data requests with cancellation
US9043765B2 (en) * 2011-11-09 2015-05-26 Microsoft Technology Licensing, Llc Simultaneously targeting multiple homogeneous and heterogeneous runtime environments
US8615614B2 (en) * 2011-11-30 2013-12-24 Freescale Semiconductor, Inc. Message passing using direct memory access unit in a data processing system
US9367687B1 (en) * 2011-12-22 2016-06-14 Emc Corporation Method for malware detection using deep inspection and data discovery agents
US9686152B2 (en) 2012-01-27 2017-06-20 Microsoft Technology Licensing, Llc Techniques for tracking resource usage statistics per transaction across multiple layers of protocols
KR101885211B1 (en) * 2012-01-27 2018-08-29 삼성전자 주식회사 Method and apparatus for resource allocation of gpu
US8793697B2 (en) * 2012-02-23 2014-07-29 Qualcomm Incorporated Method and system for scheduling requests in a portable computing device
US8949809B2 (en) 2012-03-01 2015-02-03 International Business Machines Corporation Automatic pipeline parallelization of sequential code
US8910137B2 (en) 2012-04-13 2014-12-09 International Business Machines Corporation Code profiling of executable library for pipeline parallelization
US9928109B2 (en) 2012-05-09 2018-03-27 Nvidia Corporation Method and system for processing nested stream events
US8838861B2 (en) 2012-05-09 2014-09-16 Qualcomm Incorporated Methods and apparatuses for trace multicast across a bus structure, and related systems
DE102012011584A1 (en) * 2012-06-13 2013-12-19 Robert Bosch Gmbh Resource management system for automation systems
US8904371B2 (en) * 2012-06-19 2014-12-02 Telefonaktiebolaget L M Ericsson (Publ) Data handling among actors in a dataflow programming environment
RU2012127581A (en) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн SOURCE CODE GENERATOR FOR DEVELOPING AND TESTING SOFTWARE FOR MULTI-PROCESSING MEDIA
RU2012127578A (en) 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн ANALYZER OF APPLICABILITY OF THE SOFTWARE MODULE FOR THE DEVELOPMENT AND TESTING OF THE SOFTWARE FOR MULTIPROCESSOR MEDIA
EP2706420B1 (en) * 2012-09-05 2015-03-18 Siemens Aktiengesellschaft Method for operating an automation device
EP3828700A1 (en) * 2012-11-06 2021-06-02 Coherent Logix, Inc. Multiprocessor programming toolkit for design reuse
CN113626269A (en) 2012-11-09 2021-11-09 相干逻辑公司 Real-time analysis and control for multiprocessor systems
US9021426B2 (en) * 2012-12-04 2015-04-28 International Business Machines Corporation Streamlining hardware initialization code
WO2014105010A1 (en) * 2012-12-26 2014-07-03 Intel Corporation Thread migration support for architectually different cores
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US20140195834A1 (en) * 2013-01-04 2014-07-10 Microsoft Corporation High throughput low latency user mode drivers implemented in managed code
US9323543B2 (en) 2013-01-04 2016-04-26 Microsoft Technology Licensing, Llc Capability based device driver framework
US9811319B2 (en) 2013-01-04 2017-11-07 Microsoft Technology Licensing, Llc Software interface for a hardware device
US9207969B2 (en) * 2013-01-25 2015-12-08 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US8762916B1 (en) * 2013-02-25 2014-06-24 Xilinx, Inc. Automatic generation of a data transfer network
US8924193B2 (en) * 2013-03-14 2014-12-30 The Mathworks, Inc. Generating variants from file differences
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US10802876B2 (en) * 2013-05-22 2020-10-13 Massachusetts Institute Of Technology Multiprocessor scheduling policy with deadline constraint for determining multi-agent schedule for a plurality of agents
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
IL232836A0 (en) * 2013-06-02 2014-08-31 Rocketick Technologies Ltd Efficient parallel computation of derendency problems
US9292419B1 (en) * 2013-06-04 2016-03-22 The Mathworks, Inc. Code coverage and confidence determination
US9697003B2 (en) 2013-06-07 2017-07-04 Advanced Micro Devices, Inc. Method and system for yield operation supporting thread-like behavior
WO2015050594A2 (en) * 2013-06-16 2015-04-09 President And Fellows Of Harvard College Methods and apparatus for parallel processing
US9075624B2 (en) 2013-06-24 2015-07-07 Xilinx, Inc. Compilation of system designs
WO2015016907A1 (en) * 2013-07-31 2015-02-05 Hewlett Packard Development Company, L.P. Data stream processing using a distributed cache
US10372590B2 (en) * 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
US20150195383A1 (en) * 2014-01-08 2015-07-09 Cavium, Inc. Methods and systems for single instruction multiple data programmable packet parsers
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US9733981B2 (en) * 2014-06-10 2017-08-15 Nxp Usa, Inc. System and method for conditional task switching during ordering scope transitions
US10061592B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US10061591B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Company, Ltd. Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing
US9182990B1 (en) * 2014-07-01 2015-11-10 Google Inc. Method and apparatus for detecting execution of unsupported instructions while testing multiversioned code
US9672029B2 (en) * 2014-08-01 2017-06-06 Vmware, Inc. Determining test case priorities based on tagged execution paths
US10148547B2 (en) 2014-10-24 2018-12-04 Tektronix, Inc. Hardware trigger generation from a declarative protocol description
US9338076B1 (en) 2014-10-24 2016-05-10 Tektronix, Inc. Deriving hardware acceleration of decoding from a declarative protocol description
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US9280389B1 (en) * 2014-12-30 2016-03-08 Tyco Fire & Security Gmbh Preemptive operating system without context switching
US9996354B2 (en) 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
US20160224327A1 (en) * 2015-02-02 2016-08-04 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Linking a Program with a Software Library
US9652817B2 (en) 2015-03-12 2017-05-16 Samsung Electronics Co., Ltd. Automated compute kernel fusion, resizing, and interleave
US11119903B2 (en) 2015-05-01 2021-09-14 Fastly, Inc. Race condition testing via a scheduling test program
US10102031B2 (en) 2015-05-29 2018-10-16 Qualcomm Incorporated Bandwidth/resource management for multithreaded processors
US9910760B2 (en) * 2015-08-07 2018-03-06 Nvidia Corporation Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging
US10095641B2 (en) 2015-09-23 2018-10-09 Hanan Potash Processor with frames/bins structure in local high speed memory
US10061511B2 (en) 2015-09-23 2018-08-28 Hanan Potash Computing device with frames/bins structure, mentor layer and plural operand processing
US9977693B2 (en) 2015-09-23 2018-05-22 Hanan Potash Processor that uses plural form information
US10140122B2 (en) 2015-09-23 2018-11-27 Hanan Potash Computer processor with operand/variable-mapped namespace
US10067878B2 (en) 2015-09-23 2018-09-04 Hanan Potash Processor with logical mentor
WO2017062612A1 (en) * 2015-10-09 2017-04-13 Arch Systems Inc. Modular device and method of operation
US10534697B2 (en) * 2015-10-27 2020-01-14 Sap Se Flexible configuration framework
US9678788B2 (en) * 2015-11-10 2017-06-13 International Business Machines Corporation Enabling poll/select style interfaces with coherent accelerators
GB2547252B (en) * 2016-02-12 2019-12-11 Advanced Risc Mach Ltd Graphics processing systems
US10860499B2 (en) 2016-03-22 2020-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Dynamic memory management in workload acceleration
US10203747B2 (en) 2016-03-22 2019-02-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Workload placement based on heterogeneous compute performance per watt
US10884761B2 (en) 2016-03-22 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Best performance delivery in heterogeneous computing unit environment
US11093286B2 (en) * 2016-04-26 2021-08-17 Hanan Potash Computing device with resource manager and civilware tier
US10303466B1 (en) * 2016-09-07 2019-05-28 Amazon Technologies, Inc. Semantic annotations in source code
US10177795B1 (en) 2016-12-29 2019-01-08 Amazon Technologies, Inc. Cache index mapping
KR20180086792A (en) 2017-01-23 2018-08-01 삼성전자주식회사 Method for processing data among a plurality of processors and electronic device thereof
US20180285241A1 (en) * 2017-03-28 2018-10-04 Carnegie Mellon University Energy-interference-free debugger for intermittent energy-harvesting systems
US20180331973A1 (en) * 2017-05-09 2018-11-15 Microsoft Technology Licensing, Llc Increasing virtual machine availability during server updates
US10282274B2 (en) * 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
US10732634B2 (en) 2017-07-03 2020-08-04 Baidu Us Llc Centralized scheduling system using event loop for operating autonomous driving vehicles
US10635108B2 (en) * 2017-07-03 2020-04-28 Baidu Usa Llc Centralized scheduling system using global store for operating autonomous driving vehicles
US20190042390A1 (en) * 2017-08-01 2019-02-07 Microsoft Technology Licensing, Llc Focused execution of traced code in a debugger
GB2565770B (en) 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
US20190057017A1 (en) * 2017-08-16 2019-02-21 Microsoft Technology Licensing, Llc Correlation Of Function Calls To Functions In Asynchronously Executed Threads
US10474600B2 (en) 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
CA3081591A1 (en) 2017-11-06 2019-05-09 Pensando Systems Inc. Network system including match processing unit for table-based actions
US10437619B2 (en) * 2017-12-12 2019-10-08 Arch Systems Inc. System and method for physical machine monitoring and analysis
JP6955163B2 (en) * 2017-12-26 2021-10-27 富士通株式会社 Information processing equipment, information processing methods and programs
CA3091265A1 (en) * 2018-02-22 2019-08-29 Michael Brian Galles Programmable computer io device interface
US10636112B2 (en) * 2018-03-28 2020-04-28 Intel Corporation Graphics processor register data re-use mechanism
JP7236811B2 (en) * 2018-03-30 2023-03-10 株式会社デンソー Information processing equipment
US11237946B2 (en) * 2018-05-03 2022-02-01 Sap Se Error finder tool
US11468338B2 (en) 2018-09-11 2022-10-11 Apple Inc. Compiling models for dedicated hardware
EP3629271A1 (en) * 2018-09-28 2020-04-01 Marc Brandis AG Electronic device and method for analyzing a transaction-processing system
US11354254B2 (en) * 2018-10-19 2022-06-07 Nippon Telegraph And Telephone Corporation Data processing system, central arithmetic processing apparatus, and data processing method
US11126532B1 (en) * 2018-11-14 2021-09-21 Teledyne Lecroy, Inc. Method and apparatus for a parallel, metadata-based trace analytics processor
US10824538B2 (en) * 2019-01-22 2020-11-03 Oracle International Corporation Scalable incremental analysis using caller and callee summaries
US11836256B2 (en) 2019-01-24 2023-12-05 International Business Machines Corporation Testing adversarial robustness of systems with limited access
US11169886B2 (en) * 2019-01-29 2021-11-09 Sap Se Modification of temporary database pages
US10892971B2 (en) 2019-03-12 2021-01-12 Arch Systems Inc. System and method for network communication monitoring
US11281560B2 (en) * 2019-03-19 2022-03-22 Microsoft Technology Licensing, Llc Input/output data transformations when emulating non-traced code with a recorded execution of traced code
US11782816B2 (en) * 2019-03-19 2023-10-10 Jens C. Jenkins Input/output location transformations when emulating non-traced code with a recorded execution of traced code
US11657162B2 (en) * 2019-03-22 2023-05-23 Intel Corporation Adversarial training of neural networks using information about activation path differentials
US11036546B1 (en) 2019-04-16 2021-06-15 Xilinx, Inc. Multi-threaded shared memory functional simulation of dataflow graph
US10860766B1 (en) 2019-05-23 2020-12-08 Xilinx, Inc. Compilation flow for a heterogeneous multi-core architecture
US10802807B1 (en) 2019-05-23 2020-10-13 Xilinx, Inc. Control and reconfiguration of data flow graphs on heterogeneous computing platform
US11138019B1 (en) 2019-05-23 2021-10-05 Xilinx, Inc. Routing in a compilation flow for a heterogeneous multi-core architecture
US11204745B2 (en) * 2019-05-23 2021-12-21 Xilinx, Inc. Dataflow graph programming environment for a heterogenous processing system
US11727265B2 (en) * 2019-06-27 2023-08-15 Intel Corporation Methods and apparatus to provide machine programmed creative support to a user
US11516234B1 (en) * 2019-07-08 2022-11-29 Cisco Technology, Inc. In-process correlation through class field injection
US11068364B2 (en) * 2019-07-12 2021-07-20 Intelliflash By Ddn, Inc. Predictable synchronous data replication
US10949332B2 (en) 2019-08-14 2021-03-16 Microsoft Technology Licensing, Llc Data race analysis based on altering function internal loads during time-travel debugging
US11216446B2 (en) * 2019-08-29 2022-01-04 Snowflake Inc. Identifying software regressions based on query retry attempts in a database environment
US11016849B2 (en) * 2019-09-04 2021-05-25 Red Hat, Inc. Kernel software raid support for direct-access file systems
CN111427816A (en) * 2020-03-04 2020-07-17 深圳震有科技股份有限公司 Inter-core communication method of AMP system, computer equipment and storage medium
US11216259B1 (en) * 2020-03-31 2022-01-04 Xilinx, Inc. Performing multiple functions in single accelerator program without reload overhead in heterogenous computing system
US11693795B2 (en) * 2020-04-17 2023-07-04 Texas Instruments Incorporated Methods and apparatus to extend local buffer of a hardware accelerator
US20210382888A1 (en) * 2020-06-08 2021-12-09 Mongodb, Inc. Hedged reads
US11611588B2 (en) * 2020-07-10 2023-03-21 Kyndryl, Inc. Deep learning network intrusion detection
US11360918B1 (en) * 2020-12-21 2022-06-14 Otis Elevator Company Real-time processing system synchronization in a control system
US11604752B2 (en) 2021-01-29 2023-03-14 Arm Limited System for cross-routed communication between functional units of multiple processing units
DE102021102460A1 (en) 2021-02-03 2022-08-04 Ford Global Technologies, Llc Procedure for performing a simulation
US11467811B1 (en) * 2021-06-24 2022-10-11 Marvell Asia Pte Ltd Method and apparatus for generating metadata by a compiler
US20230004365A1 (en) * 2021-06-24 2023-01-05 Marvell Asia Pte Ltd Multistage compiler architecture
US11537457B2 (en) * 2021-06-25 2022-12-27 Intel Corporation Low latency remoting to accelerators
US20220191003A1 (en) * 2021-12-10 2022-06-16 Tamas Mihaly Varhegyi Complete Tree Structure Encryption Software
KR20230092151A (en) * 2021-12-17 2023-06-26 삼성전자주식회사 Storage device and operating method thereof
CN114398019B (en) * 2022-01-24 2024-02-23 广州文石信息科技有限公司 Screen update request processing method and device and electronic ink screen equipment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941492B1 (en) * 2002-02-05 2005-09-06 Emc Corporation Debugging tool for efficient switching between targets in a multi-processor environment

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US117274A (en) * 1871-07-25 Improvement in barrel-heads
JP2738692B2 (en) * 1988-01-29 1998-04-08 株式会社日立製作所 Parallel compilation method
EP0396833A1 (en) * 1989-05-12 1990-11-14 International Business Machines Corporation Trace facility for use in a multiprocessing environment
JP3208870B2 (en) * 1992-10-30 2001-09-17 株式会社日立製作所 Evaluation method of data division pattern
US5692193A (en) 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5799142A (en) * 1994-09-12 1998-08-25 Nec Corporation Debugging method and debugging system for multi-task programs
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6539339B1 (en) * 1997-12-12 2003-03-25 International Business Machines Corporation Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches
US6115763A (en) 1998-03-05 2000-09-05 International Business Machines Corporation Multi-core chip providing external core access with regular operation function interface and predetermined service operation services interface comprising core interface units and masters interface unit
US20060117274A1 (en) * 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US20040154027A1 (en) * 1998-10-14 2004-08-05 Jean-Jacques Vandewalle Method and means for managing communications between local and remote objects in an object oriented client server system in which a client application invokes a local object as a proxy for a remote object on the server
JP2000132404A (en) * 1998-10-22 2000-05-12 Matsushita Electric Ind Co Ltd Instruction sequence optimizing device
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
JP2000293498A (en) * 1999-04-05 2000-10-20 Nec Corp Remote debug system in distributed environment and recording medium
US20020065864A1 (en) 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US6748583B2 (en) * 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
US6857084B1 (en) * 2001-08-06 2005-02-15 Lsi Logic Corporation Multiprocessor system and method for simultaneously placing all processors into debug mode
US6862694B1 (en) * 2001-10-05 2005-03-01 Hewlett-Packard Development Company, L.P. System and method for setting and executing breakpoints
US7047395B2 (en) * 2001-11-13 2006-05-16 Intel Corporation Reordering serial data in a system with parallel processing flows
US7318164B2 (en) * 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
US7080283B1 (en) * 2002-10-15 2006-07-18 Tensilica, Inc. Simultaneous real-time trace and debug for multiple processing core systems on a chip
US7765532B2 (en) * 2002-10-22 2010-07-27 Oracle America, Inc. Inducing concurrency in software code
US7243264B2 (en) * 2002-11-01 2007-07-10 Sonics, Inc. Method and apparatus for error handling in networks
US7222343B2 (en) * 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
US7444546B2 (en) * 2003-04-17 2008-10-28 Arm Limited On-board diagnostic circuit for an integrated circuit
US7114042B2 (en) * 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US7743382B2 (en) * 2003-11-03 2010-06-22 Ramal Acquisition Corp. System for deadlock condition detection and correction by allowing a queue limit of a number of data tokens on the queue to increase
US7797691B2 (en) * 2004-01-09 2010-09-14 Imec System and method for automatic parallelization of sequential code
JP3901180B2 (en) * 2004-06-30 2007-04-04 日本電気株式会社 Program parallelization apparatus and method, and program
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
EP1815333A4 (en) * 2004-09-07 2010-08-25 Starent Networks Corp Migration of tasks in a computing system
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
JP2006227706A (en) * 2005-02-15 2006-08-31 Matsushita Electric Ind Co Ltd Program development system and program development program
US7665073B2 (en) * 2005-04-18 2010-02-16 Microsoft Corporation Compile time meta-object protocol systems and methods
US7689867B2 (en) * 2005-06-09 2010-03-30 Intel Corporation Multiprocessor breakpoint
US7827551B2 (en) * 2005-09-21 2010-11-02 Intel Corporation Real-time threading service for partitioned multiprocessor systems
US7793278B2 (en) * 2005-09-30 2010-09-07 Intel Corporation Systems and methods for affine-partitioning programs onto multiple processing units
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
US9081609B2 (en) * 2005-12-21 2015-07-14 Xerox Corporation Image processing system and method employing a threaded scheduler
US8533680B2 (en) * 2005-12-30 2013-09-10 Microsoft Corporation Approximating finite domains in symbolic state exploration
US9038040B2 (en) * 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
US20070250820A1 (en) * 2006-04-20 2007-10-25 Microsoft Corporation Instruction level execution analysis for debugging software
US20090150872A1 (en) * 2006-07-04 2009-06-11 George Russell Dynamic code update
GB0613275D0 (en) * 2006-07-04 2006-08-16 Codeplay Software Ltd Distributed computer system
US20080046875A1 (en) * 2006-08-16 2008-02-21 Gad Haber Program Code Identification System and Method
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US9229726B2 (en) * 2006-10-26 2016-01-05 International Business Machines Corporation Converged call flow and web service application integration using a processing engine
US20080108899A1 (en) * 2006-11-06 2008-05-08 Nahi Halmann Hand-held ultrasound system with single integrated circuit back-end
EP2006784A1 (en) * 2007-06-22 2008-12-24 Interuniversitair Microelektronica Centrum vzw Methods for characterization of electronic circuits under process variability effects
US9223677B2 (en) * 2008-06-11 2015-12-29 Arm Limited Generation of trace data in a multi-processor system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941492B1 (en) * 2002-02-05 2005-09-06 Emc Corporation Debugging tool for efficient switching between targets in a multi-processor environment

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
J. ENGBLOM: "Debugging Real-Time Multiprocessor Systems", EMBEDDED SYSTEMS CONFERENCE, 3 April 2006 (2006-04-03) - 7 April 2006 (2006-04-07), San Jose, CA, USA, pages 1 - 15, XP002463007, Retrieved from the Internet <URL:http://www.virtutech.com/pdf/engblom-esc2006.pdf> [retrieved on 20071213] *
J. ENGBLOM: "Debugging Real-Time multiprocessor systems: Part 2, Debugging Parallel Programs", EMBEDDED.COM, 24 March 2006 (2006-03-24), pages 1 - 5, XP002463006, Retrieved from the Internet <URL:http://www.embedded.com/columns/technicalinsights/183702070?_requestid=125098> [retrieved on 20071213] *
QNX SOFTWARE SYSTEMS: "QNX Neutrino RTOS - System Architecture", February 2006 (2006-02-01), Canada, pages 1 - 407, XP002463005, Retrieved from the Internet <URL:http://www.qnx.com/download/feature.html?programid=14695> [retrieved on 20071213] *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010106403A1 (en) * 2009-03-17 2010-09-23 Toyota Jidosha Kabushiki Kaisha Failure diagnostic system, electronic control unit for vehicle, failure diagnostic method
JP2010218277A (en) * 2009-03-17 2010-09-30 Toyota Motor Corp Failure diagnostic system, electronic control unit, failure diagnostic method
US8656216B2 (en) 2009-03-17 2014-02-18 Toyota Jidosha Kabushiki Kaisha Failure diagnostic system, electronic control unit for vehicle, failure diagnostic method

Also Published As

Publication number Publication date
US20080098207A1 (en) 2008-04-24
JP2010507855A (en) 2010-03-11
JP5054115B2 (en) 2012-10-24
EP2076837A1 (en) 2009-07-08
GB0709182D0 (en) 2007-06-20
US8190807B2 (en) 2012-05-29
TWI407374B (en) 2013-09-01
EP2076837B1 (en) 2010-10-13
DE602007009857D1 (en) 2010-11-25
IL197314A0 (en) 2009-12-24
TW200821938A (en) 2008-05-16
US20080098208A1 (en) 2008-04-24
KR101325229B1 (en) 2013-11-04
MY144449A (en) 2011-09-30
US20080114937A1 (en) 2008-05-15
US8250549B2 (en) 2012-08-21
KR20090082254A (en) 2009-07-29
US20080215768A1 (en) 2008-09-04
IL197314A (en) 2012-12-31
US20080098262A1 (en) 2008-04-24
US7809989B2 (en) 2010-10-05
GB2443277A (en) 2008-04-30
GB2443277B (en) 2011-05-18
CN101529391B (en) 2011-06-15
CN101529391A (en) 2009-09-09

Similar Documents

Publication Publication Date Title
US7809989B2 (en) Performing diagnostic operations upon an asymmetric multiprocessor apparatus
US7600155B1 (en) Apparatus and method for monitoring and debugging a graphics processing unit
KR100350568B1 (en) Data processing system and method for performing debug functions
US6708326B1 (en) Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
US7711990B1 (en) Apparatus and method for debugging a graphics processing unit in response to a debug instruction
US7707395B2 (en) Data processing system with trace co-processor
EP2787444A2 (en) Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method
JP5905911B2 (en) Diagnostic code using single-step execution
US20080256339A1 (en) Techniques for Tracing Processes in a Multi-Threaded Processor
US20090313507A1 (en) Generation of trace data in a multi-processor system
US7945900B2 (en) Debugging tool for debugging multi-threaded programs
JP2001134466A (en) Debug device and debug method and program recording medium
GB2443507A (en) Debugging parallel programs
US20100153786A1 (en) Processor, multiprocessor, and debugging method
US10831639B2 (en) Method and device for non-intrusively collecting function trace data
US7823019B2 (en) Debug circuitry
US10162324B2 (en) Method for manipulating a control program of a control device
US6131109A (en) Multitask processor, a multitask processing method, a multitask processing display method and a storage medium for processing by correlating task and object
CN101042671A (en) Debugging system used for digital signal processor and debug method thereof
US7249348B2 (en) Non-interfering status inquiry for user threads
GB2393272A (en) Controlling performance counters within a data processing system
JP2000122882A (en) Multi-thread processor and debugging device
JPH03141436A (en) Debugging device
JPH06139105A (en) Device for tracing software
JPH01293447A (en) Control system for address coincidence interruption

Legal Events

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

Ref document number: 200780039694.8

Country of ref document: CN

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

Ref document number: 07789311

Country of ref document: EP

Kind code of ref document: A1

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
WWE Wipo information: entry into national phase

Ref document number: 197314

Country of ref document: IL

WWE Wipo information: entry into national phase

Ref document number: 2007789311

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1698/DELNP/2009

Country of ref document: IN

ENP Entry into the national phase

Ref document number: 2009533925

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 1020097010591

Country of ref document: KR