3DRX

// post

系统结构的基础

第一章

Updated

基本概念

定义:指令系统结构、组成、硬件(实现) 实质:确定计算机系统中软硬件的界面, 界面之上是软件实现的功能,界面之下是硬件和固件实现的功能。

具有相同系统结构的计算机可以采用不同的计算机组成。 同一种计算机组成又可以采用多种不同的计算机实现。

层次分类

从高到低 6 级

  • 应用语言机器
  • 高级语言机器
  • 汇编语言机器
  • 操作系统机器
  • 传统机器语言机器
  • 微程序机器

最下面三级一般是用解释实现的,但上面三级经常是用翻译的方法。 最下面两级机器是用硬件/固件实现的,称为物理机。 上面 4 层一般是由软件实现的,成为虚拟机器。

系统结构的分类

三种分类方法:

  1. Flynn 分类法:按照指令流和数据流的多倍性进行分类(SISD, SIMD, MISD, MIMD)
    • 指令流:计算机执行的指令序列
    • 数据流:由指令流调用的数据序列
    • 多倍性:在系统最受限的部件上,同时处于同一执行阶段的指令或数据的最大数目
  2. 冯式分类法:用系统的最大并行度对计算机进行分类
    • 最大并行度:计算机系统在单位时间内能够处理的最大的二进制位数
  3. Handler 分类法:根据并行度和流水线,量化指标是三元组
    • 程序控制部件个数
    • 算数逻辑部件或处理部件的个数
    • 每个算术逻辑不见包含基本逻辑线路套数

系统结构的发展

冯·诺依曼结构

5 部分组成,以运算器为中心,指令驱动:

  • 输入设备
  • 运算器
  • 存储器
  • 控制器
  • 输出设备

指令驱动

程序预先存放在计算机存储器中,机器一旦启动, 就能按照程序指定的逻辑顺序执行这些程序,自动完成由程序所描述的处理工作。

对系统结构进行改进

输入/输出方式的改进

  • 程序控制
    • 等待
    • 中断
  • DMA
    • 成组传递
    • 周期挪用
  • I/O 处理机
    • 通道
    • 外围处理机

存储器的发展

  • 相联存储器(检索)与相联处理机(检索+算术逻辑运算)
  • 通用寄存器组
  • 高速缓冲存储器 cache

指令系统的发展

  • CISC:复杂指令集
  • RISC:精简指令集

软件对系统结构的影响

兼容性:

  • 向上(下)兼容:按某档机器编制的程序,不加修改就能运行于比它高(低)档的机器。
  • 向前(后)兼容:按某个时期投入市场的某种型号机器编制的程序, 不加修改地就能运行于在它之前(后)投入市场的机器。

实现兼容性于可移植性

  1. 统一高级语言
  2. 系列机
  3. 模拟和仿真
    • 模拟:用软件的方法在一台现有的机器(称为宿主机) 上实现另一台机器(称为虚拟机)的指令集。
    • 仿真:用一台现有机器(宿主机)上的微程序去解释实现另一台机器(目标机)的指令集。

仿真在机器语言级是相同的,只解释执行微程序机器级的指令。 仿真用微程序解释执行,其解释程序放在控制存储器中,模拟用机器语言解释执行,存放在主存中。

系统结构中并行性的发展

并行性:计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。

  • 同时:两个或两个以上的事件在同一时刻发生
  • 并发:两个或两个以上的事件在同一时间间隔内发生

从数据角度看,并行性从低到高:

  1. 字串位串:每次只对一个字的一位进行处理。最基本的串行处理方式,不存在并行性。
  2. 字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。
  3. 字并位串:同时对许多字的同一位(称为位片)进行处理。具有较高的并行性。
  4. 全并行:同时对许多字的全部位或部分位进行处理。最高一级的并行。

从执行程序角度看,并行性从低到高:

  1. 指令内部并行:单条指令中各微操作之间的并行。
  2. 指令级并行:并行执行两条或两条以上的指令。
  3. 线程级并行:并行执行两个或两个以上的线程。 通常是以一个进程内派生的多个线程为调度单位。
  4. 任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段) 以子程序或进程为调度单元。
  5. 作业或程序级并行:并行执行两个或两个以上的作业或程序。

提高并行性的三种途径

  1. 时间重叠:引入时间因素,让多个处理过程在时间上相互错开, 轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
  2. 资源重复:引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
  3. 资源共享:这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。

计算机系统的设计

定量原理

Amdahl 定律

