计算机组成原理6-流水线、多发射和超标量、SIMD

 

1、完整功能的CPU有3个周期概念:指令周期、机器周期、时钟周期

2、一条CPU指令的执行步骤:取得指令-指令译码-执行指令,这个过程至少花费一个时钟周期。

    单指令周期处理器:一个周期内,只执行一条指令。这样就需要保证时钟周期等于执行时间最长的指令时间。这样时钟频率就不能太高,否则指令可能还没有执行完成就开始执行下一条指令,而之前的指令计算结果还没有存到寄存器中。

 

这样的CPU实际效率并不高

3、流水线

    CPU 的指令执行过程,其实也是由各个电路模块组成的。在取指令的时候,需要一个译码器把数据从内存里面取出来,写入到寄存器中;在指令译码的时候,需要另外一个译码器,把指令解析成对应的控制信号、内存地址和数据;到了指令执行的时候,需要的则是一个完成计算工作的 ALU。把时钟周期设置成整条指令执行的时间,而是拆分成完成这样的一个一个小步骤需要的时间。同时,每一个阶段的电路在完成对应的任务之后,也不需要等待整个指令执行完成,而是可以直接执行下一条指令的对应阶段。


 

不需要确保最复杂的那条指令在时钟周期里面执行完成,而只要保障一个最复杂的流水线级的操作,在一个时钟周期内完成就好了。

4、 超长流水线

    流水线并没有缩短单条指令的响应时间,但是可以增加运行很多条指令时候的吞吐率。

    流水线深度的增加,需要的电路数量变多了,也就是使用的晶体管也就变多了。过深的流水线,不仅不能提升计算机指令的吞吐率,更会加大计算的功耗和散热问题。而流水线带来的吞吐率提升,只是一个理想情况下的理论值。在实践的应用过程中,还需要解决指令之间的依赖问题。这个使得流水线,特别是超长的流水线的执行效率变得很低。要想解决好冒险的依赖关系问题,需要引入乱序执行、分支预测等技术。

5、关于多发射和超标量

    通过增加硬件的方式,将取指令和指令译码实现并行,一次性取出多条指令,然后分发给多个并行的指令译码器,进行译码,然后对应交给不同的功能单元去处理。这样,在一个时钟周期里,能够完成的指令就不只一条了。这种 CPU 设计,叫作多发射(Mulitple Issue)和超标量(Superscalar)。

    ​多发射是指将多条指令同时发射到不同的译码器或者后续处理流水线中。

    ​超标量的CPU里面有很多并行的流水线,而不是单一一条。

6、单指令多数据流

    ​SIMD 在获取数据和执行指令的时候,都做到了并行。一方面,在从内存里面读取数据的时候,SIMD 是一次性读取多个数据。对于那些在计算层面存在大量“数据并行”(Data Parallelism)的计算中,使用 SIMD 是一个很划算的办法。在这个大量的“数据并行”,其实通常就是实践当中的向量运算或者矩阵运算。在实际的程序开发过程中,过去通常是在进行图片、视频、音频的处理。最近几年则通常是在进行各种机器学习算法的计算。

猜你喜欢

转载自www.cnblogs.com/pangchunlei/p/12520371.html