콘텐츠로 바로가기

Bus Protocols & NUMA

여러 칩과 코어가 소통하는 데이터 고속도로인 버스의 규약과, 프로세서 위치에 따라 메모리 접근 속도가 달라지는 NUMA 아키텍처의 물리적 구조를 다루는 학습 노드입니다.

Article
M

Me

hyunyoun's Blog

computer-architecture-embedded-systemscomputer-architectureembedded-systemsmemory-systemsstorage-physicsbus-protocolsnumalearning9 min read

1. Overview

버스 프로토콜과 NUMA 아키텍처(Bus Protocols & NUMA, BPN)는 단일 칩 내부의 미시적 배선을 넘어, 수십 개의 CPU 소켓과 수백 GB의 메모리가 마더보드 위에서 데이터를 교환하는 '서버 스케일 하드웨어 통신망'의 기반 구조입니다.

학습자는 CPU, 메모리, 그래픽 카드가 한정된 구리선(Bus)을 공유할 때 필요한 시스템 버스 중재(Arbitration) 역학을 살펴보고, 단일 버스 구조의 병목을 완화하기 위해 등장한 **점대점(Point-to-Point) 패킷 라우팅망(QPI/HyperTransport)**을 분석합니다. 나아가 CPU마다 로컬 메모리가 있고 원격 메모리에 접근할 때 추가 지연(Latency)이 발생하는 **NUMA(Non-Uniform Memory Access)**의 물리적 지형도를 이해하여, 초고성능 분산 데이터베이스(Redis, SAP HANA) 아키텍처를 튜닝할 수 있는 역량을 확보합니다.

2. Scope & Boundaries

In-Scope

  • 버스 통신 역학 (Bus Mechanics): 시스템 버스(주소/데이터/제어 버스), 동기(Synchronous) vs 비동기(Asynchronous) 버스 타이밍, 버스 마스터(Bus Master)와 중재(Arbitration).
  • 점대점 연결망 (Point-to-Point Interconnects): 인텔 QPI/UPI, AMD HyperTransport, 데이지 체인(Daisy Chain), 크로스바 스위치(Crossbar Switch) 토폴로지.
  • NUMA 아키텍처 (NUMA Physics): 로컬 메모리(Local Memory)와 원격 메모리(Remote Memory) 접근 지연(Latency) 차이, NUMA 노드(Node), 상호 연결(Interconnect) 병목.
  • 운영체제의 NUMA 인지 (NUMA-Awareness): First-touch 메모리 할당 정책, 스레드 친화성(Thread Affinity, CPU Pinning).

Out-of-Scope

  • PCIe와 I/O 디바이스 제어 상세: DMA 컨트롤러나 그래픽 카드 버스 매핑의 극한 상세 구현 \rightarrow 02-05. Hardware-Software Interface Physics 영역.
  • 분산 시스템의 네트워크 맵핑: 여러 대의 물리적 서버를 이더넷으로 엮는 클러스터링 토폴로지 \rightarrow 07-01. Distributed System Mechanics 영역.

Boundaries

  • BPN vs. Cache Coherence (02-02-02): 캐시 일관성(02-02-02)이 "버스를 통해 오가는 메시지 내용(MESI 상태 갱신)"이라는 논리적 규약이라면, BPN은 "수백 핀의 구리선 위에서 전기 신호의 사용권을 어떻게 정하고(Arbitration), 패킷 단위로 어떻게 전달하는지(Interconnect)"를 다루는 인프라 공학입니다.

3. Counterexample

  • UMA 가정에 의한 메모리 병목 (Flat Memory Fallacy): "서버 램이 256GB니까, 스레드 100개가 아무 주소나 같은 속도로 읽겠지"라고 가정하고(UMA 패러다임) 힙(Heap) 메모리를 무작위로 사용하는 상황입니다. 현대 2소켓 서버는 일반적으로 NUMA 구조이므로, CPU 0번이 할당한 배열을 CPU 1번의 스레드가 읽을 때마다 마더보드의 UPI/QPI 링크를 건너는 장거리 통신(Remote Access)이 발생하여 메모리 읽기 레이턴시가 평소의 3~4배로 늘어날 수 있습니다.
  • NUMA를 모르는 스레드 마이그레이션 (Blind Migration Thrashing): NUMA 노드0에 속한 램(RAM) 영역에 거대한 해시맵을 할당해놓고, 커널 스케줄러가 부하 균형을 위해 해당 스레드를 NUMA 노드1의 코어로 옮기는 상황입니다. 스레드는 노드1에서 실행되지만 데이터는 노드0에 남아 있어, 연산할 때마다 인터커넥트 버스(Interconnect Bus)를 지나야 하는 '원격 메모리 지연(Latency)'이 누적됩니다.

