SoC 성능의 핵심, Outstanding Transaction의 원리와 설계 전략

🔬 SoC Transaction의 'Outstanding' 개념 완전 정복

반도체 설계의 핵심 성능 지표, AMBA AXI 프로토콜 기반 심층 분석

💡 현대 SoC 설계에서 Outstanding Transaction은 시스템 성능을 좌우하는 결정적 요소입니다. CPU와 메모리 사이의 물리적 지연을 논리적 병렬성으로 극복하는 이 기법은, 스마트폰부터 데이터센터 칩까지 모든 고성능 반도체의 핵심 설계 철학입니다.

📌 Outstanding Transaction이란?

SoC 환경에서 'Outstanding'이란 마스터(Master)가 이전 트랜잭션의 응답을 받기 전에 다음 트랜잭션을 연속으로 발행할 수 있는 능력을 의미합니다.

전통적인 버스 프로토콜(초기 AHB 등)은 하나의 요청을 보낸 뒤 결과가 올 때까지 대기하는 Blocking 방식이었습니다. 이는 마치 편의점에서 한 명이 계산을 끝낼 때까지 다음 손님이 물건을 올려놓지도 못하는 것과 같은 비효율적 구조였죠.

반면 Outstanding을 지원하는 프로토콜은 통신 채널을 파이프라인(Pipeline)화하여 대기 시간을 최소화하고, 대역폭 활용도를 극대화합니다. 🚀

🧩 핵심 용어 정리

용어 설명
Latency 요청 발생부터 완료까지의 시간. Outstanding은 이 지연을 '숨기는(Masking)' 역할
Throughput 단위 시간당 처리 트랜잭션 양. Outstanding으로 비약적 향상 가능
ID Tagging 여러 트랜잭션을 동시 처리할 때 각 응답의 대응 관계를 식별하는 고유 번호
AMBA AXI Arm이 설계한 업계 표준 프로토콜. Outstanding 구현의 대표 사례

⚡ 왜 Outstanding이 필요한가? — 성능 비교

현대 SoC에서 CPU와 메모리 컨트롤러 사이의 거리는 물리적으로 상당하며, DDR 메모리 자체의 지연 시간은 수백 사이클에 달합니다. Outstanding이 없으면 마스터는 데이터가 올 때까지 버스를 점유한 채 아무것도 하지 못합니다.

🐢 Non-Outstanding 방식 (직렬 처리)

Address A → ⏳ Wait → Data A → Address B → ⏳ Wait → Data B

🚀 Outstanding 방식 (파이프라인 처리)

Address A → Address B → Address C → ⚙️ → Data A → Data B → Data C

이 차이는 단순히 이론적인 것이 아닙니다. 실제 SoC 설계에서 Outstanding 수를 1에서 4로 늘리면 메모리 대역폭 활용률이 2~3배 이상 향상되는 경우가 일반적입니다. 특히 GPU나 DMA 엔진처럼 대량 데이터 전송이 필요한 마스터에서는 그 효과가 더욱 극적입니다.

🎯 Outstanding Address의 핵심 원리

이 모든 것은 주소 채널과 데이터 채널의 분리를 통해 가능합니다. 마스터는 슬레이브가 첫 번째 데이터를 준비하는 동안 두 번째, 세 번째 주소를 미리 전달합니다. 슬레이브는 이를 통해 내부적으로 Pre-fetching, Bank Interleaving 등의 최적화를 수행할 수 있게 됩니다. 마치 레스토랑에서 주방이 첫 번째 요리를 조리하는 동안 웨이터가 다음 테이블의 주문을 미리 전달하는 것과 같은 원리입니다. 🍽️

🔄 AMBA AXI 프로토콜 — 데이터 흐름 상세 분석

📡 5개 독립 채널 구조

AXI 프로토콜의 가장 혁신적인 설계 포인트는 5개 채널의 완전한 독립성입니다. 각 채널이 별도의 핸드셰이크(VALID/READY)로 동작하기 때문에 병렬 처리가 자연스럽게 이루어집니다.

채널 이름 방향 역할
AW Write Address Master → Slave 쓰기 대상 주소 전달
W Write Data Master → Slave 실제 쓰기 데이터 전송
B Write Response Slave → Master 쓰기 완료 응답
AR Read Address Master → Slave 읽기 대상 주소 전달
R Read Data Slave → Master 읽기 데이터 + 응답 전송

📖 Read Transaction 전송 순서

① Address Issuance (마스터 측)

마스터는 ARVALIDARREADY 핸드셰이크를 통해 읽기 주소(ARADDR)를 슬레이브에 전달합니다. 핵심은 첫 번째 주소에 대한 응답을 기다리지 않고, 슬레이브의 Queue Depth가 허용하는 한 연속해서 다음 주소들을 발행한다는 점입니다. 각 주소에는 고유한 ARID가 부여됩니다.

② Request Queuing (슬레이브 측)

슬레이브는 수신된 주소들을 내부 요청 큐(Request Queue)에 저장합니다. 이 큐의 깊이가 곧 해당 슬레이브가 지원하는 최대 Outstanding 수를 결정합니다.

③ Data Preparation (슬레이브 측)

슬레이브(예: 메모리 컨트롤러)는 요청받은 데이터를 순차적 혹은 내부 효율에 따라 비순차적으로 준비합니다. DDR 메모리의 경우 Bank/Row 상태에 따라 접근 시간이 달라지므로, 내부 스케줄링을 통해 최적의 순서로 데이터를 fetch합니다.

④ Data Transfer (슬레이브 → 마스터)

