ARM의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜은 마이크로컨트롤러와 마이크로프로세서 내의 인터컨넥트(Interconnect) 인터페이스를 위한 표준입니다. 크게 세 가지 메인 버스 프로토콜로 나뉘는데, 이는 APB, AHB, 그리고 AXI입니다.

(** 필자의 의견상 trasaction mechanism으로 보았을 때에, 가장 큰 차이를 보이고 있어서 3종류만 다룹니다. **)

 

APB (Advanced Peripheral Bus)

APB는 단순하고 저전력의 주변 장치를 위한 인터페이스로, 시스템 내에서 성능을 크게 떨어뜨리지 않는 장치에 사용됩니다. APB는 소규모 저속 퍼리페랄이나 마이크로컨트롤러에 적합하며, 주로 저속 입출력 장치를 연결하는 데에 사용됩니다.

 

AHB (Advanced High-performance Bus)

AHB는 고성능 모듈들을 위한 인터페이스로, 높은 대역폭의 데이터 전송이 필요한 경우에 주로 사용됩니다.

"AHB는 프로세서 코어, DMA 컨트롤러, 고속 퍼리페랄 장치 등 고성능 모듈 간의 데이터 전송에 적합합니다. AHB는 높은 클럭 속도와 더 큰 데이터 단위의 전송을 통해 성능을 향상시킵니다." 라고 예전에는 그랬으나, 미세 공정을 통해 클럭 속도를 올리려고 하지만, pipeline 구조로 인해서 timing slice를 추가하기가 어려운 구조입니다.

HREADY signal이 slave입장에서는 input / output을 모두 봐야하고, master 입장에서는 input만 존재하면 됩니다. 이로 인해 착각하기가 쉬운 protocol입니다.

 

AXI (Advanced eXtensible Interface)

AXI는 가장 높은 성능의 모듈을 위한 인터페이스로, AMBA 3와 AMBA 4 사양에 속해 있습니다. AXI는 분리된 주소/제어와 데이터 단계, 버스에서 동시에 여러 outstanding transactions, 버스트 기반의 트랜잭션 등을 지원함으로써 더 높은 시스템 성능을 제공합니다. 이러한 특징들로 인해 AXI는 고성능, 고속 동기식 인터페이스에서 요구되는 기능들을 제공합니다.

높은 클럭 사용을 위해 register slice가 추가가 되고 이로 인해, latency는 증가하지만, throughput를 증가시키기 위한 protocol이라고 볼 수 있을 것 같습니다.

Outstanding을 통해 다음에 준비가 되어야할 data가 무엇인지 미리 미리 요청할 수 있고, 대응할 수 있게 됩니다.

 

 

이 세 가지 버스 프로토콜은 서로 다른 장치와 시나리오에 맞게 최적화되어 있습니다. 따라서, 시스템 디자인 시에는 해당 시스템의 요구 사항과 기능을 충족시킬 수 있는 가장 적절한 프로토콜을 선택해야 합니다.

+ Recent posts