~/network/bus
그 외

Bus

컴퓨터에서 버스(bus)CPU, 메모리, 주변장치 사이에서 데이터, 주소, 제어 신호가 흐르는 공용 통신 회선의 묶음이다. 이름은 사람들이 함께 타고 다니는 운송 수단인 "버스"의 비유에서 왔다. 여러 장치가 한 회선을 함께 사용한다는 의미이다.

PCI, PCIe, USB, SATA 같은 익숙한 이름들이 모두 버스 규격이고, 데이터센터 네트워크로 주로 쓰이는 InfiniBand 역시 본래는 시스템 버스를 대체하기 위한 표준으로 출발했다. 그래서 인터커넥트를 이해하려면 버스가 무엇이고 어떻게 진화해왔는지를 짚어둘 필요가 있다.

신호의 종류

전통적으로 버스는 세 종류 신호를 함께 나른다.

종류역할예시
데이터 버스실제 데이터 비트를 운반32bit, 64bit 폭
주소 버스데이터를 읽거나 쓸 위치(주소)를 지정32bit이면 4GB까지 주소 지정 가능
제어 버스읽기/쓰기, 인터럽트, 클럭 같은 제어 신호RD#, WR#, IRQ

옛날 Parallel Bus 시절에는 이 세 종류 신호가 물리적으로도 분리된 회선으로 존재했다. 현대 Serial Bus(PCIe, USB 등)에서는 이런 구분이 거의 사라지고, 하나의 Serial 신호 안에 데이터와 제어 정보가 함께 인코딩되는 방식으로 통합되었다.

위치에 따른 분류

버스는 컴퓨터 안에서 어느 영역을 잇느냐에 따라 다음과 같이 나뉜다.

분류무엇을 잇나예시
시스템 버스 (Front-Side Bus)CPU ↔ 칩셋 ↔ 메모리FSB, AMD HyperTransport, Intel QPI/UPI
메모리 버스CPU ↔ RAMDDR4, DDR5 채널
I/O (확장) 버스CPU ↔ 주변장치ISA, PCI, PCI-X, PCIe, AGP
외부 버스컴퓨터 ↔ 외부 장치USB, SATA, Thunderbolt, FireWire

요즘은 메모리 컨트롤러와 PCIe 컨트롤러가 모두 CPU 안으로 들어오면서 시스템 버스/메모리 버스의 경계가 흐려졌다. 과거에는 메인보드 위의 노스브리지(Northbridge) 라는 별도 칩이 CPU와 메모리, PCIe 사이의 트래픽을 중계했고, CPU↔노스브리지 구간이 시스템 버스(FSB), 노스브리지↔RAM 구간이 메모리 버스로 물리적으로도 명확히 구분되어 있었다.

구조에 따른 분류

신호가 어떻게 흐르는지에 따라 두 가지 큰 패러다임이 있다.

Parallel Bus

여러 비트를 동시에 보낼 수 있도록 여러 신호선을 나란히 깔아놓은 구조이다.

  • 한 클럭에 여러 비트(8/16/32/64) 동시 전송
  • 모든 회선이 같은 클럭에 맞춰 동작 (동기 방식)
  • 회선이 길어지거나 클럭이 빨라지면 신호 사이의 타이밍 오차(skew)가 누적되어 신호 무결성이 무너짐

대표 예: ISA, PCI, PCI-X, IDE/PATA, parallel port(LPT), SCSI, 옛날 메모리 버스

클럭(Clock): 디지털 회로가 박자를 맞추기 위해 사용하는 주기적인 사각파 신호이다. 모든 부품이 클럭의 상승/하강 엣지에 맞춰 동작하며, 1 GHz 클럭은 1초에 10억 번 사이클이 도는 속도이다. 클럭이 빠를수록 1 사이클의 시간이 짧아져 더 많은 동작을 처리할 수 있다.

Skew: 같은 사이클에 출발한 신호들이 서로 다른 회선을 거치면서 도달 시간이 미세하게 어긋나는 현상이다. 회선 길이, 부하, 노이즈 차이 때문에 발생하며, 클럭이 빠를수록 1 사이클 시간 대비 skew가 차지하는 비중이 커져 신호 무결성을 무너뜨린다. Parallel Bus가 일정 클럭 이상으로 올라가지 못한 핵심 원인이다.

Serial Bus

한 줄(또는 differential pair)로 비트를 한 개씩 빠르게 보내는 구조이다.

  • 회선 수가 적으니 클럭을 훨씬 더 높게 올릴 수 있음
  • 클럭을 데이터 안에 임베딩(8b/10b, 64b/66b 인코딩)해 별도 Clock Line이 필요 없음
  • 한 link가 Point-to-Point으로 동작해 다른 장치와 공유하지 않음
  • 여러 link(lane)를 묶어 대역폭을 곱셈으로 확장 가능

