L21

Size: px
Start display at page:

Download "L21"

Transcription

1 Lecture 25: Pipeline Hazard

2 流水线冒险的处理主要内容 流水线冒险的几种类型 数据冒险的现象和对策 数据冒险的种类 - 相关的数据是 结果 : 可以通过转发解决 - 相关的数据是 DM 读出的内容 : 随后的指令需被阻塞一个时钟 数据冒险和转发 - 转发检测 / 转发控制 数据冒险和阻塞 - 阻塞检测 / 阻塞控制 控制冒险的现象和对策 静态分支预测技术 动态分支预测技术 缩短分支延迟技术 流水线中对异常和中断的处理 访问缺失对流水线的影响

3 总结 : 流水线的三种冲突 / 冒险 (Hazard) 情况 Hazards: 指流水线遇到无法正确执行后续指令或执行了不该执行的指令 Structural hazards (hardware resource conflicts): 现象 : 同一个部件同时被不同指令所使用 - 一个部件每条指令只能使用 1 次, 且只能在特定周期使用 - 设置多个部件, 以避免冲突 如指令存储器 IM 和数据存储器 DM 分开 Data hazards (data dependencies): 现象 : 后面指令用到前面指令结果时, 前面指令结果还没产生 - 采用转发 (Forwarding/Bypassing) 技术 - Load-use 冒险需要一次阻塞 (stall) - 编译程序优化指令顺序 Control (Branch) hazards (changes in program flow): 现象 : 转移或异常改变执行流程, 顺序执行指令在目标地址产生前已被取出 - 采用静态或动态分支预测 - 编译程序优化指令顺序 ( 实行分支延迟 ) SKIP

4 Structural Hazard( 结构冒险 ) 现象 Time (clock cycles) Load Instr 1 Instr 2 Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Instr 3 Instr 4 Mem Reg Mem Reg Mem Reg Mem Reg 如果只有一个存储器, 则在 Load 指令取数据同时又取指令的话, 则发生冲突! 如果不对寄存器堆的写口和读口独立设置的话, 则发生冲突! 结构冒险也称为硬件资源冲突 : 同一个执行部件被多条指令使用

5 Structural Hazard 的解决方法 为了避免结构冒险, 规定流水线数据通路中功能部件的设置原则为 : 每个部件在特定的阶段被用!( 如 : 总在第三阶段被用!) 将 Instruction Memory (Im) 和 Data Memory (Dm) 分开将寄存器读口寄存器读口和写口写口独立开来 Time (clock cycles) I n s t r. O r d e r Load Instr 1 Instr 2 Instr 3 Instr 4 Im Reg Dm Reg Im Reg Dm Im Reg BACK Reg Dm Reg

6 Data Hazard 现象 举例说明 : 以下指令序列中, 寄存器 r1 会发生数据冒险 add r1,r2,r3 sub r4, r1,r3 and r6, r1,r7 or r8, r1,r9 xor r10, r1,r11 想一下, 哪条指令的 r1 是老的值? 哪条是新的值? 读 r1 时,add 指令正在执行加法 (EXE), 老值! 读 r1 时,add 指令正在传递加法结果 (MEM), 老值! 读 r1 时,add 指令正在写加法结果到 r1(wb), 老值! 读 r1 时,add 指令已经把加法结果写到 r1, 新值 补充 : 三类数据冒险现象 画出流水线图能很清楚理解! RAW: 写后读 ( 基本流水线中经常发生, 如上例 ) WAR: 读后写 ( 基本流水线中不会发生, 多个功能部件时会发生 ) WAW: 写后写 ( 基本流水线中不会发生, 多个功能部件时会发生 ) 本讲介绍基本流水线, 所以仅考虑 RAW 冒险

7 Data Hazard on r1 Time (clock cycles) IF ID/RF EX MEM WB I n s t r. O r d e r add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Im Reg Dm Reg 最后一条指令的 r1 才是新的值! 如何解决这个问题?

8 I n s t r. O r d e r 方案 1: 在硬件上采取措施, 使相关指令延迟执行 硬件上通过阻塞 (stall) 方式阻止后续指令执行, 延迟到有新值以后! 这种做法称为流水线阻塞, 也称为 气泡 Bubble Time (clock cycles) IF ID/RF EX MEM WB add r1,r2,r3 stall stall stall sub r4,r1,r3 Im bubble bubble bubble bubble Im bubble bubble bubble bubble Im bubble bubble bubble bubble and r6,r1,r7 Im Reg Dm 缺点 : 控制相当复杂, 需要改数据通路!

9 方案 2: 软件上插入无关指令 最差的做法 : 由编译器插入三条 NOP 指令, 浪费三条指令的空间和时间 I n s t r. O r d e r Time (clock cycles) add r1,r2,r3 nop nop nop sub r4,r1,r3 IF ID/RF EX MEM WB Im Reg Dm Reg and r6,r1,r7 Im Reg Dm

10 方案 3: 利用 DataPath 中的中间数据 仔细观察后发现 : 流水段寄存器中已有需要的值 r1! 在哪个流水段 R 中? I n s t r. O r d e r Time (clock cycles) IF ID/RF EX MEM WB add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Im Reg Dm Reg 1. 把数据从流水段寄存器中直接取到 的输入端 2. 寄存器写 / 读口分别在前 / 后半周期, 使写入被直接读出 BACK 称为转发 (Forwading) 或旁路 (Bypassing)

11 硬件上的改动以支持 转发 技术 加 MUX, 使流水段寄存器值返送 输入端 假定流水段寄存器能读出新写入的值 ( 否则, 需要更多的转发数据 ) Ex Mem ID/EX EX/MEM MEM/WB M u x M u x Zero? add r3, r2, r1 Sub r5, r3, r4 Data Memory lw r3, 100(r1) Or r6, r2, r1 Sub r5, r3, r4 add r3, r2, r1 Or r6, r2, r1 如果指令序列为 : lw r3, 100(r1) Or r6, r3, r1 Sub r5, r3, r4 能用 转发 技术解决第 1 2 两条指令间的数据冒险吗? 请看后面的幻灯片! Sub r5, r3, r4

12 复习 : Load 指令引起的延迟现象 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Clock I0: Load Ifetch Reg/Dec Exec Mem Wr Plus 1 Ifetch Reg/Dec Exec Mem Wr Plus 2 Ifetch Reg/Dec Exec Mem Wr Plus 3 Ifetch Reg/Dec Exec Mem Wr 若不采用转发, 则在何时才能用使用 Load 指令的结果? Plus 4 Ifetch Reg/Dec Exec Mem Wr Load 指令最早在哪个流水线寄存器中开始有后续指令需要的值? 实际上, 在第四周期结束时, 数据在流水段寄存器中已经有值 采用数据转发技术可以使 load 指令后面第二条指令得到所需的值但不能解决 load 指令和随后的第一条指令间的数据冒险, 要延迟执行一条指令! 这种 load 指令和随后指令间的数据冒险, 称为 装入 - 使用数据冒险 (load- use Data Hazard)

13 Forwarding 技术使 Load-use 冒险只需延迟一个周期 I n s t r. O r d e r Time (clock cycles) IF ID/RF EX MEM WB lw r1, 0(r2) sub r7,r1,r3 and r6,r1,r7 or r8,r1,r9 Im Reg Dm Reg 采用 转发 后仅第二条指令 SUB r7,r1,r3 不能按时执行! 需要阻塞一个周期 发生 装入 - 使用数据冒险 时, 需要对 load 后的指令阻塞一个时钟周期!

14 方案 1: 硬件阻止指令执行来解决 load-use 用硬件阻塞一个周期 ( 指令被重复执行一次 ) I n s t r. O r d e r Time (clock cycles) lw r1, 0(r2) stall sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 IF ID/RF EX MEM WB Im bubble bubble bubble bubble Im Reg Dm Reg

15 方案 2: 软件上插入 NOP 指令来解决 load-use 用软件插入一条 NOP 指令!( 有些处理器不支持硬件阻塞处理 ) 例如 :MIPS 1 处理器没有硬件阻塞处理, 而由编译器 ( 或汇编程序员 ) 来处理 I n s t r. O r d e r Time (clock cycles) lw r1, 0(r2) nop sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 IF ID/RF EX MEM WB Im Reg Dm Reg

16 方案 3: 编译器进行指令顺序调整来解决 load-use 以下源程序可生成两种不同的代码, 优化的代码可避免 Load 阻塞 a = b + c; d = e f; 假定 a, b, c, d,e, f 在内存 Slow code: lw $2, b lw $3, c add $1, $2, $3 sw a, $1 lw $5, e lw $6, f sub $4, $5, $6 sw d, $4 调整后 Fast code: lw $2, b lw $3, c lw $5, e add $1, $2, $3 lw $6, f sw a, $1 sub $4, $5, $6 sw d, $4 编译器的优化很重要!

17 编译器优化以避免阻塞的情况调查 : scheduled unscheduled gcc spice tex 14% 25% 31% 42% 54% 65% 0% 20% 40% 60% 80% % loads stalling pipeline 由此可见, 优化调度后 load 阻塞现象大约降低了 1/2~1/3

18 数据冒险的解决方法 方法 1: 硬件阻塞 (stall) 方法 2: 软件插入 NOP 指令 方法 3: 编译优化 : 调整指令顺序, 能解决所有数据冒险吗? 方法 4: 合理实现寄存器堆的读 / 写操作, 能解决所有数据冒险吗? 前半时钟周期写, 后半时钟周期读, 若同一个时钟内前面指令写入的数据正好是后面指令所读数据, 则不会发生数据冒险 方法 5: 转发 (Forwarding 或 Bypassing 旁路 ) 技术, 能解决所有数据冒险吗? - 若相关数据是 结果, 则如何? 可通过转发解决 - 若相关数据是上条指令 DM 读出内容, 则如何? 不能通过转发解决, 随后指令需被阻塞一个时钟或加 NOP 指令称为 Load-use 数据冒险! 实现 转发 和 阻塞 要修改数据通路 : (1) 检测何时需要 转发, 并控制实现 转发 (2) 检测何时需要 阻塞, 并控制实现 阻塞 BACK

