IP Library Granted Patent US 9,183,614
Granted Patent B2
US 9,183,614 · App. 13/602,958 · Granted Nov 10, 2015

Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets

Inventor: William M. Johnson (Austin, TX)
Assignee: Mireplica Technology, LLC
G06T1/60G06F15/80G06T1/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,183,614
App. No.
13/602,958
Granted
Nov 10, 2015
Kind
B2
Abstract

Systems, processors and methods are disclosed for organizing processing datapaths to perform operations in parallel while executing a single program. Each datapath executes the same sequence of instructions, using a novel instruction sequencing method. Each datapath is implemented through a processor having a data memory partitioned into identical regions. A master processor fetches instructions and conveys them to the datapath processors. All processors are connected serially by an instruction pipeline, such that instructions are executed in parallel datapaths, with execution in each datapath offset in time by one clock cycle from execution in adjacent datapaths. The system includes an interconnection network that enables full sharing of data in both horizontal and vertical dimensions, with the effect of coupling any datapath to the memory of any other datapath without adding processing cycles in common usage. This approach enables programmable visual computing with throughput approaching that of hardwired solutions.

Claims (15)

1. A method of program execution by a master processor coupled to at least two data processors, wherein each data processor includes a data memory partitioned into a number of identical regions, said method comprising:

fetching a first instruction from an instruction memory in the master processor;

conveying the first instruction to an instruction buffer of a first data processor of the at least two data processors, for execution using data in a first region of the data memory of the first data processor;

determining whether execution of the first instruction by the first data processor requires movement of data between the data memory of the first data processor and the data memory of a different data processor;

if execution of the first instruction does not require movement of data between the first data processor and a different data processor, continuing to fetch and convey to the instruction buffer subsequent instructions until determining that a conveyed instruction requires said movement of data between data processors;

upon determining that execution of the conveyed instruction does require movement of data between the first data processor and a different data processor, retrieving the first instruction, and conveying, the first instruction to the instruction buffer of the first data processor, for execution using data memory in a consecutive adjacent region of the data memory of the first data processor; and

repeating, for each adjacent region of the data memory in the first data processor, conveyance of a sequence of instructions ranging from the first instruction through the instruction requiring said movement of data between data processors, for execution using data stored in the respective region.

2. A method of program execution by a data processor coupled to at least one identical data processor and to a master processor, wherein the data processor includes an instruction buffer and a data memory partitioned into at least two identical regions, the method comprising:

receiving a program instruction in the instruction buffer;

simultaneously decoding the program instruction and conveying the instruction to an instruction buffer of an adjacent identical data processor;

executing the program instruction using data in a first region of the data memory;

determining whether execution of the instruction requires movement of data between the data memory of the data processor and a data memory of a different data processor;

if execution of the instruction does not require movement of data between the data processor and a different data processor, continuing to execute subsequent instructions received in the instruction buffer using data in the same region of the data memory, until determining that an executed instruction requires access to said movement of data between data processors;

upon determining that an executed instruction does require movement of data between the data processor and a different data processor, applying execution of the next instruction received to data stored in the next adjacent region of the data memory; and

repeating, for each adjacent region of the memory execution of a sequence of instructions ending with the instruction requiring said movement of data between data processors, where the execution uses data stored in the respective region.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2013
From: JOHNSON, WILLIAM M.
To: MIREPLICA TECHNOLOGY, LLC
Reel/Frame 030946/0885 →
Continuity (2)
Provisional Application 61530965 · Sep 3, 2011
Related Publication 20130307859A1 · Nov 21, 2013