文章目录
乱序执行的关键技术
指令级并行的关键技术
- 指令流水线: 时间重叠
- 多发射: 空间重复
- 乱序执行(有序结束): 充分利用资源
• 动态调度:前面指令因相关而等待时,后面的可继续前进。
• 转移猜测:在转移条件确定前,猜测某个分支取指并执行
• 非阻塞访存:提高访存指令执行效率,减少访存阻塞
• 乱序执行可以提高性能1.5-2倍。
动态调度技术
(1)动态调度的主要作用及其思想:
有序进入、乱序执行、有序结束
- 把读寄存器从译码中区分开来,并利用保留站等指令缓存技术避免前面的阻塞的指令影响后面指令的执行;
- 通过ROB对执行完的指令重新排序实现有序结束;
- 利用寄存器重命名技术保存未提交的临时结果,消除WAW和WAR相关并支持猜测性执行;
(2)影响动态调度的主要因素:
①指令缓存的结构:
• 独立保留站
• 组保留站
• 全局保留站
②读取寄存器内容的时间:
• 保留站前读
• 保留站后读
③寄存器重命名的方法:
• 重命名寄存器和物理寄存器分开
• 重命名寄存器和物理寄存器合并
动态调度流水线数据通路
保留站的组织(指令缓存结构)
比较:数据通路复杂度(结果总线传送)、保留站项数、保留站效率、发射复杂度
(1)独立保留站:每个功能部件一个保留站
> 每个保留站项数较少(2-4项),只要一个写入端口一个读出端口,输出选择比较简单;
> 保留站利用率低,可能忙的忙死甚至引起堵塞,闲的闲死;
> 结果总线送到所有保留站,连线长,结果写回可能需要单独一拍;
- CDC6600每个EU一项保留站;
- IBM360/91中浮点加减部件两项,浮点乘法部件3项保留站;
- PowerPC 620三个定点一个浮点部件每个两项保留站;
- 龙芯1号三个定点两个浮点部件每个两项保留站;
(2)分组保留站:同组的功能部件共享保留站
> 每个保留站项数较多,每个保留站需要多个写入端口多个读出口,保留站读出可能需要单独一拍;
> 保留站效率较高;
> 结果总线不用送到每个功能部件;
- 一般划分时考虑定点、浮点、访存;
- R10000定点、浮点、访存各16项 • Alpha 21264定点20项、浮点15项
- PA8700运算和访存各28项,还起到ROB作用
- Godson-2采用组保留站
(3)全局保留站:所有功能部件共享保留站
> 保留站项数很多,读出写入端口都很多,保留站读出时间长,保留站控制很复杂
> 保留站效率很高
> 结果总线只送到全局保留站
- Pentium Pro的全局保留站有20项
(4)不同处理器的保留站组织:
(5)不同处理器的保留站总项数比较:
寄存器与保留站的关系—读取寄存器值的时机
(1)保留站前读寄存器:寄存器的输出作为保留站的输入
• 操作数没准备好就读寄存器,保留站侦听结果总线获取没写回的值
• 有序发射:有序读寄存器
• 保留站中值的来源:寄存器、重命名寄存器、进入保留站时侦听、进入保留站后侦听
• 保留站中有值域,较复杂
• 寄存器读端口数为发射宽度
(2)保留站后读寄存器:保留站的输出作为寄存