Skip to content

Multiple-issue----SuperScalar & VLIW

:material-circle-edit-outline: 约 530 个字 :material-clock-time-two-outline: 预计阅读时间 2 分钟

PPT 智云课堂 26 Superscalar 和 VLIW:如何让 CPU 的吞吐率超过 1?

[!ABSTRACT]

我们希望进一步改进处理器的性能,但目前的框架下,似乎 IPC 只能到 1

我们可以超越现有的框架

超标量 Superscalar

增加 decoder 数量,一次 fetch 多个指令,同时把多条指令发射(Issue)到不同的译码器或者后续处理的流水线中去,保证所有 FU 始终 busy

img

CPU 需要在指令执行之前,判断指令之间是否有依赖关系,如果有就不能分发到执行阶段

依赖关系的识别分静态和动态

  • Statically Scheduled Superscalar
  • Dynamically Scheduled Superscalar

超标量 CPU 又被称为 动态多发射处理器,依赖关系的检测使得 CPU 电路变得十分复杂

我们能不能不把分析和解决依赖关系的事情,放到软件里面来干呢

超长指令字设计 Very Long Instruction Word(VLIW)

程序的 CPU 执行时间 = 指令数 × CPI × Clock Cycle Time

我们可以通过改进编译器来优化 指令数 这个指标

在乱序执行和超标量的 CPU 架构里,指令的前后依赖关系,是由 CPU 内部的硬件电路来检测的,而到了超长指令字的架构里面,这个工作交给了编译器这个软件

  • 我们可以让编译器把没有依赖关系的代码位置进行交换。然后,再把多条连续的指令打包成一个指令包(Group)
  • CPU 在运行的时候,不再是取一条指令,而是取出一个指令包。然后译码解析整个指令包,解析出 N 条指令直接并行运行

下一组指令并不是等上一组指令执行完成之后再执行,而是在上一组指令的指令译码阶段,就开始取指令了

相当于原来是一个个指令进行流水,现在是一个个指令包进行流水

img

使用这项技术的一个处理器叫 Explicitly Parallel Instruction Computer,缩写 EPIC