IP Library Granted Patent US 7,788,471
Granted Patent B2
US 7,788,471 · App. 11/522,634 · Granted Aug 31, 2010

Data processor and methods thereof

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 7,788,471
App. No.
11/522,634
Granted
Aug 31, 2010
Kind
B2
Abstract

A system and method for performing vector arithmetic is disclosed. The method includes loading two operand vectors, each composed of a number of vector elements, into two storage locations. A selected arithmetic operation is performed on the operand vectors to produce a result vector having the number of vector elements. Each vector element of the result vector is associated with an arithmetic logic cell that has a first input that can receive any vector element from the first vector and a second input that can receive any vector element from the second vector. Accordingly each vector element of the result vector is a function of any two individual vector elements of the operand vectors. By applying the operand vector elements to the appropriate arithmetic logic cells, and by selecting the appropriate arithmetic operation, complex vector operations can be performed efficiently.

Claims (48)

1. A method, comprising:

determining a first vector based on a first data pattern indicated by a data pattern table, the first data pattern indicative of a corresponding memory location for each of a plurality of vector elements of the first vector;

determining a second vector based on a second data pattern indicated by the data pattern table, the second data pattern indicative of a corresponding memory location for each of a plurality of vector elements of the second vector;

selecting, based on a first entry of an array pattern table, one of the plurality of vector elements of the first vector to be provided to a first operand input of a first arithmetic processor;

selecting, based on a second entry of the array pattern table, one of the plurality of vector elements of the second vector to be provided to a second operand input of the first arithmetic processor;

calculating a first result based on information at the first operand input and information at the second operand input;

storing the first result at a first vector element of a resultant vector, the first vector element based on a third entry of the array pattern table.

2. The method of claim 1 , further comprising:

identifying, based on information associated with the first instruction, a first arithmetic operation to be performed by the first arithmetic processor, wherein the first arithmetic processor is capable of performing a plurality of arithmetic operations.

3. The method of claim 2 , wherein:

calculating the first result comprises calculating the first result based on the first arithmetic operation, information at the first operand input, and information at the second operand input.

4. The method of claim 1 , further comprising:

selecting, based a fourth entry of the array pattern table, a second of the plurality of vector elements of the first vector to be provided to a first operand input of a second arithmetic processor; and

selecting, based on a fifth entry of the array pattern table, a second of the plurality of vector elements of the second vector to be provided to a second operand input of the second arithmetic processor.

5. The method of claim 1 , further comprising:

selecting, based on a fourth entry of the array pattern table, the one of the plurality of vector elements of the first vector to be provided to a first operand input of a second arithmetic processor; and

selecting, based a fifth entry of the array pattern table, the one of the plurality of vector elements of the second vector to be provided to a second operand input of the second arithmetic processor.

6. The method of claim 1 , further comprising:

selecting, based a fourth entry of the array pattern table, the one of the plurality of vector elements of the first vector to be provided to a first operand input of a second arithmetic processor; and

selecting, based on a fifth entry of the array pattern table, a second of the plurality of vector elements of the second vector to be provided to a second operand input of the second arithmetic processor.

7. The method of claim 1 , wherein the first instruction identifies an index with respect to the array pattern table.

8. The method of claim 1 , wherein selecting the one of the plurality of vector elements of the first vector comprises loading the first vector element at a first storage location associated with the first operand input of the first arithmetic processor.

9. The method of claim 1 , wherein selecting the one of the plurality of vector elements of the first vector comprises coupling a storage location storing the one of the plurality of vector elements to the first operand input of the first arithmetic processor.

10. The method of claim 1 , wherein determining the first vector comprises loading a first element of the first vector from a first memory bank into a first register and loading a second element of the first vector from a second memory bank into the first register.

11. The method of claim 10 , wherein determining the first vector comprises determining the first memory bank and the second memory bank based on the first data pattern.

12. The method of claim 10 , wherein determining the second vector comprises loading a first element of the second vector from a third memory bank into a second register and loading a second element of the first vector from a fourth memory bank into the second register.

