Training

Similar documents
Microsoft PowerPoint - chx09_org14_pipelining_1.ppt

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

<4D F736F F F696E74202D20B5DAC1F9D5C220D7F7D2B5B2CEBFBCB4F0B0B8>

untitled

Microsoft PowerPoint - CA_04 Chapter6 v ppt

Chapter 6

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

Microsoft PowerPoint - CA_02 Chapter5 Part-I_Single _V2.ppt

<4D F736F F F696E74202D20B5DAC1F9D5C220C0FBD3C3C1F7CBAECFDFCCE1B8DFD0D4C4DC2E707074>

<4D F736F F F696E74202D20B5DAC6DFD5C220D6B8C1EEC1F7CBAECFDF2E707074>

计算机组织与系统结构

Microsoft PowerPoint - CA_03 Chapter5 Part-II_multi _V1.ppt

chx10_arch02_ilp.ppt [兼容模式]

1 CPU

一 大聖 起源與簡述: 1 本宮溯自清光貳年(西元一八二二年) 有位唐先賢黃迎 奉請 北極玄上帝金尊東渡來台 由烏石港上陸至四圍保埤口 後遷到 外澳石空中路嶺上 茅蓋神堂供人膜拜 化蒼民墾土農耕 後澤 被農信仰日深 為祈求石空 風調雨順 保佑黎民平安 先賢數 人等誠心合建永固廟堂 因高水長 所稱為(

L21

第七章 中断

Microsoft PowerPoint - chx09_org16_pipelining_3.ppt

单周期数据通路

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

Pipelining Advanced

L18 CPU III

Microsoft PowerPoint - chx08_arch02_ilp.ppt

Chapter 6

lecture21

[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)

1.加入党组织主要经过哪些程序?

Microsoft PowerPoint - notes3-Simple-filled12

Ps22Pdf

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

L15 MIPS Assembly

计算机组织与系统结构

<4D F736F F F696E74202D DB5DABEC5BDB22DCEA2B4A6C0EDC6F7B5C4D3B2BCFEBDE1B9B9A3A8D2BBA3A92E >

Training

ebook105-12

CTZ-B8121

03

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

材 料 目 录 1. 党 员 发 展 及 转 正 流 程 图 2. 申 请 入 党 人 员 基 本 信 息 及 培 养 记 录 表 3. 思 想 汇 报 传 阅 及 意 见 反 馈 表 4. 入 党 积 极 分 子 培 养 考 察 表 5. 政 治 审 查 函 调 信 模 板 6. 政 治 审 查

没有幻灯片标题

untitled

Tel:

PowerPoint 演示文稿

第5章:汇编语言程序设计

2005.book

寻医问药指南(十七)

计组复习提纲

土 木 与 交 通 学 院 发 展 学 生 党 员 的 选 拨 条 件 与 推 荐 细 则 为 进 一 步 规 范 我 院 学 生 党 建 工 作, 加 强 和 完 善 我 院 对 学 生 党 员 各 个 阶 段 人 员 的 选 拔 和 培 养 工 作, 提 高 我 院 发 展 学 生 党 员 质


需 求 拉 动 显 著 利 润 分 配 或 向 上 游 倾 斜 二 季 度 伊 始, 从 小 盘 题 材 向 大 盘 蓝 筹 的 风 格 转 换, 似 乎 刚 刚 开 始 就 又 戛 然 而 止 我 们 认 为, 虽 然 没 有 充 分 证 据 表 明 整 体 经 济 持 续 过 热, 但 局 部

L23

亮麗水顏



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

至 尊 法 王 蒋 阳 龙 朵 加 参 尊 者 上 师 瑜 伽 皈 依 境

(给多有拉姆)佛子行三十七颂1——7

《佛子行三十七颂》讲记1

378高雄市都市計畫說明書

因 味 V 取 性 又 鸟 U 且 最 大 罗 海 惜 梅 理 春 并 贵 K a t h l ee n S c h w e r d t n er M f l e z S e b a s t i a n C A Fe rs e T 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应

<4D F736F F D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

PowerPoint 簡報

ex

Microsoft PowerPoint - chx09_org04_isa.ppt

IP505SM_manual_cn.doc

untitled

计算机组织与系统结构

计算机组织与系统结构

PCM-3386用户手册.doc

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

L15 MIPS Assembly

<4D F736F F D CFC4D7E9B3C9D4ADC0EDCAD4CCE22D41A3A8B4F0B0B8A3A92E646F63>

计算机组织与系统结构

教 學 活 動 設 計

untitled

PROFIBUS3.doc

DELL

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

安徽电子工程学校

Microsoft Word - 2.doc

多 种 途 径, 让 学 生 通 过 实 践 性 教 学, 事 半 功 倍 地 接 受 理 解 老 师 讲 授 的 知 识, 教 学 过 程 跟 踪 国 外 金 融 市 场 动 态 与 国 内 外 著 名 专 家 学 者 的 交 流 与 区 域 金 融 机 构 的 交 流, 形 成 探 究 式 教

标题

Microsoft PowerPoint - 《??省企?集体合同?例》解?(?莞).ppt [Compatibility Mode]

ARM JTAG实时仿真器安装使用指南

Microsoft PowerPoint - 第9讲-08.ppt [兼容模式]

pdf

2

Microsoft Word (医院论证会 讨论后修改稿) 昆明医科大学 四年制 康复治疗学专业 人才培养方案 (敖修).doc

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

目 录 专 稿 季 烨 文 革 之 初 北 京 师 大 二 附 中 的 红 色 暴 力 姜 培 良 之 死 与 仇 恨 教 育 评 论 唐 燕 关 于 北 京 女 十 中 教 师 孙 迪 之 死 给 王 友 琴 纠 错 校 史 王 逸 伦 编 辑 合 肥 市 第 六 中 学 校 史 关 于 文 革


个 小 小 的 乡 下 人 木 匠 的 儿 子, 竟 然 有 这 么 大 的 力 量 其 实 就 是 这 点, 祂 活 出 来 的 那 种 爱, 是 世 界 上 没 有 的 祂 活 出 来 的 爱 是 世 界 上 的 人 都 需 要 的, 但 却 是 人 人 在 这 个 世 界 上 都 得 不 到

2013年度西藏自治区教育厅

實用文格式大全.doc

薛 秦 高 继 宁 宋 明 锁 文 洪 梁 瑞 敏 贾 跃 进 内 蒙 古 自 治 区 (3 人 ) 琪 格 其 图 米 子 良 赵 震 生 辽 宁 省 (8 人 ) 田 素 琴 白 凤 鸣 肖 瑞 崇 黄 恩 申 白 长 川 杨 世 勇 李 敬 林 王 秀 云 吉 林 省 (5 人 ) 赵 继 福

IP-Routing-05.pdf

Huawei Technologies Co

Transcription:

计算机组织与系统结构 流水技术引论 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 ExtOp to Clk Data In WrEn 32 Adr Data ory 32 Wr Zero Instruction Fetch Unit Clk Instruction<31:0> Jump Branch <21:25> <16:20> <11:15> <0:15> Imm16 Rd Main Control op Control func op 3 Dst Src : <5:0> <31:26> Instr<15:0> Zero 3 单周期处理器

该单周期处理器的缺陷 时钟周期时间长 : 对于装入指令, 周期时间必须足够长 : PC 的 Clock -to-q + 指令存储器访问时间 + 寄存器堆访问时间 + 延迟 ( 地址计算 ) + 数据存储器访问时间 + 寄存器对建立时间 + 时钟纽斜 对于所有其他指令, 周期时间都比所需的要长很多!

多周期实现概述 单周期处理器的问题根源 : 对于最慢的指令, 周期时间必须足够长 解决方案 : 将指令处理分为更小的步骤 每个周期执行一步 ( 而不是整个指令 ) - 周期时间 : 执行最长步所需的时间 - 使所有的步骤尽量具有相同的长度 这个多周期处理器的本质所在 多周期处理器的优点 : 周期时间非常短 不同的指令需要不同的周期数来完成 - 装入需要 5 个周期 - 跳转仅仅需要 3 个周期 允许每条指令多次使用同一个功能部件

多周期处理器 在每条指令的执行过程中, 可以多次使用同一功能部件 PCWr PC 32 32 32 IorD 0 Mux 1 32 PCWrCond PCSrc BrWr Zero Wr IRWr Dst Wr SelA Target 32 32 32 RAdr Ideal ory WrAdr Din Dout 32 Instruction 32 Rs Rt Rt Rd 1 0 Mux 1 5 5 Mux 0 Ra Rb busa File Rw busw busb 32 32 << 2 4 0 Mux 1 0 1 2 3 0 32 32 Mux 1 Control Zero 32 Out Imm 16 ExtOp Extend 32 to SelB Op

微程序设计 精心设计的状态图易于用微序列器实现 简单地递增和转移场位 数据通路控制场位 控制设计可以简化为微程序设计 微程序设计是一个基本概念 通过建造一个非常简单地处理器, 并对指令进行解释执行, 来实现指令系统 特别适用于非常复杂的指令, 以及寄存器传输比较少的情况

微程序设计对 RISC 产生的灵感 如果简单指令能够以很高的时钟频率执行 如果人们有能力编写产生微指令的编译器 如果绝大多数程序仅仅使用简单指令和简单的寻址方式 如果微码保存在 RAM 中, 而非 ROM 中, 那么就易于排错 如果用于控制存储器的同一存储器还可被用为宏指令的 cache 那么, 为什么不用微程序和可直接产生机器最低级语言的编译器来跨越指令解释器呢?

意外事件和中断 意外处理是控制部分的难点 需要找到可以保存 PC 并激活操作系统功能的方便地方来放置检测意外事件 转移到状态或微指令 当以后我们学习支持存储访问出现页面失效的流水化 CPU 时, 由于指令不能完成, 并且恰好要在产生意外事件的指令处重启程序, 这使得控制的设计难上加难!

对控制描述进行修改 IR <= MEM[PC] PC <= PC + 4 未定义指令 A <= R[rs] B <= R[rt] other EPC <= PC - 4 PC <= exp_addr cause <= 10 (RI) R-type S <= A fun B ORi S <= A op ZX LW S <= A + SX SW S <= A + SX BEQ S <= A - B 0010 ~Equal overflow M <= MEM[S] MEM[S] <= B Equal PC <= PC + SX 00 0011 R[rd] <= S R[rt] <= S R[rt] <= M EPC <= PC - 4 PC <= exp_addr cause <= 12 (Ovf) 来自数据通路的其他条件

教学目标 : 已经掌握的内容 计算机的五个基本部件 处理器 控制 存储器 输入 数据通路 输出 本讲主题 : 流水技术

流水技术的思想非常自然! 洗衣房 张三 李四 王五 赵六每人有一包衣服需要洗涤 烘干 熨整 A B C D 洗衣机需要 30 分钟 烘干机需要 30 分钟 熨斗需要 30 分钟 洗衣工需要 30 分钟将衣物放到抽屉里

串行洗衣店 6 PM 7 8 9 10 11 12 1 2 AM 任务次序 A B C D 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 工作时间 串行洗衣店需要 8 个小时完成 4 个工作量 如果他们了解流水技术, 那么需要多长时间完成上述工作呢?

流水化的洗衣店 : 尽可能早地开始工作 12 2 AM 6 PM 7 8 9 10 11 1 任务次序 A B C 30 30 30 30 30 30 30 工作时间 D 流水化洗衣店需要 3.5 个小时完成 4 个工作量

任务顺序 流水技术性质 6 PM 7 8 9 时间 30 30 30 30 30 30 30 A B C D 流水技术无助于减少单个任务的处理延迟 (latency), 但有助于提高整体工作负载的吞吐率 多个不同任务同时操作, 使用不同资源 潜在加速比 = 流水线级数 流水线的速率受限于最慢的流水段 流水段的执行时间如果不均衡, 那么加速比就会降低 开始填充流水线的时间和最后排放流水线的时间降低加速比 相关将导致流水线暂停

装入操作的五级 Ifetch: 取指 从指令存储器中取出指令 /Dec: 取操作数和译码 取寄存器和指令译码 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Exec: 执行 计算存储器的地址 Load Ifetch /Dec Exec Wr : 存储器访问 从数据存储器中读取数据 Wr: 写回 将数据写回到寄存器堆

指令执行次序 指令执行次序 流水技术 通过增加指令吞吐率来改进性能 Lw $1, 100($0) Lw $2, 200($0) Lw $3, 300($0) Lw $1, 100($0) Lw $2, 200($0) Lw $3, 300($0) TIME TIME 2 4 6 8 10 12 14 16 18 取指 access 取指 2ns 8ns 2 4 6 8 10 12 14 16 18 取指 2ns 取指 2ns access 2ns 取指 取指 access 2ns access 2ns 8ns access 取指 8ns 流水线加速比等于流水线的级数? 2ns

基本思路 Mux 取指译码 / 取操作数执行存储器访问回写 1 0 +4 Shift add result Ra left 2 P C Address Instruciton Instruction ory Rb busa File Rw busw busb Sign Extend 0 Mux 1 Zero result Address Read Data Data ory Wr Data 1 Mux 0 将数据通路实际划分成流水段, 需要增加什么?

流水线的图形化表示 执行某段代码需要多少周期? 在某一周期, 正在做什么? 该表示有助于加强对数据通路的理解

常规流水化执行的表示 时间 IFetch Dcd Exec WB IFetch Dcd Exec WB IFetch Dcd Exec WB IFetch Dcd Exec WB 程序流 IFetch Dcd Exec WB IFetch Dcd Exec WB

单周期 多周期与流水线 Clk 单周期实现 : Cycle 1 Cycle 2 Load Store Waste Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10 Clk 多周期实现 : Load Store Ifetch Exec Wr Ifetch Exec R-type Ifetch 流水线实现 : Load Ifetch Exec Wr Store Ifetch Exec Wr R-type Ifetch Exec Wr

为什么需要流水线? 假设我们需要执行 100 条指令 单周期机器 45 ns/cycle x 1 CPI x 100 inst = 4500 ns 多周期机器 10 ns/cycle x 4.6 CPI (due to inst mix) x 100 inst = 4600 ns 理想的流水化机器 10 ns/cycle x (1 CPI x 100 inst + 4 cycle drain) = 1040 ns

为什么需要流水线? 因为需要提高资源利用率 时间 ( 时钟周期 ) Inst 0 Im Dm 指令执行次序 Inst 1 Inst 2 Inst 3 Im Im Im Dm Dm Dm Inst 4 Im Dm

流水技术会产生哪些问题? 流水线冒险 (Pipeline Hazards) 结构冒险 (structural hazards): 试图同时以两种不同的方式使用同一资源 - 例如, 组合式洗衣机 / 烘干机可能产生结构冒险或者熨整工工作时偷看电视 数据冒险 (data hazards): 在产生数据之前, 就试图使用它们 - 例如, 一包衣物在洗衣机中, 另一包衣物在干衣机中, 那么就不能对这些衣物进行熨整 - 流水线中的一条指令等待使用上一条指令的结果 控制冒险 (control hazards): 在判定转移条件之前, 就试图决策转移方向 - 例如, 在洗一件非常脏的衣物之前, 需要判定加多少洗衣粉 ; - 转移指令

流水技术会产生哪些问题 ( 续 )? 等待总是可以解决冒险问题 流水线控制必须检测冒险 采取必要措施 ( 或延迟等待 ) 来解决冒险

单存储器是一种结构冒险 时间 ( 时钟周期 ) 指 Load 令 Instr 1 次 序 Instr 2 Instr 3 Instr 4 此例中, 检测非常容易! 读 写

结构冒险限制性能 示例 : 如果每条指令平均访问 1.3 次存储器, 而每个周期只能完成一次存储器访问, 那么 平均 CPI 1.3 否则, 资源的利用率 > 100%

解决方案一 : 暂停解决单存储器结构冒险 时间 ( 时钟周期 ) 指 Load 令 Instr 1 次 序 Instr 2 Instr 3(stall) bubble Instr 4 读 写

解决方案二 : 资源复置解决存储器结构冒险 分离指令 Cache (Im) 和数据 Cache (Dm) 时间 ( 时钟周期 ) 指 Load IM DM 令 Instr 1 IM DM 次 序 Instr 2 IM DM Instr 3 IM DM Instr 4 IM DM 读 写

控制冒险的解决策略 暂停 (Stall): 等待直到决策明朗 通过增设硬件在读取寄存器的周期就对转移方向进行判定, 从而可以在第二流水段完成转移方向的判定 时间 ( 时钟周期 ) 指 Add 令 Beq 次 序 Load 影响 : 每条转移指令需要两个时钟周期完成 => 速度慢

控制冒险的解决策略 预测 : 猜测某一转移方向, 如果猜测错误, 就用备份恢复 猜测转移不发生 时间 ( 时钟周期 ) 指 Add 令 Beq 次 序 Load 效果 : 如果猜测正确, 每条指令一个时钟周期完成, 如果猜错每条转移指令两个周期 ( 正确率 50%) 较复杂的硬件预测 : 一条指令的历史 (( 正确率 90%)

控制冒险的解决策略 重新定义转移指令的行为 延迟转移 : 转移行为在下一条指令之后发生 时间 ( 时钟周期 ) 指 Add 令 Beq 次 序 Misc Load 影响 : 如果能够将有效指令调度到延迟槽中, 每条转移指令的完成将不占用时钟周期 ( 50% 的可能 )

关于 r1 的数据冒险 立即向后相关就可能出现冒险 时间 ( 时钟周期 ) IF ID/RF EX MEM WB add r1,r2,r3 IM DM 指 sub r4,r1,r3 IM DM 令 次 and r6,r1,r7 IM DM 序 or r8,r1,r9 IM DM xor r10,r1,r11

数据冒险解决策略 从某流水段向其他流水段前递 (forward) 结果 时间 ( 时钟周期 ) IF ID/RF EX MEM WB add r1,r2,r3 IM DM 指 sub r4,r1,r3 IM DM 令 次 and r6,r1,r7 IM DM 序 or r8,r1,r9 IM DM xor r10,r1,r11 如果适当定义读 / 写次序, 就可能正常工作

前递或旁路 (forward or bypass): 装入指令 立即向后相关就可能出现冒险 时间 ( 时钟周期 ) IF ID/RF EX MEM WB 指 令 lw r1,0(r2) IM Dm 次 序 sub r4,r1,r3 IM DM 不能通过前递技术解决 必须延迟 / 暂停与装入指令相关的指令

设计一个流水化的处理器 回顾我们设计的数据通路和控制图 将资源和状态联系起来 保证处理流程没有冲突, 或考虑出解决方案 在适当的流水段发出正确的控制信号

教科书上的流水化的数据通路

多周期数据通路中介绍的基本流水化的处理器 Next PC PC Instruction Fetch IR File. Ctrl IRex Exec Ex Ctrl IRmem Access Ctrl Data IRwb. File WB Ctrl Equal 如果每周期, 开始一条新指令的处理, 会发生什么情况? Valid A S B M

控制和数据通路 Next PC PC Instruction ory IR File Exec Equal Access Data. File Equal IR [PC], PC PC+4; A R[rs]; B R[rt] S A + B S A or ZX S A + SX M [S] S A + SX [S] B If cond PC PC+SX; R[rd] S; R[rt] S R[rd] M A S B D M

流水化装入指令 Clock Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 1st lw Ifetch /Dec Exec Wr 2nd lw Ifetch /Dec Exec Wr 3rd lw Ifetch /Dec Exec Wr 流水线数据通路中的五个独立功能部件是 : 取指段 (Ifetch) 的指令存储器 寄存器 / 译码段 (/Dec ) 的寄存器堆的读端口 (busa 和 busb) 执行段 (Exec) 的 存储器段 () 段的数据存储器 回写段 (Wr) 的寄存器堆的写端口 (busw)

R 型指令的四段 Cycle 1 Cycle 2 Cycle 3 Cycle 4 R-type Ifetch /Dec Exec Wr Ifetch: 取指 从指令存储器中读取指令 /Dec: 取寄存器和指令译码 Exec: 对两个寄存器操作数执行 操作 Wr: 将 的输出回写到寄存器堆

流水化 R 型指令和装入指令 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Clock R-type Ifetch /Dec Exec Wr 冒险! 出现问题! R-type Ifetch /Dec Exec Wr Load Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr 产生了流水线冲突或者结构冒险 : 两条指令都试图同时回写寄存器堆! 寄存器堆只有一个写入端口

重要发现 每个功能部件只能被每条指令使用一次 每个功能部件必须被所有指令在相同的流水段使用 : 装入指令在它的第五级使用寄存器堆的写端口 Load Ifetch /Dec Exec Wr R 型指令在它的第四级使用寄存器堆的写端口 R-type Ifetch /Dec Exec Wr 有两种方法解决流水线冒险

第一种解决方案 : 在流水线中插入空泡 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Clock Ifetch /Dec Exec Wr Load Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr R-type bubble Ifetch /Dec Exec Wr Ifetch /Dec Exec 在流水线中插入空泡从而避免了在同一周期出现两次写入操作 控制逻辑变得更加复杂 失去了取指和发送的机会 在第六周期没有任何指令启动!

第二种解决方案 : 将 R 型指令的回写延迟一个周期 将 R 型指令的写寄存器操作延迟一个周期 : 现在,R 型指令也在第五段才使用寄存器堆的写端口 存储器段是一个空段 : 无所事事 1 2 3 4 5 R-type Ifetch /Dec Exec Wr Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Clock R-type Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr Load Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr R-type Ifetch /Dec Exec Wr

流水化的数据通路 Clk Ifetch /Dec Exec Wr Wr ExtOp Op Branch 1 PC 0 A IUnit I PC+4 IF/ID ister PC+4 Imm16 Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex ister 0 1 PC+4 Imm16 busa busb Exec Unit Ex/ ister Zero Data RA Do WA Di /Wr ister 1 Mux 0 Dst Src Wr to

取指段 Location 10: lw $1, 0x100($2) $1 [($2) + 0x100] Clk Ifetch /Dec Exec Wr Wr ExtOp Op Branch 1 PC 0 A IUnit I PC+4 IF/ID: lw $1, 100 ($2) PC+4 Imm16 Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex ister 0 1 PC+4 Imm16 busa busb Exec Unit Ex/ ister Zero Data RA Do WA Di /Wr ister 1 Mux 0 Dst Src Wr to

指令部件探秘 Location 10: lw $1, 0x100($2) Clk 注意这里! Ifetch /Dec 1 0 +4 PC = 14 10 Address Instruction ory Instruction Adder IF/ID: lw $1, 100 ($2)

译码 / 寄存器访问段 Location 10: lw $1, 0x100($2) $1 [($2) + 0x100] Clk Ifetch /Dec Exec Wr Wr ExtOp Op Branch 1 PC 0 A IUnit I PC+4 IF/ID ister PC+4 Imm16 Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex:. 2 & 0x100 0 1 PC+4 Imm16 busa busb Exec Unit Ex/ ister Zero Data RA Do WA Di /Wr ister 1 Mux 0 Dst Src Wr to

装入指令的地址计算段 Location 10: lw $1, 0x100($2) $1 [($2) + 0x100] Clk Ifetch /Dec Exec Wr Op=Add Wr ExtOp Branch 1 PC 0 A IUnit I PC+4 IF/ID ister PC+4 Imm16 Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex ister 0 1 PC+4 Imm16 busa busb Exec Unit Ex/ ister Zero Data RA Do WA Di /Wr ister 1 Mux 0 Dst=0 Src=1 Wr to

执行部件探秘 Clk Exec ID/Ex ister PC+4 busa busb imm16 16 32 32 32 Extender << 2 32 0 Mux 1 ADD Target 32 3 Control Zero out 32 ctr Ex/: Load 抯 ory Address ExtOp=1 Src=1 3 Op=Add

装入指令的存储器访问段 Location 10: lw $1, 0x100($2) $1 [($2) + 0x100] Clk Ifetch /Dec Exec Wr Wr ExtOp Op Branch=0 1 PC 0 A IUnit I PC+4 IF/ID ister PC+4 Imm16 Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex ister 0 1 PC+4 Imm16 busa busb Exec Unit Ex/ ister Zero Data RA Do WA Di /Wr: Load s Data 1 Mux 0 Dst Src Wr=0 to

装入指令的回写段 Location 10: lw $1, 0x100($2) $1 [($2) + 0x100] Clk Ifetch /Dec Exec Wr Wr=1 ExtOp Op Branch 1 PC 0 A IUnit I PC+4 IF/ID ister PC+4 Imm16 Rs Ra Rb Rt RFile Rt Rw Di Rd ID/Ex ister 0 1 PC+4 Imm16 busa busb Exec Unit Ex/ ister Zero Data RA Do WA Di /Wr ister 1 Mux 0 Dst Src Wr to=1

Access Data Next PC PC Instruction ory IR Exec File. File Equal Equal 修改控制和数据通路 IR [PC], PC PC+4; A R[rs]; B R[rt] S A + B S A or ZX S A + SX S A + SX If cond PC PC+SX; M S M S M [S] [S] B R[rd] M; R[rt] M R[rd] M A S M B D

存储指令的四段 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Store Ifetch /Dec Exec Wr Ifetch: 取指 从指令存储器中读取指令 /Dec: 取寄存器和指令译码 Exec: 计算存储访问的地址 : 将数据写入到数据存储器

Beq 指令的三段 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Store Ifetch /Dec Exec Wr Ifetch: 取指 从指令存储器中读取指令 /Dec: 取寄存器和指令译码 Exec: 比较两个寄存器操作数 择取正确的转移目标地址 锁存到 PC

Access Data Next PC PC Instruction ory IR Exec File. File Equal Equal 控制图 IR [PC], PC PC+4; A R[rs]; B R[rt] S A + B S A or ZX S A + SX S A + SX If cond PC PC+SX; M S M S M [S] [S] B R[rd] M; R[rt] M R[rd] M A S M B D

Next PC PC Access Data File Exec. File Inst. Decode 数据通路 + 数据固定控制 IR fun rt rs op rs rt v rw wb me ex im v rw wb me Ctrl v rw wb WB Ctrl A S M B D

指令流水示例 10 lw r1, r2(35) 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15 地址以八进制表示

PC Next PC 10 Access Data File Exec. File Inst. Decode 开始 : 从地址 10 取指 n n n n IR rs rt im Ctrl WB Ctrl A S M B 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 14 Access Data File Exec. File Inst. lw r1, r2(35) Decode Fetch14 并 Decode10 n n n IR 2 rt im Ctrl WB Ctrl A S M B 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 20 Access Data File Exec. File Inst. addi r2, r2, 3 Decode lw r1 Fetch20 并 Decode 14 并 Exec10 n n IR 2 rt 35 Ctrl WB Ctrl r2 S M B 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC Access Data File Exec r2+35. File Inst. sub r3, r4, r5 Decode addi r2 Fetch24 并 Decode20 并 Exec14 并 10 n IR 4 5 3 r2 B 24 lw r1 D Ctrl M WB Ctrl 10 lw r1, r2(35) 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 30 Access Data File Exec R2+3 M[r2+35]. File Inst. beq r6, r7 100 Decode sub r3 addi r2 lw r1 Fetch30 并 Decode24 并 Exec20 并 14 并 WB10 IR 6 7 Ctrl WB Ctrl r4 r5 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 34 Access Data File Exec r4-r5 r2+3. File 100 r1=m[r2+35] Inst. ori r8, r9 17 Decode beq 100 sub r3 addi r2 Fetch34 并 Decode30 并 Exec24 并 20 并 WB14 IR 9 xx Ctrl WB Ctrl r6 r7 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 100 Access Data File Exec R4-r5. File 17 Inst. add r10, r11, r12 Decode ori r8 sub r3 Fetch100 并 Decode34 并 Exec30 并 24 并 WB20 IR 11 12 r9 XXX beq 100 Ctrl WB Ctrl r1=m[r2+35] r2 = r2+3 X 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 104 Access Data File Exec r9 17 xxx. File xx Inst. and r13, r14, r15 Decode add r10 ori r8 beq 100 Fetch104 并 Decode100 并 Exec34 并 30 并 WB24 IR 14 15 r11 Ctrl WB Ctrl r1=m[r2+35] r2 = r2+3 r3 = r4-r5 r12 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15

PC Next PC 110 Access Data File Exec R11+r12 r9 17. File xx Inst. Decode and r13 add r10 ori r8 Fetch110 并 Decode104 并 Exec100 并 34 并 WB30 n IR Ctrl WB Ctrl r1=m[r2+35] r2 = r2+3 r14 r3 = r4-r5 r15 10 lw r1, r2(35) D 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 Squash the extra instruction in the branch shadow! 100 and r13, r14, 15

PC Next PC 114 Access Data File Exec r14 & R15 R11+r12. File Inst. Decode and r13 add r10 Fetch114 并 Dcd110 并 Exec104 并 100 并 WB34 IR Ctrl n WB Ctrl NO WB NO Ovflow r1=m[r2+35] r2 = r2+3 r3 = r4-r5 r8 = r9 17 D 10 lw r1, r2(35) 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 Squash the extra instruction in the branch shadow! 100 and r13, r14, 15

总结 哪些策略使得流水容易实现? 所有的指令长度相同 只有少量的指令格式 Ld/St 结构 哪些方面使得流水线难以实现? 结构冒险 : 假设我们只有一个存储器 控制冒险 : 需要考虑转移指令 数据冒险 : 一条指令依赖于上一条指令的结果

总结 我们将建造一条简单的流水线, 并考虑上述因素 我们将讨论现代微处理器, 并分析它的真正难点 : 意外事件处理 利用乱序执行等技术改进性能