IP Library Granted Patent US 7,822,947
Granted Patent B2
US 7,822,947 · App. 10/889,314 · Granted Oct 26, 2010

Aliasing data processing registers

Assignee: ARM Limited
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,822,947
App. No.
10/889,314
Granted
Oct 26, 2010
Kind
B2
Abstract

A register data store 20 is provided within a data processing system 2 . The register data store 20 may be accessed via registers for which a data processing instruction specifies a register size Q, D and a data element size S 16 , S 8 for the multiple SIMD data elements to be manipulated by that data processing instruction. A given data processing element may be accessed via different registers depending upon the mapping between the register specifier, the register size and the data element size to a particular location within the register data store 20.

Claims (65)

1. Apparatus for processing data, said apparatus comprising:

a register data store operable to store a plurality of data elements, a register within said register data store holding a number of data elements dependent upon a data element size of said data elements; and

processing logic responsive to a data processing instruction to perform a data processing operation in parallel upon a selected plurality of data elements accessed as said register of said register data store and occupying different lanes of parallel processing within said register; wherein

data elements of said selected plurality of data elements share one of a plurality of different data element sizes, said register has one of a plurality of different register sizes and said data processing instruction specifies for said data processing operation a data element size shared by said selected plurality of data elements from among said plurality of different data element sizes and a register size of said register; and further comprising

register accessing logic operable to map said register to a portion of said register data store dependent upon said register size of said register such that a data element stored within said portion of said register data store is accessible as a part of respective different registers of differing register size.

2. Apparatus as claimed in claim 1 , wherein said data processing instruction specifies one or more source registers each with a respective source register size and source data element size specified by said data processing instruction.

3. Apparatus as claimed in claim 1 , wherein said data processing instruction specifies one or more destination registers with a destination register size and destination data element size specified by said data processing instruction.

4. Apparatus as claimed in claim 2 , wherein said destination data element size differs from at least one of said one or more source data element sizes.

5. Apparatus as claimed in claim 3 , wherein a set of data elements written to said register data store with two different registers can together all be read from said register data store within a single further register.

6. Apparatus as claimed in claim 5 , wherein said two different registers write to adjacent portions of said register data store.

7. Apparatus as claimed in claim 6 , wherein said single further register has a register size equal to a sum of the register sizes of said two different registers.

8. Apparatus as claimed in claim 1 , wherein a group of data elements written together to said register data store from a single register can be read from said register data store within two different further registers.

9. Apparatus as claimed in claim 8 , wherein said two different further registers read from adjacent portions of said register data store.

10. Apparatus as claimed in claim 9 , wherein said single register has a register size equal to a sum of the register sizes of said two different further registers.

11. Apparatus as claimed in claim 1 , wherein a group of data elements written together to said register data store from a first register of a first register size can be read from said register data store within a second register of a second register size, said first register size being different to said second register size.

12. Apparatus as claimed in claim 1 , wherein said data processing instruction specifies two source registers with respective register sizes S 1 and S 2 and a destination register with a register size D.

13. Apparatus as claimed in claim 12 , wherein S 1 =S 2 =D.

14. Apparatus as claimed in claim 12 , wherein 2*S 1 =2*S 2 =D.

15. Apparatus as claimed in claim 12 , wherein 2*S 1 =S 2 =D.

16. Apparatus as claimed in claim 12 , wherein S 1 =S 2 =2*D.

17. Apparatus as claimed in claim 1 , wherein said data processing instruction specifies a source register with a register size S and a destination register with a register size D.

18. Apparatus as claimed in claim 17 , wherein S=D.

19. Apparatus as claimed in claim 17 , wherein 2*S=D.

20. Apparatus as claimed in claim 17 , wherein S=2*D.

21. Apparatus as claimed in claim 1 , wherein said data processing instruction includes a register specifying field operable to specify a register within said register data store, said register for a given register specifying field corresponding to a different portion of said register data store in dependence upon said data element size and said register size.

22. Apparatus as claimed in claim 21 , wherein a plurality of registers corresponding to a range of said register specifying field for a given data element size and register size map to a contiguous portion of said register data store when accessed with registers using at least one of a different register size and a different data element size.

23. Apparatus as claimed in claim 1 , wherein said different registers of differing register size include at least one register with a different data element size from that of said data element stored within said portion.

24. Apparatus as claimed in claim 1 , wherein said data processing instruction includes a plurality of bits encoding a register number of said register, said plurality of bits being mapable to a contiguous field of bits which is rotatable by a number of bit positions dependent upon said register size to form said register number.

25. Apparatus as claimed in claim 24 , wherein said register accessing logic is also operable to access said register data store as a scalar register storing a single data element read from said register data store.

26. Apparatus as claimed in claim 24 , wherein said register accessing logic is also operable to access said register data store as a register storing a plurality of copies of a single data element read from said register data store.

27. Apparatus as claimed in claim 25 , wherein said register accessing logic is operable to generate a row address and a column address for accessing said register data store, a first part of said contiguous field of bits corresponding to said row address and a second part of said contiguous field of bits corresponding to said column address.

