0%

摘要

PL.8编译器接受多种源语言,并为几个不同机器生成高质量目标代码。使用的策略是先将源程序简单地转换成低级别中间语言。然后通过全局优化和寄存器分配来提高代码质量,而不是依赖于特殊代码选择。

阅读全文 »

简介

Flutter 是 Google 开源的跨平台应用开发框架,使用这个框架开发的应用有两种执行方式。

  • JIT:用于开发阶段,可以热更新Dart源文件,改变UI布局,便于应用开发。
  • AOT:用于发布阶段,Dart源文件被直接编译成目标机器码,无法进行热更新。
阅读全文 »

劈里啪啦、劈里啪啦的声音已经远去,过节的气氛也已在忙碌的工作中慢慢消散了。在节日的尾巴来到了首都出差,吃了14块钱但只有两块牛肉的牛肉面。闲暇时刻,写一些去年的总结。

阅读全文 »

摘要

本论文详细介绍了摇摆模调度的实现,这是一种软件流水技术,在编译时间和生成代码质量上具有有效性和高效性。软件流水致力于挖掘循环中的指令级并行度,这往往有助于科学和图形应用程序。

模调度是一类尝试重叠单基本块循环的迭代和基于优先级(来自一组启发式)调度指令的算法。摇摆模调度使用的方法被设计用于取得高度优化的调度,保持低寄存器压力,以及在取得两者的同时有个合理的编译时间。

摇摆模调度的一个缺点,(以及所有的模调度算法)是只处理单基本块循环会导致失去更多指令级平行度的优化机会。这篇论文详细介绍了将摇摆模调度算法扩展成以超级块的方式处理多个基本块循环。超级块是一组基本块,其单入口多出口的。将摇摆模调度扩展成能处理这种类型的循环,可以增加摇摆模调度可以应用的循环的数量。此外,它允许模调度应用到热点路径上(也是单入多出的),根据 profile 信息可以离线或者在运行时进行优化。

我们的摇摆模调度实现以及扩展到超级块循环的算法都进行了评估,发现它们是既有效又高效。对于原始算法,测试集被转换了有 10-33% 的性能收益,同时扩展的算法增加了测试集 7-22% 的性能收益。

阅读全文 »

摘要

这篇文章给出了一个新的软流水方法,称为摇摆模调度算法(SMS)。 它生成的调度在起始间隔,寄存器需求,和阶段数量方面都是几乎最优的。摇摆模调度算法是一个启发式方法,计算开销比较低。这篇文章首先描述了相关技术,然后在通用 VLIW 架构上的 Pefect Club 基准测试套上评估它。SMS 和其它的启发式方法相比,表明了它获得的调度质量和编译时间方面都优于其它的。为了进一步探索 SMS 的效果,描述了为 Equator MAP1000 处理器的生产质量编译器添加这个优化的一些经验;讨论了实现的问题,以及原始算法的修改和提高。最后,使用一组工业多媒体应用给出了一个实验结果。

阅读全文 »

摘要

这章介绍 CHESS,一个定点 DSP 处理器的可变目标代码生成环境。CHESS 解决了一系列的商业特定应用领域的处理器,它们越来越广泛地应用在通信,语音和音频处理中的嵌入式应用中。CHESS 是基于混合的行为/结构处理器表示模型的,它可以解释许多的架构特性,典型的如定点 DSP 处理器。此外,这个代码生成器采用了一系列高效的优化技术。这些特性产生了高度优化的机器码。

阅读全文 »