beautypg.com

1 rbuf, 1 spi-4 and the rbuf, Rbuf – Intel NETWORK PROCESSOR IXP2800 User Manual

Page 62

background image

62

Hardware Reference Manual

Intel

®

IXP2800 Network Processor

Technical Description

2.7.3.1

RBUF

RBUF is a RAM that holds received data. It stores received data in sub-blocks (referred to as

elements), and is accessed by Microengines or the Intel XScale

®

core reading the received

information. Details of how RBUF elements are allocated and filled is based on the receive data
protocol. When data is received, the associated status is put into the FULL_ELEMENT_LIST

FIFO and subsequently sent to Microengines to process. FULL_ELEMENT_LIST insures that

received elements are sent to Microengines in the order that the data was received.

RBUF contains a total of 8 KB of data. The element size is programmable as either 64 bytes,
128 bytes, or 256 bytes per element. In addition, RBUF can be programmed to be split into one,

two, or three partitions depending on application. For receiving SPI-4, one partition would be used.

For receiving CSIX, two partitions are used (Control CFrames and Data CFrames). When both
protocols are being used, the RBUF can be split into three partitions. For both SPI-4 and CSIX,

three partitions are used.

Microengines can read data from the RBUF to Microengine S_TRANSFER_IN registers using the

msf[read]

instruction where they specify the starting byte number (which must be aligned to 4

bytes), and number of 32-bit words to read. The number in the instruction can be either the number

of 32-bit words, or number of 32-bit word pairs, using the single and double instruction modifiers,

respectively.

Microengines can move data from RBUF to DRAM using the

dram

instruction where they specify

the starting byte number (which must be aligned to 4 bytes), the number of 32-bit words to read,

and the address in DRAM to write the data.

For both types of RBUF read, reading an element does not modify any RBUF data, and does not

free the element, so buffered data can be read as many times as desired. This allows, for example, a
processing pipeline to have different Microengines handle different protocol layers, with each

Microengine reading only the specific header information it requires.

2.7.3.1.1

SPI-4 and the RBUF

SPI-4 data is placed into RBUF with each SPI-4 burst allocating an element. If a SPI-4 burst is

larger than the element size, another element is allocated. The status information for the element

contains the following information:

The definitions of the fields are shown in

Table 90, “RBUF SPIF-4 Status Definition” on page 252

.

3
1

3
0

2
9

2
8

2
7

2
6

2
5

2
4

2
3

2
2

2
1

2
0

1
9

1
8

1
7

1
6

1
5

1
4

1
3

1
2

1
1

1
0

9

8

7

6

5

4

3

2

1

0

RPROT

Element

Byte Count

SOP

EOP

Err

Len Err

Par Err

Abo

rt Err

Nu
ll

Ty

pe

ADR

6
3

6
2

6
1

6
0

5
9

5
8

5
7

5
6

5
5

5
4

5
3

5
2

5
1

5
0

4
9

4
8

4
7

4
6

4
5

4
4

4
3

4
2

4
1

4
0

3
9

3
8

3
7

3
6

3
5

3
4

3
3

3
2

Reserved

Checksum