19 RAW( 写后读 ) 数据冒险的 转发 条件 ID/EX EX/MEM MEM/WB M u x M u x Ex Zero? C1 Mem ori r3, r2, 100 sub r5, r3, r4 Data Memory C3 lw r3, 100(r1) or r6, r2, r1 sub r5, r3, r4 C2 add r3, r2, r1 or r6, r2, r1 sub r5, r3, r4 后面指令需用 输出结果 C1: 目寄是后一条指令的源寄 C2: 目寄是后第二条指令的源寄 ( 例如 :R-Type 后跟 R- / lw / sw / beq 等 ) 后面指令需用从 DM 读出的结果 C3: 目寄是后第二条指令的源寄 ( 例如 :load 指令后跟 R-Type / beq 等 ) 用流水段寄存器来表示转发条件 (C3 以后考虑 ) C1(a): EX/MEM. RegisterRd=ID/EX. RegisterRs C1(b): EX/MEM. RegisterRd=ID/EX. RegisterRt C2(a): MEM/WB. RegisterRd=ID/EX. RegisterRs C2(b): MEM/WB. RegisterRd=ID/EX. RegisterRt 这里的 RegisterRd 是指目的寄存器实际上是 R-type 的 Rd 或 I-Type 的 rt

20 指令的回写 (Write Back) 阶段 Clk Ifetch Reg/Dec Exec Mem Wr RegWr=1 ExtOp Op Branch PC 1 0 PC+4 AIUnit I IF/ID: PC+4 Imm Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex Register 0 1 PC+4 Imm busa busb Exec Unit Ex/Mem Register Zero Data Mem RA Do WA Di Mem/Wr Register 1 Mux 0 Rd 还是 Rt 取决于是 R- 型指令, 还是 I- 型指令! 若是 beq 指令会怎样? RegDst beq r3, r2, 100 sub r5, r3, r2 Src MemWr MemtoReg=1/0 因为 beq 指令没有写结果, 不用进行转发!

21 转发条件的进一步完善 以下两种情况下, 根据前面的转发条件转发会发生错误 指令的结果不写入目的寄存器 Rd 时 beq r3, r2, 100 sub r5, r3, r2 - 例如,Beq 指令只对 rs 和 rt 相减, 不写结果到目的寄存器 - 即 :EX / MEM 或 MEM / WB 流水段寄存器的 RegWrite 信号为 0 Rd 等于 $0 时 - 例如, 指令 sll $0, $1, 2 的转发结果为 (R[$1]<<2), 但实际上应该是 0 因此, 修改转发条件为 : C1(a): EX/MEM.RegWrite and EX/MEM. RegisterRd 0 and EX/MEM. RegisterRd=ID/EX. RegisterRs C1(b): EX/MEM.RegWrite and EX/MEM. RegisterRd 0 and EX/MEM. RegisterRd=ID/EX. RegisterRt C2(a): MEM/WB.RegWrite and MEM/WB. RegisterRd 0 and MEM/WB. RegisterRd=ID/EX. RegisterRs C2(b): MEM/WB.RegWrite and MEM/WB. RegisterRd 0 and MEM/WB. RegisterRd=ID/EX. RegisterRt

22 转发路径和转发条件 ID/EX EX/MEM MEM/WB 加 MUX, 使流水段寄存器值返送 输入端 M u x M u x Ex Zero? Mem C1(a) Data Memory C1(b) C3 C2(a) C2(b) C1 反映本条指令和随后指令间的相关关系 C2 反映本条指令和随后第二条指令间的相关关系 C1(a) 和 C1(b) 可以合并为一个条件 C1, 并把转发线合一起后同时送 A 口和 B 口即 :C1=C1(a) or C1(b), 同样 :C2=C2(a) or C2(b), 转发线合起来实际上红线和兰线可以合并, 而且在原数据通路中是合并在一起的 记得吗? 由一个二路选择器 ( 控制端为 MemtoReg) 合并输出到寄存器堆! 所以不需另外有一个检测条件 C3! C1 和 C2 分别反映哪两条指令的关系呢?

