Skip to main content
QUICK REVIEW

[论文解读] The Language Features and Architecture of B-Prolog

Neng‐Fa Zhou|arXiv (Cornell University)|Mar 4, 2011
Logic, programming, and type systems参考文献 45被引用 10
一句话总结

本文提出 B-Prolog,一种高性能 Prolog 系统,通过引入有限域约束求解、表格化、动作规则和数组等高级特性进行增强。文章详细介绍了 TOAM Jr. 抽象机架构——包括基于栈的参数传递、可变大小指令,以及对动作规则和线性表格化的原生支持——通过减少解释开销和高效的上下文切换,在标准基准测试中实现了超过 60% 的性能提升。

ABSTRACT

B-Prolog is a high-performance implementation of the standard Prolog language with several extensions including matching clauses, action rules for event handling, finite-domain constraint solving, arrays and hash tables, declarative loop constructs, and tabling. The B-Prolog system is based on the TOAM architecture which differs from the WAM mainly in that (1) arguments are passed old-fashionedly through the stack, (2) only one frame is used for each predicate call, and (3) instructions are provided for encoding matching trees. The most recent architecture, called TOAM Jr., departs further from the WAM in that it employs no registers for arguments or temporary variables, and provides variable-size instructions for encoding predicate calls. This paper gives an overview of the language features and a detailed description of the TOAM Jr. architecture, including architectural support for action rules and tabling.

研究动机与目标

  • 设计并实现一种支持约束求解和动态编程高级语言特性的高性能 Prolog 系统。
  • 解决抽象机模拟器中细粒度指令解释带来的性能瓶颈问题。
  • 通过动作规则和挂起帧,支持高效的事件驱动编程和约束传播。
  • 通过线性表格化实现逻辑程序中固定点计算的高效性,且对架构改动最小。
  • 通过改进内存管理和可扩展性,提升大规模应用(如机器学习)的性能。

提出的方法

  • TOAM Jr. 架构采用基于栈的参数传递方式,并消除临时寄存器,以减少解释开销。
  • 使用可变大小、专用的指令编码直接表示谓词调用,降低细粒度指令集中常见的分派成本。
  • 动作规则被编译为存储在栈上的挂起帧(suspension frames),实现无需堆分配的快速上下文切换。
  • 线性表格化通过迭代计算最顶层的循环子目标,避免冻结栈帧,同时保留垃圾回收机制。
  • 表格化谓词使用新型表格帧类型,包含 SubgoalTable 和 CurrentAnswer 指针,以管理答案的消费和子目标的重用。
  • 系统集成多种优化技术,以降低线性表格化中的重复计算成本,使其在时间效率上可与 SLG 竞争。

实验结果

研究问题

  • RQ1如何重新设计 Prolog 抽象机,以在支持高级语言特性的同时减少解释开销?
  • RQ2为高效支持动作规则和事件驱动的约束传播,需要哪些架构改进?
  • RQ3如何在对抽象机改动最小的前提下实现线性表格化,同时保持空间效率?
  • RQ4可变大小指令是否能在 Prolog 模拟器中优于传统细粒度指令集,从而提升性能?
  • RQ5表格化与动作规则的集成如何影响逻辑程序的可扩展性和性能?

主要发现

  • 与基于 ATOAM 的旧系统相比,TOAM Jr. 架构在 Aquarius 基准测试中使 B-Prolog 的运行速度提升了超过 60%。
  • 消除临时寄存器并使用可变大小指令,显著降低了解释过程中的分派成本。
  • 栈上的挂起帧实现了传播器的快速上下文切换,这对高效约束求解至关重要。
  • 线性表格化通过避免冻结栈帧,实现了比 SLG 更优的空间效率,同时优化技术降低了重复计算成本。
  • 对表格化和动作规则的最小架构改动,证明了 TOAM Jr. 架构的可扩展性。
  • 集成 PRISM 的表格化与内存管理改进,显著增强了 B-Prolog 核心系统的稳定性和性能。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。