데이터 준비가 완료되면 슬레이브는 RVALIDRREADY를 통해 데이터를 전송합니다. 각 데이터 패킷에는 요청 시 부여된 RID가 포함되어, 마스터가 어떤 주소에 대한 응답인지 정확히 식별할 수 있습니다.

✏️ Write Transaction 흐름

쓰기 작업에서는 주소(AW 채널)를 미리 여러 개 보낸 뒤, 데이터(W 채널)를 연속해서 밀어 넣습니다. 슬레이브는 모든 데이터 수신이 완료되면 B 채널을 통해 쓰기 완료 응답을 보냅니다. 여기서 Outstanding은 마스터가 B 응답을 받기 전에 다음 AW와 W를 보낼 수 있음을 의미합니다. AXI4에서는 W 채널에 WID가 제거되어 Write Data는 반드시 Address 순서와 동일하게 전송되어야 하는 점도 주목할 만합니다.

🛡️ 슬레이브의 반응 및 처리 로직

Outstanding 요청을 받는 슬레이브는 단순한 수신을 넘어 복잡한 관리 로직을 수행해야 합니다. 이 부분이 SoC 설계에서 가장 도전적인 영역 중 하나입니다.

🚦 버퍼 관리 및 역압(Back-pressure)

슬레이브는 자신이 한꺼번에 처리할 수 있는 최대 Outstanding 개수를 정의합니다. 내부 큐가 가득 차면, 슬레이브는 READY 신호(ARREADY/AWREADY)를 Low로 떨어뜨려 마스터의 추가 요청을 일시적으로 차단합니다. 이것이 바로 역압(Back-pressure) 메커니즘이며, 데이터 손실 없이 흐름을 조절하는 핵심 안전장치입니다. 마치 고속도로의 진입 램프 신호등처럼, 본선이 정체되면 진입을 일시 중지시키는 것과 같습니다. 🚗

🔀 Out-of-Order Completion (비순차 완료)

Outstanding의 가장 강력한 기능 중 하나는 비순차 처리입니다. 슬레이브는 요청받은 순서와 상관없이 먼저 준비된 데이터를 먼저 보낼 수 있습니다.

⚠️ 단, 동일한 ID를 가진 트랜잭션끼리는 순서가 반드시 보장되어야 합니다.

실전 예시: 마스터가 주소 1(느린 장치, ID=0), 주소 2(빠른 장치, ID=1) 순으로 요청했을 때, 슬레이브는 주소 2의 데이터를 먼저 반환할 수 있습니다. ID가 다르기 때문입니다. 이는 전체 시스템의 대기 시간을 획기적으로 줄여줍니다.

🔃 재정렬 버퍼(Reorder Buffer)

마스터 측(혹은 인터커넥트)에는 비순차적으로 도착한 응답들을 다시 원래 소프트웨어가 의도한 순서대로 정렬하여 CPU 등에 전달하는 로직이 포함됩니다. 이 재정렬 버퍼는 ID별로 응답을 관리하며, 특히 캐시 라인 필 요청처럼 순서가 중요한 트랜잭션에서 핵심적인 역할을 합니다. Arm의 최신 CCI/CMN 인터커넥트에서는 이 기능이 더욱 정교하게 구현되어 있습니다.

⚖️ 설계 시 핵심 고려사항

🔸 Area vs. Performance 트레이드오프

Outstanding 개수를 늘리면 성능은 향상되지만, 슬레이브와 인터커넥트의 큐/버퍼 사이즈가 커져 하드웨어 면적(Area)과 소모 전력이 증가합니다. 모바일 AP에서는 전력 효율이 중요하므로 보통 4~16개 수준으로 제한하고, 서버용 SoC에서는 32개 이상을 지원하기도 합니다. 최적의 Outstanding 수는 타깃 워크로드 프로파일링을 통해 결정해야 합니다.

🔸 Dependency 관리

여러 Outstanding 요청 사이에 데이터 의존성(Dependency)이 존재할 수 있습니다. 예를 들어, 같은 주소에 대한 Write 후 Read(RAW hazard)가 발생하면, 하드웨어 수준에서 이를 감지하고 올바른 순서를 보장하는 Hazard Check 로직이 필수적입니다. 이를 잘못 처리하면 데이터 정합성이 깨지는 치명적 버그로 이어집니다.

🔸 NoC로의 진화

최근의 NoC(Network-on-Chip) 구조에서는 Outstanding 개념이 더욱 확장되어 패킷 기반의 멀티 홉 통신으로 진화하고 있습니다. Arm의 CMN-700, Synopsys의 FlexNoC 등이 대표적이며, 여기서는 Outstanding 관리가 단일 버스가 아닌 네트워크 토폴로지 수준에서 이루어집니다. Chiplet 기반의 UCIe 인터페이스에서도 유사한 Outstanding 메커니즘이 적용되고 있어, 이 개념의 중요성은 앞으로 더욱 커질 전망입니다.

🧠 핵심 인사이트

Outstanding Transaction은 단순히 '빨리 보내는 것'이 아닙니다. 이는 시스템의 물리적 지연(Latency)을 논리적 병렬성(Parallelism)으로 극복하는 고도의 설계 기법입니다. 주소-데이터 채널 분리, ID 기반 태깅, 큐잉 시스템이라는 세 가지 축이 유기적으로 결합되어 현대 SoC의 성능 한계를 끌어올리고 있습니다.

참고: Arm AMBA AXI and ACE Protocol Specification (IHI0022E) · Digital Design and Computer Architecture, ARM Edition

댓글

이 블로그의 인기 게시물

📚 SDC 마스터 클래스 시리즈 | Chapter 1

📚 SDC 마스터 클래스 시리즈 | Chapter 2

📚 SDC 마스터 클래스 시리즈 | Chapter 3