23 转发路径和转发条件 ForwardA (ForwardB) = 01 当 c2=1 时 10 当 c1=1 时 转发检测 部件中缺何条件? C1 C2 C1: EX/MEM.RegWrite and EX/MEM. RegisterRd 0 and (EX/MEM. RegisterRd=ID/EX. RegisterRs or EX/MEM. RegisterRd=ID/EX. RegisterRt C2: MEM/WB.RegWrite and MEM/WB. RegisterRd 0 and (MEM/WB. RegisterRd=ID/EX. RegisterRs or MEM/WB. RegisterRd=ID/EX. RegisterRt

24 带转发的流水线数据通路 ForwardA (ForwardB) = 01 当 c2=1 时 10 当 c1=1 时 ForwardA ForwardB C1: EX/MEM.RegWrite and EX/MEM. RegisterRd 0 and (EX/MEM. RegisterRd=ID/EX. RegisterRs or EX/MEM. RegisterRd=ID/EX. RegisterRt C2: MEM/WB.RegWrite and MEM/WB. RegisterRd 0 and (MEM/WB. RegisterRd=ID/EX. RegisterRs or MEM/WB. RegisterRd=ID/EX. RegisterRt

25 更加复杂的数据冒险问题 考察以下指令序列, 采用前述转发条件会发生什么情况? add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 本条指令 ForwardA (ForwardB) = 01 当 c2=1 时 10 当 c1=1 时 对于左边的指令序列,C1 和 C2 的值各是什么? C1=C2=1, 使得 Forward 信号取值不确定! 可能会使转发到第 3 条指令的操作数是第 1 条指令结果, 而不是第 2 条指令的结果! 怎样改写 转发 检测条件 : 改 C1 还是改 C2? 应该让 C1=1,C2=0! 需要改写 转发 条件 C2 为 : MEM/WB.RegWrite and MEM/WB.RegisterRd 0 and (EX/MEM.RegisterRd ID/EX.RegisterRs or EX/MEM.RegisterRd ID/EX.RegisterRt) and (MEM/WB.RegisterRd=ID/EX.RegisterRs or MEM/WB.RegisterRd=ID/EX.RegisterRt) 上述公式相当于加了一个条件限制 : 如果本条指令源操作数和上条指令的目的寄存器一样, 则不转发上上条指令的结果, 而转发上条指令的结果 ( 即 : 此时的 C1=1 而 C2=0) 至此, 解决了 RAW 数据冒险的 转发 处理 BACK

26 I n s t r. O r d e r Load-use Data Hazard( 硬件阻塞方式 ) Time (clock cycles) IF ID/RF EX MEM WB lw r1, 0(r2) sub r4,r1,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 检测点 阻塞点 Im Reg bubble bubble bubble Im Reg Dm Reg 需解决以下问题 : (1) 判断什么条件下需要阻塞 ID/EX.MemRead and (ID/EX.RegisterRt=IF/ID.RegisterRs or ID/EX.RegisterRt=IF/ID.RegisterRt) (2) 如何修改数据通路来实现阻塞 前面指令为 Load 并且前面指令的目的寄存器等于当前刚取出指令的源寄存器

27 Load-use Data Hazard( 硬件阻塞方式 ) I n s t r. 阻塞前的情况 : lw r1, 0(r2) sub r4,r1,r3 检测点 Time (clock cycles) IF ID EX MEM WB O r d e r and r6,r1,r7 or r8,r1,r9 阻塞点 Im Reg Dm Reg 检测 阻塞 过程中 : 1) sub 指令在 IF/ID 段寄存器中, 并正被译码 / 取数, 控制信号和 Rs/Rt 的值将被写到 ID/EX 段寄存器 2) and 指令地址在 PC 中, 正被取出, 取出的指令将被写到 IF/ID 段寄存器中在阻塞点, 必须将上述两条指令的执行结果清除, 并延迟一个周期执行这两条指令延迟一个周期执行后面的指令, 相当于把阻塞点前面一个周期的状态再保持一个周期 lw 指令还是继续正常执行下去想想看, 如何做到继续保持状态?

28 I n s t r. O r d e r Load-use Data Hazard( 硬件阻塞方式 ) 阻塞后的情况 : lw r1, 0(r2) sub r4,r1,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 检测点 Time (clock cycles) IF ID/RF EX MEM WB 阻塞点 Im Reg bubble bubble bubble Im Reg Dm Reg 在阻塞点, 必须将上述两条指令的执行结果清除, 并延迟一个周期执行这两条指令 1 将 ID/EX 段寄存器中所有控制信号清 0 2 IF/ID 寄存器中的信息不变,sub 指令重新译码执行 3 PC 中的值不变,and 指令重新被取出执行

29 带 转发 和 阻塞 检测的流水线数据通路 写使能 信号为 0, 使 PC 2 和 IF/ID 不变 3 使控制信号 1 清 0, 阻塞随后指令! 0 ID/EX.MemRead and (ID/EX.RegisterRt=IF/ID.RegisterRs or ID/EX.RegisterRt=IF/ID.RegisterRt) 至此, 数据冒险的处理全部完成! BACK

30 转移分支指令 (Branch) 引起的 延迟 现象 ( 复习 ) Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10 Cycle 11 Clk 12: Beq Ifetch Reg/Dec Exec Mem Wr (target is 1000) 16: R-type Ifetch Reg/Dec Exec Mem Wr 20: R-type Ifetch Reg/Dec Exec Mem Wr 24: R-type Ifetch Reg/Dec Exec Mem Wr 1000: Target of Br Ifetch Reg/Dec Exec Mem Wr 虽然 Beq 指令在第四周期取出, 但 : 目标地址在第七周期才被送到 PC 的输入端 第八周期才能取出目标地址处的指令执行结果 : 在取目标指令之前, 已有三条指令被取出, 取错了三条指令! 这种现象称为控制冒险 (Control Hazard ) ( 注 : 也称为分支冒险或转移冒险 (Branch Hazard) ) BACK

31 Control Hazard 的解决方法 方法 1: 硬件上阻塞 (stall) 分支指令后三条指令的执行 使后面三条指令清 0 或其操作信号清 0, 以插入三条 NOP 指令 方法 2: 软件上插入三条 NOP 指令 ( 以上两种方法的效率太低, 需结合分支预测进行 ) 方法 3: 分支预测 (Predict) 简单 ( 静态 ) 预测 : - 总是预测条件不满足 (not taken), 即 : 继续执行分支指令的后续指令 可加启发式规则 : 在特定情况下总是预测满足 (taken), 其他情况总是预测不满足 如 : 循环顶 ( 底 ) 部分支总是预测为不满足 ( 满足 ) 能达 65%-85% 的预测准确率 动态预测 : - 根据程序执行的历史情况, 进行动态预测调整, 能达 90% 的预测准确率注 : 采用分支预测方式时, 流水线控制必须确保错误预测指令的执行结果不能生效, 而且要能从正确的分支地址处重新启动流水线工作 方法 4: 延迟分支 (Delayed branch)( 通过编译程序优化指令顺序!) 把分支指令前面与分支指令无关的指令调到分支指令后面执行, 也称延迟转移另一种控制冒险 : 异常或中断控制冒险的处理

32 简单 ( 静态 ) 分支预测方法 基本做法 总预测条件不满足 (not taken), 即 : 继续执行分支指令的后续指令可加启发式规则 : 在特定情况下总是预测满足 (taken), 其他情况总是预测不满足 预测失败时, 需把流水线中三条错误预测指令三条错误预测指令丢弃掉 - 将三条丢弃指令的控制信号值设置为 0, 使其后续过程中执行 nop 操作 ( 注 : 涉及到当时在 IF ID 和 EX 三个阶段的指令 ) 性能 如果转移概率是 50%, 则预测正确率仅有 50% 预测错误的代价 预测错误的代价与何时能确定是否转移有关 越早确定代价越少 可以把 是否转移 的确定工作提前, 而不要等到 MEM 阶段才确定 那最早可以提前到哪个阶段呢? SKIP

33 复习 : Control Hazard 现象 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10 Cycle 11 Clk 12: Beq Ifetch Reg/Dec Exec Mem Wr (target is 1000) 16: R-type Ifetch Reg/Dec Exec Mem Wr 20: R-type Ifetch Reg/Dec Exec Mem Wr 24: R-type Ifetch Reg/Dec Exec Mem Wr 1000: Target of Br Ifetch Reg/Dec Exec Mem Wr 虽然 Beq 指令在第四周期取出, 但 : 是否转移 在 Mem 阶段确定, 目标地址在第七周期才被送到 PC 输入端 第八周期才取出目标地址处的指令执行结果 : 在取目标指令之前, 已有三条指令被取出, 取错了三条指令! 发生转移时, 要在流水线中清除 Beq 后面的三条指令, 分别在 EXE ID IF 段中 延迟损失时间片 C: 发生转移时, 给流水线带来的延迟损失这里 C=3 BACK

34 简单 ( 静态 ) 分支预测方法 缩短分支延迟, 减少错误预测代价 可以通过调整 转移地址计算 和 分支条件判断 操作到 ID 阶段来缩短延迟 - 将转移地址生成从 MEM 阶段移到 ID 阶段, 可以吗? 为什么? ( 是可能的 :IF/ID 流水段寄存器中已经有 PC 的值和立即数 ) - 将 判 0 操作从 EX 阶段移到 ID 阶段, 可以吗? 为什么? ( 用逻辑运算 ( 如, 先按位异或, 再结果各位相或 ) 来直接比较 Rs 和 Rt 的值 ) ( 简单判断用逻辑运算, 复杂判断可以用专门指令生成条件码 ) ( 许多条件判断都很简单 ) 预测错误的检测和处理 ( 称为 冲刷 冲洗冲洗 -- Flush) 当 Branch=1 并且 Zero=1 时, 发生转移 (taken) 增加控制信号 :IF.Flush=Branch and Zero, 取值为 1 时, 说明预测失败 预测失败 ( 条件满足 ) 时, 完成以下两件事 ( 延迟损失时间片 C=1 时 ): 1 将转移目标地址 ->PC 2 清除 IF 段中取出的指令, 即 : 将 IF/ID 中的指令字清 0, 转变为 nop 指令原来要清除三条指令, 调整后只需要清除一条指令, 因而只延迟一个时钟周期, 每次预测错误减少了两个周期的代价!

35 带静态分支预测处理的数据通路 IF.Flush=Branch and Zero 40# 指令 beq $1,$3, 7 的 ID 阶段转移目标地址 (72)->PC sub $3, $5, $1 add $1, $5, $2 beq $1, $3, 7 控制转移目标地址 ->PC 将 IF/ID 中指令字清 0, 变为 nop 指令 若 $1 或 $3 和前面指令数据相关, 会怎么样? 上上条指令的 EXE 段结果可转发回来进行判断 上条指令的 EXE 段结果来不及转发回来, 引起 1 次阻塞! BACK

36 动态分支预测方法 简单的静态分支预测方法的预测成功率不高, 应考虑动态预测 动态预测基本思想 : 利用最近转移发生的情况, 来预测下一次可能发生的转移 预测后, 在实际发生时验证并调整预测 转移发生的历史情况记录在 BHT 中 - 分支历史记录表 BHT(Branch History Table) - 分支目标缓冲 BTB(Branch Target Buffer) 每个表项由分支指令地址低位作索引, 故在 IF 阶段就可以取到预测位 - 低位地址相同的分支指令共享一个表项, 所以, 可能取的是其他分支指令的预测位 会不会有问题? - 由于仅用于预测, 所以不影响执行结果 现在几乎所有的处理器都采用动态预测 (dynamic predictor)

37 分支历史记录表 BHT 分支指令地址 =? 分支历史记录表 BHT 分支指令地址预测位 转移目标 转移目标地址 1 查找 转移取 顺序取 查找时发现都不相等, 则 未命中 未命中说明什么? 说明以前没有执行过该分支指令 加入新项 命中与否 4 修正 2 预测 控制 控制逻辑 3 选择 实际执行情况 命中时 : 根据预测位, 选择 转移取 还是 顺序取 未命中时 : 加入新项, 并填入指令地址和转移目标地址 初始化预测位 指令预取器 指令执行

38 动态预测基本方法 采用一位预测位 : 总是按上次实际发生的情况来预测下次 1 表示最近一次发生过转移 (taken), ),0 表示未发生 (not taken) 预测时, 若为 1, 则预测下次 taken, 若为 0, 则预测下次 not taken 实际执行时, 若预测错, 则该位取反, 否则, 该位不变 可用一个简单的预测状态图预测状态图表示 缺点 : 当连续两次的分支情况发生改变时, 预测错误 - 例如, 循环迭代分支时, 第一次和最后一次会发生预测错误, 因为循环的第一次和最后一次都会改变分支情况, 而在循环中间的各次总是会发生分支, 按上次的实际情况预测时, 都不会错 采用二位预测位 用 2 位组合四种情况来表示预测和实际转移情况 按照预测状态图预测状态图进行预测和调整 在连续两次分支发生不同时, 只会有一次预测错误 采用比较多的是二位预测位, 也有采用二位以上预测位 如 :Pentium 4 的 BTB2 采用 4 位预测位 BACK

39 一位预测状态图 发生 正确 不发生错误 不发生 预测发生预测不发生 1 0 发生错误 正确 Loop: g = g +A[i]; i = i+ j; if (i!= h) go to Loop: Assuming variables g, h, i, j ~ $1, $2, $3, $4 and base address of array is in $5 指令预取时, 按照预测读取相应分支的指令 预测发生时, 选择 转移取 预测不发生时, 选择 顺序取 指令执行时, 按实际执行结果修改预测位 对照状态转换图来进行修改 例如 : 对于一个循环分支 若初始状态为 0( 再次循环时为 0), 则第一次和 最后一次都错 若初始状态为 1, 则只有最后一次会错 即 : 只要本次和上次的发生情况不同, 就会出现一次预测错误 Loop: add $7, $3, $3 ; i*2 add $7, $7, $7 ; i*4 add $7, $7, $5 lw $6, 0($7) ; $6=A[i] add $1, $1, $6 ; g= g+a[i] add $3, $3, $4 bne $3, $2, Loop

40 举例 : 双重循环的一位动态预测 into sum (int N) { int i, j, sum=0; for (i=0; i < N; i++) for (j=0; j <N; j++) sum=sum+1; return sum; } Loop-i: beq $t1,$a0, exit-i # 若 ( i=n) 则跳出外循环 add $t2, $zero, $zero #j=0 Loop-j: beq $t2, $a0, exit-j # 若 (j=n) 则跳出内循环 addi $t2, $t2, 1 # j=j+1 addi $t0, $t0, 1 #sum=sum+1 j Loop-j exit-j: addi $t1, $t1, 1 # i=i +1 j Loop-i exit-i: 外循环中的分支指令共执行 N+1 次, 内循环中的分支指令共执行 N (N+1) 次 N=10, 分别 90.9% 和 82.7% N=100, 分别 99% 和 98% 预测位初始为 0, 外循环只有最后一次预测错误 ; 跳出内循环时预测位变为 1, 再进入内循环时, 第一次总是预测错误, 并且任何一次循环的最后一次总是预测错误, 因此, 总共有 1+2 (N 1) 次预测错误 N 越大准确率越高! BACK

41 两位预测状态图 发生正确不发生错误预测发生预测发生 发生正确发生错误不发生错误不发生正确预测不发生预测不发生 发生错误不发生正确 Loop: add $7, $3, $3 ; i*2 add $7, $7, $7 ; i*4 add $7, $7, $5 lw $6, 0($7) ; $6=A[i] add $1, $1, $6 ; g= g+a[i] add $3, $3, $4 bne $3, $2, Loop 预测发生时, 选择 转移取 预测不发生时, 选择 顺序取 基本思想 : 只有两次预测错误才改变预测方向 11 状态时预测发生 ( 强转移 ), 实际不发生时, 转到状态 10( 弱转移 ), 下次仍预测为发生, 如果再次预测错误 ( 实际不发生 ), 才使下次预测调整为不发生 00 好处 : 连续两次发生不同的分支情况时, 会预测正确 例如, 对于循环分支的预测 ( 假定预测初始位为 11) - 第一次 : 初始态为 11( 再次循环时状态为 10), 预测发生, 实际也发生, 正确 - 中间 : 状态为 11, 预测发生, 实际也发生, 正确 - 最后一次 : 状态为 11, 预测发生, 但实际不发生, 错

42 举例 : 双重循环的两位动态预测 into sum (int N) { int i, j, sum=0; for (i=0; i < N; i++) for (j=0; j <N; j++) sum=sum+1; return sum; } Loop-i: beq $t1,$a0, exit-i # 若 ( i=n) 则跳出外循环 add $t2, $zero, $zero #j=0 Loop-j: beq $t2, $a0, exit-j # 若 (j=n) 则跳出内循环 addi $t2, $t2, 1 # j=j+1 addi $t0, $t0, 1 #sum=sum+1 j Loop-j exit-j: addi $t1, $t1, 1 # i=i +1 j Loop-i exit-i: 外循环中的分支指令共执行 N+1 次, 内循环中的分支指令共执行 N (N+1) 次 N=10, 分别 90.9% 和 90.9% N=100, 分别 99% 和 99% 预测位初始为 00, 外循环只有最后一次预测错误 ; 跳出内循环时预测位变为 01, 再进入内循环时, 第一次预测正确, 只有最后一次预测错误, 因此, 总共有 N 次预测错误 N 越大准确率越高! BACK

43 分支延迟时间片的调度 属于静态调度技术, 由编译程序重排指令顺序来实现 基本思想 : 把分支指令前面的与分支指令无关的指令调到分支指令后面执行, 以填充延迟时间片 ( 也称分支延迟槽 Branch Delay slot), 不够时用 nop 操作填充 举例 : 如何对以下程序段进行分支延迟调度? ( 假定时间片为 2) lw $1, 0($2) lw $3, 0($2) add $6, $4, $2 beq $3, $5, 2 add $3, $3,$2 sw $1, 0($2) 调度后 若分支条件判断和目标地址计算提前到 ID 阶段, 则分支延迟时间片减少为 1 lw $3, 0($2) add $6, $4, $2 beq $3, $5, 2 lw $1, 0($2) nop add $3, $3,$2 sw $1, 0($2) lw $3, 0($2) add $6, $4, $2 beq $3, $5, 2 lw $1, 0($2) add $3, $3,$2 sw $1, 0($2) 调度后可能带来其他问题 : 产生新的 load-use 数据冒险 调度后, 降低了分支延迟损失 BACK

44 另一种控制冒险 : 异常和中断 异常和中断会改变程序的执行流程 某条指令发现异常时, 后面多条指令已被取到流水线中正在执行 例如 指令发现 溢出 时, 已经到 EX 阶段结束了, 此时, 它后面已有两条指令进入流水线了 流水线数据通路如何处理异常? ( 举例说明 ) 假设指令 add r1,r2,r3 产生了溢出 ( 记住 :MIPS 异常处理程序的首地址为 0x ) 处理思路 : 清除 add 指令以及后面的所有已在流水线中的指令 关中断 ( 将中断允许触发器清 0) 保存 PC 或 PC+4( 断点 ) 到 EPC 0x 送 PC( 从 0x 处开始取指令 )

45 异常的处理 异常 ( 溢出 ) 在第一条指令的 EXE 阶段被检出 Time (clock cycles) I IF ID/RF EX MEM WB n add r1,r2,r3 Im Reg s t r. sub r4,r2,r3 Im Reg O r d e r and r6,r1,r4 问题 : 会发生将溢出结果写到寄存器 r1 中去的情况吗? 阻塞点 Im bubble bubble bubble bubble bubble bubble bubble bubble bubble bubble 不会!EX.Flush 使 EXE 段指令的控制信号清 0( 主要保证 RegWr 清 0), 避异常处理 : 免了在 WB 阶段写寄存器 r1 的情况 IF.Flush 使 IF 段指令在 IF/ID 寄存器中清为 0, 变成 nop 指令 ID.Flush 与数据冒险阻塞检测信号相或 (or) 后, 使 ID 段指令的控制信号清 0 EX.Flush 使 EX 段指令的控制信号清 0 关中断, 并将断点 ( 可能是 PC 可能是 PC+4) 保存到 EPC 中将 0x 作为 PC 的一个输入, 并控制 PC 输入端的多路选择器 Im Reg Dm

46 带异常处理的流水线数据通路 Overflow H

47 流水线方式下的异常处理的难点问题 流水线中同时有 5 条指令, 到底是哪一条发生异常? 根据异常发生的流水段可确定是哪条指令, 因为各类异常发生的流水段不同 溢出 在 EXE 段检出 无效指令 在 ID 段检出 除数为 0 在 ID 段段检出 无效指令地址 在 IF 段检出 无效数据地址 在 Load/Store 指令的 EXE 段检出 外部中断与特定指令无关, 如何确定处理点? 可在 IF 段或 WB 段中进行中断查询, 需要保证当前 WB 段的指令能正确完成, 并在有中断发生时, 确保下个时钟开始执行中断服务程序 检测到异常时, 指令已经取出多条, 当前 PC 的值已不是断点, 怎么办? 指令地址存放在流水段 R, 可把这个地址送到 EPC 保存, 以实现精确中断 ( 非精确中断不能提供准确的断点, 而由操作系统来确定哪条指令发生了异常 ) 一个时钟周期内可能有多个异常, 该先处理哪个? 异常 : 检出异常后, 存到专门寄存器中 ( 前面指令优先级高?) 中断 : 在中断查询程序或中断优先级排队电路中按顺序查询 系统中只有一个 EPC, 多个中断发生时, 一个 EPC 不够放多个断点, 怎么办? 总是把优先级最高的送到 EPC 中 在异常处理过程中, 又发生了新的异常或中断, 怎么办? 利用中断屏蔽和中断嵌套机制来处理后面三个问题在第九章中详细介绍!

48 复习 :Cache 的操作过程 如果被访问的信息不在 cache 中, 称为失效 (miss) 硬件如何进行缺失处理? 缺失处理 如果被访问的信息在 cache 中, 称为命中 (hit)

49 Cache 缺失处理会引起流水线阻塞 ( 停顿 ) 在使用 Cache 的系统中, 数据通路中的 IM 和 DM 分别是 Code Cache 和 Data Cache CPU 执行指令过程中, 取指令或取数据时, 如果发生缺失, 则指令执行被阻塞 Cache 缺失的检测 ( 如何进行的? 记得吗?) Cache 中有相应的检测线路 ( 地址高位与 Cache 标志比较 ) 阻塞处理过程 冻结所有临时寄存器和程序员可见寄存器的内容 ( 即 : 使整个计算机阻塞 ) 由一个单独的控制器处理 Cache 缺失, 其过程 ( 假定是指令缺失 ) 还记得吗?: - 把发生缺失的指令地址 (PC- 4) 所在的主存块首址送到主存 - 启动一次 主存块读 操作, 并等待主存完成一个主存块 (Cache 行 ) 的读操作 - 把读出的一个主存块写到 Cache 对应表项的数据区 ( 若对应表项全满的话, 还要考虑淘汰掉一个已在 Cache 中的主存块 ) - 把地址高位部分 ( 标记 ) 写到 Cache 的 tag 字段, 并置 有效位 - 重新执行指令的第一步 : 取指令 若是读数据缺失, 其处理过程和指令缺失类似 - 从主存读出数据后, 从 取数 那一步开始重新执行就可以了 若是写数据缺失, 则要考虑用哪种 写策略 解决 一致性 问题 比数据相关或分支指令引起的流水线阻塞简单 : 只要保持所有寄存器不变 与中断引起的阻塞处理不同 : 不需要程序切换

50 TLB 缺失和缺页也会引起流水线阻塞 TLB 缺失处理 当 TLB 中没有一项的虚页号与要找的虚页号相等时, 发生 TLB miss TLB miss 说明可能发生以下两种情况之一 : - 页在内存中 : 只要把主存中的页表项装载到 TLB 中 - 页不在内存中 ( 缺页 ):OS 从磁盘调入一页, 并更新主存页表和 TLB 缺页 (page fault) 处理 当主存页表的页表项中 valid 位为 0 时, 发生 page fault Page fault 是一种 故障 异常, 按以下过程处理 (MIPS 异常处理 ) - 在 Cause 寄存器置相应位为 1 - 发生缺页的指令地址 (PC- 4) 送 EPC - 0x ( 异常查询程序入口 ) 送 PC 执行 OS 的异常查询程序, 取出 Cause 寄存器中相应的位分析, 得知发生了 缺页, 转到 缺页处理程序 执行 page fault 一定要在发生缺失的存储器操作时钟周期内捕获到, 并在下个时钟转到异常处理, 否则, 会发生错误 - 例 :lw $1, 0($1), 若没有及时捕获 异常 而使 $1 改变, 则再重新执行该指令时, 所读的内存单元地址被改变, 发生严重错误! 处理 Cache 缺失和缺页的不同之处在哪里? 哪种要进行程序切换?

51 ( 缺页 ) 异常处理时要考虑的一些细节 缺页异常结束后, 回到哪里继续执行? 指令缺页 : 重新执行发生缺页的指令 数据缺页 : - 简单指令 ( 仅一次访存 ): 强迫指令结束, 重新执行缺页指令 - 复杂指令 ( 多次访存 ): 可能会发生多次缺页, 指令被中止在中间某个阶段, 缺页处理后, 从中间阶段继续执行 ; 因而, 需要能够保存和恢复中间机器状态 异常发生后, 又发生新的异常, 怎么办? 在发现异常 转到异常处理程序中, 若在保存正在运行进程的状态时又发生新的异常, 则因为要处理新的异常, 会把原来进程的状态和保存的返回断点破坏掉, 所以, 应该有一种机制来 禁止 响应新的异常处理 通过 中断 / 异常允许 状态位 ( 或 中断 / 异常允许 触发器 ) 来实现 中断 / 异常允许 状态位置 1, 则 开中断 ( 允许异常 ), 清 0 则 关中断 ( 禁止异常 ) 也可由 OS 通过管态指令来设置该位的状态

52 三种处理器实现方式的比较 单周期 多周期多周期 流水线三种方式比较假设各主要功能单元的操作时间为 : 存储单元 :200ps 和加法器 :100ps 寄存器堆 ( 读 / 写 ):50ps 假设 MUX 控制单元控制单元 PC 扩展器和传输线路都没有延迟, 指令组成为 : 25% 取数 10% 存数 52% 11% 分支 2% 跳转则下面实现方式中, 哪个更快? 快多少? (1) 单周期方式 : 每条指令在一个固定长度的时钟周期内完成 (2) 多周期方式 : 每类指令时钟数 : 取数 -5, 存数 -4,-4, 分支 -3, 跳转 -3 (3) 流水线方式 : 每条指令分取指令 取数取数 / 译码 执行执行 存储器存取存储器存取 写回五阶段 ( 假定没有结构冒险, 数据冒险采用转发处理, 分支延迟槽为 1, 预测准确率为 75%; 不考虑异常 中断和访问缺失引起的流水线冒险 )

53 三种处理器实现方式的比较 解 :CPU 执行时间 = 指令条数 x CPI x 时钟周期长度三种方式的指令条数都一样, 所以只要比较 CPI 和时钟周期长度即可 各指令类型要求的时间长度为 :

54 三种处理器实现方式的比较 对于单周期方式 : 时钟周期将由最长指令来决定, 应该是 load 指令, 为 600ps 所以,N 条指令的执行时间为 600N(ps) 对于多周期方式 : 时钟周期将取功能部件最长所需时间, 应该是存取操作, 为 200ps 根据各类指令的频度, 计算平均时钟周期数为 : CPU 时钟周期 =5x25%+4x10%+4x52%+3x11%+3x2%=4.12 所以, N 条指令的执行时间为 4.12x200xN=824N(ps) 对于流水线方式 : Load 指令 : 当发生 Load-use 依赖时, 执行时间为 2 个时钟, 否则 1 个时钟, 故平均执行时间为 1.5 个时钟 ; Store 指令 :1 个时钟 ; Branch 指令 : 预测成功时,1 个时钟, 预测错误时,2 个时钟, 所以 : 平均约为 :.75x1+.25x2=1.25 个 ; Jump 指令 :2 个时钟 ( 总要等到译码阶段结束才能得到转移地址 ) 平均 CPI 为 :1.5x25%+1x10%+1x52%+1.25x11%+2x2%=1.17 所以, N 条指令的执行时间为 1.17x200xN=234N(ps)

55 流水线冒险对程序性能的影响 结构冒险对浮点运算的性能影响较大, 因为浮点运算单元不能有效被流水化, 可能造成运算单元的资源冲突 控制冒险更多出现在整数运算程序中, 因为分支指令对应于循环或选择结构, 大多由整数运算结果决定分支 数据冒险在整数运算程序和浮点运算程序中都一样 浮点程序中的数据冒险容易通过编译器优化调度来解决 - 分支指令少 - 数据访问模式较规则 整数程序的数据冒险不容易通过编译优化调度解决 - 分支指令多 - 数据访问模式不规则 - 过多使用指针

56 小结 流水线冒险的几种类型 : 资源冲突 数据相关数据相关 控制相关 ( 改变指令流的执行方向 ) 数据冒险的现象和对策 数据冒险的种类 - 相关的数据是 结果, 可以通过转发解决 - 相关的数据是 DM 读出的内容, 随后的指令需被阻塞一个时钟 数据冒险和转发 - 转发检测 / 转发控制 数据冒险和阻塞 - 阻塞检测 / 阻塞控制 控制冒险的现象和对策 静态分支预测技术 缩短分支延迟技术 动态分支预测技术 异常和中断是一种特殊的控制冒险 访存缺失 (Cache 缺失 TLB 缺失 缺页缺页 ) 会引起流水线阻塞

<4D F736F F F696E74202D20B5DAC1F9D5C220D7F7D2B5B2CEBFBCB4F0B0B8>

<4D F736F F F696E74202D20B5DAC1F9D5C220D7F7D2B5B2CEBFBCB4F0B0B8> 第六章利用流水线提高性能 作业参考答案 参考答案 : P.373 中 ALU 操作时间为 200ps a. ALU 操作时间缩短 25% 不能加快流水线指令速度 因为流水线的速度最终由时钟周期的宽度决定, 而它不会缩短时钟周期 b. 如果 ALU 操作时间延长 25%, 那么,ALU 时间将变为 250ps, 这样,ALU 操作将变成瓶颈, 使得流水线的时钟周期为 250ps, 其效率降低 (250-200)/250=20%

More information

Microsoft PowerPoint - CA_04 Chapter6 v ppt

Microsoft PowerPoint - CA_04 Chapter6 v ppt Chap. 6 Enhancing Performance with Pipelining 臺大電機系吳安宇教授 V1. 2007/04/20 臺大電機吳安宇教授 - 計算機結構 1 Outline 6.1 An Overview of Pipelining 6.2 A Pipelined Datapath 6.3 Pipelined Control 6.4 Data Hazards and Forwarding

More information

第五章 重叠、流水和现代处理器技术

第五章 重叠、流水和现代处理器技术 2006 5 l t 1 t 2 t 3 t 4 I: add r1,r2,r3 J: sub r4,r1,r5 : (Hazard) : (Hazard) Instr 1 Instr 2 ( ) Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Load Ifetch ALU DMem Instr 1 Ifetch ALU DMem

More information

<4D F736F F F696E74202D20B5DAC6DFD5C220D6B8C1EEC1F7CBAECFDF2E707074>

<4D F736F F F696E74202D20B5DAC6DFD5C220D6B8C1EEC1F7CBAECFDF2E707074> Ch7: Instruction Pipeline 指令流水线 第一讲流水线数据通路和控制逻辑 第二讲流水线冒险处理 第三讲高级流水线技术 Pipeline.2 第一讲流水线数据通路和控制主要内容 日常生活中的流水线处理例子 : 洗衣服 单周期处理器模型和流水线性能比较 什么样的指令集适合于流水线方式执行 如何设计流水线数据通路 以 MIPS 指令子集来说明 详细设计取指令部件 详细设计执行部件 分析每条指令在流水线中的执行过程,

More information

<4D F736F F F696E74202D20B5DAC1F9D5C220C0FBD3C3C1F7CBAECFDFCCE1B8DFD0D4C4DC2E707074>

<4D F736F F F696E74202D20B5DAC1F9D5C220C0FBD3C3C1F7CBAECFDFCCE1B8DFD0D4C4DC2E707074> Computer Organization and Design Ch6: Enhanceing Performance with Pipeline 利用流水线提高性能 第一讲流水线数据通路和控制逻辑 第二讲流水线冒险处理 第三讲高级流水线技术 第一讲流水线数据通路和控制主要内容 日常生活中的流水线处理例子 : 洗衣服 单周期处理器模型和流水线性能比较 什么样的指令集适合于流水线方式执行 如何设计流水线数据通路

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

Training

Training 计算机组织与系统结构 流水技术引论 Introduction to Pipelining ( 第六讲 ) 程旭 2014.11.26 MUX 0 1 MUX 0 1 Mux 0 1 32 ctr Clk busw Wr 32 32 busa 32 busb 5 5 5 Rw Ra Rb 32 32-bit isters Rs Rt Rt Rd Dst Extender 32 16 imm16 Src

More information

untitled

untitled CPU!! 00-11-8 Liping zhang, Tsinghua 1 : ADD(r1, r, r) CMPLEC(r, 5, r0) MUL(r1, r, r) SUB(r1, r, r5) ADD r, ( ) r CMP. CMP r.. t t + 1 t + t + t + t + 5 t + 6 IF( ) ADD CMP MUL SUB RF NOP ADD CMP MUL SUB

More information

Microsoft PowerPoint - chx09_org14_pipelining_1.ppt

Microsoft PowerPoint - chx09_org14_pipelining_1.ppt 计算机组织与系统结构 流水技术引论 Itroductio to Pipeliig ( 第十四讲 ) 程旭 29.5 rach Jump st 单周期处理器 busw Wr 5 5 Istructio Fetch Uit Rd imm6 Istr Rs 5 Rw Ra Rb -bit isters 6 Istructio op bus Exteder

More information

Chapter 6

Chapter 6 Chapter 4 (Part II) The Processor: Datapath and Control (Enhancing Performance with Pipelining) 陳瑞奇 (J.C. Chen) 亚洲大学资讯工程学系 Adapted from class notes by Prof. M.J. Irwin, PSU and Prof. D. Patterson, UCB

More information

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63>

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63> 第六章中央处理器 2. 简单回答下列问题 ( 参考答案略 ) ( 1) CPU 的基本组成和基本功能各是什么? ( 2) 取指令部件的功能是什么? ( 3) 控制器的功能是什么? ( 4) 为什么对存储器按异步方式进行读写时需要 WMFC 信号? 按同步方式访问存储器时, CPU 如何实现存储器读写? ( 5) 单周期处理器的 CPI 是多少? 时钟周期如何确定? 为什么单周期处理器的性能差? 元件在一个指令周期内能否被重复使用?

More information

[Group 9] Give an example of structural hazard ans 1. 假設下列指令是在只有單一記憶體的 datapath 中執行 lw $5, 100($2) add $2, $7, $4 add $4, $2, $5 sw $5, 100($2)

[Group 9] Give an example of structural hazard ans 1. 假設下列指令是在只有單一記憶體的 datapath 中執行 lw $5, 100($2) add $2, $7, $4 add $4, $2, $5 sw $5, 100($2) Computer Architecture Fall, 2017 Week 13 2017.12.04 [Group 11] 1. 請詳述為何在 MIPS 中不會發生 WAR 與 WAW 這兩種 Hazards ANS: Use simple, fixed designs WAR: 因為 Write 是第五個 Stage,Read 是第二個 Stage, 因此 Write 永遠在 Read 後面,

More information

¸ß¼¶¼ÆËã»úÌåϵ½á¹¹

¸ß¼¶¼ÆËã»úÌåϵ½á¹¹ 第三章 高级流水线与指令级并行 石教英 内容提要及与各节的关系 (1) 流水线技术就是指令重叠执行技术, 达到加快运算速度的目的 由于存在三种流水线竞争 : 结构竞争 数据竞争 控制竞争, 导致流水线性能降低, 不能运作在理想的重叠状态, 需要插入停顿周期, 从而使流水线性能降低 --3.1 流水线技术基础 内容提要及与各节的关系 (2) 指令之间可重叠执行性称为指令级并行性 (Instruction

More information

<4D F736F F D CFC4D7E9B3C9D4ADC0EDCAD4CCE22D41A3A8B4F0B0B8A3A92E646F63>

<4D F736F F D CFC4D7E9B3C9D4ADC0EDCAD4CCE22D41A3A8B4F0B0B8A3A92E646F63> 考试科目名称计算机组织与系统结构 (A-1 卷 ) 2007 2008 学年第 2 学期 教师 袁春风 / 窦万春 考试方式 : 闭卷 系 ( 专业 ) 计算机科学与技术 年级 2006 班级 学号 姓名 成绩 题号一二三四五六 分数 得分 一 填空题 ( 本大题共 15 小题, 每空 1 分, 共 20 分 ) 1. 二进制指令代码的符号化表示被称为 汇编 语言源程序 必须通过相应的翻译程序把它转

More information

<4D F736F F F696E74202D20B5DAC6DFD5C220D6B8C1EEC1F7CBAECFDF2E707074>

<4D F736F F F696E74202D20B5DAC6DFD5C220D6B8C1EEC1F7CBAECFDF2E707074> Ch7: nucion Piplin 指令流水线第一讲流水线数据通路和控制逻辑第二讲流水线冒险处理第三讲高级流水线技术 Piplin.2 第一讲流水线数据通路和控制 主要内容 日常生活中的流水线处理例子 : 洗衣服 单周期处理器模型和流水线性能比较 什么样的指令集适合于流水线方式执行 如何设计流水线数据通路 以 MPS 指令子集来说明 详细设计取指令部件 详细设计执行部件 分析每条指令在流水线中的执行过程,

More information

Microsoft PowerPoint - CA_02 Chapter5 Part-I_Single _V2.ppt

Microsoft PowerPoint - CA_02 Chapter5 Part-I_Single _V2.ppt Chapter5- The Processor: Datapath and Control (Single-cycle implementation) 臺大電機系吳安宇教授 V. 3/27/27 V2. 3/29/27 For 27 DSD Course 臺大電機吳安宇教授 - 計算機結構 Outline 5. Introduction 5.2 Logic Design Conventions 5.3

More information

单周期数据通路

单周期数据通路 计算机组织与系统结构 设计单周期数据通路的处理器 Designing a Single Cycle Datapath Microprocessor 第四讲 程旭 27..2 2 Processor Processor Control Enable? Read/Write Memory Datapath PC Registers Arithmetic & Logic Unit (ALU) Address

More information

Chapter 6

Chapter 6 第三次作业 : 第四章前半部习题 4. 考虑下列指令 : 指令 :AND Rd,Rs,Rt 说明 :Reg[Rd] = Reg[Rs] AND Reg[Rt] 4..(5%) 图 4.2 中的控制器为了上述指令所产生的控制讯号其值为何? 4..2(5%) 哪些资源 ( 区块 ) 会为该指令做出有用的功能? 4..3(5%) 哪些资源 ( 区块 ) 会产生并不被该指令用到的输出? 哪些资源 ( 区块

More information

1 CPU

1 CPU 2000 Tel 82316285 82317634 Mail liuxd@buaa.edu.cn 1 CPU 2 CPU 7 72 A B 85 15 3 1/2 M301 2~17 : 3/4 1/2 323 IBM PC 1. 2. 3. 1. 2. 3. 1.1 Hardware Software 1.2 M3 M2 M1 1.2 M3 M1 M2 M2 M1 M1 M1 1.2 M3 M1

More information

第七章 中断

第七章 中断 计算机组成原理 总结 图说 COD llxx@ustc.edu.cn 计算科学 (Computing) 计算机组成 :how computers work 硬盘 电源导线和电缆 软驱 内存 扩展槽 扩展卡 主板 微处理器 (CPU) 各种外设接口, 包括 : 键盘 鼠标 显示器 USB 声卡 网卡 并行口等 CPU 风扇支架 PCI 扩展槽 IDE 内存 CPU 硬条插盘接插槽槽口 华硕 P4S533-MX

More information

chx10_arch02_ilp.ppt [兼容模式]

chx10_arch02_ilp.ppt [兼容模式] 高等计算机系统结构 指令级并行处理 ( 第二讲 ) 程旭 2010 年 3 月 29 日 复习 : 三种数据冒险 对于执行如下类型的指令序列 : r k (r i ) op (r j ) 真数据相关 (True Data-dependence) r 3 (r 1 ) op (r 2 ) Read-after-Write r 5 (r 3 ) op (r 4 ) (RAW) hazard 反相关 (Anti-dependence)

More information

Chapter 6

Chapter 6 Chapter 4 (Part II) The Processor: Datapath and Control (Enhancing Performance with Pipelining) 陳瑞奇 (J.C. Chen) 亞洲大學資訊工程學系 Adapted from class notes by Prof. M.J. Irwin, PSU and Prof. D. Patterson, UCB

More information

计算机组织与系统结构

计算机组织与系统结构 高等计算机系统结构 指令级并行处理 ( 第二讲 ) 程旭 2012 年 3 月 5 日 复习 : 三种数据冒险 对于执行如下类型的指令序列 : r k (r i ) op (r j ) 真数据相关 (True Data-dependence) r 3 (r 1 ) op (r 2 ) r 5 (r 3 ) op (r 4 ) Read-after-Write (RAW) hazard 反相关 (Anti-dependence)

More information

lecture21

lecture21 Lecture 21: CPU - Datapath and Control 中央处理器 : 数据通路和控制器 singlepath2 单周期数据通路的设计 主要内容 CPU 的功能及其与计算机性能的关系 数据通路的位置 单周期数据通路的设计 数据通路的功能和实现 - 操作元件 ( 组合逻辑部件 ) - 状态 / 存储元件 ( 时序逻辑部件 ) 数据通路的定时 选择 MIPS 指令集的一个子集作为

More information

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378> 第一章第二章 Q2 1: 高序 : 最低位字节存储在字的最低位 ; 低序 : 最低位字节存储在字的最高位 ; Q2 2: 冯. 诺依曼结构 : 数据和指令都存储在同一存储器中 ; 哈佛结构 : 数据和程序存储在各自独立的存储器中 Q2 3: a) ARM 有 16 个通用寄存器,r0 r15, 其中 r15 还被用作程序计数器 b) CPSR 是程序状态寄存器, 包含了条件码标识 中断禁止位 当前处理器模式和其他状态

More information

L15 MIPS Assembly

L15 MIPS Assembly Lecture 19: MIPS Assembly Language 程序的机器级表示主要内容 MIPS 指令格式 R- 类型 / I- 类型 / J- 类型 MIPS 寄存器 长度 / 个数 / 功能分配 MIPS 操作数 寄存器操作数 / 存储器操作数 / 立即数 / 文本 / 位 MIPS 指令寻址方式 立即数寻址 / 寄存器寻址 / 相对寻址 / 伪直接寻址 / 偏移寻址 MIPS 指令类型

More information

Microsoft PowerPoint - chx08_arch02_ilp.ppt

Microsoft PowerPoint - chx08_arch02_ilp.ppt 高等计算机系统结构 指令级并行处理 ( 第二讲 ) 程旭 2008 年 10 月 13 日 复习 : 三种数据冒险 对于执行如下类型的指令序列 : r k (r i ) op (r j ) 真数据相关 (True Data-dependence) r 3 (r 1 ) op (r 2 ) Read-after-Write r 5 (r 3 ) op (r 4 ) (RAW) hazard 反相关 (Anti-dependence)

More information

Microsoft PowerPoint - chx09_org16_pipelining_3.ppt

Microsoft PowerPoint - chx09_org16_pipelining_3.ppt 计算机组织与系统结构 利用流水线改进性能 Enhancing Performance with Pipelining ( 第十六讲 ) 程旭 2009.6.4 上一讲总结 流水线向下传递控制信息, 就象向下传递数据一样 通过局部控制解决前递 / 暂停 意外事件会导致流水线停止 MIPS 指令系统体系结构中流水线是可见的 ( 延迟转移 延迟装入 ) 更深的流水线 更多的并行度可能获得出更高的性能 中断

More information

Pipelining Advanced

Pipelining Advanced 计算机组织与系统结构 利用流水线改进性能 Enhancing Performance with Pipelining ( 第八讲 ) 程旭 2014.12.1 上一讲总结 流水线向下传递控制信息, 就象向下传递数据一样 通过局部控制解决前递 / 暂停 意外事件会导致流水线停止 MIPS 指令系统体系结构中流水线是可见的 ( 延迟转移 延迟装入 ) 更深的流水线 更多的并行度可能获得出更高的性能 中断

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

L23

L23 Lecture 26: VLIW & Superscalar 高级流水线技术 高性能流水线 - 指令级并行 (ILP) 技术 超流水线 多发射流水线 - 静态多发射 (VLIW 处理器 + 编译器静态调度 ) - 动态多发射 ( 超标量处理器 + 动态流水线调度 ) 静态多发射 (VLIW- 超长指令字 ) 编译器静态推测完成 指令打包 和 冒险处理 MIPS 2- 发射流水线数据通路 循环展开指令调度

More information

L18 CPU III

L18 CPU III Lecture 23: CPU Design (Multiple Cycle) 多周期处理器的设计 主要内容 多周期数据通路实现思想 单周期数据通路和多周期数据通路的差别 通过简要分析 LOAD 指令分阶段执行过程, 以加深理解单周期和多周期数据通路的差别 多周期通路中存储单元的 竞争 问题及其解决思路 详细分析 7 条指令在多周期通路中的执行过程 在分析执行过程基础上, 分析每个周期内控制信号的取值,

More information

L15 MIPS Assembly

L15 MIPS Assembly Lecture 20: MIPS Assembly Language II Example: 过 程 调 用 int i; i 是 全 局 静 态 变 量 void set_array(int num) { array 数 组 是 局 部 变 量 int array[10]; for (i = 0; i < 10; i ++) { set_array 是 调 用 过 程 arrar[i] = compare

More information

计算机组织与系统结构

计算机组织与系统结构 高等计算机系统结构 指令级并行处理 ( 第三讲 ) 程旭 2014 年 3 月 31 日 三种数据相关 1. Data dependences (also called true data dependences) 2. name dependences 3. control dependences An instruction j is data dependent on instruction

More information

Microsoft PowerPoint ren-build-CPU [兼容模式]

Microsoft PowerPoint ren-build-CPU [兼容模式] 嵌入式系统设计与应用 如何设计一个处理器? 从 0 到 1 西安交通大学电信学院 任鹏举 如何设计一个处理器? 从 0 到 1 如何设计一个处理器? 如何扩展一个处理器的指令集? 是否可以从处理器的指令集反向设计出相应的处理器?From ISA to Micro-Architecture? 如何设计一个处理器? 从 0 到 1 Application Software programs 单时钟处理器

More information

MIPS 处理器的 SystemC 实现 学号 : 孙伟斌 B 前言 这篇文档讲述了如何使用 SystemC 来实现一个多周期的流水 MIPS 处理器 通过对 MIPS 处理器的五步进行描述, 本文详细阐述了作业中的 SystemC 实现如何来构建者五步流水中的每一

MIPS 处理器的 SystemC 实现 学号 : 孙伟斌 B 前言 这篇文档讲述了如何使用 SystemC 来实现一个多周期的流水 MIPS 处理器 通过对 MIPS 处理器的五步进行描述, 本文详细阐述了作业中的 SystemC 实现如何来构建者五步流水中的每一 MIPS 处理器的 SystemC 实现 学号 :1060379012 孙伟斌 B0603791 前言 这篇文档讲述了如何使用 SystemC 来实现一个多周期的流水 MIPS 处理器 通过对 MIPS 处理器的五步进行描述, 本文详细阐述了作业中的 SystemC 实现如何来构建者五步流水中的每一个细节 对于流水中的一些问题, 如 Hazard 等的处理, 本文中也在讲述流水实现时作了具体的解释

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

计算机体系结构

计算机体系结构 6.823 2002 180 22 6 : 6 Part A: ( 1 4) 20 Part B: ( 5 7) 16 Part C: ( 8 12) 24 Part D: ( 13 20) 24 Part E: ( 21 24) 31 Part F: ( 25 27) 16 Part G: ( 28 30) 12 Part H: ( 31 37) 31 : 180 Part A: 20 DLX 14

More information

Microsoft PowerPoint - notes3-Simple-filled12

Microsoft PowerPoint - notes3-Simple-filled12 Generic Computer Organization CSE 30321 Computer Architecture I Lecture Notes 3: A Simple Computer: Simple12 And Design at Register Transfer Level Stored Program Machine (vonneumann Model) Instructions

More information

没有幻灯片标题

没有幻灯片标题 高等计算机系统结构 现代指令级并行技术 ( 第四讲 ) 程旭 2012 年 3 月 26 日 流水线的性能 通过更加复杂的流水线和动态调度开发隐形 (imlicit) 指令级并行性 乱序执行执行, 同时保证 : 真数据相关 (RAW) 精确中断 通过寄存器换名, 消除 WAR 和 WAW 冒险 重排序缓冲器 (Reorder buffer) 保存尚未提交 (committing) 但已完成的结果,

More information

lecture13

lecture13 Lecture 13: Cache V 1 Cache 大 小 Block 大 小 和 缺 失 率 的 关 系 Cache 性 能 由 缺 失 率 确 定, 而 缺 失 率 与 Cache 大 小 Block 大 小 Cache 级 数 等 有 关 Cache 大 小 :Cache 越 大,Miss 率 越 低, 但 成 本 越 高! Block 大 小 :Block 大 小 与 Cache 大 小

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

Name__________________________________

Name__________________________________ 6.823 180 21 5 : 5 Part A: 1 5 10 Part B: 6 11 12 Part C: 12 14 12 Part D: 15 23 34 Part E: 24 26 18 Part F: 27 28 16 Part G: 29 32 25 Part H: 33 10 Part I: 34 38 28 Part H: 39 40 10 : 180 Part A 10 Cache

More information

没有幻灯片标题

没有幻灯片标题 高等计算机系统结构 Tomasulo 算法 ( 第四讲 ) 程旭 2004 年 3 月 8 日 上一讲小结 软件或硬件的指令级并行 (ILP) 循环级并行最容易判定 软件并行性取决于程序, 如果硬件不能支持就出现冒险 软件相关性 / 编译器复杂性决定编译中是否能展开循环 存储器相关是最难判定的 硬件开采 ILP 动态调度 (dynamic scheduling) 在编译时有些相关情况不能真正判定,

More information

先生別耍我

先生別耍我 先 生 別 耍 我. 夏 雪 3 目 錄 : 第 一 章 005 第 二 章 019 第 三 章 044 第 四 章 058 第 五 章 077 第 六 章 101 第 七 章 121 第 八 章 136 4 目 錄 第 九 章 151 第 十 章 172 尾 聲 196 關 於 夏 雪 197 先 生 別 耍 我. 夏 雪 5 第 一 章 姜 曦 在 照 片 裡 翻 閱 照 片 的 是 一 個

More information

计算机组织与系统结构

计算机组织与系统结构 高等计算机系统结构 指令级并行处理 ( 第二讲 ) 程旭 2016 年 3 月 14 日 三种指令相关 1. Data dependences (also called true data dependences) 2. name dependences 3. control dependences An instruction j is data dependent on instruction

More information

计算机组织与系统结构

计算机组织与系统结构 高等计算机系统结构 指令级并行处理 ( 第二讲 ) 程旭 2015 年 3 月 30 日 三种指令相关 1. Data dependences (also called true data dependences) 2. name dependences 3. control dependences An instruction j is data dependent on instruction

More information

计算机组织与系统结构

计算机组织与系统结构 高等计算机系统结构 指令级并行处理 ( 第二讲 ) 程旭 2017 年 3 月 13 日 三种指令相关 1. Data dependences (also called true data dependences) 2. name dependences 3. control dependences An instruction j is data dependent on instruction

More information

Microsoft PowerPoint - CHX05_arch04_tomasulo.ppt

Microsoft PowerPoint - CHX05_arch04_tomasulo.ppt 高等计算机系统结构 Tomasulo 算法 ( 第四讲 ) 程旭 2005 年 3 月 21 日 上一讲小结 软件或硬件的指令级并行 (ILP) 循环级并行最容易判定 软件并行性取决于程序, 如果硬件不能支持就出现冒险 软件相关性 / 编译器复杂性决定编译中是否能展开循环 存储器相关是最难判定的 硬件开采 ILP 在编译时有些相关情况不能真正判定 针对某一机器产生的代码可以在另一机器上有效运行 记分板的核心思想

More information

<4D F736F F F696E74202D DB5DABEC5BDB22DCEA2B4A6C0EDC6F7B5C4D3B2BCFEBDE1B9B9A3A8D2BBA3A92E >

<4D F736F F F696E74202D DB5DABEC5BDB22DCEA2B4A6C0EDC6F7B5C4D3B2BCFEBDE1B9B9A3A8D2BBA3A92E > 第九讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 微处理器的总体结构 二 高速缓存 三 流水线 四 超标量流水线 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 7 章微处理器的内部结构及外部功能特性 1 主要内容 一 微处理器的总体结构 二 高速缓存 三 流水线 四 超标量流水线 2 微处理器相关的若干关键设计 总线 : 提高微处理器 存储器和外设之间的传输效率

More information

7 Q&A 11 2

7 Q&A 11 2 PPCA2018: 带五级流 的 MIPS 模拟器 PPCA 助教组 2018.7 目录 1 概述 3 2 时间和要求 3 3 正确性 3 3.1 初始化..................................... 3 3.2 寄存器..................................... 3 3.2.1 通 寄存器..............................

More information

<4D F736F F D20D1A6CBABB0D9D0A1D7E95F3332CEBBC1F7CBAECFDF435055C9E8BCC65F2E646F63>

<4D F736F F D20D1A6CBABB0D9D0A1D7E95F3332CEBBC1F7CBAECFDF435055C9E8BCC65F2E646F63> MIPS32 处理器设计文档 组号 :30 组员及分工 : 薛双百 061221126: 组长, 整体框架设计, 两个流水段寄存器, 冒险检测单元, 乘法器 ( 基 2 booth 编码 +wallace 树 (4 2 压缩 &3 2 压缩 )+ 超前进位加法 ), 处理器顶层通路的搭建, 文档汇总 ; 并和张家军同学共同完成了调试工作 严磊 061221127: 两个流水段寄存器, 转发单元,ALU

More information

L7 Cache I

L7 Cache I Lecture 9: Cache I 高速缓冲存储器 (Cache) 1 高速缓冲存储器 (Cache) 什么是程序访问的局部化特性 具有 Cache 机制的 CPU 的基本访存过程 Cache 和主存之间的映射方式 直接映射 / 全相联映射 / 组相联映射 cache 容量和块大小的选择 Cache 替换算法 cache-friendly 的程序 Cache 的写策略 Write Back 和 Write

More information

L2 performance

L2 performance Lecture 3: Performance Evaluation 第 3 讲 : 计算机性能评价 第三讲计算机性能评价 制造成本 (manufacturing cost) 衡量计算机性能的基本指标 响应时间 (response time) - 执行时间 (execution Time) ) 等待时间 (latency) throughput ( 吞吐量 ) - 带宽 (bandwidth) 计算机性能测量

More information

ebook20-2

ebook20-2 2 1 / M A C R A M 3 2.1 1) 2) 3 ) C i s c o 2.1.1 M A C M A M A C F C S C a t a l y s t C A M content addressable memory C A M 2-1 A B C D A B B A 1 24 Cisco Catalyst A M A C 2-2 1 1 2 2 2-1 A 1 B WAC

