Debug support for block-based processor

US10776115B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10776115-B2
Application numberUS-201514942557-A
CountryUS
Kind codeB2
Filing dateNov 16, 2015
Priority dateSep 19, 2015
Publication dateSep 15, 2020
Grant dateSep 15, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Systems and methods are disclosed for supporting debugging of programs in block-based processor architectures. In one example of the disclosed technology, a processor includes a block-based processor core for executing an instruction block comprising an instruction header and a plurality of instructions. The block-based processor core includes execution control logic and core state access logic. The execution control logic can be configured to schedule respective instructions of the plurality of instructions for execution in a dynamic order during a default execution mode and to schedule the respective instructions for execution in a static order during a debug mode. The core state access logic can be configured to read intermediate states of the block-based processor core and to provide the intermediate states outside of the block-based processor core during the debug mode.

First claim

Opening claim text (preview).

We claim: 1. A processor comprising: a plurality of block-based processor cores including a first block-based processor core for executing an instruction block comprising an instruction header and a plurality of instructions, the first block-based processor core comprising: execution control logic configured to schedule respective instructions of the plurality of instructions for execution in a dynamic order during a default execution mode and to schedule the respective instructions for execution in a static order during a debug mode, the dynamic order determined during execution of the instruction block and based on when operands of the plurality of the instructions are ready, the static order determined based on information that is available before the instruction block is executed; core state access logic in communication with the execution control logic, the core state access logic configured to read intermediate states of the block-based processor core and to provide the intermediate states outside of the block-based processor core only during the debug mode; and a hardware control unit comprising a debug control module coupled to the plurality of block-based processor cores, the debug control module configured to receive the intermediate states from the core state access logic and to update at least one of the intermediate states based on input from a user. 2. The processor of claim 1 , wherein the static order is a compiler-generated order. 3. The processor of claim 1 , wherein the static order is based on a breadth-first traversal of a dependence graph of the instruction block. 4. The processor of claim 1 , wherein the static order is different than a compiler-generated order, and wherein the execution control logic is further configured to receive information indicating which instruction of the instruction block to execute. 5. The processor of claim 1 , wherein the intermediate states of the processor core comprise operand buffers of an instruction window of the processor core. 6. The processor of claim 1 , further comprising: header decode logic in communication with the execution control logic, the header decode logic configured to decode the instruction header of the instruction block, and wherein the debug mode is initiated in response to decoding an asserted flag of the instruction header. 7. The processor of claim 1 , wherein the intermediate states of the block-based processor core are uncommitted results that are local to the block-based processor core. 8. A method of executing a first instruction block, comprising a first instruction block header and a first plurality of instructions, on a first block-based processor core, and executing a second instruction block, comprising a second instruction block header and a second plurality of instructions, on a second block-based processor core, the method comprising: scheduling the first plurality of instructions for execution in a dynamic order during a default execution mode, the dynamic order determined during execution of the first instruction block and based on when operands of the first plurality of the instructions are ready; determining, by a debug control module of a hardware control unit shared between the first and second block-based processor cores and based on information that is available before the second instruction block is executed, a static order for execution of the second plurality of instructions, the static order differing from a compiler-generated order for execution of the second plurality of instructions; scheduling the plurality of instructions of the second instruction block for execution in the static order during a debug mode; reading intermediate states of the second block-based processor core; and providing the intermediate states outside of the second block-based processor core to the debug control module. 9. The method of claim 8 , wherein the static order is based on a breadth-first traversal of a dependence graph of the second instruction block. 10. The method of claim 8 , wherein the method further comprises: receiving, at the second block-based processor core, from the debug control module, information indicating which instruction of the second instruction block to execute. 11. The method of claim 8 , wherein the intermediate states of the processor core comprise operand buffers of an instruction window of the second block-based processor core. 12. The method of claim 8 , further comprising: decoding the second instruction block header, and initiating the debug mode in response to decoding an asserted flag of the second instruction block header. 13. The method of claim 8 , wherein the intermediate states of the second block-based processor core are uncommitted results that are local to the second block-based processor core. 14. One or more computer-readable non-volatile storage devices or memory components storing computer-readable instructions that when executed by an apparatus comprising a block-based processor core, cause the apparatus to perform a method, the computer-readable instructions comprising: first instructions to receive an instruction block comprising an instruction header and a plurality of program instructions; second instructions to schedule the plurality of program instructions for execution in a dynamic order during a default execution mode, the dynamic order determined during execution of the instruction block and based on when operands of the plurality of program instructions are ready; third instructions to schedule the plurality of program instructions for execution in a static order during a debug mode, the static order determined based on information that is available before the instruction block is executed; fourth instructions to read intermediate states of the block-based processor core; and fifth instructions to provide the intermediate states outside of the block-based processor core, to a debug control module of a hardware control unit shared between the block-based processor core and another block-based processor core, only during the debug mode, wherein the intermediate states are not visible to the another block-based processor core. 15. The one or more computer-readable non-volatile storage devices or memory components of claim 14 , wherein the static order is a compiler-generated order. 16. The one or more computer-readable non-volatile storage devices or memory components of claim 14 , wherein the static order is based on a breadth-first traversal of a dependence graph of the instruction block. 17. The one or more computer-readable non-volatile storage devices or memory components of claim 14 , wherein the static order is different than a compiler-generated order for execution of the plurality of program instructions, and wherein the computer-readable instructions further comprise: sixth instructions to receive information indicating which program instruction of the instruction block to execute. 18. The one or more computer-readable non-volatile storage devices or memory components of claim 14 , wherein the intermediate states of the block-based processor core comprise operand buffers of an instruction window of the block-based processor core.

Assignees

Inventors

Classifications

  • from multiple instruction streams, e.g. multistreaming · CPC title

  • Conditional branch instructions · CPC title

  • to perform operations for flow control · CPC title

  • Instructions to perform operations on packed data, e.g. vector, tile or matrix operations · CPC title

  • Result writeback, i.e. updating the architectural state or memory · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10776115B2 cover?
Systems and methods are disclosed for supporting debugging of programs in block-based processor architectures. In one example of the disclosed technology, a processor includes a block-based processor core for executing an instruction block comprising an instruction header and a plurality of instructions. The block-based processor core includes execution control logic and core state access logic…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/30138. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 15 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).