- 각 트랜잭션 채널은 자체적인 transaction ID를 가진다.
(WID 신호는 AXI3에서만 존재)
마스터는 AWID/ARID를 사용해 ordering 요구사항을 나타낸다.
- 서로 다른 마스터에서 발생한 트랜잭션 간에는 ordering 제한이 없다.
- 동일한 마스터에서 발생한 서로 다른 ID 값을 가진 트랜잭션은 ordering 제한이 없다.
- 동일한 ARID를 가지는 트랜잭션은 마스터가 주소를 발행한 순서대로 처리 되어야 한다.
- 동일한 AWID를 가지는 트랜잭션은 마스터가 주소를 발행한 순서대로 처리 되어야 한다.
- read/write 트랜잭션은 서로 ordering dependency가 없다.
(같은 ID값을 가진다해도 서로 독립적으로 완료될 수 있다.)
[Master/Slave]
- 동일한 ARID 값을 가진 트랜잭션 데이터는 주소발행 순서대로 도착(반환)해야 한다.
- 서로 다른 ARID값을 가진 트랜잭션 데이터는 어느순서로든 도착(반환)가능하다.
- 서로 다른 ARID 값을 가진 트랜잭션 데이터는 interleave 될 수 있다.
- 반환되는 RID값은 ARID 값과 일치해야 한다.
- read data ordering depth는 슬레이브 내부에서 재정렬될 수 있는 보류 중인 주소의 갯수
(read data reordering depth = 1이면, 모든 트랜잭션을 순서대로 처리하는 슬레이브)
=> 이는, 슬레이브 설계자가 지정해야하는 정적 값
interleave (사전적 의미 : ~사이에 끼워 넣다)
: 서로 다른 A*ID 값을 가진 데이터들은 섞여서 전달 될 수 있다는 의미
서로 다른 ID를 가진 트랜잭션은 어떤 순서로든 완료될 수 있음
- A 트랜잭션이 먼저 시작되었음에도, B 트랜잭션이 먼저 완료됨
Write
- A, C 트랜잭션은 ID가 같으므로, 발행된 순서대로 완료되어야 함 (A 완료 후, C 완료)
- B 트랜잭션은 ID가 다르기 때문에 어느 시점에서든 완료될 수 있음
Read 채널에서 데이터를 읽을 때는 순서제한이 없음
- A 트랜잭션이 먼저 수신
- 하지만, B 트랜잭션을 먼저 처리
Read 트랜잭션 시, ARID 값이 서로 다르면 인터리빙 가능
- 트랜잭션 A와 B에 대한 데이터가 교차(Interleave)되어 나타남
- Interleave를 통해 빠르게 처리할 수 있는 것들을 우선적으로 처리하는 것이 Performance에는 좋다.
인터리빙 시 동일한 ID를 가진 트랜잭션의 경우, 주소발행 순서대로 반환되어야 함
- 주소 발행순서는 A, B, C 순으로 이루어 짐
- 트랜잭션 A와 C의 RID값이 동일
- 트랜잭션 A보다 C가 먼저 요청 됨
- 슬레이브는 트랜잭션 C에 대한 데이터를 반환하기 전에 A에 대한 RDATA 값을 모두 반환해야 함.
dd