Abstract
Many modern FPGA-based soft-processor designs must include dedicated hardware modules to satisfy the requirements of a wide range of applications. Not seldom they all do not fit in the FPGA target, so their functionalities must be mapped into the much slower software domain. However, many complex soft-core processors usually underuse the available Block RAMs (BRAMs) when comparing to LUTs and registers. By taking advantage of this fact, we propose a generic low-cost BRAM-based function reuse mechanism (the BRAM-FR) that can be easily configured for precise or approximate modes to accelerate execution. The BRAM-FR was implemented in HDL and coupled to a configurable 4-issue VLIW processor. It was used to optimize different applications that use a soft-float library to emulate a Floating-Point Unit (FPU), and an image processing filter that tolerates a certain level of error. We show that our technique can accelerate the former by 1.23x and the latter by 1.52x, with a Reuse Table that fits in the BRAMs (that would otherwise be idle) of five tested FPGA targets with a marginal increase in the number of slice registers and LUTs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Fletcher, B.H.: FPGA embedded processors. In: Embedded Systems Conference. p. 18 (2005)
Beck, A.C.S., Lisbôa, C.A.L., Carro, L.: Adaptable Embedded Systems. Springer, New York (2012). Springer-Link: Bücher
Kuon, I., Rose, J.: Measuring the gap between FPGAs and ASICs. IEEE Trans. Comput. Aided Des. Integr. Circ. Syst. 26(2), 203–2015 (2007)
Xilinx, Inc.: 7 Series FPGAs Memory Resources User Guide (UG473) (2016)
Sastry, S.S., Bodik, R., Smith, J.E.: Characterizing coarse-grained reuse of computation. In: Feedback Directed and Dynamic Optimization, pp. 16–18 (2000)
Hall, M., McNamee, J.P.: Improving software performance with automatic memoization. Johns Hopkins APL Tech. Dig. 18(2), 255 (1997)
Sodani, A., Sohi, G.S.: Dynamic instruction reuse. In: Proceedings of 24th Symposium on Computer Architecture (ISCA), vol. 25, no. 2, pp. 194–205 (1997)
Citron, D., Feitelson, D., Rudolph, L.: Accelerating multi-media processing by implementing memoing in multiplication and division units. ACM SIGPLAN Not. 33(11), 252–261 (1998)
Huang, J., Lilja, D.J.: Exploiting basic block value locality with block reuse. In: Proceeedings of Symposium on High-Performance Computer Architecture, pp. 106–114. IEEE (1999)
González, A., Tubella, J., Molina, C.: Trace-level reuse. In: International Conference on Parallel Processing, pp. 30–37. IEEE (1999)
Kavi, K.M., Chen, P.: Dynamic function result reuse. In: Proceedings of Conference on Advanced Computing, pp. 17–20 (2003)
Suresh, A., Swamy, B.N., Rohou, E., Seznec, A.: Intercepting functions for memoization: a case study using transcendental functions. ACM Trans. Archit. Code Optim. (TACO) 12(2), 18 (2015)
Alvarez, C., Corbal, J., Valero, M.: Fuzzy memoization for floating-point multimedia applications. IEEE Trans. Comput. 54(7), 922–927 (2005)
Keramidas, G., Kokkala, C., Stamoulis, I.: Clumsy value cache: an approximate memoization technique for mobile GPU fragment shaders. In: Workshop On Approximate Computing, P. 6 (2015)
Brandalero, M., da Silveira, L.A., Souza, J.D., Beck, A.C.S.: Accelerating error-tolerant applications with approximate function reuse. Sci. Comput. Program. (2017)
Sinha, S., Zhang, W.: Low-power FPGA design using memoization-based approximate computing. IEEE Trans. Very Large Scale Integr. (VLSI) Syst. 24(8), 2665–2678 (2016)
Wong, S., van As, T., Brown, G.: \(\rho \)-VEX: a reconfigurable and extensible softcore VLIW processor. In: Conference on Field-Programmable Technology, pp. 369–372 (2008)
Hewlett-Packard Laboratories: VEX Toolchain (2009)
Gustafsson, J., Betts, A., Ermedahl, A., Lisper, B.: The Mälardalen WCET benchmarks: past, present and future. In: WCET, vol. 15, pp. 136–146 (2010)
Scott, J., Lee, L.H., Arends, J., Moyer, B.: Designing the low-power M\(^\bullet \)CORE™ architecture. In: Power Driven Microarchitecture Workshop, pp. 145–150 (1998)
Yazdanbakhsh, A., Mahajan, D., Esmaeilzadeh, H., Lotfi-Kamran, P.: AxBench: a multiplatform benchmark suite for approximate computing. IEEE Des. Test 34(2), 60–68 (2017)
Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: Proceedings of Symposium Code Generation and Optimization: Feedback-Directed and Runtime Optimization, p. 75. IEEE Computer Society (2004)
Lungdren, D.: FPU Double VHDL (2014)
Chaple, G., Daruwala, R.D.: Design of Sobel operator based image edge detection algorithm on FPGA. In: International Conference on Communications and Signal Processing, pp. 788–792. IEEE (2014)
Acknowledgments
This work was supported in part by CNPq, CAPES and FAPERGS.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG, part of Springer Nature
About this paper
Cite this paper
Exenberger Becker, P.H. et al. (2018). A Low-Cost BRAM-Based Function Reuse for Configurable Soft-Core Processors in FPGAs. In: Voros, N., Huebner, M., Keramidas, G., Goehringer, D., Antonopoulos, C., Diniz, P. (eds) Applied Reconfigurable Computing. Architectures, Tools, and Applications. ARC 2018. Lecture Notes in Computer Science(), vol 10824. Springer, Cham. https://doi.org/10.1007/978-3-319-78890-6_40
Download citation
DOI: https://doi.org/10.1007/978-3-319-78890-6_40
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-78889-0
Online ISBN: 978-3-319-78890-6
eBook Packages: Computer ScienceComputer Science (R0)