Computing

FPGA Design Concepts - 2 : Building blocks 본문

가속기 Accelerator/FPGA

FPGA Design Concepts - 2 : Building blocks

jhson989 2022. 3. 24. 22:33

이전 포스터에서 FPGA 프로그래밍의 전반적 개념에 대해서 정리하였다.

 

FPGA Design Concepts - 1 : Overview

High Level Languages for FPGA Programming Intel ® oneAPI DPC++ FPGA Optimization Guide[1]를 참고하여 FPGA 기본 design concepts을 정리하고자 한다. 일반적으로 FPGA를 프로그래밍하는 방법은 Verilog나 V..

computing-jhson.tistory.com

오늘은 FPGA architecture의 개별 building blocks에 대하여 정리하고자 한다. 다음 강의자료 [1], [2], [3]를 참고하였다.

 

 

 

Adaptive Logic Module (ALM)

Configurable Logic Block(CLB)라고도 하며, FPGA가 임의의를 회로를 빌드하는데 사용되는 가장 기본 block이다. ALM은 lookup table (LUT)와 LUT의 아웃풋을 저장하는 register로 구성된다. n-LUT는 n개의 input을 받는 임의의 모든 논리회로를 만들 수 있다. 

Simplified ALM architecture. LUT를 통해 n-input 모든 논리회로를 표현할 수 있으며, register를 통해 그 결과값을 저장 및 전달함

Register는 FPGA의 가장 기본 저장장치로 clock signal에 동기화되어 input을 저장하고, 저장된 값을 output으로 출력한다. ALM에서 LUT의 output을 저장하는 역할을 한다.

Register. Clock signal에 동기화되어 output이 update됨

 

 

 

Look-up Table (LUT, n-LUT)

2-LUT architecture. Input(x,y)에 따라 SRAM에 저장된 값이 mux됨

n-LUT는 n개의 input이 주어지는 임의의 논리회로를 구현할 수 있다. 2^n개의 configuration bits(SRAM)과 2개의 input, 그리고 input에 따라 configuration bits를 선택하는 multiplexer로 구성된다. 어떤 논리회로든 n개의 input에 대한 진리표를 만들어 단순하게 표현할 수 있는데, 이와 같은 개념으로 진리표 자체를 SRAM에 저장하고 input에 따라 그 값을 출력하는 원리이다. 다음은 2-LUT로 다양한 논리회로를 만든 예시이다.

2-LUT 예시

n-LUT로 구현된 n-input 논리회로는 동일한 propagation delay를 가진다. 

Xilinx, Altera와 같은 상용 FPGA는 일반적으로 6-LUT들로 구성되며, 여러 LUT를 이용하여 더 많은 input이 들어오는 논리회로를 구현할 수 있다. 더 많은 입력 개수를 가지는 n-LUT를 만들지 않는 것은, n이 커질수록 configuration bits(SRAM)이 exponentially 증가(n-LUT은 2^n개의 SRAM이 필요)하기 때문이다. 또한 Multiplexer의 propagation delay도 증가한다. 다음 예시는 2bit ripple carry adder를 구현 예시이며, 3-LUT(output 2개) 2개로로 6-LUT를 구현한 예시이다.

각 LUT는 1bit full adder를 구현. 두 LUT를 이용하여 2bit ripple carry adder 구현

 

 

 

Digital Signal Processing (DSP) Block

DSP block은 일반적으로 사용되는 fixed-point, floating point arithmetic operation 실행을 위해 FPGA에 추가된 block이다. 이러한 FP 연산에 대해서는 직접 ALM로 구현하는 것보다 특화된 회로를 추가하는 것이 더욱 효율적이기에 추가되었다고 한다. 

 

 

 

 

Reference

[1] https://www.intel.com/content/www/us/en/develop/documentation/oneapi-fpga-optimization-guide/top.html

[2] Hao Zheng, FPGA System Design FPGA Architectures, Dept of Comp Sci & Eng U of South Florida

[3] U. Farooq et al., Tree-Based Heterogeneous FPGA Architectures, DOI: 10.1007/978-1-4614-3594-5_2, © Springer Science+Business Media New York 2012