AMBA AXI PROTOCOL v1.0 - BASIC TRANSACTIONS II
OVERLAPPING READ BURST와 WRITE BURST를 정리하도록 하겠습니다.
1.3.2 Overlapping read burst example
Figure 1-5 shows how a master can drive another burst address after the slave accepts the first address. This enables a slave to begin processing data for the second burst in parallel with the completion of the first burst.
위의 그림에서 보시는 것과 같이 마스터는 슬레이브에게 BURST ADDRESS를 ISSUE하고(CONTROL INFORMATION도 함께) 슬레이브가 그 ADDRESS를 ACCEPT한 한 직후, 마스터는 다른 BURST ADDRESS를 ISSUE합니다. 그리고 T4 사이클에서 보면 마스터가 슬레이브에게 두 번째(B) BURST에 대한 ADDRESS를 ISSUE하는 중에 슬레이브는 마스터에게 첫 번째(A) 데이터를 전송하는 것을 볼 수 있는데, 이와 같이 병렬적인 처리가 가능한 이유가 BURST TRANSACTION을 완료하기전에 다음 BURST의 ADDRESS를 ISSUE할 수 있는 MULTIPLE OUTSTANDING ADDRESS 스킴과 함께 ADDRESS CHANNEL과 DATA CHANNEL이 분리되어 있기 때문입니다. 이것은 이전 시간에도 이미 언급했던 SKIM들입니다. 그 이후에는 "READ BURST" 예제와 동일하게 두 번째 트랜잭션을 마지막 DATA TRANSFER의 전송과 함께 RLAST 시그널을 마스터에게 보내고 트랜잭션을 마무리합니다.
1.3.3 Write burst example
Figure 1-6 shows a write transaction. The process starts when the master sends an address and control information on the write address channel. The master then sends each item of write data over the write data channel. When the master sends the last data item, the WLAST signal goes HIGH. When the slave has accepted all the data items, it drives a write response back to the master to indicate that the write transaction is complete.
WRITE BURST의 경우에는 READ BURST에 비해서 조금 복잡해 보일 수도 있지만, 동작 흐름은 크게 다르지 않습니다. 마스터는 WRITE 대상의 슬레이브에게 보낼 준비가 된 CONTROL INFORMATION과 WRITE ADDRESS를 ISSUE합니다. 슬레이브는 T2 사이클에서 해당 BURST ADDRESS를 수락함과 동시에 마스터가 바로 DATA TRANSFER를 전송하게 되는데 이것은 WVALID 시그널이 HIGH 상태 즉, 보낼 DATA TRANSFER가 바로 유효한 상태로 샘플링되었기 때문에 그렇습니다. T4 사이클에서 보면 슬레이브가 마스터로부터 DATA TRANSFER를 수락할 준비가 되면 하나의 DATA TRANSFER 전송이 완료되고 이후의 흐름도 동일하게 이어지다가 T9 사이클에서 마찬가지로 마스터가 슬레이브에게 마지막 DATA TRANSFER와 마지막 DATA임을 알리는 WLAST 시그널을 전송하게 되고 슬레이브는 WRITE 트랜잭션을 정상적으로 완료했다는 BRESP 시그널을 마스터에게 보냅니다. 마스터는 BREADY 시그널로 BRESP 시그널을 수락한 준비가 된 상태(HIGH)에서 슬레이브에서 보낸 BRESP 시그널을 수신함과 동시에 BREADY 시그널은 LOW 상태로 트랜지션합니다. 이로써 하나의 WRITE TRANSACTION이 완전히 마무리됩니다.
1.3.4 Transaction ordering
AXI Protocol은 OUT-OF-ORDER TRANSACTION 완료가 가능하다고 하였습니다. 모든 트랜잭션에 ID 태그가 주어지는데, 동일한 ID 태그를 가진 트랜잭션들은 순차적으로 완료해야 하지만 다른 ID 태그를 가진 트랜잭션은 비순차적으로 완료할 수 있다는 의미입니다.
첫 번째 강좌에서 이미 언급해 드렸지만 OUT-OF-ORDER 트랜잭션은 두가지 방법을 통해 성능을 향상시킬 수 있습니다
1) The interconnect can enable transactions with fast-responding slaves to complete
in advance of earlier transactions with slower slaves.
2) Complex slaves can return read data out of order. For example, a data item for a later
access might be available from an internal buffer before the data for an earlier access is
available.
첫 번째 방법은 마스터A가 슬레이브B에게 ADDRESS ISSUE를 먼저하고 다음에 슬레이브C에게ADDRESS ISSUE를 한 상황으로 가정합시다. AHB 프로토콜의 경우에는 순차적으로 트랜잭션을 마무리할 수 있는데, 만약 슬레이브B가 슬레이브C보다 응답이 느린 디바이스라고 해도 슬레이브B의 트랜잭션 동작이 먼저 처리가 되어야만 슬레이브C의 동작을 처리할 수 있습니다. 반면에 AXI 프로토콜에서는 응답속도가 더 빠른 슬레이브의 트랜잭션을 먼저 처리할 수 있기 때문에 성능에 이점이 있습니다.
두 번째 방법은 내부 버퍼에 1, 2, 3, 4 이렇게 순서대로 데이터 쌓여 있고 1이 먼저 처리되어야 할 순서라고 가정하겠습니다. 슬레이브 입장에서는 1보다 4부터 먼저 처리하기를 원하는 경우가 있다면 그럴 경우에 4, 3, 2, 1과 같이 비순차적으로 사용 가능하기 때문에 성능적인 측면에서 더욱 좋습니다.
If a master requires that transactions are completed in the same order that they are
issued, then they must all have the same ID tag. If, however, a master does not require
in-order transaction completion, it can supply the transactions with different ID tags,
enabling them to be completed in any order.
In a multimaster system, the interconnect is responsible for appending additional
information to the ID tag to ensure that ID tags from all masters are unique. The ID tag
is similar to a master number, but with the extension that each master can implement
multiple virtual masters within the same port by supplying an ID tag to indicate the
virtual master number.
Although complex devices can make use of the out-of-order facility, simple devices are
not required to use it. Simple masters can issue every transaction with the same ID tag,
and simple slaves can respond to every transaction in order, irrespective of the ID tag.
위의 스펙을 보시면 ID 태그에 대한 많은 설명이 나오는데요. ID 태그가 동일한 트랜잭션들은 반드시 순서대로 처리가 완료되어야 하지만 다른 ID 태그를 가진 트랜잭션은 비순차적으로 완료할 수 있다는 내용이 핵심인 것만 알아두시면 됩니다. 시간이 늦어 이만 강좌를 마치도록 하겠습니다. 궁금한 내용은 블로그에 얼마든지 질문해 주시면 아는데까지 성심껏 답변을 드리겠습니다. 편안한 밤 보내세요.
Written by Simhyeon, Choe