Github Page

12/02/2025

PHY 의 이해와 DSP 관점 이해

1. PHY 의 이해 

Transceiver라고도 말하며, PHY라고도 말을 하기도 한다. 
SoC/MPU/AP에서 Digital Data를 PHY에게 보내면, 이를 재 가공(Encoding)해서, 물리적으로 전송을 하는 Layer라고 생각을 하면 된다. 
물리적 계층에서 최종 데이터의 전송을 담당하기에 각 PHY/Transeiver 마다 각 Encoding 방식은 다르다. 

RF에서도 Transceiver가 존재하며, 각 Encoding이 Analog 라고 봐야할 듯하다. 
좀 더 넓게 생각해보면, 유선과무선(RF)으로 볼 수 있고, 각 부분들을 간단히 알고 이해해보도록 하자. 

PCIe PHY
PCIe 이해 와 USB 의 비교 
2.3. Physical Layer (PCS/PMA)

MIPI PHY
MIPI PHY (D-PHY)

Ethernet PHY 
MII(Media Idependent Interface) MAC과 PHY

RS-485 Transceiver
RS232 와 RS485 Tranceiver 


1.1  PHY 의 Encoding/Decoding 방식 


PCIe PHY
PCIe PHY 구조 

  • PCIe PHY Interface Spec
PCIe PHY/USB PHY/USB4 PHY/SATA PHY 관련 비교 설명 
  1. 2.1 PCIe PHY Layer
  2. 8.1.1 Clocking Topologies    (PLL 부분)
  3. 8.3.1 Power Management – PCIe Mode
  4. 8.15 Error Detection
  5. 9.10 Message Bus: Equalization   ( CDR 부분?)
  6. 10 Multi-Lane PIPE – PCIe Mode

1.2  Phase Detection 

  • Mixer 의 Phase Detection 이해 
Mixer/Phase Detector 관련 설명 (별도 추가)
PHY 를 DSP관점으로 이해하기 위해서 아래 설명을 별도로 먼저 추가함 

PHY에서 가장 중요하게 생각해야 할 것이 Phase 일 것으로 생각되어진다. 
특히, 고속 I/O Interface로 갈 수로 Phase Detect를 하고 이를 Calibration을 하고 각 Error 상태 확인하고, 
각 에러 특징에 따라 상태변경을 해야 하기 때문이다.

이 생각을 하다가, 
RF Mixer/Phase Detector가 생각이 나서, 이 부분을 DSP 관점으로 변경해서 생각해보기로 했다.
원래는 PCIe 와 CXL 부분을 하다가 갑자기 생각이 나서 간단히 만 정리한다. 


2. 고속 Serial PHY 의 DSP 관점 이해  

PHY는 DSP 사용하지 않으며, 전부 H/W 동작 되는 게 맞을 것 같으며, 아래는 개인적인 생각이다.
다만, H/W관점에서 PHY를 DSP 관점을 바꾸어서 이해하기 위해서 생각해보자. 

  • CTLE(Continuous-Time Linear Equalizer)/DFE DSP 관점 
Digital RX FIR Equalization
Digital RX FIR & DFE Equalization Example
Link with Equalization  (TX FIR Equalization ->  RX CTLE+DFE)
DFE with IIR Feedback
DFE with IIR Feedback RX Architecture
나만 이렇게 DSP관점에서 생각한 것은 아닌 듯하며, 기존에도 사용을 하는 듯하다. 
아래 문서를 좀 자세히 보면 , TX / RX 를 분리해서 관리하며 맞을 것 같으며, 아직 완벽히 이해가 되지 않음 


Simulink
  https://kr.mathworks.com/help/serdes/ref/ctle.html  

개인생각으로는 
DSP에서 동작을 시킨다는 관점에서 생각하면, 더 쉽게 이해하지 않을까 쉽다.
아래 내용이 다 틀리 수 있으므로, 개인생각이라 주의해야 한다. 

  1. HW-Analog Front-End 
  2. DSP-FIR Equalization : Channel Equalization 
    1. H/W 여러 요소들을  통계 평준화/보정  
    2. DSP의 예로 들면, Camera ISP의 White Balance 느낌 
  3. DSP-IIR Correction:  Adaptive EQ (DFE)
    1. 상위에서 얻은 것들을 지속적으로 보정 
    2. DSP의 예로 들면, Radar의 IIR인 Kalman Filter 느낌
  4. DSP-Digital Control (FSM/LTSSM 설계) 
    1. 각 상태도 들을 만들어 설계 후 이에 맞게 행동 
    2. 상태도 기반의 제어 (State Machine)

  • DSP 관점 쉽게 이해   
HW --> PD --> LPF --> ADC --> FIR Filter 문제확인 --> IIR 지속적인 적응 보정  --> FSM 상태 제어 
추후 시간이 더 되면 진행 


  • DSP 관점에서 생각 

FIR / IIR / FSM Functional Mapping in High-Speed Interfaces
블록 DSP 관점 역할 DSP 관점 생각 PHY 설명
FIR Analyzer H/W Channel 각 요소 왜곡된 정보들
FIR 기반 추정/탐색 후 초기보정
FIR 필터 응답으로 각 요소파악
평준화(Equlization)
CTLE/FFE 기반으로 ISI, BER, Eye margin 등 측정
IIR Loop (Adaptive EQ) FIR 분석 결과 누적 보정 IIR Feedback DFE.AdativeEQ 계수, 온도,전압 변화 계수 갱신하여 제어
FSM / LTSSM FIR/IIR 루프의 제어기 상태 제어기(State Machine) Polling, Recovery, L0 등 상태 전환 제어


  • DSP 관점 에서 FIR /IIR /FSM 의 역할  

Interfaces vs. FIR/IIR Roles and Control FSM
인터페이스 FIR 역할 IIR 역할 FSM 제어기
PCIe / USB Channel Observation Adaptive EQ (CTLE/DFE) LTSSM
Ethernet KR / PAM4 Eye Margin Monitor Coefficient Update Link Training FSM
DisplayPort / HDMI (FRL) Training Pattern Measure Equalizer Tune LTTPR FSM
MIPI (M-PHY) Gear Training Measure Feedback Adaptation LSS / Power FSM





12/01/2025

RF Mixer 이해 와 I/Q 시그널

1. Mixer 의 이해 


RF H/W 엔지니어가 아니기때문에, 관련부분의 이해 목적으로 각 부분 요약으로만 정리하며 기술한다.
틀린 부분이 있을 수 있으며, 추후 발견을 하면 수정을 하도록 하겠다. 


  • Audio Mixer 와  RF Mixer 차이
구분 Audio Mixer RF Mixer
동작 방식 덧셈 (Summation) 곱셈 (Multiplication)
대표 수식 Vout = V1 + V2 xout(t) = xRF(t) · xLO(t)
주파수 관계 주파수 변환 없음 fIF = fRF ± fLO (Difference / Sum)
입력 신호 여러 오디오 신호  RF 신호 + LO(Local Oscillator)
출력 신호 합쳐진 오디오 신호 1.IF(Frequency/Phase Difference)
2.HF(Frequency/Phase Sum) (LPF제거)
출력 신호의 의미 음량·채널 조정, 믹스된 오디오 통신·레이더용 주파수 변환 결과
I/Q 개념 필요 여부 × 필요 없음 ✓ 필요 (QAM, FMCW, AoA 등)


  • RF Mixer 사용
Component Frequency Term Phase Term Usage
IF (Difference) Δf = ω1 − ω2 Δφ = φ1 − φ2 ✔ Radar / RF Mixer Used
HF (Sum) Δf = ω1 + ω2 Δφ = φ1 + φ2 ✖ Removed by LPF

HF(Sum)은 LPF(Low Pass Filter)제거 하고 사용 

  • RF Mixer Input/Output 의 Frequency 비교 
  1. Input Signal(100KHz,120KHz) 
  2. Output Signal 
    1. Frequency Difference: 20KHz, Sum: 22KHz 확인