More information

3.2 指令级并行概念与技术

3.2 指令级并行概念与技术 硬件投机及多发射 浙大计算机陈文智 chenwz@zju.edu.cn 2014 年 11 月 2014/11/9 1 3.7 Reducing Branch Costs with Dynamic Hardware Prediction(2.3) 1-bit Branch-Prediction Buffer 2-bit Branch-Prediction Buffer Correlating Branch

More information

RISC-V 相关技术文档 1 RV32I 基本整数指令集 1.1 基本整数子集的程序员模型有 31 个通用寄存器 x1~x31, 它们保存了整数数值 寄存器 x0 是硬件连线的常数 0 没有硬件连线的子程序返回地址连接寄存器, 但是在一个过程调用中, 标准软件调用约定使用寄存器 x1 来保存返回地

RISC-V 相关技术文档 1 RV32I 基本整数指令集 1.1 基本整数子集的程序员模型有 31 个通用寄存器 x1~x31, 它们保存了整数数值 寄存器 x0 是硬件连线的常数 0 没有硬件连线的子程序返回地址连接寄存器, 但是在一个过程调用中, 标准软件调用约定使用寄存器 x1 来保存返回地 Risc-v 开发 Risc-v 基础知识 北京飞利信科技股份有限公司 2018 年 5 月 RISC-V 相关技术文档 1 RV32I 基本整数指令集 1.1 基本整数子集的程序员模型有 31 个通用寄存器 x1~x31, 它们保存了整数数值 寄存器 x0 是硬件连线的常数 0 没有硬件连线的子程序返回地址连接寄存器, 但是在一个过程调用中, 标准软件调用约定使用寄存器 x1 来保存返回地址 对于

