Computer architecture is searching for new ways to make use of increasingly available digital logic without the serial bottlenecks of CPU-based design. Recent work has demonstrated a fully CPU-less approach to executing functional programs, by exploiting their inherent parallelisability to compile them directly into parallel digital logic. This work uses lambda-calculus as a hyper simple functional language to prove the concept, but is impractical for real-world programming due to the well-known inefficiencies of pure lambda$-calculus. It is common in language design to extend basic lambda-calculus with additional primitives to short-cut common tasks such as arithmetic and lists. In this work, we build upon our previous research to examine how such extensions may be applied to CPU-less functional execution in digital logic, with the objective of advancing the approach toward practical implementation. We present a set of structures and algorithms for representing new primitives, describe a systematic process for selecting, implementing, and evaluating them, and demonstrate substantial reductions in execution time and node usage. These improvements are implemented in an open-source system, which is shown to correctly evaluate a range of representative lambda expressions.
翻译:计算机体系结构正在探索如何利用日益丰富的数字逻辑资源,同时规避基于CPU设计的串行瓶颈。近期研究展示了一种完全无需CPU执行函数式程序的方法:通过挖掘函数式程序固有的可并行性,将其直接编译为并行数字逻辑电路。该研究采用λ演算作为超简函数式语言以验证概念,但由于纯λ演算众所周知的低效性问题,其实用性受到限制。在语言设计中,通常通过为基本λ演算添加算术运算与列表处理等原语来提升常见任务的执行效率。本研究基于我们先前的工作,探讨如何将此类扩展应用于数字逻辑中的无CPU函数式执行,以推动该方法的实际应用。我们提出了一套用于表示新原语的结构与算法,描述了系统化的原语选择、实现与评估流程,并展示了执行时间和节点使用量的显著降低。这些改进已在一个开源系统中实现,该系统被证明能够正确评估一系列具有代表性的λ表达式。