[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 Name | Description |
|---|---|
| TXREQFLITPEND | Flit[^1] 보류(Pending). Valid signal이 assert 되지 않았더라도 request가 보류되었음을 표시. QoS[^2] 스케줄링을 위해 사용. |
| TXREQVALID | Valid. High 일 때, TXREQFLIT의 데이터가 valid 상태임을 나타냄. interconnect에서 sampled 될 준비가 되었음을 표시. |
| TXREQFLIT | Flit 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). |
| TXREQCREDIT | Credit. ==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 Name | Description |
|---|---|
| TXRSPFLITPEND | Flit Pending. Same as the request channel, used for QoS. |
| TXRSPVALID | Valid. Indicates the response flit on TXRSPFLIT is valid. |
| TXRSPFLIT | Flit 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). |
| TXRSPCREDIT | Credit. 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 Name | Description |
|---|---|
| TXDATFLITPEND | Flit Pending. Used for QoS. |
| TXDATVALID | Valid. Indicates the data flit on TXDATFLIT is valid. |
| TXDATFLIT | Flit 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. |
| TXDATCREDIT | Credit. 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 Name | Description |
|---|---|
| RXSNPFLITPEND | Flit Pending. Indicates a snoop is pending for QoS. |
| RXSNPVALID | Valid. Indicates the snoop flit on RXSNPFLIT is valid. |
| RXSNPFLIT | Flit 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). |
| RXSNPCREDIT | Credit. 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
- 중요한 2가지 목적의 복합채널
- Direction
- ==Interconnect -> RN==
| Verilog Port Name | Description |
|---|---|
| RXDATFLITPEND | Flit Pending. Used for QoS. |
| RXDATVALID | Valid. Indicates the data/completion flit on RXDATFLIT is valid. |
| RXDATFLIT | Flit 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. |
| RXDATCREDIT | Credit. The RN returns a credit to the interconnect for this channel. |
| ## Summary Table | |
| Request Node(CPU Core) 관점에서의 summay |
| Channel Name | Direction | Purpose | Key Payload Fields |
|---|---|---|---|
| TXREQ | RN -> ICN | Send Read/Write/Cache-Mgmt requests | Opcode, Addr, TxnID |
| TXRSP | RN -> ICN | Respond to snoops | Opcode, Resp, TxnID |
| TXDAT | RN -> ICN | Send write data | Data, BE, TxnID |
| RXSNP | ICN -> RN | Receive snoop requests | Opcode, Addr, TxnID |
| RXDAT | ICN -> RN | Receive read data & write completions | Opcode, Data, Resp, TxnID |
[^1]: "Flow control digit", transfer의 가장 기본단위
[^2]: Quality of Service
[^3]: snoop은 특정 메모리 address가 있는지, 그리고 그 상태가 어떤지 확인하기 위해 cache에 보내는 query. 이는 cache coherency를 위한 핵심 매커니즘.
댓글
댓글 쓰기