Hi, Tim
Thanks for your reply and detailed explanations. After some
investigation I came to the following conclusions, maybe wrong or
inaccurate, but I would like to get your opinions:
- Vista has no support for virtual channel other than VC0 which is the
enforced default in Pci Express Spec. This is equivalent to say QoS
would not be supported in Vista at least.
- I am not clear about how many IHVs are building Pci Express devices
with QoS support. The root complex in the recent models (both desktop
and server board) all have this feature natively supported. However,
IHVs may not benefit from this now that Vista has no intention to
support it. This may just reduce their incentive to implement this in
their cards.
- I doubt if the bandwidth inside the system is also abundant for
everyone. Even if it is now, sooner or later people will devise new
devices to consume that. In the long run, QoS may be a wise choice. And
I don’t think the functionality of the bus driver is to evenly
distribute the available bandwidth. You can tolerate a slow network
connection but you may feel totally unacceptable with the slow stepping
video frames. I bet we should not be too optimistic in this anyway.
That’s why the pci Express spec allows you several different algorithms
to tell how the bandwidth should be divided among competing requesters.
You could, however, use round robin if you believe in fair share.
- Yes, I have done some searching on the internet and found some WinHec
documents on Pci Express particularly informative. Thanks for the
information.
- I don’t exclude the possibility for some determined IHV to do direct
query towards root complex but this is certainly not the right way to do
it.
Though it is hard to tell the future personally I do feel we will find
the feature useful someday. QoS in a WAN may be too difficult to
implement (yet still there are successful examples), but it will be more
practical for a much shrank computer system interconnect topology.
Thanks again for your explanation!
Best regards,
Cody
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Tim Roberts
Sent: Tuesday, November 21, 2006 2:08 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Pci Express QoS support in windows Driver
Wu, Cody wrote:
Hi, All
I am doing Pci Express Technical support (but basically in pre-os
environment) and someone asked me this question which I find it hard
to answer. Can anyone here please give me some clues?
We know Pci Express support QoS by introducing TC (Traffic Class) and
VC(Virtual Channel) and other arbitration algorithm to dispense the
available bandwidth among all the requesters.
…virtually none of which is actually implemented in today’s PCI
Express. The specification made virtual channels optional, which means
no one is implementing them. There was talk a year or two ago of
removing the whole VC concept from the spec.
In Pre-OS environment we cared little about this capability. But it
can be envisioned that this is very useful technology in OS
environment while data can be easily classified by its nature such as
video data, network data, etc. However, since Pci Express is still
somewhat new to OS (Microsoft official documents indicate that Pci
Express will be OS aware only in Vista and its successors), I have no
idea how this can be supported in WDM framework. (Maybe in WDF?)
Nope. None of this is exposed to drivers, even in Vista. There may be
custom ioctls to the PCI Express bus driver, but I haven’t seen them.
There is a white paper on the WHDC web site on PCI Express support in
Vista. Do you have that?
My original idea is that the chipset driver is supplied by the chipset
vendor which has the greatest knowledge about root complex. This
driver exposes certain interfaces with predefined GUID to let other
registering drivers know when the QoS premise is initialized and how
it is supported (e.g. how many TCs are there). The video driver, for
example, can query this interface and use whatever method that is
native to the video card, to direct the card to send data flow at
escalated TC.
It’s not at all clear that this kind of management is worth the
trouble. Why is it up to the video driver to decide that it deserves to
be the highest traffic class? The only side effect of raising someone
to the highest class is that you lock out someone else. The only
reasonable way to run a bus is to share the bandwidth evenly. Remember
that bandwidth competition happens only at the root complex; the
individual slots are all point-to-point. As of now, the root complexes
are fast enough that sharing gives the best overall experience.
The puzzles obsessing me here is that:
-
Is my guess here correct? There could be other working models
anyway.
-
Is any device driver using on modern platforms already doing
so or the capability is just wasted?
I have heard rumors of drivers doing PCI Express isochronous transfers
by directly programming the root complex chipsets. I have not heard of
any traffic class management at all.
- Any changes in WDF so this could be supported?
How would you do that? What would the API look like? Couldn’t you
argue that this should be managed by the device rather than the driver?
- Any insight in Vista and other upcoming OS how this
capability will be supported and utilized?
I suspect it won’t be. Too much trouble, not enough gain.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer