2013. 9. 8. 02:24

AMBA AXI PROTOCOL v1.0 - ADDITIONAL CONTROL INFORMATION

AXI가 지원하는 SYSTEM LEVEL의 CACHE와 PROTECTION UNIT에 대해 알아 봅시다.


Support for system level caches and other performance enhancing components is provided by the use of the cache information signals, ARCACHE and AWCACHE. These signals provide additional information about how the transaction can be processed.

 

 

The ARCACHE[3:0] or AWCACHE[3:0] signal supports system-level caches by
providing the bufferable, cacheable, and allocate attributes of the transaction:


AXI에서 인터커넥트 기반에서 마스터와 슬레이브간의 TRANSACTION 퍼포먼스를 개선하기 위해 몇 가지 CACHE SKIM을
지원합니다. 이것은 CACHE INFORMATION SIGNAL(ARCACHE와 AWCACHE)을 통해서 TRANSACTION을 처리하는 방법에 대해 추가적인 정보를 제공합니다. CACHE INFORMATION SIGNAL이 포함하고 있는 TRANSACTION의 속성은 BUFFERABLE, CACHEABLE 그리고 ALLOCATE가 있습니다.

 

1) Bufferable (B) bit, ARCACHE[0] and AWCACHE[0]
   When this bit is HIGH, it means that the interconnect or any component can delay the transaction reaching its
final destination for an arbitrary number of cycles. This is usually only relevant to writes.

 

문서에서 보면 "final destination"이라는 표현은 그 대상이 마스터나 슬레이브일 수도 있으며 혹은 IP와

INTERCONNECT 사이에 있는 또다른 Component를 의미합니다. 스펙에서 보면 Bufferable 경우에는 오로지 WRITE 동작에만 관련있다고 언급하니 어떤 IP가 요청한 WRITE TRANSACTION을 최종적으로 수신하는 IP(마스터 or 슬레이브)로 해석하시면 됩니다.

해당 비트가 HIGH일 때, TRANSACTION의 타깃이 되는 어떤 IP에서 임의의 CYCLE동안 해당TRANSACTION이 도달하는 것을 지연할 수 있다고 설명되어 있습니다. 아마도 이 설명으로 어떤 케이스가 있는지 잘 이해가 안되실 수도 있습니다만, 해당 케이스는 제가 예전에 포스팅한 [ARCHITECTURE OVERVIEW II]에서 언급된 REGISTER SLICE를 사용하는 케이스로 보시면 됩니다. 아래 그림으로 한가지 가정으로 필요성을 간단히 설명드리겠습니다.

 

 

 

마스터1이 슬레이브쪽으로 WRITE TRANSACTION을 전송하려고 하나, 현재 슬레이브는 마스터2와 TRANSACTION을 R/W하는 관계로 BUSY 상태에 놓여 있어서 WRITE TRANSACTION을 할 수 없습니다. 그 후 슬레이브는 다시 IDLE 상태가 되어 마스터1의 WRITE TRANSACTION을 받을 수 있는 상태가 되었습니다. 하지만 이번에는 INTERCONNECT가 다른 여러 IP들로부터 많은 TRANSACTION REQUEST에 의해 DECODING TIME이 길어지고 결과적으로 마스터1로부터 WRITE TRANSACTION을 처리하는 LATENCY 지연이 발생할 수 있습니다. 이 때문에 SLAVE와 INTERCONNECT 사이에 MASTER TRANSACTION을 임시로 저장할 REGISTER SLICE를 버퍼로 두어, SLAVE가 다른 마스터의 통신하느라 BUSY 상태라고 하더라도 버퍼에 미리 저장하여 슬레이브가 IDLE 상태가 될 때까지 WRITE TRANSACTION을 지연하고 있습니다. IDLE 상태가 되면 슬레이브는 INTERCONNECT DECODING 상태와 상관없이 MASTER REGISTER SLICE를 통해서 바로 WRITE TRANSACTION을 처리할 수가 있습니다. 장황하게 설명하였는데 그냥 말 그대로 처리할 작업을 미리 더블 버퍼링하는 개념이 되겠지요.

 


2) Cacheable (C) bit, ARCACHE[1] and AWCACHE[1]
    When this bit is HIGH, it means that the transaction at the final destination does not have to match the
characteristics of the original transaction.
For writes this means that a number of different writes can be merged together.
For reads this means that a location can be pre-fetched or can be fetched just once for multiple read
transactions.
To determine if a transaction should be cached this bit should be used in conjunction with the Read Allocate
(RA) and Write Allocate (WA) bits.

 

해당 비트가 HIGH일 때, 최종 타깃 IP의 TRANSACTION이 원래 TRANSACTION과 일치하지 않아야 한다는 것을 명시하고 있습니다. 이것이 무엇을 의미하는지 잠시 후 다시 설명드리도록 하고 우선 해당 비트가 HIGH 아닌 경우를 먼저 살펴 보도록 하겠습니다. 아래 그림처럼 마스터와 슬레이브 사이에 하나의 INTERCONNECT가 존재하고 마스터와 INTERCONNECT간에는 32비트 버스 라인을, INTERCONNECT와 슬레이브간에는 64비트 버스 라인으로 구성된 버스 아키텍처가 존재한다고 가정하겠습니다.

 

여기서 만약 마스터가 슬레이브쪽으로 단지 32비트의 WRITE TRANSACTION을 두 번 이슈하는 상황이라면 총 4번의 Latency가 보입니다. 마스터에서 INTERCONNECT, 그리고 INTERCONNECT에서 슬레이브쪽으로 말이죠. 마스터가 보낸 WRITE TRANSACTION이 INTERCONNECT를 거치고 여기서 Final destination인 슬레이브쪽으로 바로 전달되는데 즉, 이것은 마스터가 보낸 WRITE TRANSACTION이 슬레이브 입력으로 항상 일치하게 됩니다.

그럼 이번에는 다시 Cacheable 비트를 HIGH 세팅한 경우를 살펴 보도록 합시다.
WRITE하는 경우의 의미를 보면, 다수의 다른 WRITE TRANSACTION를 하나의 TRANSACTION로 합칠 수 있다고 설명하고 있
는데요. 마스터가 INTERCONNECT쪽의 버퍼(REGISTER SLICE)에 첫 번째 32BIT WRITE TRANSACTION을 이슈합니다. 그리고 두 번째 32BIT WRITE TRANSACTION을 이슈합니다. 그러면 버퍼에 64BIT WRITE TRANSACTION으로 합쳐집니다. 그러고나서 슬레이브쪽으로 한 번에 64BIT WRITE TRANSACTION을 이슈함으로써 총 3번의 Latency가 보입니다. 결론적으로 1번 줄어들게 되는 상황이 됩니다. READ의 경우도 TRANSACTION 방향만 달라질 뿐이고 역시 마찬가지겠지요.

 

오늘은 시간이 늦었으니 여기서 이만 줄이겠습니다. 나머지 내용들은 나중에 다시 설명드리도록 하겠습니다. 즐거운 주말 보내세요.

 

 

Written by Simhyeon, Choe