Browse Prior Art Database

Network Endianness Conversion by Using the Byte Rotation Feature in IXP425 Network Processor Engines

IP.com Disclosure Number: IPCOM000021513D
Publication Date: 2004-Jan-21
Document File: 5 page(s) / 679K

Publishing Venue

The IP.com Prior Art Database

Abstract

Disclosed is a method that uses byte rotation to provide endianness conversion support in the IXP4XX Series Network Processor Engine (NPE)-based DMA driver. Benefits include increasing the DMA throughput rate between two different endianness settings targets by approximately 20%. The DMA Driver is implemented as part of the firmware embedded within the Network Processor Engine.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 57% of the total text.

Network Endianness Conversion by Using the Byte Rotation Feature in IXP425 Network Processor Engines

Disclosed is a method that uses byte rotation to provide endianness conversion support in the IXP4XX Series Network Processor Engine (NPE)-based DMA driver. Benefits include increasing the DMA throughput rate between two different endianness settings targets by approximately 20%. The DMA Driver is implemented as part of the firmware embedded within the Network Processor Engine.

Background

Currently, the conventional approach to endianness support (from little endian to big endian and vice versa) requires eight network processor cycles to complete.

General Description

The disclosed method uses a byte rotation feature shown in Table 1, which performs a 32-bit load/store NPE instruction to non-word aligned NPE data memory locations.

The word stored in the NPE data memory is at byte location 0x4. The value is 0xAABBCCDD.

Table 1

I0 is defined as the index register pointing to location 0x4, and d4 is the NPE internal 32-bits data register. When a 32-bit load from i0 is performed with an offset value of 0x1 into d4, the values in d4 after the load are 0xBBCCDDAA.

The following steps describe the sequence of performing byte swapping on the DMA data word pointed to by d4:

Step 1 (two cycles):

Load the 32-bits DMA word from the NPE data memory, starting from location 0x5, making use of the byte rotation.

Pseudo code:

Move (8 bits) d0, 0x4

Load (32-bits) d4-d7, i0 with offset 0x1

After...