IP Library Granted Patent US 10,402,196
Granted Patent B2
US 10,402,196 · App. 14/708,767 · Granted Sep 3, 2019

Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients

Inventors: Roni M. Sadeh (Kfar Saba, IL); Noam Dvoretzki (Hod HaSharon, IL)
Assignee: Ceva D.S.P. Ltd.
G06F9/3001G06F9/3013G06F9/30032G06F9/30036
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 10,402,196
App. No.
14/708,767
Granted
Sep 3, 2019
Kind
B2
Abstract

A logic circuit in a processor including a plurality of input registers, each for storing a vector containing data elements, a coefficient register for storing a vector containing N coefficients, an output register for storing a result vector, and an arithmetic unit configured to: obtain a pattern for selecting N data elements from the plurality of input registers, select a plurality of groups of N data elements from the plurality of input registers in parallel, wherein each group is selected in accordance with the pattern, and wherein each group is shifted with respect to a previous selected group, perform an arithmetic operation between each of the selected groups and the coefficients in parallel, and store results of the arithmetic operations in the output register.

Claims (50)

1. A processor comprising:

a plurality of input registers, each for storing an input vector containing data elements;

a coefficient register for storing a coefficient vector containing N coefficients;

an output register for storing a result vector; and

an arithmetic unit;

wherein the processor is configured to divide a two-dimensional filter into a plurality of patterns, each pattern for selecting N data elements from the plurality of input registers, wherein a first pattern of the plurality of patterns comprises a bit mask comprising a plurality of bits, wherein each bit of a first portion of the plurality of bits corresponds to a data element from a first input register of the plurality of input registers, and each bit of a second portion of the plurality of bits corresponds to a data element from a second input register of the plurality of input registers, wherein a value of each bit of the plurality of bits indicates if a corresponding data element is included in the first pattern or not,

and wherein the arithmetic unit is configured to repeat the following for each of the plurality of patterns:

receive a pattern from the plurality of patterns;

select a plurality of groups of N data elements from the plurality of input registers in parallel, wherein each group is selected in accordance with the received pattern, and wherein each group is shifted with respect to another selected group;

perform a calculation comprising an arithmetic operation between each of the selected groups and the coefficients in parallel; and

store results of the calculation in the output register.

2. The processor of claim 1 , wherein the arithmetic unit comprises a plurality of blocks, wherein each block is adapted to perform the arithmetic operation between one of the selected groups and the coefficients, wherein each block comprises: N multipliers configured to multiply each one of the N data elements by a corresponding coefficient; circuitry configured to sum results of the multipliers to produce a sum; and

an additional adder configured to add a stored result of the calculation with the sum.

3. The processor of claim 1 , wherein N is equal to or larger than 4.

4. The processor of claim 1 , wherein the arithmetic operation is selected from the list consisting of: multiplication, absolute difference and subtraction.

5. The processor of claim 1 , wherein the processor is configured to receive the received pattern, the input vectors and the coefficients from a dedicated instruction.

6. A method for performing sliding window operation by a processor, the method comprising:

dividing a filter into a plurality of patterns, each pattern for selecting N data elements from a plurality of input vectors stored in a plurality of input registers, wherein a first pattern of the plurality of patterns comprises a bit mask comprising a plurality of bits, wherein each bit of a first portion of the plurality of bits corresponds to a data element from a first input register of the plurality of input registers, and each bit of a second portion of the plurality of bits corresponds to a data element from a second input register of the plurality of input registers, wherein a value of each bit of the plurality of bits indicates if a corresponding data element is included in the first pattern or not; and

repeating the following steps for each of the plurality of patterns:

(a) obtaining a pattern from the plurality of patterns;

(b) selecting a plurality of groups of N data elements from the plurality of input registers in parallel, wherein each group is selected in accordance with the obtained pattern, and wherein each group is shifted with respect to each other;

(c) performing a calculation comprising an arithmetic operation between each of the selected groups and a plurality of coefficients in parallel; and

(d) storing results of the calculation in an output register.

7. The method of claim 6 , wherein the filter is a two-dimensional filter.

8. The method of claim 6 , wherein null coefficients of the filter are not included in the plurality of patterns.

9. The method of claim 6 , wherein the filter is a multi-dimensional filter.

10. The method of claim 6 , wherein performing the arithmetic operation comprises:

multiplying each one of the N data elements by a corresponding coefficient;

summing results of the multiplication; and

adding a stored result of the calculation to the sum.

11. The method of claim 6 , wherein N equals 4.

12. The method of claim 6 , wherein the arithmetic operation is selected from the list consisting of: multiplication, absolute difference and subtraction.

13. The method of claim 6 , comprising receiving a dedicated instruction, the dedicated instruction providing the a pattern, the input vectors and the coefficients.

14. A system comprising:

a program memory; and

a processor configured to:

divide a two-dimensional filter into a plurality of patterns, each pattern for selecting N data elements from a plurality of input registers, each for storing an input vector containing data elements wherein a first pattern of the plurality of patterns comprises a bit mask comprising a plurality of bits, wherein each bit of a first portion of the plurality of bits corresponds to a data element from a first input register of the plurality of input registers, and each bit of a second portion of the plurality of bits corresponds to a data element from a second input register of the plurality of input registers, wherein a value of each bit of the plurality of bits indicates if a corresponding data element is included in the first pattern or not; and

repeat the following for each of the plurality of patterns:

receive from the program memory an instruction to execute a configurable sliding window operation, the instruction including a coefficient vector containing N coefficients, the plurality of input vectors containing data elements, and a received pattern of the plurality of patterns, the processor comprising an arithmetic unit configured to execute the instruction by:

receiving the received pattern;

storing the plurality of input vectors in the plurality of input registers;

selecting a plurality of groups of N data elements from the plurality of input registers in parallel, wherein each group is selected in accordance with the received pattern, and wherein each group is shifted with respect to another selected group;

performing a calculation comprising an arithmetic operation between each of the selected groups and the coefficients in parallel; and

returning results of the calculation to an output register.

15. The system of claim 14 , wherein the arithmetic unit comprises a plurality of blocks, wherein each block is adapted to perform the arithmetic operation between one of the selected groups and the coefficients, wherein each block comprises:

N multipliers configured to multiply each one of the N data elements by a corresponding coefficient;

circuitry configured to sum results of the multipliers; and

an additional adder configured to add a stored result of the calculation with the sum.

16. The system of claim 14 , wherein N is equal to or larger than 4.

17. The system of claim 14 , wherein the arithmetic operation is selected from the list consisting of: multiplication, absolute difference and subtraction.

Assignments (2)
CHANGE OF NAME Recorded Jun 23, 2024
From: CEVA D.S.P. LTD.
To: CEVA TECHNOLOGIES, LTD
Reel/Frame 067808/0876 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: SADEH, RONI M.; DVORETZKI, NOAM
To: CEVA D.S.P. LTD.
Reel/Frame 037018/0381 →
Continuity (1)
Related Publication 20160335082A1 · Nov 17, 2016