대표 예: PCIe, USB, SATA, Thunderbolt, InfiniBand, Ethernet, NVLink

Differential Pair: 두 회선을 한 쌍으로 묶어 정반대 위상의 신호를 흘리고, 받는 쪽에서는 두 신호의 차이로 값을 판단하는 방식이다. 외부 노이즈가 두 회선에 똑같이 들어오면 차이를 보는 과정에서 상쇄되므로, 단일 회선 방식(single-ended)보다 노이즈에 훨씬 강하고 더 높은 클럭을 낼 수 있다. PCIe, USB, SATA 등 현대 고속 Serial 인터페이스가 모두 채택한다.

Parallel에서 Serial로

1990년대까지는 "더 많은 회선을 깔수록 더 빠르다"는 직관에 따라 Parallel Bus가 주류였다. 그러나 클럭이 100~500MHz 이상으로 올라가면서 회선 간 skew와 신호 노이즈가 한계를 만들었고, 결국 모든 고속 인터페이스가 Serial 방식으로 전환되었다.

Parallel 방식Serial 방식
ISA → PCI → PCI-XPCIe
IDE / PATASATA
Parallel Port (LPT)USB
SCSI (parallel)SAS (serial)

토폴로지에 따른 분류

버스가 여러 장치를 어떻게 묶는지에 따라 또 두 가지로 나뉜다.

Shared Bus

여러 장치가 하나의 회선을 함께 사용하고, 한 시점에 한 장치만 통신할 수 있다. 이더넷의 옛날 허브와 비슷한 구조이다.

  • 장치를 추가해도 하드웨어가 단순함
  • 그러나 한 장치가 통신 중이면 다른 장치는 대기
  • 장치가 많아질수록 신호 품질도 나빠지고 충돌 관리도 어려워짐

대표 예: ISA, PCI, IDE

Point-to-Point

두 장치 사이에만 전용 link가 연결된다. 다른 장치와 회선을 공유하지 않으므로 충돌이 없고, 클럭을 한계까지 끌어올릴 수 있다.

  • 여러 장치를 묶으려면 스위치(switch) 가 필요
  • 스위치가 트래픽을 중계하는 모델이라 사실상 작은 네트워크에 가까움

대표 예: PCIe, USB(허브), SATA, Thunderbolt

PCIe는 이름은 PCI를 계승했지만 공유 버스 → Point-to-Point + 스위치 모델로 완전히 바뀌었다는 점이 가장 큰 차이이다. 어떻게 보면 PCIe 시대부터 시스템 내부도 사실상 "네트워크화" 되었다고 볼 수 있다.

버스와 네트워크의 경계

전통적으로 버스는 컴퓨터 한 대 안의 통신을, 네트워크는 컴퓨터들 사이의 통신을 가리켰다. 그러나 다음 두 흐름 때문에 그 경계가 점점 흐려지고 있다.

  • 시스템 내부의 네트워크화: PCIe, NVLink 같은 Point-to-Point + 스위치 구조가 사실상 작은 네트워크처럼 동작
  • 네트워크의 메모리 접근화: InfiniBand, RoCE의 RDMA는 원격 노드 메모리에 직접 접근. 버스에서 하던 일을 네트워크로 옮긴 것에 가까움
  • CXL의 등장: PCIe 물리 계층 위에 메모리 일관성 프로토콜을 얹어, 여러 노드의 메모리를 한 풀처럼 사용. 버스와 네트워크의 중간 영역

이 때문에 요즘은 "버스" 대신 인터커넥트(interconnect) 라는 더 넓은 용어를 함께 쓴다. 컴퓨터 한 대 안이든 데이터센터 한 동이든, 컴퓨팅 자원을 잇는 모든 고속 통신 회선을 인터커넥트라고 부른다.

정리

버스 개념을 한 줄씩 짚어 정리하면 다음과 같다.

  • 버스 = 여러 장치가 함께 쓰는 통신 회선의 묶음 (어원: omnibus)
  • 신호 종류: 데이터, 주소, 제어 (현대 Serial Bus에서는 통합)
  • 위치별: 시스템 / 메모리 / I/O / 외부
  • 구조별: Parallel → Serial로 전환 (ISA/PCI → PCIe, IDE → SATA, LPT → USB)
  • 토폴로지별: Shared → Point-to-Point + 스위치로 전환
  • 현대적 시각: 버스의 경계가 흐려지면서 "인터커넥트"라는 용어로 통합

InfiniBand가 "PCI 버스 대체"를 시도했던 것은, 버스가 Serial + Point-to-Point + 스위치 구조로 재편되는 흐름의 가장 야심찬 도전이었다.