A:数据流
关键路径为左边这条路径(红色标注)
B:延迟界限
C:延迟界限
D:
根据教材,浮点数完成一个加法运算需要三个时钟周期,完成乘法需要五个时钟周期;整数完成一次加法需要1个周期,完成一次乘法需要3个周期。以此作为分析的前提。
前后两次迭代数据相关性影响有三条路径
1、%xmm1与%xmm1相关路径 左L
2、%rdx与%rdx相关路径 右R
3、%rdx与%xmm1相关路径 左与右LR
下边用L、R、LR代指各条路径
从串行角度考虑,假设有n次操作,L需要3n的时间,R需要n的时间,LR需要8n时间
首先很容易知道R路径一定不是关键路径,现在分析L与LR:
我们很容易认为LR为关键路径,因为有最耗时的乘法,做完乘法后,还有一次加法。
我们不妨先来分析mul的操作数,mul操作的两个操作数没有相关性,只要rdx确定,mul就可以立即执行;由于rdx不影响性能,所以可以认为mul的两个操作数是已知的,又由于mul的发射时间(发射时间:两次运算之间间隔的最小周期数)是1,所以mul可以看做是一个周期的延迟。
这样,LR的串行操作就可以化为并行操作。
所以最后的关键路径为L,无法用并行优化。所以CPE为3
我认为,这样也可以体现课本上的那句话:现代微处理器取得的了不起的功绩之一是,它们采用复杂而奇异的微处理器结构,其中,多条指令可以并行地执行,同时又呈现出一种简单的顺序执行指令的表象。
谈一下收获:
1、对这种根据数据相关性的数据流模型,有了比较深刻的体会
2、现代微处理器取得的了不起的功绩之一是,它们采用复杂而奇异的微处理器结构,其中,多条指令可以并行地执行,同时又呈现出一种简单的顺序执行指令的表象。我认为这种思维,跟物理中的微观与宏观有一点类似,宏观静止的物体,微观的分子在不停地做无规则运动。通过本题体会到了这种思维(希望以后在处理其他问题的时候可以用到)