系统分析师(2)-- Flynn分类法、SISC和RISC、流水线
Flynn 分类法
| 体系结构类型 | 结构 | 关键特性 | 代表 |
|---|---|---|---|
| 单指令流单数据流 SISD | 控制部分:一个 处理器:一个 主存模块:一个 |
单处理器系统 | |
| 单指令流多数据流 SIMD | 控制部分:一个 处理器:多个 主存模块:多个 |
各处理器以异步的形式执行同一条指令 | 并行处理机、阵列处理机、超级向量处理机(GPU) |
| 多指令流单数据流 MISD | 控制部分:多个 处理器:一个 主存模块:多个 |
被证明不可能,至少是不实际 | 目前没有,有文献称流水线计算机为此类 |
| 多指令流多数据流 MIMD | 控制部分:多个 处理器:多个 主存模块:多个 |
能够实现作业、任务、指令等各级全面并行 | 多核处理器(SMP、BMP、MP) 多处理机系统(MPP、分布式多计算机) |
指令对应控制部分数量数据流对应处理器数量- 只有
单指令单数据流是单主存模块; 其他都是多主存模块
复杂指令集(SISC) vs. 精简指令集(RISC)
- 复杂指令集计算机(CISC,Complex Instruction Set Computers)
- 精简指令集计算机(RISC,Reduced Instruction Set Computers)
| CISC | RISC | |
|---|---|---|
| 指令数量 | 多 | 少 |
| 指令系统复杂度 | 复杂 | 简单 |
| 指令长度 | 变长,不固定 | 等长,固定 |
| 寻址方式 | 多 | 少 |
| 指令格式 | 多 | 少且规整 |
| 各种指令使用频率 | 相差很大 | 相差不大 |
| 各种指令执行时间 | 相差很大 | 相差不大 |
| 软件开发时间 | 较短 | 较长 |
| 指令周期 | 多周期为主 | 单周期为主(采用流水技术,大部分指令在一个机器周期内完成) |
| CPU中寄存器数量 | 少 | 多(由于减少访存,增加寄存器,其余的数据放在这访问) |
| 指令并行性 | 低 | 高 |
| 可访存指令 | 不加限制 | 只有取数LOAD/存数STORE指令访存(减少了访存周期) |
| 控制器实现方式 | 微程序控制 | 硬布线控制 |
| 优化编译实现 | 很难 | 较容易(依靠编译程序的优化来更有效地支持高级语言) |
| 程序源代码长度 | 较短 | 较长 |
- Intel/AMD 家用电脑 CPU、普通 x86 服务器:CISC,MIMD
- ARM 手机、鲲鹏 / 亚马逊 ARM 服务器:RISC,MIMD
- GPU:SIMD
流水线 Pipeline 技术
流水线周期
流水线执行时间
流水线吞吐率
流水线加速比
原题
流水线的吞吐率是指流水线在单位时间里所完成的任务数或输出的结果数。设某流水线有5段,有1段的时间为2ns,另外4段的每段时间为1ns,利用此流水线完成100个任务的吞吐率约为( )个/s
A. \(500 \times 10^6\)
B. \(490 \times 10^6\)
C. \(250 \times 10^6\)
D. \(167 \times 10^6\)
解析
1. 提取关键参数
- 流水线段数:\(k = 5\) 段
- 各段时间:\(t_1 = 2\text{ ns}\),\(t_2 = t_3 = t_4 = t_5 = 1\text{ ns}\)
- 任务数量:\(n = 100\)
- 瓶颈段时间:\(\Delta t = \max\{t_i\} = 2\text{ ns}\)
2. 计算流水线完成所有任务的总时间 \(T\)
由于各段执行时间不相等,不能直接套用等长流水线的公式 \((k+n-1)\Delta t\)。正确的计算方式为:
- 第一个任务走完所有段的实际时间为:
\(T_{\text{first}} = 2 + 1 + 1 + 1 + 1 = 6\text{ ns}\) - 从第2个任务开始,流水线达到满载,每隔瓶颈周期 \(2\text{ ns}\) 就会完成一个任务,剩下的 \(100 - 1 = 99\) 个任务耗时为:
\(T_{\text{rest}} = (100 - 1) \times 2 = 99 \times 2 = 198\text{ ns}\) - 总时间:\[T = 6 + 198 = \boldsymbol{204\text{ ns}} = 204 \times 10^{-9}\text{ s} \]
3. 计算吞吐率 \(TP\)
吞吐率指单位时间内完成的任务数:
将其转换为标准科学计数法:
4. 结论
计算结果与选项 B 一致。
答案:B
💡 易错点补充说明
如果采用“统一时钟周期”模型,时钟周期取最长段 \(\Delta t = 2\text{ ns}\),那么所有段都要占用 \(2\text{ ns}\) 的时间槽,此时总时间公式为:
对应的吞吐率约为:
由于选项中没有 \(481 \times 10^6\),且标准教材在处理“各段不等长”的流水线时,通常采用“第一个任务按各段实际时间相加,后续每 \(\Delta t_{\text{瓶颈}}\) 完成一个”的模型,因此本题必须使用第一种方法,\(204\text{ ns}\) 才是本题预期的正确答案。
题目2
假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为 \(15\mu s\),由缓冲区送至用户区的时间是 \(5\mu s\),在用户区内系统对每块数据的处理时间为 \(1\mu s\)。若用户需要将大小为 \(10\) 个磁盘块的 Doc1 文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(D)\(\mu s\);采用双缓冲区需要花费的时间为(C)\(\mu s\)。
A. \(150\)
B. \(151\)
C. \(156\)
D. \(201\)
(图片中第二行选项重复,属于印刷排版错误,选项集仍为 \(150, 151, 156, 201\))
解析
参数提取
- 读入缓冲区时间(\(T_{in}\)):\(15\mu s\)
- 缓冲区送至用户区时间(\(T_{out}\)):\(5\mu s\)
- 用户区处理时间(\(T_{cpu}\)):\(1\mu s\)
- 磁盘块总数(\(n\)):\(10\)
一、单缓冲区计算(答案 D:201)
原理:单缓冲区只能被一个操作占用。当缓冲区在向用户区传送数据或用户区在处理数据时,下一块磁盘数据无法读入缓冲区,必须等待缓冲区空闲。
时间线分析:
- 第 1 块:读入 \(15\mu s\) \(\rightarrow\) 传送 \(5\mu s\) \(\rightarrow\) 处理 \(1\mu s\)。完成时间 = \(15 + 5 + 1 = 21\mu s\)。
- 第 2 块:读入必须等第 1 块传送完毕(缓冲区空出),即第 \(20\mu s\) 开始,耗时 \(15\mu s\),到 \(35\mu s\) 读入完成。传送需等前一块处理完毕且自己读入完成,即 \(35\mu s\) 开始,耗时 \(5\mu s\),到 \(40\mu s\) 传送完成。处理耗时 \(1\mu s\),到 \(41\mu s\) 完成。
- 可以看出,除了第一块需要完整的 \(21\mu s\) 外,后续每一块的处理周期 = \(读入15 + 传送5 = 20\mu s\)(处理时间被并行掩盖)。
公式:
代入计算:
二、双缓冲区计算(答案 C:156)
原理:双缓冲区允许“读入”与“传送+处理”并行。当缓冲区 A 正在向用户区传送和处理时,缓冲区 B 可以同时从磁盘读入下一块数据。
时间线分析:
- 第 1 块:读入 \(15\mu s\) \(\rightarrow\) 传送 \(5\mu s\) \(\rightarrow\) 处理 \(1\mu s\)。结束时间 \(21\mu s\)。
- 第 2 块:读入可在第 1 块读入结束后立即开始(即第 \(15\mu s\)),耗时 \(15\mu s\),到 \(30\mu s\) 结束。此时缓冲区 A 的传送与处理早已结束,第 2 块的传送与处理可在 \(30\mu s\) 到 \(36\mu s\) 完成。
- 瓶颈分析:每块数据的周期时间取决于 \(\max(T_{in}, T_{out} + T_{cpu})\)。因为 \(15 > 5 + 1\),所以瓶颈是读入时间 \(15\mu s\)。
公式:
代入计算:
三、总结验证
| 缓冲方式 | 核心逻辑 | 总时间公式 | 结果 |
|---|---|---|---|
| 单缓冲区 | 读入、传送、处理串行,只有处理与下次读入可部分并行 | \(T = (T_{in}+T_{out}+T_{cpu}) + (n-1)(T_{in}+T_{out})\) | \(201\mu s\) |
| 双缓冲区 | 读入与(传送+处理)并行 | \(T = (n-1)\max(T_{in}, T_{out}+T_{cpu}) + T_{in}+T_{out}+T_{cpu}\) | \(156\mu s\) |
因此,题目中标注的“单缓冲区 (D) \(201\mu s\),双缓冲区 (C) \(156\mu s\)”是完全正确的。
浙公网安备 33010602011771号