超标量处理器概览

超标量处理器概览

1.1为什么需要超标量

处理器执行速度的影响因素

  • 程序中指令的数量

  • 每条指令在处理器中执行所需要的周期数

    • 普通流水线处理器每周期最多执行1条指令
    • 超标量处理器每周期可以执行多于一条的指令
    • 但不是每周期执行多于一条指令的处理器都是超标量处理器,如VLIW结构的也可以(依靠编译器和程序员来决定哪些指令可以并行执行)
  • 处理器每个周期的时间

超标量处理器专门针对优化IPC(instruction per cycle),超标量处理器每周期可以从I-Cashe提取n条指令送入流水线,

1.2 普通处理器的流水线

理想流水线

  • 流水线各阶段所需时间近似相等
  • 各阶段的操作被重复执行。对于算数运算类型的指令不需要访问存储器,那么它只需要在访存阶段什么都不做就可以。
  • 流水线中各个阶段相互独立,互不相干。但各指令间存在各种相关性,因此很难满足。

对于复杂指令集如x86,因为指令长度不等,执行时间不等,很难直接实现流水线。

对于精简指令集如arm,因为指令长度相等,并且每条指令任务量比较规整,所以容易使用流水线。


将流水线阶段合并,可以产生三级流水等,适用于对性能要不高的低功耗嵌入式领域。

将流水线阶段继续细分,可以获得更高性能,但是也会增加硬件资源开销和分支预测失败后果更严重。

指令相关性

先写后读:后一条指令的操作数来源于上一条指令的结果,后条指令必须等上一条指令得到结果才能继续执行。

先读后写:一条指令要将结果写入到某个寄存器,但这个寄存器还在被其他指令读取,不能够马上写入。

先写后写:两条指令都要将结果写入同一个寄存器,那么后面指令必须等前面指令执行完才能执行写操作。

控制相关性:分支指令只有计算出结果才可以知道后续执行哪些指令,在得到结果的等待时间中只能按照预测方式取指。

对于超标量处理器WAW、WAR、RAW三种相关性都会阻碍指令乱序执行,需要在流水线中进行特殊处理。

1.3 超标量处理器的流水线

超标量处理器执行指令两种方式:顺序执行、乱序执行

frontend指流水线中的取指、译码

issue指发射,将指令送到对应的功能单元执行。

write back指将指令结果写到目的寄存器。可通过内部寄存器重命名实现乱序。

指令完成取指、译码、寄存器重命名后进入发射阶段,此时指令存储在缓存发射队列中,一旦指令操作数准备好了,就可以从发射队列中离开,送到对应运算单元进行执行。

执行完后乱序写入重排序缓存,在重排序缓存中实现运行结果的顺序整理。

超标量处理器一般流水线深度比较深,除流水线各阶段外还需要有预测技术和恢复电路技术。

posted @   骑猪上树的少年  阅读(1197)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
回到顶部
点击右上角即可分享
微信分享提示

目录导航