|
FENG950 发表于 2013-3-15 20:07
遇到结果相关,难道ISA加几个寄存器就解决问题了?x86-64加多8个寄存器就解决大问题了?优化寄存器使用和 ...
abcdefgh 八个live-in value, 四个通用寄存器。
load r1,a;
load r2,b;
load r3,c;
load r4,d;
几个使用abcd的算术操作序列s1;
再跟着几个使用值efg的算术操作序列s2;
需要把efg load进寄存器r1,r2,r3, abc store回存储器;//r1,r2,r3引入了假依赖,可以用重命名解决,也就是s1s2的算术操作能一起执行,但是load store避免不了,重命名根本帮不到忙
再跟着几个使用abcd的算术操作,但是现在abc已经不在r1,r2,r3里面了;
abc又要load回来,efg又要store回去;如果中间的算术操作需要同时用到abcd\efg 这两组中的任意两个,编译器就要抓瞎,再继续load store,这等于限制了live-in value的存活,要做代码优化的时候碰到的是零零散散的abcd\efg存活空间,调度能力受限
就这么简单的事情,这个东西叫做register perssure,跟寄存器重命名有个毛关系?这个问题通过增加ISA可见寄存器的数量不就很轻松地解决了? |
|