Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure

US9785423B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9785423-B2
Application numberUS-201514694856-A
CountryUS
Kind codeB2
Filing dateApr 23, 2015
Priority dateApr 23, 2015
Publication dateOct 10, 2017
Grant dateOct 10, 2017

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.

A method is described that includes translating higher level program code including higher level instructions having an instruction format that identifies pixels to be accessed from a memory with first and second coordinates from an orthogonal coordinate system into lower level instructions that target a hardware architecture having an array of execution lanes and a shift register array structure that is able to shift data along two different axis. The translating includes replacing the higher level instructions having the instruction format with lower level shift instructions that shift data within the shift register array structure.

First claim

Opening claim text (preview).

The invention claimed is: 1. A method, comprising: translating higher level program code including higher level instructions having an instruction format that identifies pixels to be accessed from a memory with first and second coordinates from an orthogonal coordinate system into lower level instructions that target a hardware architecture having an array of execution lanes and a shift register array structure that is able to shift data along two different axis, the translating comprising replacing some of the higher level instructions having the instruction format with lower level shift instructions that are to shift data within the shift register array structure when executed by respective execution units of the execution lanes, the translating also comprising replacing others of the higher level instructions having the instruction format with lower level memory access instructions that specify a respective external memory address, the lower level memory access instructions to be executed by respective memory units within respective execution lanes of the execution lane array to access respective external memory space that is external to the respective execution lanes that execute the lower level memory access instructions to access the external memory space. 2. The method of claim 1 wherein the translating further comprises reordering a sequence of pixel accesses articulated in the some of the higher level instructions having the instruction format with a shift friendly sequence of lower level shift instructions. 3. The method of claim 2 wherein the higher level instructions having the instruction format include load instructions. 4. The method of claim 2 wherein the higher level instructions having the instruction format include store instructions. 5. The method of claim 1 wherein the hardware architecture includes a plurality of memories coupled to said shift register array structure to receive spill-over data from shifting operations of said shift-register array structure. 6. The method of claim 5 , further comprising: identifying those of the higher level instructions that will cause a conflict accessing a particular one of the memories if implemented in hardware according to an accessing pattern specified at the higher level; and, restructuring the access pattern to avoid the conflict. 7. The method of claim 6 wherein the conflict comprises two or more accesses of a same memory on a same cycle and the restructuring includes unrolling the two or more access to be sequential across multiple cycles. 8. The method of claim 7 wherein the accesses are targeted to a same look-up table. 9. The method of claim 7 wherein the accesses result from a same atomic update. 10. The method of claim 1 , further comprising: recognizing that in a same cycle different execution lanes of the execution lane array desire to process respective data from different channels of an image, wherein the data is at an offset relative to the execution lanes' respective positions; inserting program code to shift, by the offset, a sheet of index information identifying the respective data each execution lane desires; inserting program code to cause a different set of different execution lanes spaced apart from the different execution lanes by the offset to load from the sheet of index information and to load from a corresponding appropriate channel for each such load; and, inserting program code to shift the desired data to its respective one of the different execution lanes. 11. A non-transitory machine readable storage medium having stored thereon program code that when processed by a computing system causes a method to be performed, the method comprising: translating higher level program code including higher level instructions having an instruction format that identifies pixels to be accessed from a memory with first and second coordinates from an orthogonal coordinate system into lower level instructions that target a hardware architecture having an array of execution lanes and a shift register array structure that is able to shift data along two different axis, the translating comprising replacing the higher level instructions having the instruction format with lower level shift instructions that are to shift data within the shift register array structure when executed by respective execution units of the execution lanes, the translating also comprising replacing others of the higher level instructions having the instruction format with lower level memory access instructions that specify a respective external memory address, the lower level memory access instructions to be executed by respective memory units within respective execution lanes of the execution lane array to access respective external memory space that is external to the respective execution lanes that execute the lower level memory access instructions to access the external memory space. 12. The non-transitory machine readable storage medium of claim 11 wherein the translating further comprises reordering a sequence of pixel accesses articulated in the some of the higher level instructions having the instruction format with a shift friendly sequence of lower level shift instructions. 13. The non-transitory machine readable storage medium of claim 12 , wherein the method further comprises re-ordering mathematical operation instructions to consume input values consistently with the shift friendly sequence. 14. The non-transitory machine readable storage medium of claim 12 wherein the higher level instructions having the instruction format include load instructions and/or store instructions. 15. The non-transitory machine readable storage medium of claim 11 wherein the hardware architecture includes a plurality of memories coupled to said shift register array structure to receive spill-over data from shifting operations of said shift-register array structure. 16. The non-transitory machine readable storage medium of claim 15 , wherein the method further comprises: identifying those of the higher level instructions that will cause a conflict accessing a particular one of the memories if implemented in hardware according to an accessing pattern specified at the higher level; and, restructuring the access pattern to avoid the conflict. 17. The non-transitory machine readable storage medium of claim 16 wherein the conflict comprises two or more accesses of a same memory on a same cycle and the restructuring includes unrolling the two or more access to be sequential across multiple cycles. 18. The non-transitory machine readable storage medium of claim 17 wherein the accesses are targeted to a same look-up table. 19. The non-transitory machine readable storage medium of claim 17 wherein the accesses result from a same atomic update. 20. A computing system comprising a plurality of processing cores and a machine readable medium, the machine readable medium containing program code that when processed by the plurality of processing cores causes a method to be performed, the method comprising: translating higher level program code including higher level instructions having an instruction format that identifies pixels to be accessed from a memory with first and second coordinates from an orthogonal coordinate system into lower level instructions that target a hardware architecture having an array of execution lanes and a shift register array structure that is able to shift data along two different axis, the translating comprising replacing the higher level instructions havin

Assignees

Inventors

Classifications

  • Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE · CPC title

  • Instruction analysis, e.g. decoding, instruction word fields · CPC title

  • Reducing the execution time required by the program code · CPC title

  • G06F8/451Primary

    Code distribution (considering CPU load at run-time G06F9/505; load rebalancing G06F9/5083) · CPC title

  • Exploiting fine grain parallelism, i.e. parallelism at instruction level (run-time instruction scheduling G06F9/3836) · 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 US9785423B2 cover?
A method is described that includes translating higher level program code including higher level instructions having an instruction format that identifies pixels to be accessed from a memory with first and second coordinates from an orthogonal coordinate system into lower level instructions that target a hardware architecture having an array of execution lanes and a shift register array structu…
Who is the assignee on this patent?
Google Inc
What technology area does this patent fall under?
Primary CPC classification G06F8/451. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 10 2017 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 5 related publications on this page (citations in our corpus or others sharing the same primary CPC).