Microsoft PowerPoint - chx09_org14_pipelining_1.ppt

Similar documents
Training

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

<4D F736F F F696E74202D20B5DAC1F9D5C220D7F7D2B5B2CEBFBCB4F0B0B8>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

计算机组织与系统结构

chx10_arch02_ilp.ppt [兼容模式]

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63>

<4D F736F F D20AD70BAE2BEF7B2D5C2B4BB50B5B2BA632D3936B8D5C344B8D4B8D12DB2C4A440A6B8B0C9BB7EB8EAAEC62D2D2D312E646F63>

Microsoft PowerPoint - chx09_org16_pipelining_3.ppt

untitled

Microsoft PowerPoint - chx08_arch02_ilp.ppt

L21

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

Pipelining Advanced

第七章 中断

<4D F736F F F696E74202D20B5DAC1F9D5C220C0FBD3C3C1F7CBAECFDFCCE1B8DFD0D4C4DC2E707074>

Ps22Pdf

单周期数据通路

<4D F736F F F696E74202D20B5DAC6DFD5C220D6B8C1EEC1F7CBAECFDF2E707074>

Microsoft Word - 第2章 ARM体系结构.doc

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

Microsoft PowerPoint - CA_04 Chapter6 v ppt

PowerPoint 演示文稿

Microsoft PowerPoint - CA_02 Chapter5 Part-I_Single _V2.ppt


Microsoft PowerPoint - CA_03 Chapter5 Part-II_multi _V1.ppt

lecture21

L15 MIPS Assembly

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

Microsoft Word - 武術-定稿.doc

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

<4D F736F F F696E74202D DB5DABEC5BDB22DCEA2B4A6C0EDC6F7B5C4D3B2BCFEBDE1B9B9A3A8D2BBA3A92E >

寻医问药指南(十七)

Chapter 6

计组复习提纲

计算机组织与系统结构

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

亮麗水顏

ebook105-12

标题

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

PowerPoint 簡報

<4D F736F F D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

ex

L23

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

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

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

1 CPU

社大規畫-生活藝能期末報告.doc

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

The MIPS Processor Implementation: Pipeline ILP Computer Organization & Design John Hennessy, David Patterson

《捕捉儿童敏感期》

2 國 文 考 科 試 題 解 析 命 題 出 處 與 南 一 版 第 五 冊 第 二 課 幽 夢 影 選 課 程 內 涵 同 試 題 解 析 某 君 講 信 用, 重 然 諾, 行 事 穩 健, 工 作 負 責 較 符 合 謹 飭 友 謹 飭 友 指 的 是 言 行 謹 慎 而 有 節 制 的 朋

untitled

29 碳 酸 钙 D3 片 ( 别 名 维 生 素 D3 碳 酸 钙 ) 吉 林 省 第 一 批 低 价 药 30 炔 诺 酮 滴 丸 吉 林 省 第 一 批 低 价 药 31 去 氯 羟 嗪 片 吉 林 省 第 一 批 低 价 药 32 茶 苯 海 明 片 吉 林 省 第 一 批 低 价 药 33

untitled

穨飲食與養老_決定版_.PDF

untitled

安徽电子工程学校

Microsoft Word - 2.doc

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

标题

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

Microsoft PowerPoint - notes3-Simple-filled12

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


bnb.PDF

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


2013年度西藏自治区教育厅

實用文格式大全.doc

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

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

因 味 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 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应

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

¬¬

<4D F736F F D CFC4D7E9B3C9D4ADC0EDCAD4CCE22D41A3A8B4F0B0B8A3A92E646F63>

胃癌早诊早治技术方案.doc

来 正 式 组 织 关 系 转 出 后 未 收 到 组 织 关 系 介 绍 信 回 执 的 党 员 排 查 的 主 要 任 务 是, 核 查 党 员 身 份 信 息, 摸 清 流 动 党 员 底 数, 理 顺 党 员 组 织 关 系, 健 全 完 善 党 员 档 案, 对 与 党 组 织 失 去 联

生命科学学院 学年度学风建设实施方案


图 文 聚 焦 国 培 计 划 (2013) 甘 肃 省 农 村 小 学 音 乐 骨 干 教 师 短 期 集 中 培 训 9 月 4 日 开 班 了, 学 员 老 师 们 从 甘 肃 省 各 个 县 市 州 汇 聚 湖 南 一 师, 开 始 了 为 期 14 天 的 培 训 学 习 : 鲜 明 的