13. A method, comprising

selecting a first data pattern from a first data pattern table, the first data pattern indicative of a corresponding memory location for each of a plurality of vector elements of a first vector;

determining the first vector based on the first data pattern;

selecting a second data pattern from a second data pattern table, the second data pattern indicative of a corresponding memory location for each of a plurality of vector elements of a second vector;

loading a second vector based on the second data pattern;

decoding a first instruction;

selecting, based on a first entry of an array pattern table indicated by the first instruction, a first vector element of the first vector as a first operand of a first arithmetic processor and, based on a second entry of the array pattern table a first vector element of the second vector as a second operand of the first arithmetic processor, wherein the first vector comprises a plurality of vector elements and the second vector comprises a plurality of vector elements;

selecting a first vector element of a result vector based on a third entry of the array pattern table; and

calculating the first vector element of the result vector based on the first operand and the second operand.

14. A device, comprising:

a first storage location to store a first plurality of vector elements based on a first data pattern from a first data pattern table, the first data pattern indicative of a corresponding memory location for each of the first plurality of vector elements;

a second storage location to store a second plurality of vector elements based on a second data pattern from the first data pattern table, the second data pattern indicative of a corresponding memory location for each of the second plurality of vector elements;

a plurality of arithmetic logic cells, each one comprising:

a first multiplexer coupled to the first plurality of vector elements, a control input, and an output to provide a selected one of the first plurality of vector elements based on a first entry of a data pattern table and a second entry of the data pattern table;

a second multiplexer coupled to the second plurality of vector elements, a control input, and an output to provide a selected one of the second plurality of vector elements based on a third entry of the data pattern table and the second entry of the data pattern table; and

an arithmetic logic unit having a first input coupled to the output of the first multiplexer, a second input coupled to the output of the second multiplexer, a control input, and an output to provide an arithmetic result based on the first input, the second input, and the control input; and

an instruction execution module comprising a first output coupled to the control input of the first multiplexer and a second output coupled to the control input of the second multiplexer.

15. The device of claim 14 , further comprising:

a third storage location coupled to the output of each arithmetic logic unit of the matrix of arithmetic logic cells.

16. The device of claim 14 , wherein the instruction execution module comprises:

an instruction decode module having an input to receive a vector instruction, a first plurality of control outputs coupled to control outputs of the instruction execution module, and a second plurality of control outputs, each of the second plurality of control outputs coupled to corresponding ones of the control inputs of the arithmetic logic units of the plurality of arithmetic logic cells; and

wherein the instruction decode module applies first control signals via the first plurality of control outputs to apply corresponding ones of the first and second plurality of vector elements at one or more of the arithmetic logic cells and applies second control signals via the second plurality of control outputs to select the operation of one or more of the arithmetic logic cells based on the vector instruction.

Assignments (31)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
323.01(C) ASSIGNMENT OR CHANGE OF NAME IMPROPERLY FILED AND RECORDED BY ANOTHER PERSON AGAINST OWNER'S PATENT Recorded Oct 3, 2019
From: TAIWAN SEMICONDUCTOR MANUFACTURING CO., LTD.
To: TAIWAN SEMICONDUCTOR MANUFACTURING CO., LTD.
Reel/Frame 052459/0656 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2017
From: NORTH STAR INNOVATIONS INC.
To: TAIWAN SEMICONDUCTOR MANUFACTURING CO., LTD.
Reel/Frame 041717/0736 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
PATENT RELEASE Recorded Aug 17, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 039707/0471 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NORTH STAR INNOVATIONS INC.
Reel/Frame 037694/0264 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0225 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Feb 2, 2007
From: FREESCALE SEMICONDUCTOR, INC.; FREESCALE ACQUISITION CORPORATION; FREESCALE ACQUISITION HOLDINGS CORP.; FREESCALE HOLDINGS (BERMUDA) III, LTD.
To: CITIBANK, N.A. AS COLLATERAL AGENT
Reel/Frame 018855/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2006
From: SHENG, CHENGKE
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 018316/0735 →