Adding central processor unit (CPU) context switch registers for CPU performance evaluation

Context switch registers in CPUs facilitate efficient performance evaluation by tracking task transitions and identifying abnormalities, optimizing CPU performance with minimal overhead.

WO2025166612A1PCT designated stage Publication Date: 2025-08-14QUALCOMM INC +4
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/076556
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-02-07
Publication Date
2025-08-14

AI Technical Summary

Technical Problem

Existing information processing systems face challenges in evaluating CPU performance with minimal resource utilization overhead to optimize overall system performance.

Method used

The implementation of context switch registers, including an arithmetic logic unit (ALU) and an activity monitoring unit (AMU), to save task identifiers and timestamps, allowing for performance evaluation of processing engines.

Benefits of technology

Enables efficient CPU performance evaluation by monitoring task transitions and identifying abnormal behaviors, facilitating real-time performance assessment and fault isolation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024076556_14082025_PF_FP_ABST
    Figure CN2024076556_14082025_PF_FP_ABST
Patent Text Reader

Abstract

Aspects of the disclosure are directed to processing engine context switch registers. In accordance with one aspect, the disclosure includes saving a first identifier associated with a first task in a first activity monitoring unit (AMU) register; saving a first timestamp of the first task in a first timestamp register; and evaluating performance of a processing engine using one or more contents of the first timestamp register and the first AMU register.
Need to check novelty before this filing date? Find Prior Art

Description

ADDING CENTRAL PROCESSOR UNIT (CPU) CONTEXT SWITCH REGISTERS FOR CPU PERFORMANCE EVALUATIONTECHNICAL FIELD

[0001] This disclosure relates generally to the field of computer processor architecture, and, in particular, to using context switch registers for a processing engine such as a central processor unit (CPU) for performance evaluation.BACKGROUND

[0002] An information processing system, for example, a plurality of processing engines, may handle a plurality of tasks, at a given time. For each task and processing engine, there may be a desire for performance evaluation with minimal resource utilization overhead to optimize overall information processing system performance.SUMMARY

[0003] The following presents a simplified summary of one or more aspects of the present disclosure, in order to provide a basic understanding of such aspects. This summary is not an extensive overview of all contemplated features of the disclosure, and is intended neither to identify key or critical elements of all aspects of the disclosure nor to delineate the scope of any or all aspects of the disclosure. Its sole purpose is to present some concepts of one or more aspects of the disclosure in a simplified form as a prelude to the more detailed description that is presented later.

[0004] In one aspect, the disclosure provides processing engine context switch registers. Accordingly, an apparatus including: an arithmetic logic unit (ALU) configured to save a first identifier associated with a first task and configured to save a first timestamp of the first task into a first timestamp register; and an activity monitoring unit (AMU) coupled to the ALU, the AMU configured to evaluate performance of a processing engine using one or more contents of the first timestamp register, and a first AMU register, and wherein the first task is in the processing engine. In one example, the apparatus further includes a program counter (PC) coupled to the AMU and the ALU, the program counter configured to store a current program count state to indicate an instruction in a current task being executed.

[0005] In one example, the ALU is further configured to use a system clock to execute the first task in an execution flow of the processing engine using a first state of a plurality of registers and a first state of the program counter. In one example, the ALU is further configured to save the first identifier associated with the first task into the first AMU register.

[0006] In one example, the AMU comprises the first AMU register and a second AMU register, and wherein the ALU is further configured to save a second timestamp of a second task into a second timestamp register and to save a second identifier associated with the second task into the second AMU register.

[0007] In one example, the first timestamp register, the second timestamp register, the first AMU register and the second AMU register are components of the AMU. In one example, the first timestamp register, the second timestamp register, the first AMU register and the second AMU register are components of a control processor (CP) of the processing engine, wherein the CP manages and monitors the processing engine.

[0008] Another aspect of the disclosure provides a method including: saving a first identifier associated with a first task in a first activity monitoring unit (AMU) register; saving a first timestamp of the first task in a first timestamp register; and evaluating performance of a processing engine using one or more contents of the first timestamp register and the first AMU register.

[0009] In one example, the method further includes saving a first state of a plurality of registers and a first state of a program counter from the processing engine into a memory. In one example, the method further includes saving a second timestamp of a second task in a second timestamp register; and saving a second identifier associated with the second task in a second activity monitoring unit (AMU) register.

