-
SerDes 3/2MS Dairy/MS study 2023. 3. 2. 22:53반응형
대학원에 입학을 해서 다시 SerDes와 PCIe, data center switch에 대해서 공부를 계속하게 되었다.
serdes를 다시 복습해보면, 한 SOC에서 다른 SOC로 data를 wireline을 통해서 전달을 하는 것이다. 이때 사실 예전에는 parallel 방식을 사용했는데, size측면에서 less wire가 필수적으로 되기에 serialize가 필수적이게 되었다.
cf) 10Gbps => 100ps
Capacitor들로 인해서 loss가 생기는 신호선은, 고주파에서 특히 loss가 크기에 채널 BW(속도)를 높이기 위해서 Equalizer가 필수로 필요하다. ISI인 양 옆의 방해를 없애는 것이 필요하다.
전체적으로 serdes의 모습으로 보면 Transceiver lane을 볼 수 있다. 그 안에는 ESD를 포함해서 (정전기 방지 패드... 고주파에서 더욱 필수) CTLE를 거쳐서 DSP부분의 FFE와 DFE, CDR까지 볼 수 있다.
PAM4의 등장은 nyquist loss에 따라서 등장하게 되었다. 112G NRZ는 56G의 Nyquist가 필요한데, crosstalk이 더 커서 고주파에서 신호전달이 거의 불가능하다.
하지만 PAM4의 경우느 112G가 28G nyquist만 필요하기 때문에 노이즈의 영향을 줄이는 셈이다. 그렇지만 전압이 1/3로 줄기에 9dB의 SNR 손실이 존재하기에, DSP가 필수적인 것이다.
DSP는 누산기, 가산기, 승수 등의 디지털회로로 노이즈에 강하다. tap수에 따라서 전력소모도 커지지만 성능이 좋아진다. Tx측에서는 serial로 변환해서 FFE를 거치고 DAC를 거쳐서 PAM4로 합산해서 channel로 전달이 된다. 그리고 Rx측에서 CTLE를 거쳐서 compensate을 하고 ADC를 거쳐 parallel로 바꾸고 DSP를 거쳐서 eye를 오픈시켜서 출력을 하게 된다.
PLL로 CDR을 sampling 중간지점으로 옮기게 하고, ADC의 quantization때문에 CTLE는 필수적이다.
CTLE는 continous time linear equalization의 약자로 clk이 없는 아날로그 형태로 회로 구현이 쉽다. (discrete은 clk에 sample & hold issue 존재)
증폭기 gain느낌으로 같은 아날로그인 channel 옆에 두는 것이 좋다. amp의 역할로 출력 swing을 boost한다. 하지만 limit이 존재하고 여전히 ISI가 있다.
010101 이런 패턴이 가장 고주파 형태인데, 최대 swing인 셈이다. 왜냐하면 다른 것에 맞추면 더 ISI가 커져서 eye가 close 되기 때문이다. 그래서 같은 전압 swing으로 맞추고, 그 최대값이 고주파 패턴의 swing인 것이다.
월요일 첫 출근으로는 물건을 구매하고 해야할 것들이 있어서 공부를 할 시간은 없었던 것 같다. 그래서 간략히 정리를 해보면, ADC-DSP serdes를 DSP 관점에서 계속 서칭을 했었다.
그래서 IBIS-AMI model이 DSP serdes의 모델로써 나온 것을 알 수 있었다.
DSP안은 equalizer와 CDR이 존재하는 것으로 디지털 회로로 구성되어있는 것이다.
FIR은 finite impulse response로 impulse 응답이 0으로 가는 것이다. tap 수에 따라서 time을 결정하고, tap 수는 다항식 차수라고 한다.
그래서 이를 가지고 tap이 있는 FIR을 RTL로 구현을 할 때면, buffer들로 지연을 시키고 하단으로 내려가는 것을 각자 곱셈을 한뒤에 전부 합치는 알고리즘으로 짜게 된다.
cf) 9.5dB => 3배, 16.9dB => 7배
2일째 출근을 해서는 다시 마음을 잡고 공부를 했다.
PCIe에 대해서 살펴봐야했기에, PHY(파이)라고 줄여서 얘기하는 physical layer에 대해서 살펴보게 되었다.
PHY는 기본적으로 electrical connection이라고 한다. (이를 serdes로 표현하기도 하는 것 같다)
cf) transaction layer는 SW와 HW control 느낌으로, packet을 생성하게 된다.
네트워크는 open system interconnection (OSI)의 모델로 layer를 표현을 한다. Medium이 보통 channel로 나타내고 PCS와 PMA, PMD와 같은 physical layer가 바로 붙게 된다. (이것이 보통 serdes인 것 같다)
그렇게 논리 인터페이스를 제공하는 PIPE도 있고 이를 통해서 MAC와 PHY를 interconnect 하게 된다. MAC의 상위 layer로는 data link layer (DLL) 이 존재하고 PCS와 data stream을 주고 받게 된다.
PCS는 physical coding sublayer로 논리신호에서 전기적 신호 pulse로 바꾸는 역할을 한다. 그렇게 PHY에서 전송을 위해서 encoding을 하거나 MAC으로 보내기 위해 decoding을 하기도 한다. (하지만 최근 PIPE 5.0부터는 MAC에 decoding/encoding이 들어감)
마치 repeater 처럼 MAC와 PCS 전송을 하는 것이다.
PMA는 신호를 mapping하는 역할을 한다. test pattern을 생성하는 pbrs가 있고, lane의 수와 속도를 결정하게 된다.
PMD는 medium과 실질적인 interact를 하고 전선의 물리적 신호를 보내게 된다. datastream의 송수신 표준화이다.
MAC는 device간의 충동/결합 발생을 제어하게 된다.
serdes는 사실상 device로 간단히 말하면 strart/stop bit로 전송을 할 뿐인 장치이다.
transceiver와 PHY는 같은 layer이다. (PHY에 serdes가 있는...)
그렇게 PMD PMA PCS 로 PHY가 구성이 되고 PCS를 통해서 상위 layer와 소통을 하는 것이다.
OSI 모델로 보면 physical layer가 cable과 같은 구조화되지 않은 databit 전송을 하는 것이다.
data link에서 frame으로 패키징을 하고 network에서 내부 frame 주소를 바탕으로 packet을 처리하는 것이다.
PCIe switch는 데이터센터의 스위치의 프로토콜 일부이다. PCIe lane을 확장을 하는 device로 Host가 더 많은 장치를 support하는 역할을 한다. CPU의 제한된 PCIe lane을 극복하는 것이다.
fanout PCIe switch는 on upstream port와 downstream port 여러개로 signal integrity 유지에 좋고
fabric PCIe switch는 여러 Host가 가능하다.
PCIe는 chipset 및 CPU 통신 interface로 lane의 곱구조에 따라서 bps가 차이가 있다.
cf) DC balancing을 하는 것이 ISI 감소를 위해서... scrambling도 다항식으로 임의성을 0과 1에 대해서 처리하는....
root complex는 기본적으로 PCIe의 연결을 컨트롤 하는 것이다.
이어서 간단하게 OFDM을 살펴보았다. 하나의 직교 carrier로 하는 여러 subcarrier 나눠서 이를 중첩해서 전송을 하는 방식으로 ISI와 필요 BW를 낮출 수 있게 된다.
IQ constellation mapping으로 symbol변환으로 신호를 보내고 복구한다.
cf) Discrete multitone (DMT) 는 multi carrier technique이다.
switch fabric은 여러 입출력 port로 패킷을 전달을 하는데, 엮인 느낌이서 그렇게 부른다고 한다.
마치 rack들의 신호 전달이 꼬여있는 것이다.
그렇게 3일째는 휴일이어서 푹 쉬다가 저녁에 잠깐 공부를 좀 했다.
PCIe에 대한 설계를 봤는데, system verilog의 UVM이라는 template library를 이용한 것이었다.
PCIe의 physical layer를 타겟으로 진행을 했다.
구조는 위의 사진과 같이 DLL과 PL이 link packet과 DLL packet을 주고 받고, PL과 PIPE가 채널로 넘기기 전에 (PCS인셈) PLP와 DLLP, OrderSet을 주고 받는 것을 확인했따. 그리고 SRAM buffer가 존재하고, Scoreboard로 모든 UVM monitor를 연결한 analysis로 볼 수 있었다.
PL에는 PHY자체 packet을 생성도 하고 LTSSM이 있어서 state를 계속 확인하게 된다. 그리고 link packet과 DLLP의 framing을 하게 된다.
PCIe의 layer는 3개로 구성이 된 것을 볼 수 있고, transaction에서 data를 지니고 있는 것을 알 수 있다. layer마다 그렇게 packet으로 통신을 하고, packet은 대역폭 차지를 줄이기 위해서 분할 data 전송을 하는 것이라고 했다.
아마 packet이라는 것이 protocol이지 않을까 싶다.
그렇게 TLP의 예시가 있었고 PL의 연결된 부분을 보면서 RTL을 짜기 시작했다.
각 인터페이스에서 연결된 신호선을 확인하고, data sheet로 인아웃포트를 확인했다. PIPE datasheet을 토대로 진행을 했다.
그렇게 보면 MAC가 DUT로 physical layer 파트로 보고 있고 DLL가 연결된 것을 볼 수 있다. 그리고 PCS과 PHY로 PMA가 serdes인 것으로 볼 수 있다.
이는 data sheet를 바탕으로 나타내고 interface 명령어로 인터페이스를 하나씩 만들어서 UVM으로 testbench를 진행했다.
https://www.youtube.com/watch?v=oHemd13VHmU
출처
그리고 4일차에 다시 출근을 해서 PCIe를 이어서 살펴보았다.
그러면서 SDXI와 CXL이 요즘 인공지능 발전에 따라서 다대다 연결 interface로 떠오르는 것을 알 수 있었다.
이부분에 대해서 추후에 공부가 필요하다.
SDXI는 DMA에 있어서 data movement standard의 가속을 말한다. SW의 memcpy를 활용하는 것이 application(user)로 부터 멀리 있고 software overhead가 있기에 Application pattern으로 Accelerator를 통해서 DMAcopy를 빠르게 한다는 것이다. 특히 HW base로 application의 성능에 방해는 없다는 것이다.
그러면서 PCIe에 대한 오해를 다시 되집어 갔다. protocol은 그냥 말그대로 규격인 셈이다.
SERDES가 이제 진짜 범용 인터페이스로 serdes가 pcie 맞춘 protocol도 있고, usb에 맞춘 것도 있고 해서, on/off로 컨트롤하는 것으로 pcie의 protocol에 맞춰서 있는 serdes가 존재하는 것이다.
PCS가 multi protocol 형태로 PHY가 범용으로 있고 on/off를 하는 것이다. 그래서 근본적으로 serdes transceiver가 중요한 셈이다.
serdes가 PHY로 하위 layer에서 PCS인 상위로 보내면서 interface layer가 형성이 된다. 그 중에서 interface가 PIPE라는 것이 등장하게 되는 것이다. 이는 PHY와 MAC를 연결하는 것이다.
즉, PCS에서 송신코드를 PMA에서 물리신호로 변환해서 PMD로 넘기는 것이다. PMA에서 코드의 직렬화(serdes)와 clock의 복원이 존재한다.
PCS가 protocol로 도관(운반) 역할을 진행하게 된다.
PCS에서 여러 encoding/decoding과 reorder bit의 역할도 하게 된다.
PCS 모드가 여러개가 있으며, PIPE/ PCIe/ RAW 등이 있다.
어찌저찌 다시 SDXI를 보면 mem2mem data 전달에 있어서 standard로 acceleration interface로 존재하는 것이다.
MMIO (memory mapped I/O)로 function이 있고 I/O를 따로 두는 것이 아니라 메모리에 할당을 해서 쓰는 것이다. 그렇게 control을 Access key와 Receiver access key를 table로써 data를 운용하게 된다.
그렇게 다시 PCIe를 보면 PL에서는 수신된 packet을 frame에 capsul화 하고 packet으로 소통하게 된다. PL에서 start/stop bit로 frame을 조정하게된다.
DLL에서는 packet을 sequence 번호로 시작을 한다. 2byte로 식별 목적이 있고 LCRC로 transaction packet의 무결성을 check해서 ACK신호를 넘겨주게 된다. 그렇게 LCRC가 local clock redundancy(중복) check로 신호를 보낼지 재시도를 할 지 결정을 한다.
TL에서는 실제 data를 담당하는 header와 ECRC로 DLL로 부터온 data를 uncapsule하게 된다.
그렇게 전달이 되는 것이다.
PIPE serdes가 여럿을 지원하는 protocol로 PHY에서 MAC으로 logic을 이동을 했다고 한다.
그렇게 PIPE가 interface로 봐야할 것 같다.
'MS Dairy > MS study' 카테고리의 다른 글
SerDes 2/24 (0) 2023.02.24 SerDes 2/22 (0) 2023.02.22 SerDes 2/21 (0) 2023.02.21 Power Integrity - real world (0) 2023.02.16 Power Integrity - overview (0) 2023.02.16