AMBA AXI 프로토콜 완전 정복
🔌 AMBA AXI 프로토콜 완전 정복
AXI 아키텍처, 5채널 프로토콜, 핸드셰이크, 버스트 전송, BFM 검증, 인터커넥트 설계까지 — SoC 엔지니어 실전 가이드
AMBA AXI(Advanced eXtensible Interface)는 Arm이 정의한 고성능 온칩 버스 프로토콜로, 현대 SoC 설계에서 가장 널리 사용되는 인터커넥트 표준입니다. 2003년 AXI3 발표 이후, AXI4(2010), AXI5(2022)로 진화하며 수백 개의 마스터와 슬레이브를 연결하는 복잡한 SoC의 핵심 백본 역할을 수행하고 있습니다.
이 글에서는 AXI 프로토콜의 기본 아키텍처부터 5개 독립 채널, VALID/READY 핸드셰이크, 버스트 전송 메커니즘, 어드레싱 옵션, Atomic 접근, 캐시/보호 속성, 인터커넥트 설계 구조, BFM 기반 검증 방법론, 그리고 AXI4-Lite까지 체계적으로 다룹니다. 2026년 최신 AXI5/AXI-K 스펙 업데이트도 함께 소개합니다.
📜 1. AMBA 표준의 진화
ARM(현 Arm)은 1995년 AMBA(Advanced Microcontroller Bus Architecture) 1.0을 발표한 이후, SoC 복잡도 증가에 맞춰 프로토콜을 지속적으로 확장해 왔습니다.
🏛️ 2. AXI 아키텍처 개요
핵심 용어 정리
| 용어 | 정의 |
|---|---|
| Channel | VALID 신호에 연결된 AXI 신호들의 독립적인 집합. 단방향 정보 전달 |
| Interface | 하나 이상의 채널 모음. Master와 Slave를 연결. IP 코어별 다수 인터페이스 가능 |
| Transfer | 단일 정보 교환. 하나의 VALID/READY 핸드셰이크로 완성되는 최소 단위 |
| Transaction | 주소 + 1개 이상의 데이터 Transfer + 응답으로 구성된 전체 Burst 동작 |
| Burst | 2개 이상의 데이터 Transfer로 구성된 Transaction (1개도 가능) |
AXI 프로토콜 핵심 특성
- ▸ 채널 기반 프로토콜: 5개 독립 채널, 각 채널은 단방향 정보 전달
- ▸ 단일 클럭 에지 동작: 모든 신호는 ACLK 상승 에지에 샘플링
- ▸ 양방향 플로우 컨트롤: 모든 채널에 VALID/READY 핸드셰이크 적용
- ▸ 주소/데이터 분리: 별도의 주소 페이즈와 데이터 페이즈
- ▸ 버스트 기반: 하나의 주소로 다수의 데이터 Transfer (AXI3: 최대 16 beat, AXI4: 최대 256 beat)
- ▸ Multiple Outstanding: 여러 Burst를 동시에 발행 가능
- ▸ Out-of-Order 완료: 서로 다른 ID의 트랜잭션은 순서와 무관하게 완료 가능
- ▸ 레지스터 슬라이스: 각 채널이 단방향이므로 레지스터 파이프라인 삽입 용이 → 타이밍 클로저에 유리
📡 3. AXI 5개 독립 채널
AXI 프로토콜의 핵심은 5개의 독립적인 채널입니다. Read와 Write가 완전히 분리되어 동시에 수행 가능하며, 각 채널은 자체 VALID/READY 핸드셰이크를 가집니다.
Interface
Interface
→ Master에서 Slave 방향 | ← Slave에서 Master 방향 | 각 채널은 ID로 동기화
| 채널 | Prefix | 방향 | 역할 |
|---|---|---|---|
| Read Address | AR | M → S | 읽기 주소 및 제어 정보 전달 |
| Read Data | R | S → M | 읽기 데이터 + 응답(RRESP) 전달 |
| Write Address | AW | M → S | 쓰기 주소 및 제어 정보 전달 |
| Write Data | W | M → S | 쓰기 데이터 + Strobe + LAST 전달 |
| Write Response | B | S → M | 쓰기 완료 응답 (Burst 당 1개) |
🤝 4. VALID/READY 핸드셰이크
AXI의 모든 채널은 VALID/READY 양방향 핸드셰이크를 사용합니다. 송신측이 데이터가 유효할 때 VALID을 assert하고, 수신측이 수신 준비되면 READY를 assert합니다. VALID과 READY가 모두 1인 클럭 에지에서만 데이터가 이동합니다.
Slave가 먼저 READY 준비 → Master가 VALID assert → 1 사이클에 Transfer 완료. 지연 시간 최소화를 위해 권장됨.
Master가 VALID을 먼저 assert → Slave가 처리 후 READY assert → 최소 2 사이클 소요.
⚠️ Deadlock 방지 규칙 (가장 중요!): VALID 신호는 어떤 READY 신호도 기다리지 않고 assert 해야 합니다. READY 신호는 VALID을 기다릴 수 있지만, VALID은 READY를 기다리면 안 됩니다. 쓰기 트랜잭션에서 Master는 AWREADY를 기다리지 않고 WVALID을 assert 해야 합니다.
📖 5. Read/Write 트랜잭션 흐름
Read Transaction
RRESP는 각 Transfer마다 제공됨 | RLAST로 Burst의 마지막을 표시 | Data width: 8~1024 bits
Write Transaction
BRESP는 전체 Burst에 대해 1회만 응답 | Write data가 Write address보다 먼저 도착할 수 있음 (레지스터 스테이지로 인해)
📊 6. AXI 신호 그룹
| 그룹 | Prefix | 주요 신호 |
|---|---|---|
| Global | A | ACLK, ARESETn (Active-LOW 비동기 리셋) |
| Write Addr | AW | AWID, AWADDR, AWLEN, AWSIZE, AWBURST, AWLOCK, AWCACHE, AWPROT, AWVALID/READY |
| Write Data | W | WID(AXI3만), WDATA, WSTRB, WLAST, WVALID/READY |
| Write Resp | B | BID, BRESP, BVALID/READY |
| Read Addr | AR | ARID, ARADDR, ARLEN, ARSIZE, ARBURST, ARLOCK, ARCACHE, ARPROT, ARVALID/READY |
| Read Data | R | RID, RDATA, RRESP, RLAST, RVALID/READY |
| Low-Power | C | CSYSREQ, CSYSACK, CACTIVE |
AXI4에서 추가된 신호: AWQOS/ARQOS[3:0] (QoS 우선순위), AWREGION/ARREGION[3:0] (리전 식별), AWUSER/ARUSER (사용자 정의).
🔄 7. 버스트 타입과 어드레싱
| AxBURST | 타입 | 설명 | 주요 용도 |
|---|---|---|---|
2'b00 | FIXED | 모든 Transfer가 동일 주소에 접근 | FIFO 타입 디바이스 접근 |
2'b01 | INCR | 각 Transfer마다 주소가 burst size만큼 증가 | 일반 순차 메모리 접근 |
2'b10 | WRAP | 증가하다가 경계에서 하위 주소로 wrap | 캐시 라인 채우기 (Critical Word First) |
📏 핵심 규칙: 모든 Burst는 4KB 경계를 넘을 수 없습니다 (AHB는 1KB). 이는 슬레이브 간 경계를 넘는 것을 방지하고, 슬레이브 내 주소 증가기의 크기를 제한하기 위함입니다. WRAP 버스트는 시작 주소가 Transfer 크기에 정렬되어야 하며, 길이는 2, 4, 8, 16으로 제한됩니다. AXI4에서 16 beat를 초과하는 Burst는 INCR 타입만 허용됩니다.
AxLEN과 AxSIZE 인코딩
AxLEN은 Burst 내 Transfer 수를 지정합니다. 값 0이 1 beat를 의미합니다 (실제 Transfer 수 = AxLEN + 1). AXI3에서는 AxLEN[3:0]으로 최대 16 beat, AXI4에서는 AxLEN[7:0]으로 최대 256 beat까지 가능합니다. AxSIZE[2:0]는 beat 당 바이트 수를 2의 거듭제곱으로 인코딩합니다: 0→1B, 1→2B, 2→4B, 3→8B ... 7→128B.
📋 8. 응답 코드 (RRESP / BRESP)
| 코드 | 이름 | 설명 |
|---|---|---|
2'b00 | OKAY | 정상 접근 성공. Exclusive 접근 실패 시에도 반환 가능 |
2'b01 | EXOKAY | Exclusive 접근 성공 |
2'b10 | SLVERR | 슬레이브 에러 — FIFO 오버플로우, 지원하지 않는 크기, 읽기 전용 영역 쓰기, 타임아웃 등 |
2'b11 | DECERR | 디코드 에러 — 인터커넥트가 해당 주소에 슬레이브가 없음을 알림 |
BRESP는 전체 Write Burst에 대해 단일 응답이고, RRESP는 각 Read Transfer마다 개별 응답을 제공합니다.
🔒 9. Atomic 접근
인터커넥트가 같은 슬레이브에 대해 다른 ID의 접근을 차단하여 원자적 Read-Modify-Write를 보장합니다. 버스를 독점하므로 성능 저하가 크며, AXI4에서 제거되었습니다.
Exclusive Read → Exclusive Write 사이에 다른 마스터가 같은 주소에 쓰면 OKAY 응답(실패), 쓰지 않았으면 EXOKAY(성공). ARM LDREX/STREX 명령으로 구현됩니다.
🛡️ 10. 캐시 속성과 보호
AxCACHE[3:0]
캐시 속성은 4비트로 인코딩됩니다: [0] Bufferable — 쓰기 지연 허용, [1] Cacheable(AXI3)/Modifiable(AXI4) — 프리페치 및 쓰기 병합 허용, [2] Read Allocate — 읽기 미스 시 캐시에 할당, [3] Write Allocate — 쓰기 미스 시 캐시에 할당. 이 조합으로 Write-Through, Write-Back, Non-cacheable 등 다양한 메모리 타입을 표현합니다.
AxPROT[2:0]
| Bit | 값 = 0 | 값 = 1 |
|---|---|---|
| [0] | Normal access | Privileged access |
| [1] | Secure access | Non-secure access |
| [2] | Data access | Instruction access |
🔧 11. AXI 인터커넥트 설계
AXI 인터커넥트(Switch/Crossbar)는 다수의 Master와 Slave를 연결하는 핵심 모듈입니다. 채널 방향에 따라 Forward 채널(M→S)과 Backward 채널(S→M)로 구분됩니다.
AW/AR: 주소 디코딩으로 슬레이브 선택 | W: AW 채널 정보를 기반으로 셀렉터 제어
R/B: ID 태그(BID, RID)로 해당 Master에 라우팅
🏷️ 12. Transaction ID 체계
AXI에서 ID는 트랜잭션의 순서 보장 및 라우팅에 핵심적 역할을 합니다. 같은 ID를 가진 트랜잭션은 순서가 보장되고, 다른 ID는 Out-of-Order 완료가 가능합니다.
💡 13. AXI4-Lite: 간소화된 제어 레지스터 인터페이스
AXI4-Lite는 제어 레지스터(CSR) 접근에 최적화된 AXI의 간소화 버전입니다. 전체 AXI 프로토콜의 5채널 구조를 유지하면서도 복잡한 기능을 제거하여 게이트 카운트를 크게 줄입니다.
- ▸ Burst length 1 only — AxLEN은 항상 0 (단일 Transfer)
- ▸ 32-bit 또는 64-bit 데이터 버스만 — Partial access 불가 (모든 바이트 레인 사용)
- ▸ ID 없음 — 모든 트랜잭션은 순서대로 처리 (고정 ID)
- ▸ Exclusive access 미지원 — AxLOCK 항상 0
- ▸ Device Non-bufferable — AxCACHE 항상 0
- ▸ xLAST 항상 1 — Burst length가 항상 1이므로
호환성: AXI4-Lite Master는 AXI Full Slave에 완전 호환됩니다. 반대로 AXI Full Master가 AXI4-Lite Slave에 접속할 때는 ID 리플렉션과 변환 로직이 필요할 수 있습니다.
🧪 14. AXI BFM 기반 검증
BFM(Bus Functional Model)은 AXI 마스터의 동작을 시뮬레이션하여 테스트 패턴을 생성하는 검증 모듈입니다. Verilog task 기반으로 read_task와 write_task를 구현합니다.
Read Task: fork-join으로 AR + R 채널 병렬 처리
task read_task; input [31:0] id; input [WIDTH_AD-1:0] addr; input [31:0] size; // 1~128 byte per beat input [31:0] leng; // 1~16 beats per burst input [31:0] type; // burst type begin fork read_address_channel(id,addr,size,leng,type); read_data_channel(id,addr,size,leng,type); join end endtask
Write Task: AW + W + B 채널 3개 병렬 처리
task write_task; input [31:0] id; input [WIDTH_AD-1:0] addr; input [31:0] size, leng, type; begin fork write_address_channel(id,addr,size,leng,type); write_data_channel(id,addr,size,leng,type); write_resp_channel(id); join end endtask
AXI Switch
🌐 15. 2026년 AXI5 / AXI-K 최신 동향
| 기능 | 도입 시점 | 설명 |
|---|---|---|
| Atomic Transactions | Issue F (AXI5) | AtomicStore/Load/Compare/Swap — 원격 위치에서 Read-Modify-Write를 단일 트랜잭션으로 처리 |
| Data Poisoning | Issue F | 데이터 손상 사실을 다운스트림 컴포넌트에 전파하여 조기 감지 가능 |
| Interface Parity | Issue G | 데이터/제어 신호에 Odd Parity 보호 — Automotive 기능안전(ISO 26262) 지원 |
| MPAM | Issue G | Memory Partitioning and Monitoring — 가상 머신별 리소스 할당/모니터링 |
| MTE | Issue H | Memory Tagging Extensions — 메모리 안전 위반(use-after-free, buffer overflow) 하드웨어 감지 |
| Unique ID | Issue H | 인터커넥트의 ID 순서 추적 복잡도 감소 |
| MEC | Issue K | Memory Encryption Contexts — RME(Realm Management Extensions) 연동 메모리 암호화 |
| 12-bit PARTID | Issue K | MPAM Partition ID를 9비트에서 12비트로 확장 — 대규모 파티셔닝 지원 |
🔮 2026 핵심 트렌드: AXI3/AXI4는 신규 설계에서 AXI5로 대체가 권장되며, Arm의 최신 스펙(Issue J/K)에서는 AXI3/AXI4 내용이 제거되었습니다. Chiplet 시대에는 CHI C2C와 CXS 프로토콜이 다이(die) 간 고속 Coherent 인터커넥트를 담당하고, 다이 내부에서는 AXI5가 표준으로 자리잡고 있습니다. Automotive, 서버, AI 가속기 등 Safety와 Security 요구사항이 강화되면서 Parity, MTE, MPAM, MEC 같은 기능이 필수가 되고 있습니다.
📌 16. 정리 및 핵심 요약
🎯 이 글에서 다룬 핵심 내용:
- 1. AMBA 진화: APB(1995) → AHB(1999) → AXI3(2003) → AXI4(2010) → AXI5/CHI(2015~)
- 2. 5개 독립 채널: AR, R (Read) + AW, W, B (Write) — 양방향 VALID/READY 핸드셰이크
- 3. Deadlock 방지: VALID은 READY를 기다리지 않고 assert — 가장 중요한 설계 규칙
- 4. 버스트 전송: FIXED/INCR/WRAP 타입, 4KB 경계 불가침, AXI4 최대 256 beat
- 5. 응답 코드: OKAY, EXOKAY, SLVERR, DECERR — Read는 Transfer별, Write는 Burst별
- 6. Atomic/Cache/Protection: Exclusive 접근, AxCACHE 4비트, AxPROT 3비트
- 7. 인터커넥트: Forward(MUX+Arbiter) / Backward(MUX+Selector) 구조, ID 기반 라우팅
- 8. BFM 검증: fork-join 기반 병렬 채널 처리, ModelSim 시뮬레이션 플로우
- 9. AXI4-Lite: CSR 접근 최적화 서브셋 — Burst 1, No ID, 32/64-bit only
- 10. 2026 동향: AXI5 Atomic/Parity/MTE/MPAM, AXI-K MEC, AXI3/4 → AXI5 전환 권장
AMBA AXI는 단순히 데이터를 실어 나르는 버스가 아니라, SoC의 성능, 안전성, 보안을 결정짓는 핵심 인프라입니다. 5개 독립 채널과 ID 기반 트랜잭션 관리를 통해 수백 개의 IP 블록이 동시에 효율적으로 통신할 수 있으며, AXI5의 Atomic, Parity, MTE 등은 이 프로토콜이 자동차, 서버, AI 등 차세대 응용 분야의 요구를 충족시키기 위해 지속적으로 진화하고 있음을 보여줍니다.
Reference: Ando Ki, "Introduction to AMBA AXI", "AMBA AXI Details", "AXI BFM Task", "AMBA AXI Design", Future Design Systems, 2020
Arm AMBA AXI Protocol Specification Issue J/K · Synopsys AMBA AXI5 VIP · Cadence ACE/AXI VIP
© 2026 SoC Design Engineer Blog | Updated March 2026
댓글
댓글 쓰기