可逆计算平台

时间:2012-04-25 10:47:29

标签: programming-languages functional-programming runtime compiler-theory

来自Reversible Computing常见问题解答:

  

实现给定的最大可能计算性能   比特耗散率通常需要明确的可逆性   仅在最低级别,但在所有级别的计算中 - 在设备中,   电路,架构,语言和算法(强烈的   推测,但尚未正式证明结果 - 称之为弗兰克定律。

据我了解,当位为零时会产生能量损失。如果软件和硬件平台具有反转逻辑操作的能力,则可以减少热量产生。

是否有支持可逆计算的编程平台(库,运行时,语言和编译器)?

4 个答案:

答案 0 :(得分:10)

是的,有一些可逆的编程语言,至少在研究中。

我也在这个领域感兴趣,我收集了一些指针。这两篇论文非常酷:

我尚未阅读的那些(但在我的待办事项列表中)并且看起来很有趣:

还有关于黑客新闻的this thread

关于双向转换(代码,模型,数据结构等)的更丰富的文献,在某种程度上与可逆计算有关。

答案 1 :(得分:1)

据我了解,对于真正的可逆计算,我们需要在可逆计算机上运行算法。只需引用以下链接:

可逆计算机:一种计算机,其中所有芯片和电路都执行可逆功能,不会向周围环境传递热量。在20世纪90年代,麻省理工学院的一个小组建立了初步硬件,证明这种“绝热”计算成为可能。

参考: http://energy.mit.edu/news/energy-efficient-computing/

答案 2 :(得分:1)

reversible parsers in Prolog和其他语言有各种各样的实现。因为Prolog允许可逆计算,所以可以实现an interpreter for the Janus programming language in Prolog

答案 3 :(得分:0)

位清零会产生能量损失

任何不可逆过程(即丢失信息的过程)都会伴随能量耗散。例如,x^2函数是不可逆的,因为它不是双向对象,要实现此功能,您应该

  • 擦除一些信息并消耗一定量的能量,
  • 或实施(x,0)->(x,x ^ 2)。

是否有支持可逆计算的编程平台(库,运行时,语言和编译器)?

NiLang是Julia中的一种开放源代码,嵌入式领域特定的可逆编程语言。此eDSL可以用于programming language level automatic differentiation,并且性能良好。