embeded/FPGA - ALTERA2018. 2. 26. 15:15

카페 질문이 있어서 찾아보니..

FPU 형태로 별도의 하드웨어로 구성되는 Floating Point Hardware라는 IP가 존재한다.


귀찮아서 custom으로 검색!

Hardware랑 Hardware 2가 있다.


2는 2 답게 +-*/(Arithmetic)과 추가적으로 다른 부동소수점 연산을 지원하는데

도표를 보면 성능이 참.. 자비가 없네 ㄷㄷ


Floating Point Hardware는 +-*는 기본으로 제공되고 /에 대해서는 별도 옵션으로 선택해야 한다.


음. VHDL only 라니.. verilog 프로젝트에서는 못쓰나? (먼가 경고 두개 뜨긴 하던데...)

그리고 2500 4-input LE 라는데 Nios2에 비하면 꽤나 큰 로직의 사용인거 같고,

4-input LE가 적은 시리즈라면 치명적일 수도 있겠다.

결정적으로(!) float 인거지 double은 미지원이다.


The characteristics of the FPH2 are:

  • Supports FPH1 operations (add, sub, multiply, divide) and adds support for square root, comparisons, integer conversions, minimum, maximum, negate, and absolute
  • Single-precision floating point values are stored in the Nios II general purpose registers
  • VHDL only
  • Platform Designer support only
  • Single-precision only
  • Optimized for FPGAs with 4-input LEs and 18-bit multipliers
  • GCC and Nios II SBT (Software Build Tools) software support
  • IEEE 754-2008 compliant except for:
    • Simplified rounding
    • Simplified NaN handling
    • No exceptions
    • No status flags
    • Subnormal supported on a subset of operations
  • Binary-compatibility with FPH1
    • FPH1 implements Round-To-Nearest rounding. Because FPH2 implements different rounding, results might be subtly different between the two generations
  • Resource consumption in a typical system:
    • Approximately 2500 4-input LEs
    • Nine 9-bit multipliers
    • Three M9K memories or larger

성능 테이블 8비트 연산

Specifies the 8 bit fixed custom instruction for the operation. 일 경우가 N인데

연산을 위해 8비트 사용자 명령어로 사용했다는 건가?

아무튼 극단적으로 230여배 성능 향상! 이라고 뻥칠 수 있다 ㅋㅋ

안정적으로는 50배 정도 성능향상이 있을 것으로 보인다.

(물론 별도 하드웨어로 통신을 하고 하면서 순수 연산 속도에는 조금 더 낮게 측정 되겠지만)


Table 15.  FPH2 Operation Summary
OperationNCyclesResultSubnormalRoundingGCC Inference
fdivs25516a/bflush-to-0Nearesta/b
fsubs2545a-bflush-to-0Faithfula-b
fadds2535a+bflush-to-0Faithfula+b
fmuls2524a*bflush-to-0Faithfula*b
fsqrts2518sqrt(a)flush-to-0Faithfulsqrtf()
floatis2504int_to_float(a)Does not applyDoes not applyCasting
fixsi2492float_to_int(a)flush-to-0TruncationCasting
round2482float_to_int(a)flush-to-0Nearestlroundf()11
reserved234 to 247Undefinedundefined   
fmins2331(a<b) ? a : bsupportedNonefminf()11
fmaxs2321(a<b) ? b : asupportedNonefmaxf()11
fcmplts2311(a<b) ? 1 : 0supportedNonea<b
fcmples2301(a≤b) ? 1 : 0supportedNonea<=b
fcmpgts2291(a>b) ? 1 : 0supportedNonea>b
fcmpges2281(a≥b) ? 1 : 0supportedNonea>=b
fcmpeqs2271(a=b) ? 1 : 0supportedNonea==b
fcmpnes2261(a≠b) ? 1 : 0supportedNonea!=b
fnegs2251-asupportedNone-a
fabss2241|a|supportedNonefabsf()

[링크 : https://www.altera.com/documentation/cru1439932898327.html]

[링크 : https://www.altera.com/documentation/cru1439932898327.html#lro1432145764151]

'embeded > FPGA - ALTERA' 카테고리의 다른 글

fpga uart echo  (0) 2018.02.28
sopc builder -> qsys -> platform designer  (2) 2018.02.26
quartus 2 Block Diagram/Schematic 으로 설계하기  (4) 2018.02.20
de0-nano communicate pc 로 검색결과  (0) 2018.02.14
Nios II 관련 링크  (0) 2018.02.13
Posted by 구차니