[0010] In one example, the method further includes retrieving a second state of the plurality of registers and a second state of the program counter from the memory to the processing engine. In one example, the method further includes using a system clock to execute the first task in an execution flow of the processing engine using the first state of a plurality of registers and the first state of the program counter. In one example, the method further includes using the system clock to execute the second task in the processing engine using the second state of the plurality of registers and the second state of the program counter.

[0011] In one example, the method further includes evaluating the performance of the processing engine using at least one content of the second timestamp register and the second AMU register. In one example, the method further includes identifying an exceedance of a predetermined time allotment using the first timestamp register or the second timestamp register. In one example, the method further includes deriving a diagnostic information from one or more clock frequency data of the processing engine.

[0012] Another aspect of the disclosure provides an apparatus including: means for saving a first identifier associated with a first task in a first activity monitoring unit (AMU) register; means for saving a first timestamp of the first task in a first timestamp register; and means for evaluating performance of a processing engine using one or more contents of the first timestamp register and the first AMU register.

[0013] In one example, the apparatus further includes means for saving a first state of the plurality of registers and a first state of a program counter from the processing engine into a memory; means for saving a second timestamp of a second task into a second timestamp register; and means for saving a second identifier associated with the second task into a second AMU register. In one example, the apparatus further includes means for retrieving a second state of the plurality of registers and a second state of the program counter from the memory to the processing engine.

[0014] In one example, the apparatus further includes means for using a system clock to execute the second task in the processing engine using the second state of the plurality of registers and the second state of the program counter; and means for incrementing the system clock using a periodic waveform.

[0015] These and other aspects of the present disclosure will become more fully understood upon a review of the detailed description, which follows. Other aspects, features, and implementations of the present disclosure will become apparent to those of ordinary skill in the art, upon reviewing the following description of specific, exemplary implementations of the present invention in conjunction with the accompanying figures. While features of the present invention may be discussed relative to certain implementations and figures below, all implementations of the present invention can include one or more of the advantageous features discussed herein. In other words, while one or more implementations may be discussed as having certain advantageous features, one or more of such features may also be used in accordance with the various  implementations of the invention discussed herein. In similar fashion, while exemplary implementations may be discussed below as device, system, or method implementations it should be understood that such exemplary implementations can be implemented in various devices, systems, and methods.BRIEF DESCRIPTION OF THE DRAWINGS

[0016] FIG. 1 illustrates an example central processing unit (CPU) system.

[0017] FIG. 2 illustrates a first example of a central processing unit (CPU) context switching sequence for a CPU execution flow.

[0018] FIG. 3 illustrates a second example of a central processing unit (CPU) context switching sequence for a CPU execution flow.

[0019] FIG. 4 illustrates a central processing unit (CPU) context switching data array.

[0020] FIG. 5 illustrates an example flow diagram for processing engine performance evaluation using one or more processing engine context switch registers.DETAILED DESCRIPTION

[0021] The detailed description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well known structures and components are shown in block diagram form in order to avoid obscuring such concepts.

[0022] While for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the methodologies are not limited by the order of acts, as some acts may, in accordance with one or more aspects, occur in different orders and / or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with one or more aspects.

[0023] FIG. 1 illustrates an example central processing unit (CPU) system 100. In one example, a central processing unit (CPU) 110 includes a plurality of general registers with a first register R0 111, a second register R1 112, etc., up to an Nth register RN 113. In one example, the CPU 110 includes an arithmetic logic unit (ALU) 114 to execute a plurality of tasks in a processing engine execution flow. In one example, the CPU 110 includes a program counter (PC) 115. For example, the PC 115 stores a current program count state to indicate which instruction in a current task is being executed. In one example, the CPU 110 includes a link register (LR) 116. For example, the LR 116 stores a return address for a function call. In one example, the CPU 110 includes a processor state register (PSR) 117. For example, the PSR 117 stores state information of a processor. In one example, state information is stored data which allows proper execution of a task. In one example, the CPU 110 includes a cache memory 118. For example, the cache memory 118 is an on-chip memory used for very fast memory access.

[0024] In one example, the CPU system 100 includes a main memory 120. For example, the main memory 120 is a double data rate (DDR) memory. In one example, the cache memory 118 in the CPU 110 fetches desired data from the main memory 120 to allow faster access by the CPU 110 to the desired data.