https://github.com/JeonghunLee/phy_simulation/blob/main/notebooks/mixer_compare.ipynb

  • RF Mixer Output 의 Frequncy LPF 분리 
  1. RF Mixer Ouput 후  LPF(Low Pass Filter) 이용하여 Sum 제거  
    1. Frequency Difference : 20KHz 만 파악 가능  
https://github.com/JeonghunLee/phy_simulation/blob/main/notebooks/mixer_compare.ipynb


  • RF Mixer Output 의 Phase 비교  
복소 평면(Complex Plane) 쉽게 2개의 Diffrence 와 Sum 을 확인 가능  

https://github.com/JeonghunLee/phy_simulation/blob/main/notebooks/mixer_compare.ipynb


  • Audio Mixer 와  RF Mixer 차이
Notebook(Python) 으로 간단하게 Python으로 작성하여 아래와 같이 정리를 하였다. 
Audio Mixer vs RF Mixer 
RF Mixer 와 FIR Filter

  • Notebook(Python)으로 다양한 테스트 진행 
추후 시간이 되면 아래에 더 보강해서 넣도록 하겠음 


1.1 I/Q Mixer 이해 

처음에 왜 필요한지를 인식을 못했으며, SDR(Soft Defined Radio)하면서 아래 부분의 필요성을 알게되었다. 
I Mixer만으로는 0와 180의 위상 차이만 명확하게 감지가능하다. 
이유 아래와같이 I 가 1D 기준이기 때문이다. 
0~ 360 위상 정보를 정확하게 얻을 수 없기 때문에 I/Q Mixer가 필요하다. 
I Mixer 만 사용할 경우, I Amp도 정확성 떨어진다.
간단히 생각해서 I/Q로 2D를 만든다고 생각하면 되겠다. 
 
  • I/Q Signal 
  1. I (In-Phase) 신호  : Real 실수  =  Cos(thetha)
  2. Q(Quadrature(= 90° shift)) 신호 : Image 허수 =  Sin(theta)
  3. I+Q = 1 = arctan(Q/I)
고등학교때 배운 Sin/Cos 복소수 평면 그리는 것을 생각하면 될 듯하다. 



Sine and cosine - Wikipedia



  • I/Q Modulation 
I+Q Amp vs I/Q  Amp  비교해서 이해하도록 하자  

https://en.wikipedia.org/wiki/In-phase_and_quadrature_components#/media/File:IQ_phasor_diagram.svg


  • I+Q Amp vs I/Q Amp 비교 

  • IQ Modulation 관련 이해 
아래의 그림을 보면 쉽게 이해가 가며, Wiki에 자세히 설명이 나와 있다. 
  https://en.wikipedia.org/wiki/In-phase_and_quadrature_components#/media/File:IQ_phasor_diagram.svg


  • IQ Imbalance 문제
I/Q 의 신호가 이론적으로 정확히 맞아야 한다 ( Sin/Cos, 90도 위상차이)
하지만, 모든 것이 이론적으로 만 되지 않기 때문에 맞지 않는 경우가 발생한다. 


1.2 RF Radar/RF Comm. 

RF Radar의 경우, Mixer 사용 후에 LPF 사용하기 때문에 
아래 와 같이 Frequency, Phase Diffrence 로 Phase Detect 와 위치가 파악 가능하다  

  • RF Radar TI 문서를 보면 아래와 같이 쉽게 설명 
X1 과 X2 신호의 Frequency, Phase Diffrence  즉 LPF 후 사용 
Frequency/Phase Difference(차이)로 쉽게 Phase Detect 가능
https://www.ti.com/content/dam/videos/external-videos/ko-kr/2/3816841626001/5415203482001.mp4/subassets/mmwaveSensing-FMCW-offlineviewing_0.pdf

처음에 Radar는 I Mixer 만 사용하는 줄 알았으나, AoA를 정확하게 하려면, 
어쩔 수 없이 I/Q Mixer기반으로 정확한 Phase 구한 것 같다. 
생각을 해보면, Amp 정확성을 위해서라도 I/Q Mixer를 사용하는게 맞는 듯하다. 


  • TI Radar I/Q Mixer 사용 
처음에는 I만 사용하는 줄 알았으나, I/Q Mixer를 사용한다고 한다. 
하지만, I만 실수만 가지고도 AoA까지는 힘들지 몰라도 일반적인 Range Radar 기능은 가능하다. 


TI Complex-baseband implementation

https://www.ti.com/solution/radar

Complex baseband architecture using TI mmWave

  • WIFI/SDR(Soft Defined Radio)
WIFI의 경우를 생각해보면, I/Q Mixer는 당연히 사용해야 한다 (QAM방식과 OFDM)
SDR(Soft Defined Radio)는 WIFI Sensing 때문에 오래전부터 계속 봤는데, 이 부분도 정리를 해야 할 듯 하다. 
WIFI CSI (I/Q) Signal 확인가능  



2. RF Mixer 의 확장 이해 

Mixer 의 Phase Detect 이용하여 각 기능을 좀 더 생각을 확장적으로 할 수 있어진 것 같다. 
  1. PLL 도 쉽게 이해 
  2. I/Q Mixer (Phase 차이) Splitter/Combiner  이해 
  3. 고속 Serial PHY 칩도 비슷할 것이라 추측 (개인적 추측)
    1. 이 부분 DSP 관점에 추후 다시 설명 

1/2번까지만 이곳에서 정리하고, 3번은 다음 블로그


2.1 PLL 의 이해 

  • PLL(Phase Locked Loop) 목적 
Phase Locked Loop가 Phase 차이에 따라 Loop를 돌면서 각 변화에 따라 Lock하여 동일한 주파수를 내는 것 인것 같다.

  • PLL(Phase Locked Loop) 동작정리 
RFDH 설명이 너무 멋져서 쉽게 이해했으며, 간단히 이해 한 것만 정리  
PD -> Phase 차이 -> Pulse 생성(+/-) -> Charge Pump -> LPF -> Voltage 변환 -> Divide(Count) 변경 
개인적으로 멋진 것은 Charge Pump 와 LPF의 평준화 인것 같음(Voltage 안정, AC 제거) 

PLL(Phased-Locked Loop)


2.2 Phase Detector vs Mixer(Frequency)

  • Phase Detector 와 RF Mixer 의 차이 
  1. RF Mixer는 상위와 같이 Analog 
  2. Phase Detector는 상위 PLL 보면 Pulse로 되는 것을 보면 Digital .

Phase Detector 
Phase 차이를 Digital Pulse 길이 와 +/-으로 구분하여 쉽게 인식 
(현재 이해하길, PFD 좀 더 봐야 할듯)

Frequency Mixer 
Analog 기반의 Phase 차이 와 합 

  • PLL 과 DLL 
나의 경우, 항상 PLL 과 DLL 여러번 봤지만, PLL의 경우는 매번 PD까지는 제대로 이해하지 못한 것 같다.
DLL의 경우는 항상 DRAM에서 Timing 보정용으로 사용했다 

DLL(Delay-Locked Loop)

DLL 의 DRAM의 Trace length Timing 보정 
DLL의 경우는, DRAM에서 Clock 보정으로 사용 


2.3 I/Q Mixer 의 Splitter/Combiner

Clock/Power Splitter 관련있을 거며, 이것을 보다가 Splitter 의 기능 때문에 
고속 Serial PHY도 PD기반으로 DSP 관점으로 확장하여 생각하게 되어짐

좀 더 생각을 해보면, Analog 신호의 Splitter와 Power도 좀 더 생각을 하다가, 
이 부분은 너무 더 나아가는 것 같어서 일단 생각 중지 

예전에, DVR을 DM355+FPGA기반으로 직접 국내 최초 개발해봤기때문에, 
NTSC의 Combiner도 생각을 했으나, 머리가 너무 복잡해셔서 이 부분도 나중에~


TI Cacade Radar 구조 (Splitter 예제 )
1.2 TI Cascade Radar Clock Sync (Clock Splitter)

11/23/2025

Window 11에서 Disk 관리 (Disk Clone 과 Partition 분할)

1. Window 11의 Disk 관리방법 

  • My Laptop 의 History 
