Write nullification

US10198263B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10198263-B2
Application numberUS-201615060413-A
CountryUS
Kind codeB2
Filing dateMar 3, 2016
Priority dateSep 19, 2015
Publication dateFeb 5, 2019
Grant dateFeb 5, 2019

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.

Apparatus and methods are disclosed for nullifying one or more registers identified in a target field of a nullification instruction. In some examples of the disclosed technology, an apparatus can include memory and one or more block-based processor cores configured to fetch and execute a plurality of instruction blocks. One of the cores can include a control unit configured, based at least in part on receiving a nullification instruction, to obtain a register identification of at least one of a plurality of registers, based on a target field of the nullification instruction. A write to the at least one register associated with the register identification is nullified. The nullification instruction is in a first instruction block of the plurality of instruction blocks. Based on the nullified write to the at least one register, a subsequent instruction is executed from a second, different instruction block.

First claim

Opening claim text (preview).

We claim: 1. An apparatus comprising a block-based processor, the block-based processor comprising: one or more processing cores configured to fetch and execute a plurality of instructions in an instruction block; and a control unit configured, based at least in part on receiving a nullification instruction, to: obtain a register identification of at least one of a plurality of registers, based on a target field of the nullification instruction; nullify a write to the at least one register associated with the register identification, wherein the nullification instruction is in a first predicate arm of the instruction block; and based on the nullified write to the at least one register, execute a subsequent instruction from a second, different predicate arm of the instruction block. 2. The apparatus of claim 1 , wherein: the control unit is configured to nullify the at least one register by fetching and executing the nullification instruction encoded in the instruction block; and the subsequent instruction is a register read instruction from a register identified by the register identification. 3. The apparatus of claim 1 , further comprising: a hardware structure configured to store data indicating one or more of the plurality of registers that data will be written to during execution of the instruction block. 4. The apparatus of claim 3 , wherein the data stored in the hardware structure comprises a write mask. 5. The apparatus of claim 1 , wherein the register identification comprises a register mask identifying the at least one of the plurality of registers. 6. The apparatus of claim 1 , further comprising an instruction decoder configured to: decode a plurality of memory access instructions of the instruction block; and detect at least one predicated instruction, the predicated instruction being associated with a first predicated execution path and a second predicated execution path. 7. The apparatus of claim 6 , wherein the control unit is further configured to, during execution of instructions in the first predicated execution path: detect an instruction writing to at least a second register of the plurality of registers in the second predicated execution path; and nullify the at least second register while executing the instructions in the first predicated execution path. 8. The apparatus of claim 7 , wherein the nullifying of the at least second register while executing the instructions in the first predicated execution path takes place without inserting a separate nullification instruction in the instruction block. 9. The apparatus of claim 1 , wherein the control unit is configured to nullify the at least one register by increasing a register write instruction count of instructions writing to one or more of the plurality of registers and that have been executed within the instruction block. 10. The apparatus of claim 9 , wherein the control unit is configured to execute the subsequent instruction when the register write instruction count reaches a pre-determined value. 11. The apparatus of claim 10 , wherein the control unit is further configured to: based on the nullified at least one register, commit the instruction block and execute at least one instruction from at least a second instruction block of the plurality of instruction blocks. 12. A method of operating a processor to execute a block of instructions comprising a plurality of instructions that write to one or more registers in a register file of the processor, the method comprising: retrieving data indicating execution ordering of the plurality of instructions; detecting a predicated instruction during instruction execution; determining that at least a first register write instruction from the plurality of instructions will not execute when a condition of the predicated instruction is satisfied; generating a nullification instruction that will execute when the condition is satisfied, wherein a target field of the nullification instruction identifies the at least first register write; and issuing the predicated instruction. 13. The method according to claim 12 , wherein the target field further comprises a register mask and at least one shift bit, the at least first register being identified based on the register mask and the at least one shift bit. 14. The method according to claim 12 , wherein the target field of the nullification instruction comprises a register mask identifying multiple registers of the plurality of registers, for nullification. 15. The method according to claim 14 , further comprising: detecting during execution of the block of instructions that the condition of the predicated instruction is not satisfied; and nullifying the multiple registers identified by the nullification instruction. 16. The method according to claim 15 , wherein the nullifying further comprises: proceeding execution of a subsequent instruction as if one or more of the plurality of register write instructions writing to the multiple registers have executed. 17. The method according to claim 12 , wherein the first register write instruction is in a first predicated execution path of the predicated instruction, and the method further comprising: executing the nullification instruction during executing instructions in a second predicated execution path of the predicated instruction. 18. The method according to claim 17 , wherein the executing of the nullification instruction comprises: marking the first register write instruction as completed, as if the first register write instruction has executed. 19. One or more computer-readable storage media storing computer-readable instructions for an instruction block that when executed by a block-based processor, cause the processor to perform a method, the computer-readable instructions comprising: instructions that cause the processor to analyze control flow encoded in source code and/or object code to emit first instructions that will execute when a predicate condition is true and to emit second instructions that will not execute when the predicate condition is true, wherein: the first instructions comprise an instruction to write to a register indicated by a register identifier, and the second instructions comprise an instruction to nullify a write to the register, the instruction to nullify being encoded with the register identifier; and instructions that cause the processor to emit a non-branch instruction to evaluate the predicate condition and store a predicate value in a predicate register, wherein execution of the first instructions and the second instructions is conditioned on the predicate value. 20. An method of executing a plurality of instructions encoded in an instruction block, the method comprising: based on receiving a nullification instruction with a processing core, obtaining a register identification of at least one of a plurality of registers based on a target field of the nullification instruction; based on the receiving the nullification instruction, nullifying a write to the at least one register associated with the register identification, wherein the nullification instruction is in a first predicate arm of the instruction block; and based on the nullified write to the at least one register, executing a subsequent instruction from a second, different predicate arm of the instruction block. 21. The method of claim 20 , wherein: the nullifying the write to the at least one register is performed by fetching and executing the n

Assignees

Inventors

Classifications

  • to perform operations on memory · CPC title

  • Parallel decoding, e.g. parallel decode units · CPC title

  • with multilevel cache hierarchies · CPC title

  • of immediate specifier, e.g. constants · CPC title

  • using instruction pipelines · 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 US10198263B2 cover?
Apparatus and methods are disclosed for nullifying one or more registers identified in a target field of a nullification instruction. In some examples of the disclosed technology, an apparatus can include memory and one or more block-based processor cores configured to fetch and execute a plurality of instruction blocks. One of the cores can include a control unit configured, based at least in …
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/3016. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 05 2019 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).