핵심 인사이트

  1. 블록 코딩(Block Coding)은 데이터 비트 그룹(4B, 8B)을 더 많은 비트 그룹(5B, 10B)으로 변환하여 DC 균형(DC Balance)·클럭 동기화·에러 감지 능력을 확보하는 라인 코딩 기법으로, 오버헤드(20~25%)를 감수하고 신호 신뢰성을 높인다.
  2. 4B/5B는 100BASE-TX 이더넷(FDDI)에서, 8B/10B는 기가비트 이더넷·파이버채널·USB 3.0에서 표준으로 채택됐으며, 더 효율적인 64B/66B가 10GbE 이상에서 8B/10B를 대체하고 있다.
  3. DC 균형이 중요한 이유는 광섬유와 AC 결합 회로가 직류(DC) 성분을 전달하지 못하므로, 연속적인 0 또는 1이 없도록 인코딩하여 클럭 복원과 신호 완전성을 보장해야 하기 때문이다.

Ⅰ. 블록 코딩의 필요성

블록 코딩이 필요한 이유:

문제 1: DC 성분 문제
  연속 0 또는 1 → 직류 성분 발생
  광섬유, 변압기 결합 = AC만 전달
  → 신호 손실 및 왜곡

문제 2: 클럭 동기화
  수신측은 데이터에서 클럭을 추출
  연속 0이나 1이 많으면 클럭 복원 불가
  → 비트 경계 파악 실패

문제 3: 에러 감지
  원시 데이터 = 에러 감지 능력 없음
  
블록 코딩 해결 방법:
  m비트 → n비트 (n > m) 변환
  변환 테이블에서 제외된 코드 = 에러 검출용
  DC 균형 보장 코드만 테이블에 포함

블록 코딩 종류:
  4B/5B: 4비트 → 5비트 (오버헤드 25%)
  8B/10B: 8비트 → 10비트 (오버헤드 25%)
  64B/66B: 64비트 → 66비트 (오버헤드 3.1%)
  128B/130B: 128비트 → 130비트 (오버헤드 1.5%)

📢 섹션 요약 비유: 블록 코딩은 메시지 암호화 — 원본 4글자 메시지를 5글자 코드로 바꾸는데, 이 5글자 코드에는 "의미 있는 것"만 허용하고 나머지는 에러로 판별.


Ⅱ. 4B/5B 코딩

4B/5B 코딩 (FDDI, 100BASE-TX):

원리:
  4비트(16가지) → 5비트(32가지)
  16가지 데이터 코드 + 제어 코드 배정
  16가지 미사용 = 에러 검출용 (또는 금지)

규칙:
  각 5비트 코드: 연속 0 최대 3개
  클럭 동기화 가능한 코드만 선택

4B/5B 코드 예시:
  Data | 5B Code | 설명
  -----|---------|---------
  0000 | 11110   | DC 균형
  0001 | 01001   |
  0010 | 10100   |
  0011 | 10101   |
  0100 | 01010   |
  0101 | 01011   |
  0110 | 01110   |
  0111 | 01111   |
  1000 | 10010   |
  ...  | ...     |
  1111 | 11101   |

제어 코드:
  11111: 유휴 (Idle)
  11000: 시작 구분자
  01101: 종료 구분자

결합: 4B/5B + MLT-3 라인 코딩
  100BASE-TX = 4B/5B 후 MLT-3 적용
  125 Mbaud × 4/5 = 100 Mbps 실제 데이터율

📢 섹션 요약 비유: 4B/5B는 4글자 단어를 5글자로 표기하는 비밀 코드 — 허용된 5글자 목록에 없는 것이 오면 "에러"로 판단!


Ⅲ. 8B/10B 코딩

8B/10B 코딩 (기가비트 이더넷, FC, USB 3.0):

원리:
  8비트(256가지) → 10비트(1024가지)
  256가지 데이터 + 제어 심볼(K-codes)
  나머지 = 금지/에러 코드

분할 인코딩:
  8비트를 5비트 + 3비트로 분할
  5비트 → 6비트 (5B/6B)
  3비트 → 4비트 (3B/4B)
  결합: 6+4 = 10비트

RD (Running Disparity):
  누적 DC 불균형 추적
  1의 개수 - 0의 개수 = +1 or -1 유지
  매 심볼마다 균형 점검

K-코드 (제어 심볼):
  K28.5: Comma Character (동기화)
  K27.7, K29.7, K30.7: 기타 제어

8B/10B 장점:
  최대 런렝스(연속 같은 비트): 5개 이하
  DC 균형: 항상 보장
  에러 감지: 금지 코드 = 즉시 에러 표시
  클럭 복원: 용이 (transitions 보장)

단점:
  25% 오버헤드 (8→10비트)
  10GbE 이상: 64B/66B로 교체 (3.1% 오버헤드)