기존에 Linux/Window11 OS 2개를 동시 사용 중이었으나, Window 11 Partition의 용량 부족으로
Window 11을 나의 Laptop 재 설치하기로 결정하였다. 
참고로, Window 11 재설치시 시디키 가 필요 없다는 것을 나중에 알게되어짐

Latop Linux 설치 와 Window/Ubuntu 동시 설치 
Latop 기반에서 Window /Ubuntu 동시 설치방법 과 BIOS 관련사항 

USB Booting Disk 만들기
USB 기반의 시동 Disk 만드는 방법으로 Ubuntu/Window 에서 다 설명 
PC의 BIOS 와 UEFI 기본이해 와 MBR GPT 차이 

  • Window 11 용량부족 이유는 
VS Code 와 좀 잡다한 Tools(Canva,Wireshark) 여러 개들 설치하니 Window 11 용량이 너무 부족하며, 
이를 Window Partition 조금 확장했으나 HDD 소음이 많이 커지는 것을 우연히 발견을 하였다. 
아이러니하게, Laptop Pan 소음 보다 HDD 소음이 더 커지는 것이다. (좀 사실 소음이 짜증난다)
이 문제로 Window 11 재설치하면서, Linux를 완전히 제거 하기로 결정했다. 

  • Window 11 재설치 중 문제사항 
Window 11 재설치 도중, 모르고 NVMe에 Window 설치해야 했으나, HDD기반으로 Window 11 설치를 했다.  
그래서 Window 11 다시 설치를 해야하는 일이 발생하여, Disk Clone 하기로 결정 

  • Window 11 Disk Clon 결정 (1번째 문제)
HDD에 Window 11 설치한 나의 잘못이며, HDD사용하면 소리가 너무 거슬려서 이를 해결하기로 결정  
  1. DISK0 : HDD  (Window 11 재설치완료)
  2. DISK1: NVMe 
    1. 삭제완료 후 Disk0 Clone 

  • Window 11 Disk Partition 분할 (2번째 문제)
NVMe으로만 1Tera Byte 나누어서 사용하기로 결정 
  1. DISK1: NVMe 
    1. WIN_NVM : 이 Partition 줄이고, DATA_NVM 별도 분리시도   


2. Window 11 의 Disk Clone 방법 

  • 1번째 문제 Disk Clone
원래 처음 나의 생각은 Linux 기반으로 dd로 Disk끼리 Clone 할 생각가지고 있었다. 
하지만, 다행히 아래와 같이 Window 무료 Tool을 발견하였으며,  Window 11  쉽게 Clone 가능하였다. 

dd 와 hd/hexdump 사용법
Linux에서 dd 기본 사용법

  • Macrium Reflect 8 설치 
v8.0.7783_reflect_setup_free_x64
설치 후 Disk Clone 후 각 문제사항들을 해결해야함 

  • Disk Clon 복제 진행 과 완료 
  1. DISK0 : HDD
  2. DISK1: NVMe  

  • Disk Clone(복제) 후, HDD 내용을 삭제하기전 확인사항 
  1. NVMe Partition 정보 재확인 과 Data 확인 및 비교 와 재확인 
  2. Window USB 시동 디스크 준비 (반드시 준비)

Window USB 시동디스크 설치방법
3.1 Window 10 Pro 설치 
ESD-USB 확인 


  • Disk Clone 복제 후 여러 문제사항 간단히 정리
  1. Disk Clone 후, NVMe  EFI Partition 도 깨지는 문제가 발생
    1. Window USB Boot로 Booting하여, EFI Partition 삭제 후 재 설정으로 이를 해결함 
  2. 이외 좀 잡답한 문제들?
    1. EFI Partition 자동으로 잡히는 문제 
    2. 이외 System에서 이전 Disk 기록 문제 
각 개별 문제사항 들이 각 사항에 맞게 방법을 찾아서 해결하자. 


  • Macrium Reflect 8 최종확인 
아래는 Clone 후 다시 Partition 나누기를 한 최종화면이다.  
원래는 해결과정을 기록에 있어야 하나, 기록으로 남기지 못함  




3. Window 11 Disk Partition 축소(나누기) 

  • 2번째 문제 Disk Partition 분할
Window 11에서 Window Disk 관리자에서, Partion을 분할하기 위해서 아무리 해도 Partition Size를 못 줄일 경우가 발생한다.
이 경우 외부 Window Tool들을 사용을 하거나, 어쩔수 없이 Linux 기반으로 수정해야 할 듯하다.
외부 Window Tool 들은 다 유료인 것 같아, 나는 그냥 Linux 방법으로 하기로 결정하였다. 

  • Window Disk 관리자 (Partition 나누기,축소)
  1. Disk 0:  HDD Disk라서 안쓰기로 결정 (Pan 소리가 너무 큼)
  2. Disk 1NVMe 1T로 이것을 나누어서 사용하기로 결정함 (GPT, MBR아님)
    1. WIN_NVM: Size 나누려고 했으나, 제대로 동작되지 않아 아래에서 진행 
    2. DISK1 의 WIN_NVM을 여러번 축소를 하려고 했으나,결론은 안되는 경우가 발생 


만약, 상위에서 Partition이 축소가 잘된다면, 나처럼 복잡하게 안해도 된다.
다만 나의 경우, 별 짓을 다했으나 Partition 축소가 내가 원하는 만큼 되지않아 각 방법을 찾다가, Linux 기반으로 다시 시도하게됨 

  • Window 11 Disk Parittion 분할/축소 문제 해결방법 
  1. 상용 Window Partition Tool 사용(유료)
  2. Linux 기반해결 (무료)
    1. Gparted Live Booting  --> 어쩔 수 없는 선택 2
    2. Linux의  Gparted 이용   --> 기존 Linux 를 좀 전에, 지워서 바로 포기 (선택 1) 

  • Linux의  Gparted 이용 (선택 1)  
나의 경우, 기존 Laptop을  1T: NVMe 와 1T:HDD 사용하여 2개의 OS를 여러번 설치했다.
요즘 나의 경우, Linux 거의 필요 없는 듯하고, 더불어 HDD Pan소리가 너무 커서 제거함 
먄약 Linux에서 한다면 아래참조하고, Window WSL의 Ubutu 에서는 절대 하시지 마시길 

  • Linux 기반해결 (무료)
    • Linux 의 GParted 사용법 --> (선택 2)
나의 경우, 상위에서 여러 Window Tools을 다 사용해봤으나, 다 실패했으며, 
어쩔 수 없이 Linux 기반으로 GParted Live를 이용하기로 결정 
이전에 Linux 만 있었어도, 이 고생을 안하는데, 어쨋든 삽질을 제대로 함 

Linux GParted Live 
Linux 의 GParted 만을 별도의 Boot 와 함께 GUI 제공 


3.1 USB GParted Live Booting 준비 

USB Booting Disk 준비하는데, 이번에는 Linux가 아니라 GParted Live  준비하자. 

Rufus download
Rufus를 이용하여 아래의 Gparted-live.iso기반으로 USB Booting Disk 만들자. 

gparted-live-1.7.0.xxx.iso download


  • USB Booting 준비 (GParted Live) 
아래와 같이 Rufus 를 이용하여 GParted Live 를 USB Booting 준비 



  • Window에서 USB Booting (Gparted Live) 생성확인 
상위에서 Rufus를 이용하여 USB Booting Gparted Live 준비완료 


3.2  BIOS의 EFI USB Boot 순서 

F2를 눌러서, BIOS에서 다시 Booting 순서를 아래와 같이 변경 





3.3 USB 기반 Gparted Live만 실행  

USB 부팅으로 GPated Live 가 GUI 로 동작이 되며, 별도의 Linux가 필요가 없다. 
만약, Linux가 있다면 GParted 를 이용해도 좋다. 

  • GParted Live (default setting) 선택 
별도의 Linux 설치 없이 USB Boot에서 바로 실행해서 GParted 이용하자 


  • GParted Live (default setting) 진행순서  
  1. Don't touch Keymap
  2. Which Language do you prefer
    1. 33: US English 
  3. Which mode do you prefer?
    1. (0) Continue to Start x to use Gparted Automatically 


  • 주의사항  
BIOS 따라 약간의 문제들이 발생하지만, 그냥 각자 해결하고 넘어가자.