[0025] In one example, the CPU system 100 includes an external input / output (I / O) interface 130. For example, the external I / O interface 130 may connect to input devices such as a keyboard, a mouse, a microphone, a camera, etc. and may connect to output devices such as a monitor, a speaker, a printer, etc. In one example, the CPU system 100 includes an activity monitoring unit (AMU) 140. For example, the AMU 140 may be used for system management and monitoring.

[0026] In one example, the CPU system 100 executes a plurality of tasks. In one example, before each task of the plurality of tasks is run, the CPU system 100 needs to know where to load and where to start each task and also needs to record a timestamp of a running task. In one example, the CPU system 100 sets or restores a plurality of registers and a program counter in advance to task execution. In one example, the CPU system 100 operates in an environment which includes the elements of FIG. 1. In one example, a state of the CPU system 100 at a given time is known as a CPU context. In one example, the state of the CPU system 100 is stored data which allows proper execution of the CPU system 100.

[0027] In one example, the CPU context includes the state of all registers and the program counter for a current task. In one example, when switching from the current task to a new task, CPU context switching is performed. In one example, CPU context switching occurs when the CPU context corresponding to the current task is first saved to memory (e.g., main memory) and then a CPU context corresponding to the new task is loaded from memory (e.g., main memory) into the plurality of registers and program counter. In one example, the new task is initialized using the program counter corresponding to the new task.

[0028] FIG. 2 illustrates a first example of a central processing unit (CPU) context switching sequence 200 for a CPU execution flow. In one example, a first task 210 (e.g., Thread A) is executed in a processing engine using a first state of a plurality of registers and a first state of a program counter. In one example, the first state of the plurality of registers and the first state of the program counter 220 from the processing engine are next saved to memory (e.g., main memory) . In one example, a second state of the plurality of registers and a second state of the program counter 230 are retrieved from memory into the processing engine. In one example, a second task 240 (e.g., Thread B) is executed using the second state of the plurality of registers and the second state of the program counter. In one example, a CPU clock (e.g., CPU tick) 250 increments using a periodic waveform.

[0029] In one example, the CPU context may be stored in an operating system memory space (e.g., Linux kernel) for system resource management when switching out of a current task. In one example, the CPU context may be retrieved from the operating system memory space when switching into a new task. In one example, the storing and retrieval of CPU context when switching tasks ensures that an original state of the current task is not affected by the CPU context switch and that operation of the current task appears continuous to a user.

[0030] FIG. 3 illustrates a second example of a central processing unit (CPU) context switching sequence 300 for a CPU execution flow. In one example, a first task 310 (e.g., Thread A) is executed in a processing engine using a first state of a plurality of registers and a first state of a program counter. In one example, the first state of the plurality of registers and the first state of the program counter 320 from the processing engine are next saved to memory (e.g., main memory) . In one example, a second state of the plurality of registers and a second state of the program counter 330 are retrieved from memory into the  processing engine. In one example, a second task 340 (e.g., Thread B) is executed using the second state of the plurality of registers and the second state of the program counter. In one example, a system clock (e.g., CPU tick) 350 increments using a periodic waveform.

[0031] In one example, the second example of the CPU context switching sequence 300 includes a plurality of switching operations during the CPU context switch within the CPU execution flow. In one example, the plurality of switching operations utilizes a plurality of context switch registers. In one example, the plurality of context switch registers includes a first activity monitoring unit (AMU) register, a second AMU register, a first timestamp register, a second timestamp register, etc. In one example, an AMU may be part of a CPU control processor (CPUCP) . In one example, the CPUCP controls and / or manages the CPU. In one example, the CPUCP is an external controller which monitors CPU performance.

[0032] In one example, in operational step 321, save a first identifier (e.g., first process identifier, PID) associated with the first task (e.g., Thread A) in the first AMU register. In one example, the first task is a task being switched out of the CPU execution flow.

[0033] In one example, in operational step 322, save a first timestamp of the first task in the first timestamp register. In one example, the first timestamp is derived from a system time. In one example, the system time is based on a digital counter coupled to a system frequency source. In one example, the system frequency source produces the periodic waveform with a system frequency which may be variable for each task. For example, the digital counter increments by one unit for each rising edge or each falling edge of the periodic waveform produced by the system frequency source. For example, the digital counter is the system clock which maintains the system time. In one example, the system time serves as a common time reference for each task of the plurality of tasks.

