AMBA AXI PROTOCOL v1.0 - ADDRESSING OPTIONS I
오늘은 ADDRESSING OPTIONS에 관한 부분들에 대해서 살펴 보도록 하겠습니다.
시간이 많이 늦은 관계로, BURST LENGTH와 BURST SIZE에 대해서만 언급해 드리도록 하겠습니다.
4.1 About addressing options
The AXI protocol is burst-based, and the master begins each burst by driving transfer
control information and the address of the first byte in the transfer. As the burst
transaction progresses, it is the responsibility of the slave to calculate the addresses of
subsequent transfers in the burst. Bursts must not cross 4KB boundaries to prevent them from crossing boundaries between slaves and to limit the size of the address incrementer required within slaves.
위의 설명에 4K BOUNDARY에 대해, 초과하면 안된다고 언급되어 있는데, 이것은 이 장 마지막에서 다시 언급해 드리도록 하겠습니다.
4.2 Burst length
The AWLEN or ARLEN signal specifies the number of data transfers that occur within
each burst. As Table 4-1 shows, each burst can be 1-16 transfers long.
BURST LENGTH는 하나의 BURST를 구성하는 일련의 DATA TRANSFER의 수를 의미합니다.
(AMBA AXI4 최신 스펙에서 용어 설명에 보면 한 BEAT가 하나의 BURST에서 각각의 DATA
TRANSFER라고 정의하고 있습니다. A BEAT = A DATA TRANSFER)
For wrapping bursts, the length of the burst must be 2, 4, 8, or 16 transfers. Every transaction must have the number of transfers specified by ARLEN or AWLEN. No component can terminate a burst early to reduce the number of data transfers. During a write burst, the master can disable further writing by deasserting all the write strobes, but it must complete the remaining transfers in the burst. During a read burst, the master can discard further read data, but it must complete the remaining transfers in the burst.
WRAPPING BURST에서 BURST의 LENGTH는 2, 4, 8, 16까지해서 n^2로 정렬된 크기를 가져야 한다는 점이 중요합니다. 그리고 어떤 IP든 ARLEN이나 AWLEN에 명시된 TRANSFER의 LENGTH보다 작게하여 BURST TRANSACTION을 끝낼 수 없습니다.
(AWLEN = 8인데 AWLEN을 4의 LENGTH만큼만 READ/WRITE하는 상황이 불가능)
즉, 명시된 길이만큼의 BURST TRANSACTION은 완료하되, WRITE BURST에서는 마스터가 WRITE STROBE 스킴으로 특정 BYTE LANE을 선택하여 추가적인 WRITING을 막을 수 있고 READ BURST에서는 마스터가 추가적인 READ DATA를 무시할 수 있습니다. 정리하면, 한 번 시작한 트랜잭션은 동작 중에 중단할 수 없으며, 정해진 길이의 모든 트랜잭션은 완료해야 한다는 의미로 볼 수 있습니다.
Table 4-2 shows how the ARSIZE or AWSIZE signal specifies the maximum number of data bytes to transfer in each beat, or data transfer, within a burst. The AXI determines from the transfer address which byte lanes of the data bus to use for each transfer.
For incrementing or wrapping bursts with transfer sizes narrower than the data bus, data transfers are on different byte lanes for each beat of the burst. The address of a fixed burst remains constant, and every transfer uses the same byte lanes. The size of any transfer must not exceed the data bus width of the components in the transaction.
여기서 DATA TRANSFER의 크기는 BUS WIDTH와 동일하거나 그보다 작아야 합니다. 데이터 버스의 BYTE LANE이 각각의 TRANSFER로 사용하는 것을 TRANSFER ADDRESS로부터 결정해야 한다고 나와 있는데요. 간단히 예를 들어 설명하자면, AWADDR이 0x1000이라고 가정하고 4 BEAT(BURST SIZE = 1 BYTE)로 구성된 하나의 BURST를 WRITE TRANSACTION하는 상황이라고 하겠습니다. 0x1000에는 [7:0] 0x1001에는 [15:8], 0x1002에는 [23:16], 0x1003에는 [31:24]의 비트 스코프로 전송해야 한다는 의미가 됩니다.
이렇게 증가하는 것은 WRAPPING BURST와 INCREMENTING BURST MODE에서 해당하는 스킴이고 FIXED BURST MODE에서는 오로지 하나의 특정 주소 영역에 대해서만 TRANSACTION을 수행하기 때문에
모든 TRANSFER는 항상 동일한 BYTE LANE을 사용합니다. 즉, 주소값이 변하지 않는다는 것을 의미합니다.
각 BURST TYPE은 나중에 다시 설명을 드리도록 하겠습니다.
(BYTE LANE이라는 개념은 하나의 BURST에서 특정 BEAT의 단위를 의미합니다만, 그 중에서 특정 BEAT를 READ/WRITE TRANSACTION에서 선택적으로 ENABLE하거나 DISABLE하여 전송할 수 있도록 만들어 놓은 단위라고 생각하시면 됩니다. BYTE LANDE에서 "BYTE"라고 명명한 이유가 최소 8BIT 이상의 크기를 가지기 때문인 것 같습니다. 이것은 나중에 WRITE STROBE PART에서 다시 설명을 드리도록 하겠습니다.)
그럼 오늘은 여기까지만 정리하도록 하겠습니다.
12시가 넘었으니... 즐거운 하루 보내십시오. :)
Written by Simhyoen, Choe