3.4 GParted Disk 관리자 

Window의 Disk 관리자와 거의 비슷하다고 생각하면 될 듯하다. 

  • GParted 의 Disk 관리자 
  1. /dev/nvme0nlp3 만 조절 
    1. Resize/Move 사이즈 조절 

  1. /dev/nvme0nlp3 만 조절 
    1. Resize/Move 조절 완료 후 상위 Apply 적용 

상위를 최종 조절 후, Booting 하여 Window에서 다시 해결하자.


3.5  Window 11 Disk 관리자 최종정리 

  • Window 11 Disk 관리자 
최종으로 Window 11로 재부팅하여, 아래와 같이 Disk 관리자에서 다시 조절을 하자.
각 문제사항이 있다면, 세부사항도 다 점검하시길 ~ 



4. Window 11 Disk Clone/Partition 분할 최종 결론  

나의 경우는 성공적으로 잘 되었으며, 현재까지 문제없이 잘 동작하고 있다. 
역시 Linux에서 하면 Window에서 안되는 것도 잘 된다 

너무 한정적(제한적)으로 생각하지 마시길, 항상 다른 방법이 있을테니 
어떻게 보면, 좀 무식하게 해결한것이니, 문제가 많이 발생하므로 추천까지는 하지 않는다. 

  • Lenova Laptop 참고사항 
참고로, Laptop Lenova Legion 모델 보다는 좀 더 비싼모델을 사시길~
값싼 Lenova 의 Legion 모델의 경우, BIOS에서 HDD Disable 이 되지 않는다. 
나의 경우, BIOS도 여러번 Update 했는데, 결론은 HDD 제어(on/off)가 되지 않는다 
해결방법은 직접 본인 HDD미사용하거나, HDD Disconnect 방법 뿐이다. 
나의 경우 HDD 미사용으로 결정 

  • Laptop 많은 용량 필요 이유 
참고로 2개 OS에, Yocto 때문에 NVMe/HDD 2T되는 많은 NVMe/HDD 2개 와 많은 용량이 필요했다
더불어, 이전에 Transfer learning 때문에 Memory도 많이 올렸다. 
깔끔하게, Linux 와 Yocto도 다 포기하고, Traning 도 다 포기하였다. 

Linux Yocto 


  • Lenova Laptop 분해시도  
노트북까지 분해까지 시도 했으나, Laptop 분해는 중도에 포기를 하였으며,그냥 일단 현재는 HDD 미사용 방법으로만 결정 
이유는 Laptop 을 분해 도중에, Laptop 이 왠지 중간에 손상이 갈 것 같아 포기하였다. 
Laptop 나사 푸는 게 문제가 아니라, 핸드폰 분해처럼 힌지도 있어야 할 듯하다. 
힌지 대신에, 얇은 명함으로도 해보고, 다른 쇠자로도 해봤는데 좀 위험해서 깔끔하게 포기함. 

  • Window DISK 관리 결론
현재 큰 문제 없이 동작하며, 설정도 왠만큼 거의 다 되어 큰 문제가 없는 듯 하다. 
만약 Window에서 Disk 관리가 문제가 발생한다면, Linux 기준으로 설정변경을 생각을 하셔도 될 듯하다. 
다만, 다시한번 말하지만 Window WSL 기반의 Linux 는 안되는 것으로 생각하자. 

10/29/2025

Nordic BLE Channel Sounding

1. Nordic BLE Channel Sounding 

RF-RTLS(TI Channel Sounding)
RTLS의 이해 필요 와 이전 TI BLE Channel Sounding 참고 (아참 Beacon 기반이 아님,주의)
각 Chip 제조사 별로 나중에 각 비교를 해보자. 

RF Radar 와 RF Communication 비교 
Range 측정은 Radar 1개 가능하지만, RF Communication 최소 2개 이상 필요 



  • BLE 6.0 BLE Channel Sounding 소개 
글을 읽어보면, BLE 6.0 Key Feature이며, PBR을 이용하여 거리 감지 가능하다. 
처음에는 자료가 못 구해서, 이게 Beacon 기반인 줄 착각했다. (Beacon 암호화 <-이곳에 꽂혀서)
쉽게 설명하면, BLE Channel을 생성하여, Sound 즉 일종의 Tone(PBR) 신호를 보내서 Radar처럼 거리를 감지하는 기술이다.  
물론 좀 확장되면, Radar 처럼 AoA도 가능할 것이지만, 매번 BLE Demo에는 빠져있다. 
RF 통신 기반이므로, 당연히 기기는 2개 이어야 가능하다. 

  • BLE 의 Nordic Channel Sounding Demo
아래 Nordic Demo를 보면, AoA까지는 안되는 듯하며, Range만 즉 거리만 가능한 것 같다.  


  • Nordic BLE Channel Sounding 
BT/BLE를 개발을 해본 사람이라면, 모르는 회사는 아닐 듯하다.
저번에 TI BLE Channel Sounding 데모를 보고, AoA 언급을 한 것 같은데, Noridc도 아직 AoA는  안될 듯하다.



  • Nordic 3rd Party Product 
관련 제품 군들을 나중에 이곳에서 찾아 보자 


  • Nordic BLE Channel Sounding 
  1. BLE Chip 정보 와 EVM 확인 
  2. 내가 가지고 있는 nRF7002DK는 안됨 
아래는 Initiator /Reflector 이며, 아래 이해하려면 우선 상위 이전 RTLS의 TI BLE Channel Sounding부터 이해하고 각 역할을 좀 더 보도록하자.

Initiator 

Reflector 
  https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/bluetooth/channel_sounding_ras_reflector/README.html

  • Nordic 의 BLE Channel Sounding
  1. Ranging Service Specification  각 확인 
  2. Ranging Profile Specification  각 확인 
  3. IFFT SIZE 즉 Sampe 갯 수 확인 
    1. Inverse 사용하는 이유는 보통 신호복구 


  • Nordic BLE Channel Sounding TEST Result
Anthena 4개이면, AoA도 될 듯한데, 언급이 없으며, 문서를 좀 자세히 읽어 보면, 각 Anthena를 Switch를 진행을 한다.
아직 AoA / AoD에 대한 언급 아직 없다. 



2. Nordic BT/BLE Tools

BLE를 다시 개발하면, 그 때 다시 사용해보도록 하겠으며, 항상 Nordic Tool들은 추천한다. 

보통 nRF Connect Tool 가장 많이 이용하지 않나 싶다. 
관련 BLE Profile 분석 확인 
ESP32로 BLE 개발을 해도, 필요하다. 

  • Mobile 용 BT/BLE Tools
  1. nRF Connect Device Manager : 각 Profile 분석/ Scan 기능 부터 다양하게 제공 
  2. nRF Edge Impuse 지원: Edge AI(TinyML)
https://docs.nordicsemi.com/category/nrf-tools


   

  • Nordic BT/BLE Tools
개인적으로 너무 좋으며, 이외 다양하게 최근에 다양하게 제공을 해주는 듯하다. 
나도 나중에 다시 개발을 할 경우, 다시 써보고 나서 말을 하는 것이 좋겠다. 
  1. nRF Sniffer의 경우, 나중에 Wireshark와 연결되는 지 확인 
    1. 왠지 Wireshark과 될 듯하다. 
https://docs.nordicsemi.com/category/nrf-tools



nRF 관련 Tool 
이게 더 Mobile 과 Desktop 같이 나오니 더 편하게 Download 가능할 듯하다.

BLE Sniffer 
나중에 이 부분은 가능하다면, 비교를 해보도록 하겠다. 
  https://novelbits.io/bluetooth-low-energy-ble-sniffer-tutorial/


2.1 BLE Sniffer 과 Wireshark

Wireshark는 Ethernet /USB/ WIFI 비롯하여 거의 pCap만 되면, 거의 된다.
꼼수로 기존 것을 이용해서 본인이 만들어도 좋다. 

  • ESP32 BLE Sniffer
참고로, WIFI Sniffer도 별도로 만드는 것도 가능 한듯하다. (별도로 테스트를 안 해봄) 


2.2 WIFI Sniffer 와 Wireshark

