SerDes 동작 원리, 선 하나로 고속 데이터를 보내는 구조

SerDes 동작 원리, 선 하나로 고속 데이터를 보내는 구조

도서관에서 서가 여덟 줄의 책을 다른 건물로 옮겨야 한다고 해 봅시다. 여덟 명이 책을 한 권씩 들고 나란히 걸어갈 수도 있지만, 그러려면 복도가 여덟 줄 필요하고 사람마다 걸음이 달라 도착 시각이 어긋납니다. 대신 컨베이어 벨트 하나에 한 권씩 아주 빠르게 올려 보내고, 반대편에서 원래 서가 순서로 다시 꽂는 방법도 있습니다.

고속 칩 간 통신이 택한 방식이 두 번째이고, 이 글의 주제인 SerDes 동작 원리가 바로 그 구조입니다. SerDes는 병렬 데이터를 직렬로 바꿔 보내는 직렬화기(Serializer)와 받은 직렬 신호를 병렬로 되돌리는 역직렬화기(Deserializer)를 합친 이름입니다.

책과 다른 점이 있습니다. 벨트 위의 책은 모양이 변하지 않지만 신호는 선을 지나며 약해지고 번지고, 한 비트가 어디서 끝나는지 알려 주는 표시도 따로 없습니다. 그래서 이 글은 수신 쪽이 이런 문제를 어떻게 풀어내는지를 중심으로 따라갑니다.

병렬 버스가 속도를 올리다 막히는 이유

병렬 버스는 데이터선 여러 개와 클록선 하나를 함께 보내고, 클록이 뛰는 순간 모든 데이터선을 한꺼번에 읽는 구조입니다. 속도가 낮을 때는 단순하고 효율적입니다.

속도를 올리면 문제가 쌓입니다. 선마다 길이와 부하가 조금씩 달라 도착 시각이 어긋나는 스큐(Skew), 이웃한 선끼리 신호가 번지는 크로스토크, 많은 선이 동시에 전환하며 생기는 전원 잡음이 대표적입니다. 한 비트가 지속되는 시간이 짧아질수록 수십 ps의 어긋남도 읽기 오류로 이어집니다.

비용 문제도 있습니다. 데이터선이 많으면 패키지 핀과 기판 배선이 그만큼 늘어납니다. 그래서 선의 개수를 줄이는 대신 선 하나가 나르는 속도를 크게 높이는 직렬 방식이 고속 영역의 주류가 되었습니다.

SerDes 동작 원리, 송신부에서 수신부까지

데이터는 병렬 입력에서 시작해 병렬 출력으로 돌아옵니다. 그 사이에 신호가 거치는 단계를 순서대로 보면 직렬화, 채널 통과, 복원의 세 덩어리로 정리됩니다.

SerDes 신호가 지나는 길

  1. 송신 쪽 직렬화기가 저속 병렬 클록으로 받은 N비트를 N배 빠른 클록으로 한 비트씩 내보냅니다. 이 빠른 클록은 PLL이 기준 클록을 곱해 만듭니다.
  2. 송신 드라이버가 신호 파형을 다듬어 채널로 보냅니다. 이때 채널 손실을 미리 보정하는 처리도 함께 합니다.
  3. 신호가 패키지와 기판 배선, 커넥터, 케이블로 이루어진 채널을 지나며 약해지고 왜곡됩니다.
  4. 수신 입력단과 이퀄라이저가 약해진 신호를 증폭하고 번진 파형을 되돌립니다.
  5. CDR 회로가 데이터가 바뀌는 시점에서 클록 위상을 복원하고, 샘플러가 비트의 가운데 지점에서 값을 판정합니다.
  6. 역직렬화기가 판정된 비트를 모아 병렬 워드로 만들어 저속 병렬 클록과 함께 내보냅니다.

대부분의 고속 링크는 차동 신호를 씁니다. 선 두 가닥의 전압 차이로 비트를 표현하면 두 선에 똑같이 실린 잡음이 서로 상쇄되기 때문입니다.

그리고 직렬은 선이 한 줄이니 병렬보다 느리다는 말은 흔한 오해입니다. 선 하나의 속도를 병렬 선 하나보다 훨씬 높이고, 필요하면 이런 선 묶음(레인, lane)을 여러 개 나란히 두기 때문에 전체 처리량은 오히려 병렬 버스를 넘어섭니다.