附件1

邻居啊 第二天 对门却悄无声息了 莫非昨夜的吵闹 仅是个幻觉 夜幕拉下时 寒风又吱溜溜地叫个不停 老婆 睡下后 我这只夜猫子 继续兴致勃勃地跟着福尔 摩斯去探案 白天的喧嚣退去了 周围格外安静 正 是读书的好时候 突然 响起了钟摆声 哒 哒 哒 节奏匀称 不疾不徐 声响却愈来愈大 格外突兀 了 原来

<4D F736F F D BAC520CAD7B6BCCAA6B7B6B4F3D1A C4EAD7A8D2B5BCBCCAF5D6B0CEF1C6C0C6B8B9A4D7F7D2E2BCFB2E646F63>

其 他 方 面 也 可 以 采 用 同 样 的 方 式, 这 样 又 可 以 锻 炼 除 语 文 方 面 的 其 他 能 力 了 而 英 语 方 面, 我 认 为 配 合 英 语 专 业 举 办 英 语 演 讲 比 赛 就 很 不 错 这 样 开 展 一 系 列 的 创 新 活 动, 锻 炼 多 方

第 六 条 办 法 第 五 条 ( 三 ) 协 会 考 评, 考 评 指 考 核 评 价 第 七 条 办 法 第 六 条 职 业 操 守 包 括 的 内 容 : 个 人 诚 信 不 做 假 账 不 偷 漏 税 不 贪 污 盗 窃 等 第 八 条 企 业 财 务 管 理 人 才 评 价 实 行 五 星

<4D F736F F D A67EABD7A4BAB3A1B1B1A8EEA8EEABD7A6DBA6E6B5FBA6F4AD70B5652E646F63>

统计工作情况汇报

他 随 身 带 有 二 三 十 张 古 方, 白 天 卖 药, 夜 晚 将 药 材 精 细 研 末, 按 方 配 制 对 于 病 人 服 药 后 反 应, 特 别 留 心 发 现 问 题, 就 近 向 老 医 生 老 药 贩 虚 心 求 教, 千 方 百 提 高 药 效 同 时 对 于 春 夏 秋

目 录 第 一 章 地 方 陪 同 导 游 人 员 服 务 程 序...1 第 一 节 地 方 陪 同 导 游 人 员 的 概 念 与 职 责...1 第 二 节 服 务 准 备...2 一 熟 悉 接 待 计 划...2 二 落 实 接 待 事 宜...5 三 物 质 和 知 识 的 准 备...

走 吧, 到 三 峡 去 : 那 里 是 我 们 先 人 用 生 命 之 血 打 造 的 家 园 走 吧, 到 三 峡 去 : 那 里 的 浪 涛 承 载 过 千 百 万 只 我 们 先 人 驶 向 今 天 的 航 船 走 吧, 到 三 峡 去 : 那 里 的 每 一 座 青 山 都 刻 满 了 我

6寸PDF生成工具

Microsoft Word - 送報伕2.doc

Microsoft Word - N011 斷翅天使

中 国 科 学 院 国 家 科 学 图 书 馆

申论写作套路万能模板

申 请 律 师 执 业 许 可 初 审 服 务 指 南 目 录 一 办 理 要 素 ( 一 ) 事 项 名 称 和 编 码 4 ( 二 ) 实 施 机 构 4 ( 三 ) 申 请 主 体 4 ( 四 ) 受 理 地 点 4 ( 五 ) 办 理 依 据 4 ( 六 ) 办 理 条 件 5 ( 七 )

