이번 포스트를 시작으로 ARM사에서 제공하는 Bus Protocol 인 AMBA Bus Protocol에 대해서 포스팅을 진행할 예정이에요.

이번 포스트는 Bus Protocol에 대한 첫 포스트이니 배경 설명을 좀 해보고 넘어가봅시다. 

 

먼저 Bus Protocol이란 무엇인지부터 살펴볼게요.

- Bus

Bus

Bus는 여러 Block들이 상호 Data를 전송하기 위해 이들을 전기적으로 연결한 공유 신호선이에요.

여러 Block들을 정류장이라고 생각하고 Bus를 말그대로 버스라고 생각해봅시다.

버스가 여러 정류장(IP)을 들려서 데이터를 실고 다른 정류장(IP)으로 옮기는 식이라고 설명하면 되려나요..

암튼 간단히 말해 Bus는 각 IP들을 이어주는 역할을 하는 겁니다.

 

- Bus의 장점

저는 Bus에 대해 배우기 앞서 사실 이런 생각을 했습니다.

그냥 선(wire)으로 각 IP Block들을 연결하면 되는건데 따로 Bus를 구성하는 이유는 뭘까?

물론 장점이 있으니 Bus system이 사용되고 있겠죠.

첫번째 장점은 ① 인터페이스의 간소화입니다.

그냥 IP Block들을 wire로 point-to-point방식으로 잇게되면 굉장히 선이 많고 복잡하겠죠.

Bus를 통해서 이런 복잡한 구조를 피할 수가 있습니다.

두번째로는 ② 확장성에도 장점이 있습니다. 

만약 Bus를 사용하지 않는다면 새로운 IP Block을 추가할때 다른 IP Block들에 선을 일일이 연결시켜줘야겠죠.

하지만 Bus Interface가 존재한다면 새로운 IP Block을 Bus에만 연결하면 되니 확장할 때 굉장히 심플할껍니다.

 

- 프로토콜(Protocol)

Bus의 정의와 장점은 살펴봤고.. 그러면 프로토콜은 무엇일까요?

프로토콜(Protocol)은 "약속"이라고 할 수 있습니다.

앞서 Bus라는 연결통로는 마련했으니 그 통로를 사용하는데에 있어서 규칙을 정해놓은 것이 프로토콜이라고 할 수 있죠.

 

즉, 앞으로 공부하고 포스팅할 AMBA Bus는 ARM에서 개발한 Bus를 어떻게 연결하고, 이 Bus를 통해 IP끼리 서로 어떻게 통신할 것인지에 대한 규칙을 배운다고 생각할 수 있겠네요!

 

- Advanced Microcontroller Bus Architecture (AMBA)

AMBA

위 사진은 ARM사에서 제공하는 BUS의 종류들입니다.

이 중에서 앞으로 제가 포스팅할 Bus 아키텍처는 아마 APB, AHB, AXI가 될 것 같은데요..

위의 Bus 모두 데이터가 이동하는 통로인 건 동일한데 왜 이렇게 여러종류의 Bus가 존재할까요? 

 

제가 포스팅할 APB, AHB, AXI에 대해 소개할 겸 여러 종류의 Bus를 나눠져 있는 이유에 대해 살펴봅시다.

결론부터 말씀드리면 Bus 여러 종류로 분리되어있는 것은 Bus가 지원할 수 있는 Performance때문입니다.

상황을 가정해봅시다.

 

먼저, APB, AHB, AXI Bus를 Performance로 비교해보면 AXI > AHB > APB라고 할 수 있어요.

그리고 Bus에 연결되는 IP들 중에서도 어떤 데이터를 빠른 속도로 처리할 수 있는 녀석(예를 들어, CPU)과 느린 속도로 처리할 수 있는 녀석(예를 들어, DRAM)이 존재하겠죠. 

 

여기서 빠른 CPU와 느린 DRAM을 모두 Performance가 좋은 AHB에 연결했다고 가정합시다.

AHB Bus는 Performance가 좋다고 했으니 데이터를 빠르게 옮길 수가 있겠죠.
이렇게 Bus가 빠르게 데이터를 전달해주면 CPU는 빠른 처리가 가능하기에 그 데이터를 모두 받아 처리할 능력이 있습니다.

 

하지만 DRAM은 어떨까요?

Bus가 데이터를 빨리빨리 줘봤자 DRAM의 처리속도가 느리니 이 빠른 데이터를 받아먹을 수가 없습니다.

그러면 Bus는 DRAM이 어떤 업무를 처리할 동안 데이터 전송을 기다려줘야 합니다.

 

즉, 빠른 속도로 데이터를 전달할 수 있는 Bus인데 느린 DRAM 때문에 기다려야하고 이 Bus에 연결되어있는 CPU 또한 빠른 처리를 할 수 있음에도 Bus가 대기중이니 기다려야 하겠죠.

결론은 Performance가 좋은 Bus에 IP를 몽땅 묶는게 무조건 좋은 것이 아니란겁니다. 

 

Bus의 이용

따라서 위와 같이 빠른 동작이 필요없는 것들(Keypad, Timer ..)은 APB와 같은 저속 Bus에 묶고

빠른 동작이 필요한 것들(Processor, on-chip RAM ..)은 AHB와 같은 고속 Bus에 묶어서

고속의 IP Block들의 효율을 살리고 전체 시스템의 속도를 향상시킬 수가 있습니다.

 

참고로 당연하겠지만 높은 Performance를 자랑하는 Bus일수록 Signal의 개수도 많고 복잡합니다. :)

 

AMBA Bus에 대한 소개는 여기까지 하고 다음 포스팅에서 APB Bus부터 공부해보겠습니다!

APB Bus에서 만나요~  

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기