56
1 第第第 第第第第第第第

第四章 标量流水技术

  • Upload
    kamin

  • View
    195

  • Download
    5

Embed Size (px)

DESCRIPTION

第四章 标量流水技术. 取指 I k. 分析 I k. 执行 I k. 取指 I k+1. 分析 I k+1. 执行 I k+1. 时间 t. (a) 顺序解释执行. 取指 I k. 分析 I k. 执行 I k. 取指 I k. 分析 I k. 执行 I k. 取指 I k+1. 分析 I k+1. 执行 I k+1. 取指 I k+1. 分析 I k+1. 执行 I k+1. t. t. (b) 重叠解释执行. (c) 更高重叠程度解释执行. 第一节 标量流水工作原理. 一、 指令重叠与先行控制 工作方式. - PowerPoint PPT Presentation

Citation preview

Page 1: 第四章  标量流水技术

1

第四章 指令级并行技术

Page 2: 第四章  标量流水技术

2

第一节 流水线技术基础一、流水线基本原理1 、流水线的工作原理 * 基本思想:细化指令执行过程,使各操作阶段均可重叠译码

(ID)取指 (IF) 访存(MEM)

执行(EX)

写回(WB)

* 工作原理:各功能段可重叠完成指令操作

0 1 2 3 4 5 n n+4拍I1

段( 级 )写回

WB访存MEM执行 EX译码 ID取指 IF

I2 I3 I4 I5I1

I1I1

I1

I2I2

I2I2

I3I3

I3I3

I4I4

I4I4

I5I5

I5I5

InIn

InIn

In

……

……

程序执行时间— T 串行= n·(mΔt) , T 流水= mΔt+ (n-1)Δt

CISC/RISC 段不同填入 流水 排空

回下页

Page 3: 第四章  标量流水技术

3

2 、流水线的基本要求 * 要求 1 :各流水段的操作相互独立 ←重叠所需 方法—增设段间寄存器 ( 分离 OP) ,增设数据通路 ( 跨段 OP)

* 要求 2 :各流水段的操作同步 方法—设置公共时钟,拍长= max{ 段 i 时长 }

拍时钟

转上页

* 要求 3 :各流水段的操作无冲突 方法—增设流水线控制器,解决结构 / 数据 / 控制冒险

IF/ID

ID/EX

EX/M

EM

MEM

/W

B

IF ID EX MEM WB

PC,IM

ID,REG ALU DM REG

IF IF/ID

ID

ID/EX

EX EX/M

EM

MEM

MEM

/W

B WB

流水线控制器

指令状态拍时钟 硬件状态

Page 4: 第四章  标量流水技术

4

3 、流水线的分类 ( 属性 ) * 按处理级别分类:操作级、指令级、处理机级 ( 宏流水 ) * 按功能分类:单功能、多功能 * 按工作方式分类:静态、动态

* 按连接方式分类:线性、非线性ID EX ME

M WBIFMU

X

拍I1

段S6S5S4S3S2S1 I2 In… I① I② …

I1 I2 In…I1 I2 In…

I1 I2 In…

I1 I2 In…I① I② …

I① I② …

拍I1

段S6S5S4S3S2S1 I2 In… I① I② …

I1 I2 In…I1 I2 In…

I1 I2 In…

I1 I2 In…I① I② …

I① I② …

动态→多功能单功能→静态

* 按控制方式分类:顺序流动、乱序流动

回 7页

Page 5: 第四章  标量流水技术

5

4 、流水线的性能指标 * 吞吐率: TP= 任务数 / 处理 n 个任务总时间

tntmn

