从水木一文到龙书和量化,讨论一下指令调度、指令选择和寄存器分配对代码质量的影响吧
http://www.newsmth.net/bbstcon.php?board=CSArch&gid=31442: 现在在看龙书,有点疑问,编译器有许多步组成,有些优化是machine independent, 对于最后的程序效率哪一步对性能影响最大呢?instruction scheduling, instruction selection,
: 还是register allocation?
: instruction scheduling 对于超标量处理器有硬件来实现
对于out of order的CPU,的确instruction scheduling可以不做了
: instruction selection量化里讲现在的处理器isa已经不是很关键了
如果RISC的指令集是这样,但是对于CISC,有多种寻址方式或是有一些特殊指令,还是需要instruction selection的
: register allocation 不知道影响是否大,但是编程规则一般要求函数体不要太大,
: x86 physical register估计也不少
register allocation主要的目的是减少spilling,即减少访存次数,和physical register或是register renaming其实关系不大
: 谢谢 如果不用做,现在的compiler将会是多么幸福啊!:mrgreen:
llvm的寄存器分配就没那么复杂,也许是因为现在Arch的reg都很多而且cache都很大。 对于指令选择,RISC的机器的确不再那么重要了:mrgreen:
页:
[1]