Out of order floating point coprocessor for RISC V ISA

Floating point operations are important and essential part of many scientific and engineering applications. Floating point coprocessor (FPU) performs operations like addition, subtraction, division, square root, multiplication, fused multiply and accumulate and compare. Floating point operations are part of ARM, MIPS, and RISC-V etc. instruction sets. The FPU can be a part of hardware or be implemented in software. This paper details an architectural exploration for floating point coprocessor enabled with RISC-V [1] floating point instructions. The Floating unit that has been designed with RISC-V floating point instructions is fully compatible with IEEE 754-2008 standard as well. The floating point coprocessor is capable of handling both single and double precision floating point data operands in out-of-order for execution and in-order commit. The front end of the floating point processor accepts three data operands, rounding mode and associated Opcode fields for decoding. Each floating point operation is tagged with an instruction token for in-order completion and commit. The output of the floating point unit is tagged with either single or double precision results along with floating point exceptions, if any, based on the RISC-V instruction set. The coprocessor for floating point integrates with integer pipeline. The proposed architecture for floating point coprocessor with out-of-order execution, in-order commit and completion/retire has been synthesized, tested and verified on Xilinx Virtex 6 xc6vlx550t-2ff1759 FPGA. A system frequency of 240MHz for single precision floating point and 180 MHz double precision floating point operations has been observed on FPGA.

[1]  T. Sowmya,et al.  A Power-Efficient Floating-point Co-processor design , 2016 .

[2]  Yunsup Lee,et al.  The RISC-V Instruction Set Manual , 2014 .

[3]  David H. Bailey,et al.  High-precision floating-point arithmetic in scientific computation , 2004, Computing in Science & Engineering.

[4]  C.N. Hinds,et al.  An enhanced floating point coprocessor for embedded signal processing and graphics applications , 1999, Conference Record of the Thirty-Third Asilomar Conference on Signals, Systems, and Computers (Cat. No.CH37020).

[5]  Marius Cornea,et al.  Software implementation of the IEEE 754R decimal floating-point arithmetic , 2006, ICSOFT.

[6]  Tack-Don Han,et al.  In order issue out-of-order execution floating-point coprocessor for CalmRISC32 , 2001, Proceedings 15th IEEE Symposium on Computer Arithmetic. ARITH-15 2001.

[7]  Pcy Lee,et al.  Frequency‐temperature behavior of thickness vibrations of doubly rotated quartz plates affected by plate dimensions and orientations , 1986 .

[8]  Eric Fournié,et al.  Monte Carlo Methods in Finance , 2002 .

[9]  Earl E. Swartzlander,et al.  Modified non-restoring division algorithm with improved delay profile and error correction , 2011, 2012 Conference Record of the Forty Sixth Asilomar Conference on Signals, Systems and Computers (ASILOMAR).

[10]  Viktor K. Prasanna,et al.  An FPGA-based floating-point Jacobi iterative solver , 2005, 8th International Symposium on Parallel Architectures,Algorithms and Networks (ISPAN'05).

[11]  Karl S. Hemmert,et al.  An analysis of the double-precision floating-point FFT on FPGAs , 2005, 13th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'05).

[12]  Miaoqing Huang,et al.  Reaping the Processing Potential of FPGA on Double-Precision Floating-Point Operations: An Eigenvalue Solver Case Study , 2010, 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.

[13]  Ji Wang,et al.  Finite element analysis of the piezoelectric vibrations of quartz plate resonators with higher-order plate theory , 1999 .

[14]  Haibing Hu,et al.  A Floating-point Coprocessor Configured by a FPGA in a Digital Platform Based on Fixed-point DSP for Power Electronics , 2006, 2006 CES/IEEE 5th International Power Electronics and Motion Control Conference.

[15]  J. Hull Options, Futures, and Other Derivatives , 1989 .

[16]  Guido D. Salvucci,et al.  Ieee standard for binary floating-point arithmetic , 1985 .

[17]  Peter Jaeckel,et al.  Monte Carlo methods in finance , 2002 .

[18]  Miriam Leeser,et al.  An Autonomous Vector/Scalar Floating Point Coprocessor for FPGAs , 2011, 2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines.

[19]  K. S. Tan,et al.  Quasi-Monte Carlo Methods in Numerical Finance , 1996 .