Intel
®
81341 and 81342 I/O Processors
December 2007
Developer’s Manual
Order Number: 315037-002US
411
Messaging Unit—Intel
®
81341 and 81342
provides an overview of the Circular Queue operation.
The circular queues are accessed by external PCI agents through two port locations in
the PCI address space: Inbound Queue Port and Outbound Queue Port. The Inbound
Queue Port is used by external PCI agents to read the Inbound Free Queue and write
the Inbound Post Queue. The Outbound Queue Port is used by external PCI agents to
read the Outbound Post Queue and write the Outbound Free Queue.
The data storage for the circular queues must be provided by the 81341 and 81342
local memory. The base address of the circular queues is contained in the Queue Base
Address Register (
Section 4.9.13, “Queue Base Address Register - QBAR” on
). Each entry in the queue is a 32-bit data value. Each read from or write to
the queue may access only one queue entry. Multi-word accesses to the circular queues
are not allowed.
Each circular queue has a head pointer and a tail pointer. The pointers are offsets from
the Queue Base Address. Writes to a queue occur at the head of the queue and reads
occur from the tail. The head and tail pointers are incremented by either the Intel
XScale
®
processor or the Messaging Unit hardware. Which unit maintains the pointer is
determined by the writer of the queue. More details about the pointers are given in the
queue descriptions below. The pointers are incremented after the queue access. Both
pointers wrap around to the first address of the circular queue when they reach the
circular queue size.
The Messaging Unit generates an interrupt to the Intel XScale
®
processor or generate a
PCI interrupt under certain conditions. In general, when a Post queue is written, an
interrupt is generated to notify the receiver that a message was posted.
The size of each circular queue can range from 4K entries (16 Kbytes) to 64K entries
(256 Kbytes). All four queues must be the same size and may be contiguous.
Therefore, the total amount of local memory needed by the circular queues ranges
from 64 Kbytes to 1 Mbytes. The Queue size is determined by the Queue Size field in
the MU Configuration Register.
Figure 43. Overview of Circular Queue Operation
Host Processor
Inbound
Post
Queue
head
tail
Inbound
Free
Queue
head
tail
Inbound posted messages
Inbound free messages
Outbound posted messages
Outbound free messages
Outbound
Free
Queue
head
tail
Outbound
Post
Queue
head
tail
Interrupt when queue is written
Interrupt when data in prefetch buffer is valid
Intel Xscale® Microarchitecture
B6214-01