Introduction to PCI Express: A Hardware and Software Developer's Guide

My expressway runneth over.
Victor Ross, spokesman for NY Bureau of Traffic Operations
This chapter goes into the details of the various flow control mechanisms within PCI Express. It begins with a description of the ordering requirements for the various transaction types and then explains key aspects of the credit-based flow control mechanisms. The rest of the chapter then deals with some of the advanced mechanisms that PCI Express uses to manage the traffic within the system, namely virtual channels and traffic classes. Following that, the chapter briefly describes how these mechanisms are used to support isochronous data streams.
The PCI Express Base Specification defines several ordering rules to govern which types of transactions are allowed to pass or be passed. Passing occurs when a newer transaction bypasses a previously issued transaction and the device executes the newer transaction first. The ordering rules apply uniformly to all transaction types memory, I/O, configuration, and messages but only within a given traffic class. There are no ordering rules between transactions with different traffic classes. It follows that there are no ordering rules between different virtual channels, since a single traffic class cannot be mapped to multiple virtual channels within a given link. Further details on this are located in the section on virtual channels and traffic classes later in this chapter. Please note that the ordering rules for completions are somewhat decoupled from request ordering. Completions use their own ordering rules and do not necessarily follow the same ordering as their...