【问题标题】:Reversible computing platform可逆计算平台
【发布时间】:2020-10-10 03:15:51
【问题描述】:

来自Reversible Computing 常见问题解答:

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

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

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

【问题讨论】:

  • 你能引用“弗兰克定律”的来源吗:我想了解更多,因为它听起来很有趣。
  • 我找到了Michael Frank's publications 的列表和最近的interview
  • 盛大。非常感谢安东尼

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


【解决方案1】:

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

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

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

黑客新闻上还有this thread

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        位清零时会产生能量损失

        任何不可逆的过程(即丢失信息的过程)都伴随着能量耗散。例如x^2函数是不可逆的,因为它不是双射,要实现这个函数,你应该要么

        • 抹掉一些信息,消耗一定的能量,
        • 或实现 (x, 0) -> (x, x^2)。

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

        NiLang 是 Julia 中的一种开源、嵌入式领域特定可逆编程语言。这个eDSL可以用于programming language level automatic differentiation,性能不错。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多