4. Prerequisites

  • 디렉토리 기반 일관성 (Recommended): NUMA 환경에서는 스누핑 버스보다 디렉토리 프로토콜을 통해 코어 간 통신을 관리하는 경우가 많으므로, 이를 이해해야 노드 간 트래픽이 왜 발생하는지 설명할 수 있습니다. (02-02-02 CCM)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Bus Anatomy CPU, 메모리, I/O가 하나의 공유 전선을 사용할 때 통신권을 어떻게 배정하는지 중재(Arbitration) 원리를 이해합니다. P1
2 Interconnects (QPI/UPI) 단일 공유 버스 구조의 한계를 넘기 위해 CPU 간 점대점 연결과 패킷 라우팅이 어떻게 사용되는지 살펴봅니다. P5
3 NUMA Physics 램(RAM)을 CPU별로 나누었을 때 로컬 접근과 원격 접근의 지연 차이가 어떻게 발생하는지 분석합니다. Industry
4 NUMA-Aware Softwares 하드웨어의 비대칭 지형도를 OS 커널 레벨에서 인식하여, 데이터가 있는 위치와 스레드 실행 위치를 맞추는(Affinity) 제어 방법을 익힙니다. Industry

6. Learning Topics

Basic

Core Topic 01: 공유 시스템 버스와 중재 역학 (Bus Anatomy & Arbitration)

  • Why to Learn: 모든 하드웨어 부품(CPU, RAM, GPU)이 어떻게 서로를 인식하고 전기 신호를 주고받는지, 마더보드의 공유 통신 채널에서 발생하는 물리적 충돌과 규칙을 이해하기 위함입니다.
  • What to Learn:
    • Concepts: 시스템 버스(주소 버스, 데이터 버스, 제어 버스), 버스 대역폭(Bandwidth)과 레이턴시(Latency).
    • Skills: 버스 중재기(Arbiter), 라운드 로빈(Round Robin) vs 우선순위(Priority) 스케줄링.
    • Tools: 타이밍 다이어그램(동기식 버스).
    • Trade-offs: 구리선(버스) 묶음 하나를 마더보드에 두고 부품 수십 개를 연결할 수 있는 확장성과 단가 절감 효과 vs 누군가 버스를 쓰고 있으면 다른 장치들은 버스가 빌 때까지 대기(Wait)해야 하는 병목 현상.
  • How to Learn:
    • 1단계: CPU가 주소 버스(Address)에 0x100을 내보내고, 제어 버스(Control)에 Read 핀을 올린 뒤 정해진 클럭을 기다리면 데이터 버스(Data)로 메모리 값이 들어오는 트랜잭션(Transaction) 흐름을 살펴봅니다.
    • 2단계: 버스 마스터(Bus Master)가 여러 명일 때, 두 기기가 동시에 "나 버스 쓸래!"(Bus Request) 신호를 보내면 중앙의 중재기(Arbiter) 하드웨어가 우선순위에 따라 하나의 장치에만 허가(Bus Grant) 핀을 주는 교통정리 역학을 분석합니다.
  • Implement: 파이썬으로 Bus 객체를 하나 만들고, 여러 개의 Device 스레드가 동시에 bus.request()를 호출할 때 큐잉(Queueing)과 우선순위(Priority) 기반 락(Lock)을 통해 트랜잭션을 점유하고 해제하는 소프트웨어 버스 중재기 시뮬레이터.

