IP Library Granted Patent US 8,555,260
Granted Patent B1
US 8,555,260 · App. 11/949,755 · Granted Oct 8, 2013

Direct hardware processing of internal data structure fields

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,555,260
App. No.
11/949,755
Granted
Oct 8, 2013
Kind
B1
Abstract

In some embodiments, the execution of load and store instructions for internal fields of data structures is accelerated by using on-chip template registers and appropriate machine code instructions. A load/store machine code instruction comprises an identifier of a memory address offset of an internal field word relative to a base address of the data structure, an identifier of an intra-word start bit of the internal field, and an identifier of an intra-word length of the internal field. The three identifiers may coincide, for example if the three identifiers are represented by an identity of a template register storing a template entry including the memory address offset, the start position, and the field length. The three identifiers may also be provided as part of a machine code instruction itself. Further provided are compilers, compiler methods, and hardware systems for implementing accelerated internal-field load and store operations.

Claims (26)

1. A data processing method comprising employing at least one processor to perform the steps of:

receiving high-level source code containing a reference to an internal field of a data structure; and

from the high-level source code, generating a low-level language memory access instruction for the internal field, the low-level language memory access instruction including an identifier of a memory address offset of the internal field relative to a base address of the data structure, and an identifier of a field bitspan within a word, wherein the field bitspan defines an intra-byte field start position and a field length, and wherein the identifier of the memory address offset and the identifier of the field bitspan are not necessarily distinct.

2. The method of claim 1 , further comprising generating a low level language template entry assignment instruction for assigning a template entry containing the memory address offset to a template register.

3. The method of claim 2 , further comprising determining whether to preserve the template entry in the template register across a function call.

4. The method of claim 1 further comprising determining a plurality of usage weights for a corresponding plurality of data structure internal fields, and assigning a plurality of template entries for data structure internal fields to a corresponding plurality of template registers according to the plurality of usage weights.

5. The method of claim 1 , wherein the low-level language memory access instruction is a load instruction.

6. The method of claim 5 , wherein the load instruction is a load-and-extract instruction.

7. The method of claim 5 , wherein the load instruction is a load-extract-and-sign instruction.

8. The method of claim 5 , wherein the load instruction is a masked-load instruction.

9. The method of claim 1 , wherein the low-level language memory access instruction is a store instruction.

10. The method of claim 9 , wherein the store instruction is a masked-store instruction.

11. A non-transitory computer-readable medium encoding instructions to perform a method comprising the steps of:

receiving high-level source code containing a reference to an internal field of a data structure; and

from the high-level source code, generating a low-level language memory access instruction for the internal field, the low-level language memory access instruction including an identifier of a memory address offset of the internal field relative to a base address of the data structure, and an identifier of a field bitspan within a word, wherein the field bitspan defines an intra-byte field start position and a field length, and wherein the identifier of the memory address offset and the identifier of the field bitspan are not necessarily distinct.

12. The computer-readable medium of claim 11 , wherein the method further comprises generating a low level language template entry assignment instruction assigning a template entry containing the memory address offset to a template register.

13. The computer-readable medium of claim 12 , wherein the method further comprises determining whether to preserve the template entry in the template register across a function call.

14. The computer-readable medium of claim 11 , wherein the method comprises determining a plurality of usage weights for a corresponding plurality of data structure internal fields, and assigning a plurality of template entries for data structure internal fields to a corresponding plurality of template registers according to the plurality of usage weights.

15. A data processing apparatus having a processor comprising:

means for receiving high-level source code containing a reference to an internal field of a data structure; and

means for generating from the high-level source code a low-level language memory access instruction for the internal field, the low-level language memory access instruction including an identifier of a memory address offset of the internal field relative to a base address of the data structure, and an identifier of a field bitspan within a word, wherein the field bitspan defines an intra-byte field start position and a field length, and wherein the identifier of the memory address offset and the identifier of the field bitspan are not necessarily distinct.

16. The data processing apparatus of claim 15 , further comprising means for generating a low level language template entry assignment instruction assigning a template entry containing the memory address offset to a template register.

17. The data processing apparatus of claim 16 , further comprising means for determining whether to preserve the template entry in the template register across a function call.

18. The data processing apparatus of claim 15 , further comprising

means for determining a plurality of usage weights for a corresponding plurality of data structure internal fields, and

means for assigning a plurality of template entries for data structure internal fields to a corresponding plurality of template registers according to the plurality of usage weights.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →