IP Library Granted Patent US 8,725,900
Granted Patent B2
US 8,725,900 · App. 10/510,167 · Granted May 13, 2014

Method and apparatus for processing data in a pipeline, in which processing the length of information contained in the data packet and/or the position of the information in the data packet is altered

Inventors: Gunnar Nordmark (Danderyd, SE); Thomas Boden (Solna, SE); Lars-Olaf Svensson (Stockholm, SE); Par Westlund (Stockholm, SE)
Assignee: Marvell International Ltd.
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,725,900
App. No.
10/510,167
Granted
May 13, 2014
Kind
B2
Abstract

The present invention relates to a method and apparatus for pipelined processing of data. When a data packet containing information is received by a processor operating according to pipelined processing, bits are added to the data packet and an intermediate packet, comprising more bits than the received data packet, is generated. To the intermediate packet is associated information reference, the information reference comprising information regarding the length and position of the information in the intermediate packet. As the intermediate packet is processed, changes to the intermediate packet resulting in changes of the length or the position of the information in the intermediate packet will trigger changes of the information reference. When the intermediate packet exits the processor, superfluous bits are removed.

Claims (67)

1. A processing pipeline having a plurality of processing stages, the processing pipeline comprising:

a first processing stage circuit configured to

store a data block received by the processing pipeline, the data block including i) a data packet, and ii) a dummy header portion and a dummy tail portion each added to the data packet prior to the data block entering the processing pipeline, wherein the dummy header portion and the dummy tail portion added to the data packet are empty of data,

store, separately from the data block, additional information associated with the data block, the additional information indicating i) a length of the data packet within the data block, and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion,

without modifying a length of the data block,

either i) add data to at least one of the dummy header portion and the dummy tail portion to increase the length of the data packet, or ii) subtract data from the data packet to decrease the length of the data packet, and

modify the additional information to reflect i) the data added to the at least one of the dummy header portion and the dummy tail portion, or ii) the data subtracted from the data packet;

a second processing stage circuit subsequent to the first processing stage circuit, the second processing stage circuit configured to

if data was added to the at least one of the dummy header portion and the dummy tail portion, selectively remove, based on the modified additional information, portions of the dummy header portion and the dummy tail portion that do not include the data added to the at least one of the dummy header portion and the dummy tail portion, and

if data was subtracted from the data packet, selectively remove, based on the modified additional information, the dummy header portion, the dummy tail portion, and the portions of the data packet that corresponded to the data subtracted from the data packet; and

a register configured to store i) the length of the data packet as a length n and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m, wherein m corresponds to a length of the dummy header portion,

wherein the register is configured to, to modify the additional information to reflect the data added to the at least one of the dummy header portion and the dummy tail portion,

store the length of the data packet as a length n+q+p, wherein a corresponds to a length of data added to the dummy tail portion and p corresponds to a length of data added to the dummy header portion, and

store the position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m−p.

2. The processing pipeline of claim 1 , wherein the additional information includes indications of a starting position and an ending position of the data packet within the data block.

3. The processing pipeline of claim 1 , wherein the position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion includes i) an offset value indicating an offset of a first byte of the data packet and/or ii) an offset value indicating an offset of a last byte of the data packet.

4. The processing pipeline of claim 1 , wherein, to selectively remove portions of the dummy header portion and the dummy tail portion that do not include the data added to the at least one of the dummy header portion and the dummy tail portion, the second processing stage circuit is configured to i) remove an amount of data from the dummy header portion corresponding to m−p, and ii) remove an amount of data from the dummy tail portion corresponding to k−q, wherein k corresponds to a length of the dummy tail portion.

5. A processing pipeline having a plurality of processing stages, the processing pipeline comprising:

a first processing stage circuit configured to

store a data block received by the processing pipeline, the data block including i) a data packet, and ii) a dummy header portion and a dummy tail portion each added to the data packet prior to the data block entering the processing pipeline, wherein the dummy header portion and the dummy tail portion added to the data packet are empty of data,

store, separately from the data block, additional information associated with the data block, the additional information indicating i) a length of the data packet within the data block, and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion,

without modifying a length of the data block,

either i) add data to at least one of the dummy header portion and the dummy tail portion to increase the length of the data packet, or ii) subtract data from the data packet to decrease the length of the data packet, and

modify the additional information to reflect i) the data added to the at least one of the dummy header portion and the dummy tail portion, or ii) the data subtracted from the data packet;

a second processing stage circuit subsequent to the first processing stage circuit, the second processing stage circuit configured to

if data was added to the at least one of the dummy header portion and the dummy tail portion, selectively remove, based on the modified additional information, portions of the dummy header portion and the dummy tail portion that do not include the data added to the at least one of the dummy header portion and the dummy tail portion, and

if data was subtracted from the data packet, selectively remove, based on the modified additional information, the dummy header portion, the dummy tail portion, and the portions of the data packet that corresponded to the data subtracted from the data packet; and

a register configured to store i) the length of the data packet as a length n and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m, wherein m corresponds to a length of the dummy header portion,

wherein the register is configured to, to modify the additional information to reflect the data subtracted from the data packet,

store the length of the data packet as a length n−r−s, wherein r corresponds to a length of data reduced from the data packet at a dummy header end of the data packet and s corresponds a length of data reduced from the data packet at a dummy tail end of the data packet, and

store the position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m+r.

6. The processing pipeline of claim 5 , wherein, to selectively remove the dummy header portion, the dummy tail portion, and the portions of the data packet that corresponded to the data subtracted from the data packet, the second processing stage circuit is configured to i) remove an amount of data from the dummy header portion and the dummy header end of the data packet corresponding to m+r, and ii) remove an amount of data from the dummy tail portion and the dummy tail end of the data packet corresponding to k+s, wherein k corresponds to a length of the dummy tail portion.

7. A method of operating a processing pipeline having a plurality of processing stages, the method comprising:

at a first processing stage,

storing a data block received by the processing pipeline, the data block including i) a data packet, and ii) a dummy header portion and a dummy tail portion each added to the data packet prior to the data block entering the processing pipeline, wherein the dummy header portion and the dummy tail portion added to the data packet are empty of data,

storing, separately from the data block, additional information associated with the data block, the additional information indicating i) a length of the data packet within the data block, and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion,

without modifying a length of the data block,

either i) adding data to at least one of the dummy header portion and the dummy tail portion to increase the length of the data packet, or ii) subtracting data from the data packet to decrease the length of the data packet, and

modifying the additional information to reflect i) the data added to the at least one of the dummy header portion and the dummy tail portion, or ii) the data subtracted from the data packet;

at a second processing stage subsequent to the first processing stage,

if data was added to the at least one of the dummy header portion and the dummy tail portion, selectively removing, based on the modified additional information, portions of the dummy header portion and the dummy tail portion that do not include the data added to the at least one of the dummy header portion and the dummy tail portion, and

if data was subtracted from the data packet, selectively removing, based on the modified additional information, the dummy header portion, the dummy tail portion, and the portions of the data packet that corresponded to the data subtracted from the data packet; and

storing i) the length of the data packet as a length n and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m, wherein m corresponds to a length of the dummy header portion,

wherein modifying the additional information to reflect the data added to the at least one of the dummy header portion and the dummy tail portion includes storing the length of the data packet as a length n+q+p, wherein q corresponds to a length of data added to the dummy tail portion and p corresponds to a length of data added to the dummy header portion, and

storing the position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m−p.

8. The method of claim 7 , wherein the additional information includes indications of a starting position and an ending position of the data packet within the data block.

9. The method of claim 7 , wherein the position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion includes i) an offset value indicating an offset of a first byte of the data packet and/or ii) an offset value indicating an offset of a last byte of the data packet.

10. The method of claim 7 , wherein selectively removing portions of the dummy header portion and the dummy tail portion that do not include the data added to the at least one of the dummy header portion and the dummy tail portion includes

removing an amount of data from the dummy header portion corresponding to m−p, and

removing an amount of data from the dummy tail portion corresponding to k−q, wherein k corresponds to a length of the dummy tail portion.

11. A method of operating a processing pipeline having a plurality of processing stages, the method comprising:

at a first processing stage,

storing a data block received by the processing pipeline, the data block including i) a data packet, and ii) a dummy header portion and a dummy tail portion each added to the data packet prior to the data block entering the processing pipeline, wherein the dummy header portion and the dummy tail portion added to the data packet are empty of data,

storing, separately from the data block, additional information associated with the data block, the additional information indicating i) a length of the data packet within the data block, and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion,

without modifying a length of the data block,

either i) adding data to at least one of the dummy header portion and the dummy tail portion to increase the length of the data packet, or ii) subtracting data from the data packet to decrease the length of the data packet, and

modifying the additional information to reflect i) the data added to the at least one of the dummy header portion and the dummy tail portion, or ii) the data subtracted from the data packet;

at a second processing stage subsequent to the first processing stage,

if data was added to the at least one of the dummy header portion and the dummy tail portion, selectively removing, based on the modified additional information, portions of the dummy header portion and the dummy tail portion that do not include the data added to the at least one of the dummy header portion and the dummy tail portion, and

if data was subtracted from the data packet, selectively removing, based on the modified additional information, the dummy header portion, the dummy tail portion, and the portions of the data packet that corresponded to the data subtracted from the data packet; and

storing i) the length of the data packet as a length n and ii) a position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m, wherein m corresponds to a length of the dummy header portion,

wherein modifying the additional information to reflect the data subtracted from the data packet includes

storing the length of the data packet as a length n−r−s, wherein r corresponds to a length of data reduced from the data packet at a dummy header end of the data packet and s corresponds a length of data reduced from the data packet at a dummy tail end of the data packet, and

storing the position of the data packet within the data block with respect to the dummy header portion and the dummy tail portion as an offset m+r.

12. The method of claim 11 , wherein selectively removing the dummy header portion, the dummy tail portion, and the portions of the data packet that corresponded to the data subtracted from the data packet includes

removing an amount of data from the dummy header portion and the dummy header end of the data packet corresponding to m+r, and

removing an amount of data from the dummy tail portion and the dummy tail end of the data packet corresponding to k+s, wherein k corresponds to a length of the dummy tail portion.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2012
From: MARVELL TECHNOLOGY SWEDEN AB
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 027938/0738 →
CHANGE OF NAME Recorded Mar 26, 2012
From: XELERATED NEWCO AB
To: MARVELL TECHNOLOGY SWEDEN AB
Reel/Frame 027930/0941 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2011
From: XELERATED AB
To: XELERATED NEWCO AB
Reel/Frame 027387/0234 →
CHANGE OF NAME Recorded Apr 26, 2007
From: XELERATED OPERATIONS AB
To: XELERATED AB
Reel/Frame 019215/0651 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2007
From: XELERATED AB
To: XELERATED OPERATIONS AB
Reel/Frame 019215/0602 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2005
From: AKTIEBOLAGET DARON
To: XELERATED AB
Reel/Frame 015681/0672 →
CHANGE OF NAME Recorded Jan 11, 2005
From: XELERATED AB
To: AKTIEBOLAGET DARON
Reel/Frame 015577/0093 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2004
From: NORDMARK, GUNNAR; BODEN, THOMAS; SVENSSON, LARS-OLOF; WESTLUND, PAR
To: XELERATED AB
Reel/Frame 015411/0584 →
Priority Claims (1)
SE 0201020 · Apr 4, 2002 · national
Continuity (1)
Related Publication 20060155771A1 · Jul 13, 2006