어드밴스트 마이크로컨트롤러 버스 아키텍처

**어드밴스트 마이크로컨트롤러 버스 아키텍처**(Advanced Microcontroller Bus Architecture, **AMBA**)는 시스템 온 칩(SoC) 설계 내에서 기능 블록의 연결 및 관리를 위한 개방형 표준 온칩 인터커넥트 규격이다. 이는 수많은 컨트롤러와 구성 요소를 가진 버스 아키텍처 기반의 멀티프로세서 설계 개발을 용이하게 한다. AMBA는 그 이름에도 불구하고 탄생 이후 마이크로컨트롤러 장치를 훨씬 뛰어넘는 범위로 확장되었다. 오늘날 AMBA는 스마트폰과 같은 현대의 휴대용 모바일 기기에 사용되는 애플리케이션 프로세서를 포함하여 다양한 ASIC 및 SoC 부품에 널리 사용되고 있다. AMBA는 ARM의 등록 상표이다.

AMBA는 1996년 Arm에 의해 도입되었다. 최초의 AMBA 버스는 ASB(Advanced System Bus)와 APB(Advanced Peripheral Bus)였다. 1999년의 두 번째 버전인 AMBA 2에서 Arm은 단일 클록 에지 프로토콜인 AHB(AMBA High-performance Bus)를 추가했다. 2003년 Arm은 더 높은 성능의 인터커넥트에 도달하기 위한 AXI(Advanced eXtensible Interface)와 CoreSight 온칩 디버그 및 트레이스 솔루션의 일부인 Advanced Trace Bus (ATB)를 포함하는 3세대 AMBA 3를 발표했다. 2010년에는 AMBA 4 AXI4를 시작으로 AMBA 4 규격이 도입되었으며, 2011년에는 ACE(AMBA 4 AXI Coherency Extensions)를 통해 시스템 전체의 일관성(coherency)을 확장했다. 2013년에는 재설계된 고속 전송 계층과 혼잡 완화 기능을 갖춘 AMBA 5 CHI(Coherent Hub Interface) 규격이 도입되었다. 이러한 프로토콜은 문서화가 잘 되어 있고 로열티 없이 사용할 수 있기 때문에 오늘날 임베디드 프로세서 버스 아키텍처의 사실상 표준으로 자리 잡았다.

## 설계 원칙
섬네일|AMBA AXI 핸드셰이크
SoC의 중요한 측면은 어떤 구성 요소나 블록을 포함하느냐뿐만 아니라, 이들이 어떻게 서로 연결되는가이다. AMBA는 블록들이 서로 인터페이스하기 위한 솔루션이다.

AMBA 규격의 목표는 다음과 같다:

*하나 이상의 CPU, GPU 또는 신호 프로세서를 갖춘 임베디드 마이크로컨트롤러 제품을 처음부터 올바르게 개발할 수 있도록 지원한다.
*기술 독립적이어야 하며, 다양한 IC 공정에서 IP 코어, 주변 장치 및 시스템 매크로셀을 재사용할 수 있도록 한다.
*프로세서 독립성을 높이기 위해 모듈식 시스템 설계를 장려하고, 재사용 가능한 주변 장치 및 시스템 IP 라이브러리 개발을 촉진한다.
*고성능 및 저전력 온칩 통신을 지원하면서 실리콘 인프라를 최소화한다.

## AMBA 프로토콜 규격
AMBA 규격은 고성능 임베디드 마이크로컨트롤러 설계를 위한 온칩 통신 표준을 정의한다. 이는 업계 전반의 폭넓은 참여와 함께 ARM 리미티드에 의해 지원된다.

AMBA 5 규격은 다음 버스/인터페이스를 정의한다:
* AXI5, AXI5-Lite 및 ACE5 프로토콜 규격
* Advanced High-performance Bus (AHB5, AHB-Lite)
* Coherent Hub Interface (CHI)
* Distributed Translation Interface (DTI)
* Generic Flash Bus (GFB)

AMBA 4 규격은 다음 버스/인터페이스를 정의한다:

*AXI Coherency Extensions (ACE) - Cortex-A7 및 Cortex-A15를 포함한 최신 Arm Cortex-A 프로세서에서 널리 사용됨
*AXI Coherency Extensions Lite (ACE-Lite)
*Advanced Extensible Interface 4 (AXI4)
*Advanced Extensible Interface 4 Lite (AXI4-Lite)
*Advanced Extensible Interface 4 Stream (AXI4-Stream v1.0)
*Advanced Trace Bus (ATB v1.1)
*Advanced Peripheral Bus (APB4 v2.0)
*AMBA 저전력 인터페이스 (Q-채널 및 P-채널)

AMBA 3 규격은 네 가지 버스/인터페이스를 정의한다:

* Advanced eXtensible Interface (AXI3 또는 AXI v1.0) - Cortex-A9를 포함한 Arm Cortex-A 프로세서에서 널리 사용됨
*Advanced High-performance Bus Lite (AHB-Lite v1.0)
*Advanced Peripheral Bus (APB3 v1.0)
*Advanced Trace Bus (ATB v1.0)

AMBA 2 규격은 세 가지 버스/인터페이스를 정의한다:

*Advanced High-performance Bus (AHB) - ARM7, ARM9 및 Arm Cortex-M 기반 설계에서 널리 사용됨
*Advanced System Bus (ASB)
*Advanced Peripheral Bus (APB2 또는 APB)

