超标量处理器设计中的基本概念

1. 指令集

CSIC(Complex Instruction Set Computer):复杂指令集的CPU架构。

RSIC(Reduced Instruction Set Computer):精简指令集的CPU架构。

2. 标量/超标量

标量处理器:每周期最多只能执行一条指令。

超标量处理器:能够在一个周期内执行多条指令。

3. 顺序执行/乱序执行

顺序执行:按照程序中指定的顺序来执行指令。一般用标量处理器中,这种方式制约了处理器性能的提高。

乱序执行:指令在处理器中可以按照程序中指定的顺序执行,也可以不遵循这个顺序,只要指令的源操作数准备好了就可以立即执行,它就可以被执行。乱序执行不能改变程序本来的功能,因此还需要一些处理办法来使得乱序执行的指令看起来仍然按照程序中指定的顺序更改处理器的状态。

4.指令相关性:RAW/WAR/WAW

先写后读(Read After Write):也称true dependence,一条指令的操作数如果来自之前指令的结果,那么这条指令必须等到之前的指令得到了结果,才可以继续执行。这种类型相关性无法回避。

先读后写(Write After Read):也称anti-dependence,一条指令要将结果写到某个寄存器中,但是这个寄存器还在被其他指令读取,所以不能够马上写入。这中类型相关性可以回避,只要将写指令的结果写到其他寄存器据可以了。

先写后写(Write After Write):也称output dependence,如果两条指令要将结果写入到同一个寄存器中,那么后面的指令必须等到前面的指令写完后才能执行写操作。这种类型的相关性是可以避免的,只要后续的指令将结果写道其他寄存器就可以了。

5. 流水线

流水线技术是一种在处理器中实现准并行处理的技术。在程序执行时,多条指令重叠进行操作,以提高各部件的利用率和指令的平均执行速度。

一个指令的生命周期可以分为不同的阶段,如取指、译码、执行等。在取指阶段,指令从存储器中被读取出来;在译码阶段,存储器中取出的指令被翻译成操作数寄存器索引;在执行阶段,指令的操作数从通用寄存器组中被读取并计算出结果。

流水线技术最初是在RISC的架构中出现的,旨在提高处理器处理效率,争取在一个时钟周期中完成一条指令。这种思想后来被广泛应用于各种处理器和计算机系统中,以提高处理器的性能和效率。

在流水线中,每个部件都有一定的时间来完成其工作。如果某个部件等待时间过长,会导致整个流水线停顿,从而降低处理器的效率。因此,流水线技术的优化和改进一直是处理器设计的重要方向之一。

6. 乱序执行的超标量处理器流水线的各个阶段

取指令(Fetch):负责从I-Cache中取指令.I-Cache负责存储最近常用的指令;分支预测器来决定下一条指令的PC值,这两部分在超标量处理器中需要进行特殊的处理。

解码(Decode):识别指令的类型、指令需要的操作数以及指定的一些控制信号等。

寄存器重命名(Rgister Rename):在流水线的解码阶段,可以得到指令的源寄存器和目的寄存器,这些寄存器都是逻辑寄存器,实在指令集中定义好的,为了解决WAW和WAR这两种“伪相关性”,需要使用寄存器重命名的方法,将指令集中定义的逻辑寄存器重命名为处理器内部使用的物理寄存器,物理寄存器的个数要多于逻辑寄存器,通过寄存器重命名,处理器可以调度更多可以并行执行的命令。由于寄存器重命名的时间比较长,显示当中的处理器都会将其单独使用一级流水线,而不是和解码阶段放在一起。

分发(Dispatch):在这一阶段,被重命名后的指令会按照程序中规定的顺序,写入到发射队列,重排序缓存和Store Buffer等部件中,弱国在这些部件中没有空闲的空间可以容纳当前的指令,那么这些指令就需要在流水线的重命名阶段进行等待,这就相当于暂停了寄存器重命名以及之前的所有流水线,知道这些部件中有空闲的空间为止。

发射(Issue):经过流水线的分发阶段过后,指令被写到了发射队列中,仲裁电路会从这个部件中挑选出合适的指令送到FU(Function Unit)单元中执行。这个阶段是顺序执行到乱序执行的分界点,指令在这个阶段以后,都是按照乱序的方式来执行,直到流水线的提交阶段,才会重新变回顺序执行的状态。

读取寄存器(Register File Read):被仲裁电路选中的指令需要从物理寄存器堆(PRF)中读取操作数,一般情况下,被冲裁电路选中的指令可以从PRF中找到源操作数。当不能从PRF中找到操作数时,需要在指令送到FU之前从旁路网络中获得操作数。

执行(Execute):指令得到他所需要的源操作数后,马上就送到对应的FU中执行,在超标量处理器中,这个阶段通常有多个不同类型的FU在执行。

写回(Write Back):这个阶段会将FU的计算结果写到物理寄存器堆中,同时,这个阶段还有一个重要的功能,就是通过旁路网络将这个计算结果送到需要的地方。

提交(Commit):这个阶段器主要作用的部件是重排序缓存(ROB),它会将乱序执行的指令拉回到程序中规定的顺序,之所一能完成这样的任务,是因为指令在流水线的分发阶段,按照程序中规定的顺序写道了重排序缓存(ROB)中;这个阶段也会对指令产生的异常进行处理,所有的异常都必须等到指令到达流水线的提交阶段是才能进行处理,这样可以保证异常的处理按照程序中规定的顺序进行,并且能够实习那精确的异常处理;一条指令一旦从重排序缓存中离开而退休,那么就对处理器的状态进行了修改,就再也无法返回到之前的状态了。

内容来源:姚永斌--《超标量处理器设计》.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值