应用程序合成生成交换机代码( 三 )


为在基于包的合成中,需要规范和实现在整个更新状态+包向量上达成一致,而不需要对整个向量达成一致,而是将需求分解成更简单的需求或片段的集合 。每个切片是一个更简单的合成问题,其合成管道实现,使得实现和规范仅在更新的状态+分组向量的单个向量维度上一致 。一旦成功合成每个切片,通过将最终的管道实现堆叠在彼此之上来合并切片实现,便可以形成最终的硬件实现 。
与基于数据包的合成相比,切片有两个主要优势 。首先,每个切片可以并行合成,因为每个切片实现运行在管道的独立子网格上,子网格之间没有重叠 。第二,因为每个切片的实现只满足规范的一个子集,即一维而不是状态+分组向量的所有维度,可以使用比原始规范所需尺寸更小的子网格来合成 。更小的网格需要更少的孔来合成,相对于原始规范,减少了任何一个切片的合成时间 。
5 结论本文介绍了 Chipmunk,一个基于程序合成的交换机编译器 。Chipmunk 将程序放入有限的交换机管道资源中,否则这些程序可能会被基于规则的编译器拒绝 。为此,它利用特定领域的合成技术来加速编译,并使用管道描述语言来定位多个后端 。本文所展示的技术和结果有望促进在设计程序综合算法方面的后续研究,这些算法能够以更少的计算资源更快地编译程序,并以更低的交换机资源消耗产生机器代码 。本文作者还认为,本文中的思想更普遍地适用于现场可编程门阵列和基于专用集成电路的智能网卡管道 。
致谢本文由南京大学软件学院2019级硕士研究生李紫欣翻译转述

【应用程序合成生成交换机代码】


推荐阅读