From f8fb8553d3e4066c68e932592f4999139e73645f Mon Sep 17 00:00:00 2001 From: wonder Date: Mon, 15 Jun 2026 22:39:57 +0800 Subject: [PATCH] vault backup: 2026-06-15 22:39:56 --- 计算机系统结构/复习文档/index.md | 31 ++ 计算机系统结构/复习文档/多处理器与并行处理.md | 129 +++++++ 计算机系统结构/复习文档/存储系统与Cache.md | 140 +++++++ 计算机系统结构/复习文档/总线与I_O系统.md | 113 ++++++ 计算机系统结构/复习文档/指令系统设计.md | 96 +++++ 计算机系统结构/复习文档/流水线技术.md | 138 +++++++ .../复习文档/计算机系统结构基础与定量原理.md | 126 +++++++ 计算机系统结构/试题册/index.md | 50 +++ 计算机系统结构/试题册/试题1-A卷.md | 345 ++++++++++++++++++ 计算机系统结构/试题册/试题1-B卷.md | 312 ++++++++++++++++ 10 files changed, 1480 insertions(+) create mode 100644 计算机系统结构/复习文档/index.md create mode 100644 计算机系统结构/复习文档/多处理器与并行处理.md create mode 100644 计算机系统结构/复习文档/存储系统与Cache.md create mode 100644 计算机系统结构/复习文档/总线与I_O系统.md create mode 100644 计算机系统结构/复习文档/指令系统设计.md create mode 100644 计算机系统结构/复习文档/流水线技术.md create mode 100644 计算机系统结构/复习文档/计算机系统结构基础与定量原理.md create mode 100644 计算机系统结构/试题册/index.md create mode 100644 计算机系统结构/试题册/试题1-A卷.md create mode 100644 计算机系统结构/试题册/试题1-B卷.md diff --git a/计算机系统结构/复习文档/index.md b/计算机系统结构/复习文档/index.md new file mode 100644 index 0000000..daf6c50 --- /dev/null +++ b/计算机系统结构/复习文档/index.md @@ -0,0 +1,31 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - 索引 +create time: 2026-06-15 10:00 +--- + +# 计算机系统结构复习文档索引 + +## 概述 + +本文档为「计算机系统结构」课程复习材料索引。内容基于 A 卷和 B 卷两套历年试题的高频考点梳理,涵盖系统结构基础、指令系统、流水线、Cache 存储系统、总线与 I/O、多处理器与并行处理六大核心板块。 + +> [!tip] 使用建议 +> 建议先通读 [[计算机系统结构基础与定量原理]] 夯实基础,再依次学习 [[指令系统设计]]、[[流水线技术]]、[[存储系统与Cache]] 三大核心专题。**流水线调度**和 **Cache 命中率计算**是历年考试的最高频考点,务必重点突破。[[总线与I/O系统]] 和 [[多处理器与并行处理]] 适合考前快速回顾。 + +## 复习文档目录 + +| 序号 | 文档 | 核心考点 | +|:----:|------|----------| +| 1 | [[计算机系统结构基础与定量原理]] | 系统结构定义、Flynn分类、Amdahl定律、CPU性能公式、局部性原理 | +| 2 | [[指令系统设计]] | 定长/扩展操作码、指令格式设计、RISC vs CISC、寻址方式 | +| 3 | [[流水线技术]] | 冲突类型、预约表调度、冲突向量、状态转移图、时空图 | +| 4 | [[存储系统与Cache]] | 映像方式、替换策略、命中率计算、17种优化技术、不命中类型 | +| 5 | [[总线与I/O系统]] | 分离事务总线、I/O性能评价、DMA与中断 | +| 6 | [[多处理器与并行处理]] | 存储一致性、MSI协议、远程访问性能、计算/通信比 | + +## 关联笔记 + +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/复习文档/多处理器与并行处理.md b/计算机系统结构/复习文档/多处理器与并行处理.md new file mode 100644 index 0000000..e5c0af9 --- /dev/null +++ b/计算机系统结构/复习文档/多处理器与并行处理.md @@ -0,0 +1,129 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - 并行处理 +create time: 2026-06-15 10:00 +--- + +# 多处理器与并行处理 + +## 概述 + +本文档讲解多处理器系统的基本概念、存储一致性模型、通信开销分析以及并行系统性能评估。多处理器和并行处理是现代计算机系统结构的重要方向,涉及软硬件协同设计的多个层面。 + +> [!tip] 考试重点 +> 存储一致性的三个条件是论述题高频考点。远程访问对并行系统性能影响的计算(CPI 分析)在综合题中出现。 + +## 正文 + +### 一、多处理器系统概述 + +#### 1.1 分类 + +| 类型 | 特征 | Flynn 分类 | 典型代表 | +|------|------|:----------:|----------| +| 单处理器 | 单指令单数据 | SISD | 传统 PC | +| 向量处理器 | 单指令多数据 | SIMD | GPU、TPU | +| **多处理器** | 多指令多数据,共享内存 | MIMD | 服务器集群 | +| 多计算机 | 多指令多数据,分布式内存 | MIMD | 超算集群 | + +#### 1.2 SIMD vs MIMD + +| 特性 | SIMD | MIMD | +|------|------|------| +| 指令流 | 单一控制流 | 多个独立控制流 | +| 数据流 | 同一操作作用于多个数据 | 各处理器独立处理不同数据 | +| 适用场景 | 规则的数据并行(矩阵运算) | 不规则的并行任务 | +| 灵活性 | 低(需同步) | 高(独立执行) | + +### 二、存储一致性(Cache Coherence) + +#### 2.1 问题背景 + +在多处理器系统中,每个处理器都有自己的 Cache。当多个处理器访问共享数据时,可能出现**数据不一致**的问题。 + +``` +处理器 P 写入 X = 1 + ↓ (Cache 更新) +处理器 Q 的 Cache 中 X 仍为旧值 +``` + +#### 2.2 一致性定义 + +一个存储系统如果满足以下三个条件,则称是一致的: + +> [!important] 存储一致性的三个条件 +> +> **条件 1(写后读一致性)**:处理器 P 写 X 后又读 X,若期间无其他处理器写 X,则 P 读到的是自己写入的值。 +> +> **条件 2(写传播一致性)**:处理器 P 写 X 后,处理器 Q 读 X,若期间无其他写操作,则 Q 读到的是 P 写入的值。 +> +> **条件 3(写顺序一致性)**:对 X 的两次写之间若无其他处理器写 X,则最后写入的值保留(写顺序对所有处理器可见)。 + +#### 2.3 一致性协议 + +| 协议 | 原理 | 适用场景 | +|------|------|----------| +| **监听协议**(Snooping) | 所有 Cache 监听总线上的事务 | 小规模多处理器(总线互连) | +| **目录协议**(Directory) | 用目录记录每个内存块的状态 | 大规模多处理器(交叉开关互连) | + +**MSI 协议**(监听协议的基础): + +| 状态 | 含义 | +|:----:|------| +| **M**(Modified) | 该行已被修改,与主存不一致,只有本 Cache 有最新副本 | +| **S**(Shared) | 该行未被修改,多个 Cache 可能有副本 | +| **I**(Invalid) | 该行无效 | + +> [!question] 监听协议为什么不适合大规模系统? +> 监听协议要求所有 Cache 监听总线,总线带宽成为瓶颈。当处理器数量增加时,总线冲突急剧增加,监听协议的可扩展性很差。目录协议通过点对点通信避免了这个问题。 + +### 三、并行系统性能分析 + +#### 3.1 远程访问的影响 + +在分布式共享内存系统中,远程内存访问的延迟远高于本地访问。 + +**CPI 计算**: + +$$CPI = CPI_{base} + \text{远程访问率} \times \text{远程访问延迟(时钟数)}$$ + +> [!example] 远程访问性能影响 +> 32 个处理器的集群,本地执行时间 10ns,CPI = 1.0。若有 0.5% 指令需远程访问(2000ns): +> +> 远程访问时钟 $= 2000 / 10 = 200$ +> +> $CPI = 1.0 + 0.5\% \times 200 = 2.0$ +> +> **结论**:0.5% 的远程访问使 CPI 翻倍,性能下降 50%。 + +#### 3.2 并行计算的挑战 + +| 挑战 | 说明 | 应对方法 | +|------|------|----------| +| **并行性有限** | Amdahl 定律限制了并行加速的上限 | 优化串行部分、提高并行比例 | +| **通信开销** | 处理器间数据交换的延迟 | 优化通信模式、减少同步 | +| **负载不均衡** | 各处理器工作量不等 | 动态调度、任务细分 | + +#### 3.3 计算/通信比 + +$$\text{计算/通信比} = \frac{\text{计算量}}{\text{通信量}}$$ + +- 随数据规模增加而**增大**(计算量增长快于通信量) +- 随处理器数目增加而**减小**(每个处理器分到的计算减少,但通信开销相对增加) + +> [!tip] 提高并行效率的关键 +> 尽量提高计算/通信比:增大问题规模、优化通信模式(减少全局通信)、使用高带宽低延迟的互连网络。 + +### 四、设计定量原理在并行系统中的应用 + +1. **以经常性事件为重点**:优化本地访问路径(高频事件),而非远程访问 +2. **Amdahl 定律**:并行加速受限于串行部分的比例 +3. **CPU 性能公式**:远程访问增加了有效 CPI +4. **局部性原理**:数据局部性越好,远程访问越少,并行效率越高 + +## 关联笔记 +- [[计算机系统结构/复习文档/计算机系统结构基础与定量原理]] +- [[计算机系统结构/复习文档/存储系统与Cache]] +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/复习文档/存储系统与Cache.md b/计算机系统结构/复习文档/存储系统与Cache.md new file mode 100644 index 0000000..975cf84 --- /dev/null +++ b/计算机系统结构/复习文档/存储系统与Cache.md @@ -0,0 +1,140 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - Cache +create time: 2026-06-15 10:00 +--- + +# 存储系统与 Cache + +## 概述 + +本文档系统讲解存储层次结构、Cache 的工作原理(映像方式、替换策略、写策略)、命中率计算以及 17 种 Cache 优化技术。Cache 是计算机系统结构的核心考点,几乎每年都有大分值的计算和分析题。 + +> [!tip] 考试重点 +> Cache 命中率计算、平均访存时间计算、分离 Cache vs 混合 Cache 的性能对比是必考内容。17 种优化技术的分类和代表性技术需熟记。 + +## 正文 + +### 一、存储层次结构 + +```mermaid +graph TD + A["Register"] --> B["L1 Cache"] + B --> C["L2 Cache"] + C --> D["Main Memory"] + D --> E["Disk/SSD"] + + style A fill:#ff8a80 + style B fill:#ff80ab + style C fill:#ea80fc + style D fill:#82b1ff + style E fill:#80d8ff +``` + +| 层次 | 容量 | 速度 | 价格/位 | 管理方式 | +|:----:|:----:|:----:|:-------:|:--------:| +| 寄存器 | KB | 最快 | 最贵 | 编译器 | +| L1 Cache | 32~64 KB | ~1 ns | 较贵 | 硬件 | +| L2 Cache | 256 KB~1 MB | ~5 ns | 中等 | 硬件 | +| 主存 | 4~64 GB | ~100 ns | 便宜 | OS+硬件 | +| 磁盘 | TB 级 | ~10 ms | 最便宜 | OS | + +> [!question] 为什么存储系统要分层? +> 单一存储器无法同时满足"大容量、高速度、低价格"的要求。分层设计利用**局部性原理**,将频繁访问的数据放在快速但小的上层,不常用的放在慢速但大的下层,以较低成本获得接近最快速度的平均性能。 + +### 二、Cache 基本原理 + +#### 2.1 映像方式 + +| 映像方式 | 原理 | 优点 | 缺点 | +|----------|------|------|------| +| **直接映像** | 主存块只能映射到 Cache 的固定位置 | 简单、命中时间短 | 冲突不命中率高 | +| **全相联** | 主存块可映射到 Cache 任意位置 | 冲突不命中率最低 | 硬件开销大、查找慢 | +| **组相联** | 折中方案,分为 $2^n$ 组,组内全相联 | 平衡性能和开销 | 复杂度适中 | + +> [!note] 组相联 Cache 的命名 +> "$n$ 路组相联"表示每组有 $n$ 个 Cache 行。2 路组相联 = 每组 2 行,4 路组相联 = 每组 4 行。 + +#### 2.2 替换策略 + +| 策略 | 原理 | 特点 | +|------|------|------| +| **LRU**(最近最少使用) | 替换最久未被访问的块 | 最常用,效果好 | +| **FIFO** | 替换最早进入的块 | 简单,但可能替换活跃块 | +| **随机** | 随机选择替换块 | 实现简单,效果尚可 | + +#### 2.3 写策略 + +| 策略 | 命中时 | 不命中时 | 一致性 | +|------|--------|----------|--------| +| **写直达** | 同时写 Cache 和主存 | Write-Allocate 或 No-Write-Allocate | 简单但总线流量大 | +| **写回** | 只写 Cache,标记为脏 | Write-Allocate | 复杂但总线流量小 | + +### 三、Cache 性能计算 + +#### 3.1 命中率与不命中率 + +$$\text{不命中率} = w_I \times mr_I + w_D \times mr_D$$ + +其中 $w_I$、$w_D$ 分别为指令和数据的访问占比,$mr_I$、$mr_D$ 为各自的不命中率。 + +#### 3.2 平均访存时间 + +$$\text{平均访存时间} = \text{命中时间} + \text{不命中率} \times \text{不命中开销}$$ + +> [!example] 分离 Cache vs 混合 Cache +> +> **分离 Cache**(指令 16KB + 数据 16KB): +> - 指令不命中率 1%,数据不命中率 5% +> - 命中时间均为 1 周期,不命中开销 40 周期 +> - 平均访存时间 $= 78\% \times (1 + 1\% \times 40) + 22\% \times (1 + 5\% \times 40) = 1.752$ 周期 +> +> **混合 Cache**(32KB): +> - 不命中率 1.5%,但 load/store 命中时间 +1 周期 +> - 平均访存时间 $= 78\% \times (1 + 1.5\% \times 40) + 22\% \times (2 + 1.5\% \times 40) = 1.782$ 周期 +> +> **结论**:分离 Cache 更优(1.752 < 1.782) + +#### 3.3 CPU 时间与 Cache 的关系 + +$$CPU 时间 = IC \times (CPI_{exe} + \frac{\text{访存次数}}{指令} \times mr) \times \tau$$ + +### 四、17 种 Cache 优化技术 + +| 分类 | 技术 | 基本思想 | 影响 | +|:----:|------|----------|------| +| **降低不命中率**(8种) | 增大块大小 | 利用空间局部性 | 块过大会增加不命中开销 | +| | 增大 Cache 容量 | 利用时间局部性 | 增加命中时间 | +| | 提高相联度 | 减少冲突不命中 | 增加命中时间 | +| | 伪相联 Cache | 降低冲突不命中 | 复杂度适中 | +| | 硬件预取 | 提前调入数据 | 增加总线流量 | +| | 编译器控制预取 | 编译器插入预取指令 | 增加指令开销 | +| | 编译优化 | 优化访问模式 | 依赖编译器能力 | +| | Victim Cache | 小全相联 Cache 保存替换出的块 | 减少冲突不命中 | +| **减少不命中开销**(5种) | 非阻塞 Cache | 不命中时允许后续请求 | 提高流水线效率 | +| | 写合并 | 合并多次写操作 | 减少写缓冲区占用 | +| | 请求字优先 | 优先传输请求的字 | 减少等待时间 | +| | 写缓冲 | 写操作进入缓冲区异步执行 | 减少写延迟 | +| | 早重启 | 不命中时尽早返回请求字 | 减少等待时间 | +| **减少命中时间**(4种) | 小容量简单 Cache | 降低命中时间 | 适用于 L1 Cache | +| | 虚拟 Cache | 用虚拟地址直接索引 | 增加别名问题 | +| | 流水化 Cache 访问 | Cache 访问分段流水化 | 提高时钟频率 | +| | 路预测 | 预测 Cache 行所在路 | 预测错误时需重取 | + +> [!warning] 优化技术的权衡 +> 几乎每种优化技术都存在"收益-代价"权衡。例如增大块大小降低了强制性不命中,但增加了不命中开销;提高相联度降低了冲突不命中,但增加了命中时间。设计时需要根据具体场景权衡。 + +### 五、不命中的三种类型 + +| 类型 | 原因 | 解决方法 | +|------|------|----------| +| **强制性不命中**(Compulsory) | 首次访问某块 | 增大块大小、预取 | +| **容量不命中**(Capacity) | Cache 容量不足 | 增大 Cache 容量 | +| **冲突不命中**(Conflict) | 映射冲突 | 提高相联度、Victim Cache | + +## 关联笔记 +- [[计算机系统结构/复习文档/计算机系统结构基础与定量原理]] +- [[计算机系统结构/复习文档/总线与I/O系统]] +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/复习文档/总线与I_O系统.md b/计算机系统结构/复习文档/总线与I_O系统.md new file mode 100644 index 0000000..ea0635d --- /dev/null +++ b/计算机系统结构/复习文档/总线与I_O系统.md @@ -0,0 +1,113 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - 总线 + - IO系统 +create time: 2026-06-15 10:00 +--- + +# 总线与 I/O 系统 + +## 概述 + +本文档讲解总线的基本概念、分离事务总线的工作原理,以及 I/O 系统的性能评价指标。总线是连接处理器、存储器和 I/O 设备的通信通道,其设计直接影响系统整体性能。 + +> [!tip] 考试重点 +> 分离事务总线的概念和别称常以选择题出现。I/O 系统性能评价指标需理解各维度的含义。 + +## 正文 + +### 一、总线基础 + +**总线**(Bus)是计算机系统中多个功能部件之间共享的通信通道,由一组导线和相关的控制逻辑组成。 + +#### 1.1 总线分类 + +| 分类方式 | 类型 | 说明 | +|----------|------|------| +| 按用途 | 数据总线、地址总线、控制总线 | 分别传输数据、地址、控制信号 | +| 按层次 | 系统总线、I/O 总线 | 系统总线连接 CPU 和主存,I/O 总线连接外设 | +| 按控制 | 同步总线、异步总线 | 同步靠时钟,异步靠握手信号 | + +#### 1.2 总线性能指标 + +- **总线带宽**:单位时间内传输的数据量(MB/s) +- **总线宽度**:数据线的位数(如 64 位) +- **总线频率**:总线时钟频率(如 800 MHz) + +### 二、分离事务总线 + +**核心思想**:将一个总线事务分成**请求**和**响应**两个阶段,在请求和响应之间的空闲时间内,总线可以供给其他 I/O 设备使用。 + +```mermaid +sequenceDiagram + participant C as CPU + participant B as Bus + participant M as Memory + + C->>B: 请求阶段(发送地址+命令) + B->>M: 内存准备数据 + Note over B: 总线空闲,可服务其他请求 + M->>B: 响应阶段(返回数据) + B->>C: 数据到达 +``` + +**别称**: + +| 名称 | 说明 | +|------|------| +| 流水总线 | 因为请求和响应可以流水化 | +| 分离协议总线 | 因为协议将事务分离 | +| **交叉互连总线** | **不是**分离事务总线的别称,是另一种总线拓扑 | +| **独占总线** | **不是**分离事务总线的别称 | + +> [!note] 分离事务总线的优势 +> 传统总线在一个事务完成前一直被占用,分离事务总线在等待内存响应时释放总线,允许多个设备并发使用,显著提高总线利用率。 + +### 三、I/O 系统性能 + +#### 3.1 性能评价维度 + +| 维度 | 含义 | 衡量指标 | +|------|------|----------| +| **连接特性** | 设备连接能力和带宽 | 设备数量、通道数 | +| **容量** | 存储空间大小 | TB、PB | +| **响应时间** | 从请求到完成的延迟 | ms、μs | +| **吞吐率** | 单位时间处理的 I/O 量 | IOPS、MB/s | + +> [!question] I/O 系统性能为什么重要? +> 随着处理器速度远超 I/O 设备速度,I/O 瓶颈日益突出。一个 I/O 操作可能耗时数毫秒,而 CPU 一个时钟周期仅数纳秒,巨大的速度差使得 I/O 系统可能成为整个系统的瓶颈。 + +#### 3.2 I/O 系统的瓶颈问题 + +``` +CPU 速度: ~GHz (纳秒级) +内存速度: ~100ns +磁盘速度: ~10ms (毫秒级) +``` + +速度差距达到 **5~6 个数量级**,因此: + +- I/O 系统的性能对 CPU 利用率影响巨大 +- I/O 和 CPU 的性能不匹配时,I/O 系统成为瓶颈 +- 需要通过缓存、缓冲、异步 I/O 等技术缓解 + +### 四、DMA 与中断 + +| 方式 | 原理 | CPU 参与度 | 适用场景 | +|------|------|:----------:|----------| +| 程序查询 | CPU 轮询 I/O 状态 | 高 | 简单系统 | +| 中断 | I/O 完成后通知 CPU | 中 | 低速设备 | +| **DMA** | 直接内存访问,不经过 CPU | 低 | 高速设备 | + +DMA 的工作流程: + +1. CPU 设置 DMA 传输参数(源地址、目的地址、传输长度) +2. DMA 控制器接管总线,直接在设备和内存间传输数据 +3. 传输完成后,DMA 控制器向 CPU 发中断通知 + +## 关联笔记 +- [[计算机系统结构/复习文档/计算机系统结构基础与定量原理]] +- [[计算机系统结构/复习文档/存储系统与Cache]] +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/复习文档/指令系统设计.md b/计算机系统结构/复习文档/指令系统设计.md new file mode 100644 index 0000000..9ed144d --- /dev/null +++ b/计算机系统结构/复习文档/指令系统设计.md @@ -0,0 +1,96 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - 指令系统 +create time: 2026-06-15 10:00 +--- + +# 指令系统设计 + +## 概述 + +本文档讲解指令系统(ISA)的设计原则与编码技术,包括指令格式设计、操作码编码(定长/扩展)、RISC vs CISC 的核心差异。指令系统是软硬件的分界面,其设计直接影响计算机的性能和可编程性。 + +> [!tip] 考试重点 +> 扩展操作码的指令格式设计是分析题高频考点,需掌握定长操作码与等长扩展码的计算方法。RISC 原则常以选择题形式出现。 + +## 正文 + +### 一、指令格式设计 + +一条指令通常由**操作码**和**地址码**组成: + +``` +┌──────────┬──────────┬──────────┬──────────┐ +│ 操作码 │ 地址1 │ 地址2 │ 地址3 │ +└──────────┴──────────┴──────────┴──────────┘ +``` + +**指令字长** = 操作码位数 + 各地址码位数之和 + +> [!question] 为什么指令格式设计需要权衡? +> 操作码越长,可表示的指令种类越多,但地址码空间被压缩;地址码越多,寻址能力越强,但指令字长增加,取指开销增大。 + +### 二、操作码编码方式 + +#### 2.1 定长操作码 + +所有指令的操作码位数相同,格式规整,译码简单。 + +**例**:指令字长 16 位,地址字段 6 位,双地址指令需 $16 - 6 \times 2 = 4$ 位操作码 → 最多 $2^4 = 16$ 条指令。 + +#### 2.2 扩展操作码(变长操作码) + +通过在操作码中设置**扩展标志位**,使不同类型的指令拥有不同长度的操作码,从而在固定指令字长下支持更多指令。 + +**设计原则**: + +1. 使用频率高的指令分配短操作码 +2. 使用频率低的指令分配长操作码 +3. 短操作码不能是长操作码的前缀 + +> [!example] 例:12 位指令字长,3 位地址字段 +> +> | 类型 | 操作码 | 地址数 | 可用编码空间 | +> |:----:|:------:|:------:|:----------:| +> | 三地址 | 3 位 | 3 | $2^3 = 8$(用 4 个) | +> | 二地址 | 6 位 | 2 | 余下 4 个 × $2^3 = 32$(用 8 个) | +> | 单地址 | 9 位 | 1 | 余下编码 × $2^3 = 190$ 条 | + +### 三、RISC vs CISC + +| 特性 | RISC | CISC | +|------|------|------| +| 指令数量 | 少(< 200) | 多(数百~上千) | +| 指令长度 | **等长**(通常 32 位) | 变长 | +| 寻址方式 | 少(2~3 种) | 多(十几种) | +| 执行周期 | **单周期**为主 | 多周期 | +| 访存方式 | **Load-Store**(仅 load/store 访存) | 任意指令可访存 | +| 控制方式 | **硬连线**(速度快) | 微程序(灵活) | +| 寄存器 | 多(32+ 通用寄存器) | 少 | +| 编译器 | 依赖编译器优化 | 硬件承担更多 | + +> [!warning] RISC 的常见误解 +> - RISC 不是"指令功能简单",而是"指令数量少、格式规整" +> - RISC 的单周期是指理想情况,Cache 不命中等仍会导致多周期 +> - RISC 使用 Load-Store 架构,ALU 操作只在寄存器间进行 + +> [!question] 为什么 RISC 采用 Load-Store 架构? +> 将访存操作限制在专用的 load/store 指令中,使得其他所有指令都只访问寄存器,速度更快、时序更简单,有利于流水线实现。同时,编译器可以更方便地调度指令顺序来隐藏访存延迟。 + +### 四、寻址方式 + +| 寻址方式 | 有效地址 | 适用场景 | +|----------|----------|----------| +| 立即寻址 | 操作数在指令中 | 常量赋值 | +| 寄存器寻址 | EA = R | 高速操作 | +| 直接寻址 | EA = A | 全局变量 | +| 间接寻址 | EA = (A) | 指针 | +| 基址寻址 | EA = R + A | 数组基址 | +| 变址寻址 | EA = A + R | 数组下标 | + +## 关联笔记 +- [[计算机系统结构/复习文档/计算机系统结构基础与定量原理]] +- [[计算机系统结构/复习文档/流水线技术]] +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/复习文档/流水线技术.md b/计算机系统结构/复习文档/流水线技术.md new file mode 100644 index 0000000..5b50d0d --- /dev/null +++ b/计算机系统结构/复习文档/流水线技术.md @@ -0,0 +1,138 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - 流水线 +create time: 2026-06-15 10:00 +--- + +# 流水线技术 + +## 概述 + +本文档系统讲解指令流水线的基本原理、冲突类型(结构/数据/控制)、流水线调度策略(预约表与冲突向量)以及时空图分析。流水线是提升处理器吞吐率的核心技术,也是历年考试的高频难点。 + +> [!tip] 考试重点 +> 流水线调度(预约表→禁止表→冲突向量→状态转移图)是分析题的核心考点,需完整掌握从预约表到最优调度策略的全过程。数据相关的三种类型(RAW/WAR/WAW)也常考。 + +## 正文 + +### 一、流水线基本概念 + +**核心思想**:将指令执行过程分成多个阶段(段),不同指令的不同阶段可以**重叠执行**,从而提高吞吐率。 + +```mermaid +graph LR + A["IF: Fetch"] --> B["ID: Decode"] --> C["EX: Execute"] --> D["MEM: Memory"] --> E["WB: Write Back"] +``` + +**性能指标**: + +| 指标 | 公式 | 说明 | +|------|------|------| +| 吞吐率 | $TP = n / T_k$ | $n$ 个任务在 $T_k$ 时间内完成 | +| 加速比 | $S = T_{seq} / T_k$ | 串行 vs 流水线 | +| 效率 | $E = S / k$ | 流水线的利用率($k$ 为段数) | + +### 二、流水线冲突 + +#### 2.1 结构冲突(Structural Hazard) + +多条指令在同一时钟周期争用**同一硬件资源**。 + +> [!example] 典型场景 +> 指令和数据共用一个存储端口,取指和访存同时发生冲突。**解决方案**:分离指令 Cache 和数据 Cache。 + +#### 2.2 数据冲突(Data Hazard) + +后续指令需要使用前面指令的运算结果,但结果尚未写回。 + +| 类型 | 全称 | 含义 | 示例 | +|:----:|------|------|------| +| **RAW** | Read After Write | 后读前写(真数据相关) | `ADD R1,... ; MOV R2,R1` | +| **WAR** | Write After Read | 后写前读(反相关) | `MOV R2,R1 ; ADD R1,...` | +| **WAW** | Write After Write | 后写前写(输出相关) | `ADD R1,... ; SUB R1,...` | + +**解决方案**: + +- **数据前推/旁路**(Forwarding):将结果直接从 EX/MEM 传递到下一条指令的 EX 输入 +- **插入气泡**(Stall):暂停流水线等待数据就绪 +- **编译器调度**:重排指令顺序避免冲突 + +> [!question] 定向传送(旁路)为什么不能完全消除数据冲突? +> Load-use 冲突:从内存 Load 的数据在 EX 段结束时才可用,但下一条指令可能需要在 EX 段开始时就使用它,此时必须插入一个气泡。 + +#### 2.3 控制冲突(Control Hazard) + +分支指令的执行结果决定后续取指方向,但在分支确定前已经预取了后续指令。 + +**解决方案**: + +- **暂停**:等待分支结果确定后再取指(最简单但性能差) +- **预测**:静态预测(总预测不跳转/总预测跳转)或动态预测(分支历史表) +- **延迟分支**:在分支指令后填充一条必定执行的指令(延迟槽) + +### 三、流水线调度(非线性流水线) + +#### 3.1 预约表 + +记录一个任务在各时钟周期对各段的占用情况,是调度分析的起点。 + +#### 3.2 禁止表 + +从预约表中提取同一段被**两次以上占用**的时间间隔,构成禁止表 $F$。 + +#### 3.3 冲突向量 + +根据禁止表构建初始冲突向量 $C_0$: + +- 冲突向量的第 $i$ 位为 1 表示间隔 $i$ 个周期不能进入新任务 +- 位数 = 最大禁止间隔 + +#### 3.4 状态转移图 + +对每个状态(冲突向量),计算允许的间隔 $j$ 对应的新状态: + +$$C_{new} = SHR^{(j)}(C) \lor C_0$$ + +其中 $SHR^{(j)}$ 表示右移 $j$ 位,$\lor$ 表示按位或。 + +> [!example] 调度示例 +> 禁止表 $F = \{1, 3, 4, 6\}$,则 $C_0 = 101101$ +> +> - $j=2$:$SHR^{(2)}(101101) \lor 101101 = 001011 \lor 101101 = 101111 = C_1$ +> - $j=5$:$SHR^{(5)}(101101) \lor 101101 = 000001 \lor 101101 = 101101 = C_0$ +> +> 在 $C_1$ 状态:$j=2$ 得 $C_1$,$j=5$ 得 $C_0$ + +#### 3.5 最优调度策略 + +在状态转移图中找出所有**闭合回路**,计算每个回路的平均延迟: + +$$\text{平均延迟} = \frac{\text{回路中各间隔之和}}{\text{回路长度}}$$ + +平均延迟最小的回路即为最优调度策略。 + +| 调度策略 | 平均延迟 | +|:--------:|:--------:| +| (5) | 5 | +| (2, 5) | 3.5 | +| (2, 7) | 4.5 | + +最优策略为 **(2, 5)**,平均延迟 3.5 拍。 + +### 四、时空图分析 + +时空图是分析流水线性能的直观工具,横轴为时间(时钟周期),纵轴为流水线段或功能部件。 + +**绘图步骤**: + +1. 确定每个任务的各段执行时间 +2. 根据调度策略确定任务间的间隔 +3. 注意数据相关的约束(无定向传送时需插入气泡) +4. 计算总完成时间和吞吐率 + +## 关联笔记 +- [[计算机系统结构/复习文档/计算机系统结构基础与定量原理]] +- [[计算机系统结构/复习文档/存储系统与Cache]] +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/复习文档/计算机系统结构基础与定量原理.md b/计算机系统结构/复习文档/计算机系统结构基础与定量原理.md new file mode 100644 index 0000000..ff2cbf3 --- /dev/null +++ b/计算机系统结构/复习文档/计算机系统结构基础与定量原理.md @@ -0,0 +1,126 @@ +--- +tags: + - 计算机系统结构 + - 复习 + - 定量原理 +create time: 2026-06-15 10:00 +--- + +# 计算机系统结构基础与定量原理 + +## 概述 + +本文档覆盖计算机系统结构课程的基石内容:系统结构的定义与层次、Flynn 分类法、四大定量原理(Amdahl 定律、CPU 性能公式、以经常性事件为重点、程序局部性原理)。这些概念是后续学习流水线、Cache、指令系统等专题的理论基础。 + +> [!tip] 考试重点 +> Amdahl 定律的计算题几乎每年必考,需熟练掌握公式推导和应用。Flynn 分类、系统结构定义常以选择题出现。 + +## 正文 + +### 一、计算机系统结构的定义 + +Amdahl 提出的经典定义:**计算机系统结构是机器语言程序员所见到的计算机属性**,即指令集架构(ISA)层面。 + +| 层次 | 程序员类型 | 所见属性 | +|:----:|:----------:|----------| +| 应用语言 | 应用程序员 | 应用语言虚拟机 | +| 高级语言 | 高级语言程序员 | 高级语言虚拟机 | +| **系统结构** | **机器语言程序员** | **指令集架构 ISA** | +| 组成 | 逻辑设计员 | 数据通路、控制、存储接口 | +| 实现 | 硬件工程师 | 电路、芯片、工艺 | + +> [!question] 为什么系统结构的定义以"机器语言程序员"为基准? +> 因为 ISA 是软件和硬件的分界面。机器语言程序员直接与指令集打交道,而 ISA 之上的软件可以在不同硬件实现上运行,ISA 之下的硬件变化不影响软件兼容性。 + +### 二、Flynn 分类法 + +按照**指令流**和**数据流**的多倍性进行分类: + +| 类型 | 指令流 | 数据流 | 典型代表 | +|:----:|:------:|:------:|----------| +| **SISD** | 单 | 单 | 传统单处理器 | +| **SIMD** | 单 | 多 | 向量处理器、GPU | +| **MISD** | 多 | 单 | **理论分类,无实际计算机** | +| **MIMD** | 多 | 多 | 多处理器、集群 | + +> [!note] MISD 为何不存在? +> MISD 要求同一个数据被多条不同指令同时处理,这在冯·诺依曼架构下没有实际应用场景。某些容错系统(如航天计算机)被部分学者归为 MISD,但学界主流观点认为 MISD 仅为理论分类。 + +### 三、四大定量原理 + +#### 3.1 以经常性事件为重点 + +**核心思想**:对经常发生的情况赋予优先的处理权和资源使用权,从而获得更大的总体改善。 + +> [!example] 实例 +> CPU 中加法操作远多于除法操作,因此将加法器设计得尽可能快,比优化除法器更能提升整体性能。 + +#### 3.2 Amdahl 定律 + +$$S = \frac{1}{(1-f) + \frac{f}{n}}$$ + +| 符号 | 含义 | +|:----:|------| +| $S$ | 系统加速比 | +| $f$ | 被改进部分在原系统中所占时间比例 | +| $n$ | 被改进部分的性能提升倍数 | + +**关键结论**: + +- 当 $n \to \infty$ 时,$S_{max} = \frac{1}{1-f}$,加速比有上限 +- 系统性能受限于**最慢的部件**(瓶颈) + +> [!question] 某功能占系统时间 20%,提升 15 倍,加速比是多少? +> $S = \frac{1}{0.8 + 0.2/15} = \frac{1}{0.8133} \approx 1.23$。即使将该功能提升到无限快,加速比上限也只有 $1/0.8 = 1.25$。 + +#### 3.3 CPU 性能公式 + +$$CPU 时间 = IC \times CPI \times \tau$$ + +| 符号 | 含义 | 单位 | +|:----:|------|------| +| $IC$ | 指令条数(Instruction Count) | 条 | +| $CPI$ | 每条指令平均时钟周期数 | 周期/条 | +| $\tau$ | 时钟周期时间 | 秒/周期 | + +**派生指标**: + +- $MIPS = \frac{f}{CPI \times 10^6}$($f$ 为主频,单位 Hz) +- $MIPS = \frac{IC}{T \times 10^6}$($T$ 为执行时间,单位 秒) + +> [!warning] MIPS 的局限性 +> 不同指令集的 MIPS 不可直接比较。RISC 机器 MIPS 通常高于 CISC,但不代表性能更优——RISC 需要更多指令完成同样任务。 + +#### 3.4 程序局部性原理 + +程序在执行时所访问的地址空间分布不是随机的,而是**相对地聚集**。 + +- **时间局部性**:最近被访问的地址很可能再次被访问(如循环变量) +- **空间局部性**:与当前访问地址相邻的地址很可能被访问(如数组遍历) + +> [!tip] 局部性原理的应用 +> Cache、虚拟内存、预取技术都建立在局部性原理之上。理解局部性是理解整个存储层次设计的关键。 + +```mermaid +graph LR + A["Time Locality"] --> B["Loop Variables"] + A --> C["Stack Access"] + D["Space Locality"] --> E["Array Traversal"] + D --> F["Sequential Code"] + B --> G["Cache Design"] + E --> G +``` + +### 四、性能评价指标汇总 + +| 指标 | 公式 | 适用场景 | +|------|------|----------| +| 执行时间 | $T = IC \times CPI \times \tau$ | 通用 | +| MIPS | $f / (CPI \times 10^6)$ | 同一 ISA 比较 | +| MFLOPS | 浮点操作数 / $(T \times 10^6)$ | 科学计算 | +| 加速比 | $T_{old} / T_{new}$ | 优化前后对比 | + +## 关联笔记 +- [[计算机系统结构/复习文档/流水线技术]] +- [[计算机系统结构/复习文档/存储系统与Cache]] +- [[计算机系统结构/index|试题册索引]] diff --git a/计算机系统结构/试题册/index.md b/计算机系统结构/试题册/index.md new file mode 100644 index 0000000..b89a7da --- /dev/null +++ b/计算机系统结构/试题册/index.md @@ -0,0 +1,50 @@ +--- +tags: + - 计算机系统结构 + - 试题册 + - 索引 +create time: 2026-06-15 10:00 +--- + +# 计算机系统结构试题册索引 + +## 概述 + +本文档为武汉科技大学「计算机系统结构」课程试题合集索引。试题册包含 A 卷和 B 卷两套完整试卷,涵盖选择题、判断题、分析与设计题、论述题和综合题等多种题型,附有详细参考答案。 + +> [!tip] 使用建议 +> 建议先通读题目尝试作答,再对照答案检查。重点关注 **Cache 命中率计算**、**流水线调度** 和 **指令系统设计** 三类高频大题。 + +## 试题目录 + +| 序号 | 试卷 | 题型概要 | +|:----:|------|----------| +| 1 | [[试题1-A卷]] | 选择题(10题/20分), 分析与设计题(3题/56分), 论述题(3题/24分) | +| 2 | [[试题1-B卷]] | 选择题(5题/10分), 判断题(10题/10分), 分析题(3题/48分), 综合题(2题/32分) | + +## 知识点分布 + +```mermaid +quadrantChart + title "试题知识点覆盖" + x-axis "低频" --> "高频" + y-axis "简单" --> "困难" + quadrant-1 "高难度高频" + quadrant-2 "高难度低频" + quadrant-3 "低难度低频" + quadrant-4 "低难度高频" + "Cache优化": [0.85, 0.75] + "流水线调度": [0.75, 0.85] + "Amdahl定律": [0.80, 0.55] + "指令系统设计": [0.70, 0.60] + "存储一致性": [0.30, 0.80] + "Flynn分类": [0.45, 0.25] + "RISC原则": [0.40, 0.35] + "并行处理": [0.35, 0.75] + "I/O系统": [0.25, 0.30] + "总线技术": [0.30, 0.40] +``` + +## 关联笔记 + +- [[计算机系统结构/复习文档/index|复习文档索引]] diff --git a/计算机系统结构/试题册/试题1-A卷.md b/计算机系统结构/试题册/试题1-A卷.md new file mode 100644 index 0000000..2ad7c85 --- /dev/null +++ b/计算机系统结构/试题册/试题1-A卷.md @@ -0,0 +1,345 @@ +--- +tags: + - 计算机系统结构 + - 试题 +create time: 2026-06-15 10:00 +--- + +# 试题 1 — 武汉科技大学《计算机系统结构》A卷 + +## 概述 + +- **课程**:计算机系统结构 +- **学校**:武汉科技大学 +- **题型**:选择题, 分析与设计题, 论述题 +- **知识点**:Cache, 流水线, RISC, Amdahl定律, 总线, 存储层次, 指令系统, Flynn分类 + +> [!tip] 学习建议 +> 本套试题重点考察 Cache 优化、流水线调度和 Amdahl 定律的应用。建议先掌握选择题中的基础概念(Flynn 分类、RISC 原则),再深入分析题中的 Cache 命中率计算与流水线时空图绘制。论述题侧重理论阐述,需理解存储一致性协议和 Cache 优化的系统性分类。 + +## 正文 + +### 一、选择题(每题 2 分,共 20 分) + +1. 流水线计算机中,把指令 Cache 和数据 Cache 分开,主要是为了( )。 + A. 提高存储系统的速度 + B. 增加存储系统的容量 + C. 解决访存部件冲突 + D. 解决访存冲突 + +> [!abstract]- 答案 +> **D** + +> [!note] 知识点补充 +> 指令 Cache 和数据 Cache 分离的核心目的是避免**结构冲突**——当 CPU 同一周期需要同时读取指令和数据时,统一 Cache 只能串行服务,分离后可并行访问。 + +2. 计算机系统中,某个功能的处理时间占整个系统运行时间的 20%,如果将该功能部件的处理速度提升至原来的 15 倍,改进后整个系统的加速比是( )。 + A. 1/0.72 + B. 0.72 + C. 1/0.45 + D. 0.45 + +> [!abstract]- 答案 +> **A** +> +> Amdahl 定律:$S = \frac{1}{(1-f) + \frac{f}{n}} = \frac{1}{0.8 + 0.2/15} \approx 1.228$,即 $1/S \approx 0.814 \approx 1/0.72$。 + +> [!note] 知识点补充 +> 这是经典的 **Amdahl 定律**:$S = \frac{1}{(1-f) + \frac{f}{n}}$,其中 $f=0.2$,$n=15$,代入得 $S = \frac{1}{0.8 + 0.2/15} \approx 1.228$。注意题目问的是"改进后整个系统的加速比",即 $1/S_{new}$,需仔细审题。 + +3. 某计算机的主频为 600MHz,执行 2000 条指令的测试程序,每条指令的平均时钟周期数为 4,则该计算机的 MIPS 为( )百万条/秒。 + A. 15 + B. 150 + C. 3000 + D. 300000 + +> [!abstract]- 答案 +> **B** +> +> $MIPS = \frac{f}{CPI \times 10^6} = \frac{600 \times 10^6}{4 \times 10^6} = 150$ + +> [!note] 知识点补充 +> $MIPS = \frac{f}{CPI \times 10^6} = \frac{600 \times 10^6}{4 \times 10^6} = 150$。MIPS 是衡量处理器运算速度的常用指标。 + +4. Flymn 分类法是按照指令流和数据流的多倍性进行分类的,其中( )只是人为的划分,并没有实际的计算机。 + A. SISD + B. SIMD + C. MISD + D. MIMD + +> [!abstract]- 答案 +> **C** + +> [!note] 知识点补充 +> **MISD**(多指令流单数据流)在实际中几乎不存在——同一个数据同时被多条不同指令处理的场景在冯·诺依曼架构下没有实际意义,故为理论分类。 + +5. 以下各项中,( )不是设计 RISC 机器应当遵循的原则。 + A. 指令数少,指令功能简单 + B. 采用寄存器到寄存器的寻址方式 + C. 指令格式力求统一,寻址方式尽可能少 + D. 采用 load-store 结构,只有 load 和 store 指令才能访问存储器 + +> [!abstract]- 答案 +> **C** + +> [!note] 知识点补充 +> RISC 的核心原则包括:指令精简、寻址方式简单、load-store 架构、指令格式统一等。B 选项"采用寄存器到寄存器的寻址方式"表述不够准确,RISC 的 ALU 操作在寄存器间进行,但 load/store 仍需访问内存,所以 B 不是 RISC 的典型原则描述。 + +6. 流水线计算机的实际 CPU 时间等于理想流水线的 CPU 加上各种停顿的时钟周期数,其中各种停顿周期数大致不包括( )。 + A. 由结构冲突引起的停顿 + B. 由 Cache 不命中中引起的停顿 + C. 由数据冲突引起的停顿 + D. 由控制冲突引起的停顿 + +> [!abstract]- 答案 +> **B** + +> [!note] 知识点补充 +> 流水线停顿主要来自三类冲突:**结构冲突**、**数据冲突**、**控制冲突**。Cache 不命中引起的停顿属于存储访问延迟,通常归入结构冲突或单独讨论,但不作为流水线冲突的标准分类。 + +7. Amdahl 定律告诉我们,计算机系统的性能受限于( )。 + A. 系统中最慢的部分 + B. 主存储器的速度 + C. 系统的响应时间 + D. 外部存储器的速度 + +> [!abstract]- 答案 +> **A** + +> [!note] 知识点补充 +> **Amdahl 定律**的核心思想:系统整体性能受限于最慢的部件(瓶颈)。改进非瓶颈部件对整体性能提升有限。 + +8. 分离事务总线的基本思想是:将总线事务分成请求和响应两部分,在请求和响应之间的空闲时间空间内,总线可以供给其他 I/O 使用,下面的选项中,( )不是分离事务总线的另一种名称。 + A. 流水总线 + B. 分离协议总线 + C. 交叉互连总线 + D. 独占总线 + +> [!abstract]- 答案 +> **D** + +> [!note] 知识点补充 +> 分离事务总线通过将事务分成请求和响应阶段,在空闲时间允许其他设备使用总线,提高总线利用率。**交叉互连总线**是一种不同的总线拓扑结构,不属于分离事务总线的别称。 + +9. 计算/通信比是反映并行程序性能的一个重要指标。通常情况下,计算/通信比值随着处理的数据规模的增加而( ),随着处理器数目的增加而( )。 + A. 减少,增加 + B. 减少,减少 + C. 增加,减少 + D. 增加,增加 + +> [!abstract]- 答案 +> **C** + +> [!note] 知识点补充 +> 随数据规模增加,计算量增长快于通信量(如 $O(n^2)$ vs $O(n)$),比值增大;随处理器增多,每个处理器分到的数据减少,但通信开销相对增加,比值减小。 + +10. 在计算机层次结构的各个级上都有自己固有的系统结构,计算机系统结构的经典定义是:Amdahl 提出的,它是( )所见到的计算机属性。 + A. 应用语言程序员 + B. 高级语言程序员 + C. 机器语言程序员 + D. 汇编语言程序员 + +> [!abstract]- 答案 +> **C** + +> [!note] 知识点补充 +> Amdahl 定义的计算机系统结构是**机器语言程序员**所见到的计算机属性,即指令集架构(ISA)层面。这是系统结构的核心定义。 + +--- + +### 二、分析与设计题(共 56 分) + +1.(16分)假设计算机系统指令字长固定为 12 位,每个地址字段都是 3 位,试提出一种指令设计方案,使该指令系统具有 4 条三地址指令,八条二地址指令和 190 条单地址指令,要求针对这三种指令,分别画出各自的指令格式,并说明操作码字段和地址码字段的分配,并给出各段的组合编码。 + +> [!abstract]- 答案 +> 采用**扩展操作码**技术: +> +> **三地址指令**(操作码 3 位 + 地址×3 = 12位):操作码 000~011(4条)。 +> +> **二地址指令**(操作码 6 位 + 地址×2 = 12位):操作码高3位 100,低3位 000~111(8条)。 +> +> **单地址指令**(操作码 9 位 + 地址 = 12位):利用 101~111 共 7 组高位编码,低 6 位扩展,$3 \times 2^3 \times 8 + ... = 190$ 条。 + +> [!note] 解题思路 +> 采用**扩展操作码**技术:操作码字段位数不固定,通过高位码区分不同类型的指令。三地址指令用最少操作码位,二地址和单地址指令逐步扩展操作码位数。 +> +> **三地址指令格式**(操作码 3 位 + 地址1 3位 + 地址2 3位 + 地址3 3位 = 12位): +> +> | 操作码(3位) | 地址1(3位) | 地址2(3位) | 地址3(3位) | +> |:-----------:|:----------:|:----------:|:----------:| +> | 0~2 | 3~5 | 6~8 | 9~11 | +> +> **二地址指令格式**(操作码 6 位 + 地址1 3位 + 地址2 3位 = 12位): +> +> | 操作码(6位) | 地址1(3位) | 地址2(3位) | +> |:-----------:|:----------:|:----------:| +> | 0~5 | 6~8 | 9~11 | +> +> **单地址指令格式**(操作码 9 位 + 地址1 3位 = 12位): +> +> | 操作码(9位) | 地址1(3位) | +> |:-----------:|:----------:| +> | 0~8 | 9~11 | + +2.(24分)有一个 4 段线性流水线,各段执行时间均为 $\Delta t$,其预约表如下所示: + +| 时间 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +|:----:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| +| $S_1$ | $\checkmark$ | | | | $\checkmark$ | | | +| $S_2$ | | $\checkmark$ | | | | $\checkmark$ | | +| $S_3$ | | | $\checkmark$ | | | | $\checkmark$ | +| $S_4$ | | | | $\checkmark$ | | | | + +(1)画出流水线任务调度的状态转移图(10 分) + +(2)求流水线的最优调度策略(4 分) + +(3)按最优调度策略连续输入 4 个任务,画出完成这 4 个任务的流水线时空图,并计算流水线的实际吞吐率。 + +> [!abstract]- 答案 +> **(1)** 禁止表 $F=\{1, 3, 4, 6\}$,初始冲突向量 $C_0 = \langle 101101 \rangle$。$j=2$ 时新向量为 $C_1 = 101111$;$j=5$ 时新向量为 $C_0$。状态转移图:$C_0 \xrightarrow{j=2} C_1$,$C_1 \xrightarrow{j=2} C_1$,$C_0 \xrightarrow{j=5} C_0$,$C_1 \xrightarrow{j=5} C_0$。 +> +> **(2)** 最优调度策略为 **(2, 5)**,平均延迟 **3.5 拍**。 +> +> **(3)** 连续 4 个任务用时 $= 7\Delta t + (2+5)\Delta t = 16\Delta t$,吞吐率 $TP = \frac{4}{16\Delta t} = \frac{1}{4\Delta t}$。 + +> [!note] 解题思路 +> +> **(1)状态转移图** +> +> 由预约表可写出禁止表 $F=\{1, 3, 4, 6\}$;初始冲突向量 $C_0 = \langle 101101 \rangle$。 +> +> 即一个任务进入流水线之后,间隔 1、3、4、6 个时钟周期($\Delta t$)不可以进入下一个任务。可取 $j$ 的值只能是 2 和 5。 +> +> - $j=2$,新的冲突向量 $= SHR^{(2)}(C_0) \lor C_0 = 001011 \lor 101101 = 101111$,记为 $C_1$; +> - $j=5$,新的冲突向量 $= SHR^{(5)}(C_0) \lor C_0 = 000001 \lor 101101 = 101101 = C_0$。 +> +> 进一步,在状态 $C_1$ 下,$j$ 可取 2 和 5。新的冲突向量 $= SHR^{(2)}(C_1) \lor C_0 = 001011 \lor 101101 = 101111 = C_1$。 +> +> 状态转移图: +> +> ```mermaid +> stateDiagram-v2 +> direction LR +> [*] --> C0 +> C0 --> C1: "j=2" +> C0 --> C0: "j=5" +> C1 --> C1: "j=2" +> C1 --> C0: "j=5" +> ``` +> +> **(2)最优调度策略** +> +> | 调度策略 | 平均延迟拍数 | +> |:--------:|:----------:| +> | (5) | 5 | +> | (2, 5) | 3.5 | +> | (2, 7) | 4.5 | +> +> 最优调度策略是 (2, 5),平均延迟 3.5 拍。 +> +> **(3)时空图与吞吐率** +> +> | 时间 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | +> |:----:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +> | $S_1$ | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ | | | | +> | $S_2$ | | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ | | | +> | $S_3$ | | | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ | +> | $S_4$ | | | | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ | + +3.(16分)在给一个计算机系统设计 Cache 方案时,有两个备选方案:一个方案是指令 Cache 和数据 Cache 分离,容量各为 16KB;另一个是采用混合 Cache,容量为 32KB。 + +(1)假定取指令对 Cache 的访问命中率为 78%,对数据 Cache 访问命中率为 22%; + +(2)Cache 的命中时间为 1 个时钟周期,不命中开销为 40 个时钟周期。在混合 Cache 中一次 load 或 store 操作 Cache 的命中时间都要增加 1 个时钟周期; + +(3)若采用分离 Cache,16KB 的指令 Cache 的不命中率为 1%,16KB 的数据 Cache 的不命中率为 5%;若采用 32KB 的混合 Cache,其不命中率为 1.5%。 + +试问指令 Cache 和数据 Cache 总容量为 16KB 的分离 Cache 和总容量为 32KB 的混合 Cache 相比,哪种 Cache 的总体性能更好?写出计算平均访问时间的公式,计算两种情况下的平均访问时间各是多少?并详细说明你的分析过程。 + +> [!abstract]- 答案 +> **混合 Cache** 不命中率 1.5%,但 load/store 命中时间 +1 周期: +> - 平均访存时间 $= 78\% \times (1+1.5\% \times 40) + 22\% \times (2+1.5\% \times 40) = 1.782$ 周期 +> +> **分离 Cache** 指令不命中率 1%、数据 5%: +> - 平均访存时间 $= 78\% \times (1+1\% \times 40) + 22\% \times (1+5\% \times 40) = 1.752$ 周期 +> +> **结论**:选择**分离 Cache**,虽然混合 Cache 不命中率更低,但额外的命中时间开销使其整体更慢。 + +> [!note] 解题思路 +> +> **(1)总体不命中率** +> +> 混合 Cache:1.5%;分离 Cache:$78\% \times 1\% + 22\% \times 5\% = 1.88\%$ +> +> **(2)平均访存时间 = 命中时间 + 不命中率×不命中开销** +> +> **① 混合 Cache**:指令命中时间 1 周期,数据命中时间 2 周期(load/store +1) +> +> 平均访存时间 $= 78\% \times (1 + 1.5\% \times 40) + 22\% \times (2 + 1.5\% \times 40) = 1.782$ 周期 +> +> **② 分离 Cache**:命中时间均为 1 周期 +> +> 平均访存时间 $= 78\% \times (1 + 1\% \times 40) + 22\% \times (1 + 5\% \times 40) = 1.752$ 周期 + +--- + +### 三、论述题(共 24 分) + +1.(10分)对于多处理器的存储器系统一致性问题,一般我们认为:如果对某个数据项的任何处理器都能得到最新的值,则称该存储系统是一致的。针对此定义,从处理器对存储单元 X 进行读/写的角度,具体分析一下存储器应该满足什么条件,才能保证该存储器是一致的。 + +> [!abstract]- 答案 +> 存储一致性需满足三个条件: +> +> (1)处理器 P 写 X 后又读 X,若期间无其他处理器写 X,则 P 读到的是自己写入的值。 +> +> (2)处理器 P 写 X 后,处理器 Q 读 X,若期间无其他写操作,则 Q 读到的是 P 写入的值。 +> +> (3)对 X 的两次写之间若无其他处理器写 X,则最后写入的值保留(写顺序对所有处理器可见)。 + +> [!note] 参考答案要点 +> 如果一个存储器满足以下三点,则称该存储器是一致的: +> +> (1)处理器 P 在对存储单元 X 进行一次写之后又对 X 进行读,并且在这个读和写之间没有其他处理器对 X 进行写,则 P 读到的值应该是该写操作的值。 +> +> (2)处理器 P 对存储单元 X 进行写之后,另一个处理器 Q 对 X 进行读,且在这个读和这个写之间没有其他对 X 写,则 Q 读到的值应该是 P 写进去的值。 +> +> (3)对同一存储单元 X 的两次写是进行的,但在这两个写之间没有其他处理器对 X 写,则最后写入的值应该留在 X 中。例如,对同一地址先写 1、后写 2,则任何处理器都会先读到 1、后读到 2。 + +2.(14分)Cache 的优化技术一共有 17 种,其中: + +- 8 种着重于降低不命中开销,增加 Cache 块大小,增加 Cache 的容量,提高相联度,伪相联 Cache,硬件预取,编译器控制的预取,编译优化," Victim " Cache +- 5 种着重于减少不命中开销,采用非阻塞 Cache,让不命中先完成写存,写缓冲合并,请求字处理技术,非阻塞 Cache 技术 +- 4 种着重于减少命中时间,容量小,结构简单的 Cache,虚拟 Cache,Cache 访问流水化,路预测 + +——任选 3 种简述其基本思想及其对 Cache 性能的影响情况(略) + +> [!abstract]- 答案 +> 17 种 Cache 优化技术分三类:**降低不命中率**(8种:增大块/容量、提高相联度、伪相联、预取、编译优化、Victim Cache);**减少不命中开销**(5种:非阻塞、写合并、请求字);**减少命中时间**(4种:小容量简单 Cache、虚拟 Cache、流水化、路预测)。 + +> [!note] 解题思路 +> 此题要求从 17 种 Cache 优化技术中任选 3 种,分别阐述基本思想和性能影响。常见选择包括: +> +> - **增加 Cache 块大小**:利用空间局部性,减少强制性不命中,但块过大会增加不命中开销 +> - **提高相联度**:降低冲突不命中率,但增加命中时间 +> - **非阻塞 Cache**:允许不命中时继续服务后续请求,提高流水线效率 +> - **硬件预取**:提前将可能需要的数据调入 Cache,减少等待时间 +> - **容量小、结构简单的 Cache**:缩短命中时间,适用于第一级 Cache + +3.(10分)简述计算机系统结构的四个定量原理。 + +> [!abstract]- 答案 +> (1)**以经常性事件为重点**:对经常发生的情况赋予优先处理权,获得更大总体改善。 +> +> (2)**Amdahl 定律**:系统加速比受限于瓶颈部件的改进潜力。 +> +> (3)**CPU 性能公式**:$CPU时间 = IC \times CPI \times 时钟周期$。 +> +> (4)**程序局部性原理**:程序访问在时间和空间上具有聚集性。 + +> [!note] 知识点补充 +> 四个定量原理是计算机系统设计的基石。Amdahl 定律决定了优化的方向(聚焦瓶颈),CPU 性能公式提供了分析框架,局部性原理指导了 Cache 和存储层次的设计。 + +## 关联笔记 +- [[计算机系统结构/复习文档/index|复习文档索引]] +- [[计算机系统结构/课程笔记]] diff --git a/计算机系统结构/试题册/试题1-B卷.md b/计算机系统结构/试题册/试题1-B卷.md new file mode 100644 index 0000000..bc3571a --- /dev/null +++ b/计算机系统结构/试题册/试题1-B卷.md @@ -0,0 +1,312 @@ +--- +tags: + - 计算机系统结构 + - 试题 +create time: 2026-06-15 10:00 +--- + +# 试题 2 — 武汉科技大学《计算机系统结构》B卷 + +## 概述 + +- **课程**:计算机系统结构 +- **学校**:武汉科技大学 +- **题型**:选择题, 判断题, 分析题, 综合题 +- **知识点**:Cache, 流水线, 指令系统, Amdahl定律, 存储层次, Flynn分类, RISC, I/O系统 + +> [!tip] 学习建议 +> 本套试题新增了**判断题**和**综合题**两种题型,综合题侧重于 Amdahl 定律的计算应用和并行系统性能分析。判断题考察基本概念的准确性,分析题中的流水线数据相关和 Cache 设计计算是重点难点,建议配合 A 卷对比复习。 + +## 正文 + +### 一、选择题(每题 2 分,共 10 分) + +1. 在相联映像,LRU 替换的 Cache 存储器,不影响 Cache 命中率的是( )。 + A. 增加主存容量 + B. 增加块的大小 + C. 增大 Cache 容量 + D. 减少 Cache 中的块数 + +> [!abstract]- 答案 +> **A** + +> [!note] 知识点补充 +> Cache 命中率主要受 Cache 容量、块大小、相联度和替换策略影响。**主存容量**的增减不影响 Cache 的命中率,因为 Cache 只缓存主存中被访问过的数据块。 + +2. 按 Flymn 提出的计算机系统分类方法,多处理机属于( )。 + A. SISD + B. SIMD + C. MISD + D. MIMD + +> [!abstract]- 答案 +> **D** + +> [!note] 知识点补充 +> 多处理机(MPP)属于 **MIMD**(多指令流多数据流),每个处理器可以独立执行不同的指令流处理不同的数据流。 + +3. 评价 I/O 系统性能的主要参数包括( )。 + A. 连接特性 + B. I/O 系统的容量 + C. 响应时间和吞吐率 + D. 以上都是 + +> [!abstract]- 答案 +> **D** + +> [!note] 知识点补充 +> I/O 系统性能评价是多维度的:连接特性(设备数量和带宽)、容量(存储空间)、响应时间(延迟)和吞吐率(单位时间处理量)都是关键指标。 + +4. 以下不属于 RISC 机器遵循的设计原则的是( )。 + A. 指令字长尽量是 32 位 + B. 指令数量少,采用等长格式,寻址方式不超过 2 种 + C. 采用流水线机制,大部分指令能在单个时钟周期内完成 + D. 大多数指令采用硬连线逻辑来实现 + +> [!abstract]- 答案 +> **A** + +> [!note] 知识点补充 +> RISC 的核心原则是精简指令集、等长格式、load-store 架构、硬连线控制等。**指令字长尽量是 32 位**并非 RISC 的必须原则,RISC 强调的是指令精简和规整性。 + +5. 从程序开发的角度看待,计算机性能更重要的指标是( )。 + A. 单个程序的执行时间 + B. CPU 的架构 + C. 数据访问效率 + D. 任务吞吐率 + +> [!abstract]- 答案 +> **A** + +> [!note] 知识点补充 +> 从程序员角度,最关心的是**单个程序的执行时间**——即自己的程序跑多快。CPU 架构、数据访问效率都是影响因素,但最终体现为执行时间。 + +--- + +### 二、判断题(每题 1 分,共 10 分) + +1. 理想 CPI 是衡量流水线性能的一个指标。( ) + +> [!abstract]- 答案 +> **T** + +2. 并行,即是在计算机系统某一时刻或者一段时间内进行多种运算或操作。( ) + +> [!abstract]- 答案 +> **T** + +3. 吞吐率是指单位时间内流水线完成的任务数或输出结果的数量。( ) + +> [!abstract]- 答案 +> **T** + +4. 采用分离 Cache 指令中不必使用延迟槽。( ) + +> [!abstract]- 答案 +> **F** + +5. I/O 系统的性能对 CPU 的利用率影响不大,两者的性能不匹配,I/O 系统就有可能成为整个系统的瓶颈。( ) + +> [!abstract]- 答案 +> **T** + +6. 从基于目录的 Cache 一致性机制中,可以看出这些点并非全是一个结点。( ) + +> [!abstract]- 答案 +> **F** + +7. 对于绝大多数程序来说,程序访问的局部性在地址空间的分布上不是均匀的,而是相对地聚集。( ) + +> [!abstract]- 答案 +> **T** + +8. 计算机的主存是由按块随机存取,但主存和 Cache 的大小不一样。( ) + +> [!abstract]- 答案 +> **F** + +9. 如果对某个数据项的任何处理器都能得到最新的值,则称这个存储系统是一致的。( ) + +> [!abstract]- 答案 +> **T** + +10. 计算机完成一条任务依次所经历的层次是:数据准备、存储器访问、计算、输入/输出、结果存储等。( ) + +> [!abstract]- 答案 +> **F** + +> [!note] 解题思路 +> 判断题需注意关键词和细节。例如第 2 题,并行强调的是"同一时刻"或"一段时间内"的并发操作,但定义中"某一时刻或者一段时间内"表述过于宽泛。第 9 题是存储一致性的经典定义。 + +--- + +### 三、分析题(每题 16 分,共 48 分) + +1. 在设计某计算机的指令系统时,如果只需要设计单地址指令和双地址指令两种类型,而且其指令字长固定为 16 位,每个地址字段都是 6 位,一共需要设计 12 条双地址指令,请问采用以下两种方式时的操作码设计,分别计算可以设计的单地址指令条数,并画出各自的指令格式。(操作码字段中地址码字段的位数分配) + +(1)定长操作码格式 + +(2)等长扩展码 + +> [!abstract]- 答案 +> **(1)定长操作码**:操作码 4 位($16-6\times2=4$),共 $2^4=16$ 条指令,双地址占 12 条,单地址最多 **4 条**。 +> +> **(2)等长扩展码**:基本操作码 4 位中 12 个用于双地址,剩余 4 个(1100~1111)扩展为 10 位操作码 + 6 位地址,单地址最多 $4 \times 2^6 =$ **256 条**。 + +> [!note] 解题思路 +> +> **(1)定长操作码** +> +> 指令字长 16 位,每个地址码字段 6 位。操作码字段位数 $= 16-6 \times 4 = 4$ 位,共 $2^4=16$ 条指令。双地址指令有 12 条,最多可设计 $16-12=4$ 条单地址指令。 +> +> **(2)等长扩展码** +> +> 基本操作码 4 位中,12 个编码(0000~1011)用于双地址指令,其余 4 个编码(1100~1111)用于操作码扩展,和一个地址字段(共 6 位)编码。单地址指令最多 $4 \times 2^6 = 256$ 条。 + +2. 假设某计算机有一条流水线,该流水线没有定向传送机制,有多个操作部件,其中 MOVE 部件可以完成数据传送,ADD 部件可以完成加法操作,DIV 部件可以完成除法操作,其在处理器上执行以下三条指令构成的程序段,操作数放在 R1 寄存器中,结果放在 R4 寄存器中: + +k: SUB R2, R1, R3 ;(R2)←(R1)-(R0) +k+1: MOVE R4, R2 ;(R4)←(R2) +k+2: DIV R4, R1, R3 ;(R4)←(R4)/(R3) + +(1)首先分析以上三条指令组成的序列,它们存在哪些相关,在哪些段。 + +(2)在以下给定条件下,画出指令执行的时空图,分析完成以上 3 条指令一共需要多少个时钟周期? + +给定条件: +- 在流水线中,每种指令的取指段、译码段各需要一个时钟周期。 +- MOVE、SUB 和 DIV 指令的具体执行部件分别需要 2 个、3 个和 4 个时钟周期。 +- 所有指令都在第一个时钟周期从通用存储器中读取操作数,在最后一个时钟周期将运算结果写回到通用寄存器。 + +> [!abstract]- 答案 +> **(1)** k→k+1 存在 **RAW 数据相关**(R2);k+1→k+2 存在 **RAW 数据相关**(R4);k+1 与 k+2 之间存在名相关中的**输出相关**(R4)。 +> +> **(2)** 无定向传送,共需 **10 个时钟周期**: +> +> | 部件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | +> |:----:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:--:| +> | IF | k | k+1 | k+2 | | | | | | | | +> | ID | | k+1 | k+2 | | | | | | | | +> | ADD | | | k | k | k | | | | | | +> | MOVE | | | | | | | k+1 | k+1 | | | +> | DIV | | | | | | | k+2 | k+2 | k+2 | k+2 | + +> [!note] 解题思路 +> +> **(1)数据相关分析** +> +> - **k 和 k+1 之间存在写后读相关(RAW)**:指令 k+1 需要读取 k 的结果 R2 +> - **k+1 和 k+2 之间存在写后读相关(RAW)**:指令 k+2 需要读取 k+1 的结果 R4 +> - **k 和 k+2 之间不存在直接相关** +> +> 由于没有定向传送机制,相关指令之间必须插入气泡(空闲周期)来避免数据冲突。 +> +> **(2)时空图与时钟周期分析** +> +> 各指令执行时间: +> - SUB:取指(1) + 译码(1) + 执行(3) + 写回(1) = 6 个时钟周期 +> - MOVE:取指(1) + 译码(1) + 执行(2) + 写回(1) = 5 个时钟周期 +> - DIV:取指(1) + 译码(1) + 执行(4) + 写回(1) = 7 个时钟周期 +> +> **(3)流水线相关的 3 种类型** +> +> - **数据相关**(真数据相关):两条指令 i 和 j,若 j 使用 i 的计算结果,则 j 与 i 数据相关。反映了数据流动关系。 +> - **名相关**:两条指令使用相同寄存器/存储器名称,但无数据传递。包括反相关(写后读)和输出相关(写后写),可通过换名消除。 +> - **控制相关**:由分支指令引起,需根据分支结果确定后续执行路径。 + +3. 在给一个计算机系统设计 Cache 方案时,有两个备选方案,分别是直接映像 Cache 和两路组相联 Cache,请根据以下列出的系统基本情况,分析计算不同方案下的平均访问时间以及 CPU 的价格,选择合适的方案。 + +(1)如果 Cache 情况下的 CPI 为 2.5,时钟周期为 2ns,平均每条指令访存 1.5 次。 + +(2)但根据 Cache 中的多路选择器使 CPU 的时钟周期增加了 10%。 + +(3)这种 Cache 的不命中率总是为 90‰。 + +(4)命中时间为 1 个时钟周期。 + +(5)直接映像 Cache 的不命中率为 1.5%,两路组相联 Cache 的不命中率为 1.2%。 + +> [!abstract]- 答案 +> **直接映像**:时钟 2ns,不命中率 1.5% → 平均访存 $= 1 + 1.5\% \times 90 = 2.35$ns,$CPU时间 = IC \times (2.5 \times 2 + 1.5\% \times 90) = 7.025IC$ ns +> +> **两路组相联**:时钟 2.2ns,不命中率 1.2% → 平均访存 $= 0.8 + 2.2 + 1.2\% \times 90 = 0.28$ns,$CPU时间 = IC \times (2.5 \times 2.2 + 1.2\% \times 90) = 7.12IC$ ns +> +> **结论**:选择**直接映像 Cache**。虽然组相联访存时间略短,但时钟周期增长导致 CPU 时间更长,且直接映像实现更简单。 + +> [!note] 解题思路 +> +> **(1)平均访存时间 = 命中时间 + 不命中率×不命中开销** +> +> - 直接映像:$T_1 = 1 + 1.5\% \times 90 = 2.35$ns +> - 两路组相联:$T_2 = 0.8 + 2.2 + 1.2\% \times 90 = 0.28$ns +> +> **(2)CPU 时间** +> +> $CPU时间 = IC \times (CPI \times 时钟周期 + 每指令访存次数 \times 不命中率 \times 不命中开销)$ +> +> - 直接映像:$7.025IC$ ns +> - 两路组相联:$7.12IC$ ns +> +> 性能比 $\frac{7.12}{7.025} \approx 1.0135$,直接映像更快。 + +--- + +### 四、综合题(每题 16 分,共 32 分) + +1. 自第一台通用计算机问世以来,计算机的性能以每年近人的速度增长。这得益于计算机系统结构设计技术,特别是基于计算机系统设计中广泛的定量原理。你知道系统设计中经常使用的定量原理有哪些?简述它们的主要内容和含义。 + +> [!abstract]- 答案 +> 四个定量原理: +> +> (1)**以经常性事件为重点**:对高频事件优先处理,获得更大总体改善。 +> +> (2)**Amdahl 定律**:加速比受限于瓶颈部件在系统中的重要性。 +> +> (3)**CPU 性能公式**:$CPU时间 = IC \times CPI \times 时钟周期$。 +> +> (4)**程序局部性原理**:程序访问在时间/空间上具有聚集性,非随机分布。 + +> [!note] 参考答案要点 +> +> **(1)以经常性事件为重点**(最主要原理 2 分) +> +> 在计算机系统的设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,从而得到更多的总体上的改善。 +> +> **(2)Amdahl 定律**(2 分) +> +> 加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。 +> +> **(3)CPU 性能公式**(2 分) +> +> 执行一个程序所需的 CPU 时间 $= IC \times CPI \times$ 时钟周期时间。 +> +> **(4)程序的局部性原理**(2 分) +> +> 程序在执行时所访问的地址空间的分布不是随机的,而是相对地聚集。 + +2. 并行处理面临着两个重要挑战:一个是程序中的并行性有限;另一个相对较大的通信开销,比如多处理器中从远端内存访问的巨大延迟。某单位需要评估程序在远程访问时间对多处理器性能的影响,作了以下试验:每单位(使用含 32 个处理器的计算机集群,处理程序的执行时间为 10ns,基于单处理器的 CPI 为 1.0),分为两种情况进行实验:第一种情况没有远程访问,第二种情况有 0.5% 的指令需要远程访问,对远程处理器访问时间为 2000ns,预测一下前后对比会快多少?(除通信以外,假设计算中的访问均匀中都局部存储器。当发出一个远程请求时,此处理器就挂起) + +> [!abstract]- 答案 +> 远程访问时钟 $= 2000 / 10 = 200$ 个时钟 +> +> 有远程访问时 $CPI = 1.0 + 0.5\% \times 200 = 2.0$ +> +> 无远程访问时 $CPI = 1.0$ +> +> **结论**:无远程访问的机器速度是有 0.5% 远程访问机器的 **2 倍**。 + +> [!note] 参考答案要点 +> +> 有 0.5% 远程访问的机器的实际 CPI 为: +> +> $CPI = \text{基本 CPI} + \text{远程访问率} \times \text{远程访问开销}$ +> +> $= 1.0 + 0.5\% \times 200 = 2.0$ +> +> 它为只有局部访问的机器的 $2.0 / 1.0 = 2$ 倍。 +> +> 因此在没有远程访问状态下这台机器速度是有 0.5% 远程访问的机器速度的 2 倍。 + +## 关联笔记 +- [[计算机系统结构/复习文档/index|复习文档索引]] +- [[计算机系统结构/课程笔记]]