今天高体把ILP讲完了,正好总结一下。
首先是问题的提出,指令级并行中存在着数据依赖和冒险,以及控制依赖的问题,影响了指令并行度。
然后是问题的解决,针对不同的问题给出不同的解决办法:
Forwardingand bypassing
Delayedbranches and simple branch scheduling
Basiccompiler pipeline scheduling
Basicdynamic scheduling(scoreboarding)
Loopunrolling
Branchprediction
Dynamicscheduling with renaming
Hardwarespeculation
Dynamicmemory disambiguation
Issuingmultiple instructions per cycle
Compilerdependence analysis,software pipelining,trace scheduling
Hardwaresupport for compiler speculation
另外还有线程级并行
这些方法每个都并不复杂,理解之后就很容易记忆了,重要的是方法提出的背景。在当时的历史背景下,针对特定的问题,在综合各方面因素后,给出了这样的解决办法。通过学习这些,希望能够获得分析问题解决问题的能力,在新的环境下面临新的问题给出新的解决办法。
要抽出时间好好复习一下,首先要把ComputerArchitecture: A Quantitative Approach的这部分内容读完。