More information

穨2700使用手冊.doc

穨2700使用手冊.doc Keithley 2700 13 CH Avg Ratio continuity Offset Compensation Ohms 80 (differential) 6 (22 ) (Half-rack size) 1000V/3A isolation/input 50000 EEE-488 RS-232 Digital I/O Trigger Link ActiveX Start-up software

More information

微机原理(计算机原理与接口技术)

微机原理(计算机原理与接口技术) 微机原理 ( 计算机原理 ) 第 10 讲 MIPS 体系结构与编程 1 第 10 讲 MIPS 体系结构与编程 MIPS 体系结构概述 MIPS 指令集简介 MIPS 汇编语言程序设计 2 MIPS 体系结构概述 MIPS 诞生于 1980 年代, 是最早的 RISC 处理器之一, 也是目前销量最好的 RISC 处理器之一, 从游戏机到路由器, 再到 SGI 的超级计算机, 都可以看到 MIPS

More information

投影片 1

投影片 1 2 理 1 2-1 CPU 2-2 CPU 理 2-3 CPU 類 2 什 CPU CPU Central Processing Unit ( 理 ), 理 (Processor), CPU 料 ( 例 ) 邏 ( 例 ),, 若 了 CPU, 3 什 CPU CPU 了, 行, 利 CPU 力 來 行 4 什 CPU 5 2-2-1 CPU CPU 了 (CU, Control Unit) / 邏

