计算机组成原理与系统结构 (51).ppt
2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中寄存器超标量中寄存器超标量中寄存器超标量中寄存器重命名技术重命名技术重命名技术重命名技术计算机组成原理与系统结构2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中寄存器重命名技术CacheCache反相关性和输出相关读后写相关性读后写相关性(后一条指令不能在前一后一条指令不能在前一条指令读操作完成之前进行写操作条指令读操作完成之前进行写操作)写写相关性写写相关性(后一条指令不能在前一条后一条指令不能在前一条指令写操作完成之前进行写操作指令写操作完成之前进行写操作)2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中寄存器重命名技术CacheCacheR3:=R3+R5;(I1)举例R4:=R3+1;(I2)R3:=R5+1;(I3)R7:=R3+R4;(I4)I1和I2具有先写后读相关,I1和I3具有写写相关以及先读后写相关,I1和I4具有先写后读相关I2和I3具有先读后写相关,I2和I4具有先写后读相关I3和I4具有先写后读相关2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中寄存器重命名技术CacheCache解决方法在相关指令间加若干其他指令,让流水线充分流水,从而保证后面的指令一定在前面相关的指令执行后再被执行由于大部分相关性是围绕者R3的,如果把I3和I4中的寄存器R3改为R6,很多相关性就自然不存在了,这就是现代CPU中常用的寄存器重命名技术的思想2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中寄存器重命名技术CacheCache寄存器重命名由于乱序发出乱序完成策略的使用,寄存由于乱序发出乱序完成策略的使用,寄存器的值可能不再反映原来程序的顺序流,器的值可能不再反映原来程序的顺序流,从而导致出现输出相关或者是反相关的问从而导致出现输出相关或者是反相关的问题题2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache本质上是资源复制将不同指令使用的同名寄存器映射到不同的物理寄存器上去超标量中寄存器重命名技术CacheCache寄存器重命名超标量中的解决方法超标量中的解决方法:寄存器重命名在CPU内部通过硬件在寄存器窗口去实现如果物理寄存器耗尽时,那相关指令依旧需要等待2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache由程序和编译器提供超标量中寄存器重命名技术CacheCache举例不带下标的寄存器引用指的是原指令的逻辑寄存器不带下标的寄存器引用指的是原指令的逻辑寄存器R3:=R3+R5;(I1)R4:=R3+1;(I2)R3:=R5+1;(I3)R7:=R3+R4;(I4)2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中寄存器重命名技术CacheCache举例仅用于流水线带下标的寄存器引用指向被硬件重新分配用来带下标的寄存器引用指向被硬件重新分配用来存储新值的物理寄存器存储新值的物理寄存器重命名之后重命名之后,I3,I3能立即被发出能立即被发出R3b:=R3a+R5a (I1)R4b:=R3b+1 (I2)R3c:=R5a+1 (I3)R7b:=R3c+R4b (I4)2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量中提高性能的技术CacheCache三种硬件技术 资源复制乱序发出寄存器重命名目前的CPU一般是先利用寄存器重命名技术解决反相关、输出相关等问题,再乱序发出,这样可以发出的指令就会更多些2N/2w i=j mod m(Tag)CPUN=(s+w)i=j mod mCache2N/2w 2N/2w Cache超标量的不同组织比较CacheCache不考虑过程相关时不同机器组织的加速比对比