본문 바로가기
Digital Design/SoC

[AMBA] AXI (Advanced eXtensible Interface)

by 스테고사우르스 2023. 2. 8.

오늘은 AMBA protocol 중 3.0 버젼의 AXI에 대해 알아보려고 합니다.

ARM이 제공한 AMBA3.0 datasheet를 보면서 설명드리겠습니다.

 

다른 AMBA protocol은 이전 게시글을 참고해주세요.

APB: https://metastable.tistory.com/39

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

 

시작하기에 앞서 AXI (Advanced eXtensible Interface)는 확장 가능한 인터페이스를 뜻합니다.

 


About AXI

AMBA AXI Protocol은 high-performance, high-frequency를 지원합니다.

 

AXI을 사용하면 어떤 점이 좋을까요?

High-bandwidth 그리고 Low-latency를 가진 design에 사용할 때 좋습니다.

메모리 컨트롤러에 사용하기에 좋고

무엇보다 유연하다는 장점이 있습니다.

 

어떤 점에서 유연하다고 할 수 있는걸까요?

AXI는 이름처럼 interface입니다.

AXI는 interface standard만 (빨간 네모) 제공하고 나머지는 설계자에게 맡깁니다.

이 때문에 IP 간 상호작용을 유연하게 정의할 수 있는 것 입니다.

 

 

다음으로 AXI의 특징을 알아볼게요.

우선 AHB처럼 Addr, Data phase가 분리되어 있고 burst를 지원합니다.

한가지 다른점은 burst 전송을 할 때 첫번째 address만 전송하는데,

이 부분은 아래에서 자세하게 설명드리겠습니다.

 

AXI의 가장 큰 특징은 R/W 채널을 분리해 놓았다는 점인데,

이 점이 AXI의 high-performance와 관련 있습니다.

 

또한 Multiple outstanding, out of order transaction이 가능합니다.

 

개요는 여기까지만 설명하고 하나씩 자세하게 알아보겠습니다.

 


AXI Architecture

AXI는 5개의 Channel로 나뉘어져 있습니다.

각각의 channel은 독립적으로 운영되어 성능을 높일 수 있습니다.

 

 

먼저 Read부터 보겠습니다.

Address와 Control 신호로 읽을 부분의 주소를 전송합니다.

이후에 Slave에서 읽은 Data를 Master에게 전송하는 구조입니다.

Read data channel의 뒷 부분에는 잘 읽었는지 확인하는 response 정보도 담겨있습니다.

 

그림을 보면 보낸 Address 정보는 한 개인데 4개의 정보를 읽어왔습니다.

이유는 address channel의 Control 부분에 읽어올 주소의 길이 정보가 담겨있기 때문입니다.

 

AHB나 APB처럼 하나하나 다 보내지 않아도,

control에 있는 길이 정보를 보고 알아서 찾아오기 때문에 보다 효율적으로 동작할 수 있습니다.

 

 

다음은 Write입니다.

Read와 마찬가지로 Address와 Control을 보내고 Data를 전송합니다.

이후 Slave에서 잘 쓰였는지 Write response channel을 통해 응답합니다.

마찬가지로 하나의 주소만 보내도 control 신호를 보고 요청한만큼 데이터를 전송합니다.

 

 

위의 방식들은 AXI의 기본 전송 메커니즘입니다.

각각의 channel들에는 VALID와 READY가 있어서,

두 신호가 동시에 켜지면 handshake를 하여 전송이 가능해집니다.

또한 R, W channel에는 LAST 신호가 있어서 마지막 데이터가 전송되었음을 알 수 있습니다.

 

아래 Signal을 보면서 세부적으로 확인해보겠습니다.

 


AXI Signals

Write Address Channel
Write Data Channel
Write Response Channel
Read Address Channel
Read Data Channel

신호가 엄청 많네요.

BURST 관련된 부분은 AHB와 같아서 설명이 필요하면 AHB 게시글을 보시는게 좋습니다.

 

AHB와 다른 점은 ID가 존재하는 것인데요

ID로 전송을 구분지어서 multiple outstanding request, out of order를 사용할 수 있습니다.

 

또 추가된 부분이 있다면 VALID와 READY입니다.

각각의 채널에 VALID와 READY가 있어서 handshake를 통한 전송을 합니다.

 

그럼 Handshake가 뭘까요?

 


Handshake Process

전송은 VALID와 READY가 모두 HIGH일 때만 이루어집니다.

 

Timing diagram을 보면 T2에서 VALID와 READY가 모두 HIGH입니다.

이 구간에서 handshake가 되어 전송을 할 수 있습니다.

 


Burst Type

Burst type은 AHB와 마찬가지로

  • FIXED
  • INCR
  • WRAP

으로 나뉘어져 있습니다.

 

이 부분은 AHB 게시글을 참고해주세요.

 


Response

Read, Write가 잘 되었으면 잘 되었다고 알려주어야 합니다.

Write의 경우 Write Response (B) 채널의 BRESP[1:0]을 통해 전송하고,

Read의 경우 Read Data (R) 채널의 RRESP[1:0]을 통해 전송합니다.

 

 


Multiple Transaction

AXI의 가장 큰 특징은 multiple transation이 가능하다는 것 입니다.

각각의 channel에는 ID signal이 있었던 것 기억하시나요?

먼저 다른 Master끼리는 순서 구분이 없습니다.

같은 Master에서도 다른 ID를 가진 transaction의 경우 순서 구분이 없습니다.

따라서 느린 slave가 앞에 있으면 빠른 slave 먼저 전송을 진행할 수 있게 됩니다.

이런 점이 AXI의 high-performance의 기반이 되는 것 입니다.

 

물론 AHB로 SPLIT이 가능하지만 out-of-order에 비하면 현저히 느립니다.

 

그림으로 보면 이해하기 쉽습니다.

현재 Address 채널에서 A11, A21, A31을 전송하였습니다.

기존 bus protocol의 경우 A11부터 처리하거나 응답이 느리면 SPLIT을 해야 하는데요,

AXI의 경우 더 빠른 slave가 먼저 전송을 할 수 있습니다.

위에서는 D21을 D11보다 먼저 처리한 것을 확인할 수 있습니다.

 


Timing Diagram

이제 timing diagram을 보면서 정리를 해보겠습니다.

 

Write transfer에 대한 timing diagram입니다.

먼저 채널을 AW, W, B 각각 독립적을 나뉘어져 있습니다.

각 채널은 VALID와 READY 신호의 handshake (빨간 네모)에 맞춰 신호를 전송합니다.

 

1. Address A 전송. 여기에는 control 신호 안에 전송 길이 정보가 포함되어 있습니다.

2. Data burst 전송. 마지막 data에 LAST 신호도 같이 전송

3. Slave에서 response 신호 전송. 위의 경우 OKAY

 

 

READ transfer 역시 같은 방식입니다.

한 가지 다른 점은 Read Data Channel에 RRESP[1:0]이 포함되어있다는 것 입니다.

 


지금까지 AMBA APB, AHB, AXI에 대해 알아보았습니다.

반도체가 발전하면서 on chip interconnect가 중요해진 만큼

AMBA Bus Protocol을 학습하는 것이 중요해진 것 같습니다.

 

앞으로 AMBA Protocol을 verilog로 차근차근 설계해보려고 합니다.

댓글