首页> 外文会议>IEEE International Conference on Application-specific Systems, Architectures, and Processors >Scheduling Register-Allocated Codes in User-Guided High-Level Synthesis
【24h】

Scheduling Register-Allocated Codes in User-Guided High-Level Synthesis

机译:调度用户引导的高级合成中的寄存器分配代码

获取原文

摘要

In high-level synthesis, as for compilers, an important question is when register assignment should take place. Unlike compilers for which the processor architecture is given, synthesizers can, in principle, perform scheduling before register assignment by instantiating, after scheduling, the adequate number of registers (thus with no spilling) and the right connections between operators. However, this approach may sometimes lead to suboptimal data paths. An alternate solution is to let the designer have some control on the compilation process so as to force desirable data paths and resource sharing. For example, in UGH, a public-domain user-guided high-level synthesis tool, the designer interacts with the synthesizer by providing an early allocation of scalar variables to registers and a draft data path that describes some or all connections between registers and operators. The well-known drawback of early register assignment is that it over-constrains the scheduler with false dependences. The UGH scheduler first removes these dependences and adds them on the fly during scheduling. It has been noticed that, although this approach can achieve good results in practice for suitable user designs, some rare deadlock situations can arise in the scheduler. We analyze the reason for such deadlocks and improve UGH strategy with a new implementation. We show how to avoid the deadlocks as much as possible and how, with some register duplication, they can be circumvented otherwise. We also show that, unless P=NP, there is no hope to design a polynomial test that decides which operation to schedule first so as to avoid a deadlock, therefore a duplication.
机译:在高级别的合成中,对于编译器来说,一个重要的问题是当注册分配应该发生时。与给出处理器架构的编译器不同,合成器原则上可以通过在调度之后实例化在寄存器分配之前执行调度(因此,没有溢出)和运营商之间的正确连接。但是,这种方法有时可能导致次优数据路径。替代解决方案是让设计人员对编译过程有一些控制,以强制理想的数据路径和资源共享。例如,在UGH,一个公共域用户引导的高级合成工具中,设计者通过向寄存器和描述寄存器和运算符之间的一些或所有连接的寄存器和数据路径进行编写的标量变量的早期分配来与合成器交互。 。早期寄存器分配的众所周知的缺点是它过度约束了具有错误依赖的调度程序。 UGH Scheduler首先删除这些依赖,并在调度期间在飞行中添加它们。已经注意到,虽然这种方法可以在适用于适用的用户设计的实践中实现良好的结果,但调度器中可能出现一些罕见的死锁情况。我们分析了这种死锁的原因,提高了新的实施。我们展示了如何尽可能避免死锁,以及如何使用某些寄存器重复,以其他方式可以绕过。我们还表明,除非P = NP,除非P = NP,否则无法设计一个多项式测试,该测试决定首先进行哪个操作,从而避免死锁,因此是重复的。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号