




文档简介
1 作作 业业 第一讲 计算机系统基础第一讲 计算机系统基础 1 1 在三台不同指令系统的计算机上运行同一程序 P 时 A 机需要执行 1 0 10 8条指令 B 机 需要执行 2 0 10 8条指令 C 机需要执行 4 0 108条指令 但实际执行时间都是 10 秒 请分 别计算这三台机器在实行程序 P 时的实际运行速度 以 MIPS 为单位 这三台计算机在运行 程序 P 时 哪台性能最高 为什么 2 2 如果要给标量处理器增加向量运算部件 并且假定向量模式的运算速度是标量模式的 8 倍 这里把向量模式所占的百分比时间称作向量化百分比 a 画出一张图来表示加速比和向量化百分比的关系 X 轴为向量化百分比 Y 轴为加速比 b 向量化百分比为多少时 加速比能达到 2 当加速比达到 2 时 向量模式占了运算运行 时间的百分之多少 向量化百分比为多少时 加速比能达到最大加速比的一半 c 假设程序的向量化百分比为 70 如果需要继续提升处理器的性能 一种方法是增加硬 件成本将向量部件的速度提高一倍 另外一种方法是通过改进编译器来提高向量模式的 应用范围 那么需要提升多少向量化百分比才能得到与向量部件运算速度提高一倍得到 相同的性能 你推荐哪一种设计方案 3 3 假设有一个代表典型应用的基准测试程序 一款不包含浮点部件的处理器 可以通过整 数指令的模拟来执行浮点指令 运行该基准程序的运行速度是 120MIPS 在该处理器上增加 浮点协处理器后运行该基准程序的运行速度是 80MIPS 下面给出了一些参数 I 基准测试 中整数指令的数目 F 基准测试中浮点指令的数目 Y 模拟一条浮点指令需要的整数指令 的数目 W 无浮点协处理器时基准程序的运行时间 B 有浮点协处理器时基准程序的运行 时间 a 用上面的参数符号表示出两种配置处理器的 MIPS 值 b 在没有协处理器的配置下 假定 F 8 10 6 Y 50 W 4 秒 求 I 的值 c 在上题的条件下 求 B 的值 d 在包含协处理器的配置下 系统的 MFLOPS 是多少 e 你的同事想要购买这种协处理器来提高性能 而该配置下 MIPS 降低了 请问他的决策 正确吗 解释你的观点 4 4 假设晶片成品率的经验公式如下 晶片成品率 1 b 晶片面积 a a 其中 a 4 是衡 量工艺复杂度的参数 a 假设每 cm 2晶圆的成本为 c 缺陷密度为 b 0 6 cm2 利用电子表格 计算当晶片面积 2 从 0 5cm 2变化到 4cm2时晶片的成本 然后 适用数学分析工具拟合出晶片成本和面积关 系的多项式曲线 使其与电子表格中计算出来的数据相吻合 b 假设缺陷密度更高 b 2 0 cm 2 求最接近的最低次数的多项式 5 5 对某处理器进行功耗测试 得到如下数据 时钟不翻转 电压 1 2V 时 电流为 500mA 时钟频率为 1GHz 电压 1 2V 时 电流为 2500mA 请计算此处理器的静态功耗以及 500MHz 下的总功耗 6 6 证明以下结论 a N 个正数的几何平均小于算术平均 b 用归一化的 SPEC CPU2000 程序分值进行 A B 两台机器的性能比较与所使用的参考机无 关 7 7 试讨论冯 诺伊曼结构的主要特点 a 查阅资料 分别给出一款 Intel AMD IBM 商业处理器的峰值性能和访存带宽 b 分析这 3 种处理器的访存带宽和存储层次参数 一级 cache 大小和延迟 二级 cache 大 小和延迟等 之间的关系 8 8 在一台个人计算机上 如 Pentium 4 Core Opteron 的 CPU a 查阅相关资料 给出该机器的浮点运算峰值 3 第二讲 二进制与逻辑电路第二讲 二进制与逻辑电路 9 9 定点数的表示 a 分别给出 64 位定点原码和补码表示的数的范围 解 2 63 263 1 b 在 32 位定点补码表示中 0 x80000000 表示什么数 解 2 31 10 10 浮点数的表示 a 把单精度数转化为十进制数 0 x7ff0000 0 xbe400000 0 xff800000 解 0 x7ff0000 0 0000 1111 111 1111 0000 0000 0000 0000 1 1111111 2 2 15 127 3 8368135610839464260099560574934e 34 0 xbe400000 1 0111 1100 100 0000 0000 0000 0000 1 1 2 2 124 127 0 1875 0 xff800000 1 1111 1111 000 0000 0000 0000 0000 b 把双精度数转化为十进制数 0 x4035000000000000 0 x8008000000000000 解 0 x4035000000000000 0 10000000011 0101000000000000000000000000000000000000 000000000000 1 0101 2 2 1027 1023 21 0 x8008000000000000 1 00000000000 1000000000000000000000000000000000000000 000000000000 0 1 2 2 1022 2 1023 c 把十进制数转化为单精度数 100 0 0 25 解 100 0 1 100100 2 2 6 0b1 10000101 10010000000000000000000 0 xc2c80000 0 25 1 0 2 2 0b0 01111101 00000000000000000000000 0 x3e800000 d 把十进制数转化为双精度数 1024 0 0 25 解 1024 0 1 0 2 10 0 x4090000000000000 0 25 1 0 2 2 0 x3fd0000000000000 11 11 画出 e a b c d 的晶体管级电路图 解 4 VDD GND a b a b VDD GND c d c d VDD GND e 12 12 计算一个 FO4 的延迟 假设反向器的输入电容为 0 0036pf 平均每个负载连线电容为 0 0044pf 翻转延迟为 0 023ns 每 pf 延迟为 4 5ns 解 FO4 指的是某类型的电路单元驱动四个相同类型的电路单元 FO4 延迟 本征延迟 负载延迟 0 023 4 5 0 0036 0 0044 4 0 167ns 13 13 分析 CMOS EDFF 触发器的建立时间 保持时间 和 CLK Q 的构成 对于下图的电路 假设反相器的延迟为 1ns 传输门从源到漏 或从漏到源 的延迟为 0 5ns 传输门从栅到漏 或源 的延迟为 0 75ns 不考虑由于 latch 的 fight 对反相器延迟的影响 请从概念上 分析此电路的 setup 时间和 hold 时间为多少 给出分析过程 5 解 传输门的结构 许多数字电路设计都是以库单元为基本单位 这些库单元将传统的晶体管电路设计 封 装 起来 只提供数字电路设计者所关心的时序 面积 功耗等信息 正是这种 封装 促进了数字电路 EDA 工具的发展 解放了电路设计人员的生产力 极大丰富电子芯片种类和 数量 本题深入到库单元内部的电路结构 讨论数字电路设计者所看到的某触发器建立时间 保持时间和 CLK Q 时间等时序的形成原因 数字电路设计者看到的 封装 后的触发器如下图所示 而题中所给图是该触发器内部电路结构图 触发器内部的两个传输门控制端信号 C 和 CN 就是时钟信号形成的 它控制电路相应部分的开启和关闭 我们先观察触发器内部时钟 延迟 6 CK C 经过两级反相器 1 1 2 ns CK CN 经过一级反相器和两级传输门 传输门的输入到输出延迟就是传输门源到漏 或漏到源 的时间 参考传输门晶体管结构 1 0 5 0 5 2 ns 观察如上图所示的触发器结构图 在 C 1 CN 0 时 前级传输门打开 D 端数据进入 N1 打破 N1 和 N2 之间的反相器环 强制将 N1 处状态改成与 D 端相同 N2 处状态改为与 D 端相反 反相器环维持新的状态 由于后级传输门关断 N2 处状态无法传播到 N3 处 当 C 0 CN 1 时 前级传输门关闭 D 端数据无法影响触发器内部状态 而后级传输门打开 触 发器状态则通过 N3 N4 和 Q 输出 同时 N3 和 N4 间反相器环状态也被打破更改为与 N2 相符 当下一个 C 1 CN 0 关闭后级传输门时 N3 和 N4 间反相器环仍能保持状态并驱动 Q 端 建立时间指的是在时钟触发沿 此题为下降沿 到来之前数据 D 端 必须稳定的时间 换句话说 此触发器的建立时间就是在时钟信号到达 CK 端之前 将触发器内部 N1 及 N2 状 态改变并稳定为与 D 端数据相符所需的时间 这样 D 端数据必须通过 D N0 N1 N2 才能真正改变触发器内部状态 但即使如此 由于 N1 和 N2 间反相器环驱动能力不能确定 为保守起见 还需要加上 N2 N1 时间 此外考虑到接口处 CK 端时钟信号到 C 和 CN 的传 播时延 如果 C 和 CN 的传播时延不一 可能导致传输门输出弱 1 或弱 0 情况 仍从保守情 况出发取两者的较小值 另外还要算上传输门控制端栅到漏 源 的延迟 这样 该触发器 建 立 时 间Tsetup TD N0 N1 N2 N1 min TCK C TCK CN Ttran 1 0 5 1 1 min 2 2 0 75 0 75 ns 保持时间指的是在时钟触发沿到来之后数据必须保持不变的时间 换句话说 此触发器 7 的保持时间就是在时钟信号到达 CK 端之后 D 端需要等待多长时间 使得即使其数据变化 也不影响触发器内部状态 反过来想 那什么情况下 D 端数据变化可能会影响内部状态呢 只有当前级传输门在完全关断之前 D 端数据已经进入到 N1 进而才有可能对内部状态产生 影响 所以只需保证在前级传输门关断时变化的 D 端数据不进入 N1 即可 此外也要考虑到 时钟信号的传播延迟 仍从保守情况出发取两者较大值 加上传输门控制端栅到漏 源 的 延迟 这样 Thold max TCK C TCK CN Ttran TD N0 N1 max 2 2 0 75 1 0 5 1 25ns CK Q 时间指的是时钟触发沿到来之后 Q 端输出新的触发器状态所需的时间 只有当 后级传输门打开后 Q 端才有可能与触发器内部状态相符 也就是 C 1 0 CN 0 1 时钟 下降沿时 这时候 N2 处的状态需要通过 N2 N3 N4 Q 此时由于后级传输门出于 打开状态 N3 N4 处的反相器环一般不可能再破坏这个新状态 此外仍出于保守考虑时钟信 号的传播延迟取较大值 并加上传输门控制端栅到漏 源 的延迟 这样 该触发器 CK Q 时 间 TCK Q max TCK C TCK CN Ttran TN2 N3 N4 Q max 2 2 0 75 0 5 1 1 5 25ns 第三讲第三讲 指令系统结构指令系统结构 14 14 给定下面的代码片段 A B C D A C B D A a 分别写出上述代码片段在四种指令系统类型 堆栈型 累加器型 寄存器 存储器型 寄存器 寄存器型 下的汇编语言代码 b 假设操作码占用 8 位编码 内存地址和操作数都是 16 位 寄存器型结构有 16 个通用寄 存器 对每种结构回答以下问题 1 需要读取多少指令字节 2 与内存交换的数据有 多少字节 3 依据代码量衡量哪种结构最好 4 依据与内存交换的数据 指令和数据 量衡量哪种结构最好 解 stack acc R M R R Push B Push C Sub Pop A Load C Neg Add B Store A Load R1 B Sub R1 C Store R1 A Sub R1 C Load R1 B Load R2 C Sub R3 R1 R2 Store R3 A 8 Push A Push C Sub Pop D Push D Push A Add Pop B Load C Neg Add A Store D Add A Store B Store R1 D Add R1 A Store R1 B Sub R4 R3 R2 Store R4 D Add R5 R4 R3 Store R5 B 1 30 18 2 24 16 3 28 14 4 29 10 15 15 16 进制数 0 x4C4F4F4E47534F4E 要存在 64 位双字中 a 假设存储是 8 字节对齐的 请依据小尾端的格式将此 16 进制数写入内存中 并将每个 字节解释为一个 ASCII 字符写在对应的字节下边 解 Address 0 xxx000 0 xxx001 0 xxx010 0 xxx011 0 xxx100 0 xxx101 0 xxx110 0 xxx111 0 x 4E 4F 53 47 4E 4F 4F 4C b 按照大尾端的格式重做上题 解 Address 0 xxx000 0 xxx001 0 xxx010 0 xxx011 0 xxx100 0 xxx101 0 xxx110 0 xxx111 0 x 4C 4F 4F 4E 47 53 4F 4E 16 16 根据 MIPS 指令的编码格式回答下列问题 a 条件转移指令的跳转范围 解 16 2 位 256KB 128KB 指令都是字节对齐的 即寻址时都是字节字节寻址 所以寻址范围为 以下同 b 直接跳转指令的跳转范围 解 26 2 位 256MB 128MB 9 17 17 用 MIPS 的 LWL LWR SWL SWR 指令编写一段程序 把内存单元 1005 1008 的值取到 R1 并存到内存单元 2005 2008 解 小尾端下 dli r2 1005 lwr r1 0 x0 r2 lwl r1 0 x3 r2 dli r2 2005 swr r1 0 x0 r2 swl r1 0 x3 r2 18 18 用 MIPS 的 LL SC 指令编写一段从内存单元 100 R2 取数 把取出来的数加 100 并存回 到 100 R2 的原子操作代码 并说明如果在此过程中处理器发生终端或该单元被其它处理器 修改时处理器如何保证上述操作的原子性 解 1 ll r1 100 r2 add r1 r1 100 sc r1 100 r2 beqz r1 1b nop 如果在 ll 和 sc 之间 含 ll 和 sc 发生了中断或者其他处理器修改 100 r2 则 sc 之后 r1 会变 0 回到标号 1 重新执行 19 19 列出 X86 和 MIPS 的所有减法指令 包括不同字长 定点和浮点 不同寻址方式等 并 比较它们的异同 解 的减法指令如下 的减法指令如下 定点减法 定点减法 10 影响 被影响 模式下例外 模式下例外 11 模式下例外 模式下例外 同模式 模式例外 浮点减法指令如下 浮点减法指令如下 和将定点转化为的扩展双精度浮点格式 影响 12 浮点例外 模式下例外 模式下例外 模式下例外 模式下例外 同模式 模式例外 13 的减法如下 的减法如下 定点减法 定点减法 减法 例外 无符号减法 例外 减法 限制 例外 无符号减法 限制 例外 无 浮点减法浮点减法如下 如下 单精度 双精度 并行单精度 将和的上下两部分分别相减 限制 例外 浮点例外 和和减法指令比较 减法指令比较 字长 14 的定点减法指令支持位 位 位 位字长 而定点减法支持 位和位字长 浮点 的浮点减法指令均为位扩展双精度格式 而浮点减法支持单精度 双精 度和并行单精度格式 寻址方式 的减法只支持寄存器寻址 的定点减法支持寄存器寻址 立即数和内存寻址方式 直接寻址 变址寻址 间接 寻址 基址寻址 基址加变址寻址 的浮点减法支持寄存器寻址 浮点寄存器栈 和内存寻址方式 直接寻址 变址寻址 间接寻址 基址寻址 基址加变址寻址 其他区别 的定点减法会修改 浮点减法会修改 而的减法没有 的减法和减法产生的例外由于体系结构的不同而有很大不同 的减法会产生例外 例外 除了 在模式下之外 还会产生例外 例 外 所有的浮点减法还会产生 例 外 在模式下进行浮点减法还会产生 例外 的 和所有的浮点减法会触发保留指令例外 和会 触发溢出例外 浮点减法会触发协处理器不可用例外和一些浮点例外 20 20 给出以下常见处理器中至少三种的 load use 延迟 Pentium III Pentium IV MIPS R10000 Alpha 21264 HP PA8000 Ultra Sparc III Itanium II Power IV AMD K8 解 Pentium 2cycle Pentium 4 2cycle fix 6cycle float Alpha21264 3cycle Itanium II 0cycle MIPS R10000 2cycle HP PA8000 2cycle Ultra Sparc III 2cycle Godson 2 Godson 3 3cycle fix 4cycle float 15 第四讲第四讲 静态流水线静态流水线 21 21 假定某 RISC 处理器为标准的五级流水线 IF ID EX MEM WB 结构 并且包含旁路硬件 对于下列指令序列 LW R1 0 R0 LW R2 4 R0 ADD R3 R1 R2 a b e SW R3 12 R0 LW R4 8 R0 ADD R5 R1 R4 c b f SW R5 16 R0 分析上述指令序列之间的相关 并重排序执行序列避免相关 重排序指令序列可以比原先指 令序列的执行减少多少拍 22 22 对于下面的计算 A A B C A B 写出 MIPS 程序代码 并且画出 5 级静态流水线 无旁路 上的流水线状态 23 23 对于向量加法 X i a X i Y i 假设 X Y 的首地址分别存在 R1 R2 a 的值存 在 F0 中 a 试写出对应的 MIPS 汇编代码 b 假设单发射流水线结构为IF ID EX MEM WB 功能部件足够 Load Store操作和整数 操作都花费 1 个时钟周期 加法操作为 4 个周期 乘法操作为 10 个周期 给出第一个 循环所有指令的流水线时空图 24 24 假定某 RISC 处理器为标准的五级流水线 IF ID EX MEM WB 结构 该静态流水线处理 器可配置包含硬件旁路电路 延迟槽 分支预测等技术 并假定所有的运算和访存操作均为 一拍完成 下面的代码在该处理器中执行 Loop LD R1 0 R2 从地址 0 R2 处读入 R1 DADDI R1 R1 4 R1 R1 4 SD 0 R2 R1 将 R1 存入地址 0 R2 处 DADDI R2 R2 4 R2 R2 4 DSUB R4 R3 R2 R4 R3 R2 BNEZ R4 Loop R4 不等于 0 时跳转到 Loop 16 已知 R3 的初值为 R2 400 a 不使用旁路硬件 但在同一个周期内寄存器的读和写能进行旁路 分支预测采用 not taken 策略 如果猜测错误则刷新 flushing 流水线上的错误指令 画出这个指令序 列在 RISC 流水线上执行的时序 并计算执行这个循环需要多少个时钟周期 b 使用旁路硬件 采用 taken 策略进行分支预测 如果猜测错误则刷新 flushing 流水 线上的错误指令 画出这个指令序列在 RISC 上执行的序列 并计算执行这个循环需要 多少个时钟周期 c 假设 RISC 流水线带有单拍的分支延迟和前递或旁路硬件 对包括延迟槽在内的指令序 列进行调度 可以重排指令序列 并修改某些指令的操作数 但不能改变指令的数目和 采用别的指令 画出该流水线的时序图 并计算整个循环需要的时钟周期数 25 25 许多指令集中都会有一条空操作指令 例如 MIPS 指令集中的 nop 指令 请给出设计空 指令的几个作用 26 26 下面是静态流水线章节中讲述的 5 级流水处理器的部分 Verilog 代码 a 硕士 请完善其中的 ALU 模块 b 博士 请完善该 CPU 的代码并并编写一个定点乘法程序在该 CPU 模拟环境上正确执行 注意 不用考虑 Forwarding ALU 部件可以直接用 号 每一级流水都要有有效位 0 号通 用寄存器的值恒为 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADD 0001 rd rs1 rs2 000 SUB 0010 rd rs1 rs2 000 AND 0011 rd rs1 rs2 000 OR 0100 rd rs1 rs2 000 NOT 0101 rd rs1 rs2 000 SL 0110 rd rs1 rs2 000 SR 0111 rd rs1 rs2 000 SRU 1000 rd rs1 rs2 000 ADDI 1001 rd rs1 imm LD 1010 rd base offset ST 1011 rd base offset BZ 1100 000 rs1 offset 17 BGT 1100 001 rs1 offset BLE 1100 010 rs1 offset timescale 1ns 10ps module system wire clock reset cpu cpu00 clock clock reset reset initial clock 1 b0 always 20 clock clock initial begin 0 reset 1 b1 70 reset 1 b0 end 18 endmodule module cpu clock reset input clock input reset wire 17 0 brbus wire 15 0 inst wire 2 0 ex dest mem dest wb dest wire 19 0 wbbus wire 55 0 idbus wire 39 0 exbus wire 39 0 membus fetch module fetch clock clock reset reset brbus brbus inst inst decode module decode clock clock reset reset inst inst ex dest ex dest mem dest mem dest wb dest wb dest wbbus wbbus brbus brbus idbus idbus alu module alu clock clock reset reset idbus idbus exbus exbus ex dest ex dest mem module mem clock clock reset reset exbus exbus membus membus mem dest mem dest wb module wb clock clock reset reset membus membus wbbus wbbus wb dest wb dest endmodule timescale 1ns 10ps module fetch module clock reset brbus inst 19 input clock input reset input 17 0 brbus output 15 0 inst reg 15 0 pc wire brbus valid wire brbus taken wire 15 0 brbus offset assign brbus valid brbus 17 assign brbus taken brbus 16 assign brbus offset brbus 15 0 Enter your statements here endmodule timescale 1ns 10ps module decode module clock reset inst ex dest mem dest wb dest wbbus brbus idbus input clock input reset input 15 0 inst input 2 0 ex dest mem dest wb dest input 19 0 wbbus output 55 0 idbus output 17 0 brbus reg 15 0 ir wire wbbus valid wire 2 0 wbbus dest wire 15 0 wbbus value 20 wire idbus valid wire 3 0 idbus op wire 2 0 idbus dest wire 15 0 idbus value1 wire 15 0 idbus value2 wire 15 0 idbus stvalue wire brbus valid wire brbus taken wire 15 0 brbus offset assign wbbus valid wbbus 19 assign wbbus dest wbbus 18 16 assign wbbus value wbbus 15 0 Enter your statements here assign brbus 17 brbus valid assign brbus 16 brbus taken assign brbus 15 0 brbus offset assign idbus 55 idbus valid assign idbus 54 51 idbus op assign idbus 50 48 idbus dest assign idbus 47 32 idbus value1 assign idbus 31 16 idbus value2 assign idbus 15 0 idbus stvalue endmodule timescale 1ns 10ps module alu module clock reset idbus exbus ex dest input clock 21 input reset input 55 0 idbus output 39 0 exbus output 2 0 ex dest wire idbus valid wire 3 0 idbus op wire 2 0 idbus dest wire 15 0 idbus value1 wire 15 0 idbus value2 wire 15 0 idbus stvalue wire exbus valid wire 3 0 exbus op wire 2 0 exbus dest wire 15 0 exbus exresult wire 15 0 exbus stvalue assign idbus valid idbus 55 assign idbus op idbus 54 51 assign idbus dest idbus 50 48 assign idbus value1 idbus 47 32 assign idbus value2 idbus 31 16 assign idbus stvalue idbus 15 0 Enter your statements here assign exbus 39 exbus valid assign exbus 38 35 exbus op assign exbus 34 32 exbus dest assign exbus 31 16 exbus exresult assign exbus 15 0 exbus stvalue endmodule 22 timescale 1ns 10ps module mem module clock reset exbus membus mem dest input clock input reset input 39 0 exbus output 39 0 membus output 2 0 mem dest wire exbus valid wire 3 0 exbus op wire 2 0 exbus dest wire 15 0 exbus exresult wire 15 0 exbus stvalue wire membus valid wire 3 0 membus op wire 2 0 membus dest wire 15 0 membus exresult wire 15 0 membus memresult assign exbus valid exbus 39 assign exbus op exbus 38 35 assign exbus dest exbus 34 32 assign exbus exresult exbus 31 16 assign exbus stvalue exbus 15 0 Enter your statements here assign membus 39 membus valid assign membus 38 35 membus op assign membus 34 32 membus dest assign membus 31 16 membus exresult assign membus 15 0 membus memresult 23 endmodule timescale 1ns 10ps module wb module clock reset membus wbbus wb dest input clock input reset input 39 0 membus output 19 0 wbbus output 2 0 wb dest wire membus valid wire 3 0 membus op wire 2 0 membus dest wire 15 0 membus exresult wire 15 0 membus memresult wire wbbus valid wire 2 0 wbbus dest wire 15 0 wbbus value assign membus valid membus 39 assign membus op membus 38 35 assign membus dest membus 34 32 assign membus exresult membus 31 16 assign membus memresult membus 15 0 Enter your statements here assign wbbus 19 wbbus valid assign wbbus 18 16 wbbus dest assign wbbus 15 0 wbbus value endmodule 24 timescale 1ns 10ps module rom raddr rout input 11 0 raddr output 15 0 rout reg 15 0 rom 4095 0 integer i initial begin readmemb rom vlog rom display nLoad rom successfully n n end assign rout rom raddr endmodule timescale 1ns 10ps module ram clock raddr rout wen waddr win input clock input wen input 15 0 win input 11 0 raddr input 11 0 waddr output 15 0 rout reg 15 0 ram 4095 0 assign rout ram raddr always posedge clock begin if wen begin ram waddr win end end 25 endmodule timescale 1ns 10ps module regfile clock raddr1 rout1 raddr2 rout2 wen waddr win input clock input wen input 15 0 win input 2 0 raddr1 raddr2 input 2 0 waddr output 15 0 rout1 rout2 reg 15 0 ram 7 0 assign rout1 ram raddr1 assign rout2 ram raddr2 always posedge clock begin ram 0 16 b0 if wen begin if waddr 0 ram waddr c 2 d d 1 3 b b d e 4 else 5 e e 1 6 f f e 7 c b f 8 b a f 假设只有 b 和 c 才会在后面的程序里继续使用 并且假设在程序执行期间没有例外 请描述 出这些指令序列之间所有类型的相关 对于控制相关 说明如何保持结果的正确性前提下把 程序段提在 if 语句之前执行 29 29 证明 如果如果数组元素 A a i b 和 A c i d 之间存在相关 那么 GCD c a 能够整出 d b 30 30 请比较 Tomasulo 和计分牌方法分别是如何处理 RAW WAR 和 WAW 相关的 31 31 请简述动态流水线中如何实现精确例外 32 32 以下这个循环是高斯消元法中的核心操作 称为 DAXPY 循环 双精度的 a 乘以 X 再加上 Y 以下代码实现了对长度为 100 的向量进行 DAXPY 操作 Y a X Y bar L D F2 0 R1 取数 X i MUL D F4 F2 F0 乘法操作 a X i L D F6 0 R2 取数 Y i ADD D F6 F4 F6 加法操作 a X i Y i S D 0 R2 F6 存数 Y i DADDUI R1 R1 8 X 的下标加 1 27 DADDUI R2 R2 8 Y 的下标加 1 DSGTUI R3 R1 800 测试循环是否结束 BEQZ R3 bar 如果循环没有结束 转移到 bar 在单发射静态流水线上 假定浮点流水线的延迟如下表所示 分支指令在译码阶段 ID 计 算结果 采用了分支延迟槽技术 整数操作在一拍之内发射和完成 并且结果是完全旁路的 fully bypassed 产生结果的指令产生结果的指令 使用结果的指令使用结果的指令 延迟 时钟周期 延迟 时钟周期 FP ALU op Another FP ALU op 3 FP ALU op Store double 2 Load double FP ALU op 1 Load double Store double 0 a 把这个循环展开足够的次数 要求消除所有停顿周期和循环开销指令 循环将会被展开 多少次 写出调度后的代码 每产生一个结果需要多少执行时间 b 写出 DAXPY 循环在软件流水后的代码 可以省略软件流水的装入代码和排空代码 每产 生一个结果需要多少执行时间 33 33 假设有一个如下图所示的支持精确例外处理的浮点流水线 流水线分成发射 执行并写 回 以及提交三个阶段 其中浮点加法部件延迟为 2 拍 即假设第 T 拍操作数准备好开始运 算 第 T 1 拍可以写回结果 浮点乘法部件延迟为 3 拍 浮点操作队列中已有图中所示的 指令 请给出 6 拍内每一拍的寄存器以及结果总线值的变化 28 第六讲第六讲 多发射结构数据通路多发射结构数据通路 34 34 假定一个 4 发射的处理器 每拍可以取指 4 条指令 译码 4 条指令 发射 4 条指令 提 交时从 Reorder Buffer 提交 4 条指令 在发射和提交时需要检查哪些数据相关 试画出发 射时和提交时相关的检测硬件图 解 发射时 检查 4 条指令的源寄存器的状态以判断是否存在和之前的指令的 RAW 相关 判断第 2 3 4 条指令的源寄存器是否和第 1 条指令的目的寄存器相关 判断第 3 4 条指令的源寄存器是否和第 2 条指令的目的寄存器相关 判断第 4 条指令的源寄存器是否和第 3 条指令的目的寄存器相关 提交时 按指令顺序提交即可 35 35 在多发射乱序执行的处理器上 编译器的调度还需要吗 举例说明 解 需要 动态调度只能处理 200 条指令以内的相关 编译器可以在更大的范围上进行调度 例 如死代码删除 软流水等技术只能通过编译器来实现 36 36 以下有 4 段 MIPS 代码片段 每段包含两条指令 1 DADDI R2 R2 2 LD R2 4 R2 2 DSUB R3 R1 R2 SD R2 7 R1 3 S D F2 7 R1 S D F2 200 R7 4 BLE R2 place SD R2 7 R2 a 分析上述 4 个代码片段 给出可能的相关和解决办法 解 1 存在 RAW 相关和 WAW 相关 可以通过寄存器重命名解决 2 不存在相关 3 访存相关 可以通过维护处理器序的访存队列来解决 4 不存在相关 29 b 假设目标硬件的流水线是支持乱序执行的双发射结构 每个代码段的两条指令能够同时 发射吗 解 不能 能 能 能 访存相关一般都是同时发射 等发现冲突了再说 37 37 假设流水线延迟如下表所示 分支延迟为 1 个周期 没有延迟槽 产生结果的指令产生结果的指令 使用结果的指令使用结果的指令 延迟 时钟周期 延迟 时钟周期 FP ALU op Another FP ALU op 3 FP ALU op Store double 3 Load double FP ALU op 1 Load double Store double 0 下面循环计算 Y i a X i Y i 高斯消元法中的关键一步 L L D F4 0 R2 读 Y i L D F0 0 R1 读 X i MUL D F0 F0 F2 求 a X i ADD D F0 F0 F4 求 a X i Y i S D F0 0 R2 保存 Y i DSUBUI R2 R2 8 DSUBUI R1 R1 8 BNEZ R1 L a 假设目标机器的流水线是单发射的 将次循环展开足够的次数 使得代码执行没有不必 要的延迟 写出调度后的代码并计算一个元素的执行时间 b 假设目标机器的流水线是双发射的 将次循环展开足够的次数 使得代码执行没有不必 要的延迟 写出调度后的代码并计算一个元素的执行时间 c 自己写一段与题中类似的 C 代码 用 gcc 的不同优化遍编译后 查看汇编代码 对不同 优化遍进行比较 描述 gcc 做的优化 解 a L L D F0 0 R1 L D F1 8 R1 MUL D F0 F0 F2 MUL D F1 F1 F2 L D F4 0 R2 L D F5 8 R2 ADD D F0 F0 F4 30 ADD D F1 F1 F5 DSUBUI R2 R2 16 DSUBUI R1 R1 16 S D F0 16 R2 S D F1 8 R2 BNEZ R1 L NOP 7 拍一个 b 依赖于哪些指令可以共同发射 定点 浮点和访存各有几个功能部件 c O0 X i 和 Y i 地址放在栈上 每次访问需要两次访存 所有局部变量映射到内存地址 而不是寄存器 因此每次访问都必须要有 load store 没有循环展开 延迟槽指令 nop O2 局部变量放在寄存器中 延迟槽用了起来但是没有循环展开 38 38 一个 n 发射的处理器 流水线情况如下 取值 译码 重命名到物理寄存器后送入发射 队列 发射队列乱序发射 功能部件乱序执行 乱序写回物理寄存器 最后顺序提交并释放 物理寄存器 已知该处理器有 m 个逻辑寄存器 i 个功能部件 i n 每条指令从重命名 到写回需要 t1 拍 从重命名到提交需要 t2 拍 为了能让流水线满负荷工作 最少需要多少 个物理寄存器 提示 并不是每个参数都有用 解 m n t2 39 39 设计一个采用如下结构的流水线 画出结构图并写出每个流水阶段的相应操作 a 采用物理寄存器堆重命名 b 保留站后读寄存器 c 全局保留站 d 一个定点部件 一个浮点部件 一个访存部件 e 双发射 f 流水阶段 取指 译码 包括重命名 发射 包括读寄存器 执行 包括写回 提 交 解 31 32 40 40 请简述 Intel 的 Nehalem 处理器核的多发射机制 Nehalem 做了哪些措施来配合高的发 射宽度 解 4 发射如图 一条指令翻译成多条 code 比较 branch 指令融合成一个 code 28 项 code 队列维护循环 L1 cache 32KB I 32KB D 4 cycle a 256KB L2 cache per core unshared 10 cycle and up to an 8MB L3 cache shared among all cores 30cycle 33 34 第七讲第七讲 转移猜测转移猜测 41 41 下表是转移猜测的 Yeh 和 Patt 分类中根据转移历史表 BHT 和模式历史表 PHT 的 不同组合形成的转移猜测种类 PC 中用来索引 BHT 表的位数为低 6 位 索引 PHT 表的位数 为低 8 位 BHT 表每项 8 位 请画出 SAs 转移猜测的结构图 说明其基本原理 并计算该结 构使用的存储单元位数 Global PHT Per address PHT Per set PHT Global BHT GAg Gap GAs FP ALU op PAg PAp PAs Load double SAg SAp SAs 解 BHT 2 6 8 512b PHT 2 8 28 2 131072b 共 131584b BHT 根据地址低 6 位选出一个 8 位向量 和地址低 8 位一起到 PHT 中选取 2 位饱和计数 42 42 考虑下面一段 MIPS 代码 假设开始时 R1 寄存器存放值 a BNEZ R1 L1 分支 b1 a 0 DADDIU R1 R0 2 a 0 a 的值变为 2 L1 DSUBUI R2 R1 2 BNEZ R2 L2 分支 b2 a 2 L2 假定采用两位分支预测器 第一位是程序中上一个分支未被执行的预测情况 第二位是上一 个分支被执行时的预测情况 假设初始预测位 NT NT 且 a 值以 0 1 0 1 的规律变化 画出 转移预测执行情况表 并统计预测错误的数目 解 35 a b1 prediction b1 action New b1 prediction b2 prediction b2 action New b2 prediction 0 NT NT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉字的来历课件
- 云南省昆明市2024-2025学年七年级下学期期中考试地理试卷(含答案)
- 广东省湛江市第一中学2024-2025学年第一学期第三次综合素质评价(期末)试卷(含解析)
- 工地协议书范文
- 工厂厂房转让合同(6篇)
- 2024-2025学年广东省广州市番禺区高二(下)期末物理试卷(含答案)
- 《诗经》与楚辞导读知到智慧树答案
- 成都二手房买卖合同(15篇)
- 房地产誓师大会发言稿
- 汉字书法课件模板图
- 建筑公司分包合同管理办法
- 2025至2030苏打水行业发展趋势分析与未来投资战略咨询研究报告
- 2025年秋季学期德育工作计划:向下扎根向上开花
- 2025-2030中国家政服务行业信用体系建设与服务质量监管报告
- 2025年安徽省普通高中学业水平选择性考试(物理)科目高考真题+(答案解析版)
- 2025年成都东部集团有限公司及下属企业招聘考试笔试试卷【附答案】
- 各分项工程质量保证措施
- 国税编制管理办法
- 特种畜禽管理办法
- 消防员心理健康教育课件教学
- 混凝土外加剂检测原始记录表
评论
0/150
提交评论