AMBA 규격 (첫 번째 버전)은 두 가지 버스/인터페이스를 정의한다:

*Advanced System Bus (ASB)
*Advanced Peripheral Bus (APB)

버스의 타이밍 측면과 전압 레벨은 규격에서 규정하지 않는다.

### AXI Coherency Extensions (ACE 및 ACE-Lite)
AMBA 4 규격의 일부로 정의된 **ACE**는 시스템 전체의 일관성을 도입하는 추가 신호로 AXI를 확장한다. 이 시스템 일관성은 여러 프로세서가 메모리를 공유할 수 있게 하며 Arm의 big.LITTLE 처리와 같은 기술을 가능하게 한다. **ACE-Lite** 프로토콜은 I/O 일관성으로도 알려진 단방향 일관성을 가능하게 한다. 예를 들어, 완전 일관성 ACE 프로세서의 캐시에서 데이터를 읽을 수 있는 네트워크 인터페이스 등이 이에 해당한다.

### Advanced eXtensible Interface (AXI)

AMBA 3 규격에서 정의된 3세대 AMBA 인터페이스인 **AXI**는 고성능, 고클록 주파수 시스템 설계를 목표로 하며, 고속 서브마이크로미터 인터커넥트에 적합한 다음과 같은 특징을 포함한다:
* 주소/제어 단계와 데이터 단계의 분리
* 바이트 스트로브를 사용한 정렬되지 않은 데이터 전송 지원
* 시작 주소만 발행되는 버스트 기반 트랜잭션
* 순서와 상관없는(out of order) 응답과 함께 여러 개의 미처리 주소 발행
* 타이밍 클로저를 제공하기 위한 레지스터 단계의 용이한 추가

### Advanced High-performance Bus (AHB)
**AHB**는 ARM사에서 발표한 Advanced Microcontroller Bus Architecture 버전 2에서 도입된 버스 프로토콜이다.

이전 버전에 비해 다음과 같은 특징을 갖는다:

* 넓은 버스 폭 (64/128/256/512/1024 비트).

AHB에서의 단순한 트랜잭션은 주소 단계와 그 이후의 데이터 단계로 구성된다(대기 상태가 없을 경우 단 2개의 버스 사이클). 대상 장치에 대한 접근은 MUX(비상태 유지형)를 통해 제어되므로, 한 번에 하나의 버스 마스터에만 버스 접근을 허용한다.

**AHB-Lite**는 AMBA 3 표준에서 공식적으로 정의된 AHB의 하위 집합이다. 이 하위 집합은 단일 마스터를 가진 버스의 설계를 단순화한다.

### Advanced Peripheral Bus (APB)
**APB**는 시스템 주변 장치의 레지스터 인터페이스와 같은 저대역폭 제어 액세스를 위해 설계되었다. 이 버스는 AHB와 유사하게 주소 및 데이터 단계를 갖지만, 훨씬 축소되고 복잡도가 낮은 신호 리스트를 갖는다(예: 버스트 없음).
나아가, 이는 낮은 비트 폭(32비트)을 가진 저주파수 시스템을 위해 설계된 인터페이스이다.

## AMBA 제품
AMBA 프로토콜 규격을 사용하여 데이터를 효율적으로 이동하고 저장하기 위해 SoC에서 디지털 버스를 구현하는 합성 가능한 지식 재산(IP) 코어 제품군인 'AMBA Products'를 ARM 리미티드로부터 라이선스 받을 수 있다. AMBA 제품군에는 AMBA 네트워크 인터커넥트 (CoreLink NIC-400), 캐시 일관성 인터커넥트 (CoreLink CCI-500), SDRAM 메모리 컨트롤러 (CoreLink DMC-400), DMA 컨트롤러 (CoreLink DMA-230, DMA-330), 레벨 2 캐시 컨트롤러 (L2C-310) 등이 포함된다.

여러 제조업체가 ARM이 아닌 설계에도 AMBA 버스를 활용한다. 예를 들어 인피니온은 MIPS 아키텍처 기반의 ADM5120 SoC에 AMBA 버스를 사용한다.

## 경쟁 기술
* OpenCores의 Wishbone – 자유 및 개방형 버스 아키텍처 (구 Silicore)
* IBM의 CoreConnect 버스 기술 – IBM의 임베디드 파워PC뿐만 아니라 자일링스 MicroBlaze 또는 유사한 코어를 사용하는 다른 많은 SoC와 유사한 시스템에서 사용됨
* IDT의 IPBus
* Avalon – 알테라가 자사의 니오스 II SoC에서 사용하기 위해 개발한 전용 버스 시스템
* Accellera의 Open Core Protocol (OCP)
* AMD의 하이퍼트랜스포트 (HT) (단, 이는 온칩 버스가 아닌 오프칩 인터페이스임)
* 인텔의 퀵패스 인터커넥트 (QPI) (단, 이는 온칩 버스가 아닌 오프칩 인터페이스임)
* PICC의 virtual share – 자유 및 오픈 소스
* TileLink - CHIPS Alliance의 자유 및 개방형 버스 아키텍처

## 같이 보기
* 버스 (컴퓨팅)

## 각주

분류:컴퓨터 버스
분류:시스템 온 칩