WIFI와 BLE는 항상 거의 같이부터 다니므로, 이 부분도 같이 기술을 하도록 한다. 

  • ESP32 Wireshark(WIFI)
EspressIF Manual은 전제는 PC의 WIFI가 monitor 모드가 지원될 경우이다. (착각하시지 마시길)
PC의 WIFI의 경우, Driver에 따라 동작 모드가 제한이 있으므로 반드시 확인하시길 
특히, Broadcom WIFI는 제공을 안 하며, 제공하지 않는 칩 제조사도 많다. 


WLAN
참고로, 상위내용을 더 설명하면, 각 WIFI의 경우, MLME로  걸쳐서, Ethernet2로 나오는 경우가 많다.
각 세부 사항을 알고 싶다면, WIFI Driver 내부까지 알아야 하며, 각 칩 제조사의 WIFI Driver는 대충알아야 할 듯하다. 
(요즘 WIFI Driver 직접 개발하지 않아 잘 모르겠으나, 예전에는 다 달랐으며, 아래참조)


  • ESP32 WIFI Sniffer
본인이 ESP32에서 Sniffer 직접 만들어서, tcpdump를 이용해서 적용 하는 방법도 존재한다. 
ESP32 WIFI 의 경우, 거의 모든 WIFI 기능을 마음대로 제공해서, 최적의 Sniffer가 아닐지 생각이 쉽다. 
(솔직히 이렇게 WIFI를 마음대로 Control하게 해주는 곳은 Chip 제조사 거의 본 적이 없는 듯하다)
나중에 시간이 되면, 이것을 만들도록 하겠다. 

10/28/2025

PCIe 이해 와 USB 비교

1. PCIe 의 기본 구조 
.
PCIe Layer 전체 구조 와 각 Layer 특성을 간단히 알아본 후, USB 와 같이 비교를 해보자 
일단 1차 버전으로 기본을 이해하고, USB 와 지속적으로 비교하면서 업데이를 하겠다. 

  • PCIe Layer 구조 
Ethernet 가 다르게 Layer 3개이며, USB  Layer 비슷하다고 생각되어진다.
이 부분은 나중에 다시 다루도록 하겠음 




  • PCIe 각 Layer 관련 설명
Wiki만 봐도 대충 이해는 갈 듯 하다. 


1.1  PCIe 와 USB 비교 

PCIe 와 USB 가 서로 비슷하므로, 관련 부분들을 일단 비교를 해보고 차이점을 알아보도록 하자. 

  • PCIe 와 USB 비교  
구분 PCI Express (PCIe) USB (특히 USB 3.x 기준) 차이점
Topology Point-to-Point
(Switch fabric)
Tiered Star
(Host + Hub + Device)
PCIe P2P  
USB Master-Slave 
Application Layer SW에서 보낸 Memory/Registeer 접근 요청을 처리
(e.g. Memory Read/Write, I/O, Config)
Host 에서 Description 기반의 
Class Driver 제공 및 별도 정의해서 구현가능
(e.g. Mass Storage, HID 등)
상위 연결 후 (URB)을 통신 
PCIe 자동 협상+동기화
USB Host Control 중심
Transaction Layer
(TL)
Packet 단위로 Request/Completion 처리
주소 기반(Load/Store)
USB Transfer Types
(Control/Bulk/Interrupt/Isochronous)
Transaction 을 Device 정의
PCIe는 Memory Access 중심
USB는 EndPoint 중심
Data Link Layer
(DLL)
Ack/Nak, 시퀀스 번호, CRC, 재전송 Link Command 패킷
(Flow Control, Link Management 등)
PCIe는 신뢰성(ACK/NACK) 보장
USB는 최소 Overhead
Physical Layer
(PHY)
8b/10b 또는 128b/130b
CDR, EQ(CTLE/DFE), PIPE
8b/10b(USB 3.0)
128b/132b(USB 3.1)
LFPS,
PHY PIPE
둘 다 High Speed SERDES PHY사용
둘 다 Channel 특성/속도 협상방식 다름



  • USB 관련자료 
PCIe 와 USB 간단히 비교를 해보고, 이해하자. 

  • TI USB 3.2 정보 
  1. 6  Physical Layer  --> 전체구조 파악 
  2. Section 6.9 Low-Frequency Periodic Signaling (LFPS)   -> 기능확인 (Sequence)

개인생각 
내 개인 생각이지만, 추후 CXL를 잘 사용하기 위해서는 PCIe Switch/CXL Switch 와 USB Host 연결이 중요할 듯하다.
이유는 둘 다 고속 Serial Interface 이면서, 잘 이용한다면, CXL 의 확장으로 쉽게 USB 와 연결하여 
사용할 것 같다. 
USB의 경우 역사가 깊어 Protocol 안전성 과 관련 Host Stack 이미 구현되어져 있는 게 많다. 
더불어 USB의 장점이 Device에서 Transfer Type을 설정하고, 기술하여 마음대로 전송도 가능하므로, 확장도 쉽다. 




1.2 PCIe Version 따른 개별 Layer 변화  

각 용어가 몰라도 좋으니, 그러려니 하고 넘어가도록 하며 각 변화 사항만 파악하도록 하자.

  • PCIe Version 별 각 Layer 변화 
PCIe Version Transaction Layer Data Link Layer Physical Layer (PCS / PMA / PIPE)
1.0 / 1.1 • Basic TLP (Memory, I/O, Config)
• No Atomic Ops / FLIT concept
• Basic ACK/NAK mechanism
• 8-bit Sequence Number
8b/10b Encoding (2.5 GT/s)
No standardized PIPE (Vendor-specific)
• PMA = Basic SerDes
2.0 • Adds Virtual Channels (QoS)
• Transaction Layer split enhancement
• LCRC reliability improved
• Replay buffer efficiency improved
PIPE introduced (v3.0)
5 GT/s signaling
• Same 8b/10b encoding
• PHY–MAC separation begins
3.0 • Atomic Ops added
• TLP Compression (Header Reduction)
• 16-bit Sequence Numbers
• DLLP optimization for higher throughput
128b/130b Encoding (8 GT/s)
PIPE 4.x
• Equalization / Training introduced
• Advanced LTSSM states
4.0 • Enhanced Ordering Rules
• Improved Completion Handling
• Retry buffer + Replay Timer improvement PIPE 5.1
16 GT/s, improved EQ tuning
• Enhanced Link Training sequences
• Jitter tolerance improved
5.0 • No major logical change
• Mainly supports higher bandwidth TLP
• Optimized flow control timing PIPE 6.1
32 GT/s, retimer interoperability
• Power Management enhancements (L1.1/L1.2)
6.0 FLIT-based TLP (Fixed-Length Packet) ✓
Forward Error Correction (FEC) added
Replay protocol removed (replaced by FEC)
• Simplified ACK logic
PAM-4 signaling (64 GT/s)
PIPE 6.2+
FEC engine in PHY
• LTSSM updated for FLIT and PAM-4 link training
7.0 (draft) • Continuation of FLIT architecture • TBD minor optimization PIPE 7.0 (planned)
PAM-4 extended, improved EQ/FEC interaction
• Anticipated 128 GT/s signaling


  • 주요특징정리
Transaction Layer: 3.0부터 Atomic Ops, 6.0에서 FLIT 구조로 근본적 변화
Data Link Layer: 6.0에서 FEC 도입으로 ACK/NAK 메커니즘 단순화
Physical Layer:
2.0 → PIPE 등장
3.0 → 128b/130b 전환
6.0 → PAM-4 + FEC로 신호방식 자체 변화


2. PCIe Layer 

상위 Layer 기반으로 각 기능들을 간단히 설명하도록 하겠으며, 아래와 같이 1개의 Serial 통신이 생성이 되어진다. 


2.1 Transaction Layer 


A.역할  

CPU, DMA, 또는 다른 SoC 내부 논리에서 발생한 메모리 접근, 
I/O Access, Message Transaction을  Packet(TLP, Transaction Layer Packet)으로 생성하는계층.

