1 / 70

第四章 标量流水技术

第四章 标量流水技术. 取指 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) 更高重叠程度解释执行. 第一节 标量流水工作原理. 一、 指令重叠与先行控制 工作方式.

kamin
Download Presentation

第四章 标量流水技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 标量流水技术

  2. 取指Ik 分析Ik 执行Ik 取指Ik+1 分析Ik+1 执行Ik+1 时间t (a) 顺序解释执行 取指Ik 分析Ik 执行Ik 取指Ik 分析Ik 执行Ik 取指Ik+1 分析Ik+1 执行Ik+1 取指Ik+1 分析Ik+1 执行Ik+1 t t (b) 重叠解释执行 (c) 更高重叠程度解释执行 第一节 标量流水工作原理 一、指令重叠与先行控制工作方式 1、指令重叠方式 *基本原理:使指令执行过程重叠,以提高指令执行速度。 *实现要求: 功能部件分离—取指、分析、执行部件相互独立(可并行工作),各部件处理时长相等; 解决结构相关—可同时进行取指令与操作数存取。 回下页

  3. 执行部件空闲 分析Ik 执行Ik 分析Ik 执行Ik 分析Ik+1 执行Ik+1 分析Ik+1 执行Ik+1 分析Ik+2 执行Ik+2 分析Ik+2 执行Ik+2 分析部件空闲 t t (a) 重叠方式 (b) 先行控制方式 主 存 数据 缓冲栈 读数据缓冲区 写数据缓冲区 指令缓冲栈 分析部件 先行操作栈 执行部件 寄存器组 注:栈的深度D指缓≥D操作≥D读栈≥D写栈 2、先行控制方式 *基本原理:在指令重叠执行的同时,避免部件空闲,以提高指令执行速度。 *实现要求: ①缓冲技术—增加缓冲部件,以使个部件工作平滑; 转上页 回下页

  4. ②预处理技术—将指令转换成R-R型指令, 以提高指令执行速度(运算部件效率)。 ·转换方法:硬件翻译技术(如微程序技术); 如—8086汇编的ADD AL,[BX+25]可翻译成 ADD BX,25 LOAD MDR,[BX] ADD AL,MDR ·R-M型指令执行过程: 取指、译码、取操作数、执行、写结果; ·R-R型指令执行过程: 取指、译码(含取操作数)、执行、MEM、写结果 其中—MEM操作只有LOAD/STORE指令才使用 回下页 转上页

  5. S1段 S2段 S3段 S4段 S5段 指令执行过程 取指IF 译码ID 执行EX 存储器MEM 写结果WB 通用假设:指令执行过程分为m个段,每个段执行时长为Δt 段(m) 填入 流水 排空 … I1 I2 I3 I4 I5 In S5 S4 S3 S2 S1 … I1 I2 I3 I4 I5 In … I1 I2 I3 I4 I5 In … I1 I2 I3 I4 I5 In … I1 I2 I3 I4 I5 In 拍(Δt) 1 2 3 4 5 n n+4 二、标量流水基本原理 1、工作原理 *基本原理:进一步细化指令执行过程,使指令各执行过程均可重叠,以提高指令执行速度。 *工作流程:分填入、流水、排空三个过程, 常用时-空图表示。 转上页 回13页 回下页

  6. *指令执行时间: 串行方式—T串行=n×mΔt, 其中n为指令数量,m为段数,Δt为段延迟; 流水方式—T流水=mΔt+(n-1)Δt, 当n>>m时,T流水≈(n-1)Δt, 即完成任务的时间与操作过程(m)无关,只与提供操作的速度(1/Δt)有关! 转上页

  7. 2、实现要求 *分离功能部件:各段功能部件相互独立(可并行工作); *实现各段处理时长相等:各段增设结果锁存器,各部件处理受统一信号(拍)控制; 锁存器 IF 锁存器 ID 锁存器 EX 锁存器 MEM 锁存器 WB 拍CLK *处理流水冲突处理:设置相应硬件,解决结构相关、数据相关和控制相关,以保证流水方式的结果正确。 锁存器 IF 锁存器 ID 锁存器 EX 锁存器 MEM 锁存器 WB 指令状态 硬件状态 拍CLK 流水线控制器 注—流水线某个段停顿时,其后面的段一起停顿 回18页 回21页

  8. 段 … … I2 I② I1 I2 In I② S4 S3 S2 S1 I1 In I① S4 S3 S2 S1 I① … … I① I② I① I② … … I1 I2 In I1 I2 In … … … … I1 I2 I1 I2 In I① I② In I① I② 拍 拍 动态流水线 静态流水线 IF ID EX MEM WB 三、流水线分类(属性) *按处理级别分类:操作级、指令级、处理机级流水线; *按功能分类:单功能、多功能流水线; *按工作方式分类:静态、动态流水线; 动态流水线必是多功能流水线,单功能流水线必是静态流水线 *按连接方式分类:线性、非线性流水线; *按控制方式分类:顺序流动、异步流动流水线。 ☆任何流水线均具有上述所有属性种类。 回15页

  9. 四、流水线性能指标 1、吞吐率 --又称吞吐量 单位时间内能处理的指令条数或输出结果的数量。 *最大吞吐率: 各段时长不相等时— 各段时长相等时— *实际吞吐率: 各段时长不相等时— 各段时长相等时— 当n>>m时—TP≈TPmax 回9页 回13页

  10. Δt Δt 3Δt Δt 2 3 1 4 段 … I2 S4 S3 S2 S1 I1 In … I2 In I1 … In I1 I2 Δt Δt Δt Δt Δt Δt … I1 I2 In 2 3a 3b 3c 4 1 拍 段 … S4 S3c S3b S3a S2 S1 I1 I2 In I2 In … I1 … I2 In I1 … I2 In I1 … In I1 I2 … In I1 I2 拍 *瓶颈段处理: 假设流水线结构如右图: 瓶颈段— Δti最大的那一个段。 处理方法1—细化瓶颈段(细化后处理时长同其它段); 回下页

  11. 3Δt 3a 调度器 Δt Δt Δt 1 2 3b 4 3c 段 … S4 S3c S3b S3a S2 S1 I1 I2 I3 I4 In I3 … … I2 In … I1 I4 … In I1 I2 I3 I4 … In I1 I2 I3 I4 拍 处理方法2—并联设置多套部件,通过控制器调度。 思考:若n=12,优化前、后的TP各为多少? *提高吞吐率TP性能方法:增加流水线深度m(可减小Δt)。 转上页 转9页 回下页 回13页

  12. 2、加速比 流水方式相对于串行方式工作速度的比值。 各段时长不相等时— 各段时长相等时— 思考:上页例题中流水线的SP为多少? 当n>>m时— SP≈m *提高加速比SP性能方法:增加流水线深度m。 转上页 回下页

  13. 3、效率 流水线中设备的利用率。 各段时长不相等时— 各段时长相等时— 注意:只有Δti相等的线性流水线的E与TP、SP呈线性关系;否则,三者间不存在关系! 思考:课件P11例题中流水线的E为多少? 当n>>m时— E≈1 *提高效率E性能方法:增加流水线中任务数量n。 转5页 转9页 转上页 转11页

  14. x y 1 2 3 4 6 z 5 4、流水线性能分析举例 某静态、加乘双功能流水线如下图所示,计算实现 时流水线的性能。 *算法选择:应选择适合流水线工作特性的算法。 └→静态流水要求先排空再填入 目标代码序列— 指令①: x1=a1+b1 指令②: x2=a2+b2 指令③: x3=a3+b3 指令④: x4=a4+b4 指令㈠: y1=x1*x2 指令㈡: y2=x3*x4 指令㈢: z=y1*y2 转8页 回下页

  15. ① ② ③ ④ ㈡ ㈢ S6 S5 S4 S3 S2 S1 ㈠ ① ② ③ ④ ㈡ ㈢ ㈠ ㈡ ㈢ ㈠ ㈡ ㈢ ㈠ ㈢ ㈠ ㈡ ① ② ③ ④ 拍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 *性能计算:TP= SP= E= 7/(17Δt) (4*3Δt+3*5Δt)/(17Δt)=27/17=1.88 (3*4Δt+3*5Δt)/(6*17Δt)=9/34=26.4% *性能分析:理论上SP应在3~4之间,E应在40.9%左右; ①指令数n较小—流水线的填入、排空时间过多; ②静态流水—导致流水线排空后才进行功能切换; ③数据相关—乘法指令的数据相关影响性能。 转上页

  16. PCR m m0 5、流水线最佳段数选择 假设:流水线各功能段总延迟为t,流水线共分m个段,段间同步锁存延迟为d; 功能段总价格为a,每个锁存器价格为b。 吞吐率: 总价格:C=a+bm 性能/价格: 选择:对m求导,选择PCR为极大值时的m。

  17. 内部总线 后端 总线 乘法器 加法器 转移部件 寄存器组 总线接口BIU L1 Cache 前端 总线 译码器 指令队列 控制器 段 使用ALU WB MEM EX ID IF 1 2 3 … n PC←PC+1 1 2 3 … n 1 2 3 … n IF ID EX MEM WB 1 2 3 … n 1 2 3 … n 拍 访问存储器 访问寄存器 第二节 流水线中的相关处理 一、结构相关及处理 *结构相关:指流水线中同一拍的各操作使用相同的功能部件或数据通路引起的冲突。 回下页

  18. 处理PC+1问题 WB MEM EX ID IF 1 2 3 4 内部总线 2 1 3 4 后端 总线 IF ID EX MEM WB 乘法器 加法器 转移部件 寄存器组 地址加法器 总线接口BIU 1 1 2 2 3 4 3 4 5 6 L1 Cache 1 2 3 4 5 拍 1 2 3 4 5 6 前端 总线 译码器 指令队列 控制器 1、功能部件使用冲突的相关处理 *方法一:轮流使用功能部件(构成非线性流水线)。 └→性能损失较大 *方法二:重复设置功能部件; 如--设置地址加法器实现PC+1或PC+DISP *选择依据:根据冲突的严重性(出现频率)对流水线性能的影响程度,来选择具体的方法。 转7页 转上页 回下页

  19. 内部总线 乘法器 加法器 转移部件 地址ALU 寄存器组 后端 总线 总线接口BIU L2 Cache L1 Cache 前端 总线 主存 控制器 译码器 指令队列 内部总线 总线接口BIU 后端 总线 乘法器 加法器 转移部件 寄存器组 地址ALU L1 D-Cache L2 Cache L1 I-Cache 前端 总线 主存 控制器 译码器 指令队列 2、数据通路使用冲突的相关处理 *方法一:采用多总线或专用数据通路,解决REG访问冲突 *方法二:L1$采用哈佛结构,降低IF与MEM访存冲突概率 转上页 回下页

  20. 内部总线 乘法器 加法器 转移部件 地址ALU 寄存器组 L1 D-Cache 总线接口BIU 后端 总线 L2 Cache 存储顺序缓冲器MOB 前端 总线 L1 I-Cache 主存 控制器 译码器 指令队列 预取流式缓冲器 *方法三:设置存储顺序缓冲器(MOB),降低超标量流水线的MEM读与写冲突概率 原理1—改变通路(MOB暂存结果) →实现了“零等待写” 原理2—错开时间(在D$空闲时写) →实现了“读失效优先于写” *方法四:设置预取流式缓冲器,降低I$与D$失效冲突严重性 *方法五:I$及D$串行访问主存,解决IF、MEM的访存冲突 (D$优先于I$) 回23页 转上页

  21. 1 2 3 4 5 6 I1:R1=R2+R3 IF ID EX MEM WB I2:R4=R1+R5 IF ID EX MEM WB 拍 指令 写R1 读R1 二、数据相关及处理 *数据相关:指流水线中不同指令访问同一REG或MEM单元、且有写操作时引起的冲突。 1、先写后读(RAW)相关及处理 RAW数据相关有针对REG及MEM单元的两种子类型。 *相关检测方法: --假设无结构相关 状态记录—记录流水线中各指令当前拍状态(段位置); 相关检测—对处于ID段的指令,控制器比较其源操作数地址与前驱指令目的操作数地址是否相同, 若相同,则存在RAW相关,记录相关指令间间隔拍数(设为变量ct),为相关处理提供依据。 回下页 转7页

  22. 相关专用通路 IF ID EX MEM WB MUX IF ID EX MEM WB 硬件状态 拍CLK 流水线控制器 × × √ √ √ 流水线控制器 *处理方法一:后推法,控制器控制ID段(有冲突段)及之后段停顿ct拍(相关指令及后继指令等待),直到相关消除; 1 2 3 4 5 6 7 8 9 I1 IF ID EX MEM WB I2 IF ID EX MEM WB I3 IF ID EX MEM 拍 写R1 I 读R1 *处理方法二:转发法,控制器控制部分流水段结果直接传到较早流水段,使相关指令无需停顿 1 2 3 4 5 6 7 8 I1 IF ID EX MEM WB I2 IF ID EX MEM WB I3 IF ID EX MEM 拍 指令 写R1 读R1 转上页

  23. 顺序进入顺序 I1: R3=R1+R2 I2: R4=R3+R1 I3: R5=R1*R2 I4: R6=R2+R7 异步流出顺序 I1: R3=R1+R2 I3: R5=R1*R2 I4: R6=R2+R7 I2: R4=R3+R1 支持异步流动 的流水线 指令窗口 I4 I3 I2 IF ID EX MEM WB I2 I4 I3 I1 I1 拍CLK 流水线控制器 可能会产生 新的相关 支持异步流动的流水线 *处理方法三:异步流动法(乱序执行法),控制器在下一拍控制无RAW相关的指令先执行,消除了相关。 结构—增设指令窗口,保存多条指令(为RAW相关检测与控制提供支持) 回下页

  24. 顺序进入顺序 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 支持异步流动 的流水线 产生WAR相关 产生WAW相关 2、先读后写(WAR)及写-写(WAW)相关及处理 WAR及WAW数据相关因异步流动而产生,有针对REG及MEM的两种子类型相关。 *相关检测方法: --假设无结构相关 状态记录—记录已流出指令窗口指令的当前拍状态, 并更新指令窗口中指令各源操作数的状态; 相关检测—若指令窗口中指令各源操作数状态未就绪,则存在数据相关; *处理方法:后推法,有相关指令在指令窗口中等待; 动态调度法,避免RAW、WAW相关。(下节讨论) 回44页 转上页

  25. 三、控制相关及处理 *控制相关:指转移型指令引起的无法立即获得分支目标处指令地址的冲突。 1 2 3 4 5 6 7 顺序型 I1:CMP R1,R2 IF ID EX MEM WB 转移型 I2:JNZ TEST1 IF ID EX MEM WB 顺序型 Ix:??? IF ID 拍 指令 PC←地址x *转移指令的特征: ①转移指令分为无条件转移和条件转移两种; ②转移指令一般占程序代码的20%左右。 需要新PC 注:转移型指令只需要4拍即可完成指令(在MEM段写PC) 回27页 回下页

  26. REG/IR PC ALU PC IF ID EX MEM WB 流水线控制器 尽早计算转移目标地址结构图 1、控制相关的处理方法 (1)后推法--硬件方法 *基本原理:转移型指令的分支目标处指令一直等待,直到控制相关消除。(见上页图) *性能优化①:尽早计算出转移目标地址— ID段增设加法器,将目标地址计算从EX段提前到ID段; *性能优化②:尽早判断出转移是否成功— ID段可实现部分转移条件判断(如是否为零等)。 1 2 3 4 5 6 I1:CMP IF ID EX MEM WB I2:JNZ IF ID EX MEM WB Ix:??? IF ID 拍 指令 尽早判断转移是否成功效果图 回下页 转上页

  27. 1 2 3 4 5 6 转移指令i IF ID EX MEM WB 分支目标处指令(x或i+1) IF ID 拍 指令 顺序后继指令i+1 IF ID EX MEM WB 顺序后继指令i+2 IF ID EX MEM 顺序后继指令i+3 IF ID EX 延迟槽 顺序指令I1~I5 转移指令I6 顺序指令I7~I9 顺序指令I1~I5中与I6有关的指令 转移指令I6 延迟槽(I1~I5中与I6无关的指令或空指令) 顺序指令I7~I9 正常编译的目标代码 采用延迟转移技术的目标代码 (2)延迟转移法--软件方法(静态) *延迟槽:转移指令后可流入流水线至转移结果得到前的指令个数。 *基本原理:①目标代码在编译时,编译程序将转移指令前与转移指令无关的n条指令或空指令放入延迟槽(大小为n); ②目标代码在执行时,无论是否转移,延迟槽中指令始终被执行,自动消除了控制相关。 转25页 转上页

  28. 1 2 3 4 5 6 I1:CMP IF ID EX MEM WB I2:JNZ IF ID EX MEM WB Ix:… IF ID EX MEM Ix+1: IF ID EX 1 2 3 4 5 6 7 I1:CMP IF ID EX MEM WB I2:JNZ IF ID EX MEM WB Ix:… IF ID EX IF ID Ix+1: IF ID IF 拍 拍 指令 指令 转移方向=猜测方向的效果图 转移方向≠猜测方向的效果图 (3)猜测法--硬件方法 *基本原理: 转移指令IF段—保存现场、猜测转移方向(获得新PC); 转移指令ID段—后继指令按猜测方向(新PC)流入; 转移指令EX段—若猜错,恢复现场并回头(重置PC)。 *猜测方法: 静态猜测法—根据指令类型或寻址方式猜测转移方向; 动态猜测法—根据转移指令的转移历史猜测转移方向。 回33页

  29. 有效位(AV) 转移指令地址(IAddr) 历史位(HI) 转移目标地址(TAddr) BTB: ………… 1 aa xy ee ………… 0 ** **   **  注:①有效位—为1表示该行有效,硬件表均有此字段; ②历史位—为转移指令的转移历史信息, 不同分支预测算法所需二进制位数不同; ③转移目标地址—为转移成功方向的指令地址, 转移不成功方向地址为当前PC+1。 2、猜测法的实现 (1)转移历史的保存方法 增设转移目标缓冲器BTB,保存转移历史信息; BTB通常由小容量Cache构成(行数固定)。 回下页

  30. 当前PC 预测转移PC←(TAddr段) 查BTB表 (IAddr段) 动态预测 (按HI段) 置 PC 命中 IF段猜错 静态预测 (按IR内容) 预测不转移 误预测处理 (PC=预测的 反方向地址) 是转移 指令 BTB中建新指令信息行 译码段(ID) 不命中 PC←(PC)+1 取指段(IF) IF段猜对 (2)猜测法的实现原理 *IF段:用当前PC查BTB,以获得转移指令转移历史; 若命中(转移指令),用动态猜测算法猜测本次的PC; 否则(顺序或首次转移指令[猜测不转移]),PC←PC+1。 *ID段:若指令为转移型且查BTB不命中,BTB中建立新行; 用静态猜测算法猜测; 若猜测结果与IF段不一致,则进行误猜测处理并置新PC。 转上页 回下页

  31. 当前PC 预测转移PC←(TAddr段) 查BTB表 (IAddr段) 动态预测 (按HI段) 置 PC 命中 预测不转移 不命中 PC←(PC)+1 取指段(IF) IF段猜错 静态预测 (按IR内容) 误预测处理 (PC=预测的 反方向地址) 是转移 指令 BTB中建新指令信息行 译码段(ID) IF段猜对 行号 转移结果 预测错误 执行段(EX) 更新转移历史(HI) 预测正确 *EX段:根据实际转移方向更新转移历史(BTB中历史位); 若猜测方向错误,则进行误猜测处理并置新PC。 回55页 转上页 回下页

  32. 结果:不转移 历史位:11 预测:转移 历史位:10 预测:转移 结果:转移 结果:转移 结果:转移 结果:不转移 结果:不转移 历史位:01 预测:不转移 历史位:00 预测:不转移 结果:不转移 结果:转移 说明:预测—为IF段预测结果或ID段进行误预测处理的结果; 结果—为EX段实际的执行结果。 (3)猜测算法 *静态猜测算法:(以PⅡ CPU采用的算法为例) *动态猜测算法:(以PⅡ CPU采用的算法为例) 转上页

  33. (4)误猜测处理 *误猜测处理所需支持(分支现场的保护): ①设置后援寄存器保存可能被破坏的状态; 如:Next IP暂存猜测前的PC值 ②猜测执行只完成到“执行”(EX),不“写回”(WB)结果 目的:a)避免了恢复MEM单元的性能严重损失, b)避免了恢复REG组的成本(减少后援寄存器数量) *误猜测处理方法: 用后援寄存器恢复流水线各段状态到转移指令IF段结束时的状态,并重置PC(猜测反方向的PC)。 *误预测的加速处理: BTB中增设转移目标指令缓冲栈字段,存放转移成功方向的前几条指令,以加速猜测不命中时的回头速度。 转28页

  34. 第四节 指令级并行技术 一、指令动态调度技术 *动态调度:指令执行时,控制器根据指令及硬件资源的状态,重新安排(调度)指令的执行顺序,减少流水线的停顿。 *动态与静态调度比较: 静态—软件(编译程序),指令生成时; 动态—硬件(控制器),指令执行时。 *动态调度技术: 目标—实现异步流动(乱序执行); 种类—集中式动态调度、分布式动态调度。

  35. 取指部件 译码器 (一条I) 存数部件 流水线例: 按序流水过程: 取指 译码 取数 执行 写回 寄存器组 指缓 (多条I) ALUs (一条I) 操作数就绪的指令 指令在窗口中的行号 PC 按序 取数部件 按序 ALUs (一条I) 取指部件 译码器 (一条I) 指令窗口 (多条I) 乱序 Cache或主存 按序 PC 指令缓 (多条I) 取数部件 寄存器组 存数部件 Cache或主存 1、异步流动(乱序执行)基本思想 *流水线的段与相关部件: *乱序执行基本思想:①用指令窗口按序保存多条指令; ②优先执行(乱序)操作数就绪的指令(数据流技术)。 回38页 回下页

  36. 状态记录控制器(记分牌) 整数部件 RF 浮点加 浮点乘 浮点除 IF ID OF 指令 EX WB 2、集中式动态调度(记分牌算法)技术 *结构的组织: *调度原理: 用状态记录控制器实现指令窗口; 用状态记录控制器集中记录流水线中各指令、各功能部件及REG的状态(记分牌),然后进行统一调度。 转上页 回下页

  37. *状态记录控制器: 记录功能—集中设置指令、功能部件及REG状态表,控制器按拍更新各状态表状态; 控制功能—根据记录的状态,检测指令间相关,控制各部件执行的操作(无相关指令的操作先执行,有相关指令的操作推后执行)。 回40页 转上页

  38. 译码器 (一条I) 指令窗口 (多条I) ALUs (一条I) 译码器 (一条I) 保留站RS (多条I) ALUs (一条I) 源 Addr 取数缓冲器 FLB(多条I) 寄存器组 FLR 存数缓冲器 SDB(多条I) 取数部件 寄存器组 存数部件 取数部件 存数部件 3、分布式动态调度(Tomasulo算法)技术 *总体思路:将状态记录与控制机构分散设置到各部件中; *关键技术:寄存器重命名技术、动态存储器地址判别技术. (1)结构与组织 有分布式指令窗口(含状态记录)、分布式控制机构2个方面 *分布式指令窗口的组织: --指令信息记录机构 增设保留站、取数缓冲器、存数缓冲器; 每个指令窗口可保存多条指令。 转35页 回下页 回41页

  39. 译码器 (一条I) 保留站RS (多条I) ALUs (一条I) ① ③ ① ① ⑤ ④ ④ 取数缓冲器 FLB(多条I) 寄存器组FLR 存数缓冲器 SDB(多条I) ② 注:①对RS而言,FLB访存延迟较大,FLB为数据来源部件(异步输出数据); ②ALU(产生数据)所对应的指令由RS决定,RS为数据来源部件; ③FLR仅暂存(立即输出)和传递(异步输出)数据(最初总作为指令的目的操作数使用),故不是数据来源部件。 *分布式状态记录的组织:--指令窗口中指令状态记录方法 各指令的操作状态保存在对应功能部件的指令窗口中。 数据来源部件—即产生指令源操作数的部件(FLB/RS); 指令中数据传递操作的部件关系表示方法— 数据来源部件(FLB/RS)每行标有站号(从1开始); 数据接收部件(RS/SDB/FLR)每行设立站号项。 转上页 回下页

  40. 指令中操作及状态表示的组织— ①指令操作表示为部件操作(相应指令窗口中保存); 各指令窗口的状态表指示部件间的指令操作关系←┘ ②各部件记录本部件执行各指令操作的状态。 在状态表中用忙位表示←┘ 说明:忙位=0时—操作已完成(→硬件表的有效位置0), 忙位=1时—操作未完成。 └→可代替忙位 指令串例: F0=[A1] [A2]=F1 F2=F1+5 [A3]=F2 转37页 回下页 转上页(站号从1开始)

  41. 指令缓冲器 (多条指令) 译码器 (一条指令) 保留站RS (多条指令) 控制 ALUs (一条指令) (按序) (按序) (乱序) CDB (按序) 取数缓冲器FLB 寄存器组 FLR 控制 存数缓冲器SDB 控制 控制 地址 取指部件 取数部件 取数部件 *分布式控制机构的组织: --指令操作控制机构 ①译码时,控制器转化指令操作→部件操作, 并保存部件操作到各指令窗口中; 如—上页的运算型指令及传送型指令转化及保存 ②各部件查询自身状态表中各指令操作的数据状态, 各部件自行控制数据已就绪的指令操作的执行。 *部件间数据通路的组织: 常用公共数据总线CDB实现互连及作为相关专用通路。 回下页 转上页 转38页 回55页

  42. BIU(←→Cache或主存) 取数部件 取指部件 取数部件 站号 0110 … 0010 0001 控制 站号 地址 数据 取数缓冲器FLB 存数缓冲器SDB 指令队列 地址 控制 F7 … F0 忙位站号 数据 寄存器FLR 译码器 公共数据总线CDB FLR总线 站号 1010 1011 1100 站号 1000 1001 M1 M2 站号 源1值站号源2值控制 站号 源1值站号源2值控制 A1 A2 A3 保留站 加法器 乘/除法器 采用分布式动态调度的流水线结构图 回下页 转上页 回46页 回50页

  43. →1 ADD 000025H000005H →11010 ? →1 ADD 1010 ? 000025H →11011? (2)动态调度原理 *REG的RAW相关检测及处理: --指令译码时控制器完成 相关存在条件—指令源操作数对应REG的忙位=1时; RAW相关处理—取REG的站号项到当前指令相应部件中; └→直接取源头数据(REG重命名) └→从CDB接收(相关专用通路法) 指令串 I1:F1=F0+5; I2:F2=F1+F0 I3:F0=F3+F4 RAW相关的消除—CDB上数据有效时(FLB数据到达或EX结束),各部件控制机构控制接收数据并修改状态。 转上页 回下页 回46页

  44. *REG的WAR相关处理: --指令译码时控制器完成 WAR相关存在条件—指令有源操作数均可能产生; WAR相关处理— WAR相关的消除— 相关处理时已消除WAR相关或转化为RAW相关。 (见上页例) 转24页 转上页 回下页 回62页 回46页

  45. *REG的WAW相关处理: --指令译码时控制器完成 WAW相关存在条件—指令目的操作数对应REG的忙位=1时 忙位=0时直接指示操作的部件关系即可←┘ WAW相关处理—取指令所占RS站号到REG的站号项中; │└→REG忙位已=1 └→REG只接收最后指令结果(REG重命名) 指令串 I1:F1=F0+5; I2:F1=F0*F2 →1 ADD 000025H000005H →11011? →11010 ? →1 ADD 000025H000023H WAW相关的消除—相关处理时已消除WAW相关。 转上页 回下页

  46. 指令序列译码时的控制器动作(相关处理) I1:F1←(FLB1) I2:F1←(F1)*(FLB2) I3:F4←(F2)*(F3) *动态调度的实现: --RS控制机构随时完成 乱序派遣实现—RS使操作数已就绪的指令被派遣; RAW相关后推法实现—RS使操作数未就绪的指令等待。 F1站号项←0001(等待接收[访存有延迟]FLB1的数据) F1忙位项←1(操作未完成、数据不可用) M1源1站号项←0001(直接接收FLB1,REG重命名; 用CDB同时接收,相关专用通路法) M1源2站号项←0010(等待接收FLB2的数据) F1站号项←1000(M1站号,只接收M1结果,REG重命名) F1忙位项←1(操作未完成、数据不可用) M2源1值项←F2数据项、源2值项←F3数据项 F4站号项←1001(M2站号,接收M2结果)、F4忙位项←1 RS的调度结果:M2(I3)先于M1(I2)执行(乱序派遣[数据流分析]+后推法) 转42页 转43页 转44页 转上页

  47. *MEM的数据相关处理: --动态存储器地址判别技术 核心思想—按序完成有冲突的操作! └→MEM是CPU-CPU及CPU-I/O设备的共享部件 MEM的RAW相关检测及处理—译码时控制器完成 相关存在条件— 指令源操作数的MEM地址与SBD中地址相同; 需保存到FLB中←┘ └→尚未写 RAW相关处理—后推法,后继指令(含当前指令)被阻塞(译码器暂停),直到RAW相关消除(SDB中没有相同地址); RAW相关的消除—当SDB中相同地址行完成时(有效位1→0),控制器在FLB中建立相应信息行(有效位、地址等)。 回下页

  48. MEM的WAR相关检测及处理— 译码时控制器完成 相关存在条件— 指令目的操作数的MEM地址与FLB中地址相同; 需保存到SDB中←┘ └→尚未读 RAW相关处理—后推法,后继指令(含当前指令)被阻塞(译码器暂停),直到WAR相关消除(FLB中没有相同地址); MEM的WAW相关检测及处理— 译码时控制器完成 相关存在条件— 指令目的操作数的MEM地址与SDB中地址相同; 需保存到SDB中←┘ └→尚未写 RAW相关处理—后推法,后继指令(含当前指令)被阻塞(译码器暂停),直到WAW相关消除(SDB中没有相同地址)。 转上页

  49. 指缓 译码器 RS 控制 控制器 ALU CDB FLB 控制 控制 FLR SDB 控制 源操作数的REG忙位=0时,REG数据项 REG忙位=1时,REG站号项 目的操作数REG忙位=0时, REG忙位=1时, →指令目的部件SDB/FLR中 或→指令操作部件RS中 操作部件RS或源部件FLB站号 →目的FLR的REG站号项、 1→REG忙位 指令 源操作数的MEM地址≠SDB中地址时,在FLB中建立新行 MEM地址=SDB中地址时, 目的操作数MEM地址=FLB中地址时, MEM地址=SDB中地址时, MEM地址≠FLB/SDB中地址时,在SDB中建立新行 使译码器暂停 (3)分布式动态调度技术小结 *结构与组织:增设RS/FLB/SDB(含操作关系及状态表); *分布式调度:控制器译码时转化指令操作→部件操作, 各部件随时独立控制本部件的操作。 转上页

  50. 指令串示例 I1: JNZ I7 I2: MOV F1,[F2] I3: ADD F3,F4 I4: SUB F5,F1 I5: INC F2 段 段 I1 I2 I3 I1 WB EX OF ID IF WB EX OF ID IF I1 I3 I2 I5 I1 I4 I1 I2 I3 I5 I4 I1 I2 I3 I1 I2 I3 I4 I6 I1 I2 I3 I4 I7 I5 I1 I2 I3 I4 I5 I6 I1 I2 I3 I4 I5 I7 拍 拍 猜测错误的时-空图 猜测正确的时-空图 二、推测执行技术 1、推测执行基本思想 *目标:支持多路分支预测技术及数据流分析技术。 │ └→可能误猜测←┬→乱序执行←┘ └───────→需解决 *基本思想: ①允许用预测方法取指令; ②允许指令乱序执行,但不写结果; ③必须按序确认后(控制相关已消除)才写结果。 回下页

More Related