Core Topic 02: 점대점 패킷 라우팅과 인터커넥트 (Point-to-Point Interconnects)

  • Why to Learn: 낡은 공유 버스만으로는 64코어 CPU의 데이터 이동량을 감당하기 어렵다는 점을 이해하고, 칩 간 통신망이 '네트워크 패킷(Packet) 라우팅' 방식으로 진화한 이유를 설명하기 위해서입니다.
  • What to Learn:
    • Concepts: QPI(QuickPath Interconnect), UPI, HyperTransport.
    • Skills: 패킷화(Packetization), 크로스바 스위치(Crossbar Switch), 토폴로지(Ring, Mesh).
    • Tools: 인터커넥트 다이어그램.
    • Trade-offs: NN개의 장치를 연결할 때 N(N1)/2N(N-1)/2 개의 구리선을 직접 1<1로> 배치하는 크로스바 스위치의 높은 대역폭과 낮은 병목 vs CPU 다이(Die) 면적이 핀(Pin)과 배선 공간으로 많이 사용되어 단가가 높아지는 실리콘 공간 비용.
  • How to Learn:
    • 1단계: 마더보드의 통신이 구리선 전압 타이밍 맞추기(버스)에서 벗어나, 헤더(Header)와 페이로드(Payload)를 가진 '이더넷 네트워크 패킷'처럼 캡슐화(Packetized)되어 초고속 직렬(Serial) 차동 신호로 전송되는 흐름을 분석합니다.
    • 2단계: 코어가 64개 있는 칩 내부에 매트릭스(Mesh Topology) 연결망이 깔려 있어, 코어 A가 코어 B로 데이터를 보낼 때 라우터 단계를 거쳐 최단 거리로 스위칭(Routing)하는 칩 내부 경로를 살펴봅니다.
  • Implement: 노드 4개(CPU)가 완전 연결망(Fully Connected)으로 이어진 그래프에서 데이터(문자열 패킷)를 보낼 때, 다른 노드들의 통신 간섭 없이 동시에 O(1)O(1)의 시간 복잡도로 멀티스레드 큐(Queue)에 데이터를 넣는 크로스바 라우팅 백엔드 모델 작성.

Practical

Core Topic 03: 비대칭 메모리 지형, NUMA 아키텍처 (NUMA Physics)

  • Why to Learn: 클라우드 시대의 대형 서버(2소켓, 4소켓)에 코드를 배치할 때, 메모리 접근 100나노초 수준을 유지할지 300나노초 수준으로 늘어날지 결정하는 '물리적 거리(Distance)'의 비대칭성을 이해하기 위함입니다.
  • What to Learn:
    • Concepts: NUMA(Non-Uniform Memory Access), SMP/UMA(Symmetric Multiprocessing), 로컬 램(Local RAM)과 원격 램(Remote RAM).
    • Skills: NUMA 거리(Distance / Hops), 메모리 컨트롤러 분할 배치.
    • Tools: 리눅스 numactl, lscpu.
    • Trade-offs: 모든 CPU가 하나의 큰 램 공간을 공유해 추론은 단순하지만 폰 노이만 병목에 함께 묶이는 UMA 구조 vs 램을 잘게 나누어 각 CPU 가까이에 배치하는 대신, 원격 램 데이터를 읽을 때는 QPI 버스를 거치며 추가 대기 시간을 감수하는 NUMA의 성능 타협.
  • How to Learn:
    • 1단계: 과거 북쪽 다리(Northbridge) 칩셋에 메모리 컨트롤러를 모아두던 구조에서, CPU 다이(Die) 안에 메모리 컨트롤러를 직결(Integrated)해 로컬 램 접근 레이턴시를 낮춘 하드웨어 진화를 분석합니다.
    • 2단계: CPU 0번이 자기 옆에 연결된 램(Node 0)을 읽을 때는 60ns가 걸리지만, CPU 1번 옆에 연결된 램(Node 1)을 읽으려 시도하면 QPI 링크(인터커넥트)를 거쳐 120ns로 지연이 늘어나는 비대칭 접근 비용을 살펴봅니다.
  • Implement: 2개의 "Node(CPU+로컬메모리)" 객체를 만들고, CPU0.read(주소) 함수를 호출했을 때 해당 주소가 자신의 로컬 메모리 배열에 있으면 delay=60을 반환, 다른 노드 배열에 있으면 가상의 QPI 버스 레이턴시 페널티를 추가해 delay=130을 반환하여 NUMA 거리 팩터를 증명하는 코드.

Advanced