PT )1(

最大吞吐率— 实际吞吐率—

tPT 1maxn→∞

时, 吞吐率优化方法—增加段数 m 、减少Δt , Δt=max{Δti} S1

Δt1 Δt1 3Δt1 Δt1

S2 S3 S4

优化方法:细化部件,或并联设置多套部件S1Δt1 Δt1 Δt1 Δt1 Δt1 Δt1

S2 S3a 3b S3c S4

S1

Δt1 Δt1 3Δt1 Δt1

S2S3a

S4S3bS3c

MU

X

MU

X

流水线例:

回 7页

Page 6: 第四章  标量流水技术

6

* 加速比: SP= 串行执行时间 / 流水执行时间

当 n→∞ 时, SP →m1)1(

nmnm

tntmtmn

PS

最大加速比— 实际加速比— 加速比优化方法—增加段数 m * 效率:即流水线设备的利用率, E= 任务时空区 / 总时空区

效率优化方法—增加任务数量 n 最大效率— 当 n→∞ 时, E →1

tTmSE PP /对于线性流水线,1)1(

nmn

tnmmtmnE 实际效率—

回下页

Page 7: 第四章  标量流水技术

7

* 性能分析:下图静态、加乘双功能流水线中,加法功能使用3 个段,分析流水方式实现∏ (ai+bi) 的性能,其中 i=1~4

算法—

转 4页

S1 S2 S3 S4S5

S6MU

Xzx

y

拍①

段S6S5S4S3S2S1 ㈠② ③ ④ ㈡ ㈢

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

① ② ③ ④① ② ③ ④

㈠ ㈡㈠ ㈡㈠ ㈡㈠ ㈡

㈢ ㈢ ㈢㈢

性能— TP = 7/(17Δt) , SP = 1.88 , E = 26.4% 分析—①指令数 n 小,填入、排空时间过多 ② 静态流水,排空后才能切换功能 ③ 数据冒险,排除 ( 如暂停 ) 后才继续流水

转 5页 转上页

Page 8: 第四章  标量流水技术

8

bdatm

0

5 、流水线段数选择 假设:各功能段总延迟为 T 、总价格为 a , 流水线段数为 m ,段间锁存器延迟为 d 、价格为 b

dmtPT /

1

bmadmtCTPCR P

1

/1/

* 段数选择:针对 PCR ,对 m 求导,选择 PCR 极大值时的 m

* 性能分析: 吞吐率— 总价格— C=a+bm 性能 / 价格—

PCR

mm0

Page 9: 第四章  标量流水技术

9

二、流水线冒险及其处理1 、相关与冒险 * 相关 (dependencd) :指令间存在的依赖关系 * 相关类型:数据相关、名相关 ( 反相关 / 输出相关 ) 、控制相关

* 冒险 (Hazard, 冲突 ) :因相关引起的指令流水异常现象 * 冒险类型:结构冒险、数据冒险、控制冒险

I2: R0=[(R6)+20]

I3: R2=(R0)+(R1)

I4: R1=(R0)+25

I5: R1=(R3)+20

I2: R0=(R1)-25

I3: JNZ I5

I4: R1=(R1)+50

I5 :

④①—( 正 ) 相关②— 反相关③— 输出相关④— 控制相关

回 11页 回 13页

Page 10: 第四章  标量流水技术

10

2 、结构冒险处理 * 结构冒险类型:①功能部件争用,②数据通路冲突 * 处理方法:①重复设置、或推后使用 ( 低频率冲突时 ) ② 采用多总线通路、或专用通路 * 访存冲突处理:①增设一个 MEM ,②增设数据 MOB( 仅CISC 需 ) , ③ 增设指令预取缓冲器,④串行访问主存

指令预取缓冲器

L1 I-Cache

数据通路

信号形成

BIU前端总线

译码器

L2 Cache

主存

寄存器组

转移JEU

定点ALU

……

浮点FPU

WB

OF

OF

ID IF

IR

EX

后端总线WB

L1 D-CacheL1 I-Cache

存储顺序缓冲器MOB

WB

思考:为什么 RISC 不需要设置 MOB ?

Page 11: 第四章  标量流水技术

11

2 、数据冒险处理 * 数据冒险类型:写后读 (RAW) 、读后写 (WAR) 、写 - 写

(WAW) 产生原因— ( 正相关 ) ( 反相关 ) ( 输出相关 ) 冒险检测—指令译码时检测,与流水线中指令比较 1 2 3 4 5 6I1 : R1=R2+R3 IF ID EX MEM WBI2 : R4=R1+R3 IF ID EX MEM WB

指令 拍读 R1写 R1

* 写后读 (Read After Write, RAW) 冒险处理:任选一种 ① 后推法—相关及后继指令暂停执行 ( 停顿 c 拍 [ 硬件决定 ])

1 2 3 4 5 6 7 8 9 I1 IF ID EX MEM WBI2 IF ID EX MEM WBI3 IF ID EX MEM WB

I 拍 IF ID EX MEM

WB

流水线控制器× × × √ √

转 9页

Page 12: 第四章  标量流水技术

12

② 转发法—段结果可直接传送到后续段 ( 减少停顿 x 拍 )

IF ID EX MEM

WB

流水线控制器MUX

相关专用通路 1 2 3 4 5 6 7I1 IF ID EX MEM WBI2 IF ID EX MEM WBI3 IF ID EX MEM WB

I 拍

③ 乱序流动法—无 RAW 相关的后继指令先执行 ( 无需停顿 )

流入顺序 I1: R3=R1+R2 I2: R4=R3+R5 I3: R5=R1*R2 I4: R4=R2+R6

流出顺序 ( 乱序 ) I1: R3=R1+R2 I3: R5=R1*R2 I4: R4=R2+R6 I2: R4=R3+R5

MEM

流水线控制器

指令窗口支持乱序流动的流水线IF ID EX W

B

缺点:会产生新的数据冒险类型 (WAR 及 WAW) 示例— WAR(I2→I3 的 R5) , WAW(I2→I4 的 R4) * 读后写 (WAR) 、写 - 写 (WAW) 冒险处理: (稍后讨论 ) 动态调度法—消除相关、或转化为 RAW ,寄存器重命名

Page 13: 第四章  标量流水技术

13

3 、控制冒险处理 控制相关 ( 分支 /跳转指令 ) 产生,指令译码时检测

转 9页

1 2 3 4 5 6 7 8顺序型 I1:CMP R1,R2 IF ID EX MEM WB转移型 I2:JNZ TEST1 IF ID EX MEM WB XX 型 Ix:??? IF

读 PC(新 )PC←地址 x

指令

①冻结法—后继指令暂停执行 ( 停顿m-1 拍 ) ,又称排空法 * 冒险处理:任选一种

1 2 3 4 5 6 7 8顺序型 I1:CMP R1,R2 IF ID EX MEM WB转移型 I2:JNZ TEST1 IF ID EX MEM WB XX 型 Ix:??? IF IF

读 PC(新 )PC←地址 x

指令

性能优化:①尽早判断转移是否成功 ←如 ID 段判断 ②尽早计算转移目标地址 ←如 ID 段增设 ALU

Page 14: 第四章  标量流水技术

14

1 2 3 4 5 6 7 转移指令 i IF ID EX MEM WB

分支目标指令 (x 或 i+5) IF ID

拍指令 ② 延迟分支法—延迟槽中尽量为有效指令、均被执行 延迟分支=分支指令+ n 个延迟槽

延迟槽

延迟槽中指令 IF ID EX MEM WB延迟槽中指令 IF ID EX MEM WB延迟槽中指令 IF ID EX MEM延迟槽中指令 IF ID EX

顺序指令 I1~ I5转移指令 I6顺序指令 I7~ I9

不采用延迟分支技术

顺序指令 I1~ I5 中与 I6有相关的指令转移指令 I6延迟槽 (I1~ I5 中与 I6 无相关的指令或空指令 )顺序指令 I7~ I9采用延迟分支技术

实现方法:编译时重排序指令、或插入 NOP 指令

Page 15: 第四章  标量流水技术

预测指令 y IF ID EX MEM WB预测指令 y+1 IF ID EX MEM 预测指令 y+2 IF ID EX 预测指令 y+3 IF ID

15

猜对时—继续 (PC 不变 )猜错时—回头 (PC←i+1)

预测 PC←y( 设 y=x)

③ 预测法—预测转移方向,执行后继指令; 猜错时回头并执行另一方向指令

预测方法:静态预测 ( 按 OP 及 DF) ,动态预测 ( 按转移历史 )

1 2 3 4 5 6 7 转移指令 i IF ID EX MEM WB 实际指令 z IF

拍指令 PC←x 或 i+1

z=x+4 或 i+1

实现方法:预测处理 (IF 段预测、 WB 段确认 ) , 误预测处理 ( 现场保存、回头 ) , 转移历史管理 ( 信息保存、刷新 ) 性能优化:提高准确率,减少延迟回 32页

Page 16: 第四章  标量流水技术

16

第二节 指令动态调度技术一、动态调度基本思想 * 动态调度思想:指令可乱序执行、乱序完成,减少停顿 * 动态调度原理: —数据流技术的应用 ① 用指令窗口按序保存多条指令 ② 优先执行 ( 乱序 ) 操作数就绪的指令

取指流水线例 : 译码 取数 执行 写回

Cache 或主存

译码器( 一条 I)

寄存器组按序

取指部件

存数部件PC 指缓

( 多条 I) 取数部件

ALUs( 一条 I)

指令行号 (窗口中 ) 指令窗口( 多条 I)

按序

按序

乱序操作数就绪的指令

乱序

Page 17: 第四章  标量流水技术

17回 20页 回下页

二、记分牌动态调度技术 —集中式

* 结构组织: 增设状态记录控制器,用作指令窗口及控制器

*调度原理: ①集中记录流水线中指令、部件及 REG 的状态 (记分牌 ) ②统一调度流水线中各指令执行过程 ( 控制部件 )

整数部件浮点加浮点乘浮点除

状态记录控制器

(记分牌

) RF取指部件 译码器

*核心思想: 无结构冒险时,尽早执行无数据冒险的指令

Page 18: 第四章  标量流水技术

18

* 状态记录控制器组织: 状态记录—设置指令、部件及 REG 状态表, 更新各状态表的状态 ( 操作完成时 )

执行控制—根据状态,检测数据冒险,控制各部件操作 ( 无相关指令的操作先执行 )

指令 指令状态表ID OF DI

S EX WB

F1=[A1] √ √ √ √F3=F1+F2 √ √F4=F1*F3 √ √F5=F2-F4 √

名称 功能部件状态表忙 操作 D

RSR1

SR2

SR1来源 SR2来源 SR 状态取数 1 LD F1 N*存数 0加法 1 AD

D F3 F1 F2 取数 NY

乘法 1 MUL F4 F1 F3 取数 加法 NN

寄存器 FLR 状态表F1 F2 F3 F4 F5 F6 F7 F8

来源部件 取数 加法 乘法 加法

转上页

Page 19: 第四章  标量流水技术

19

三、 Tomasulo 动态调度技术 —分布式 *核心思想: ① 分布式检测冒险、解决 RAW 冒险 ( 操作数就绪即可执行 ) ├→ 指令操作分解成多个部件操作+数据传递操作 └→ 各个部件记录操作及数据需求、控制操作实现

指令串 : F0=F1+F2 F3=F0-F1 F2=F4*F5 F6=F4+F2 F3=F5-F1

指令串 : F0=F1+F2 ( 操作数缓存 ) S=F0-F1 (REG 重命名 ) T=F4*F5 F6=F4+ T (REG 重命名 ) F3=F5-F1

REG 重命名

② 寄存器重命名技术解决 WAR 、 WAW 冒险

Page 20: 第四章  标量流水技术

20

1 、结构组织 * 分布式指令窗口的组织: 组成—有保留站、取数缓冲器、存数缓冲器 3种 功能—均可保存多条指令的操作需求

ALUs( 一条

I)译码器( 一条 I)

指令窗口( 多条 I)

存数部件寄存器组取数部件

源Add

r 存数缓冲器SDB( 多条

I)

取数缓冲器FLB( 多条

I)

ALUs( 一条

I)译码器( 一条 I)

保留站RS

( 多条 I)

存数部件寄存器组

FLR取数部件 指令操作分解—

① 指令操作表示: n 个部件操作+数据传递操作 ②传递操作表示:来源部件、接收部件的关联 ③ 部件操作表示:操作需求、数据需求 (来源部件编号 )

转 17页 回下页回 23页

Page 21: 第四章  标量流水技术

21

* 指令操作记录的组织: 数据来源部件—可产生操作数的部件,此处指异步产生

存数缓冲器SDB( 多条

I)

取数缓冲器FLB( 多条

I)

译码器( 一条 I)

寄存器组 FLR

ALUs( 一条

I)

保留站RS

( 多条 I)

注:⑴ FLB 访存延迟较大 ( 异步输出 ) , FLB 为数据来源部件 ⑵ALU 产生 ( 乱序 ) 的数据用 RS 行号索引, RS 为数据来源部件 ⑶FLR 仅暂存 ( 立即输出 ) 、传递 ( 异步输出 ) 数据,异步输出可用 REG 重命名表示, FLR 非数据来源部件

①①

④⑤ ④

数据传递操作的表示— 数据来源部件: FLB 、 RS ,每行标有站号 (从 1编号 ) 数据接收部件: RS 、 SDB 、 FLR ,每行设置站号项 转上页回下页

Page 22: 第四章  标量流水技术

22

站号 名称 FLB 状态表有效 地址0001

FLB1

0→1 A1

0010

FLB2

0 *

… …

名称 FLR 状态表忙 来源 数据F0 0→1 000

1?

F1 0 * 25HF2 0→1 101

0 ?… 站号 保留站 RS 状态表

有效 操作 S1来源 S1值 S2来源 S2值101

0 0→1 ADD 0000 25H 0000 05H

1011 0

1000 0

名称 SDB 状态表有效 来源 地址 数据SDB

10→1 000

0A2 25H

SDB2

0→1 1010

A3 ?…注:来源 =0000表示数据有效

指令串例 : F0=[A1] [A2]=F1 F2=F1+5 [A3]=F2

指令操作的记录— 分布式指令窗口用各部件的状态表实现, 指令操作需求记录到相关部件的状态表项中, 操作完成状态用状态表项的“忙”位或“有效”位表示 忙位=0 时—操作已完成 (→代替有效位 ) 忙位=1 时—操作未完成

转上页

Page 23: 第四章  标量流水技术

23

* 分布式控制机构的组织: ① 控制器在译码时分解指令操作、保存到相应指令窗口

* 数据传递通路的组织: 采用公共数据总线 CDB 为宜 (RAW 冒险的转发法实现 )

② 各部件检查状态表中所有操作需求的数据状态, 控制数据已就绪操作需求的执行

控制

ALUs( 一条指令 )

指令缓冲器( 多条指令 )

译码器( 一条指令 )

保留站 RS( 多条指令 )

存数缓冲器SDB

寄存器组FLR

( 按序 )( 按序 )地址

( 按序 )( 乱序 )

取指部件

控制控制

控制取数缓冲器FLB

取数部件 取数部件

CDB

转 20页回下页

Page 24: 第四章  标量流水技术

24转上页回下页 回 28页 回 39页

加法器 乘 / 除法器

A1A2A3

保留站M1M2

译码器

站号0110…

0010

0001

取指部件BIU(←→Cache 或主存 )

站号1010

1011

1100

站号100

0100

1

站号 源 1 值 站号 源 2 值 控制 站号 源 1 值 站号 源 2 值 控制

地址 控制取数缓冲器 FLB

控制 站号 地址 数据存数缓冲器SDB指令队列

公共数据总线CD

B

F7…F0

忙位 站号 数据寄存器FLR

FLR 总线

取数部件 取数部件

* 分布式动态调度的流水线结构:

Page 25: 第四章  标量流水技术

25

2 、动态调度原理 控制器译码时处理冒险,各部件调度并控制操作消除冒险

RAW 冒险处理—取 REG 的站号项到指令操作部件中 ├→ 取来源部件数据 (REG 重命名 ) └→从 CDB 接收 ( 转发法 )

指令串 I1 :F1=F0+5 I2 :F2=F1+F0 I3 :F0=F3+F4

名称FLR 状态表忙 来源 数据

F0 0 * 25HF1 0F2 0

站号 保留站 RS 状态表有效 操作 S1站号 S1值 S2站号 S2值

1010 0

1011 0

→1 ADD 1010 ? 0000 25H →1 1011 ?→1 1010 ?→1 ADD 0000 25H 0000 05H

RAW 冒险消除— FLB 数据到达或 ALU 完成时 (CDB上数据有效 ) , 相关部件 (站号匹配 ) 接收数据、修改状态101

0 1→0 ADD 0000 25H 0000 05H

1011 1 AD

D 0000 2AH 0000 25H

F1 1→0 1010 2AHF2 1 1011 ?

转上页 回下页 回 28页

*REG 的 RAW 冒险处理: 冒险存在条件—指令源操作数部件 (REG) 的忙位=1 时

Page 26: 第四章  标量流水技术

26转上页 回下页

*REG 的 WAR 冒险处理: -- 控制器译码时实现 冒险存在条件—指令具有源操作数时 WAR 冒险处理—缓存操作数,或转化为 RAW 冒险

REG 的状态 忙位 =0 时 忙位 =1 时指令操作部件

所取内容 REG 的数据项 REG 的站号项WAR 冒险处理结

果 已消除 转化为 RAW 冒险

WAR 冒险消除—已消除 ( 译码时 ) ,或同 RAW 冒险消除

回 28页

Page 27: 第四章  标量流水技术

27

*REG 的 WAW 冒险处理: -- 控制器译码时实现 冒险存在条件—指令目的操作数部件 (REG) 的忙位=1 时 WAW 冒险处理—取指令所占 RS站号到 REG 的站号项中 └→ 接收最后指令结果 (REG 重命名 )指令串 I1 :

F1=F0+5 I2 : F1=F0*F2 名称

FLR 状态表忙 来源 数据F0 0 * 25HF1 0F2 0 * 23H

站号 保留站 RS 状态表有效 操作 S1站号 S1值 S2站号 S2值

1010 0

1011 0

→1 ADD 0000 25H 0000 23H

→1 1011 ?→1 1010 ?→1 ADD 0000 25H 0000 05H

WAW 冒险消除—已消除 ( 译码时 )

转上页 回下页

Page 28: 第四章  标量流水技术

28转 24页转 25页 转上页转 26页

※动态调度示例— ① 冒险处理:译码时控制器实现

F1站号项← 0001 (等待接收 FLB1 的数据 )F1忙位项← 1 ( 操作未完成 [ 数据不可用 ])M1源 1站号项← 0001 (等待接收FLB1[REG 重命名 ] 通过 CDB 接收 [ 转发法 ])M1源 2 值项← F4 数据项 ([ 缓存操作数 ])

M2源 1 值项← F2 数据项、源 2 值项← F3 数据项F4站号项← 1001(等待接收M2 结果 )F4忙位项← 1 ( 操作未完成 )

I1:F1←(FLB1)

I2:F1←(F1)*(F4)

I3:F4←(F2)*(F3)

指令序列 译码时的控制器动作 ( 冒险处理 )

F1站号项← 1000 ( 仅接收M1 结果 [REG 重命名 ])F1忙位项← 1 ( 操作未完成 )

② 指令调度:执行前保留站实现 部件派遣操作数已就绪 (阻塞未就绪 ) 的指令 / 操作调度结果: M2(I3)先于 M1(I2) 执行 ( 乱序派遣+ 后推法 )

Page 29: 第四章  标量流水技术

29

*MEM 的数据冒险处理: -- 动态存储器地址判别技术 核心思想—基于存储一致性模型,按序完成有冲突操作 MEM 的 RAW 冒险— 冒险存在条件:指令源操作数 (MEM)地址与 SDB 中地址相同 准备读←┘ 尚未写←┘ RAW 冒险处理:当前指令起被阻塞 ( 不进入 FLB ,后推法 ) , 或操作放入 FLB 、直接取 SDB 中数据 ( 转发法 ) RAW 冒险消除: SDB匹配行的操作完成时,当前指令进入FLB 站号 名称 FLB 状态表有效 地址

0001

FLB1

0→1 A2

0010

FLB2

0 *

… …

名称 SDB 状态表有效 来源 地址 数据SDB

11→0 000

0A2 aa

SDB2

0 * * *

回下页 回 31页

Page 30: 第四章  标量流水技术

30

MEM 的 WAR 冒险— 冒险存在条件:目的操作数 (MEM)地址与 FLB 中地址相同 准备写←┘ 尚未读←┘ WAR 冒险处理:当前指令起被阻塞 ( 不进入 SDB ,后推法 ) WAR 冒险消除: FLB匹配行的操作完成时,当前指令进入SDB MEM 的 WAW 冒险— 冒险存在条件:目的操作数 (MEM)地址与 SDB 中地址相同 准备写←┘ 尚未写←┘ WAW 冒险处理:当前指令起被阻塞 ( 不进入 SDB ,后推法 ) WAW 冒险消除: SDB匹配行的操作完成时,当前指令进入SDB

转上页 回下页

Page 31: 第四章  标量流水技术

31转上页

3 、动态调度技术小结 * 结构组织:增设 RS/FLB/SDB(含状态表及控制机构 )

ALU指缓 译码器 RS

FLR 控制控制FLB

CDB

控制SDB

控制控制器

*调度原理:控制器译码时转化指令操作、处理数据冒险, 各部件随时接收数据、调度并控制自身操作源操作数的 REG忙位=0 时, REG数据项

REG忙位=1 时, REG站号项目的操作数 REG忙位=0 时, REG忙位=1 时,源操作数的 MEM地址≠ SDB 中地址时, MEM地址→ FLB MEM地址 = SDB 中地址时, 译码器暂停 (FLB阻塞/)目的操作数 MEM地址 = FLB 中地址时, MEM地址 = SDB 中地址时, MEM地址≠ FLB/SDB 中地址时, MEM地址→ SDB

RS站号或 FLB站号→RS/SDB/FLR 的值 /站号项

译码器暂停 (SDB阻塞 )

指令 →FLR 的站号项

转 29页

Page 32: 第四章  标量流水技术

32

第三节 动态分支预测技术一、采用分支历史表 BHT 预测 *BHT 的组织:有效位 分支指令地址 转移历史

* 预测处理流程:①分支预测— IF 段,用当前指令地址查询BHT ② 状态更新— EX 段,依实际结果修改历史信息

* 预测算法:饱和计数预测、 2 级自适应预测 (历史模式 +计数 )位数由预测算法决定预测 :不转移预测 :转移

* 预测性能分析:预测不转移时—无需停顿 (PC=PC+1) 预测转移时—停顿≥ 1 拍 ( 分支目标地址未知 )

* 分支预测的目标:分支是否发生、分支目标地址

转 15页 回 34页

00 01

10 11

不转移 转移不转移

转移

转移不转移

转移不转移

…XX…

分支地址分支历史

预测

Page 33: 第四章  标量流水技术

33

二、采用分支目标缓冲器 BTB 预测 *BTB 的组织:预测时,可立即获得分支目标地址

有效位 分支指令地址 转移历史 分支目标地址 * 预测处理流程: ①IF 段,用当前 PC查 BTB ,命中时预测 PC ,否则PC←PC+1

取指 (IF)

不命中置PC

查 BTB

当前PC 命中 预测转移 (PC=ee)预测不转移

(PC=PC+1)

转移历史动态预测 预测不转移

(PC=PC+1)

控制流

②ID 段,对不命中的分支指令,重新预测, IF 段预测错误时,进行误预测处理 (含置 PC)

静态预测译码 (ID) 误预测处理IF 预测错IF 预测对

(PC= 反方向 )分支指令顺序指令

顺序、转移指令 (首次 ) 时

回下页

Page 34: 第四章  标量流水技术

34

③EX 段,根据实际转移方向更新转移历史

执行 (EX)

静态预测

更新 BTB

译码 (ID) 误预测处理IF 预测错IF 预测对

(PC= 反方向 )

预测错误预测正确

分支指令顺序指令

取指 (IF)

不命中置PC

查 BTB

当前PC 命中 预测转移 (PC=ee)预测不转移

(PC=PC+1)

转移历史动态预测 预测不转移

(PC=PC+1)

控制流

* 预测算法: 2种,动态预测、静态预测静态预测例 相对寻址方式 非相对寻址方式

预测转移 目标地址比 PC 小的指令

CALL/RET/JMP 指令

预测不转移 目标地址比 PC 大的指令

非 CALL/RET/JMP指令转上页 转 32页回 41页

Page 35: 第四章  标量流水技术

35

*误预测处理: 硬件支持— ( 分支现场保护及恢复 ) ① 设置后援寄存器保存可能被破坏的状态 ② 预测执行不写结果 ( 最多到达 EX 段 ) 处理方法—恢复流水线各段状态 (IF 段结束时状态 ) , 重置 PC( 预测方向的反方向 ) * 预测性能分析: IF 段预测正确—无需停顿 IF 段预测错误—停顿 1 拍 ( 回头延迟 ) EX 段异于预测—停顿≥ 2 拍 * 预测性能优化: BTB 增设分支目标指令字段 ( 存储几条指

令 ) ,以减少回头延迟、利于超标量流水有效位 分支指令地址 转移历史 分支目标地址 分支目标处指令

( 串 )

Page 36: 第四章  标量流水技术

36

三、推测执行技术 *目标:同时支持多路分支预测技术、数据流分析技术 │ └→ 可能猜错←┬→乱序执行←┘ └──────→ 需解决1 、推测执行技术原理 * 基本思想:①允许采用预测方法取指令 ②允许指令乱序执行,但不写结果 ③必须按序确认后,才写结果

回下页

指令串示例I1: JNZ I7I2: MOV F1 ,[F2]I3: ADD F3 , F4I4: SUB F5 , F1I5: INC F2

拍I1

段WBEXOFIDIF

I2 I3 I4 I5 I6I5 I6

I4I5I4

I1 I2 I3I1 I2 I3

I1 I2I3I1 I2 I3

I4

I5

猜测正确的时 - 空图 拍I1

段WBEXOFIDIF

I2 I3 I4 I5 I7I7I1 I2 I3

I1 I2 I3I1

I1

I4

猜测错误的时 - 空图

保证可以回头

Page 37: 第四章  标量流水技术

37

* 实现思路: ① 增设再定序缓冲器 (ROB) ,实现指令窗口、动态调度

( 乱序执行 ) 及结果暂存功能;

转上页回下页回 39页

② 流水线增加确认 段,按序确认指令 (含误预测处理 )

说明: RS已等价于就绪指令队列,可减少 ROB→ALU 的派遣延迟

操作数就绪 再定序缓 冲器 ROB

乱序 行号指令窗口

( 多条指令 )

ALUs( 一条指令 )

指令缓冲器( 多条指令 )

译码器( 一条指令 )

保留站 RS( 多条指令 )

寄存器组FLR取指部件 取数部件 存数部件

PC

乱序乱序

按序

源地址取数缓冲

FLB

存数缓冲SDB

目的地址临时FLR分支预测

BTB

确认( 一条指令 )

按序程序次序

Page 38: 第四章  标量流水技术

38

2 、再定序缓冲器 ROB * 组成:由大小固定的环形队列组成; 按序保存译码后、写结果前的所有指令及执行结果

项号再定序缓冲器( ROB)有效 指令 源 1 源 2 目的 状态地址 项号 值 地址 项号 值 地址 值

1 0 LD [F1+9] F2 aa 已写回

2 1 ADD F2 0 aa F3 0 bb F4 cc 已确认3 1 SUB F5 0 dd F4 0 cc F6 ? 已派遣4 1 JNZ LOOP

1 未派遣5 1 IMU

L F2 0 aa F7 0 ee [F1] dd 已执行… 0注:①为实现乱序派遣功能,须设置“源值”字段 ② 为实现暂存结果功能,须设置“目的值”字段 ③由于乱序派遣, ROB 可作为数据来源部件 ( 用项号索引 )

*特点:①源域、目的域取代了 FLB 、 SDB ②REG 重命名时, ROB项号可代替 RS 、 FLB站号

转上页 回下页回 40页 回 48页

Page 39: 第四章  标量流水技术

39

* 推测执行的流水线结构:

*ROB派遣时机: RS有空闲位置、 ROB 中有操作数就绪指令 转 37页 转上页

加法器 乘 / 除法器

源 1 值 源 2 值 控制 ROB项号 A1A2A3

M1M2

保留站

控制 操作 源项号 源地址 源值 目的地址 目的值 F7…F1F0

数据寄存器FLR

BIU(←→Cache 或主存 )

译码器指令队列

源 1 值 源 2 值 控制 ROB项号

项号01…

40

公共数据总线CDB

取指部件 取数部件 存数部件

再定序缓冲器 ROB

说明:①保留站仅用作就绪指令队列;②按序确认后才写结果 (到 FLR 或主存 )

确认 ( 按序 )

回 41页 转 24页

Page 40: 第四章  标量流水技术

40

3 、流水线确认段

*确认规则及不通过处理规则:

*确认段工作过程: ① 按序判断 ROB 中各指令 ( 所含全部微指令 ) 的状态; ②若当前指令状态为已执行,按确认规则确认该指令, 否则,当前段无操作 (被阻塞 ); ③若确认结果为通过,置指令状态为已确认 ( 可写结果 ); 否则,按不通过处理规则处理该指令

转 38页 回 49页

指令确认

指令执行异常(CPU 产生异常 )

指令执行正常转移型指令 顺序型指令预测错误 预测正确

确认规则 不通过 通过不通过

处理规则①清除 ROB 中所有后续指令 (含当前指令 )②触发异常处理 ②进行误猜测处理回下页

Page 41: 第四章  标量流水技术

41

4 、 PII CPU 的动态执行技术 * 技术核心:多路分支预测+ 数据流控制 + 推测执行

转 39页转 34页 转上页

内部公共总线CD

B

总线接口单元 (BIU)L1 I-Cache

16K L1 D-Cache

16K预取流式缓冲器指令长度译码器译码器对齐段

译码后指令队列RAT/ 分配器

再定序缓冲器 (ROB) ,即微操作缓冲池

端口 4

端口 3

端口 2 端口 1

保留站(RS)

端口 0

存储数据执行单元存储地址执行单元装入执行单元

L2 Cache

微指令序列器MIS

静态转移预测

存储顺序缓冲器 (MOB)

译码 译码 译码器 0 器 1 器2

DIS

IFU1IFU2DEC1

DEC2

DEC3

RAT

ROB IA 寄存器组RET

WB

EX

转移目标缓冲器

前端总线 后端总线主存

预测错误简单FPU

复杂FPU

复杂IEU

MMX 乘法器 MMX ALU

简单 IEU和JEU

MMX ALU

误预测

Next IP

返回堆栈缓冲器MMX 移位器

RR

Page 42: 第四章  标量流水技术

42

* 指令级并行性 (ILP) :指令序列中的并行性 表示— ILP(m,n) = m*n ,其中, m—每个时钟启动的次数, n—每次启动的指令 / 操作个数 特征— ILP*CPI=1

回下页

第四节 多指令流出技术

* 多指令流出思想:可同时流出多个指令 / 操作,核心是发射

* 多指令流出技术: 超标量 (superscalar) 、 VLIW(Very Long Instruction Word)a=b , b≥n( 可乱序流出 )

a=1 , b=n( 按序流出 )

发射策略—无冲突时发射、有冲突时可发射取指 译码 发射 执行≤n 个a条 b个

冲突类型—同一时钟内、不同时钟间的冲突

Page 43: 第四章  标量流水技术

43

* 基本思想:多指令动态流出 ( 硬件检测冲突 ) 、并行执行一、超标量技术1 、基于静态调度的超标量技术 * 指令完成策略:按序完成 * 指令发射策略:无冲突时发射,指令按序流出

IF ID OF EX1 WB

HCIF ID OF EX

2 WB

* 硬件结构:多套指令部件,增设冲突检测电路 (HC)

同时取指—由指令预取部件实现 ( 如提高宽度、指令分离 ) 冲突检测—可分两步检测 ( 同一时钟内、不同时钟间 ) 指令流出—同时、按序流出无冲突的多条指令 └→ 无需增加硬件←┘

转上页 回下页

Page 44: 第四章  标量流水技术

44

2 、基于动态调度的超标量技术 * 指令完成策略:乱序完成 ( 可处理冲突 ) * 指令发射策略:有冲突时可发射,指令按序流出 * 硬件结构:多套指令部件,扩充指令窗口容量

IF ID OF EX1 WB

DISIF ID OF EX

2 WB

指令窗口

冲突检测—由动态调度的 DIS 完成 指令流出—同时流出多条指令 ( 可存在冲突 ) ├→ 不限制指令类型 → 各保留站结构分离 └→ 处理多条指令 /TC → 并行处理电路

转上页

* 乱序发射策略:需先行指令窗口支持, IF 段乱序取指

Page 45: 第四章  标量流水技术

45

3 、 PII CPU 的超标量流水技术 特征—哈佛结构 +DIB , 3 路超标量,动态执行技术

回下页 回 47页 回 48页 回 49页

内部公共总线CD

B

总线接口单元 (BIU)L1 I-Cache

16K L1 D-Cache

16K预取流式缓冲器指令长度译码器译码器对齐段

译码后指令队列RAT/ 分配器

再定序缓冲器 (ROB) ,即微操作缓冲池

端口 4

端口 3

端口 2 端口 1

保留站(RS)

端口 0

存储数据执行单元存储地址执行单元装入执行单元

L2 Cache

微指令序列器MIS

静态分支预测

存储顺序缓冲器 (MOB)

译码 译码 译码器 0 器 1 器2

DIS

IFU1IFU2DEC1

DEC2

DEC3

RAT

ROB IA 寄存器组RET

WB

EX

分支目标缓冲器

前端总线 后端总线主存

IF预测错简单FPU

复杂FPU

复杂IEU

MMX 乘法器 MMX ALU

简单 IEU和JEU

MMX ALU

误预测

Next IP

返回堆栈缓冲器MMX 移位器

RR

Page 46: 第四章  标量流水技术

46

超标量流水线组成— 12 个段,以再定序缓冲器 ROB 为核心IFU1 IFU2 DEC

1DEC2

DEC3

RAT ROB DIS EX WB RR RET

⑴IFU1 取指单元段 1 每次从 L1-I$ 取出一个块 (32B) ,装入预取流式缓冲器 (S=2个块 )⑵IFU2 取指单元段 2 每次从预取流式缓冲器取出 16B 信息 ( 起始位置任意 ); 对 16B 信息预译码、标志指令边界 (3条指令 ); 若发现转移指令,则进行动态分支预测 ( 指令地址送 BTB)

※取指段特征—按需动作 ( 非按拍动作 ) ,按序流动

取指 译码 派遣 执行 确认 写回

转上页

预取流式缓冲器的空闲≥ 1 个块时

指令被取走时

Page 47: 第四章  标量流水技术

47

⑶DEC1 译码段 1 每次从 IF 段取 3条 IA 指令,按一定次序旋转 ( 对应译码器结构 )

※译码段特征— CISC→RISC ,按需动作,按序流动

转 45页

⑷DEC2 译码段 2 每次同时译码 3条指令,形成≤ 6 个 uop(118 bit/uop) ↓ ↓ ( 结构为复杂 /简单 /简单 ) (4+1+1 ,复杂指令通过 MIS翻造 )

⑸DEC3 译码段 3 每次接收≤ 6 个 uop ,按程序顺序排队 (DIQ); 若发现转移型 uop 、且 BTB缺失,则进行静态分支预测; (含 IF 段误预测修正 )

DIQ 空闲≥ 6 个uop 时

回下页

Page 48: 第四章  标量流水技术

48

⑹RAT 寄存器别名表和分配器段 -- 按序发射 每拍取 3 个 uop ,将 uop 中的 IA 寄存器,转换为内部寄存

器 ( 如 ROB“目的值”字段 )←┘ △此段消除 / 转化了WAR 冒险、消除了WAW 冒险⑺ROB 再定序缓冲器段 每拍接收 3 个 uop 、按序存放在 ROB 中 △ROB 为环形缓冲区,管理各个 uop(收数据、改状态 )⑻DIS 派遣段 -- 乱序派遣 每拍 RS从 ROB以次序任意拷贝多个 OPD就绪的 uop到相应端口; RS 在 EX 单元可用时,发送相应端口的 uop至 EX 单元 △此段消除了 RAW 冒险 ※派遣段特征—冒险处理,按需动作→按拍动作, 按序流动→乱序流动

转 45页 转 38页 转上页

Page 49: 第四章  标量流水技术

49

⑼EX 执行段 各部件执行 uop ,结果送上 CDB;若 uop 为分支操作,更新 BTB⑽WB 写回段 ROB从 CDB 接收执行结果、修改状态 ※执行段特征—乱序执行,部件时延可不等 ( 动态流水线 )

⑾RR 回收就绪段 (确认段 ) 按程序顺序、以 IA 指令为单位,对所含 uop进行确认; 处理分支误预测、异常 (清除部分或全部 ROB)

⑿RET 回收段 将 IA 指令的结果写回 IA 寄存器,或通知MOB 完成写L1$; 清除 ROB 中该 IA 指令对应的 uop(有效位复位 )

※确认段特征— RISC→CISC ,乱序流动→按序流动

转 45页 转 40页

Page 50: 第四章  标量流水技术

50

二、超长指令字 (VLIW) 技术 * 基本思想:多操作静态流出 (软件检测冲突 ) 、并行执行

I1

段WB-2WB-1EX-2EX-1ID-2ID-1IF-2IF-1

I2I3I4

I5I6

I7I8

I1I2

I3I4

I5I6

I7I8

I1I2

I3I4

I5I6

I7I8

I1I2

I3I4

I5I6

超标量流水线 ILP(1,2)

拍 ( 时钟 )I1

段WBEX-2EX-1IDIF

I2 I3 I4

VLIW 流水线 ILP(1,2)

拍 ( 时钟 )

I1 I2 I3 I4I1 I2 I3 I4I1 I2 I3 I4

I1 I2 I3

*VLIW 硬件结构:

指令中 OP字段 :LD/ST1 LD/ST2 FADD FMUL

主存

RF ( 寄存器堆 )LD/ST1

LD/ST2 FADD FMUL

回下页

*VLIW 工作原理:操作并行

Page 51: 第四章  标量流水技术

51

*VLIW 优化编译技术: 局部调度—表调度法 ( 基本块范围内的调度 )

全局调度— 路径调度法—对非主路径 ( 低频率 ) 通过块拷贝 (粒度组合 )

维持语义、开发并行性; 渗透调度法—通过等价交换,将无相关操作不断提前,便

于实现表调度法; 软件流水法—展开循环体后调度 ( 不同次循环可重叠 )

*VLIW 与超标量的比较:多流出

方式冲突检测 冒险处理 执行

方式 处理器实例超标量 动态 硬件 静态调度 按序 Sun

SPARCⅡ/Ⅲ动态调度 乱序 PⅢ/4, Power2

VLIW 静态 软件 静态调度 按序 Trimedia, i860转上页

Page 52: 第四章  标量流水技术

52

* 基本思想:流水线启动速度< 1 个时钟,串行执行 △超级流水技术不属于多指令流出技术 * 工作原理:快速流动 ( 拍< 1 个时钟 )

* 硬件要求:增加流水线深度 ( 段数 ) ,处理数据和控制冒险

三、超级流水技术

I1

段WB2WB1EX2EX1ID2ID1IF2IF1

I2

超标量流水线 ILP(1,2)

拍 ( 时钟 )I3I4

I5I6

I7I8

I1I2

I3I4

I5I6

I1I2

I3I4I1I2

I3

I5

I9

I7

I1

段WB-2WB-1EX-2EX-1ID-2ID-1IF-2IF-1

I2

超级流水线 ILP(2,1)拍I3 I5

I6I1

I2

I4I3 I5

I6I4I1

I2I3

I4

I7I8

I1I2时钟

Page 53: 第四章  标量流水技术

53

*几种流水线性能比较:

原因分析— a) 指令并行度较小时,性能因并行性提高较快, 指令并行度较大时,性能因数据冒险提高较慢; b)超级流水的启动延迟、转移损失、部件冲突均比超标量大

