IP Library Granted Patent US 8,060,724
Granted Patent B2
US 8,060,724 · App. 12/192,513 · Granted Nov 15, 2011

Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor

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 8,060,724
App. No.
12/192,513
Granted
Nov 15, 2011
Kind
B2
Abstract

Executing a first memory access instruction with update by an N-bit processor includes accessing at least one source register of a plurality of registers, wherein the accessing includes accessing a first register, wherein each register of the plurality of registers includes a main portion of N bits and an extension portion of M bits, wherein the main portion of the first register includes a first address operand. The execution of the first instruction further includes forming a memory access address using the first address operand; using the memory access address as an address for a memory access; producing an updated address operand; and writing the updated address operand to the main portion of the first register. The producing includes accessing an extension portion of a source register of the at least one source register to obtain modifying information and using the modifying information in the producing an updated address operand.

Claims (54)

1. A method of operating a data processing system, comprising:

executing a first instruction by an N-bit processor, wherein the first instruction is a memory access instruction with update, wherein the execution of the first instruction includes:

accessing at least one source register of a plurality of registers, wherein the accessing the at least one source register includes accessing a first register of the plurality of registers, wherein each register of the plurality of registers includes a main register portion of N bits and an extension register portion of M bits, wherein the main register portion of the first register includes a first address operand, wherein each of N and M are a positive integer;

forming a memory access address using the first address operand;

using the memory access address as an address for a memory access;

producing an updated address operand, wherein the updated address operand is based on the first address operand;

writing the updated address operand to the main portion of the first register;

wherein the producing includes accessing an extension portion of a source register of the at least one source register to obtain modifying information and using the modifying information in the producing an updated address operand.

2. The method of claim 1 wherein the accessing an extension portion of a source register of at least one source register to obtain modifying information includes accessing the extension register portion of the first register to obtain the modifying information.

3. The method of claim 2 wherein the first registers is a base register for the first instruction and the first address operand is a base address.

4. The method of claim 1 wherein:

the at least one source register includes an index register of the plurality of registers, wherein the accessing an extension portion of a source register of at least one source register to obtain modifying information includes accessing the extension register portion of the index register to obtain the modifying information.

5. The method of claim 1 wherein:

the first instruction is for accessing a memory operand stored in a circular buffer; and

the modifying information includes an indication of buffer length of the circular buffer.

6. The method of claim 5 wherein the modifying information includes an indication of a modulus of the circular buffer.

7. The method of claim 5 wherein the modifying information includes an indication of an offset value used in accessing the circular buffer.

8. The method of claim 1 wherein:

the first processor instruction when executed, performs a bit reverse incrementing operation;

the modifying information includes an indication of a mask value for the bit reverse incrementing operation.

9. The method of claim 1 wherein:

the executing a first instruction includes determining that an offset field of the first instruction indicates a first value;

the executing the first instruction includes accessing an extension portion of a source register of the at least one source register to obtain modifying information in response to the offset field indicating the first value;

wherein if an offset field of a memory access instruction with update does not indicate the first value, producing an updated address operand for a memory access instruction with update will not include using modifying information from an extension portion of a source register for the memory access instruction with update.

10. The method of claim 1 wherein the extension portions of the plurality of registers are not used when executing scalar integer instructions.

11. The method of claim 1 wherein the extension portions of the plurality of registers are provided for storing SIMD vector elements.

12. The method of claim 1 wherein the first instruction is a SIMD instruction.

13. The method of claim 1 wherein:

an extension portion of the source register of the at least one source register includes a mode field and a control field;

wherein the modifying information is located in the control field;

wherein the producing an updated address operand includes producing an updated address operand as per a plurality of updating techniques, wherein the mode field indicates which technique of the plurality is to be used in the producing.

14. The method of claim 1 further comprising:

executing a second instruction by the processor, wherein the second instruction is a memory access instruction with update, wherein the execution of the second instruction includes:

accessing the main register portion of the first register to obtain the updated address operand;

forming a second memory access address using the updated address operand;

using the second memory access address as an address for a second memory access.

15. The method of claim 1 wherein:

the forming the memory access address includes adding the first address operand with a first value to derive the memory access address;

the producing an updated address operand includes modifying the memory access address using the modifying information.

16. A processor comprising:

a plurality of registers, each of the plurality of registers includes a main portion and an extension portion, wherein the main portion is N-bits and the extension portion is M-bits, wherein the processor is an N-bit processor, wherein each of N and M is a positive integer;

an execution unit, the execution unit for executing instructions, wherein registers of the plurality of registers are utilized as source registers and destination registers in the execution of instructions by the execution unit;

wherein the execution unit accesses at least one source register of the plurality of registers for executing a first memory access instruction with update, wherein the execution unit uses modifying data from an extension portion of a source register of the at least one source registers to update a first address operand from a main portion of a first source register of the at least one source registers to produce an updated address operand, wherein the updated address operand is written to the main portion of the first source register.

17. The processor of claim 16 wherein the execution unit uses modifying data from an extension portion of the first source register to update the first address operand.

18. The processor of claim 16 wherein:

the first memory access instruction is for accessing a memory operand stored in a circular buffer;

the modifying information includes an indication of buffer length of the circular buffer.

19. The processor of claim 16 wherein:

the first memory access instruction when executed, performs a bit reverse incrementing operation;

the modifying information includes an indication of a mask value for the bit reverse incrementing operation.

20. The processor of claim 16 wherein:

the extension portions of the plurality of registers are not used when executing scalar integer instructions by the execution unit;

the extension portions of the plurality of registers are provided for storing SIMD vector elements.

21. The processor of claim 16 wherein M equals N.

Assignments (16)
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 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
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 NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040632 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Sep 21, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 044209/0047 →
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 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040632/0001 →
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 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
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 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0757 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →