Parallel Prefix Network Generation : an Application of Functional Programming

Parallel prefix networks are used in priority encoders, and to compute carries in fast adders. A typical microprocessor contains many such networks, and often they are hotspots. Although parallel prefix (or scan) has been much studied, surprisingly many questions remain unanswered. As geometries shrink, it is not at all clear how to make low power prefix networks with the desired timing properties. Here, I develop a method of writing very highly parameterised parallel prefix network generators in which we specify the combinators used to build the networks and then search for a topology that matches the given delay constraints. This first case study indicates that, in this functional setting, combinators and search fit well together. The resulting prefix networks are both small and shallow, and likely to be useful in low power applications.

[1]  Ralf Hinze An Algebra of Scans , 2004, MPC.

[2]  Alexandru Nicolau,et al.  Optimal schedules for parallel prefix computation with bounded resources , 1991, PPOPP '91.

[3]  Nicholas Pippenger The Complexity of Computations by Networks , 1987, IBM J. Res. Dev..

[4]  Gudula Rünger,et al.  Derivation of a logarithmic time carry lookahead addition circuit , 2004, J. Funct. Program..

[5]  Mary Sheeran Hardware Design and Functional Programming: a Perfect Match , 2005, J. Univers. Comput. Sci..

[6]  Youngmoon Choi Parallel prefix adder design , 2004 .

[7]  Mary Sheeran Generating Fast Multipliers Using Clever Circuits , 2004, FMCAD.

[8]  Colin Runciman,et al.  A functional-logic library for wired , 2007, Haskell '07.

[9]  Mary Sheeran,et al.  A new approach to the design of optimal parallel prefix circuits , 2006 .

[10]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[11]  Marc Snir,et al.  Depth-Size Trade-Offs for Parallel Prefix Computation , 1986, J. Algorithms.

[12]  Reto Zimmermann,et al.  Optimized synthesis of sum-of-products , 2003, The Thrity-Seventh Asilomar Conference on Signals, Systems & Computers, 2003.

[13]  Alexandru Nicolau,et al.  The Strict Time Lower Bound and Optimal Schedules for Parallel Prefix with Resource Constraints , 1996, IEEE Trans. Computers.

[14]  Yen-Chun Lin,et al.  Constructing H4, a Fast Depth-Size Optimal Parallel Prefix Circuit , 2003, The Journal of Supercomputing.

[15]  Vojin G. Oklobdzija,et al.  Design strategies for optimal hybrid final adders in a parallel multiplier , 1996, J. VLSI Signal Process..

[16]  Mary Sheeran,et al.  Finding Regularity: Describing and Analysing Circuits That Are Not Quite Regular , 2003, CHARME.

[17]  Mary Sheeran,et al.  Wired: Wire-Aware Circuit Design , 2005, CHARME.

[18]  Allen C.-H. Wu,et al.  A carry-select-adder optimization technique for high-performance Booth-encoded Wallace-tree multipliers , 2002, 2002 IEEE International Symposium on Circuits and Systems. Proceedings (Cat. No.02CH37353).

[19]  H. T. Kung,et al.  A Regular Layout for Parallel Adders , 1982, IEEE Transactions on Computers.

[20]  Ronald L. Graham,et al.  Constructing zero-deficiency parallel prefix adder of minimum depth , 2005, ASP-DAC.

[21]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[22]  Vojin G. Oklobdzija Design and analysis of fast carry-propagate adder under non-equal input signal arrival profile , 1994, Proceedings of 1994 28th Asilomar Conference on Signals, Systems and Computers.

[23]  Mary Sheeran,et al.  Functional Hardware Description in Lava , 2003 .

[24]  Chein-Wei Jen,et al.  Generalized Earliest-First Fast Addition Algorithm , 2003, IEEE Trans. Computers.

[25]  Yen-Chun Lin,et al.  A new approach to constructing optimal parallel prefix circuits with small depth , 2004, J. Parallel Distributed Comput..

[26]  Vojin G. Oklobdzija,et al.  Delay optimization of carry-skip adders and block carry-lookahead adders , 1991, [1991] Proceedings 10th IEEE Symposium on Computer Arithmetic.

[27]  Jack Sklansky,et al.  Conditional-Sum Addition Logic , 1960, IRE Trans. Electron. Comput..