Parallel memories for multidimensional data access

US9760770B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9760770-B2
Application numberUS-201313918892-A
CountryUS
Kind codeB2
Filing dateJun 14, 2013
Priority dateApr 15, 2013
Publication dateSep 12, 2017
Grant dateSep 12, 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.

The subject disclosure is directed towards loading parallel memories (e.g., in one or more FPGAs) with multidimensional data in an interleaved manner such that a multidimensional patch/window may be filled with corresponding data in a single parallel read of the memories. Depending on the position of the patch, the data may be rotated horizontally and/or vertically, for example, so that the data in each patch is consistently arranged in the patch regardless of from which memory each piece of data was read. Also described is leveraging dual ported memory for multiple line reads and/or loading one part of a buffer while reading from another.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: receiving a request to process multidimensional data of an image; based on the request, identifying a window to apply to the image, the window comprising a first dimension having a first length and a second dimension having a second length; determining a subset of a plurality of memories to distribute the multidimensional data of the image among, the determining comprising multiplying the first length of the first dimension of the window by the second length of the second dimension of the window, wherein a number of memories in the subset of the plurality of memories is equal to a product of multiplying the first length by the second length; loading, in an interleaved manner, the multidimensional data into the subset of the plurality of memories; upon loading the multidimensional data, executing a parallel read of the subset of the plurality of memories; filling a data window with the multidimensional data based on the parallel read of the subset of the plurality of memories; and processing the multidimensional data in the data window. 2. The method of claim 1 wherein loading the multidimensional data among the subset of the plurality of memories comprises loading a part of the multidimensional data into a buffer comprising the subset of the plurality of memories. 3. The method of claim 1 wherein loading the multidimensional data comprises writing data corresponding to a first dimension of the multidimensional data to alternate memories in the subset of the plurality of memories corresponding to the first dimension of the window. 4. The method of claim 1 wherein loading the multidimensional data comprises writing data corresponding to a first dimension of the multidimensional data to alternate memories in the subset of the plurality of memories corresponding to the second dimension of the window. 5. The method of claim 1 further comprising accessing a memory of the subset of the plurality of memories based upon a section in the subset of the plurality of memories corresponding to a position of the multidimensional data in the window. 6. The method of claim 1 wherein the subset of the plurality of memories comprise dual ported memories, and wherein reading the subset of the plurality of memories comprises reading data from two addresses in a single cycle. 7. The method of claim 1 wherein the subset of the plurality of memories comprise dual ported memories, and wherein the method further comprises writing to a memory address of a memory of the subset of the plurality of memories while reading from a different or same memory address of the memory. 8. The method of claim 1 further comprising: to ensure that outputs of the subset of memories are returned in a consistent manner, upon determining that a particular pixel in the data window is not in a predefined location, rotating pixels in the data window one or more times in a horizontal rotation until the particular pixel in the data window is in the predefined location; and returning the data window to an original orientation after any rotating of the pixels. 9. The method of claim 1 further comprising: to ensure that outputs of the subset of memories are returned in a consistent manner, upon determining that a particular pixel in the data window is not in a predefined location, rotating pixels in the data window one or more times in a vertical rotation until the particular pixel in the data window is in the predefined location; and returning the data window to an original orientation after any rotating of the pixels. 10. The method of claim 1 further comprising: to ensure that outputs of the subset of memories are returned in a consistent manner, upon determining that a particular pixel in the data window is not in a predefined location, rotating pixels in the data window one or more times in a horizontal rotation and at least once in a vertical rotation until the particular pixel in the data window location; and returning the data window to an original orientation after any rotating of the pixels. 11. A system comprising: a plurality of memories; and a processor programmed to: receive a request to process multidimensional data of an image; based on the request, identify a window to apply to the image, the window comprising a first dimension having a first length and a second dimension having a second length; determine a number of the plurality of memories to distribute the multidimensional data among, the determining comprising multiplying a first length of the first dimension of the window by the second length of the second dimension of the window, wherein the number of the memories is equal to a product of multiplying the first length by the second length; load the number of memories with the multidimensional data of the image data from a multidimensional array in an interleaved manner; executing a parallel read of the loaded number of memories; filling a data window with the multidimensional data based on the parallel read of the number of memories; and processing the multidimensional data in the data window. 12. The system of claim 11 wherein the number of memories are one of the following: contained in a single field programmable gate array, or distributed among a plurality of field programmable gate arrays. 13. The system of claim 11 further comprising a fetching process configured to fill a particular window at a given position relative to the multidimensional array with image data read from the number of memories in parallel. 14. The system of claim 13 further comprising an array processing component configured to receive the particular window filled by the fetching process. 15. The system of claim 13 wherein the fetching process is configured to ensure that outputs of the number of memories are returned in a consistent manner by: determining that a particular pixel in the particular window is not in a predefined location; and rotating pixels read from the number of memories along the dimensions of the particular window until the particular pixel is in the predefined location when providing the outputs. 16. The system of claim 15 further comprising an array processing component configured to receive the data after rotation by the fetching process. 17. The system of claim 11 wherein the processor is further programmed to load a part of the multidimensional array data into a buffer comprising the number of memories. 18. The system of claim 11 wherein the multidimensional array data comprises at least one set of image data. 19. One or more computer-readable storage media having executable instructions, which perform operations comprising: receiving a request to process multidimensional data of an image; based on the request, identifying a window to apply to the image, the window comprising a first dimension having a first length and a second dimension having a second length; determining addresses in a plurality of memories to store the multidimensional data based upon a position of the window from which the multidimensional data is obtained, the window comprising image data corresponding to pixels in the image; loading, in an interleaved manner, the multidimensional data into the plurality of memories; filling a data window with the multidimensional data corresponding to the data window by executing a single parallel read of the plurality of memories; and processing the multidimensional data corresponding to the filled data window. 20. The one or more computer-readab

Assignees

Inventors

Classifications

  • Classification; Matching · CPC title

  • Correction of chromatic aberration · CPC title

  • provided with illuminating means · CPC title

  • for generating image signals from visible and infrared light wavelengths · CPC title

  • in combination with electromagnetic radiation sources for illuminating objects · 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 US9760770B2 cover?
The subject disclosure is directed towards loading parallel memories (e.g., in one or more FPGAs) with multidimensional data in an interleaved manner such that a multidimensional patch/window may be filled with corresponding data in a single parallel read of the memories. Depending on the position of the patch, the data may be rotated horizontally and/or vertically, for example, so that the dat…
Who is the assignee on this patent?
Microsoft Corp, Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G01B11/22. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 12 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 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).