AMBA (Advanced Microcontroller Bus Architecture)

What is AMBA, and why use it?

amba-architecture

SoC의 경우 반도체 칩이 여러 기능 블록(functional block)들로 구성되어 있습니다. 위 그림에서는 두 개의 CPU(Cortex-A), 메모리 컨트롤러(DMC-400), GPU, DMA, 인터커넥트(NIC-400) 등의 블록으로 구성되어 있네요.

그런데 여러 블록들이 같이 일하기 위해서는 당연히 서로 연결되어 있어야 합니다. 이때, 연결에 대한 방식이 표준으로 정의되어 있지 않으면 곤란해요. 왜냐고요? 보통 하나의 SoC를 만들기 위해서는 여러 회사들로부터 반도체 IP를 구매해서 사용합니다. CPU는 A 회사에서 사 오고, GPU는 B 회사에서 가져오는 방식이죠. 그런데 각각 IP를 사 왔는데 서로 연결하는 방식이 다르면 당황스럽겠죠? 그래서 표준이 있으면 각 회사들이 표준에 맞춰 반도체 IP를 설계하고, 나중에 합칠 때는 이미 표준에 맞게 설계되어 있으니 그냥 연결하면 돼서 간편합니다.

문제는 누가 표준을 만들 것이냐 인데, 마침 반도체 IP 계의 공룡 있습니다. ARM이죠. ARM에서 표준을 만들어버리니 대부분의 회사들이 군말 없이 받아들였습니다. 이제는 꼭 ARM core를 사용하지 않더라도 AMBA는 반도체 업계에서 표준입니다.

요약하자면, ARM에서 여러 블록들을 연결하고 관리하기 위해 만든 표준이 AMBA(Advanced Microcontroller Bus Architecture)입니다.

AMBA에는 아래와 같이 여러 종류의 프로토콜(APB, AHB, AXI,..)이 있습니다. 점점 칩의 성능이 좋아지다 보니 더 빠르고 다양한 기능을 가진 통신 프로토콜이 필요해졌고, 이에 맞춰 다양한 방식들이 등장한 것이죠. 칩의 성능과 사양에 따라 적절한 프로토콜을 선택해서 사용합니다.

amba-specifications

Leave a comment