CPU Fabric 아키텍처 개요
개요
CPU fabric은 코어, 캐시, 메모리 컨트롤러, I/O 에이전트, 다른 다이와 같은 컴포넌트를 연결해 요청과 응답을 운반하는 통신 구조다. 초기 프로세서는 공유 버스에 의존했지만, 코어 수와 캐시·메모리·가속기 수가 늘면서 링, 메시, 패킷 기반 네트워크, 칩렛용 die-to-die 링크가 함께 사용되는 계층형 구조로 발전했다.
여기서 bus, ring, mesh는 주로 연결 토폴로지를, fabric은 링크·라우터·중재·프로토콜·캐시 일관성·QoS를 포함한 시스템 구조를, chiplet은 기능을 여러 다이로 나누는 패키지 설계 방식을 가리킨다. 따라서 한 CPU가 "메시 fabric을 가진 칩렛 구조"처럼 여러 용어를 동시에 가질 수 있다. 공개 자료만으로는 제품별 라우팅 정책과 물리 배치를 모두 알 수 없으므로, 이 문서는 공통 구조와 설계 판단 기준을 중심으로 설명한다.
핵심 개념
토폴로지와 fabric의 구분
토폴로지는 노드가 물리적으로 어떻게 연결되는지를 설명한다. 반면 fabric은 그 연결 위에서 어떤 트랜잭션을 어떤 순서와 우선순위로 전송하고, 일관성·오류·전력 상태를 어떻게 관리하는지까지 포함한다. 예를 들어 메시 토폴로지 위에 캐시 일관성 프로토콜과 directory를 얹으면 coherent mesh fabric이 된다.
| 용어 | 주된 분석 축 | 무엇을 설명하는가 | 다른 용어와의 관계 |
|---|---|---|---|
| Bus | 토폴로지 | 여러 에이전트가 공유하는 전송 매체 | fabric의 단순한 물리·논리 기반이 될 수 있음 |
| Ring | 토폴로지 | 노드를 고리로 연결하는 경로 | 링 위에 중재·캐시 일관성을 구현할 수 있음 |
| Mesh | 토폴로지 | 격자형 라우터와 링크의 집합 | 대규모 on-die fabric에 적합한 형태 중 하나 |
| Fabric | 시스템 구조 | 전송, 라우팅, 일관성, QoS, 전력·오류 제어 | bus/ring/mesh를 내부 구성으로 포함 가능 |
| Chiplet | 패키지·다이 분할 | 기능을 여러 다이로 나누고 연결하는 방식 | 각 다이 내부에 ring/mesh를 가질 수 있음 |
왜 CPU fabric이 필요한가
코어 수가 증가하면 모든 코어를 하나의 공유 버스에 연결하는 방식은 대역폭과 중재 시간이 빠르게 한계에 도달한다. 코어가 LLC slice, memory controller, PCIe/CXL root port와 동시에 통신하면 데이터 트래픽뿐 아니라 snoop, directory, invalidate, ordering 메시지도 링크를 사용한다. 따라서 fabric은 단순한 데이터 배선이 아니라 경쟁하는 트래픽을 분리하고, 필요한 경우 우선순위를 부여하는 시스템 자원이다.
설계 목표는 대체로 다음의 균형으로 정리된다.
- 지연 시간: 요청 주입, 라우터·링크 홉, 목적지 서비스, 큐 대기 시간을 줄인다.
- 처리량: 많은 코어가 동시에 접근해도 aggregate bandwidth와 bisection bandwidth가 유지되도록 한다.
- 확장성: 코어·캐시·메모리 에이전트를 추가할 때 배선과 중재 복잡도가 감당 가능한 수준이어야 한다.
- 일관성: coherent 시스템에서는 캐시 라인의 home과 소유자를 추적하고 snoop 또는 directory 트래픽을 운반해야 한다.
- 전력과 면적: 라우터 버퍼, 반복기, 장거리 배선, PHY와 링크의 pJ/bit를 제한한다.
Fabric을 구성하는 블록
| 블록 | 역할 | 대표 설계 질문 |
|---|---|---|
| Endpoint / Agent | 코어·캐시·메모리 컨트롤러·I/O가 fabric에 접속하는 지점 | 요청과 응답을 어떤 주소·트랜잭션 형식으로 표현하는가? |
| Router / Switch | 목적지에 따라 패킷 또는 flit을 다음 링크로 전달 | 라우팅, virtual channel, 버퍼 깊이는 어떻게 정하는가? |
| Link | 인접 블록 사이의 전기적 데이터 경로 | 폭, 주파수, 재타이밍, clock-domain crossing은 어떤가? |
| Arbiter | 동시에 도착한 요청의 전송 순서를 결정 | 공정성, 우선순위, starvation 방지는 보장되는가? |
| Flow control | 수신 버퍼 용량을 넘지 않도록 주입을 조절 | credit, ready/valid, backpressure 중 무엇을 쓰는가? |
| Coherence / Home agent | 캐시 라인의 home, 소유권, 메모리 접근을 관리 | snoop과 directory 중 어느 방식이 트래픽에 맞는가? |
| QoS / Telemetry | 지연 민감 트래픽 보호와 상태 관측 | CPU 요청이 DMA·I/O 트래픽에 묻히지 않는가? |
계층별 연결 범위
CPU fabric은 거리에 따라 같은 이름의 "링크"라도 성격이 달라진다.
- Core-to-core / cache fabric: 코어, private cache, shared LLC slice 사이의 짧은 on-die 경로다.
- Uncore fabric: LLC, memory controller, I/O agent, accelerator를 연결하고 주소·일관성 트랜잭션을 조정한다.
- Die-to-die fabric: 칩렛 또는 타일 사이를 package PHY와 adapter로 연결한다. 내부 프로토콜이 coherent인지 여부는 구현에 따라 다르다.
- Socket-to-socket fabric: 소켓 간 coherent link를 제공하며, 원격 메모리 접근은 NUMA 비용을 만든다.
같은 프로세서 안에서도 네 계층이 혼합될 수 있다. 예를 들어 CCD 내부는 local cache fabric, CCD와 I/O die 사이는 die-to-die link, 소켓 사이에는 multi-socket coherent link가 사용될 수 있다. 운영체제는 이 물리적 차이를 NUMA node와 distance 정보로 노출할 수 있지만, 모든 fabric 세부 동작을 직접 제어하지는 않는다.
비교/분석
토폴로지 비교
| 항목 | 공유 Bus | Ring | 2D Mesh | Crossbar |
|---|---|---|---|---|
| 연결 방식 | 하나의 공유 매체 | 이웃 노드의 고리 | 행·열 라우터 격자 | 입력과 출력의 직접 교차점 |
| 평균 경로 | 중재 후 공통 경로 | 노드 수에 따라 홉 증가 | 위치에 따라 여러 홉 | 짧은 직접 경로 |
| 동시 전송 | 제한적 | 여러 구간에서 가능하나 충돌 관리 필요 | 여러 링크에서 병렬 전송 | 매우 높음 |
| 대규모 확장 | 불리함 | 중간 규모에 유리 | 높은 확장성 | 포트와 면적 비용이 큼 |
| 주요 병목 | 공유 대역폭·중재 | 홉 수와 링 방향 | 특정 링크의 hotspot·라우팅 | 스위치 면적·배선 |
| 전형적 사용 | 소규모 SoC·레거시 시스템 | 소·중규모 코어 클러스터 | 서버급 다중 코어·NoC | 소수 에이전트의 고대역폭 연결 |
토폴로지의 우열은 코어 수만으로 결정되지 않는다. 요청이 특정 memory controller나 LLC slice에 몰리는지, coherent traffic이 데이터 traffic과 같은 링크를 공유하는지, 그리고 목표 전력·면적이 얼마인지가 함께 중요하다. 메시가 이론적으로 더 많은 경로를 제공해도 hotspot과 긴 배선이 있으면 실제 tail latency가 악화될 수 있다.
Fabric과 칩렛 설계의 비교
| 구분 | 단일 모놀리식 다이 | 다중 타일·칩렛 | 다중 소켓 |
|---|---|---|---|
| 물리 경계 | 하나의 silicon die | package 내부 die 경계 | 보드·소켓 경계 |
| 연결 수단 | on-die wire, ring, mesh, NoC | die-to-die PHY, bridge, interposer, package fabric | socket link와 보드 배선 |
| 일관성 비용 | 짧은 링크와 통합된 제어 | 링크·adapter·패키지 전력 비용 추가 | coherent protocol과 NUMA locality 비용 |
| 제조 장점 | 설계·검증 경로가 단순할 수 있음 | 작은 die, 공정 혼합, 재사용·수율 이점 | 시스템 단위 확장 가능 |
| 주요 위험 | 큰 die 수율, reticle·배선 한계 | 패키징·열·신호 무결성·검증 | 원격 메모리 지연과 소프트웨어 locality |
| 소프트웨어 관점 | 대체로 균일한 locality | 제품별 topology 인식 필요 | NUMA-aware 배치가 중요 |
칩렛은 fabric의 대체 토폴로지가 아니다. 칩렛 구조에서도 각 compute die 내부에는 mesh 또는 ring이 있고, die 사이에는 별도의 coherent 또는 non-coherent 링크가 있을 수 있다. UCIe는 package-level die-to-die 물리 계층과 adapter·프로토콜·소프트웨어 모델을 표준화하며 PCIe, CXL, Streaming을 상위 프로토콜로 다룬다. 따라서 UCIe 같은 표준 링크가 있다고 해서 칩렛 내부의 cache coherence 정책까지 자동으로 동일해지는 것은 아니다.
설계 지표
| 지표 | 의미 | 해석할 때의 주의점 |
|---|---|---|
| Hop latency | 라우터·링크를 거치는 횟수와 각 홉의 지연 | 평균값보다 최악 경로와 congestion을 함께 봐야 함 |
| Injection latency | endpoint가 fabric에 요청을 넣기까지의 시간 | 입력 큐와 arbitration 정책의 영향을 받음 |
| Bisection bandwidth | 네트워크를 둘로 나눌 때 절단면을 통과하는 총 대역폭 | 코어 수가 큰 시스템의 구조적 병목을 찾는 데 유용 |
| Sustained throughput | 실제 트래픽 패턴에서 지속 가능한 처리량 | peak link rate와 다르며 read/write 비율에 의존 |
| Tail latency | 높은 백분위수의 응답 지연 | QoS, priority inversion, hotspot 영향을 드러냄 |
| Coherence traffic | snoop, directory, invalidate, data forwarding 양 | 코어 수와 공유 데이터 비율에 따라 증가 |
| Energy per bit | 한 비트를 이동하는 데 필요한 에너지 | 거리, 전압, PHY, 버퍼, 재전송을 포함해 평가 |
| Area per port | 포트·라우터 추가에 필요한 면적 | crossbar와 대형 buffer에서 빠르게 증가 |
단순화한 요청 지연 모델은 다음과 같이 생각할 수 있다.
전체 지연 ≈ 주입 지연 + Σ(링크 지연 + 라우터 지연) + 큐 대기 + 목적지 서비스 + 응답 경로
이 식에서 Σ 항만 줄이는 것이 항상 최선은 아니다. 링크를 짧게 만들기 위해 라우터를 늘리면 buffer와 arbitration이 추가되고, coherent traffic을 보호하기 위한 virtual channel을 늘리면 면적과 검증 부담이 커진다.
동작 원리
1단계: 요청 생성과 endpoint 주입
코어가 private cache에서 miss를 내면 cache controller가 요청의 주소, 종류(read, write, invalidate 등), ordering·coherence 속성을 만든다. 요청은 fabric packet 또는 flit으로 변환되어 endpoint 입력 큐에 들어간다. 입력 큐가 가득 차면 flow control이 주입을 늦추며, 이때 코어의 실행은 miss dependency 때문에 멈추거나 다른 명령을 계속 처리할 수 있다.
2단계: 중재와 라우팅
arbiter는 여러 입력 중 전송할 flit을 선택한다. credit-based flow control에서는 다음 라우터의 빈 버퍼 credit이 있을 때만 전송하고, ready/valid 방식에서는 수신 측의 ready가 확인될 때 transfer를 수행한다. 라우터는 주소 또는 목적지 ID를 이용해 다음 포트를 결정한다.
- Bus: 공유 매체에 대한 중재 후 모든 에이전트가 주소를 관찰한다.
- Ring: 패킷이 선택된 방향으로 이웃 노드를 통과하며, 각 노드는 목적지 여부를 검사한다.
- Mesh: XY routing, adaptive routing 또는 구현별 정책으로 다음 라우터를 선택한다.
- Fabric: topology routing 외에 traffic class, virtual channel, QoS, ordering 규칙을 함께 적용한다.
혼잡이 생기면 backpressure가 upstream으로 전파된다. 따라서 링크 속도만 높여도 hotspot, 작은 buffer, 공정성 부족이 해결되지 않을 수 있다.
3단계: Home agent와 캐시 일관성
요청의 주소가 속한 home agent 또는 directory가 트랜잭션의 다음 동작을 결정한다.
- 해당 cache line의 상태와 sharer/owner 정보를 확인한다.
- 다른 코어가 최신 복사본을 가지고 있으면 snoop 또는 directory lookup을 발행한다.
- 필요한 경우 owner에게 data와 권한을 요청하고, 메모리 컨트롤러에는 DRAM 접근을 보낸다.
- 응답을 수집한 뒤 요청 코어에 data와 cache-line 상태를 반환한다.
작은 시스템은 snoop broadcast가 단순할 수 있지만, 코어와 socket이 늘면 모든 노드에 요청을 보내는 비용이 커진다. directory 기반 방식은 metadata 저장 공간과 lookup 비용을 추가하는 대신 불필요한 snoop을 줄일 수 있다. 실제 제품의 MESIF, MOESI 및 변형 프로토콜은 fabric의 routing·ordering 규칙과 함께 동작한다.
4단계: 메모리 및 I/O 경계 통과
home agent가 line의 최신 복사본을 찾지 못하면 memory controller agent로 요청을 전달한다. 메모리 컨트롤러는 주소를 channel·rank·bank·row·column으로 매핑하고 DRAM timing에 맞춰 읽기 또는 쓰기를 수행한다. I/O 요청은 PCIe/CXL agent나 다른 coherent device로 향할 수 있으며, 이때 fabric은 CPU cache coherence와 I/O ordering의 경계를 처리한다.
5단계: 다이 간 또는 소켓 간 전송
요청 대상이 다른 die라면 die-to-die PHY와 adapter가 패키지 경계를 넘는 전송을 담당한다. 링크 초기화, lane training, CRC, retry, 전력 상태, clock-domain crossing은 on-die wire와 별도의 문제다. 상위 계층이 coherence를 지원하더라도 패킷이 어떤 cache line 상태와 ordering을 보장하는지는 해당 fabric 프로토콜이 정의한다.
AMD Infinity Fabric, Intel의 mesh·tile 계열 연결, Arm CMN과 같은 이름은 서로 다른 구현과 공개 범위를 가진다. 이 문서에서 이 이름들은 공통 설계 패턴을 이해하기 위한 대표 사례로만 사용하며, 특정 세대의 내부 배치나 대역폭을 일반화하지 않는다.
6단계: 응답 반환과 관측
데이터 또는 coherence acknowledgement가 역방향 경로로 돌아오면 endpoint는 요청 ID에 응답을 매칭하고 cache state를 갱신한다. fabric은 성능 카운터와 telemetry를 통해 hop utilization, queue occupancy, retry, snoop 비율, memory-controller 대기 시간을 노출할 수 있다. 운영자는 perf, vendor PMU, firmware topology 정보와 함께 이 지표를 사용해 CPU 부족인지, fabric congestion인지, 메모리 서비스 지연인지 분리해야 한다.
장단점
| 장점 | 단점 및 주의점 |
|---|---|
| 코어·캐시·메모리·I/O를 모듈식으로 연결할 수 있음 | 라우팅, ordering, coherence 검증 복잡도가 증가함 |
| 여러 링크의 병렬 사용으로 공유 버스보다 높은 처리량을 얻을 수 있음 | buffer와 router, 긴 배선이 면적과 전력을 소비함 |
| QoS와 traffic class로 지연 민감 요청을 보호할 수 있음 | 우선순위 설계가 잘못되면 starvation이나 priority inversion이 생김 |
| 칩렛·타일을 이용해 공정 혼합과 제품 재사용이 가능함 | die-to-die PHY와 패키징의 열·신호 무결성 검증이 필요함 |
| coherent memory와 I/O 확장에 공통 전송 계층을 제공함 | coherent traffic과 remote access가 실제 대역폭을 잠식할 수 있음 |
| 고장 링크 우회·retry·telemetry를 fabric에 통합할 수 있음 | 오류 복구 상태와 디버깅 경로가 설계를 어렵게 함 |
선택 기준
- 에이전트 수가 작고 지연 예측성이 우선이면 단순 bus 또는 ring이 유리할 수 있다.
- 코어 수와 대역폭이 늘고 다중 경로가 필요하면 mesh 또는 packet-based NoC를 검토한다.
- 다이 면적·수율·공정 혼합이 핵심이면 chiplet을 검토하되, package link의 coherence·전력·검증 비용을 별도로 계산한다.
- 서버와 다중 소켓 구성에서는 평균 지연보다 bisection bandwidth, remote-memory 비율, tail latency, QoS를 함께 측정한다.
- 제품 비교 시 공개된 peak link rate만 보지 말고 요청 크기, read/write 비율, cache sharing, NUMA 배치, 실제 workload의 sustained throughput을 확인한다.
관련 기술
- 메모리 인터커넥트: bus, ring, mesh, NoC와 메모리 요청 경로
- NUMA 아키텍처: 소켓 간 fabric과 원격 메모리 locality
- 캐시 일관성 MESI/MOESI: coherence 상태와 snoop/directory 트래픽
- CPU Cache Architecture: 캐시 계층과 공유 LLC
- 메모리 컨트롤러: fabric과 DRAM controller 경계
- 멀티코어/이기종 아키텍처: 코어·타일·칩렛 구조의 확장
- Intel/AMD 마이크로아키텍처 비교: Intel tile과 AMD CCD/IOD 배경
- UCIe 칩렛 인터커넥트: package-level die-to-die 표준
- PCIe Gen5/Gen6: 외부 I/O link와 fabric 경계
참고 문헌 및 표준
- UCIe Consortium, UCIe Specifications: die-to-die physical layer, adapter, protocol, software stack 및 세대별 기능.
- Arm, Neoverse CMN-700: Scalable Mesh for Systems: coherent mesh 기반 시스템 IP 개요.
- AMD, 5th Gen AMD EPYC Processor Architecture Overview: EPYC의 CCD, I/O die, Infinity Fabric 관련 공개 아키텍처 자료.
- L. Benini and G. De Micheli, “Networks on Chips: A New SoC Paradigm,” IEEE Computer, 2002, doi:10.1109/2.976921.
- William J. Dally and Brian Towles, Principles and Practices of Interconnection Networks, Morgan Kaufmann.
- Intel, Intel Architecture Day: Intel의 core, tile, package 및 fabric 관련 공개 발표 자료 모음.
핵심 정리
- CPU fabric은 코어와 캐시뿐 아니라 memory controller, I/O, coherence, QoS, flow control을 연결하는 시스템 구조다.
- Bus·ring·mesh는 토폴로지이고 fabric은 그 위의 전송·중재·일관성 동작이며, chiplet은 기능을 여러 다이로 나누는 패키지 방식이다.
- 코어 수와 트래픽이 늘수록 홉 지연보다 bisection bandwidth, hotspot, coherence traffic, tail latency와 pJ/bit를 함께 평가해야 한다.
- 칩렛 CPU는 다이 내부 fabric과 die-to-die link를 계층적으로 결합하므로, 패키지 경계의 PHY·열·신호 무결성·일관성 비용을 별도로 검증해야 한다.
- CPU fabric의 실제 성능은 peak link rate가 아니라 workload의 locality, 큐 대기, 메모리 서비스 시간, coherence 및 QoS 정책이 결정한다.