AMBA/AXI 프로토콜
개요
AMBA(Advanced Microcontroller Bus Architecture)는 Arm이 1996년에 도입한 SoC(System-on-a-Chip) 내부 인터커넥트 표준이다. CPU, GPU, 메모리 컨트롤러, 주변장치 같은 기능 블록들이 칩 내부에서 효율적으로 통신할 수 있도록 설계됐으며, 오늘날 ASIC과 SoC 설계에서 사실상의 표준으로 자리잡았다. AMBA는 오픈 스탠다드로 로열티 없이 사용할 수 있어 광범위한 산업적 채택을 이끌었다.
AXI(Advanced eXtensible Interface)는 AMBA 3 사양(2003년)에서 도입된 세대의 인터페이스로, 고성능·고주파수 시스템 설계를 목표로 한다. 주소/컨트롤과 데이터 단계의 분리, burst 기반 트랜잭션, 다중 미해결 주소(outstanding transactions), 비순차 응답(out-of-order response) 등을 지원하여 메모리 대역폭이 중요한 AI/ML 가속기, 데이터센터, 모바일 애플리케이션 프로세서에 최적화돼 있다. AXI4(2010년)에서 AXI4-Lite, AXI4-Stream 같은 서브셋이 추가되면서 간단한 레지스터 접근이나 고속 스트리밍 데이터 처리까지 활용 범위가 확대됐다.
핵심 개념
AMBA 프로토콜 계보
AMBA 사양은 시간에 따라 여러 버전과 인터페이스를 추가하며 진화했다.
| 세대 | 연도 | 주요 인터페이스 | 특징 |
|---|---|---|---|
| AMBA 1 | 1996 | ASB, APB | 최초의 온칩 버스 표준 |
| AMBA 2 | 1999 | AHB | 싱글 클럭 엣지, 단일 마스터 지원 |
| AMBA 3 | 2003 | AXI3, AHB-Lite, APB3 | 고성능 인터커넥트, burst, 비순차 처리 |
| AMBA 4 | 2010 | AXI4, AXI4-Lite, AXI4-Stream, ACE | 코히어런스 확장, 레지스터 인터페이스, 스트리밍 |
| AMBA 5 | 2013~ | CHI, ACE5, AXI5 | 코히어런스 확장, atomic/cache/QoS 속성 강화 |
AXI 채널 구조
AXI는 다섯 개의 독립적인 채널로 구성되며, 각 채널은 별도의 VALID/READY 핸드셰이크를 가진다.
| 채널 | 약어 | 역할 | 주요 신호 |
|---|---|---|---|
| Read Address | AR | 읽기 요청 주소 전달 | ARID, ARADDR, ARLEN, ARSIZE, ARBURST |
| Read Data | R | 읽기 데이터 및 응답 전달 | RID, RDATA, RRESP, RLAST |
| Write Address | AW | 쓰기 요청 주소 전달 | AWID, AWADDR, AWLEN, AWSIZE, AWBURST |
| Write Data | W | 쓰기 데이터 전달 | WDATA, WSTRB, WLAST |
| Write Response | B | 쓰기 완료 응답 | BID, BRESP |
각 채널은 독립적으로 동작하므로, 하나의 주소 전송이 완료되기 전에 다음 주소를 보낼 수 있고(pipelining), 읽기와 쓰기가 동시에 일어날 수 있다.
주소 속성과 시스템 힌트
AXI 주소 채널에는 단순 주소와 burst 길이 외에도 시스템 레벨에서 중요한 속성 신호가 실린다.
| 신호 | 의미 | 설계 관점 |
|---|---|---|
AxPROT |
privilege, secure/non-secure, instruction/data 구분 | 보안 도메인과 접근 권한 전달 |
AxCACHE |
bufferable, cacheable, allocate 정책 힌트 | 캐시/버퍼 계층의 처리 방식 결정 |
AxQOS |
트랜잭션 우선순위 힌트 | CPU, GPU, DMA 간 혼잡 완화 |
AxREGION |
하나의 물리 인터페이스 내 논리 영역 선택 | 다중 윈도우 디코딩 단순화 |
AxUSER |
구현 정의 sideband 정보 | 벤더별 추적, 태그, 디버그 확장 |
이 속성들은 프로토콜의 데이터 전달 자체를 바꾸지는 않지만, 실제 SoC에서는 메모리 컨트롤러 정책, 보안 필터, NoC 우선순위 제어와 직접 연결된다. 같은 AXI4 인터페이스라도 어떤 속성 신호를 채택하느냐에 따라 지연시간, 격리 수준, QoS 거동이 크게 달라진다.
핸드셰이크 메커니즘
AXI의 모든 채널은 xVALID와 xREADY 두 신호로 흐름을 제어한다.
xVALID: 송신측에서 페이로드가 유효함을 알린다.xREADY: 수신측에서 데이터를 받을 준비가 됐음을 알린다.- 두 신호가 동시에 HIGH일 때 데이터 전송이 완료된다("beat").
중요한 규칙:
1. 송신측은 xREADY를 기다리지 않고 xVALID를 올릴 수 있다.
2. xVALID가 올라간 후에는 핸드셰이크가 일어날 때까지 유지해야 한다.
이 핸드셰이크 구조 덕분에 송수신 양쪽 모두 흐름 제어(flow control)와 스로틀링(throttling)이 가능하다.
Burst 전송
AXI는 burst 기반 프로토콜로, 하나의 주소 요청으로 여러 데이터 비트(beat)를 전송할 수 있다.
| Burst 타입 | 동작 | 용도 |
|---|---|---|
| FIXED | 모든 beat가 같은 주소 | FIFO 반복 접근 |
| INCR | 이전 주소 + 전송 크기만큼 증가 | 순차 메모리 읽기/쓰기 |
| WRAP | INCR와 같으나 경계에서 래핑 | 캐시 라인 fetch |
burst 길이는 AXI4에서 최대 256 beat까지 가능하며, AXI3에서는 최대 16 beat였다.
Thread ID 및 비순차 처리
하나의 Initiator 포트는 여러 Thread ID를 가질 수 있으며, 각 스레드는 순차적으로 동작하지만 서로 다른 스레드 사이에서는 비순차 완료가 가능하다. 예를 들어, 한 스레드가 느린 주변장치에 블록되면 다른 스레드는 독립적으로 진행될 수 있다.
- 스레드 ID는 Initiator 포트에서 로컬하게 정의되며, 인터커넥트를 통과할 때 포트 인덱스가 접두사로 붙는다.
- Target 포트의 Thread ID는 Initiator 포트보다 비트 폭이 넓다.
- AXI-Lite는 단일 스레드만 지원하므로 간단한 레지스터 인터페이스에 적합하다.
Ordering 규칙과 outstanding transaction
AXI는 모든 응답이 완전히 자유롭게 재정렬되는 구조가 아니라, ID와 채널별 ordering 규칙 위에서 높은 병렬성을 제공한다.
- 같은 ID 내부에서는 주소 순서와 응답 순서를 보존해야 하는 경우가 많다.
- 서로 다른 ID 사이에서는 응답이 앞뒤로 바뀔 수 있으므로, Initiator는 ID별로 완료를 추적해야 한다.
- 읽기 채널과 쓰기 채널은 독립적이어서 read miss 처리와 writeback이 동시에 진행될 수 있다.
- 여러 outstanding request를 허용하면 DRAM row hit, bank 병렬성, NoC arbitration 효율을 높일 수 있지만, reorder buffer와 credit 관리 복잡도도 함께 증가한다.
비교/분석
AXI 변형 비교
| 항목 | AXI4 | AXI4-Lite | AXI4-Stream |
|---|---|---|---|
| burst 길이 | 최대 256 beat | 1 beat only | burst 없음(스트림) |
| 데이터 폭 | 8/16/32/64/128/256/512/1024비트 | 32 또는 64비트 | 임의의 바이트 정수 배수 |
| 주소 지원 | 있음 | 있음 | 없음 |
| 복잡도 | 높음 | 낮음 | 매우 낮음 |
| 주요 용도 | 메모리, 고성능 주변장치 | 간단한 레지스터 접근(UART 등) | 고속 스트리밍(VDMA, 비디오 등) |
| AXI5 신호 | 포함 | 일부 제거 | 일부 제거 |
AXI vs 다른 온칩 버스
| 항목 | AXI (ARM) | Wishbone (OpenCores) | CoreConnect (IBM) | Avalon (Altera) |
|---|---|---|---|---|
| 라이선스 | 오픈(로열티 무료) | 오픈 소스 | 상용 | 상용 |
| burst 지원 | 있음 | 있음 | 있음 | 있음 |
| 비순차 처리 | 지원(스레드 ID) | 제한적 | 있음 | 있음 |
| 코히어런스 | ACE로 확장 | 없음 | 있음 | 있음 |
| 채널 수 | 5개 | 단일 버스 | 3개 | 단일 버스 |
| 생태계 | 매우 광범위(ARM 기반 SoC) | 중간 | 제한적 | Intel/Altera SoC |
AMBA 프로토콜 계층 비교
| 인터페이스 | 대역폭 | 복잡도 | 대상 |
|---|---|---|---|
| AXI | 최고 | 높음 | CPU, GPU, 고성능 메모리 컨트롤러 |
| AHB | 높음 | 중간 | DMA, 고속 주변장치 |
| APB | 낮음 | 낮음 | UART, SPI, GPIO 같은 저속 레지스터 |
동작 원리
읽기 트랜잭션
- Initiator가 AR 채널에서 주소(ARADDR), burst 타입(ARBURST), 길이(ARLEN)를 보낸다.
- Target이 ARVALID/ARREADY 핸드셰이크로 주소를 수락한다.
- Target이 R 채널에서 데이터(RDATA)와 상태(RRESP)를 반환한다.
- 각 beat는 RVALID/RREADY 핸드셰이크로 전달되며, 마지막 beat에서 RLAST가 asserted된다.
쓰기 트랜잭션
- Initiator가 AW 채널에서 주소 정보를, W 채널에서 데이터를 동시에 보낸다.
- W 채널의 WSTRB로 각 바이트의 유효성을 표시하고, 마지막 beat에서 WLAST를 asserted한다.
- Target이 모든 데이터를 수신한 후 B 채널에서 BRESP(상태)를 반환한다.
- 쓰기 응답은 한 번의 트랜잭션에 대해 한 번만 전달된다.
인터커넥트 동작
SoC 내부에서 AXI 인터커넥트는 여러 Initiator와 Target을 연결한다.
- 단일 Initiator-Target: 가장 간단한 1:1 연결
- N:M 인터커넥트: 여러 Initiator가 여러 Target에 접근 가능하며, 내부에서 주소 디코딩과 라우팅을 수행
- 아비트레이션: 여러 Initiator가 동시에 요청할 때 공평한 접근을 보장
- 버스트 변환: 상위 레이어의 큰 burst를 하위 레이어의 작은 burst로 분할
- 보호/QoS 전달: 보안 속성, 캐시 속성, 우선순위 힌트를 각 Target 정책에 맞게 전달
- 폭 변환: 512-bit GPU 포트와 64-bit 주변장치처럼 데이터 폭이 다른 포트를 연결할 때 beat를 재패킹
장단점
| 장점 | 단점 |
|---|---|
| 5개 독립 채널로 읽기/쓰기 동시 처리 가능 | 복잡한 인터커넥트 설계가 필요 |
| burst 전송으로 대량 데이터 효율적 전달 | 모든 기능을 사용할 때 신호 수가 많음(최대 50+) |
| Thread ID로 비순차 처리 및 병렬성 확보 | 코히어런스는 ACE/CHI 같은 별도 확장 필요 |
| AXI4-Lite/Stream으로 간단한 장치까지 확장 가능 | AXI4 vs AXI3 간 burst 길이 차이로 호환성 검증 필요 |
| 오픈 스탠다드로 로열티 없이 사용 가능 | ARM 생태계 외에서는 채택률이 상대적으로 낮음 |
| Xilinx, Intel 등 주요 FPGA 벤더에서 널리 지원 | 고주파수 설계에서 타이밍 클로저 어려움 |
관련 기술
- PCIe Gen5/Gen6
- CXL Version Comparison
- UCIe 칩렛 인터커넥트
- CPU Cache Architecture
- Memory Controller
- ARM AMBA Specification
- AMBA AXI and ACE Protocol Specification (IHI0022)
- Arm AMBA 5 Overview
- Wikipedia: AXI Handshake/Channels/Bursts
- Wikipedia: Advanced Microcontroller Bus Architecture
핵심 정리
AMBA/AXI는 SoC 내부 블록 간 통신을 위한 사실상의 표준 인터커넥트이다. AXI의 5개 독립 채널과 VALID/READY 핸드셰이크는 읽기/쓰기 동시 처리와 흐름 제어를 가능케 하며, burst 전송과 Thread ID는 대량 데이터 전송과 병렬성을 동시에 충족한다. AXI4-Lite와 AXI4-Stream은 각각 간단한 레지스터 접근과 고속 스트리밍에 최적화돼 있어, 단일 SoC 안에서 다양한 성능과 복잡도를 가진 장치들을 하나의 프로토콜로 통합할 수 있다. AMBA는 ARM 외에도 IBM CoreConnect, Wishbone, Avalon 등 경쟁 표준이 존재하지만, 광범위한 IP 생태계와 FPGA 벤더 지원 덕분에 가장 널리 채택된 온칩 버스 표준으로 자리잡고 있다.