B.기능정리
  1. Memory Read / Write, I/O Read / Write, Configuration Read / Write 등의 Trasaction 정의
  2. 각 요청(Request)과 응답(Completion) 관리
  3. Address Translation, BAR (Base Address Register) Mapping
  4. MSI/MSI-X Interrupt 관리
  5. Flow Control 관리 
    1. Credits 방식
B.세부사항  
  1. 실제 PCIe Core (Controller) 의 대부분의 로직이 여기에 있음
  2. 펌웨어/드라이버는 주로 Transaction Layer 레벨에서 동작 (메모리 접근, DMA 제어 등)
  3. SW ↔ HW 인터페이스는 Configuration Space (PCI Config) 를 통해 이루어짐

2.2 Data Link Layer


A. 역할

Transaction Layer에서 내려온 TLP에 대해 신뢰성을 보장하고, ACK/NACK 기반의 재전송 메커니즘을 수행한다.
Network 치면, TCP와 유사할 것 같다. 
즉, “Reliable Delivery”를 담당

B. 기능정리
  1. Sequence Number 관리 (순서 보장)
  2. LCRC (Link CRC) 계산 및 검증
  3. ACK / NACK 프로토콜 (Data Link Layer Packet, DLLP 사용)
  4. Flow Control Credit 업데이트 (DLLP 통해 전송)

C. 주요패킷 종류
  1. TLP (Transaction Layer Packet): 실제 데이터
  2. DLLP (Data Link Layer Packet): 제어 정보 (ACK/NACK, Flow Control 등)

B. 세부 사항  
  1. TLP이 손상되거나 순서가 어긋나면 재전송 요청
  2. PHY 신호 오류는 Data Link Layer에서 검출하여 자동으로 복구
  3. 한 Link마다 독립적으로 동작 
    1. (ex. Root ↔ Endpoint, Switch ↔ Device)

2.3. Physical Layer


A. 역할

Data Link Layer에서 전달 받은 데이터 패킷을 직렬화(Serialize) 하여 실제 신호로 전송하고, 수신 데이터를 복원(Deserialize) 한다.
전송 매체는 AC-Coupled Differential Pair (Tx/Rx Lane) 로 구성된다.
중간에 Bypass Capacitor 사용하여 ,즉 AC로 전송을 하는 구조이다.  

B. 하부구조

A. PCS (Physical Coding Sublayer)
  1.  Encoding/Decoding
    1. 128b/130b (Gen3 이상)
    2. 8b/10b (Gen1/2)
  2. Scrambling/Descrambling (DC Balance 유지)
  3. Lane Alignment, Symbol Lock
  4. SKP Ordered Set 삽입 (Clock 보정용)
  5. PIPE 인터페이스
B. PMA (Physical Medium Attachment)
  1. Serializer / Deserializer (SerDes)
  2. Equalizer (CTLE, DFE 등)
  3. Clock Data Recovery (CDR)
  4. Transmit Driver / Receiver Front-End
  5. Eye Diagram, Pre-emphasis 등 실제 아날로그 신호 특성 조정

  • PHY 의 PCS vs PMA 비교 
구분 PCS (Physical Coding Sublayer) PMA (Physical Medium Attachment)
성격 Digtal Logic Analog/ Mixed-signal
주요 기능 • Encoding/Decoding (8b/10b, 128b/130b)
• Scrambling
• Alignment
• LTSSM
• SerDes
• Equalization
• CDR
• Voltage swing
주요 위치 Controller Side Channel(Lane) Side
주요 변화 PIPE 3.0~6.0 사이 인코딩 변화 PCIe 3.0부터 EQ·CDR 고도화


  • Serializer / Deserializer (SerDes)
  1. Controller에서 오는 병렬 데이터를 직렬 신호로 변환 (TX)
  2. 수신 시 반대로 직렬 데이터를 병렬로 복원 (RX)
  3. PCIe x1, x4, x8, x12, x16, x32 Lane  동작

  • Equalization (Channel 보정)
  1. 신호 감쇠, 반사, ISI(inter-symbol interference)를 보정
  2. 송신단 (Tx Pre-emphasis / De-emphasis)
  3. 수신단 (Rx CTLE, DFE) 조합으로 수행
  4. PCIe 3.0 이후에서 매우 중요해짐

  • CDR (Clock and Data Recovery)
  1. 수신 신호에서 클록을 복원하여 비트 타이밍 동기화 수행
    1. Inverse Filter를 사용하여 복원 
  2. Eye Diagram을 기반으로 샘플링 포인트 결정

  • Electrical Interface
  1. 전압 스윙, 신호 스펙트럼, 임피던스 매칭, EMI 최소화
  2. 실제 Package Pin / PCB Trace/ Connecter / Cable과 직접 연결

3. TI 와 AMD  PCIe Controller 분석 


TI PCIe Controller

AMD PCIe Controller 


3.1 USB-DRD(Dual Role Data) 정리  

USB의 경우, Host 와 Device 즉 Master / Slave 구조라서 각 Role 의 역할이 정해져 있으며, 협상을 통해 이를 정하는 기능이 존재했다. 
그것이 기존의 OTG이고, USB Type-C  기존 OTG에서 확장된 개념으로 생각하면 될 듯하다. 

  • i.MX6 OTG/DRD(Dural Role Data) 이해 
USB OTG(On The Go) 이해해야, DRD(Dural Role Data)  이해가 가능 

  • USB 3.0 이후 OTG 와 DRD 차이점 
USB OTG 차이를 생각하면, 단지 Host / Device Role 구분 뿐만 아니라,
USB-PD(Power Delivery)가 Source/ Sink 구분되어 
기존의 USB Host에서 만 전원을 제공하던 개념이 깨진 것이 핵심일 것 같다. 

  • USB-DRD(Dual Role Data)
AMD USB 3.2 DRD(Dual Role Data) Controller 

10/17/2025

CXL 의 이해 와 구조

1. CXL(Compute Express Link) 의 이해 

CXL (Compute Express Link) 에 대해 급하게 알아야 할 듯하여,관련 자료들을 수집하고 학습. 

  • CXL(Compute Express Link) 란?
PCIe 기반으로 사용되어지는, 고속 DMA Controller 비슷할 것 같다. 
즉 CPU 입장에서 생각하면, 각 Cache 에 연결된 AMBA(AHB,APB,AXI) 와 DMA를 이용하여 각 Memory 고속으로 전송하는 Bus Switch Interface가 맞을 듯 하다 

  • UCIe
CXL 기반으로 출발한 것 같으며, 현재 Chiplet이라는 ,즉 실리콘 즉 반도체에서 이를 다 연결하려고 하는 Interface가 맞을 것 같다.

  • PCIe
PCI에서 발전된 Bus로 PCI/HPI는 직접 Driver를 개발했지만, PCIe 직접 개발해보지 못해 이 부분은 나중에 별도로 정리하도록 한다. 
요즘은 솔직히 Kernel Platform화가 잘 되어있어, 개발보다는 주로 설정하고 변경하는 것이라 이 부분은 별도로 기회가 있으면 다시 정리하도록 하겠다. 

  • CXL 의 개인적 생각 과 결론 
종합적으로 보면, CXL는 PCIe Interface 이용하지만, CPU 의 내부에서 비교하자면, AMBA(PCIe) 역할과 DMA Contorller 와 Memory Controller 가능 일 것이다. 
그러니, CPU 밖에서, 다양한 CPU들 과 연결하는 것도 쉽게 가능 하리라고 본다. 
더 나아가 왜 UCIe가 실리콘, 즉 반도체  위에서 한다는 이유도 대충 이해가 가는 듯하다. 


1.1 CXL 구조 와 CXL Type 

  • CXL 구조 와 Type 의 이해 
CXL에 대해 쉽게 설명이 되어 있어 , CXL 기본 구조 와 Type 1/2/3 쉽게 이해 
CXL 2.0 이 후 Type1/2/3 기반으로 연결 확장 가능하며, 이를 다양하게 더 확장이 가능 설명  

  • CXL 의 Spec 과 이해 
1.6 Flex Bus Layering Overview : Flex Bus 의 이해 
2.0 Compute Express Link System Architecture : CXL의 Type1/2/3 의 이해 
PDF의 좌측 Index 기반으로 각 살펴보면,  쉽게 감이 잡히는 듯하다 
관련 그림들은 혹시 문제가 될 듯해서 가져오지 않음 

