IP Library Granted Patent US 7,315,932
Granted Patent B2
US 7,315,932 · App. 10/657,331 · Granted Jan 1, 2008

Data processing system having instruction specifiers for SIMD register operands and method 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,315,932
App. No.
10/657,331
Granted
Jan 1, 2008
Kind
B2
Abstract

Various load and store instructions may be used to transfer multiple vector elements between registers in a register file and memory. A cnt parameter may be used to indicate a total number of elements to be transferred to or from memory, and an rcnt parameter may be used to indicate a maximum number of vector elements that may be transferred to or from a single register within a register file. Also, the instructions may use a variety of different addressing modes. The memory element size may be specified independently from the register element size such that source and destination sizes may differ within an instruction. With some instructions, a vector stream may be initiated and conditionally enqueued or dequeued. Truncation or rounding fields may be provided such that source data elements may be truncated or rounded when transferred. Also, source data elements may be sign- or unsigned-extended when transferred.

Claims (40)

1. A data processing system comprising:

a memory for storing operands;

a plurality of general purpose registers wherein each general purpose register holds multiple data elements; and

processor circuitry for executing one or more instructions, at least one of the one or more instructions for transferring a plurality of data elements between the memory and the at least two of the plurality of general purpose registers wherein the at least one or more instructions specifies a number of data elements to be transferred between each of the at least two of the plurality of general purpose registers and the memory, wherein the at least one of the one or more instructions provides a first offset between data elements within a first portion of successive data elements to be stored into the memory or loaded from the memory and a second offset between a first portion and a second portion of the data elements to be stored into the memory or loaded from the memory.

2. The data processing system of claim 1 wherein the one or more instructions additionally specifies which of the data elements to load or store in addition to the number of data elements to be transferred.

3. The data processing system of claim 1 wherein when only a subset of the multiple data elements is transferred between each of the at least two of the plurality of general purpose registers and the memory, any unspecified data elements are filled with a predetermined value.

4. The data processing system of claim 3 wherein the predetermined value comprises a zero value having all bits equal to zero.

5. The data processing system of claim 1 , wherein the number of data elements specified by the at least one or more instructions specifies only a subset of the multiple data elements in each of the at least two general purpose registers to be transferred.

6. A method of transferring data elements in a data processing system comprising:

storing operands in a memory;

storing multiple data elements in each of a plurality of general purpose registers; and

executing one or more instructions in the data processing system, at least one of the one or more instructions causing a transfer of a plurality of data elements between the memory and the at least two of the plurality of general purpose registers, wherein the at least one or more instructions specifies a number of data elements to be transferred between each of the at least two of the plurality of general purpose registers and the memory, wherein the at least one of the one or more instructions provides a first offset between data elements within a first portion of successive data elements to be stored into the memory or loaded from the memory and a second offset between a first portion and a second portion of the data elements to be stored into the memory or loaded from the memory.

7. The method of claim 6 further comprising:

specifying with each of the one or more instructions which of the data elements to load or store in addition to the number of data elements to be transferred.

8. The method of claim 6 further comprising:

when only a subset of the multiple data elements is transferred between each of the at least two of the plurality of general purpose registers and the memory, filling any unspecified data elements with a predetermined value.

9. A data processing system comprising:

a memory for storing operands;

a plurality of general purpose registers wherein each general purpose register holds multiple data elements; and

processor circuitry for executing one or more instructions, at least one of the one or more instructions for transferring a plurality of data elements between the memory and the at least two of the plurality of general purpose registers wherein the at least one or more instructions specifies which subset of the multiple data elements in each of the at least two of the plurality of general purpose registers are to be transferred, wherein the at least one of the one or more instructions provides a first offset between data elements within a first portion of successive data elements to be stored into the memory or loaded from the memory and a second offset between a first portion and a second portion of the data elements to be stored into the memory or loaded from the memory.

10. The data processing system of claim 9 wherein, any unspecified data elements are filled by the processor circuitry with a predetermined value.

11. The data processing system of claim 10 wherein the predetermined value is a zero value.

12. The data processing system of claim 9 wherein the subset of the multiple data elements specified by the at least one or more instructions are contiguously positioned within the at least two of the plurality of general purpose registers.

13. The data processing system of claim 9 wherein the subset of the multiple data elements specified by the at least one or more instructions are not contiguously positioned within the at least two of the plurality of general purpose registers.

14. A method of transferring data elements in a data processing system comprising:

storing operands in a memory;

holding multiple data elements in each of a plurality of general purpose registers; and

executing one or more instructions, at least one of the one or more instructions causing a transfer of a plurality of data elements between the memory and at least two of the plurality of general purpose registers wherein the at least one or more instructions specifies which subset of the multiple data elements in each of the at least two of the plurality of general purpose registers are to be transferred, wherein the at least one of the one or more instructions provides a first offset between data elements within a first portion of successive data elements to be stored into the memory or loaded from the memory and a second offset between a first portion and a second portion of the data elements to be stored into the memory or loaded from the memory.

15. The method of claim 14 further comprising filling any unspecified data elements with a predetermined value.

16. A data processing system comprising:

a memory for storing operands;

a plurality of general purpose registers wherein each general purpose register holds multiple data elements; and

processor circuitry for executing one or more instructions, at least one of the one or more instructions for transferring a plurality of data elements between the memory and the at least two of the plurality of general purpose registers wherein the at least one or more instructions specifies both a number of data elements to be transferred between each of the at least two of the plurality of general purpose registers and the memory and further specifies a total number of data elements to be transferred, wherein the at least one of the one or more instructions provides a first offset between data elements within a first portion of successive data elements to be stored into the memory or loaded from the memory and a second offset between a first portion and a second portion of the data elements to be stored into the memory or loaded from the memory.

17. The data processing system of claim 16 wherein when a total number of data elements to be transferred is greater than a number of data elements to be transferred to each of the at least two of the plurality of general purpose registers, data elements are transferred to a predetermined one of the plurality of general purpose registers.

18. The data processing system of claim 16 wherein when a total number of data elements to be transferred is less than a number of data elements to be transferred to each of the at least two of the plurality of general purpose registers, any remaining specified data elements of the plurality of general purpose registers are filled with a predetermined value.

19. The data processing system of claim 18 wherein the predetermined value is a zero value.

20. The data processing system of claim 16 wherein the one or more instructions specifies by using a field in the instruction to identify the number of data elements to be transferred between each of the at least two of the plurality of general purpose registers and the memory and to identify the total number of data elements to be transferred.

21. The data processing system of claim 16 wherein the one or more instructions specifies by identifying a register within the data processing system that contains information to identify the number of data elements to be transferred between each of the at least two of the plurality of general purpose registers and the memory and to identify the total number of data elements to be transferred.

22. The data processing system of claim 16 wherein the data elements are positioned in contiguous storage locations in the memory.

23. The data processing system of claim 16 wherein the data elements are positioned in non-contiguous storage locations in the memory.

Assignments (15)
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 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 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 →
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 037354/0688 →
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 →