PCI / PCIe
Peripheral Component Interconnect
1990년대부터 2000년대 초반까지 PC와 서버에서 CPU와 주변장치를 잇는 I/O 버스의 표준 확장 슬롯이었다.
엄밀히 말하면 네트워크 기술은 아니지만, InfiniBand나 NVMe-oF처럼 데이터센터의 고성능 인터커넥트를 이해하려면 PCI/PCIe가 어떤 기술이고 어떤 한계를 가지는지 짚고 갈 필요가 있어 함께 정리한다.
등장 배경
PCI 이전에도 PC에는 여러 버스 규격이 있었다.
- ISA (Industry Standard Architecture): IBM PC 시절부터 쓰인 8/16비트 버스. 8MHz 클럭, 16MB/s 정도의 대역폭. 그래픽 카드, 사운드 카드 등이 연결되었다.
- EISA: ISA를 32비트로 확장한 규격. 서버 시장에서 잠시 쓰임.
- VESA Local Bus(VLB): 486 시절 그래픽 카드를 위해 만든 32비트 직결 버스. CPU에 너무 종속적이라 호환성이 나쁨.
1990년대 초 Pentium이 등장하면서 CPU 클럭이 올라갔고, 그래픽 카드와 디스크 컨트롤러가 점점 더 많은 대역폭을 요구하기 시작했다. 그러나 ISA의 16MB/s로는 한계가 명확했고, VLB는 너무 CPU 의존적이라 확장성이 떨어졌다. CPU 아키텍처와 독립적이면서도 충분한 대역폭을 가진 표준 버스가 필요했고, 이 자리를 PCI가 채웠다.
동작 방식
PCI는 Shared Bus 구조이다. 여러 장치가 하나의 Parallel 회선을 함께 사용하고, 한 시점에는 한 장치만 통신할 수 있다. 옛날 이더넷 허브와 비슷한 개념이라고 보면 된다.
| 규격 | 폭 / 클럭 | 대역폭 |
|---|---|---|
| PCI 1.0 | 32bit / 33MHz | 약 133 MB/s |
| PCI 2.x | 32bit / 33MHz 또는 66MHz | 133 ~ 266 MB/s |
| PCI 64bit | 64bit / 66MHz | 약 533 MB/s |
| PCI-X | 64bit / 133MHz~533MHz | 1 ~ 4 GB/s |
PCI는 CPU와 메모리를 잇는 버스와는 분리되어 동작하며, PCI 호스트 브리지가 두 버스 사이에서 변환을 담당한다. 운영체제는 부팅 시 PCI 버스를 스캔해 어떤 장치가 어디에 꽂혀 있는지 자동으로 인식하는데, 이 과정을 PCI Enumeration이라고 부르고 오늘날 PCIe에서도 동일한 모델을 그대로 사용한다.
파생 규격
순수한 PCI 외에도 같은 시기에 나온 변형이 몇 가지 있다.
- PCI-X (PCI eXtended): 서버용으로 64비트와 더 높은 클럭을 지원. PCIe 등장 전까지 서버에서 자주 사용됨.
- AGP (Accelerated Graphics Port): 그래픽 카드 전용 버스. 한 슬롯 안에서 PCI보다 더 빠른 대역폭을 그래픽에만 할당. PCIe x16 등장 이후 사라짐.
- Mini PCI / PCI Express Mini: 노트북용 작은 폼팩터.
한계
1990년대 후반이 되면서 PCI는 명확한 한계를 드러냈다.
- 대역폭 부족: 그래픽 카드, 기가비트 NIC 같은 고속 장치가 PCI 전체 대역폭을 다 잡아먹음
- 공유 구조의 병목: 한 장치가 통신 중이면 다른 장치는 대기. 슬롯이 늘어날수록 효율이 더 나빠짐
- 클럭 한계: Parallel 회선 특성상 클럭을 더 올리기 어려움. 신호 무결성 문제로 PCI-X도 533MHz가 한계
- 확장성 부족: 슬롯이 많아질수록 신호 품질이 떨어져 한 버스에 붙일 수 있는 장치 수가 제한됨
이 한계가 명확해지던 1999년에 InfiniBand가 PCI를 대체할 차세대 시스템 I/O 패브릭으로 등장한다. 기존 버스의 속도를 끌어올리는 데 그치지 않고, CPU, 메모리, 디스크, NIC를 하나의 통합 패브릭으로 묶는 것이 InfiniBand의 목표였다.
PCIe (PCI Express)
InfiniBand의 PCI 대체 시도는 결국 실패했다. 2003년 PCIe(PCI Express)가 표준화되면서 같은 문제를 더 보수적인 방식으로 해결했기 때문이다.
| 구분 | PCI | PCIe |
|---|---|---|
| 구조 | Shared Parallel Bus | Point-to-Point Serial Link |
| 확장 단위 | 슬롯 | Lane (x1, x4, x8, x16) |
| 클럭킹 | 동기 (공통 클럭) | 임베디드 클럭 (Serial 신호 안에 포함) |
| 호환성 | — | 소프트웨어/드라이버 레벨에서 PCI와 호환 |
PCIe의 핵심 아이디어는 소프트웨어 호환성을 유지하면서 물리 계층만 Serial로 바꾸는 것이였다.
- 운영체제와 드라이버 입장에서는 PCI처럼 보이는 그대로 동작 (PCI Enumeration 모델 유지)
- 하드웨어는 Serial Link로 바꾸어 클럭을 훨씬 더 높게 올릴 수 있음
- 여러 Lane을 묶어 하나의 Link를 형성하며, Lane 수에 따라 대역폭이 곱셈으로 확장 (x1, x4, x8, x16)
- 각 Link는 Point-to-Point이라 다른 장치와 공유하지 않음
반면 InfiniBand는 완전히 새로운 스택과 드라이버 모델을 요구했고, 시스템 I/O 시장에서는 PCIe에 밀렸다. 다만 InfiniBand는 서버 간 인터커넥트 영역에서 살아남아 오늘날 HPC와 AI 클러스터의 사실상 표준이 되었다.
PCIe 세대별 대역폭
PCIe는 약 3~4년 주기로 한 세대씩 진화하며 대역폭을 두 배씩 끌어올려 왔다.
| 세대 | 등장 시기 | 1 lane (단방향) | x16 (단방향) |
|---|---|---|---|
| PCIe 1.0 | 2003 | 250 MB/s | 4 GB/s |
| PCIe 2.0 | 2007 | 500 MB/s | 8 GB/s |
| PCIe 3.0 | 2010 | 약 985 MB/s | 약 16 GB/s |
| PCIe 4.0 | 2017 | 약 1.97 GB/s | 약 31.5 GB/s |
| PCIe 5.0 | 2019 | 약 3.94 GB/s | 약 63 GB/s |
| PCIe 6.0 | 2022 | 약 7.88 GB/s | 약 126 GB/s |
| PCIe 7.0 | 2025 | 약 15.75 GB/s | 약 252 GB/s |
대역폭은 단방향 기준이며, PCIe는 양방향 동시 전송이 가능하므로 실제로는 두 배가 적용된다. 하위 호환이 잘 되어 있어 PCIe 3.0 카드를 PCIe 5.0 슬롯에 꽂아도 PCIe 3.0 속도로 동작한다.
오늘날의 PCIe 생태계
PCIe는 단순히 확장 슬롯 규격을 넘어, 현대 서버/PC의 거의 모든 고속 I/O를 지탱하는 기반이 되었다.
- 그래픽 카드: 대부분 PCIe x16 슬롯에 장착
- NVMe SSD: M.2 / U.2 폼팩터로 PCIe x4를 사용해 SATA 대비 수 배 빠른 속도 달성
- 고속 NIC: 100/200/400Gbps NIC는 PCIe 4.0 x16 또는 5.0 x16 필요
- InfiniBand HCA: ConnectX-7 같은 NDR 어댑터는 PCIe 5.0 x16 사용
- GPU 인터커넥트: NVIDIA NVLink는 PCIe보다 더 빠른 전용 링크지만, GPU와 호스트 CPU 사이는 여전히 PCIe로 연결
- CXL (Compute Express Link): PCIe 물리 계층 위에 메모리 일관성 프로토콜을 얹은 차세대 표준. 메모리 풀링, 가속기 통합을 노린다
즉 PCIe는 CPU 외부의 모든 고속 I/O가 모이는 허브가 되었고, 한 슬롯의 lane 수와 세대가 곧 시스템 성능 상한을 결정한다. GPU 8장과 InfiniBand 8포트를 한 시스템에 함께 구성해야 하는 최신 AI 서버에서는, 한정된 PCIe lane을 어디에 얼마나 배분할지가 시스템 설계의 핵심 변수가 된다.
정리
PCI 계보의 흐름을 짧게 요약하면 다음과 같다.
- PCI (1992): ISA를 대체하는 표준 확장 버스. Shared Parallel Bus
- PCI-X / AGP (1998~2003): PCI의 한계를 일부 보완한 변형들
- InfiniBand (1999): PCI 대체를 노렸으나 시스템 I/O 시장에서는 실패
- PCIe (2003~): Serial Point-to-Point으로 진화. PCI의 소프트웨어 모델을 그대로 계승
- PCIe 5/6/7 (2019~): AI/HPC 시대의 GPU, NIC, SSD를 지탱하는 기반 인프라
- CXL: PCIe 물리 계층 위에서 메모리 일관성까지 추구하는 차세대 확장