How a packet is routed depends in large part on the type of packet it is. Each packet in HyperTransport is a multiple of four bytes in size, and the specification divides packets into two types: control and data. All control packets contain a Command Type field in the first byte which identifies which type of control packet it is and the format of the remaining packet fields to follow. It also indicates whether data packets follow immediately ( writes ), will return later (reads), or are not required. Control PacketsControl packets are sent across a link to initiate specific tasks ; they contain information fields used for several purposes: address decoding, virtual channel and transaction stream management, error reporting, and routing. Devices perform routing functions by extracting information from key fields in control packets. Control packets are further divided into three groups: information, requests , and responses. Information Packets: No Routing RequiredInformation packets include NOP and Sync/Error. These four-byte packets are used for communication between two ends of a link interface. When issued by a transmitter, they are always accepted by the corresponding receiver; they are never forwarded to another link. This means that are no routing issues associated with them. These two packet types will not be discussed further in this chapter. Request Packet Routing InformationRequest packets are used to initiate various transactions and control operations. Packet format depends on the request type; four byte request packets are sent when no address field is needed; eight byte requests are sent otherwise . Figure 11-2 on page 260 depicts a generic eight byte RdSized or WrSized request packet and the key fields used in request packet routing. Figure 11-2. Generic WrSized Or RdSized Request Packet: Key Routing Fields
Table 11-1. Definitions Of Request Packet Fields Used In Routing
Six Request TypesHyperTransport supports six request command types. Most have a number of variants. The following table summarizes each request, the number of bytes in the packet, the Command Code (Byte 0, Bits 5:0 of the request packet), and notes about its use. Table 11-2. Request Packet Command Code Summary
Response Packet Routing InformationResponse packets are used in the completion of non-posted transactions. There are two types, Read response and Target Done response. Read responses are returned by the target of an earlier read or Atomic RMW request to indicate which transaction has been serviced, how much data immediately follows , and whether an error occurred in fetching the data. The Target Done response is returned by the target of an earlier non-posted write or Flush request. No data accompanies this response; it is returned simply to report if the requested operation completed successfully or not. The four byte packet format is different for a Read vs. Target Done response. Figure 11-3 on page 262 shows a generic Read/Target Done response packet and the key fields used in response packet routing. Figure 11-3. Generic Read/Target Done Response Packet: Key Routing Fields
Table 11-3. Definitions Of Response Packet Fields Used In Routing
Data Packet Routing Depends On Control PacketsBecause data packets are always accompanied by a control packet (request or response), they do not contain any routing information of their own. The control packet indicates the size of the data packet payload, the virtual channel it travels in, whether it is bytes or dwords, where it is going, and even whether it is valid or not. For this reason, data packets are not mentioned much in the packet routing discussion that follows; they are assumed to be immediately behind the control packets which accompany them. |