More information

ebook105-12

ebook105-12 12 12.1 C P U T x X T y Y T x >T y Y P XY Y X P x = 1 / T x P y = 1 / T y ( 1 2-1 ) P y > P x ( 1 2-2 ) C P U = # 12.2 334 C P U 12-1 a I F I D E X E M E M W B C P U 12-1 b C P U C P U t i n s t t i n

More information

一个开放源码的嵌入式仿真环境 ― SkyEye

一个开放源码的嵌入式仿真环境 ― SkyEye SkyEye SkyEye http://hpclab.cs.tsinghua.edu.cn/~skyeye/ I hear and I forget, I see and I remember, I do and I understand. SkyEye SkyEye SkyEye SkyEye SkyEye 1. SkyEye PC pervasive computing PC I O PDA

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

Microsoft PowerPoint - 3章例题.ppt

Microsoft PowerPoint - 3章例题.ppt 例 设有一个采用地址直接映像方式的 Cache, 其存储容量为 8KB, 要求在每个存储块内存放 16B( 字节 ) 主存的存储容量是 512KB, 求 : 1) 该 Cache 地址机构是如何组成和具体分配的? 2) 主存的地址机构是如何组成和具体分配的? 3) 主存第 513 信息块存放在主存内的区号为多少? 将其调入 Cache 后被存放的对应信息块号为多少? 4) 在上一步 3) 的基础上,CPU

