我正在尝试将调度添加到我的后端的llvm中,以防止数据风险。后端与microblaze非常相似,但有很多不同之处,例如分支延迟的多个延迟槽。目前,每当llvm编译代码时,我总是发现数据风险,特别是对于加载和存储指令。我已经看过PPC和ARM后端调度,但我不知道如何适应它,所以我想做我自己的。我想知道如何在编译过程中从llvm获得编译后的指令列表,以便根据使用的寄存器对指令进行排序并检查依赖关系。
我现在对此一无所知,因为我不是一个熟练的C++程序员。CPU是流水线的,只有控制风险(分支)和数据风险。CPU在流水线中有5个阶段,但是只有阶段3和阶段5中的指令能够使用阶段1中的数据。我已经为我的后端设置了延迟,它不会改变任何东西。
发布于 2012-08-07 20:58:54
我不认为你应该重新发明轮子并编写你的侧边调度器。您需要在您的后台添加HazardRecognizer。这样,LLVM的调度器将知道可能的危险,并尝试避免它们。PPC后端可能是这种调度的最佳示例。
https://stackoverflow.com/questions/11841253
复制相似问题