Compute Express Link Consortium
  1. CXL 최신 Spec 신청가능하며 왠지 무료는 아닐듯?
  2. 일단 Spec 1.0으로만 만족 
 

  • CXL Device Type 1/2/3 구조 와 역할 
CXL Type 포함 프로토콜 주요 역할 예시 디바이스 특징
Type 1 CXL.io + CXL.cache 가속기(Accelerator) – 호스트 메모리를 캐시 형태로 접근 Smart NIC, FPGA Accelerator, AI Inference Engine 자체 메모리는 거의 없고, Host DRAM을 Cache Access 함
Type 2 CXL.io + CXL.cache + CXL.mem 고성능 가속기 – Host 메모리 접근 + 자체 메모리 공유 가능 GPU, FPGA with onboard HBM, AI Chip 호스트와 디바이스가 서로의 메모리에 Coherent Access
Type 3 CXL.io + CXL.mem 메모리 익스팬더(Memory Expander) – Host에 추가 메모리 제공 CXL.DIMM, CXL Memory Card, Persistent Memory CPU가 Device 메모리를 Load/Store 식으로 사용


  • CXL Controller 관점의 비교  
각 Host 와 CXL Device(CXL Controller) 관점에서 비교를 해보자. 
Cache 에 따라 성능이 변경되므로, 
Coherency Directory 즉 Cache 의 일관성을 어디까지 해야 하는 지이며, 알고리즘은 어떤 것을 쓰는지 또, 범위는 어디까지 하는 지가 중요하다(이 부분 다시 밑에) 

구성 요소 Type 1 Type 2 Type 3
CXL.cache
CXL.mem
CXL.cache
Coherency Directory (Host side only) (Host + Device side) (Host side only)
Local DRAM Access
목적 Compute 가속 Compute + 메모리공유 Pure Memory 확장

  • CXL Device Type1/2/3 확장 (결합)
CXL 2.0 이상부터는 이 Type 1/2/3 디바이스를 스위치와 Fabric구조에서 논리적 결합(Logical Device) 으로 묶을 수도 있다고 한다. 
증권사 자료이지만, 이해 하기가 자료 좋음 

  • CXL Fabric 간단 정리 
지능형 연결망이라고 하는데, 각 기능들을 Thread 즉 실로 보고, 이를 엮어서 각 기능들의 총체적인 기능을 말한다고 한다. 
즉 CXL Fabric 구조는 여러 외부 CPU들 과 다양한 Peripherial 들 연결 확장까지도 생각을 해볼 수 있는 것이다. 



1.2 CXL Swtich 구조 

다양한 PCIe Channel 들을 처리하기 때문에 Arbiter/Mux 는 역할이 중요할 것 같으며, 
즉, DMA Controller 역할이 비슷할 거라고 생각되어진다.
상위 Spec1.0 보면 다양한 기능들이 들어가면서, 다양한 기능들을 처리하려면, 단순한 DMA Controller가 아닌 복합적인 DMA Controller 동작할 거 같다. 

CXL Switch 역시 여러 CXL Device Type 1/2/3 조합으로 각 CXL switch 마다 각 기능이 다 다를 것이다.  

여러 CXL Device Type 1/2/3 조합이 가능하므로, 아래로 한정적으로 생각하지 말자. 


CXL Switch Diagram


  • CXL 2.0 부터 추가되어진 기능 
기능 역할
Address Mapping / Routing 어떤 요청이 어느 Type으로 가야 하는지 결정
Coherency Management 여러 Type 2/3 장치가 같은 주소 접근 시 캐시 일관성 유지
QoS / Credit Flow 트래픽 제어 및 우선순위 관리
Memory Pooling / Partitioning 여러 메모리 모듈을 하나의 논리 풀로 묶음
Security (IDE) 각 링크별 암호화 및 키 관리


1.3 Rambus 의 CXL Controller IP 확인  

실제 CXL Controller IP 팔고 있는 곳이 있기에 관련 부분을 보도록 하자 

  • Data Encrytion 의 이해 
AES의 대칭키 이해와 KEY 운영 GCM 확인 

  • CXL Controller IP기능 확인
  1. CXL Controller 3.1 vs CXL 2.0 비교 
  2. CCIX(Cache Coherent Interconnect for Accelerators) Controller  각 기능 
  3. CXL Controller  -> 거의 이게 핵심 
    1. PIPE 부분은 PCIe 와 같이 봐야 할 듯 

  • CXL 2.0 Controller 의 구조 
  1. CXL 2.0 Controller 
    1. CXL Protocol Layer
    2. User Interface Layer
    3. Integrity and Data Encryption (IDE)  -> AES-GCM 방식
    4. Unique Features & Capabilities
  2. CXL 2.0 Controller with AXI Block  
    1. ARM과 AMBA 호환 
  
  • Rambus CXL 2.0 Controller with IDE 
  1. IDE(Encrytion)의 Zero Latency  
    1. AES-256-GCM, GCM 이외 CTR 지원 가능
  2. 상위와 CXL 2.0 Controller 와 동일 

  • PCIe 의 구조 
  1. PCIe Contoller 
  2. PCIe Switch 
  3. PCIe Phy
CXL의 이해하려면 PCIe의 Phy를 사용하므로, 이 부분은 어 쩔 수 없이 봐야 할 듯하다 



2.  CXL 의 Cache 이해 

CXL의 Cache 는 아주 중요한 개념이며,  어떻게 보면, CXL 성능 핵심 기능일 듯하다.
즉 Cache 알고리즘에 따라 각 CXL의 성능이 달라질 것이며, 이 부분은 거의 회사마다 민감한 문제가 있을 듯하다. 


2.1  Cache Coherence 의 이해 

  • CPU 입장 의 SMP 관점 
다중 코어의 cache-coherency protocols 이용하여 1개의 Core처럼 사용을 하려 한다면, 어떻게 해야 하지  

  • OS 입장의 SMP vs AMP 관점 
OS 입장에서는 다중 코어일 경우,  SMP vs AMP 어떻게 Scheduling 할 것인지, 즉 방법 
Linux 의 경우, SMP기준으로 많이 사용 

  • CPU Cache Coherence 의 기본이해 
각 독립적인 Cache를 Sync를 맞춰주는 작업이며, 아래 그림을 보면 쉽게 이해 간다.
그럼 Why 사용할까 , ARM 같은 다중 코어 일 때, SMP로 Task Scheduling 하려면,  Cache Coherence의 역할은 중요하다 
이유는 아래같이 여러 Core 같이 동시에 나누어서 작업을 해야 하기 때문이다. 

https://en.wikipedia.org/wiki/Cache_coherence#Overview


  • Cache Coherence 의 문제
각 CPU  Cache의 Coherence를 맞추어 주는 것은 좋으나, Cache Coherence의 범위를 예측을 못하는 문제가 발생하다. 
SMP 기준으로 간단히 생각을 해보면, 
모든 CPU의 Cache가 Coherence되어, 1/2번째 CPU는 작업을 나누어 완료 후, 3번째 CPU의 Cache 오래되어, 이제 필요가 없어지는 문제이다. 

  • Cache Coherence 의 개인 생각 정리 
결과적으로, Cache Coherence 범위, Cache 사이즈 및 갯 수 정확하게 제대로 예측 못하면, Cache의 Hit 율이 계속 떨어지고 효율은 낮다. 
어떻게 보면, Cache 예측과 Coherence 범위가 가장 중요할 듯 하다 

좀 더 세부적으로 Cache Coherence 생각해보면, 아직 아래 Protocol도 이해를 못했지만, 
Cache Coherence 운영을 하는 입장에서 생각을 해보면, 다음과 같은 생각도 얼마든지 해볼 수 있다.  
  1. Cache Coherence를 3가지로 A.전체/B.부분(범위)/C.제외 이런 식으로 될 것 같기도 하다. 
  2. 가중치(weight,bias)기반으로 매번 Cache Coherence 변경되어지거나 다양하게 생각 할 수 있을 것 같다.
  3. CNN으로 TinyML 사용해서, 가중치 대신해서 사용 가능 할 것 같다. (다양하게 생각이 듦)