[0034] In one example, in operational step 323, save a second timestamp of the second task in the second timestamp register. In one example, the second timestamp is derived from the system time.

[0035] In one example, in operational step 324, save a second identifier (e.g., second process identifier, PID) associated with the second task (e.g., Thread B) in the second AMU register. In one example, the second task is a task being switched into the CPU execution flow.

[0036] FIG. 4 illustrates a central processing unit (CPU) context switching data array 400. In one example, the CPU context switching data array 400 is a data repository for contents of the first timestamp register, the second timestamp register, the first AMU register and the second AMU register. That is, the CPU context switching data array includes the first timestamp of the first task, the second timestamp of the second task, the first identifier of the first task and the second identifier of the second task. In one example the CPU context switching data array 400 includes derived information from the plurality of registers in a CPU. In one example, the CPU context switching data array 400 may be a repository for contents of a plurality of timestamp registers and a plurality of AMU registers from a plurality of CPUs or processing engines. In one example, the CPU context switching data array 400 includes derived information from the plurality of CPUs or processing engines.

[0037] In one example, a first column 410 of the CPU context switching data array 400 lists a plurality of timestamps for a plurality of tasks (e.g., a plurality of threads) executed by a plurality of CPUs. In one example, each timestamp of the plurality of timestamps is derived from a system time. In one example, the system time is based on a digital counter coupled to a system frequency source. In one example, the system time serves as a common time reference for each task of the plurality of tasks.

[0038] In one example, a second column 420 of the CPU context switch data array 400 lists a plurality of process identifiers (PID) for the plurality of tasks executed by the plurality of CPUs. In one example, each PID of the plurality of PIDs serves as a unique identifier of each task of the plurality of tasks.

[0039] In one example, a third column 430 of the CPU context switch data array 400 lists a plurality of task names (e.g., thread names) for the plurality of tasks executed by the plurality of CPUs.

[0040] In one example, a fourth column 440 of the CPU context switch data array 400 lists a plurality of CPU numbers (i.e., identifiers) for the plurality of tasks executed by the plurality of CPUs.

[0041] In one example, a fifth column 450 of the CPU context switch data array 400 lists a plurality of CPU clock frequencies for the plurality of tasks executed by the plurality of CPUs. In one example, each CPU clock frequency of the plurality of CPU clock frequencies is derived from a system frequency from the system frequency source.

[0042] In one example, a monitoring process may be established to monitor a switching status of each CPU of the plurality of CPUs and a time segment of each CPU of the plurality of CPUs which is occupied by each task of the plurality of tasks. In one example, the monitoring process is executed by an activity monitoring unit (AMU) or a CPU control processor (CPUCP) . In one example, the monitoring process includes generation and interpretation of the CPU context switch data array 400.

[0043] In one example, the monitoring process may interpret the CPU context switch data array 400 to assess CPU system performance and status. In one example, a particular task of the plurality of tasks which exceeds a predetermined time allotment may be identified. For example, exceedance of the predetermined time allotment may be identified by examination of the CPU context switch data array 400. For example, a timestamp of the particular task may be retrieved from a timestamp register in the AMU or CPUCP. In one example, the exceedance of the predetermined time allotment may indicate a task which does not conform to CPU usage policy or a task which has abnormal behavior (e.g., is a task which is stuck in an iterative loop) .

[0044] In one example, a hung CPU may be identified by the monitoring process. In one example, the hung CPU may be identified by analysis of timestamp data in the CPU context switch data array 400. In one example, the hung CPU may be isolated from the plurality of CPUs from the timestamp data analysis.

[0045] In one example, diagnostic information for the plurality of CPUs may be derived by the monitoring process. In one example, the diagnostic information may be derived from the plurality of CPU clock frequencies in the CPU context switch data array 400. In one example, the diagnostic information may include data on display screen refresh rate or latency. In one example, the diagnostic information may be used for real-time performance assessment and fault isolation.

[0046] In one example, the monitoring process may isolate a source of faults (e.g., CPU issue, task issue, etc. ) based on the diagnostic information. In one example, the diagnostic information may be transferred from the AMU or CPUCP to a high-level operating system (HLOS) for additional diagnostic analysis and dissemination.

[0047] In one example, the CPU context switch data array 400 may be mined by an artificial intelligence (AI) engine to evaluate performance of the plurality of tasks and a plurality of user applications. In one example, the CPU context switch data array 400 may be used  by the AI engine for training of the performance evaluation. In one example, the performance evaluation may be provided as feedback to developers of the plurality of user applications.

