[AMBA][CHI] Channel-based architecture

  

Introduction

CHI defines ==five primary channels== for communication between a node and the interconnect.

The five Channels of AMBA CHI

1. Request Channel (TXREQ)

  • Purpose
    • RN이 reading from memory, write to memory, or other cache-to-cache operation 같은 기본 기능을 요청할때 사용
  • Direction
    • ==RN -> Interconnect==
Verilog Port NameDescription
TXREQFLITPENDFlit[^1] 보류(Pending). Valid signal이 assert 되지 않았더라도 request가 보류되었음을 표시. QoS[^2] 스케줄링을 위해 사용.
TXREQVALIDValid. High 일 때, TXREQFLIT의 데이터가 valid 상태임을 나타냄. interconnect에서 sampled 될 준비가 되었음을 표시.
TXREQFLITFlit Data. request packet 자체를 전달하는 payload bus. 아래의 주요 정보들을 포함한 여러 필드가 포함: 
- QoS: Quality of Service. A ==priority level for the transaction==. 
- TgtID: ==Target ID==. The destination node for the request. 
- SrcID: ==Source ID==. The ID of the node sending the request. 
- TxnID: ==Transaction ID==. A unique tag to identify this specific transaction. 
- Opcode: The most important field. ==It defines the command== (e.g., ReadShared, WriteUnique, MakeInvalid).
TXREQCREDITCredit. ==CHI uses a credit-based flow control system==. INC는 RN에 credit을 부여하고, RN은 각각의 flit에 대해서 credit을 소비. 이 신호는 RN이 credit을 반환하고 있음을 표시.
### 2. Response Channel (TXRSP)
- Purpose
- RN이 수신한 snoop requests에 대한 응답
- Direction
- ==RN -> Interconnect==
Verilog Port NameDescription
TXRSPFLITPENDFlit Pending. Same as the request channel, used for QoS.
TXRSPVALIDValid. Indicates the response flit on TXRSPFLIT is valid.
TXRSPFLITFlit Data. The response packet payload. Key sub-fields include: 
- TxnID: The ID of the snoop transaction this is a response to. 
- Opcode: The response command (e.g., SnpRespData, SnpRespClean). 
- Resp: The ==state of the cache line== (e.g., indicating if the data is clean or dirty).
TXRSPCREDITCredit. Returns a credit to the interconnect for the response channel.

3. Data Channel (TXDAT)

  • Purpose
    • RN이 ==write data==를 interconnect로 보내기 위한 채널, ==snoop 요청에 대한 데이터==의 전송에도 사용
  • Direction
    • ==RN -> Interconnect==
Verilog Port NameDescription
TXDATFLITPENDFlit Pending. Used for QoS.
TXDATVALIDValid. Indicates the data flit on TXDATFLIT is valid.
TXDATFLITFlit Data. The data packet payload. Key sub-fields include: 
- TxnID: The ID of the transaction this data belongs to. 
- Data: The actual data being written (e.g., 128 or 256 bits). 
- BE: ==Byte Enables==. Specifies which bytes within the Data bus are valid. Essential for partial writes.
TXDATCREDITCredit. Returns a credit to the interconnect for the data channel.

4. Snoop Channel (RXSNP)

  • Purpose
    • Interconnect가 snoop[^3] request를 RN에 보내는 채널
  • Direction
    • ==Interconnect -> RN==
Verilog Port NameDescription
RXSNPFLITPENDFlit Pending. Indicates a snoop is pending for QoS.
RXSNPVALIDValid. Indicates the snoop flit on RXSNPFLIT is valid.
RXSNPFLITFlit Data. The snoop packet payload. Key sub-fields include: 
- SrcID: The ID of the node that initiated the original request causing this snoop. 
- TxnID: The unique ID for this snoop transaction. 
- Addr: The memory address being snooped. 
- Opcode: The snoop command (e.g., SnpShared, SnpUnique).
RXSNPCREDITCredit. The RN returns a credit to the interconnect for the snoop channel.

5. Receive Data & Completion Channel (RXDAT)

  • Purpose
    • 중요한 2가지 목적의 복합채널
      • Read transaction에 의해 요청된 Data
      • Write transaction에 대한 최종 acknowledgement
  • Direction
    • ==Interconnect -> RN==
Verilog Port NameDescription
RXDATFLITPENDFlit Pending. Used for QoS.
RXDATVALIDValid. Indicates the data/completion flit on RXDATFLIT is valid.
RXDATFLITFlit Data. The payload. Key sub-fields include: 
- TxnID: The ID of the original transaction this is the response for. 
- Opcode: The response command (e.g., CompData for read data, Comp for write completion). 
- Resp: The final state of the transaction (e.g., OK, Error). 
- Data: The actual read data, if applicable.
RXDATCREDITCredit. The RN returns a credit to the interconnect for this channel.
## Summary Table
Request Node(CPU Core) 관점에서의 summay
Channel NameDirectionPurposeKey Payload Fields
TXREQRN -> ICNSend Read/Write/Cache-Mgmt requestsOpcode, Addr, TxnID
TXRSPRN -> ICNRespond to snoopsOpcode, Resp, TxnID
TXDATRN -> ICNSend write dataData, BE, TxnID
RXSNPICN -> RNReceive snoop requestsOpcode, Addr, TxnID
RXDATICN -> RNReceive read data & write completionsOpcode, Data, Resp, TxnID

[^1]: "Flow control digit", transfer의 가장 기본단위
[^2]: Quality of Service
[^3]: snoop은 특정 메모리 address가 있는지, 그리고 그 상태가 어떤지 확인하기 위해 cache에 보내는 query. 이는 cache coherency를 위한 핵심 매커니즘.

댓글

이 블로그의 인기 게시물

📚 SDC 마스터 클래스 시리즈 | Chapter 1

📚 SDC 마스터 클래스 시리즈 | Chapter 2

📚 SDC 마스터 클래스 시리즈 | Chapter 3