이 부분은 Spec 과 나중에 Cache Corency Protocol 이해 후 다시 생각해 보고, 이해해보도록 하자 


ESP32 Cache 와 Memory 비교 
개인적으로 ESP32 CPU 설계를 잘했다고 생각을 하며, ESP-IDF 역시 너무 잘 구현을 해놨다.



2.2 Cache Corency Protocol 

우선적으로 Cache Corency Protocol 이해 하기 위해서 각 Cache 상태들 부터  이해 해보도록 하자  
머리가 나쁘면, 고생이다. 

CAPI(Coherent Accelerator Processor Interface)

  • Cache 의 상태 이해 
Cache Coherency Protocol States 
상태 약어 의미 설명 
M Modified / D / Dirty / DE / EM - 한 개의 캐시에만 존재하고 수정된(Dirty) 상태
- 메모리 내용은 오래된 값 (아직 반영 안 됨)
- 교체 시 반드시 Write-back 필요
O Owner / SD / SM / T - 여러 캐시에 복사본 존재하지만 메모리는 오래된 값
- 한 캐시만 “소유자(Owner)” 역할
- 다른 캐시의 읽기 요청 시 Owner 캐시가 데이터 공급
E Exclusive / R / VE / EC / Me - 한 캐시만 데이터 보유하고 메모리와 동일(clean)
- 다른 캐시에는 복사본 없음
- 쓰기 시 바로 M(Modified)로 전환
S Shared / V / SC - 여러 캐시에 동일 데이터 복사본 존재
- 주로 읽기 전용(Read-only) 상태
- 메모리와 일관됨 (clean)
- 단, 일부 프로토콜(예: Dragon)은 Shared Clean이 dirty일 수 있음
I Invalid - 유효한 데이터 없음 (태그 불일치 또는 무효화됨)
- 접근 시 메모리나 다른 캐시로부터 새로 읽어와야 함


Special / Extended States (MESI 확장형)
상태 이름 설명
F (또는 R) Forward / Recent - Shared 상태 중 대표 캐시(Forwarder)가 응답 역할 담당
- 동일 데이터가 여러 캐시에 있을 때 메모리 대신 이 캐시가 응답(intervention)
- Intel: MESIF, IBM: R-MESI (MERSI)
H Hover - 캐시에 주소 태그만 유지, 데이터는 무효(Invalid)
- 버스에서 해당 주소가 탐지되면 빠르게 유효(S) 상태로 복귀
- HR-MESI, HRT-MESI 등에서 사용되어 검색 속도 개선


  • Cache Status 요약 비교
상태 캐시에 존재 메모리 최신성 공유 가능성 쓰기 가능성 설명
M ✔ 있음 ✘ 오래됨 수정됨, 아직 메모리 반영 안 됨
O ✔ 있음 ✘ 오래됨 여러 캐시 중 한 곳이 최신 데이터 소유
E ✔ 있음 ✔ 최신 유일한 캐시 복사본, clean 상태
S ✔ 있음 ✔ 최신 여러 캐시에서 읽기만 가능
I ✘ 없음 ✔/✘ 불명 데이터 없음 또는 무효 상태
F ✔ 있음 ✔ 최신 공유 중 대표 캐시(Forwarder)
H 태그만 존재 주소만 남겨 빠른 재활성 가능


Cache Corency Protocol 의 종류 와 알고리즘 
각 알고리즘의 흐름이 변경되어지는 것을 대충 알 수 있으며, 이 부분은 나중에 좀 더 확인하자.


MESI 의 이해 (대표적)
아직 완벽히 이해가 되지 않은 상태 

MESIF 의 이해 (요즘?)
아직 완벽히 이해가 되지 않은 상태 



3. CXL 의 Linux Manual  

현재 Linux를 잠시 보면, CXL는  Device Type 3으로 메모리 확장용 으로만 사용하는 듯하다. 

  • Linux Device Driver (CXL)
  1. CXL Linux Device Driver 와 Manual 
  2. CXL Device Type 3으로만 사용? 
CXL Device Type 3(Memory 확장용)로만 사용한 것 같으며, Manaul도 거기 까지 인듯하다. 

  • Linux UserSpace
  1. CXL Linux User Manual 
  2. CXL ioctl 이용 


3.1 CXL 의 Linux Kernel 소스 

Linux Kernel 소스 찾아 각 부분 확인 

  • PCI의 ACPI 의 정보 
다만 PCIe가 아닌 PCI 인듯하며, PM 제어는 오래전부터 존재 했던거 같다. 
상위 CXL 1.0 Spec을 보면 PM제어는 부분이 많이 나온다. 

  • BIOS 와 ACPI 관련이해 
BIOS 에서 사용하는 UEFI의  ACPI(Advanced Configuration and Power Interface)  


  • CXL 의 Core 소스 (Linux Kernel)
  1. 상위 Device Type 3 의 Memory 확장형 소스 인것 같음 
  2. Memory 를 보면 주로 모듈형 RAM을 제어 DIMM

  • CXL 의  이외 소스 (Linux Kernel)
  1. 상위 Core 기반으로 Memory 확장형에  ACPI 기술이 첨부
    1. UEFI 의 ACPI(Advanced Configuration and Power Interface)  
  2. PCIe를 그냥 PCI로 기술을 하는 듯함 



상위 Device Driver 와 각 Spec 1.0을 보면서 느낀 점을 정리하자면 아래와 같다. 

  • CXL Switch 의 개인생각 
CXL 관련 Linux Kernel 소스 부분 확인 및 구조 확인 했지만, Device Type 3만 확인되는 듯하며,
CXL Switch Driver(각 CXL Type1/2/3 복합적 연결)는 아직 발견을 못했으며, 
분명, USB Host 처럼 Bus 형태의 Driver 일 것 같은데, 현재 각 제조사마다 다 다를 테니 이것은 초창기 USB Host Controller와 비슷하게 갈 듯하다 

또한, 분명히 CXL Switch가 구조화가 복잡하게 되므로, USB Host처럼 각 Device 의 구조를 설명하는 Description 형태로 각 설정을 변경하는 구조로 갈 듯하다. 왠지?
상위 부분은 Spec을 보고 나중에 다시 생각해보자  


  • CXL 기반의 AI 업체 개인생각 
H/W 입장에서 보면, CXL기반의 AI 업체들의  핵심 개발은 왠지  CPU 와 GPU 와 NPU 의 CXL.cache 가 가장 중요할 듯 하다. 
이유는 SRAM을 가장 효율적으로 빨리 동작 시켜서 DRAM기반으로 VRAM으로 성능 최적화를 하려고 할 것 같다. 

S/W 입장에서 보면, NVIDIA처럼 이제 AI H/W 도 중요하지만, 오히려 S/W Platform의 다각화가 더 중요할 듯하다. 
(NVIDIA 사이트만 가봐도 이해가 되며, Training 대충 경험이 있다면 이해가 더 빠르다)


3.2 Linux 의 Yocto 

Yocto 기반의 Linux에서 CXL 관련부분 을 검색하고 자료 수집 하려 했으나, 아직 제대로 찾지를 못함 
나중에 찾으면, 아래에 링크를 추가하겠음 

  • Yocto 의 기본이해 
Yocto 의 기본이해 



  • Yocto 의 openembedded Layer 확인 
각 최신 버전 과 Layer 확인 했지만, 아직 발견 못함 
CXL Switch 일 경우, 각 Bus Driver가 있어야 할 듯한데, 흐음? 



3.3 Linux 의 QEMU 

Linux Kernel에서 QEMU의 기반의 CXL 부분 확인 

  • QEMU 의 Linux Device Driver (CXL) 
  1. CXL 전체 구조를 보면 역시 Device Type 3 메모리 확장형만 사용 
    1. CXL 2.0  Type.1/2/3 지원 (문제는 Type 3만 사용)
    2. KERNEL CONFIG 확인 
    3. QEMU 으로 동작되는 것을 확인 
      1. 아래 링크 확인