📢 섹션 요약 비유: 8B/10B는 회계 장부 균형 맞추기 — 항상 빌려간 것(0)과 빌려온 것(1)의 차이를 ±1 이내로 유지하는 자기 균형 코드.


Ⅳ. 64B/66B와 발전 방향

64B/66B 코딩 (10GbE, 25GbE, 100GbE):

원리:
  64비트 데이터 → 2비트 동기 헤더 추가
  동기 헤더: 01(데이터), 10(제어)
  오버헤드: 2/66 ≈ 3.125%

장점: 8B/10B 대비 오버헤드 25% → 3.1%
단점: 동기화 패턴 보장 약함
      (8B/10B보다 DC 균형 약함)

128B/130B (USB 3.1 Gen 2):
  128비트 + 2비트 = 1.5% 오버헤드
  더 높은 효율

진화 방향:
  속도 증가 → 오버헤드 최소화
  FEC (Forward Error Correction) 결합
  100G+: 64B/66B + FEC 조합

비교:
  코딩    | 오버헤드 | DC 균형 | 용도
  --------|---------|---------|----------
  4B/5B   | 25%     | 보통    | 100BASE-TX
  8B/10B  | 25%     | 강함    | 1GbE, FC
  64B/66B | 3.1%    | 약함    | 10GbE+
  128B/130B| 1.5%   | 약함   | USB 3.1

📢 섹션 요약 비유: 블록 코딩 진화는 포장재 효율화 — 4B/5B는 100g 물건에 25g 포장, 64B/66B는 100g에 3g 포장 — 속도가 높아질수록 포장은 가벼워진다.


Ⅴ. 실무 시나리오 — 기가비트 이더넷

데이터센터 1GbE 링크 8B/10B 적용:

물리적 전송:
  1GbE PHY 레이어에서 8B/10B 인코딩
  전기/광 신호로 변환
  
  논리 속도: 1 Gbps
  물리 신호 속도: 1.25 Gbps (25% 오버헤드)
  
  클럭: 125 MHz (1.25 Gbps / 10비트)

수신측 처리:
  1.25 Gbps 신호 수신
  K28.5 comma 심볼로 바이트 동기화
  8B/10B 디코딩 → 원본 8비트 복원
  금지 코드 감지 → 에러 플래그 설정

에러 감지:
  정상 링크: 수십 분에 1개 에러 미만
  금지 코드 검출 = 신호 왜곡/간섭 징후
  
  sfp+ 광모듈 교체 필요 신호:
  ifconfig eth0: errors 카운터 급증
  dmesg: "PCS error detected"

네트워크 스위치 통계:
  input errors = 8B/10B 금지 코드 수신
  → 케이블/광모듈/SFP 문제 진단 근거

📢 섹션 요약 비유: 8B/10B 에러 감지는 통화 중 잡음 감지 — 허용된 발음이 아닌 소리(금지 코드)가 오면 "신호 품질 나쁨" 경보.


📌 관련 개념 맵

블록 코딩 (4B/5B, 8B/10B)
+-- 필요성
|   +-- DC 균형 (광섬유/변압기)
|   +-- 클럭 동기화
|   +-- 에러 감지
+-- 종류
|   +-- 4B/5B: 100BASE-TX, FDDI
|   +-- 8B/10B: 1GbE, FC, USB 3.0
|   +-- 64B/66B: 10GbE+ (효율 개선)
+-- 핵심 개념
|   +-- Running Disparity (RD)
|   +-- K-코드 (제어 심볼)
|   +-- 금지 코드 (에러 감지)

📈 관련 키워드 및 발전 흐름도

[4B/5B 코딩 (FDDI, 1990)]
100Mbps FDDI 네트워크 표준화
100BASE-TX 이더넷 채택
      |
      v
[8B/10B 코딩 (IBM, 1983; 1GbE 1998)]
기가비트 이더넷 PHY 표준
파이버채널, USB 3.0 채택
      |
      v
[64B/66B (10GbE, 802.3ae, 2002)]
오버헤드 25% → 3.1% 대폭 절감
10G/25G/100G 이더넷 표준
      |
      v
[128B/130B (USB 3.1, 2013)]
USB SuperSpeed 10Gbps
1.5% 오버헤드
      |
      v
[현재: FEC + 최소 오버헤드 코딩]
PAM4 변조 + 64B/66B + RS-FEC
400G/800G 이더넷 표준 진행 중

👶 어린이를 위한 3줄 비유 설명

  1. 4B/5B는 "10001000"처럼 같은 숫자가 너무 많이 반복되는 문제를 막으려고 4글자 → 5글자로 바꾸는 규칙이에요!
  2. 이 코딩 덕분에 수신기가 클럭(박자)을 쉽게 맞출 수 있고, 규칙에 없는 5글자가 오면 "에러!" 하고 알 수 있어요.
  3. 속도가 빨라질수록 오버헤드를 줄여야 해서 10기가 이더넷에서는 64B/66B(3.1% 오버헤드)로 더 효율적인 방식을 써요!