Core Topic 04: NUMA 인지 소프트웨어 설계 (NUMA-Aware OS & DB)

  • Why to Learn: NUMA 하드웨어의 로컬/원격 지연 차이를 줄이기 위해, 운영체제(OS)와 고성능 데이터베이스(Redis, JVM)가 커널 레벨에서 메모리와 스레드 배치를 어떻게 제어하는지 익히기 위해서입니다.
  • What to Learn:
    • Concepts: 퍼스트 터치(First-Touch) 할당 정책, 스레드 친화성(Thread/CPU Affinity, Pinning).
    • Skills: 메모리 노드 바인딩, 페이지 마이그레이션(Page Migration).
    • Tools: 커널 시스템 콜 sched_setaffinity, mbind.
    • Trade-offs: 스레드가 돌아갈 CPU 코어를 1개로 고정(Pinning)하여 캐시 히트율과 로컬 NUMA 램 접근률을 높이는 안정적인 데이터 지역성 vs 해당 코어가 다른 인터럽트로 바쁠 때도 다른 코어로 쉽게 옮겨가지 못하는 유연성 상실.
  • How to Learn:
    • 1단계: 리눅스(Linux)가 malloc으로 메모리 할당 요청을 받았을 때 즉시 물리 페이지를 주지 않다가, 스레드가 그 메모리를 '처음 건드리는(Touch)' 순간 해당 스레드가 실행 중인 CPU 소켓의 로컬 램 영역에 물리 페이지를 배치하는 'First-Touch Policy'를 분석합니다.
    • 2단계: C/C++나 Go 언어로 수백 기가바이트의 인메모리(In-Memory) 캐시 서버를 만들 때, 코어별 전용 메모리 풀(Pool)을 수동으로 잡고 태스크를 고정 배치해 칩 간 버스 트래픽(QPI Traffic)을 줄이는 실무 튜닝 기법을 살펴봅니다.
  • Implement: 16개의 가상 코어 리스트와 2개의 가상 메모리 노드를 두고, 태스크 객체가 malloc 할 때 현재 실행 중인 코어 ID의 노드에 데이터를 바인딩한 뒤, 스케줄러가 이 태스크를 다른 노드의 코어로 스왑(Migration)하려고 할 때 "경고: NUMA 원격 접근 발생" 플래그를 찍으며 거부하는(Affinity 보장) OS 스케줄러 튜닝 시뮬레이터.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Bus (버스) 여러 개의 하드웨어 장치들이 데이터와 신호를 주고받기 위해 공유하는 물리적 전선 묶음입니다. 기본 연결 통로 Interconnect Channel '운송 수단' 비유로만 오해 P1:CS2023/MemoryHierarchy core
Arbitration 공통의 버스 자원을 쓰려는 여러 장치 중 하나를 선택하여 사용권을 부여하는 물리적 결정 과정입니다. 추천 충돌 제어 Arbiter Priority '협상'으로 오해 주의 P1:CS2023/MemoryHierarchy core
NUMA 각 프로세서가 자신에게 물리적으로 가까운 로컬 메모리를 가짐으로써 접근 속도가 차등화된 구조입니다. 실무 분산 메모리 Local Memory UMA '가상 메모리'와 혼동 P1:CS2023/Multiprocessing core
Lane (PCIe) 데이터의 송수신을 위한 차동 신호 쌍으로 구성된 최소 단위의 고속 시리얼 통로 물리입니다. 심화 대역폭 확장 Throughput x16 도로 차선 비유와 유사하지만 동일하지는 않음 Industry core

8. References

Primary

Secondary

  • [Mindshare: PCI Express System Architecture] — The technical "Bible" for PCIe.
  • [NUMA (Non-Uniform Memory Access) Handbook] — OS and hardware interaction focused.

Industry

  • [ARM AMBA AXI and ACE Protocol Specification] — Industry standard for on-chip bus.
  • [Intel UPI (Ultra Path Interconnect) Whitepaper] — Real-world server node connection.

9. Final Checklist

Primary

  • 주소 버스가 32비트일 때, 하드웨어가 물리적으로 접근 가능한 최대 메모리 용량을 수리적으로 도출할 수 있는가? (P1)
  • '공유 버스' 방식에서 장치 수가 늘어날수록 왜 데이터 전송률이 물리적으로 제한을 받는지 병목 현상을 설명 가능한가? (P1)

Secondary

  • NUMA 시스템에서 원격 접근(Remote memory access)이 로컬 접근보다 2~3배 이상 느린 물리적 근거(Hop, Interconnect latency)를 기술할 수 있는가?
  • PCIe의 '시리얼 전송' 방식이 과거의 '병렬 버스' 방식보다 왜 고주파 동작에서 더 안정적인지 스큐(Skew) 문제를 근거로 설명할 수 있는가?

Industry

  • 고성능 데이터베이스 서버 구축 시, NUMA 인식을 통한 'Memory Pinning' 전략이 서비스 응답 속도에 미치는 이점을 제안할 수 있는가? (SFIA)
  • 대규모 서버 클러스터 벤치마킹 시, 특정 코어 그룹에서만 관찰되는 성능 저하가 Interconnect 레이어의 물리적 레이아웃과 관련이 있음을 추론할 수 있는가?

Memory Systems & Storage Physics

4 / 5