BRIEFING
FPGA 개발보드는 왜 느려 보이는가
FPGA 개발보드는 왜 느려 보이는가
Scope
핵심 질문
FPGA 개발보드의 CPU clock과 benchmark가 낮아 보여도 특정 workload에서는 경쟁력이 있는 이유는 무엇인가?
Research
핵심 근거
- FPGA fabric의 clock은 장치·회로·배치·타이밍 제약에 따라 달라지므로 특정 보드의 측정 없이 대표 주파수를 단정하지 않는다.
- 성능은 clock보다 동시에 몇 개 pipeline stage가 병렬로 처리되는지에 좌우된다.
- 개발보드의 ARM core benchmark와 FPGA fabric 성능을 혼동하면 안 된다.
Draft
FPGA 보드를 CPU benchmark로 보면 매우 느려 보일 수 있다. 이것은 비교 기준이 맞지 않기 때문이다.
낮은 Clock
FPGA logic은 복잡한 programmable routing을 거치므로 최신 CPU처럼 수 GHz에서 동작하기 어렵다.
대신 병렬 회로를 만든다
예를 들어 packet 하나를 20단계 pipeline으로 나누고 매 단계가 한 clock 안에 처리되며 입출력 속도가 충분하고 stall이 없다면, 서로 다른 packet을 단계별로 동시에 처리할 수 있다. 이 이상화된 조건에서 초기 latency는 약 20 cycle이고 pipeline이 차면 매 cycle 결과를 하나씩 낼 수 있다. 이는 실제 보드에서 측정한 throughput이 아니다.
개발보드 CPU와 구분
SoC FPGA에는 ARM core가 함께 들어있는 경우가 있다. 그 CPU의 benchmark가 낮다고 FPGA logic 자체의 throughput도 낮다는 뜻은 아니다.
언제 강한가
작업이 고정된 dataflow이고 bit-level 병렬화가 가능할 때 강하다. 복잡한 branch와 자주 바뀌는 일반 software에는 불리하다.
핵심
FPGA 성능은 GHz보다 pipeline throughput, I/O bandwidth, latency determinism으로 평가해야 한다.