클록을 따로 보내지 않는 방법, 라인 코딩과 CDR

직렬 링크는 보통 데이터선만 있고 클록선은 따로 두지 않습니다. 클록선을 두면 클록과 데이터 사이의 스큐 문제가 되살아나기 때문입니다. 대신 수신기가 데이터 신호 자체에서 클록을 복원하며, 이 회로를 클록 데이터 복원(CDR, Clock and Data Recovery)이라고 합니다.

CDR은 신호가 0에서 1로, 혹은 1에서 0으로 바뀌는 전이 시점을 보고 위상을 맞춥니다. 같은 값이 길게 이어지면 전이가 없어 위상 정보가 끊기므로, 송신 쪽에서 데이터를 일정하게 섞어 전이가 충분히 생기도록 만들어야 합니다. 전이에 기대는 이 성질이 SerDes 동작 원리에서 라인 코딩이 필수인 이유입니다.

이를 위한 방식이 라인 코딩(Line coding)입니다. 8b/10b는 8비트를 10비트로 바꿔 전이를 보장하고, 128b/130b는 같은 목적을 더 적은 부가 비트로 달성합니다. PCIe는 초기 세대에 8b/10b를, 이후 세대에 128b/130b를 썼습니다.

가상 계산 예시, 라인 코딩의 부가 비용선 위의 전송 속도(라인 레이트)가 10 Gb/s라고 가정합니다. 8b/10b를 쓰면 실제 데이터는 10 × 8 ÷ 10 = 8 Gb/s입니다.

128b/130b를 쓰면 10 × 128 ÷ 130 ≈ 9.85 Gb/s가 됩니다. 같은 선 속도라도 코딩 방식에 따라 데이터로 쓸 수 있는 비율이 달라집니다.

채널 손실을 되돌리는 이퀄라이제이션

채널은 높은 주파수 성분일수록 더 많이 깎아 냅니다. 그 결과 한 비트의 파형이 다음 비트 자리까지 번져 서로 섞이는 부호 간 간섭(ISI, Inter-Symbol Interference)이 생기고, 속도가 빠를수록 심해집니다.

이를 되돌리는 처리가 이퀄라이제이션(Equalization)입니다. 송신 쪽의 FFE는 신호가 전환한 직후만 강하게 보내 고주파 손실을 미리 보상합니다. 수신 쪽의 CTLE는 고주파 이득을 키우고, DFE는 이미 판정한 이전 비트가 현재 비트에 끼친 영향을 계산해 빼 줍니다.

각각 대가가 있습니다. CTLE는 고주파 잡음까지 함께 키우고, DFE는 잡음을 키우지 않는 대신 한 번 틀리면 다음 판정에도 영향을 주는 오류 전파 위험이 있습니다. 필요한 보정량은 채널의 길이와 재질에 따라 달라서, 링크를 처음 연결할 때 양쪽이 설정을 맞추는 링크 트레이닝 과정을 거치는 표준이 많습니다.

아이 다이어그램과 지터와 비트 오류율

수신 신호의 품질은 아이 다이어그램(Eye diagram)으로 봅니다. 파형을 비트 하나의 시간 간격으로 겹쳐 그리면 눈 모양이 나타나고, 눈이 가로로 넓을수록 타이밍 여유가, 세로로 클수록 전압 여유가 큰 신호입니다.

눈을 좁히는 주범이 지터(Jitter)입니다. 비트 경계 시각이 이상적인 자리에서 흔들리는 현상으로, 무작위로 생기는 랜덤 지터와 ISI나 듀티 사이클 왜곡처럼 원인이 정해진 결정적 지터로 나눕니다.

최종 성적표는 수신한 비트 중 틀린 비트의 비율, 곧 비트 오류율(BER, Bit Error Rate)입니다. 표준마다 목표가 다르지만 10의 -12제곱 근처를 요구하는 경우가 흔합니다.

가상 계산 예시, BER 10의 -12제곱의 의미10 Gb/s 링크에서 BER이 10의 -12제곱이면 초당 10의 10제곱 × 10의 -12제곱 = 0.01개, 곧 평균 100초에 1비트가 틀립니다.

