Abstract
This paper presents the design of a language for the description and optimisation of reversible logic circuits. The language is a combinator-style functional language designed to be close to the reversible logical gate-level. The combinators include high-level constructs such as ripples, but also the recognisable inversion combinator f −1, which defines the inverse function of f using an efficient semantics.
It is important to ensure that all circuits descriptions are reversible, and furthermore we must require this to be done statically. This is ensured by the type system, which also allows the description of arbitrary sized circuits. The combination of the functional language and the restricted reversible model results in many arithmetic laws, which provide more possibilities for term rewriting and, thus, the opportunity for good optimisation.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Altenkirch, T., Grattage, J.: A functional quantum programming language. In: Proceedings of 20th Annual IEEE Symposium on Logic in Computer Science, LICS 2005, pp. 249–258. IEEE (2005)
Athas, W.C., Svensson, L.: Reversible logic issues in adiabatic CMOS. In: Workshop on Physics and Computation (1994)
Axelsen, H.B., Glück, R.: What Do Reversible Programs Compute? In: Hofmann, M. (ed.) FOSSACS 2011. LNCS, vol. 6604, pp. 42–56. Springer, Heidelberg (2011)
Axelsen, H.B., Glück, R., Yokoyama, T.: Reversible Machine Code and Its Abstract Processor Architecture. In: Diekert, V., Volkov, M.V., Voronkov, A. (eds.) CSR 2007. LNCS, vol. 4649, pp. 56–69. Springer, Heidelberg (2007)
Backus, J.: Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Communications of the ACM 21, 613–641 (1978)
Barenco, A., Bennett, C.H., Cleve, R., DiVincenzo, D.P., Margolus, N., Shor, P., Sleator, T., Smolin, J.A., Weinfurter, H.: Elementary gates for quantum computation. Physical Review A 52(5), 3457–3467 (1995)
Bennett, C.H.: Logical reversibility of computation. IBM Journal of Research and Development 17, 525–532 (1973)
Berut, A., Arakelyan, A., Petrosyan, A., Ciliberto, S., Dillenschneider, R., Lutz, E.: Experimental verification of landauer/’s principle linking information and thermodynamics. Nature 483(7388), 187–189 (2012)
Brent, R., Kung, H.: A Regular Layout for Parallel Adders. IEEE Transactions on Computers C-31(3), 260–264 (1982)
Burignat, S., Thomsen, M.K., Klimczak, M., Olczak, M., De Vos, A.: Interfacing Reversible Pass-Transistor CMOS Chips with Conventional Restoring CMOS Circuits. In: De Vos, A., Wille, R. (eds.) RC 2011. LNCS, vol. 7165, pp. 112–122. Springer, Heidelberg (2012)
Cuccaro, S.A., Draper, T.G., Kutin, S.A., Moulton, D.P.: A new quantum ripple-carry addition circuit. arXiv:quant-ph/0410184v1 (2005)
Cuykendall, R., Andersen, D.R.: Reversible optical computing circuits. Optics Letters 12(7), 542–544 (1987)
Daubechies, I., Sweldens, W.: Factoring wavelet transforms into lifting steps. Journal of Fourier Analysis and Applications 4(3), 247–269 (1998)
De Vos, A.: Reversible computing. Progress in Quantum Electronics 23(1), 1–49 (1999)
De Vos, A., Burignat, S., Thomsen, M.K.: Reversible implementation of a descrete integer linear transform. Journal of Multiple-Valued Logic and Soft Computing, Special Issue: Reversible Computation 18(1), 25–35 (2012)
De Vos, A., Van Rentergem, Y.: Reversible computing: from mathematical group theory to electronical circuit experiment. In: Computing Frontiers Proceeding, pp. 35–44. ACM Press (2005)
Feynman, R.P.: Quantum mechanical computers. Optical News 11, 11–20 (1985)
Fredkin, E., Toffoli, T.: Conservative logic. International Journal of Theoretical Physics 21(3-4), 219–253 (1982)
Gershenfeld, N.: Signal entropy and the thermodynamics of computation. IBM Systems Journal 35(3-4), 577–586 (1996)
Koller, J.G., Athas, W.C.: Adiabatic switching, low energy computing, and the physics of storing and erasing information. In: Workshop on Physics and Computation, pp. 267–270 (1992)
Landauer, R.: Irreversibility and heat generation in the computing process. IBM Journal of Research and Development 5(3), 183–191 (1961)
Lutz, C.: Janus: A time-reversible language. A letter to R. Landauer (1986), http://tetsuo.jp/ref/janus.pdf
Malvar, H.S., Hallapuro, A., Karczewicz, M., Kerofsky, L.: Low-complexity transform and quantization in H. 264/AVC. IEEE Transactions on Circuits and Systems for Video Technology 13(7), 598–603 (2003)
Merkle, R.C.: Reversible electronic logic using switches. Nanotechnology 4(1), 21–40 (1993)
Morita, K.: A Simple Universal Logic Element and Cellular Automata for Reversible Computing. In: Margenstern, M., Rogozhin, Y. (eds.) MCU 2001. LNCS, vol. 2055, pp. 102–113. Springer, Heidelberg (2001)
Nielsen, M., Chuang, I.L.: Quantum Computation and Quantum Information. Cambridge University Press (2000)
Patra, P., Fussell, D.: On efficient adiabatic design of MOS circuits. In: Workshop on Physics and Computation, pp. 260–269 (1996)
Sheeran, M.: muFP, A language for VLSI design. In: Proceedings of the 1984 ACM Symposium on LISP and Functional Programming, LFP 1984, pp. 104–112. ACM (1984)
Sheeran, M.: Hardware design and functional programming: a perfect match. Journal of Universal Computer Science 11(7), 1135–1158 (2005)
Thomsen, M.K., Axelsen, H.B.: Parallelization of reversible ripple-carry adders. Parallel Processing Letters 19(1), 205–222 (2009)
Thomsen, M.K., Glück, R., Axelsen, H.B.: Reversible arithmetic logic unit for quantum arithmetic. Journal of Physics A: Mathematical and Theoretical 43(38), 382002 (2010)
Toffoli, T.: Reversible Computing. In: de Bakker, J.W., van Leeuwen, J. (eds.) ICALP 1980. LNCS, vol. 85, pp. 632–644. Springer, Heidelberg (1980)
Vedral, V., Barenco, A., Ekert, A.: Quantum networks for elementary arithmetic operations. Physical Review A 54(1), 147–153 (1996)
Wille, R., Drechsler, R.: Towards a Design Flow for Reversible Logic. Springer Science (2010)
Wille, R., Offermann, S., Drechsler, R.: SyReC: A programming language for synthesis of reversible circuits. In: Proceedings of the Forum on Specification & Design Languages, pp. 1–6. IET, Southhampton (2010)
Yokoyama, T., Axelsen, H.B., Glück, R.: Towards a Reversible Functional Language. In: De Vos, A., Wille, R. (eds.) RC 2011. LNCS, vol. 7165, pp. 14–29. Springer, Heidelberg (2012)
Yokoyama, T., Glück, R.: A reversible programming language and its invertible self-interpreter. In: Proceedings of Partial Evaluation and Program Manipulation, pp. 144–153. ACM Press (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Thomsen, M.K. (2012). Describing and Optimising Reversible Logic Using a Functional Language. In: Gill, A., Hage, J. (eds) Implementation and Application of Functional Languages. IFL 2011. Lecture Notes in Computer Science, vol 7257. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-34407-7_10
Download citation
DOI: https://doi.org/10.1007/978-3-642-34407-7_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-34406-0
Online ISBN: 978-3-642-34407-7
eBook Packages: Computer ScienceComputer Science (R0)