电子说
要理解指令流水线,先大概回顾一下CPU的内部结构:
图a
图b
由上面两个图我们知道,一条指令要被执行,需要通过一个电路把指令从存储器中取出,放进CPU里面,再由CPU里面的另一个电路ALU去执行(图b中的左边部分)。也就是说,取指令和执行指令是由两部分不同的电路完成的。
图1
上图是指令一条一条执行的过程。
图2
图2表示,当指令执行部件的某一部分电路空闲的时候,这个时候就可以采用流水线的方式。图中的一个方框表示一个时间周期。
这一部分表示对于第一条指令来说,当进入第二个时间周期,它已经处于执行阶段,ALU电路部分在工作,但是用于取指令的那部分电路空闲了,所以这部分取指令电路可以用于取出第二条指令,这就是指令流水线的基本原理。
图3
这个和我们工厂的流水线是一样的道理,流水线上不同的工人代表不同的电路部分。
上图是一条指令需要六个不同的电路进行配合。
当采用流水线以后,会出现一些问题,比如,在写后读相关问题中,第二条指令开始工作的时候,R1的内容必须已经确定,否则就会出错。对于这样的问题,就要有相应的解决办法。
由流水线产生了一些相应的技术:
上图中的一个方格代表一个时钟周期,在同一个时钟周期里面,可以有4条或者3条指令同时并发执行。注意,是并发,而不是并行,意味着CPU还是一个,只不过是利用不同的时间片。
上图中的一个时钟周期被多条指令分开,也就是说,执行指令的某一个动作的某个电路部分,不必等这个时钟周期结束,在同一个时钟周期内,就可以执行另外一条指令。比如,假定图3中的每个工人完成一个动作(检查一个零件或者打一个螺丝)规定为1分钟(时钟周期),但在超流水线技术里面,这个工人10秒钟就检查完了一个零件,剩下的50秒就可以检查另外的零件。
全部0条评论
快来发表一下你的评论吧 !