[0048] FIG. 5 illustrates an example flow diagram 500 for processing engine performance evaluation using one or more processing engine context switch registers. In block 510, use a system clock to execute a first task in a processing engine execution flow using a first state of a plurality of registers and a first state of a program counter. In one example, a system clock is used to execute a first task in a processing engine execution flow using a first state of a plurality of registers and a first state of a program counter.

[0049] In one example, the plurality of registers includes a plurality of general registers, a link register (LR) , a processor state register (PSR) , etc. In one example, the LR stores a return address for a function call. In one example, the PSR stores state information of a processing engine. In one example, state information is data which allows proper execution of a task. In one example, the program counter (PC) stores a current program count state to indicate which instruction in a current task is being executed.

[0050] In block 520, save the first state of the plurality of registers and the first state of the program counter from a processing engine into a memory. In one example, the first state of the plurality of registers and the first state of the program counter are saved from a processing engine into a memory. In one example, the memory is main memory (e.g., DDR memory) . In one example, the first state of the plurality of registers and the first state of the program counter are associated with the first task being switched out of the processing engine execution flow.

[0051] In block 530, save a first identifier associated with the first task into a first activity monitoring unit (AMU) register. In one example, a first identifier associated with the first task is saved into a first activity monitoring unit (AMU) register. In one example, the first task is a task being switched out of the processing engine execution flow. In one example, the first AMU register is in an activity monitoring unit (AMU) . In one example, the first AMU register is in a CPU control processor (CPUCP) .

[0052] In block 540, save a first timestamp of the first task into a first timestamp register. In one example, a first timestamp of the first task is saved into a first timestamp register. In one example, the first timestamp register is in the AMU. In one example, the first timestamp register is in the CPUCP. In one example, the first timestamp is derived from a system  time. In one example, the system time is based on a digital counter coupled to a system frequency source. In one example, the system frequency source produces a periodic waveform with a system frequency which may be variable for each task. For example, the digital counter increments by one unit for each rising edge or each falling edge of the periodic waveform produced by the system frequency source. For example, the digital counter is the system clock which maintains the system time. In one example, the system time serves as a common time reference for each task.

[0053] In block 550, retrieve a second state of the plurality of registers and a second state of the program counter from the memory to the processing engine. In one example, a second state of the plurality of registers and a second state of the program counter are retrieved from the memory to the processing engine. In one example, the second state of the plurality of registers and the second state of the program counter are associated with a second task being switched into the processing engine execution flow.

[0054] In block 560, save a second timestamp of a second task into a second timestamp register. In one example, the second timestamp register is in the AMU. In one example, a second timestamp of a second task is saved into a second timestamp register. In one example, the second timestamp register is in the CPUCP. In one example, the second timestamp is derived from the system time.

[0055] In block 570, save a second identifier associated with the second task into a second AMU register. In one example, a second identifier associated with the second task is saved into a second AMU register. In one example, the second task is a task being switched into the processing engine execution flow. In one example, the second AMU register is in the AMU. In one example, the second AMU register is in the CPUCP. In one example, the AMU register is a storage device which holds an identifier associated with a task. The AMU is an external controller which monitors processing engine performance.

[0056] In block 580, use the system clock to execute the second task in the processing engine using the second state of the plurality of registers and the second state of the program counter. In one example, the system clock is used to execute the second task in the processing engine using the second state of the plurality of registers and the second state of the program counter.

[0057] In block 590, increment the system clock (e.g., CPU tick) using a periodic waveform. In one example, the system clock is incremented using a periodic waveform.

[0058] In block 595, evaluate performance of the processing engine using one or more contents of the first timestamp register and the first AMU register. In one example, performance of the processing engine is evaluated using one or more contents of the first timestamp register, and the first AMU register. In one example, the step of block 595 is to evaluate performance of the processing engine using one or more contents of the first timestamp register, the second timestamp register, the first AMU register and the second AMU register.

[0059] In one example, evaluate performance of the processing engine using a monitoring process to monitor a switching status of the processing engine and a time segment of the processing engine. In one example, the monitoring process is executed by the AMU or CPUCP. In one example, the performance evaluation includes generation and interpretation of a processing engine context switch data array. In one example, the performance evaluation identifies an exceedance of a predetermined time allotment using the first timestamp register or the second timestamp register. In one example, the identifying the exceedance is to indicate a task which does not conform to usage policy or which has abnormal behavior.

