Alibaba 클라우드 FPGA: 200달러 Kintex UltraScale+
(essenceia.github.io)- Kintex UltraScale+ FPGA 보드를 200달러에 구입해 개발 플랫폼으로 활용하는 실험 소개임
- 이 보드는 공식 문서나 보증 없이 판매되어 JTAG 디버깅 및 초기 설정에 도전 과제가 있음
- OpenOCD와 Segger JLink를 활용해 독자적으로 FPGA 구성 및 디버깅 환경 구현 가능성 탐색함
- 중고 FPGA의 PCIe/이더넷 인터페이스 검증 및 핀 배치 확인, 시스템 모니터링 등이 실험 목표임
- 초기화 및 JTAG 연결, 스캔 체인 파악, 온도/전압 모니터링까지 단계별 절차와 문제 해결 경험을 정리함
들어가며
- 필자는 대규모 프로젝트의 프로토타이핑을 위해 강력한 FPGA, 특히 Xilinx Virtex 계열의 UltraScale+를 원했으나, 비용 문제와 Vivado 엔터프라이즈 라이선스 부담으로 WebPack 지원 Kintex UltraScale+ 칩(XCKU3P, XCKU5P)으로 선택을 좁힘
- 해당 칩들도 취미용 수준을 넘어 LUTs와 GTY 트랜시버 등 높은 사양을 제공함
- 최소 2개의 SFP+ 혹은 1개의 QSFP, JTAG, PCIe x8 이상의 조건을 충족하는 개발 보드가 필요했으며, 직접 설계, Alinx 제품 구매, 중고 시장 탐색 중 Ebay에서 Alibaba Cloud 가속기 FPGA 보드를 200달러에 구매함
- 구매한 보드는 문서 지원이 전무하고 정상 동작 여부도 미지수였으나, 저렴한 가격에 Kintex UltraScale+ 보드를 해킹하는 데 매력을 느낌
디버거 도전과제
- Xilinx의 UG908 문서에 따르면 권장 JTAG 프로브로 FPGA를 구성/디버깅하는 것이 일반적이나, 고가의 공식 프로브 대신 오픈소스 대안(OpenOCD 등)을 시도함
- Xilinx의 공식 툴체인(ILA 등)을 포기하는 대신, JTAG USER 레지스터 기반 자체 디버깅 로직을 개발할 수 있음
- OpenOCD는 ARM/RISC-V용으로 주로 사용되지만 광범위한 프로브, JTAG 작업 세밀 제어, SVF 포맷 지원 등 FPGA에도 활용 가능
- UltraScale+ 시리즈 지원 관련 문서는 희박하나, JTAG 및 SVF 표준과 스캔 구조는 유효함
전체 계획
- Ebay에서 저렴하게 구매한 중고 FPGA 보드를 공식 지원 없는 오픈소스/비공식 프로브(OpenOCD, JLink 등)로 구성해 개발 플랫폼으로 활용하는 단계별 실험 계획임
- 각 단계는 보드의 장치 동작 확인 → JTAG 디버거 연결 → 핀 배치 찾기 → 비트스트림 전송 단계로 진행됨
1단계 - 보드 정상 동작 확인
- Flash 메모리가 지워지지 않았다면, 이전 사용자 비트스트림을 통해 PCIe 엔드포인트 식별 또는 SFP PHY 이더넷 신호 유무로 동작 여부를 1차 확인할 수 있음
2단계 - JTAG 디버거 연결
- JTAG 인터페이스 핀 위치 및 연결된 디바이스 수, Daisy chain 현황 등 파악 필요
- FPGA의 JTAG 시스템 레지스터(특히 SYSMON)를 통해 온도/전압 실시간 모니터링도 활용 가능, openOCD의 지원 확대도 기대됨
3단계 - 핀배치(핀아웃) 파악
- 외부 클럭원 종류/주파수/연결핀, SFP 및 PCIe와 연결된 트랜시버 정보 등 실물 회로 분석 필요
4단계 - 비트스트림 쓰기
- JTAG을 통한 임시 구성(bypass Flash), openOCD virtex2 + pld 드라이버 또는 Vivado에서 생성한 SVF 재생 방식 활용 계획
- Vivado → SVF 전환 전체 플로우 자동화 예정
보드 수령 및 초기 테스트
- Alibaba Cloud 가속기 출신 Kintex UltraScale+ FPGA(XCKU3P-FFVB676) 보드 및 SFP28 25G 후아웨이 트랜시버, OS2 패치 케이블 등 동봉품 수령
- 보드는 다소 사용감이 있으나 구성품 및 PCIe/SFP 상태는 양호함
스탠드얼론 전원 확인
- PCIe-USB 어댑터로 간단히 전원 주입 및 LED/HW 발열로 전원 유무 1차 확인
PCIe 인터페이스 실험
- Raspberry Pi 5의 PCIe Gen2.0 x1 외부 인터페이스를 활용해 FPGA(Gen3.0, x8 지원)를 테스트하면, 역호환성으로 정상 인식 기대됨
- 리눅스 dmesg 로그 상 PCIe Bridge, endpoint(이더넷 유형)로 보드 인식됨; 베타적 vendor/device id 지정으로 OS 충돌 방지
- lspci -vvv 명령으로 전체 PCIe 장치 상태 확인: 본 보드가 Gen3.0 x8 지원 속성이 명시되어 있으나, 실제 Pi와 연결 시 bandwidth/speed가 Gen2.0 x1로 다운그레이드됨(Bridge 한계 및 실제 물리 연결 제한 때문)
- 이를 통해 FPGA 보드 PCIe 인터페이스 정상 동작 확인
JTAG 인터페이스
- Xilinx FPGA는 JTAG로 내부 CMOS Configuration Latch(CCL)를 SRAM 방식으로 갱신/로드 가능
- 실물 보드의 JTAG 인터페이스는 표준 4선(TCK/TMS/TDI/TDO) 및 전원/접지 신호로 구성됨; 리셋은 Xilinx FSM을 통해 구현 가능
- 실제 핀 배열은 표준과 달라 별도 배선 필요
Segger JLink 활용
- AMD 공식 JTAG 프로그래머 미보유 상태에서 Segger JLink를 OpenOCD와 함께 사용
- JTAG은 4개의 GPIO만 있으면 구성이 가능하므로, 임기응변 실험에 적합
- JLink → FPGA 보드간 배선 도식 제공, 브레드보드용 점퍼와 긴 신호 지연 발생 감안해 TCK(클럭) 속도를 1~10MHz로 제한 설정
OpenOCD 환경
- OpenOCD는 다양한 프로브/보드를 지원하는 오픈소스 on-chip 디버거임
- 표준 SVF 포맷 지원(Vivado와 연동), 회로 오픈소스화로 문제 발생 시 직접 분석/패치 용이성 확보
- 최신 OpenOCD(0.12.0+dev)와 JLink 라이브러리를 직접 빌드하여 사용
JTAG Scan Chain 확인 및 IDCODE 체크
- 보드 회로도를 알 수 없는 상태에서 OpenOCD의 자동 스캔 기능으로 JTAG 체인 내 디바이스/IDCODE 탐색
- 본 보드는 Xilinx KU3P의 IDCODE(0x04a63093)와 일치 확인됨
- IR길이(명령 레지스터 길이 6비트)까지 수동 지정하여 정상 탐지
- 최종적으로 보드 JTAG scan chain이 정리됨
SYSMON 시스템 모니터
- Xilinx 구세대는 XADC, UltraScale+ 계열은 SYSMON4로 온도/전압 측정 기능 내장
- openOCD 기본은 SYSMON JTAG 연동 미지원, 직접 추가 필요
- SYSMON(DRP) 명령 전송 및 status 레지스터을 통한 온도/전압 실시간 확인 기능까지 스크립트로 해킹할 수 있음
이상의 과정을 통해, 공식 지원 없는 구형 Alibaba Cloud FPGA 가속기 보드를 저렴하게 구해 오픈소스 도구 만으로 디버깅 및 활용 기반(PCIe/JTAG 인터페이스, 시스템 모니터링) 정립 경험을 기록함
Hacker News 의견
-
Raspberry-PI V로 Lattice Certus-Pro NX "Versa" 보드의 PCIe 인터페이스를 테스트해 봄, 정말 편리함을 느낌 Raspberry-PI V가 최신 데스크탑 소프트웨어(Microsoft Teams까지!)를 구동할 만큼 빠름 FPGA 디자인을 라이브로 데모하고 컨퍼런스 콜 중 데스크탑 화면을 공유할 수 있었음 Broadcom의 SoC 문서화가 부족한 점만 아쉬움 Intel은 NDA를 거치면 모든 칩 문서를 제공해 줘서 Xeon Ivy Bridge에서 멋진 FPGA PCIe 환경을 구현할 수 있었음 PCI 구성 레지스터를 저장한 뒤 FPGA를 재구성하고 다시 레지스터를 프로그래밍하면 서버를 리부팅하거나 재검색(re-enumerate) 없이 칩이 버스에 나타나서 매우 편했음 비결은 재구성 중에 루트 컴플렉스 비트를 임시로 설정해서 PCIe 에러 감지를 비활성화하는 것임 (그 당시 Altera Stratix-IIgx를 사용했음) 또 다른 방법도 있을 것 같으니 참고 자료를 남김: Stack Overflow 링크 전체적으로 문서화가 잘 되어 있으면 PCIe 시작 과정에서 에러 리포팅이 매우 유용함
- 정말 멋진 트릭임을 느낌 내 경우 Linux에서 PCIe 설정을 만지다가 여러 번 이슈를 겪었음 우리는 결국 Partial Reconfiguration을 사용해서 PCIe 부분은 그대로 두고 다른 부분만 다시 로드하는 방식으로 해결함 레이아웃 및 공간 예약 측면에서 분명히 트레이드오프가 있었음
-
FT2232H 어댑터를 갖고 있다면(혹은 없다면 하나 구입 추천), 이 어댑터는 Vivado와 쉽게 호환되도록 플래시할 수 있음 참고: Vivado FTDI Device Programming 가이드
-
우리 회사에서는 FT2232H를 항상 20-30개 재고로 보유 중임 GPIO, I2C, SPI, parallel FIFO 등 다양한 프로토콜 지원이라서 정말 유용함 그리고 pyFTDI Python 라이브러리가 뛰어남
-
이 어댑터가 다른 프로젝트에서 남아있는데, FPGA 작업은 해본 적이 없음 Vivado와 호환된다는 게 실제로 어떤 의미인지 궁금함 AMD FPGA 구성이 가능한 건가, 아니면 다른 의미가 있는지 질문임
-
-
Alibaba가 데이터베이스 분야에서 FPGA 클러스터로 LSM compaction을 커스텀 MySQL 스토리지 엔진으로 처리했던 혁신적인 사례가 떠오름 참고: 관련 논문 PDF RocksDB 대비 처리량과 지연 시간이 대폭 향상되었고, 일부 작업에선 한 단계 높았음 이 기술을 서비스로 제공하기도 했지만, 결국 철수함 아직도 자체 활용 여부는 모르겠지만, 반복적인 데이터베이스 작업에 하드웨어 가속을 활용하는 곳이 거의 없다는 점이 놀라웠음
- AWS도 몇년 전 Redshift에서 자체 하드웨어 쿼리 가속기를 사용함 참고: Redshift AQUA 소개 최근에는 AWS가 P&L에 좀 더 집중하고 있어서 주목도나 성능 향상 효과는 잘 모르겠음
-
FPGA PCIe 혹은 PCI 카드에 관심있다면 중고 Gidel 보드도 상당히 많이 있음 ProcSpark/ProcStar 등 다양한 시리즈 존재 공식 소프트웨어는 프로프라이어터리이고, FPGA가 여러 개라서 Quartus에서 바로 쓰려면 핀아웃 찾는 과정이 필요함 나는 거대한 Stratix IV가 장착된 보드를 하나 얻었음 Kintel UltraScale+ 보드는 정말 탐나는 수준이라 이 글이 무척 인상적임
- Gidel의 HawkEye 20G-48에 대한 최고 레벨 Verilog 모듈과 Vivado .xdc 파일(핀맵, 타이밍 제약 등)을 입수함 Gidel의 SDK는 없었음 내 장기 과제로 2대를 10 GbE로 연결해서 PCIe TLP 스니퍼/미들맨/디바이스 에뮬레이터를 만드는 것이 있음 남은 10 GbE 포트는 호스트 PC로 스니핑 및 인젝션된 TLP 전송용으로 사용 Aria 10 FPGA PCIe hard IP는 root 또는 endpoint 모드 모두 가능해서, Quartus IP 모듈 없이 완전히 투명하게 해야 함 10기가 링크로 빠른 디바이스의 PCIe TLP를 넘기는 게 어떤 느낌일지는 모르겠지만, fail0verflow는 115200 baud UART로 TLP 프록시도 성공함 Gidel HawkEye 20G-48 참고 링크 fail0verflow 발표자료
-
중국에 있다면 같은 제품이 idlefish에서 480위안(약 68달러)에 판매되고 있음 믿기 어려울 정도로 저렴해서 직접 시도해 볼 예정임
-
아직 뒷면 SFP 커넥터의 핀아웃 정보를 알아냈는지 모르겠음 만약 이 부분이 문서화되고 PCI-e 라인도 확인된다면, 이걸로 커스텀 광 네트워크 장비를 만들어보는 것도 재미있겠다는 생각이 듦 SFP 트랜시버는 입력만 넣어주면 그대로 출력하므로, PCIe 백플레인이나 단독으로도 흥미로운 커스텀 광 신호 장치 제작이 가능함
- SFP 커넥터 핀아웃 정보는 핀아웃 섹션에 이미 있음
-
FPGAs로 신경망이나 다른 connectionist 아키텍처 구현한 예시 아시는 분 있나요? FPGAs의 가장 흥미로운 점은 "커스텀" 칩을 대학이나 개인도 감당할 수 있다는 점임 AI가 LLM 위주로 쏠려 있는 시점에, 작은 그룹/개인이 FPGAs로 동물 지향적인 bottom-up 인공지능 접근을 실험해볼 기회가 있다고 생각함
-
FNAL에서는 LHC/CMS 고에너지 물리 실험 결과의 추론 작업에 FPGA 기반 신경망을 사용함 마이크로초 단위로 동적 시스템을 제어하는 사례도 있음 참고 자료들: HLS4ML CERN IRIS-HEP 발표자료 PDF Deploying tinyML on FPGAs Whitepaper NeurIPS ML4PhysicalSciences 사례 PDF
-
"FPGAs로 신경망 구현"이란 게 하드웨어 가속기로 추론 용도인지, 아니면 네트워크 전체(가중치까지)를 직접 FPGA 아키텍처로 합성한다는 의미인지 궁금함 어떤 경우든, FPGA가 완전히 임의의 논리를 구현할 수는 없고, 제한된 블록을 소프트웨어 합성 결과로 활용하는 구조임 LLM처럼 고용량 고대역폭 메모리가 필요한 경우에는 적합하지 않음 FPGA에 고속 메모리 연결이 가능하긴 해도, 오늘날 GPU가 해당 용도에 훨씬 더 뛰어남
-
differentiable logic gate networks를 확인해 보면 흥미로움
-
참고 논문: arXiv:2404.10076
-
왜 다운보트가 많은지 궁금함 내 이해로 AI는 모델에 많은 램과 빠른 램이 필요하므로 FPGA가 적합하지 않음 FPGA에는 빠른 램을 연결할 수 있는 핀이 있지만, 보드 설계나 레이어 트레이스가 매우 복잡해짐 그래서 그래픽카드가 훨씬 적합함
-
-
이 AI 열풍을 보면 개인적으로 이런 생각이 듦
- 장기적으로 추론 하드웨어는 크게 진입장벽이 없을 것 같음(트레이닝 쪽은 잘 모르겠음)
- 모델 자체는 쉽게 대체 가능한 커머더티임
- 제품 출시 속도는 예상보다 늦음, ChatGPT 출시 후 3년이 지났는데 아직 원하는 서비스를 찾지 못함(문서 업로드 후 질의응답)
- 문서 업로드 후 질문이 가능하다는 게 어떤 의미인지 궁금함 Gemini의 NotebookLM이나 Gem처럼 해당 기능을 지원하는 서비스가 이미 있지 않나 생각임 (다른 업체의 대안은 잘 모름)
-
아직도 eBay에 많은 재고가 있음 eBay 링크 GPIO가 헤더 등으로 뽑혀있지 않은 것 같은데, 사용하기 좋은 프로젝트 아이디어 있으면 추천 부탁
- 정말 좋은 소식임 코비드 시기 동안 이런 저가 하드웨어가 완전히 사라졌었는데, 이제 200달러에 Kintex를 다시 구할 수 있게 됨 어릴 때 이런 카드에 무척 관심이 많았고, 2x SFP와 PCIe는 NetFPGA 프로젝트가 생각남 이 카드는 해당 용도로 완벽함
-
"보드에 여행용 케이스가 딸려옴"이라는 점이 인상적임 왜 그런지 궁금함, 데이터센터에서 이 보드를 자주 빼서 이동시키나? 아니면 eBay 판매자가 보호용으로 넣은 건가 궁금함
- 현장(Field)으로 가져오라고 넣어둔 것임 왜냐하면 Field Programmable Gate Array, 즉 현장에서 프로그래머블하기 때문임(농담)