More information

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

Template

Template 计算机组成实验指导书 Pipelined RISC with Forwarding & Stalls 计算机组成实验指导书 SOME-COA-LAB v4 1 of 16 1. OVERVIEW 1.1 实验名称简单的类 MIPS 多周期流水化处理器实现 1.2 实验目的理解并实现 CPU 的 Pipeline, 以及 Data Hazard, Branch Hazard 的处理 1.3 实验范围本次实验将覆盖以下范围

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

Andes Technology PPT Temp

Andes Technology PPT Temp 晶心科技線上技術研討會 AndesCore 便捷的全 C 嵌入式编程 晶心科技市場及技術服務部毛礼杰軟件經理 WWW.ANDESTECH.COM 大纲 系统初始化介绍 异常和中断说明 全 C 语法例子说明 总结 2 CPU 相关特性 1: 中断向量表 系统初始化 (1) 2: 系统寄存器 通常需要用 assembly( 汇编 / 组合 ) 语言来操作 AndesCore 全 C 嵌入式编程 C 扩展语法

More information

542 33 1 20 20 6 435 15 311 48 1 4 3 2 0 8 18 200 4 1,888 305 62 2 2 3 61 42 1,346 47 390 40 12 2 2 6 41 8 7 3 3 1 18 301 1 19 24 14 3 3 12 335 110 1 1 1, 582 45 76 547 1 147 46 1,103 96 1 22 8 6,721 70

