一.流水线的概念与原理
处理器按照一系列步骤来执行每一条指令,典型的步骤如下:
① 从存储器读取指令(fetch);
② 译码(以鉴别它属于哪一种指令)(dec);
③ 从指令中提取指令的操作数(这些操作数往往存在于寄存器中)(reg);
④ 如将操作数进行组合以得到结果或存储器地址(ALU);
⑤ 如果需要,则访问存储器以存储数据(mem);
⑥ 将结果写回到寄存器堆(res)。
并不是所有指令 都需要上面所有的步骤,但是多数指令需要其中多个步骤。在执行每一步指令时,只有少量的硬件处于工作状态,这种资源的浪费是不可容忍的。有一种方法可以明显改善硬件资源利用情况,这就是当前一条指令结束之前就开始执行下一条指令,即我们常说的流水线。可以把上面的六个步骤想象成是汽车工厂流水线上的六个工人,每个人负责汽车生产的一个步骤,在第一个工人完成自己的工作之后无需等待整个汽车生产完毕再开始下一辆车的工作,每个工人至始至终都在做自己分内的工作,这样有效的提高了工作效率。类比回来,硬件使用的效率和处理器的吞吐量大大提高。有一点需要注意:从原理上说,上述流水线可将工作效率提高到六倍,但是由于硬件本身的一些限制,实际情况会少一些。
二. 流水线的分类
1. 三级流水线ARM组织