[AXI] AMBA AXI이란?
*All photos and content in this article are copyrighted by Arm Ltd.
This is a personal compilation for students and practitioners entering digital design. Content may be removed or modified at any time at the request of the copyright holder, Arm Ltd.
Copyright © 2003-2023 Arm Ltd. All rights reserved.
AMBA AXI Protocol SPEC
AXI Spec은 ARM에서 다운로드하실 수 있습니다.
아래 이미지를 누르면 해당 ARM 다운로드 사이트로 이동합니다.
AXI Protocol overview
Advanced eXtensible Interface의 약어로 IP 간의 데이터 전송을 위한 인터페이스 규약입니다.
AXI 프로토콜은 high-bandwidth 및 low-latency 설계에 적합하며, 복잡한 bridges 없이 고주파 동작이 제공됩니다. 다양한 components의 interface 요구 사항을 충족시키며, 초기 액세스 latency를 가진 memory controllers에 적합합니다. 또한, interconnect architectures의 구현에 있어 유연성을 제공하며, AHB 및 APB interfaces와 Backward 호환성이 있습니다.
AXI 프로토콜은 주소/제어와 데이터 단계를 분리하며, byte strobes를 사용한 unaligned data transfers를 지원합니다. 시작 주소만 발행하는 burst-based transactions을 사용하며, write와 read data channels를 분리하여 Direct Memory Access (DMA)를 지원합니다.
multiple outstanding addresses 발행을 지원하며, out-of-order transaction completion을 지원합니다. 또한, timing closure를 제공하기 위한 register stages 추가가 용이합니다.
AXI Architecture
AXI 프로토콜은 트랜잭션 기반이며, 다음과 같은 신호개념이 존재합니다.
- 쓰기 요청(AW)
- 쓰고자 하는 주소채널, 신호 이름이 AW로 시작하는 채널.
- 데이터 쓰기(W)
- 쓰고자 하는 데이터를 보내는 채널, 신호 이름이 W로 시작
- 쓰기 응답(B)
- 쓰기 요청에 대한 응답 채널, 신호 이름이 B로 시작합니다.
- 읽기 요청(AR)
- 읽고자 하는 주소를 보내는 채널, 신호 이름이 AR로 시작
- 데이터 읽기 요청(R)
- 읽은 데이터를 보내는 채널, 신호 이름이 R로 시작합니다.
M(Master)가 S(Slave)에 데이터를 쓸 때, 주소와 컨트롤 신호를 보내고, 쓸 데이터를 보냅니다. 이후 응답을 받습니다. 이렇게 쓰기 요청주소채널, 쓸 데이터 채널에 추가로 쓰기 응답 채널이 있습니다. 이 응답 채널은 데이터가 잘 써졌는지를 확인하는 용도로 사용합니다.
M(Master)가 S(Slave)에 데이터를 읽을 때, 어떤 주소에 있는 데이터를 읽을건지 보내주고, 해당주소에 있는 데이터를 S(Slave)가 보냅니다. 읽기 요청채널, 읽기 데이터 채널이 있습니다.
Handshake Process
AXI에서는 VALID/READY 핸드셰이크 방식을 사용합니다.
VALID/READY 핸드셰이크 메커니즘은 AXI 프로토콜의 핵심 기능 중 하나로 마스터와 슬레이브 구성 요소 간에 안정적인 데이터 전송을 보장합니다. VALID 신호는 유효한 데이터를 전송할 수 있음을 나타내고 READY 신호는 수신기가 데이터를 받아들일 준비가 되었음을 나타냅니다. 데이터 트랜잭션은 VALID 및 READY 신호가 모두 어설션될 때 발생합니다(VALID=1 및 READY=1).
아래 그림과 같이 source가 destination과 전송할 때 다음과 같이 source VALID신호를 HIGH로 하고 Information(addr, data, control)를 보냅니다. 이를 받을 준비가 되었다면, destination이 READY신호를 HIGH로 보내면 전송이 이뤄지게 됩니다. Source는 Destinaion으로부터 입력되는 READY 신호가 1이고 자신이 출력하는 VALID가 1일 때 해당 주기(Period)에서 데이터 전송됐음을 확인합니다.
구현 방법에 관계없이 중요한 측면은 VALID와 READY가 동시에 이설션(VALID=1 및 READY=1)될 때만 데이터 전송이 발생해야 한다는 것입니다.
세 가지 방법
결론
AMBA의 AXI가 무엇인지, 채널기반으로 어떻게 동작하는지, Handshake 방식은 어떤 걸 사용하는지에 대하여 알아보았습니다. AXI에는 다양한 전송형태를 지원하기 위해 발전해 왔고, QoS, Low power, outstanding 등 다양한 기능들이 많습니다. 나중에 하나씩 소개해드리려고 합니다. 오늘 말씀드린 기본적인 동작구조만 알아도 기본적인 개념화는 끝났다 생각하셔도 무방합니다. 자세한 내용은 ARM SPEC문서를 참고하시면 모든 사항을 찾아보실 수 있습니다.