计分板 (处理器)
编辑处理器(处理器)是一种集中的方法,首先用于CDC 6600计算机,用于动态调度指令,以便在没有冲突且硬件可用时它们可以乱序执行。
在记分牌中,每条指令的数据依赖性都会被记录、跟踪并始终严格遵守。 只有当记分牌确定与之前发布的(飞行中)指令没有冲突时,才会发布指令。 如果一条指令因为发出不安全(或资源不足)而停止,记分板会xxx执行指令的流程,直到在发出停止的指令之前解决所有依赖关系。 本质上:读取在没有写风险的情况下进行,而写入在没有读取风险的情况下进行。
处理器(处理器)本质上是数据流语言中相同底层算法的硬件实现,创建有向无环图,其中在编程语言运行时应用相同的逻辑。
阶段
编辑指令按顺序解码并经过以下四个阶段。
- 问题:系统检查该指令将读取和写入哪些寄存器,以及在何处检测到冲突 WAR 和 RAW 以及 WAW。 RAW 和 WAR 危险使用依赖矩阵(由原始 6600 设计中的 SR NOR 锁存器构建)记录,因为在以下阶段将需要它。 同时,在第二个矩阵中记录一个条目,该矩阵将指令顺序记录为有向无环图。 为了避免输出依赖性(WAW – 写后写)指令被暂停,直到打算写入同一寄存器的指令完成。 当所需的功能单元当前正忙时,该指令也会停止。 除非从头到尾完全可追踪,否则不会发出任何指令。
- 读取操作数:指令发出并正确分配给所需的硬件模块(在 Thornton 的书中称为计算单元)后,该单元等待所有操作数可用。 当所有其他单元都删除了写入依赖项(RAW – 写入后读取)时,只读继续进行。 为避免寄存器文件端口争用,优先选择器选择一个计算单元(在多个单元都没有危险的情况下)。
- 执行:获取所有操作数后,计算单元开始执行。 结果准备好后,通知记分牌。
- 写入结果:在此阶段,结果已准备就绪,但尚未写入其目标寄存器。 在单元清除所有(WAR - 读取后写入)危险之前,写入可能不会继续。 此处xxx的额外延迟是基于寄存器文件端口的可用性:在 6600 中,使用优先级选择器为每个写入端口选择一个结果。 一旦写入,该单元就被标记为不再忙碌,所有的危险和状态都被丢弃。 请注意,只有在具有阴影功能的高级(增强、精确)记分板中,写入结果阶段才会被阻止(延迟)。 原来的6600没有这个能力。
上面必须注意的是,读取仅在没有写入风险的情况下进行,而写入在没有读取风险的情况下进行。 这是合乎逻辑的,但与预期相矛盾。 特别要注意,Writes 必须在读取后等待写入,以便其他单元有机会读取寄存器中的当前值,然后再用新值覆盖它。 因此,为什么写入必须等到没有 WaR 危险。
数据结构
编辑为了控制指令的执行,记分板维护了三个状态表:
- 指令状态:指示每条正在执行的指令处于四个阶段中的哪个阶段。
- 功能单元状态:指示每个功能单元的状态。 每个功能单元在表中维护9个字段:
- 忙碌:表示设备是否正在使用
- Op:要在单元中执行的操作
- Fi:目标寄存器
- Fj,Fk:源寄存器编号
- Qj,Qk:将产生源寄存器 Fj,Fk 的功能单元
- Rj,Rk:指示 Fj、Fk 何时准备好但尚未读取的标志。
- 寄存器状态:表示对于每个寄存器,哪个功能单元将结果写入其中。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196089/