More information

(Microsoft Word - \300\351\251[\256\321\255\261\263\370\247i0413.doc)

(Microsoft Word - \300\351\251[\256\321\255\261\263\370\247i0413.doc) 黃 潮 再 現 ~ 燦 坤 3C 店 實 習 報 告 壹 研 究 動 機 元 義 因 為 爸 爸 是 燦 坤 的 會 員, 而 家 裡 又 有 很 多 電 子 產 品 大 多 數 是 在 燦 坤 購 買 的, 所 以 就 興 起 了 去 燦 坤 的 念 頭 最 近 我 家 附 近 開 了 一 間 燦 坤, 那 裡 的 商 品 又 多 又 便 宜, 而 且 那 裡 的 店 員 對 電 子 產 品 都

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

L10 Virtual Memory

L10 Virtual Memory Lecture 5: Virtual Memory II 简单分区 (Partitioning) 主存分配 : 操作系统 : 固定 用户区 : 分区 简单分区方案 : 使用长度不等的固定长分区 (fixed-size partition) 当一个进程调入主存时, 分配给它一个能容纳它的最小的分区 对于需 96K 的进程可分配 256K 的分区 简单分区方式的缺点 : 因为是固定长度的分区, 故可能会浪费主存空间

More information

计算机组成原理 课程设计报告

计算机组成原理  课程设计报告 2016 计算机组成原理 课程设计报告 题 目 5 段流水 CPU 设计 专 业 信息安全 班 级 IS1301 学 号 U201315120 姓 名 王梦鸽 电 话 13297915997 邮 件 584805739@qq.com 完成日期 2015-12-23 指导教师 谭志虎 计算机科学与技术学院 课程设计任务书 一 设计题目 基于 Logisim 软件仿真平台的 5 段流水 CPU 设计实现

More information

立 法 會 CB(2)2170/14-15(01) 號 文 件 關 愛 基 金 援 助 項 目 再 次 推 出 非 公 屋 非 綜 援 的 低 收 入 住 戶 一 次 過 生 活 津 貼 成 效 檢 討 報 告 背 景 關 愛 基 金 ( 基 金 ) 於 2015 年 1 月 2 日 起 再 次 推 出 非 公 屋 非 綜 援 的 低 收 入 住 戶 一 次 過 生 活 津 貼 項 目 ( 再 推

More information

二零零七年十月十五日會議

二零零七年十月十五日會議 二 零 零 七 年 十 月 十 五 日 會 議 討 論 文 件 立 法 會 CB(1)21/07-08(01) 號 文 件 立 法 會 公 務 員 及 資 助 機 構 員 工 事 務 委 員 會 公 務 員 事 務 局 的 政 策 措 施 目 的 二 零 零 七 至 零 八 年 施 政 報 告 和 施 政 綱 領 載 列 政 府 的 新 措 施 和 各 項 持 續 推 行 的 措 施 本 文 件 詳

More information

邏輯分析儀的概念與原理-展示版

邏輯分析儀的概念與原理-展示版 PC Base Standalone LA-100 Q&A - - - - - - - SCOPE - - LA - - ( Embedded ) ( Skew ) - Data In External CLK Internal CLK Display Buffer ASIC CPU Memory Trigger Level - - Clock BUS Timing State - ( Timing

More information

内 容 1 2 3 4 培 训 目 标 基 础 知 识 常 用 监 控 命 令 在 实 战 中 综 合 运 用 2

内 容 1 2 3 4 培 训 目 标 基 础 知 识 常 用 监 控 命 令 在 实 战 中 综 合 运 用 2 Linux 常 用 监 控 命 令 介 绍 基 础 应 用 组 梁 若 羽 2011-07-12 1 内 容 1 2 3 4 培 训 目 标 基 础 知 识 常 用 监 控 命 令 在 实 战 中 综 合 运 用 2 培 训 目 标 掌 握 常 用 监 控 命 令 的 用 途 和 启 用 方 法 熟 悉 各 个 关 键 输 出 参 数 的 真 实 含 义 了 解 Linux 操 作 系 统 的 一

More information

Microsoft Word - tp20141223cb4-270-3-c.doc

Microsoft Word - tp20141223cb4-270-3-c.doc CB(4)270/14-15(03) 二 零 一 四 年 十 二 月 二 十 三 日 會 議 討 論 文 件 立 法 會 交 通 事 務 委 員 會 建 議 在 運 輸 署 開 設 一 個 常 額 總 機 電 工 程 師 職 位 和 一 個 常 額 首 席 行 政 主 任 職 位 目 的 本 文 件 就 在 運 輸 署 由 二 零 一 五 年 四 月 一 日 起 開 設 兩 個 常 額 首 長 級

More information

P4VM800_BIOS_CN.p65

P4VM800_BIOS_CN.p65 1 Main H/W Monitor Boot Security Exit System Overview System Time System Date [ 17:00:09] [Fri 02/25/2005] BIOS Version : P4VM800 BIOS P1.00 Processor Type : Intel (R) Pentium (R) 4 CPU 2.40 GHz Processor

More information

2

2 1 2 Y J Q CLK CK K Q 3 4 5 6 7 峯峯 8 9 敍 10 11 12 13 VCC D1 R1 R2 To MCU RESET C1 14 15 EA 16 17 18 19 A18 A17 A16 A20 A19 ADDRS A2 A1 A0 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 E3 E2 E1 74LS138 MPWR MPRD Vcc WR RD CS

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

DELL

DELL 税 收 协 定 服 务 手 册 税 收 协 定 服 务 走 出 去 企 业 税 收 协 定 简 介 什 么 是 税 收 协 定 税 收 协 定 又 称 避 免 双 重 征 税 协 定, 是 两 个 或 两 个 以 上 主 权 国 家 ( 或 税 收 管 辖 区 ), 为 了 协 调 相 互 之 间 的 税 收 管 辖 关 系 和 处 理 有 关 税 务 问 题, 通 过 谈 判 缔 结 的 书 面

More information

证券代码: 股票简称:永鼎光缆 编号:

证券代码: 股票简称:永鼎光缆 编号: 证 券 代 码 : 600105 证 券 简 称 : 永 鼎 股 份 编 号 : 临 2015-020 江 苏 永 鼎 股 份 有 限 公 司 关 于 为 控 股 子 公 司 年 度 申 请 银 行 授 信 提 供 担 保 预 计 的 公 告 本 公 司 董 事 会 及 全 体 董 事 保 证 本 公 告 内 容 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 者 重 大 遗 漏, 并

More information

实施生成树

实施生成树 学习沉淀成长分享 Spanning-tree 红茶三杯 ( 朱 SIR) 微博 :http://t.sina.com/vinsoney Latest update: 2012-06-01 STP 的概念 冗余拓扑 Server/host X Router Y Segment 1 Switch A Switch B Segment 2 冗余拓扑能够解决单点故障问题 ; 冗余拓扑造成广播风暴, 多帧复用,

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

378高雄市都市計畫說明書

378高雄市都市計畫說明書 378 高 雄 市 都 市 計 畫 說 明 書 案 名 : 變 更 高 雄 市 楠 梓 區 高 楠 段 二 七 九 地 號 等 八 筆 農 業 區 土 地 為 批 發 市 場 用 地 擬 定 申 請 單 位 : 高 雄 市 政 府 計 畫 範 圍 : 如 圖 示 法 令 依 據 : 都 市 計 畫 法 第 二 十 七 條 第 一 項 第 四 款 一 背 景 說 明 : ( 一 ) 本 市 現 有 果

More information

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20%

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20% 38 11 2013 11 GeomaticsandInformationScienceofWuhanUniversity Vol.38No.11 Nov.2013 :1671-8860(2013)11-1339-05 :A GIS Key-value 1 1 1 1 (1 129 430079) : 设计了一种基于 Key-value 结构的缓存 KV-cache 旨在简化数据结构 高效管理缓存数据

More information

PowerPoint 簡報

PowerPoint 簡報 國 家 賠 償 法 概 述 主 講 人 : 宋 恭 良 104.10.12 2015.10.30 1 Q. 老 師 是 否 是 公 務 員? 是 否 適 用 國 賠? 法 務 部 95 年 9 月 14 日 法 律 字 第 0170449 號 函 : 國 家 賠 償 法 第 2 條 第 1 項 規 定 本 法 所 稱 公 務 員 者, 謂 依 法 令 從 事 於 公 務 之 員, 係 採 最 廣 義

More information

<4D6963726F736F667420576F7264202D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

<4D6963726F736F667420576F7264202D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63> ( 閱 讀 前 ) 練 習 一 動 動 腦, 猜 一 猜 小 朋 友, 現 在 我 們 要 一 起 來 閱 讀 一 本 很 有 趣 的 書, 書 名 是 是 蝸 牛 開 始 的!, 請 動 動 你 的 腦 袋, 想 像 自 己 是 作 者, 猜 猜 這 本 書 在 說 什 麼 樣 的 故 事 呢? 我 覺 得 這 個 故 事 可 能 的 角 色 有 我 覺 得 這 個 故 事 可 能 發 生 的 地

More information