본문 바로가기
Digital Design/SoC

[SoC] DMAC LRG Arbitration (ARM DMAC Reference Manual)

by 스테고사우르스 2023. 4. 24.

※ 이번 게시글은 ARM의 DMAC Reference Manual을 참고하여 작성하였습니다.

 

안녕하세요!

오늘은 DMAC에 사용되는 Arbiter에 대해 알아보겠습니다.

Arbiter에는 여러가지 종류가 있는데요,

이번엔 ARM에서 제공한 LRG 알고리즘에 대해 학습해 보겠습니다.

 

Arbiter의 필요성과 Timing Diagram은 AHB 게시글 맨 밑 부분에 설명되어 있습니다.

AHB: https://metastable.tistory.com/40

 

[AMBA] AHB (Advanced High-Performance Bus)

이번에 다룰 주제는 AMBA 2.0의 AHB (Advanced High-Performance Bus) 입니다. ARM이 제공한 Datasheet를 이용해 설명하도록 하겠습니다. 이름처럼 APB보다는 Performance가 뛰어난 Bus Protocol입니다. APB와 겹치는 부분

metastable.tistory.com

 


LRG Arbitration

LRG는 Least-Recently Granted로 가장 오래 전에 승인된 channel을 먼저 승인해주는 알고리즘입니다.

캐시의 LRU와 비슷하다고 보시면 됩니다.

 

먼저 Datasheet 부터 보겠습니다.

 

Arbitration에 관한 글인데 AHB에서 다뤄보았기 때문에 넘어가겠습니다.

 

Arbiter는 두 layers로 나뉘어 있습니다.

 

첫 번째 층은 Priority-based arbitration 입니다.

서로 다른 우선 순위를 가진 채널 사이에서 적용됩니다.

 

두 번째 층은 Least-Recently Granted 기반의 Round-Robin arbitration 입니다.

같은 우선 순위를 가진 채널 사이에서 적용됩니다.

 

더 자세히 알아보겠습니다.

Fixed Arbitration의 경우 서로 다른 우선 순위를 가진 채널 사이에서 적용된다고 했었죠?

만약 M1 > M2 > M3 > M4 순서로 우선 순위가 부여되었다고 가정하겠습니다.

M1과 M3에서 동시에 request가 날아오면 M1을 먼저 처리하겠다는 뜻입니다.

그런데 이때 M2의 req가 전송되면 M1 처리 이후에 M2를 처리하게 됩니다.

M3가 기다리고 있었는데도 말이죠.

 

이런 방식은 꼭 먼저 처리해야 하는 채널이 있는 경우 유리하게 작용할 것입니다.

그리고 기본적으로 설계가 편하다는 장점이 있습니다.

하지만 낮은 우선순위의 채널은 계속 기다리게 될 수도 있다는 단점이 있습니다.

 

Round-Robin Arbitration의 경우 시간 순서대로 처리하는 알고리즘입니다.

M1, M3, M4, M2 순서대로 들어오면

M1, M3, M4, M2 순서대로 처리합니다.

 

다른 예시로 알아볼게요.

과거에 M1, M3, M4, M2 순서대로 승인되었다는 기록이 있다고 가정하겠습니다.

이때 M3, M2가 동시에 들어오면, 더 오래전에 승인되었던 M3를 먼저 승인합니다.

 

이 두가지를 합친 것이 ARM에서 제시한 LRG Arbitration입니다.

우선 순위가 다르다면 더 높은 순위의 채널부터 처리하되,

우선 순위가 같다면 더 오래전에 grant한 채널에게 먼저 우선권을 부여하는 방식입니다.

 

 

마지막으로 State Diagram을 보며 정리해보겠습니다.

  1. 다른 Request가 있다면?
    No: GRANT
    Yes: Fixed Priority Scheme으로

  2. QoS가 다른 채널들보다 높은가?
    Yes: GRANT
    No: 아래로

  3. QoS가 다른 채널들보다 낮은가?
    Yes: Wait
    No: Rount Robin LRG Scheme으로

  4. LRG 대기열의 첫번째 채널인가?
    Yes: 대기열 가장 마지막에 기록한 후 GRANT
    No: Wait

 


 

댓글