Hardware-driven call stack attribution
AssigneeNVIDIA Corporation
InventorsAvinash Bantval Baliga, Gregory Paul Smith, Magnus Strengert
Life of this patent
Estimating the term…
Abstract
Apparatuses, systems, and techniques for hardware-driven call stack attribution. The apparatuses, systems, and techniques include generating and updating call stacks within a processing device during execution of an application. In particular, a branch identifier associated with an instruction being executed by an execution thread is determined. A call stack identifier of the execution thread executing the instruction is identified. The call stack identifier of the execution thread is updated based on the identified call stack identifier of the execution thread and the branch identifier.
Claims21
A method comprising:
- determining, by a processing circuit, a branch identifier associated with an instruction of an application being executed by an execution thread;
- identifying a call stack identifier of the execution thread executing the instruction;
- and
- updating the call stack identifier of the execution thread with a new value of the call stack identifier of the execution thread, the updating comprising:
- identifying, based on the identified call stack identifier of the execution thread and the branch identifier, a record of a state transition data structure associated with the application, wherein the record comprises the new value of the call stack identifier of the execution thread;
- obtaining the new value of the call stack identifier of the execution thread from the identified record;
- and
- setting the call stack identifier of the execution thread to the obtained new value of the call stack identifier of the execution thread.
A system comprising:
- a memory device;
- and
- a processing circuit coupled to the memory device, wherein the processing circuit is to perform operations comprising:
- determining a branch identifier associated with an instruction of an application being executed by an execution thread;
- identifying a call stack identifier of the execution thread executing the instruction;
- and
- updating the call stack identifier of the execution thread with a new value of the call stack identifier of the execution thread, the updating comprising:
- identifying, based on the identified call stack identifier of the execution thread and the branch identifier, a record of a state transition data structure associated with the application, wherein the record comprises the new value of the call stack identifier of the execution thread;
- obtaining the new value of the call stack identifier of the execution thread from the identified record;
- and
- setting the call stack identifier of the execution thread to the obtained new value of the call stack identifier of the execution thread.
A non-transitory computer-readable medium comprising instructions that, responsive to execution by a processing circuit, cause the processing circuit to perform operations comprising:
- receiving a state transition data structure associated with an application to be executed;
- encoding a plurality of instructions associated with the application with a branch identifier;
- and
- responsive to execution of an instruction of the plurality of instructions by an execution thread, updating a call stack identifier of the execution thread with a new value of the call stack identifier of the execution thread, the updating comprising:
- identifying, based on the call stack identifier of the execution thread and the branch identifier, a record of the state transition data structure, wherein the record comprises the new value of the call stack identifier of the execution thread;
- obtaining the new value of the call stack identifier of the execution thread from the identified record;
- and
- setting the call stack identifier of the execution thread to the obtained new value of the call stack identifier of the execution thread.
Dependencies are inferred from the claim text.