Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure

US10095479B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10095479-B2
Application numberUS-201514694890-A
CountryUS
Kind codeB2
Filing dateApr 23, 2015
Priority dateApr 23, 2015
Publication dateOct 9, 2018
Grant dateOct 9, 2018

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 instantiating, within an application software development environment, a virtual processor having an instruction set architecture and memory model that contemplate first and second regions of reserved memory. The first reserved region is to keep data of an input image array. The second reserved region is to keep data of an output image array. The method also includes simulating execution of a memory load instruction of the instruction set architecture by automatically targeting the first reserved region and identifying desired input data with first and second coordinates relative to the virtual processor's position within an orthogonal coordinate system and expressed in the instruction format of the memory load instruction.

First claim

Opening claim text (preview).

The invention claimed is: 1. One or more non-transitory computer storage media encoded with program code that when processed by a computing system causes the computing system to perform operations comprising: instantiating, within an application software development environment, an input array, an output array, and a plurality of virtual processor instances, wherein the input array stores input image data of one or more line groups of an image, and wherein the output array stores output image data of one or more line groups of the image, wherein each virtual processor instance comprises one or more registers, each virtual processor instance being configured to execute instructions of an instruction set architecture having a load instruction that references locations within the input array of the application software development environment, and wherein each virtual processor instance is configured to execute a respective thread of a plurality of threads, wherein each thread is assigned to a respective line group position within a line group of the image; receiving a load instruction of the instruction set architecture of the virtual processor instances, wherein the load instruction identifies a target register and specifies a load address having a source x offset and a source y offset, the source x offset and the source y offset being offsets relative to a line group position to which a thread executed by a virtual processor instance is assigned; executing a respective thread having the load instruction by each virtual processor instance of the plurality of virtual processor instances thereby simulating operations of an image processor having a two-dimensional shift register array and a two-dimensional array of processing elements, wherein executing the load instruction includes performing operations comprising: obtaining a line group position to which a thread executed by the virtual processor instance is assigned, computing a two-dimensional source position in the line group of the image including using the source x offset and the source y offset of the load address as offsets relative to the line group position to which the thread executed by the virtual processor instance is assigned, and copying, to a target register of the virtual processor instance identified by the load instruction, data from a location in the input image array corresponding to the computed two-dimensional source position in the line group of the image. 2. The one or more computer storage media of claim 1 , wherein executing the load instruction by each virtual processor instance of the plurality of virtual processor instances comprises concurrently executing the load instruction by each virtual processor instance of the plurality of virtual processor instances. 3. The one or more computer storage media of claim 1 , wherein instantiating, within the application software development environment, a plurality of virtual processor instances comprises: instantiating at least one virtual processor instance for each location in the output image array; and assigning respective threads executed by the plurality of virtual processor instances to respective line group positions corresponding respectively to locations of image data in the output image array. 4. The one or more computer storage media of claim 1 , wherein executing a same load instruction by the plurality of virtual processor instances causes each virtual processor instance to read from a different respective location in the input image array. 5. The one or more computer storage media of claim 1 , wherein the operations further comprise: receiving a store instruction of the instruction set architecture of the virtual processor instances, wherein the store instruction identifies a source register and specifies a store address, the store address having a target x offset and a target y offset, the target x offset and the target y offset being offsets relative to a line group position to which a thread executed by a virtual processor instance is assigned; and executing the store instruction by each virtual processor instance, including: obtaining a line group position to which a thread executed by the virtual processor instance is assigned, computing a two-dimensional target position in the line group of the image including using the target x offset and the target y offset of the store address as offsets relative to the line group position to which the thread executed by the virtual processor instance is assigned, and copying, to a location in the output image array corresponding to the computed two-dimensional target position in the line group of the image, data from a source register of the virtual processor instance identified by the store instruction. 6. The one or more computer storage media of claim 5 , wherein executing a same store instruction by the plurality of virtual processor instances causes each virtual processor instance to write to a different respective location in the output image array. 7. The one or more computer storage media of claim 5 , wherein after executing the store instruction by each virtual processor instance of the plurality of virtual processor instances, the input image array remains unchanged. 8. A system comprising: one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising: instantiating, within an application software development environment, an input array, an output array, and a plurality of virtual processor instances, wherein the input array stores input image data of one or more line groups of an image, and wherein the output array stores output image data of one or more line groups of the image, wherein each virtual processor instance comprises one or more registers, each virtual processor instance being configured to execute instructions of an instruction set architecture having a load instruction that references locations within the input array of the application software development environment, and wherein each virtual processor instance is configured to execute a respective thread of a plurality of threads, wherein each thread is assigned to a respective line group position within a line group of the image; receiving a load instruction of the instruction set architecture of the virtual processor instances, wherein the load instruction identifies a target register and specifies a load address having a source x offset and a source y offset, the source x offset and the source y offset being offsets relative to a line group position to which a thread executed by a virtual processor instance is assigned; executing a respective thread having the load instruction by each virtual processor instance of the plurality of virtual processor instances thereby simulating operations of an image processor having a two-dimensional shift register array and a two-dimensional array of processing elements, wherein executing the load instruction includes: obtaining a line group position to which a thread executed by the virtual processor instance is assigned, computing a two-dimensional source position in the line group of the image including using the source x offset and the source y offset of the load address as offsets relative to the line group position to which the thread executed by the virtual processor instance is assigned, and copying, to a target register of the virtual processor instance identified by the load instruction, data from a location in the input image array corresponding to the computed two-dimensional source position in the line group of the image. 9. The system of claim 8 , wherein executing the load instruc

Assignees

Inventors

Classifications

  • Arrangements for executing specific programs · CPC title

  • Design optimisation, verification or simulation (optimisation, verification or simulation of circuit designs G06F30/30) · CPC title

  • Requirements analysis; Specification techniques · CPC title

  • Arrangements for executing machine instructions, e.g. instruction decode (for executing microinstructions G06F9/22) · CPC title

  • G06T1/20Primary

    Processor architectures; Processor configuration, e.g. pipelining · 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 US10095479B2 cover?
A method is described that includes instantiating, within an application software development environment, a virtual processor having an instruction set architecture and memory model that contemplate first and second regions of reserved memory. The first reserved region is to keep data of an input image array. The second reserved region is to keep data of an output image array. The method also …
Who is the assignee on this patent?
Google Llc
What technology area does this patent fall under?
Primary CPC classification G06T1/20. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 09 2018 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 6 related publications on this page (citations in our corpus or others sharing the same primary CPC).