[0060] In one example, the performance evaluation includes an identification of a hung processing engine by analysis of timestamp data from the first timestamp register or the second timestamp register. In one example, the performance evaluation includes derivation of diagnostic information from analysis of processing engine clock frequency data in the processing engine context switch data array. In one example, the diagnostic information may be used for real-time performance assessment and fault isolation. In one example, the diagnostic information may include data on display screen refresh rate or latency. In one example, hung refers to a process which is stuck in an infinite loop.

[0061] In one example, the performance evaluation may isolate a source of faults (e.g., processing engine issue, task issue, etc. ) based on the diagnostic information. In one example, the diagnostic information may be transferred from the AMU or CPUCP to a high-level operating system (HLOS) for additional diagnostic analysis and dissemination.

[0062] In one example, the performance evaluation may be mined by an artificial intelligence (AI) engine to evaluate performance of the plurality of tasks and a plurality of user applications. In one example, the diagnostic information may be used by the AI engine  for training of the performance evaluation. In one example, the performance evaluation may be provided as feedback to developers of the plurality of user applications.

[0063] In one aspect, one or more of the steps for providing processing engine context switch registers in FIG. 5 may be executed by one or more processors which may include hardware, software, firmware, etc. The one or more processors, for example, may be used to execute software or firmware needed to perform the steps in the flow diagram of FIG. 5. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.

[0064] The software may reside on a computer-readable medium. The computer-readable medium may be a non-transitory computer-readable medium. A non-transitory computer-readable medium includes, by way of example, a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip) , an optical disk (e.g., a compact disc (CD) or a digital versatile disc (DVD) ) , a smart card, a flash memory device (e.g., a card, a stick, or a key drive) , a random access memory (RAM) , a read only memory (ROM) , a programmable ROM (PROM) , an erasable PROM (EPROM) , an electrically erasable PROM (EEPROM) , a register, a removable disk, and any other suitable medium for storing software and / or instructions that may be accessed and read by a computer. The computer-readable medium may also include, by way of example, a carrier wave, a transmission line, and any other suitable medium for transmitting software and / or instructions that may be accessed and read by a computer. The computer-readable medium may reside in a processing system, external to the processing system, or distributed across multiple entities including the processing system. The computer-readable medium may be embodied in a computer program product. By way of example, a computer program product may include a computer-readable medium in packaging materials. The computer-readable medium may include software or firmware. Those skilled in the art will recognize how best to implement the described functionality presented throughout this disclosure depending on the particular application and the overall design constraints imposed on the overall system.

[0065] Any circuitry included in the processor (s) is merely provided as an example, and other means for carrying out the described functions may be included within various aspects of the present disclosure, including but not limited to the instructions stored in the computer-readable medium, or any other suitable apparatus or means described herein, and utilizing, for example, the processes and / or algorithms described herein in relation to the example flow diagram.

[0066] Within the present disclosure, the word “exemplary” is used to mean “serving as an example, instance, or illustration. ” Any implementation or aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects of the disclosure. Likewise, the term “aspects” does not require that all aspects of the disclosure include the discussed feature, advantage or mode of operation. The term “coupled” is used herein to refer to the direct or indirect coupling between two objects. For example, if object A physically touches object B, and object B touches object C, then objects A and C may still be considered coupled to one another-even if they do not directly physically touch each other. The terms “circuit” and “circuitry” are used broadly, and intended to include both hardware implementations of electrical devices and conductors that, when connected and configured, enable the performance of the functions described in the present disclosure, without limitation as to the type of electronic circuits, as well as software implementations of information and instructions that, when executed by a processor, enable the performance of the functions described in the present disclosure.

[0067] One or more of the components, steps, features and / or functions illustrated in the figures may be rearranged and / or combined into a single component, step, feature or function or embodied in several components, steps, or functions. Additional elements, components, steps, and / or functions may also be added without departing from novel features disclosed herein. The apparatus, devices, and / or components illustrated in the figures may be configured to perform one or more of the methods, features, or steps described herein. The novel algorithms described herein may also be efficiently implemented in software and / or embedded in hardware.

[0068] It is to be understood that the specific order or hierarchy of steps in the methods disclosed is an illustration of exemplary processes. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the methods may be rearranged. The  accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented unless specifically recited therein.