그래서 이 수준의 BER을 실험으로 확인하려면 오류 몇 개를 관찰하는 데만도 수 분 이상의 측정이 필요하고, 통계적 신뢰를 얻으려면 더 오래 걸립니다.

NRZ와 PAM4, 한 심볼에 담는 비트 수

전통적인 NRZ(Non-Return-to-Zero)는 전압 레벨 두 개로 심볼 하나에 1비트를 담습니다. 속도를 높이려면 심볼 속도를 올리는 수밖에 없지만, 채널의 주파수 손실이 한계를 만듭니다. SerDes 동작 원리에서 속도를 올리는 길은 결국 심볼 속도를 높이거나 심볼당 비트 수를 늘리는 두 갈래입니다.

PAM4(4-level Pulse Amplitude Modulation)는 레벨 네 개로 심볼 하나에 2비트를 담습니다. 같은 심볼 속도에서 전송률이 두 배가 되니 채널이 견디는 주파수를 그대로 두고 속도를 올릴 수 있습니다. 가상의 25 GBd 링크라면 NRZ는 25 Gb/s, PAM4는 50 Gb/s입니다.

대가는 잡음 여유입니다. 전체 전압 진폭이 같다면 레벨 사이 간격이 NRZ의 3분의 1이므로, 눈의 높이도 3분의 1로 줄어 신호 대 잡음비가 약 9.5 dB(20 × log10(3)) 나빠집니다. 그래서 PAM4 링크는 오류 정정 부호(FEC)와 함께 쓰는 경우가 많습니다.

병렬 인터페이스와 SerDes 비교 표

구분병렬 인터페이스SerDes 직렬 인터페이스
신호선 수데이터 폭만큼의 선에 클록선 추가레인마다 송신과 수신 차동 한 쌍
클록 전달별도의 클록선으로 전달데이터에서 복원(CDR)
속도를 올릴 때의 걸림돌선 사이 스큐와 크로스토크채널 손실과 지터, 이퀄라이제이션 복잡도
처리량을 키우는 방법버스 폭을 넓힘선 속도를 높이고 레인 수를 늘림
회로 복잡도단순한 편PLL, CDR, 이퀄라이저로 복잡하고 전력도 필요
놓치기 쉬운 점선이 많으면 빠르다는 오해선이 한 줄이면 느리다는 오해

핵심 정리

병렬 버스는 속도가 올라갈수록 스큐와 간섭에 막히고, 선 수도 부담이 됩니다. 이 한계를 넘기 위해 만들어진 SerDes 동작 원리의 뼈대는 병렬 데이터를 빠른 직렬 흐름으로 바꾸고, 채널을 지난 신호를 이퀄라이저와 CDR로 복원해 다시 병렬로 되돌리는 것입니다.

컨베이어 벨트에 책을 한 권씩 싣는 방식이 통하려면 벨트 위의 책이 흐트러지지 않아야 합니다. 신호는 그렇지 않기 때문에, 라인 코딩과 이퀄라이제이션이 책의 모양과 순서를 지켜 주는 장치가 되고, 그 품질을 BER과 아이 다이어그램으로 확인합니다.

면접 대비 질문

면접 대비 질문병렬 인터페이스 대신 SerDes를 쓰는 이유를 설명하고, 수신기가 별도의 클록 없이 데이터를 복원하는 방법을 말해 보세요.

[답변 포인트] 병렬 버스는 속도가 올라갈수록 선 사이 스큐와 크로스토크, 핀 수 부담이 커져서 선당 속도를 높이고 선 수를 줄이는 직렬 방식으로 갔다는 점으로 시작합니다. 직렬화기와 PLL, 드라이버, 채널, 이퀄라이저, CDR, 역직렬화기로 이어지는 구조를 말하고, CDR이 데이터의 전이에서 위상을 맞추기 때문에 8b/10b나 128b/130b 같은 라인 코딩으로 전이를 보장한다고 연결합니다. 채널 손실에 따른 ISI를 FFE, CTLE, DFE로 보정한다는 점, 품질을 아이 다이어그램과 지터, BER로 평가한다는 점, PAM4가 속도를 올리는 대신 잡음 여유를 잃는다는 점까지 덧붙이면 좋습니다.