28. Apparatus as claimed in claim 27 , wherein one or more boundaries between said first part and said second part vary in position in dependence upon said data element size.

29. A method of processing data, said method comprising the steps of:

storing a plurality of data elements within a register data store, a register within said register data store holding a number of data elements dependent upon a data element size of said data elements; and

in response to a data processing instruction, performing a data processing operation in parallel upon a selected plurality of data elements accessed as said register of said register data store and occupying different lanes of parallel processing within said register; wherein

data elements of said selected plurality of data elements share one of a plurality of different data element sizes, said register has one of a plurality of different register sizes and said data processing instruction specifies for said data processing operation a data element size shared by said selected plurality of data elements from among said plurality of different data element sizes and a register size of said register; and further comprising

mapping said register to a portion of said register data store dependent upon said register size of said register such that a data element stored within said portion of said register data store is accessible as a part of respective different registers of differing register size.

30. A method as claimed in claim 29 , wherein said data processing instruction specifies one or more source registers each with a respective source register size and source data element size specified by said data processing instruction.

31. A method as claimed in claim 29 , wherein said data processing instruction specifies one or more destination register with a destination register size and destination data element size specified by said data processing instruction.

32. A method as claimed in claim 30 , wherein said destination data element size differs from at least one of said one or more source data element sizes.

33. A method as claimed in claim 29 , wherein a set of data elements written to said register data store with two different registers can together all be read from said register data store within a single further register.

34. A method as claimed in claim 33 , wherein said two different registers write to adjacent portions of said register data store.

35. A method as claimed in claim 34 , wherein said single further register has a register size equal to a sum of the register sizes of said two different registers.

36. A method as claimed in claim 29 , wherein a group of data elements written together to said register data store from a single register can be read from said register data store within two different further registers.

37. A method as claimed in claim 36 , wherein said two different further registers read from adjacent portions of said register data store.

38. A method as claimed in claim 37 , wherein said single register has a register size equal to a sum of the register sizes of said two different further registers.

39. A method as claimed in claim 29 , wherein a group of data elements written together to said register data store from a first register of a first register size can be read from said register data store within a second register of a second register size, said first register size being different to said second register size.

40. A method as claimed in claim 29 , wherein said data processing instruction specifies two source registers with respective register sizes S 1 and S 2 and a destination register with a register size D.

41. A method as claimed in claim 40 , wherein S 1 =S 2 =D.

42. A method as claimed in claim 40 , wherein 2*S 1 =2*S 2 =D.

43. A method as claimed in claim 40 , wherein 2*S 1 =S 2 =D.

44. A method as claimed in claim 40 , wherein S 1 =S 2 =2*D.

45. A method as claimed in claim 29 , wherein said data processing instruction specifies a source register with a register size S and a destination register with a register size D.

46. A method as claimed in claim 45 , wherein S=D.

47. A method as claimed in claim 45 , wherein 2*S=D.

48. A method as claimed in claim 45 , wherein S=2*D.

49. A method as claimed in claim 29 , wherein said data processing instruction includes a register specifying field operable to specify a register within said register data store, said register for a given register specifying field corresponding to a different portion of said register data store in dependence upon said data element size and said register size.

50. A method as claimed in claim 49 , wherein a plurality of registers corresponding to a range of said register specifying field for a given data element size and register size map to a contiguous portion of said register data store when accessed with registers using at least one of a different register size and a different data element size.

51. A method as claimed in claim 29 , wherein said different registers of differing register size include at least one register with a different data element size from that of said data element stored within said portion.

52. A method as claimed in any claim 29 , wherein said data processing instruction includes a plurality of bits encoding a register number of said register, said plurality of bits being mapable to a contiguous field of bits which is rotatable by a number of bit positions dependent upon said register size to form said register number.

53. A method as claimed in claim 52 , wherein said register accessing logic is also operable to access said register data store as a scalar register storing a single data element read from said register data store.

54. A method as claimed in claim 52 , wherein said register accessing logic is also operable to access said register data store as a register storing a plurality of copies of a single data element read from said register data store.

55. A method as claimed in claim 53 , wherein said register accessing logic is operable to generate a row address and a column address for accessing said register data store, a first part of said contiguous field of bits corresponding to said row address and a second part of said contiguous field of bits corresponding to said column address.

56. A method as claimed in claim 55 , wherein one or more boundaries between said first part and said second part vary in position in dependence upon said data element size.

57. A computer program product comprising a computer readable storage medium containing computer readable instructions that when executed include at least one data processing instruction operable to control a computer processing logic to perform a method as claimed in claim 29 .

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2004
From: FORD, SIMON; SEAL, DAVID JAMES
To: ARM LIMITED
Reel/Frame 015847/0903 →
Priority Claims (1)
GB 0328513.7 · Dec 9, 2003 · national
Continuity (1)
Related Publication 20050172106A1 · Aug 4, 2005