[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
PCI-X Attribute Phase Reserved Bits
Gentlemen,
In the PCI-X specification v1.0a, chapter 2.10.3 Split Completion
Address, page 81, the Split Completion address phase is defined. The 7
lower bits of the address are either reserved, or copied from the address
field of the Split Request. This is done to enable bridges and targets to
keep track of where the transaction starts relative to an ADB.
My question is: Why are these bits reserved, and not always
driven?
It seems to me that having these bits reserved cause the design to be
much more complicated. I will illustrate why by the following two
examples:
Example 1:
1. An initiator issues a DWORD read from a target at address 0x10000004.
The target responds with Split Request, and thus becomes a
completer.
2. The completer issues a Split Completion with the lower 7 bits of the
address = 0, as required by the spec.
3. When the initiator receives the data, it can not use address bit 2 to
direct the data to an odd memory location (where it actually belongs). It
has to KNOW that the request was from an odd address, and place the data
accordingly.
Example 2:
I have seen three different devices now at two different locations that
do not obey the spec at this point. One is a P2P bridge, the two other
are plug in cards.
In the case of the bridge, the following happens:
1. An initiator issues a DWORD read from a target at address 0x10000004.
The target resides behind a bridge.
2. The bridge issues a Split Request on the primary side, and issues a
new DWORD read on the secondary side.
3. The target responds with Split Request, and thus becomes a
completer.
4. The completer issues a Split Completion with the lower 7 bits of the
address = 0x04, thus violating the spec at this point.
5. The bridge accepts the Split Completion on its secondary side
6. The bridge issues a new Split Completion on the primary side, but now
has REQ64# asserted, but still byte count = 4.
--> The data has now "disappeared", and the data presented
by the birdge is corrupted.
7. The Initiator claims the Split Completion and stores the corrupted
data presented by the bridge on AD(31:0)
Apparently the bridge used the reserved bits in this case, and the result
is corrupted data.
Has anyone else seen these problems with PCI-X devices out there? Can
someone explain the reasoning behind the reserved bits? Why are they
reserved? Would it not make life a lot easier to designers if AD(6:0)
always contained a valid 7-bit address for Split Completions?
Thanks in advance for your help.
Best Regards,
Espen Bøch.
*********************************************************
Espen
Bøch
Phone: +47 - 22 10 60 90
Fax: +47 - 22 10 62 02
VMETRO ASA
Brynsveien 5
N-0667
Oslo
Email: eboch@vmetro.no
NORWAY
URL:
www.vmetro.com