S=T0TnTn=T0(1Fe+FeSe)S=T0Tn=1(1Fe)+FeSe\begin{aligned} S &= \frac{T_0}{T_n} \\ T_n &= T_0 (1-Fe + \frac{Fe}{Se}) \\ S &= \frac{T_0}{T_n} = \frac{1}{(1-Fe) + \frac{Fe}{Se}} \\ \end{aligned}
  • T0T_0: 总执行时间-改进前
  • TnT_n: 总执行时间-改进后
  • SS: 加速比
  • FeFe: 在改进前的系统中,可改进部分的执行时间在总时间中的占比
  • SeSe: 改进前所需执行时间与改进后所需执行时间的比

对于多部件的系统

S=1(1Fi)+FiSiS = \frac{1}{(1 - \sum F_i) + \sum \frac{F_i}{S_i}}

CPU 性能公式

CPU 时间 = 执行程序所需的时钟周期数 * 始终周期时间

CPI: Cycles Per Instruction

CPI = 执行程序所需的时钟周期数 / 所执行的指令条数

CPU 时间 = 指令数 * CPI * 时钟周期时间

计算机系统的性能评测

不同计算机系统执行不同程序的性能会有所不同,有 3 种方法解决这一问题。

  1. 对比总执行时间
  2. 对比调和平均值:ni=1n1xi\frac{n}{\sum\limits_{i=1}^n \frac{1}{x_i}}
  3. 对比几何平均值:(i=1nxi)1n(\prod\limits_{i=1}^nx_i)^{\frac{1}{n}}

题目

1.7

某台主频为 400 MHz 的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下

指令类型指令执行数量/条平均时钟周期数
整数45 0001
浮点8 0004
数据传送75 0002
分支1 5002

求该计算机的有效 CPI、MIPS 和程序执行时间。

CPI=45000×1+8000×4+75000×2+15000×245000+8000+75000+15000=257,000143,000=1.0979020979MIPS=400MCPI=222.5680933852执行时间=45000×1+8000×4+75000×2+15000×2400MHz=257,000400,000=0.6425()\begin{aligned} CPI &= \frac{45000 \times 1 + 8000 \times 4 + 75000 \times 2 + 15000 \times 2} {45000 + 8000 + 75000+ 15000} = \frac{257,000}{143,000} = 1.0979020979 \\ MIPS &= \frac{400M}{CPI} = 222.5680933852 \\ 执行时间 &= \frac{45000 \times 1 + 8000 \times 4 + 75000 \times 2 + 15000 \times 2} {400MHz} = \frac{257,000}{400,000} = 0.6425 (秒) \end{aligned}

1.10

有三个部件可以改进,加速比如下

  • S1=30S_1 = 30
  • S2=20S_2 = 20
  • S3=10S_3 = 10
  1. 如果部件 1 和部件 2 的可改进比例都为 30%,那么当部件 3 的可改进比例为多少时,系统的加速比才可以达到 10?

    S=11(0.3+0.3+F3)+0.330+0.320+F3100.361\begin{aligned} S &= \frac{1}{1 - (0.3 + 0.3 + F_3) + \frac{0.3}{30} + \frac{0.3}{20} + \frac{F_3}{10}} \\ &\approx 0.361 \end{aligned}
  2. 如果三个部件的可改进比例分别为 30%, 30% 和 20%,三个部件同时改进, 那么系统中不可改进部分的执行时间在总时间中占比多少?

    令原系统总时间为 T0T_0,则不可改进部分时间为 (10.30.30.2)T0=0.2T0(1-0.3-0.3-0.2)T_0 = 0.2T_0, 改进后总时间为 0.2T0+(0.3/30+0.3/20+0.2/10)T0=0.245T00.2T_0 + (0.3/30 + 0.3/20 + 0.2/10)T_0 = 0.245T_0,两者的比值即为答案。

1.11

FP 指令的比例为 30%,其中 FPSQR 站全部指令的比例为 4%,FP 操作的 CPI 为 5,FPSQR 操作的 CPI 为 20,其他指令的平均 CPI 为 1.25。现有两种改进方案, 第一种是把 FPSQR 操作的 CPI 减至 3,第二种是把所有 FP 的 CPI 减至 3, 试比较两种对整体性能的提升。

优化前整体:30% * 5 + 4% * 20 + (1 - 34%) * 1.25 = 3.25
第一种优化后:30% * 5 + 4% * 3 + (1 - 34%) * 1.25 = 2.445
第二种优化后:30% * 3 + 4% * 20 + (1 - 34%) * 1.25 = 2.525