Issuing instructions on a vector processor

US11741044B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11741044-B2
Application numberUS-202117566460-A
CountryUS
Kind codeB2
Filing dateDec 30, 2021
Priority dateDec 30, 2021
Publication dateAug 29, 2023
Grant dateAug 29, 2023

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.

The present disclosure relates to a mechanism for issuing instructions in a processor (e.g., a vector processor) implemented as an overlay on programmable hardware (e.g., a field programmable gate array (FPGA) device). Implementations described herein include features for optimizing resource availability on programmable hardware units and enabling superscalar execution when coupled with a temporal single-instruction multiple data (SIMD). Systems described herein involve an issue component of a processor controller (e.g., a vector processor controller) that enables fast and efficient instruction issue while verifying that structural and data hazards between instructions have been resolved.

First claim

Opening claim text (preview).

What is claimed is: 1. A method being implemented by a processor as an overlay on programmable hardware, the method comprising: receiving, by a control unit, an instruction for execution on a functional unit of the processor; placing the instruction in an instruction issue queue, the instruction issue queue including a plurality of instructions received by the control unit, and wherein the instruction issue queue includes an indication of a range of instructions that have not been issued; applying at least one hazard tracker to the instruction to determine a lack of resource availability for executing the instruction on the at least one functional unit, wherein the control unit attempts to issue the instruction prior to the at least one hazard tracker confirming availability for executing the instructions on the at least one functional unit; and resetting, based on determining the lack of availability for executing the instruction on the at least one functional unit, at least one issued instruction and modifying the instruction issue queue based on an earliest instruction that has not successfully issued. 2. The method of claim 1 , wherein the programmable hardware is a field programmable gate array (FPGA) device. 3. The method of claim 2 , wherein the processor is a vector processor implemented as an overlay on the FPGA device. 4. The method of claim 1 , wherein the range of instructions includes: a head pointer indicating a slot of an earliest instruction of the instruction issue queue that has not successfully issued; and a tail pointer indicating a slot of a most recent instruction added to the instruction issue queue or a slot after the most recent instruction added to the instruction issue queue. 5. The method of claim 1 , wherein placing the instructions in the instruction issue queue and applying the at least one hazard tracker to the instructions are performed based on an assumption that the instruction will issue successfully. 6. The method of claim 1 , wherein applying the at least one hazard tracker comprises: applying a first hazard tracker configured to verify structural availability for one or more of a register file or a functional unit; and applying a second hazard tracker configured to verify data availability. 7. The method of claim 6 , wherein applying the at least one hazard tracker comprises: identifying a latency of the at least one functional unit; and causing one or more of the first hazard tracker and the second hazard tracker to initiate checking for an associated hazard type based on the identified latency of the at least one functional unit. 8. The method of claim 1 , wherein applying the at least one hazard comprises applying a register file hazard tracker to the instruction to determine whether data is available for the instruction to start executing. 9. The method of claim 1 , wherein applying the at least one hazard tracker comprises applying a functional unit occupancy hazard tracker to determine whether the at least one functional unit is available to execute the instruction. 10. The method of claim 1 , wherein applying the at least one hazard tracker comprises applying a write port arbiter hazard tracker to determine whether another functional unit is not writing to a same bank of a register file in the same cycle as the at least one functional unit. 11. The method of claim 1 , wherein the control unit is positioned between: a scalar unit that provides expanded instructions to the control unit; and a plurality of lanes having functional units thereon for executing the plurality of instructions. 12. The method of claim 1 , wherein applying the at least one hazard tracker comprises: applying a first hazard tracker to the instruction, the first hazard tracker being a register file hazard tracker configured to determine whether data is available for the instruction to start executing; applying a second hazard tracker to the instruction, the second hazard tracker being a functional unit occupancy hazard tracker configured to determine whether the at least one functional unit is available to execute the instruction; applying a third hazard tracker to the instruction, the third hazard tracker being a write port arbiter hazard tracker configured to determine whether another functional unit is writing to a same register in the same cycle as the at least one functional unit. 13. The method of claim 12 , wherein the first hazard tracker, the second hazard tracker, and the third hazard tracker are applied to the instruction in parallel with one another. 14. A processor implemented as an overlay on programmable hardware, comprising: a scalar unit configured to fetch and decode instructions; a plurality of lanes comprising functional units thereon configured to execute instructions; and a control unit being configured to: receive, from the scalar unit, an instruction for execution on a functional unit of the processor; place the instruction in an instruction issue queue, the instruction issue queue including a plurality of instructions received by the control unit, and wherein the instruction issue queue includes an indication of a range of instructions that have not been issued; apply at least one hazard tracker to the instruction to determine a lack of resource availability for executing the instruction on the at least one functional unit, wherein the control unit attempts to issue the instruction prior to the at least one hazard tracker confirming availability for executing the instructions on the at least one functional unit; and reset, based on determining the lack of availability for executing the instruction on the at least one functional unit, at least one issued instruction and modifying the instruction issue queue based on an earliest instruction that has not successfully issued. 15. The processor of claim 14 , wherein the range of instructions includes: a head pointer indicating a slot of an earliest instruction of the instruction issue queue that has not successfully issued; and a tail pointer indicating a slot of a most recent instruction added to the instruction issue queue or a slot after the most recent instruction added to the instruction issue queue. 16. The processor of claim 14 , wherein the control unit is further configured to place the instructions in the instruction issue queue and apply the at least one hazard tracker to the instructions based on an assumption that the instruction will issue successfully. 17. The processor of claim 14 , wherein applying the at least one hazard comprises applying a register file hazard tracker to the instruction to determine whether data is available for the instruction to start executing. 18. The processor of claim 14 , wherein applying the at least one hazard tracker comprises applying a functional unit occupancy hazard tracker to determine whether the at least one functional unit is available to execute the instruction. 19. The processor of claim 14 , wherein applying the at least one hazard tracker comprises applying a write port arbiter hazard tracker to determine whether another functional unit is writing to a same register in the same cycle as the at least one functional unit. 20. The processor of claim 14 , wherein applying the at least one hazard tracker comprises: applying a first hazard tracker to the instruction, the first hazard tracker being a register file hazard tracker configured to determine whether data is available for the instruction to start executing; applying a second hazard tracker

Assignees

Inventors

Classifications

  • Vector processors · CPC title

  • Gate array · CPC title

  • G06F9/3838Primary

    Dependency mechanisms, e.g. register scoreboarding · CPC title

  • Implementation provisions of register files, e.g. ports · CPC title

  • Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F11/00) · 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 US11741044B2 cover?
The present disclosure relates to a mechanism for issuing instructions in a processor (e.g., a vector processor) implemented as an overlay on programmable hardware (e.g., a field programmable gate array (FPGA) device). Implementations described herein include features for optimizing resource availability on programmable hardware units and enabling superscalar execution when coupled with a tempo…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F15/8053. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 29 2023 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 10 related publications on this page (citations in our corpus or others sharing the same primary CPC).