0.01 2 3 4 5 6

加速比 超标量处理机

超标量超流水处理机超流水处理机1.0

2.0

3.0

指令并行度

*超标量超流水线:采用超标量和超级流水技术的流水线

Page 54: 第四章  标量流水技术

54

四、指令级并行开发的软件技术 * 主要技术:块内调度及循环展开、块间调度, VLIW 、 EPIC(显式并行指令计算 )等 *循环展开后调度技术: 基本思想—循环体展开几次后,进行等价语义交换 展开方法—对不同次循环的指令,减少数据相关性 如使用不同寄存器、成倍增长偏移量 实现开销—代码长度增加,寄存器数量增多 思考:如何协调展开次数、硬件成本间的矛盾? 答:满足分支延迟槽中指令要求即可,常展开一次

Page 55: 第四章  标量流水技术

55

标量流水技术总结(1)提高操作级流水线性能的方法 * 结构方面:细化功能部件,增加流水线深度, 采用多功能、动态、线性、乱序流动方式 *软件方面:指令重排序、循环展开、 VLIW , 延迟转移 * 硬件方面:增设冲突部件、控制器 ( 处理冒险 [ 后推 /旁路 ]) , 超级流水 * 技术方面:分支预测、动态调度、推测执行(2)提高指令级流水线性能的方法 超标量流水、 VLIW 、超标量超级流水

Page 56: 第四章  标量流水技术

56

第四章课后复习思考题1 、流水线的工作原理、基本实现要求?有哪些分类?2 、流水线的性能指标?提高性能指标的方法是什么?3 、流水线有哪几种冒险?产生原因?有哪些解决方法?4 、动态调度的基本原理? Tomasulo 算法实现乱序执行的原

理 ( 指结构组织、冒险处理、指令调度方面 ) ?5 、动态分支预测的硬件支持、处理流程?如何处理误猜测?6 、推测执行的基本思想?实现原理 ( 指硬件配置、处理流

程 ) ?7 、指令级并行技术有哪几种?基本思想各是什么?8 、 PⅡ CPU 动态执行技术的关键技术?它们如何组织到流水

线中?编一段 x86汇编程序 ( 如循环 ) ,说明 CPU 执行这些指令的过程。