搜题
问题   更新时间2023/4/3 12:59:00

五、假设某程序各种分支指令数占所有指令数的百分比如下:

条件分支 20%(其中的60%是分支成功的)
跳转和调用 5%

现有一条段数为4的流水线,无条件分支在第2个时钟周期结束时就被解析出来,而条件分支要到第3个时钟周期结束时才能够被解析出来。第一个流水段是完全独立于指令类型的,即所有类型的指令都必须经过第一个流水段的处理。请问在没有任何控制相关的情况下,该流水线相对于存在上述控制相关情况下的加速比是多少?

答:没有控制相关时流水线的平均CPI=1 存在控制相关时:无条件分支在第2个时钟周期结束时就被解析出来,而条件分支要到第3个时钟周期结束时才能被解析出来,这意味着分支目标地址可以在第2个时钟周期计算出来(因为无条件分支只需要知道分支目标即可),而分支条件要到第3个时钟周期才能判断出来。 因为题目未指定控制相关的解决方法,故假设采用暂停流水线、预测分支成功、预测分支失败这3种方法。每种方法的分析如下: (1)若使用暂停流水线的策略,则对于条件分支,有2个额外的stall,对无条件分支,有1个额外的stall: CPI = 1+20%*2+5%*1 = 1.45 加速比S=CPI/1 = 1.45 (2) 若使用预测分支成功策略,则对于不成功的条件分支,有2个额外的stall,对无条件分支和成功的条件分支,有1个额外的stall 1: CPI = 1+20%*(60%*1+40%*2) +5%*1 = 1.33 加速比S=CPI/1 = 1.33 (3)若使用预测分支失败策略,则对于成功的条件分支,有2个额外的stall;对无条件分支,有1个额外的stall;对不成功的条件分支,其目标地址已经由PC 值给出,不必等待,所以无延迟: CPI = 1+20%*(60%*2 + 40%*0) +5%*1 = 1.29 加速比S=CPI/1 = 1.29
王老师:19139051760(拨打)