1. 먼저 구조를 봅니다
DMA가 메모리에서 데이터를 읽어 가져오는 경로를 생각해 봅시다. 데이터 버스가 넓고 빨라도, 요청을 보내 놓고 응답만 기다리는 시간이 길면 대역폭을 다 쓰지 못합니다.
읽기 데이터는 반대 방향으로 돌아옵니다. 이 사례에서는 DMA·브리지·대상이 모두 허용하는 실효 outstanding 수를 사용합니다. 어느 한 구간이 요청을 1개로 제한하면 다른 블록만 개선해도 효과가 없습니다.
Outstanding이란?
발행했지만 아직 완료되지 않은 요청의 수입니다. 요청 하나의 응답을 받기 전에 다음 독립 요청을 보낼 수 있다면 응답을 기다리는 시간을 겹칠 수 있습니다. AXI가 기능을 제공해도 실제 master·bridge·slave 구현과 순서 제약이 얼마를 허용하는지 따로 확인해야 합니다.
2. 가상 설계 사양
- 데이터 버스: 64bit × 200MHz, 이상적으로 매 사이클 1 beat → 피크 1,600MB/s.
- 요청 하나의 payload: 64byte. 요청부터 첫 데이터 도착까지 200ns.
- 64byte 전송 시간: 64÷1,600MB/s = 40ns.
- 기본 구조: 요청이 완료되어야 다음 요청을 발행할 수 있음.
3. 요청을 하나씩 보내면
요청 주기 = 200ns + 40ns = 240ns
처리량 = 64byte ÷ 240ns ≈ 267MB/s
피크 대비 이용률 ≈ 16.7%
이 조건에서는 단순히 버스 폭을 2배로 늘려도 기다리는 200ns가 남습니다. 피크 대역폭 부족이 아니라 비행 중인 데이터량 부족이 핵심 가설입니다.
4. 요청을 겹치면
단순 모델 상한 = min(버스 피크, N × payload ÷ (지연 + 전송 시간))
기본 조건에서 N=4라면 약 1,067MB/s, N=6이면 모델상 피크 1,600MB/s에 도달합니다. 실제로는 요청 수가 늘며 지연도 늘 수 있으므로 6개면 실제 하드웨어가 포화된다고 단정할 수 없습니다.
직접 조건을 바꿔보기
5. HW와 SW에 각각 무엇을 제안할까?
| 대안 | 기대 효과 | 확인할 비용·제약 |
|---|---|---|
| DMA·브리지의 요청 슬롯 확대 | 응답 지연을 겹칠 여지 | 버퍼·태그·제어 로직, 대상 수용량, 순서 보장 |
| payload / burst 확대 | 요청당 오버헤드 분산 | 정렬·경계·지원 길이, 다른 master의 지연 |
| 여러 descriptor를 미리 준비 | SW가 요청 공급을 끊지 않음 | DMA 지원, 버퍼 소유권, 완료 처리 |
| 전송 batch와 double buffering | 준비·전송·처리 일부를 겹침 | 겹칠 수 있는 단계 필요, RAM·캐시 관리 비용 |
| 폭·클록만 확대 | 실제 전송 구간 단축 | 지연이 지배적이면 효과 작음, 타이밍·전력 부담 |
6. 검증할 지표와 실험
- 기준 측정: 충분히 긴 전송의 총 byte/총 시간. 초기 준비 시간을 포함한 값과 steady-state 값을 구분합니다.
- 경로 확인: DMA·브리지·컨트롤러의 실제 outstanding 제한과 burst 분할 여부를 읽습니다.
- 한 변수씩: payload를 고정하고 요청 수를 1→2→4로 비교합니다. 다음에는 요청 수를 고정하고 payload를 바꿉니다.
- 원인 계측: 요청 수, 첫 응답 지연, 응답 채널 이용률, stall, FIFO 점유율을 확인합니다. AXI VALID/READY가 관측 가능하다면 채널별 handshake와 대기 구간을 구분합니다.
- 경합 재현: 단독 실행뿐 아니라 다른 master가 메모리를 사용할 때 처리량과 최악 지연을 확인합니다.
확인 문제
요청 수는 1개 그대로 두고 버스 폭만 128bit로 늘리면?
피크 3,200MB/s, 전송시간 20ns. 64byte/(200+20)ns ≈ 291MB/s입니다. 폭은 2배지만 처리량은 약 9.1% 개선입니다. 지연 고정이라는 모델 가정하의 계산입니다.
입력 장치가 최대 50MB/s만 공급한다면 요청 슬롯 확대가 전체 속도를 올릴까요?
기존 경로가 이미 50MB/s를 수용하고 있다면 전체 전송률을 그 이상으로 만들 수 없습니다. 전체 경로의 공급 한계와 병목을 먼저 봐야 합니다.
설계 리뷰 한 문장
“피크 대역폭은 충분하지만 요청 한 개의 응답을 기다리는 구조라 유효 처리량이 제한될 가능성이 있습니다. 먼저 실효 요청 수와 응답 지연을 측정하고, DMA·브리지·대상이 함께 지원하는 범위에서 동시 요청과 burst 구성을 비교하겠습니다.”
참고와 범위
가상 수치로 만든 교육용 사례입니다. 실제 제품의 개선 실적이 아닙니다. 프로토콜은 Arm AMBA 공식 안내에서 해당 AXI 규격으로 연결해 확인하고, 실제 outstanding 제한·지원 burst는 사용하는 IP의 TRM을 확인하세요. 위 계산은 큐잉·경합을 생략한 단순 처리량 상한입니다.