( 地 ( ) 组 织 机 构 代 码 企 业 详 细 名 称 哈 密 地 伊 吾 新 疆 广 汇 新 能 源 有 限 公 司 玛 纳 斯 玛 纳 斯 祥 云 化 纤 有 限 公 司 玛 纳 斯 玛 纳 斯 澳 洋 科 技 有 限 责

Transcription:

计算机组织与系统结构 流水技术引论 Itroductio to Pipeliig ( 第十四讲 ) 程旭 29.5 rach Jump st 单周期处理器 busw Wr 5 5 Istructio Fetch Uit Rd imm6 Istr<5:> Rs 5 Rw Ra Rb -bit isters 6 <3:26> Istructio<3:> op <6:2> <2:25> bus Exteder <:5> Rd Imm6 bus ExtOp <:5> <5:> MUX fuc Src op ctr Mai Cotrol Cotrol 3 3 I st Src : Wr WrE dr ory MUX to 该单周期处理器的缺陷 时钟周期时间长 : 对于装入指令, 周期时间必须足够长 : 的 Clock -to-q + 指令存储器访问时间 + 寄存器堆访问时间 + 延迟 ( 地址计算 ) + 数据存储器访问时间 + 寄存器对建立时间 + 时钟纽斜 对于所有其他指令, 周期时间都比所需的要长很多! 多周期实现概述 单周期处理器的问题根源 : 对于最慢的指令, 周期时间必须足够长 解决方案 : 将指令处理分为更小的步骤 每个周期执行一步 ( 而不是整个指令 ) - 周期时间 : 执行最长步所需的时间 - 使所有的步骤尽量具有相同的长度 这个多周期处理器的本质所在 多周期处理器的优点 : 周期时间非常短 不同的指令需要不同的周期数来完成 - 装入需要 5 个周期 - 跳转仅仅需要 3 个周期 允许每条指令多次使用同一个功能部件

多周期处理器 在每条指令的执行过程中, 可以多次使用同一功能部件 Wr WrCod Src rwr Ior Wr Wr st Wr Sel Target Rdr Ideal ory Wrdr i out Istructio Imm Rs Rd 5 5 Exted 6 Exted ExtOp Ra Rb bus Rw busw bus << 2 to 4 2 3 Sel Cotrol Cotrol Op Out 微程序设计 精心设计的状态图易于用微序列器实现 简单地递增和转移场位 数据通路控制场位 控制设计可以简化为微程序设计 微程序设计是一个基本概念 通过建造一个非常简单地处理器, 并对指令进行解释执行, 来实现指令系统 特别适用于非常复杂的指令, 以及寄存器传输比较少的情况 微程序设计对 RISC 产生的灵感 意外事件和中断 如果简单指令能够以很高的时钟频率执行 如果人们有能力编写产生微指令的编译器 如果绝大多数程序仅仅使用简单指令和简单的寻址方式 如果微码保存在 RM 中, 而非 ROM 中, 那么就易于排错 如果用于控制存储器的同一存储器还可被用为宏指令的 cache 那么, 为什么不用微程序和可直接产生机器最低级语言的编译器来跨越指令解释器呢? 意外处理是控制部分的难点 需要找到可以保存 并激活操作系统功能的方便地方来放置检测意外事件 转移到状态或微指令 当以后我们学习支持存储访问出现页面失效的流水化 CPU 时, 由于指令不能完成, 并且恰好要在产生意外事件的指令处重启程序, 这使得控制的设计难上加难!

对控制描述进行修改 <= MEM[] <= + 4 未定义指令 教学目标 : 已经掌握的内容 R-type S <= fu <= S overflow ORi S <= op ZX R[rt] <= S <= R[rs] <= R[rt] LW S <= + M <= MEM[S] R[rt] <= M SW other S <= + MEM[S] <= EQ S <= - Equal <= + E <= - 4 <= exp_addr cause <= (RI) ~Equal 计算机的五个基本部件处理器控制数据通路 存储器 输入 输出 E <= - 4 <= exp_addr cause <= 2 (Ovf) 来自数据通路的其他条件 本讲主题 : 流水技术 流水技术的思想非常自然! 洗衣房 张三 李四 王五 赵六每人有一包衣服需要洗涤 烘干 熨整 洗衣机需要 3 分钟 烘干机需要 3 分钟 熨斗需要 3 分钟 洗衣工需要 3 分钟将衣物放到抽屉里 C 任务次序 串行洗衣店 6 PM 7 8 9 2 2 M C 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 工作时间 串行洗衣店需要 8 个小时完成 4 个工作量 如果他们了解流水技术, 那么需要多长时间完成上述工作呢?

流水化的洗衣店 : 尽可能早地开始工作 任务次序 2 2 M 6 PM 7 8 9 C 3 3 3 3 3 3 3 工作时间 任务顺序 流水技术性质 6 PM 7 8 9 时间 3 3 3 3 3 3 3 C 流水技术无助于减少单个任务的处理延迟 (latecy), 但有助于提高整体工作负载的吞吐率 多个不同任务同时操作, 使用不同资源 潜在加速比 = 流水线级数 流水线的速率受限于最慢的流水段 流水段的执行时间如果不均衡, 那么加速比就会降低 流水化洗衣店需要 3.5 个小时完成 4 个工作量 开始填充流水线的时间和最后排放流水线的时间降低加速比 相关将导致流水线暂停 装入操作的五级 Ifetch: 取指 从指令存储器中取出指令 /ec: 取操作数和译码 取寄存器和指令译码 : 执行 计算存储器的地址 : 存储器访问 从数据存储器中读取数据 Wr: 写回 将数据写回到寄存器堆 Cycle Cycle 2 Cycle 3 Cycle 4 Cycle 5 Load Ifetch /ec Wr 指令执行次序 指令执行次序 流水技术 通过增加指令吞吐率来改进性能 Lw $, ($) Lw $2, 2($) Lw $3, 3($) Lw $, ($) Lw $2, 2($) Lw $3, 3($) TE TE 2 4 6 8 2 4 6 8 取指 access 取指 2s 8s 取指 8s access 取指 8s 2 4 6 8 2 4 6 8 取指 2s access 取指 access 取指 2s 2s 2s access 2s 2s 流水线加速比等于流水线的级数?

基本思路 流水线的图形化表示 取指译码 / 取操作数执行存储器访问回写 P C +4 ddress Istrucito Istructio ory Ra Rb bus Rw busw bus Sig Exted Shift left 2 将数据通路实际划分成流水段, 需要增加什么? add result result ddress Read ory Wr 执行某段代码需要多少周期? 在某一周期, 正在做什么? 该表示有助于加强对数据通路的理解 常规流水化执行的表示 时间 IFetch cd W IFetch cd W IFetch cd W IFetch cd W IFetch cd W 程序流 IFetch cd W 单周期 多周期与流水线 Cycle Cycle 2 单周期实现 : Load Store Waste Cycle Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 多周期实现 : Load Store R-type Ifetch Wr Ifetch Ifetch 流水线实现 : Load Ifetch Wr Store Ifetch Wr R-type Ifetch Wr

为什么需要流水线? 假设我们需要执行 条指令 为什么需要流水线? 因为需要提高资源利用率 时间 ( 时钟周期 ) 单周期机器 45 s/cycle x CPI x ist = 45 s 多周期机器 s/cycle x 4.6 CPI (due to ist mix) x ist = 46 s 理想的流水化机器 s/cycle x ( CPI x ist + 4 cycle drai) = 4 s 指令执行次序 Ist Ist Ist 2 Ist 3 Ist 4 Im Im Im m Im m Im m m m 流水技术会产生哪些问题? 流水线冒险 (Pipelie Hazards) 结构冒险 (structural hazards): 试图同时以两种不同的方式使用同一资源 - 例如, 组合式洗衣机 / 烘干机可能产生结构冒险或者熨整工工作时偷看电视 数据冒险 (data hazards): 在产生数据之前, 就试图使用它们 - 例如, 一包衣物在洗衣机中, 另一包衣物在干衣机中, 那么就不能对这些衣物进行熨整 - 流水线中的一条指令等待使用上一条指令的结果 控制冒险 (cotrol hazards): 在判定转移条件之前, 就试图决策转移方向 - 例如, 在洗一件非常脏的衣物之前, 需要判定加多少洗衣粉 ; - 转移指令 流水技术会产生哪些问题 ( 续 )? 等待总是可以解决冒险问题 流水线控制必须检测冒险 采取必要措施 ( 或延迟等待 ) 来解决冒险

指令次序 单存储器是一种结构冒险 Load Istr Istr 2 时间 ( 时钟周期 ) 结构冒险限制性能 示例 : 如果每条指令平均访问.3 次存储器, 而每个周期只能完成一次存储器访问, 那么 平均 CPI.3 否则, 资源的利用率 > % Istr 3 Istr 4 此例中, 检测非常容易! 读 写 解决方案一 : 暂停解决单存储器结构冒险 时间 ( 时钟周期 ) 解决方案二 : 资源复置解决存储器结构冒险 分离指令 Cache (Im) 和数据 Cache (m) 时间 ( 时钟周期 ) 指 Load 指 Load M 令 Istr 令 Istr M 次序 Istr 2 次序 Istr 2 M Istr 3(stall) bubble Istr 3 M Istr 4 Istr 4 M 读 写 读 写

指 令 次 序 控制冒险的解决策略 暂停 (Stall): 等待直到决策明朗 通过增设硬件在读取寄存器的周期就对转移方向进行判定, 从而可以在第二流水段完成转移方向的判定 dd eq Load 时间 ( 时钟周期 ) 影响 : 每条转移指令需要两个时钟周期完成 => 速度慢 控制冒险的解决策略 预测 : 猜测某一转移方向, 如果猜测错误, 就用备份恢复 猜测转移不发生 指 令 次 序 dd eq Load 时间 ( 时钟周期 ) 效果 : 如果猜测正确, 每条指令一个时钟周期完成, 如果猜错每条转移指令两个周期 ( 正确率 5%) 较复杂的硬件预测 : 一条指令的历史 (( 正确率 9%) 控制冒险的解决策略 重新定义转移指令的行为 延迟转移 : 转移行为在下一条指令之后发生 时间 ( 时钟周期 ) 关于 r 的数据冒险 立即向后相关就可能出现冒险 时间 ( 时钟周期 ) IF I/RF EX MEM W add r,r2,r3 M 指 dd 指 sub r4,r,r3 M 令 次 序 eq Misc Load 影响 : 如果能够将有效指令调度到延迟槽中, 每条转移指令的完成将不占用时钟周期 ( 5% 的可能 ) 令次序 ad r6,r,r7 or r8,r,r9 xor r,r,r M M

数据冒险解决策略 从某流水段向其他流水段前递 (forward) 结果 前递或旁路 (forward or bypass): 装入指令 立即向后相关就可能出现冒险 时间 ( 时钟周期 ) IF I/RF EX MEM W 时间 ( 时钟周期 ) IF I/RF EX MEM W 指 令 次 add r,r2,r3 sub r4,r,r3 ad r6,r,r7 M M M 指令次序 lw r,(r2) sub r4,r,r3 m M 序 or r8,r,r9 xor r,r,r M 不能通过前递技术解决 必须延迟 / 暂停与装入指令相关的指令 如果适当定义读 / 写次序, 就可能正常工作 设计一个流水化的处理器 教科书上的流水化的数据通路 回顾我们设计的数据通路和控制图 将资源和状态联系起来 保证处理流程没有冲突, 或考虑出解决方案 在适当的流水段发出正确的控制信号

多周期数据通路中介绍的基本流水化的处理器 如果每周期, 开始一条新指令的处理, 会发生什么情况? Valid 控制和数据通路 [], [], +4; +4; R[rs]; R[rs]; R[rt] R[rt] Next Istructio Fetch. ex Ex mem S ccess M wb W. Equal S + + S; S; Next S or or ZX ZX R[rt] R[rt] S Istructio ory S + + M [S] [S] M S + + [S] [S] Equal S ccess If If cod cod +; +; M. Equal 流水化装入指令 Clock st lw Cycle Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Ifetch /ec Wr 2d lw Ifetch /ec Wr 3rd lw Ifetch /ec Wr 流水线数据通路中的五个独立功能部件是 : 取指段 (Ifetch) 的指令存储器 寄存器 / 译码段 (/ec ) 的寄存器堆的读端口 (bus 和 bus) 执行段 () 的 存储器段 () 段的数据存储器 回写段 (Wr) 的寄存器堆的写端口 (busw) R 型指令的四段 Cycle Cycle 2 Cycle 3 Cycle 4 R-type Ifetch /ec Wr Ifetch: 取指 从指令存储器中读取指令 /ec: 取寄存器和指令译码 : 对两个寄存器操作数执行 操作 Wr: 将 的输出回写到寄存器堆

流水化 R 型指令和装入指令 Cycle Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Clock R-type Ifetch /ec Wr 冒险! 出现问题! R-type Ifetch /ec Wr Load Ifetch /ec Wr R-type Ifetch /ec Wr 重要发现 每个功能部件只能被每条指令使用一次 每个功能部件必须被所有指令在相同的流水段使用 : 装入指令在它的第五级使用寄存器堆的写端口 Load Ifetch /ec Wr R-type Ifetch /ec Wr R 型指令在它的第四级使用寄存器堆的写端口 产生了流水线冲突或者结构冒险 : R-type Ifetch /ec Wr 两条指令都试图同时回写寄存器堆! 寄存器堆只有一个写入端口 有两种方法解决流水线冒险 第一种解决方案 : 在流水线中插入空泡 Cycle Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Clock Ifetch /ec Wr Load Ifetch /ec Wr R-type Ifetch /ec Wr R-type Ifetch /ec bubble Wr R-type Ifetch /ec Wr Ifetch /ec 在流水线中插入空泡从而避免了在同一周期出现两次写入操作 控制逻辑变得更加复杂 失去了取指和发送的机会 第二种解决方案 : 将 R 型指令的回写延迟一个周期 将 R 型指令的写寄存器操作延迟一个周期 : 现在,R 型指令也在第五段才使用寄存器堆的写端口 存储器段是一个空段 : 无所事事 2 3 4 5 R-type Ifetch /ec Wr Cycle Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Clock R-type Ifetch /ec Wr R-type Ifetch /ec Wr Load Ifetch /ec Wr R-type Ifetch /ec Wr 在第六周期没有任何指令启动! R-type Ifetch /ec Wr

流水化的数据通路 取指段 Locatio : lw $, x($2) $ [($2) + x] Ifetch /ec Wr Ifetch /ec Wr Wr ExtOp Op rach Wr ExtOp Op rach IUit I +4 IF/I ister +4 Imm6 Rs Rd Ra Rb R Rw i I/Ex ister +4 Imm6 bus bus Uit Ex/ ister R o W i /Wr ister IUit I +4 IF/I: lw $, ($2) +4 Imm6 Rs Rd Ra Rb R Rw i I/Ex ister +4 Imm6 bus bus Uit Ex/ ister R o W i /Wr ister st Src Wr to st Src Wr to 指令部件探秘 Locatio : lw $, x($2) 译码 / 寄存器访问段 Locatio : lw $, x($2) $ [($2) + x] Ifetch 注意这里! /ec Ifetch /ec Wr Wr ExtOp Op rach = 4 +4 ddress Istructio ory Istructio dder IF/I: lw $, ($2) IUit I +4 IF/I ister +4 Imm6 Rs Rd Ra Rb R Rw i I/Ex:. 2 & x st +4 Imm6 bus bus Uit Src Ex/ ister Wr R o W i /Wr ister to

装入指令的地址计算段 Locatio : lw $, x($2) $ [($2) + x] 执行部件探秘 Ifetch /ec Wr Op=dd IUit I +4 IF/I ister Wr +4 Imm6 Rs Ra Rd Rb R Rw i I/Ex ister ExtOp +4 Imm6 bus bus Uit Ex/ ister rach R o W i /Wr ister I/Ex ister +4 bus bus imm6 6 Exteder << 2 Target 3 Cotrol out ctr Ex/: Load 抯 ory ddress st= Src= Wr to ExtOp= Src= 3 Op=dd 装入指令的存储器访问段 Locatio : lw $, x($2) $ [($2) + x] 装入指令的回写段 Locatio : lw $, x($2) $ [($2) + x] Ifetch /ec Wr Ifetch /ec Wr Wr ExtOp Op rach= Wr= ExtOp Op rach IUit I +4 IF/I ister +4 Imm6 Rs Rd Ra Rb R Rw i I/Ex ister +4 Imm6 bus bus Uit Ex/ ister R o W i /Wr: Load s IUit I +4 IF/I ister +4 Imm6 Rs Rd Ra Rb R Rw i I/Ex ister +4 Imm6 bus bus Uit Ex/ ister R o W i /Wr ister st Src Wr= to st Src Wr to=

修改控制和数据通路 [], [], +4; +4; 存储指令的四段 Cycle Cycle 2 Cycle 3 Cycle 4 R[rs]; R[rs]; R[rt] R[rt] Store Ifetch /ec Wr S + + M S S or or ZX ZX M S S + + M [S] [S] S + + [S] [S] If If cod cod +; +; Ifetch: 取指 从指令存储器中读取指令 M; M; Next R[rt] R[rt] M Istructio ory M Equal S ccess M. Equal /ec: 取寄存器和指令译码 : 计算存储访问的地址 : 将数据写入到数据存储器 eq 指令的三段 Cycle Cycle 2 Cycle 3 Cycle 4 控制图 [], [], +4; +4; Store Ifetch /ec Wr R[rs]; R[rs]; R[rt] R[rt] Ifetch: 取指 从指令存储器中读取指令 S + + M S S or or ZX ZX M S S + + M [S] [S] S + + [S] [S] If If cod cod +; +; /ec: 取寄存器和指令译码 : 比较两个寄存器操作数 择取正确的转移目标地址 锁存到 M; M; Next R[rt] R[rt] M Istructio ory M Equal S ccess M. Equal

数据通路 + 数据固定控制 Ist. fu rt op rs rs ecode rt v rw wb me ex im v rw wb me S ccess v rw wb M W. 指令流水示例 lw r, r2(35) 4 addi r2, r2, 3 2 sub r3, r4, r5 24 beq r6, r7, 3 ori r8, r9, 7 34 add r, r, r2 Next ad r3, r4, 5 地址以八进制表示 开始 : 从地址 取指 Fetch4 并 ecode Ist. rs ecode rt im W Ist. lw r, r2(35) ecode 2 rt im W Next S ccess M. lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 Next S 4 ccess M. lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 ad ad r3, r3, r4, r4, 5 5 ad ad r3, r3, r4, r4, 5 5

Fetch2 并 ecode 4 并 Fetch24 并 ecode2 并 4 并 Ist. addi r2, r2, 3 ecode 2 rt lw r 35 r2 Next S 2 ccess M W. lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 Ist. sub r3, r4, r5 ecode 4 5 addi r2 3 r2 Next 24 r2+35 lw r ccess M W. lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 ad ad r3, r3, r4, r4, 5 5 ad ad r3, r3, r4, r4, 5 5 Fetch3 并 ecode24 并 2 并 4 并 W Fetch34 并 ecode3 并 24 并 2 并 W4 Ist. beq r6, r7 ecode 6 7 sub r3 r4 r5 Next addi r2 R2+3 3 ccess lw r M[r2+35] W. lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 Ist. ori r8, r9 7 ecode 9 xx beq r6 r7 Next sub r3 r4-r5 34 ccess addi r2 r2+3 W. r=m[r2+35] lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 ad ad r3, r3, r4, r4, 5 5 ad ad r3, r3, r4, r4, 5 5

Fetch 并 ecode34 并 3 并 24 并 W2 Fetch4 并 ecode 并 34 并 3 并 W24 Ist. add r, r, r2 ecode 2 ori r8 7 r9 X Next XXX beq ccess sub r3 R4-r5 W. r=m[r2+35] r2 = r2+3 lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 Ist. ad r3, r4, r5 ecode 4 5 add r xx r r2 Next ori r8 r9 7 4 ccess beq xxx W. r=m[r2+35] r2 = r2+3 r3 = r4-r5 lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 ad ad r3, r3, r4, r4, 5 5 ad ad r3, r3, r4, r4, 5 5 Fetch 并 ecode4 并 并 34 并 W3 Ist. ecode ad r3 xx r4 r5 Next add r R+r2 ccess ori r8 r9 7 W. r=m[r2+35] r2 = r2+3 r3 = r4-r5 lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 Fetch4 并 cd 并 4 并 并 W34 Ist. ecode Next ad r3 r4 & R5 4 ccess add r R+r2 W. NO W NO Ovflow r=m[r2+35] r2 = r2+3 r3 = r4-r5 r8 = r9 7 lw lw r, r, r2(35) r2(35) 4 4 addi addi r2, r2, r2, r2, 3 2 2 sub sub r3, r3, r4, r4, r5 r5 24 24 beq beq r6, r6, r7, r7, 3 3 ori ori r8, r8, r9, r9, 7 7 34 34 add add r, r, r, r, r2 r2 Squash the extra istructio i the brach shadow! ad ad r3, r3, r4, r4, 5 5 Squash the extra istructio i the brach shadow! ad ad r3, r3, r4, r4, 5 5

总结 总结 哪些策略使得流水容易实现? 所有的指令长度相同 只有少量的指令格式 Ld/St 结构 我们将建造一条简单的流水线, 并考虑上述因素 我们将讨论现代微处理器, 并分析它的真正难点 : 意外事件处理 利用乱序执行等技术改进性能 哪些方面使得流水线难以实现? 结构冒险 : 假设我们只有一个存储器 控制冒险 : 需要考虑转移指令 数据冒险 : 一条指令依赖于上一条指令的结果