[0069] The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language of the claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more. ” Unless specifically stated otherwise, the term “some” refers to one or more. A phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover: a; b; c; a and b; a and c; b and c; and a, b and c. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. §112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for. ”

[0070] One skilled in the art would understand that various features of different embodiments may be combined or modified and still be within the spirit and scope of the present disclosure.

Claims

1.An apparatus comprising:an arithmetic logic unit (ALU) configured to save a first identifier associated with a first task and configured to save a first timestamp of the first task into a first timestamp register; andan activity monitoring unit (AMU) coupled to the ALU, the AMU configured to evaluate performance of a processing engine using one or more contents of the first timestamp register, and a first AMU register, and wherein the first task is in the processing engine.2.The apparatus of claim 1, further comprising a program counter (PC) coupled to the AMU and the ALU, the program counter configured to store a current program count state to indicate an instruction in a current task being executed.3.The apparatus of claim 2, wherein the ALU is further configured to use a system clock to execute the first task in an execution flow of the processing engine using a first state of a plurality of registers and a first state of the program counter.4.The apparatus of claim 3, wherein the ALU is further configured to save the first identifier associated with the first task into the first AMU register.5.The apparatus of claim 4, wherein the AMU comprises the first AMU register and a second AMU register, and wherein the ALU is further configured to save a second timestamp of a second task into a second timestamp register and to save a second identifier associated with the second task into the second AMU register.6.The apparatus of claim 5, wherein the first timestamp register, the second timestamp register, the first AMU register and the second AMU register are components of the AMU.7.The apparatus of claim 5, wherein the first timestamp register, the second timestamp register, the first AMU register and the second AMU register are components of a control processor (CP) of the processing engine, wherein the CP manages and monitors the processing engine.8.A method comprising:saving a first identifier associated with a first task in a first activity monitoring unit (AMU) register;saving a first timestamp of the first task in a first timestamp register; andevaluating performance of a processing engine using one or more contents of the first timestamp register and the first AMU register.9.The method of claim 8, further comprising saving a first state of a plurality of registers and a first state of a program counter from the processing engine into a memory.10.The method of claim 9, further comprising:saving a second timestamp of a second task in a second timestamp register; andsaving a second identifier associated with the second task in a second activity monitoring unit (AMU) register.11.The method of claim 10, further comprising retrieving a second state of the plurality of registers and a second state of the program counter from the memory to the processing engine.12.The method of claim 11, further comprising using a system clock to execute the first task in an execution flow of the processing engine using the first state of a plurality of registers and the first state of the program counter.13.The method of claim 12, further comprising using the system clock to execute the second task in the processing engine using the second state of the plurality of registers and the second state of the program counter.14.The method of claim 10, further comprising evaluating the performance of the processing engine using at least one content of the second timestamp register and the second AMU register.15.The method of claim 14, further comprising identifying an exceedance of a predetermined time allotment using the first timestamp register or the second timestamp register.16.The method of claim 14, further comprising deriving a diagnostic information from one or more clock frequency data of the processing engine.17.An apparatus comprising:means for saving a first identifier associated with a first task in a first activity monitoring unit (AMU) register;means for saving a first timestamp of the first task in a first timestamp register; andmeans for evaluating performance of a processing engine using one or more contents of the first timestamp register and the first AMU register.18.The apparatus of claim 17, further comprising:means for saving a first state of the plurality of registers and a first state of a program counter from the processing engine into a memory;means for saving a second timestamp of a second task into a second timestamp register; andmeans for saving a second identifier associated with the second task into a second AMU register.19.The apparatus of claim 18, further comprising means for retrieving a second state of the plurality of registers and a second state of the program counter from the memory to the processing engine.20.The apparatus of claim 19, further comprising:means for using a system clock to execute the second task in the processing engine using the second state of the plurality of registers and the second state of the program counter; andmeans for incrementing the system clock using a periodic waveform.

Citation Information

Patent Citations

  • Information processing device, fault avoidance method, and program storage medium

    CN104516786A

  • Performance analysis method, system and equipment for non-structured distributed storage system

    CN107911252A

  • Method and device for evaluation of performance of multiprocessor system

    JP2000132528A

  • Performance measurement program, performance measurement method, and information processor having performance measurement function

    JP2010152458A

  • Event-based device performance monitoring

    US11281967B1