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

The following are the universally fundamental laws of communication: 1) one must have something to communicate; 2) one must have someone to whom to communicate it; 3) one must really communicate it, not merely express it for oneself alone.
Friedrich von Schlegel
This chapter goes into the details of the uppermost PCI Express architectural layer: the Transaction Layer. This layer creates and consumes the request and completion packets that are the backbone of data transfer across PCI Express. The chapter discusses the specifics for Transaction Layer Packet (TLP) generation, how the header is used to identify the transaction, and how the Transaction Layer handles incoming TLPs. Though TLP flow control is a function of the Transaction Layer, that topic is discussed in Chapter 9, Flow Control and is not discussed in this chapter.
This layer s primary responsibility is to create PCI Express request and completion transactions. It has both transmit functions for outgoing transactions, and receive functions for incoming transactions. On the transmit side, the Transaction Layer receives request data (such as read from BIOS location FFF0h ) or completion data ( here is the result of that read ) from the device core, and then turns that information into an outgoing PCI Express transaction. On the receive side, the Transaction Layer accepts incoming PCI Express transactions from its Data Link Layer, as shown in Figure 6.1. This layer assumes all incoming information is correct, because it relies on its Data Link Layer to ensure that incoming information...