Intel NETWORK PROCESSOR IXP2800 User Manual

Page 58

Advertising
background image

58

Hardware Reference Manual

Intel

®

IXP2800 Network Processor

Technical Description

Head, Tail, and Size are registers in the Scratchpad Unit. Head and Tail point to the actual ring data,
which is stored in the Scratchpad RAM. The count of how many entries are on the Ring is

determined by hardware using the Head and Tail. For each Ring in use, a region of Scratchpad

RAM must be reserved for the ring data.

Note: The reservation is by software convention. The hardware does not prevent other accesses to the

region of Scratchpad Memory used by the Ring. Also the regions of Scratchpad Memory allocated

to different Rings must not overlap.

Head points to the next address to be read on a get, and Tail points to the next address to be written

on a put. The size of each Ring is selectable from the following choices: 128, 256, 512, or 1024
32-bit words.

Note: The region of Scratchpad used for a Ring is naturally aligned to it size.

When the Ring is near full, it asserts an output signal, which is used as a state input to the

Microengines. They must use that signal to test (by doing Branch on Input State) for room on the

Ring before putting data onto it. There is a lag in time from a put instruction executing to the Full
signal being updated to reflect that put. To guarantee that a put will not overfill the ring there is a

bound on the number of Contexts and the number of 32-bit words per write based on the size of the

ring, as shown in

Table 14

. Each Context should test the Full signal, then do the put if not Full, and

then wait until the Context has been signaled that the data has been pulled before testing the Full

signal again.

An alternate usage method is to have Contexts allocate and deallocate entries from a shared count

variable, using the atomic

subtract

to allocate and atomic

add

to deallocate. In this case the

Full signal is not used.

Table 14. Ring Full Signal Use – Number of Contexts and Length versus Ring Size

Number of

Contexts

Ring Size

128

256

512

1024

1

16

16

16

16

2

16

16

16

16

4

8

16

16

16

8

4

12

16

16

16

2

6

14

16

24

1

4

9

16

32

1

3

7

15

40

Illegal

2

5

12

48

Illegal

2

4

10

64

Illegal

1

3

7

128

Illegal

Illegal

1

3

NOTES:

1. Number in each table entry is the largest length that should be put. 16 is the largest length that a single put

instruction can generate.

2. Illegal -- With that number of Contexts, even a length of one could cause the Ring to overfill.

Advertising