3. CCIX protocol layer

3.1 Introduction

Each CCIX agent has an ID by which messages are routed.

Each CCIX port can communicate with one or more other CCIX ports. CCIX switches (Switch) include CCIX ports and support CCIX links. A CCIX link is defined as a (logical) connection between two CCIX ports, with dedicated communication resources.

Before a CCIX system works normally, the host needs to be initialized through the discovery and enumeration mechanisms. The CCIX specification does not additionally specify this mechanism and fully complies with the PCIe specification.

The discovery process requires the following actions:

Discover every chip present in the system.

Discover all transport switches present in the system, including embedded and stand-alone switches that support the protocol.

Discover all agents on every chip in the system.

For each master agent, find the size of its desired address range in the system address map.

For each slave agent, discover the size of the address range that the slave agent can provide to the master agent on the other chip.

The enumeration process requires the following actions:

Determine the topology of the system and appropriate routing algorithms.

The slave agent will be assigned to the master agent.

Determine the global system address mappings (G-RSAM and G-HSAM) for master and slave agents.

Determines agent ID assignments for the entire system.

3.2 Message Fields

As mentioned earlier, the communication between the CCIX link layer and the CCIX transaction layer is carried out through CCIX messages. CCIX messages can be divided into several categories, request messages, listen messages and response messages. The following figure shows all the fields (Field) of the request message. In the case of a 128B cache line, the "Comment column" indicates the additional requirements needed. In addition, the bottom of the table lists other fields required to include data in the request message.

The figure below shows all the fields of the listening message.

The image below shows all the fields of the response message.

Next, let's see what the specific meaning of each field in these CCIX messages is.

TgtID: Target Identifier, 6-bit width.

SrcID: Source Identifier, 6-bit width.

MsgLen: message length, 6-bit width, identifies the length of the message in 4-byte increments. For example, the following table shows that the longest message is 116 bytes and the shortest is 4 bytes.

MsgCredit: Used to identify whether the message credit is passed to the sender of the CCIX link. What is credit will be explained later.

Ext: If set to 1, it means 4B extension is included.

MsgType: identifies the message type in the payload, 4-bit width, and the encoding meaning is as follows.

QoS: Quality of Service, the priority level of quality of service. QoS is primarily used for main controller and memory controller transaction scheduling; only requests have a QoS field; QoS settings should not affect functional correctness; QoS fields have no necessary behavior requirements, however the expected default behavior is that rising values ​​of QoS indicate higher priority.

TxnID: Transaction Identifier, 12-bit width (only 11-bit for a 128B cache line).

ReqOp, SnpOp, RespOp: Specifies the operation to be performed, the Opcode encoding is different for each message type.

Addr: Specifies the address associated with the message. The allowable address size is defined by the AddrWidth property.

NonSec: Identity is access to a non-secure area.

ReqAttr: Request attributes, including information about request data size, memory attributes, listening attributes, and transaction ordering requirements. ReqAttr[6:4] indicates the data size, the legal data length can be 1B, 2B, 4B, 8B, 16B, 32B, 128B; ReqAttr[2:0] indicates the storage type, and the encoding is as follows.

User: User-defined field.

Data: Write data or read response data.

BE: Byte Enable, byte enable.

Posion: Indicates whether the corresponding 8-byte block has uncorrected errors.

SnpCast: Identifies the agent that monitors alone, and its code is as follows.

RespAttr: Response attribute. In the Comp response, this field is not used and must be set to 0; in the CompData response, this field indicates the cache state that the response receiver can set; in the snoop response, this field indicates the coherent cache on the snoopee state.

DataRet: Indicates whether data is to be returned to the master agent. When DataRet is deasserted, for all listeners except SnpMakeI:

Request to return data for "dirty" cache lines.

It is recommended (but not required) not to return data for the only clean cache line.

Requires that no data be returned for shared "clean" cache lines.

When DataRet is valid:

Request to return data for "dirty" cache lines.

It is recommended, but not required, to return data for the only "clean" cache line.

Requires that no data be returned for shared "clean" cache lines.

Next, I will talk about the CCIX consistency protocol, which will be more content.

Original title: Technology Sharing | CCIX (3)

Article source: [WeChat public account: Anxin Education Technology] Welcome to add attention! Please indicate the source when reprinting the article.

Reviewing Editor: Tang Zihong

Leave a Reply

Your email address will not be published.