SIMD processor and addressing method
First Claim
1. A method of executing an instruction using a processor, said processor having a plurality of addressing register sets, each register set comprising a pointer register and a scale register, said method comprising calculating an effective memory address for use by said processor in executing said instruction, said calculating comprising:
- determining a selected one of said register sets from said processor instruction;
retrieving a pointer stored in said pointer register of said selected one of said register sets;
retrieving a scale value stored in said scale register of said selected one of said register sets;
forming an effective memory address from said scale value and said pointer.
9 Assignments
0 Petitions
Accused Products
Abstract
A single instruction, multiple data (SIMD) processor including a plurality of addressing register sets, used to flexibly calculate effective operand source and destination memory addresses is disclosed. Two or more address generators calculate effective addresses using the register sets. Each register set includes a pointer register, and a scale register. An address generator forms effective addresses from a selected register set'"'"'s pointer register and scale register; and an offset. For example, the effective memory address may be formed by multiplying the scale value by an offset value and summing the pointer and the scale value multiplied by the offset value.
382 Citations
46 Claims
-
1. A method of executing an instruction using a processor, said processor having a plurality of addressing register sets, each register set comprising a pointer register and a scale register, said method comprising calculating an effective memory address for use by said processor in executing said instruction, said calculating comprising:
-
determining a selected one of said register sets from said processor instruction;
retrieving a pointer stored in said pointer register of said selected one of said register sets;
retrieving a scale value stored in said scale register of said selected one of said register sets;
forming an effective memory address from said scale value and said pointer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. In a processor having at least two register sets, each of said register sets comprising a pointer register containing a memory address and an associated increment register, a method of executing an instruction comprising:
-
retrieving data stored at a memory address based on a pointer register of a first one of said sets, for use as a first operand;
performing an arithmetic or logical operation in accordance with said instruction on said first operand to produce a result;
updating said pointer register of said first set by incrementing said pointer register of said first set based on a value contained in its associated increment register. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A processor for connection with processor-readable memory, said processor comprising:
-
first and second address generators for generating first and second operand memory addresses, respectively;
first and second sets of registers, in communication with said first and second address generators, each of said first and second set of registers comprising a pointer register and a scale factor register;
said first operand memory address generated by summing values in said scale register of said first set of registers multiplied by a first offset value and said pointer register of said first set of registers;
said second operand memory addresses generated as summing values in said scale register of said second set of registers multiplied by a second offset value and said pointer register of said second set of registers;
an arithmetic logic unit in communication with memory for performing an arithmetic or logical operation specified by an instruction, on operands stored at said first and second operand memory addresses of said processor readable memory. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A single instruction, multiple data (SIMD) processor comprising a memory interface for accessing memory addressable in data units of a defined bit size, said memory interface comprising:
-
an address generator for generating first and second addresses of memory to be read;
a memory interconnect to obtain data units at said first address having said defined bit size, and at said second address having said defined bit size;
a combiner for combining said data units from said first and second memory addresses to form an operand spanning said first and second memory addresses. - View Dependent Claims (27, 28)
-
-
29. In a processing system comprising a processor and memory, wherein said memory is addressable by said processor in memory data units having a defined bit size, a method of retrieving a source data unit spanning first and second ones of said memory data units, said method comprising:
-
simultaneously addressing said memory to access said first and second ones of said memory data units;
retrieving data stored in said first and second ones of said memory data units;
combining said data stored in said first and second memory data units to form said source data unit. - View Dependent Claims (30, 31, 32, 33, 34)
-
-
35. In a processing system comprising a single instruction, multiple data (SIMD) processor and memory, wherein said memory is addressable by said processor in memory data units having a defined bit size, a method of storing a resulting data unit spanning first and second ones of said memory data units, said method comprising:
-
splitting said resulting data unit into first and second data portions;
said first data portion to be stored in said first of said memory data units;
said second data portion to be stored in said second memory data units;
generating a first masking instruction to cause a memory element storing said first data unit to mask writing to said data unit at bits not occupied by said first data portion;
generating a second masking instruction to cause a memory element storing said second data unit to mask writing to said data unit at bits not occupied by said second data portion;
providing said first and second masking instructions to memory storing said first and second data units;
storing said first data portion into the portion of said first memory data unit according to said first masking instruction and concurrently storing said second data portion at a portion of said second memory data unit according to said second masking instruction. - View Dependent Claims (36)
-
-
37. A method of operating a processor executing sequential instructions, comprising:
-
receiving a stream of data;
buffering a portion of said stream, in a first-in, first-out buffer within memory of said processor;
reading data from said first-in-first out buffer, by said processor;
encountering an instruction to read data in said stream not yet received in said buffer;
stalling execution of said instruction and further ones of said sequential instructions until said data within said stream specified by said instruction has been received in said first-in, first-out buffer. - View Dependent Claims (38, 39)
-
-
40. A processor that executes instructions stored in instruction memory, said processor comprising:
-
memory defining a first-in, first-out buffer for buffering a portion of a data stream;
an arithmetic or logic unit (ALU), for processing data within said memory;
an address generator for generating a memory address of said memory to be read by said ALU;
an interlock, operable to generate a stall signal to stall execution of a currently executing instruction in said instruction memory in response to generating an address to access data in said buffer, not yet containing data in said stream. - View Dependent Claims (41)
-
-
42. A processor that executes instruction stored in instruction memory, said processor comprising:
-
memory defining a first-in, first-out buffer for buffering a portion of a data stream, to be read in a stream by a device other than said processor;
an arithmetic or logic unit (ALU), for processing data within said memory;
an address generator for generating a memory address of said memory to be written to by said ALU;
an interlock, operable to generate a halt signal to halt execution of a currently executing instruction in said instruction memory in response to said address generator generating an address to write to an address in said first-in, first-out buffer containing data, not yet read by said other device.
-
-
43. A method of operating a processor executing sequential instructions, comprising:
-
buffering a portion of a stream of data to be written, in a first-in, first-out buffer within memory of said processor;
providing data from said first-in, first-out buffer to a device other than said processor;
writing data to said first-in-first out buffer, by said processor;
encountering an instruction to write data to said first-in, first out buffer at addresses containing data not yet provided from said first-in, first-out buffer;
stalling execution of said instruction and further ones of said sequential instructions until said data within said first-in, first-out buffer specified by said instruction has been provided from said first-in, first-out buffer. - View Dependent Claims (44, 45)
-
-
46. Computer readable memory storing instructions for execution by a processor comprising a plurality of register sets, said memory storing a single instruction, multiple data processor executable instruction comprising:
-
a plurality of bits identifying an op code;
a plurality of bits identifying a first one of said register sets used to form a memory address of a first operand;
a plurality of bits identifying a second one of said register sets used to form a memory address of a second operand;
a plurality of bits identifying a third one of said register sets used to calculate a destination address, for storing a result of said op code operating on said first and second operands.
-
Specification