# 第一章:基础知识

# 1.1 基本概念

计算机系统的多级层级结构:

高级翻译到低级语言:翻译与解释,或两者的结合。

  • 翻译:把高一级机器上的程序转换为低一级机器上等效的程序,复杂但效率高
  • 解释:每一条语句转去执行低一级机器上的一段等效程序,灵活但效率低

微程序:将一条机器指令编写成一段包含若干条微指令的微程序,由硬件来解释执行
微指令被存储在处理器内部的微程序存储器中,并由控制单元按顺序执行

操作系统级指令,用于实现操作系统功能的调用,例如打开 / 关闭文件、读写文件等;只有操作系统级指令是由操作系统解释执行的

固件:固化的软件或具有软件功能的硬件;位于计算机或电子设备的非易失性存储器中,与软件不同,固件通常是预先安装在设备中的,并且不需要经常更新或更改;如驱动程序

计算机系统结构的广义定义:指令集结构(Instruction Set Architecture)+ 计算机组织(Organization)+ 计算机实现(Implementation)

计算机组成:物理机器级的排序方式与控制方式、各部件功能以及各部件之间的联系
计算机实现:物理结构,器件的技术,微组装技术

常见的计算机系统结构分类法:Flynn 分类法

  • 指令流:计算机执行的指令序列 m
  • 数据流:由指令流调用的数据序列 n
    根据 m, n,分为:
  • SISD,单指令单数据流,一条指令作用于一组数据
  • SIMD,单指令多数据流,向多个处理单元分发相同指令的体系结构
  • MISD,多指令单数据流,在单个数据上应用多个并行指令的体系结构
  • MIMD,多指令多数据流,多个处理单元并行执行多条指令的体系结构

# 1.2 设计

经常性事件为重点
系统性能加速比,依赖于两个因素:

  • 可改进比例(Fe):在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例
  • 部件加速比(Se):可改进部分改进以后性能提高(执行时间降低)的倍数
    改进后程序总执行时间 TnT_n

Tn=T0(1Fe+FeSe)T_n = T_0(1-Fe+\frac{Fe}{Se})

系统加速比:Sn=T0TnS_n = \frac{T_0}{T_n} (Amdahl 定律)。

并行处理PP 个处理器,占比为 yy 的程序可以 pp 路并行,则最大加速比为

Spar=1yp+(1y)S_{par}=\frac{1}{\frac{y}{p} + (1-y)}

CPI:每条指令执行的平均时钟周期数 = 执行程序所需的时钟周期数/IC
CPU 时间 = IC × CPI × 时钟周期长度

设计计算机系统大致要完成三个方面的工作:

  • 确定用户对计算机系统的功能、价格和性能的要求
  • 软硬件功能分配
  • 设计出生命周期长的系统结构

自顶向下设计:每级都考虑如何优化上一级的实现
自底向上设计:从最下面一级开始,逐层往上设计各层的机器
从中间开始设计:首先要进行软、硬件功能分配,确定好这个界面;从这个界面开始设计

# 1.3 性能评测

MIPS:每秒百万条指令数
MFLOPS:每秒百万次浮点操作次数
TOPS:每秒万亿操作次数
执行时间:CPU 时间 + 磁盘访问时间 + 存储器访问 + 输入 / 输出开销 + 操作系统开销
基准测试程序:应用程序中用得最频繁的那部分核心程序或人工合成出来的程序
TiT_i 为第ii 个程序的执行时间,nn 为程序数,WiW_i 为第ii 个程序的权重;
加权算术平均执行时间

Am=Σi=1nWi×TiA_m=\Sigma_{i=1}^{n}W_i\times T_i

加权调和平均执行时间

Hm=ΣWiΣWiTiH_m=\frac{\Sigma W_i}{\Sigma \frac{W_i}{T_i}}

标准化执行时间的计算方法:先将各程序的执行时间对一台参考机器进行标准化(在这个参考机器上的时间取 1),然后取标准化执行时间的几何平均值

加权几何平均值:令

Gm=ETRiWiG_m=\prod{ETR_i^{W_i}}

ETRiETR_i 为第 i 个程序对参考机器标准后的执行时间;有一个很好的特性,几何平均值的比等于比的几何平均值

# 1.4 发展

冯诺依曼结构:

  • 指令驱动
  • 计算机以运算器为中心,指令和数据一样可以进行运算,且可以修改
  • 存储器是按地址访问,单元位数固定
  • 指令执行是顺序的
  • 指令由操作码和地址码组成

软件的可移植性:一个软件可以不经修改或者只需少量修改就可以由一台机器移植到另一台机器上正确地运行。差别只是执行时间的不同,我们称这两台机器是软件兼容的
实现方法:
统一高级语言:较难实现;
系列机:由同一厂家生产的具有相同的系统结构,不同组成和实现的一系列不同型号机器;
向上 / 下兼容:运行于比它高 / 低档的机器;
向前 / 后兼容:运行于时间在它之前 / 后
投入市场的机器,向后兼容是系列机的根本特征
模拟:用软件的方法在一宿主机上实现虚拟机的指令集,通常使用解释实现;
仿真:用宿主机的微程序去解释实现目标机的指令集

# 1.5 并行性

并行性:计算机系统在同一时刻(同时)或者同一时间间隔内(并发)进行多种运算或操作
并行性等级从低到高可分为:
指令内部并行:单条指令中各微操作之间的并行;
指令级并行:并行执行多条指令;
线程级并行:并行执行两个或两个以上的线程;
任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元;
作业或程序级并行:并行执行两个或两个以上的作业或程序。

提高并行性的技术途径:
时间重叠:让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分;
资源重复:重复设置硬件资源;
资源共享:使多个任务按一定时间顺序轮流使用同一套硬件设备,软件方法

单处理机中:起主导作用的是时间重叠原理,以部件功能专用化为基础;资源重复原理的运用也已经十分普遍
多体交叉存储器、多操作部件:实现资源重复
阵列处理机:设置许多相同的处理单元,让它们在同一个控制器的指挥下,对向量或数组各元素统一操作
分时系统:多终端

三种不同的多处理机:同构型,异构型,分布式系统(物理位置不同);
耦合度:紧密耦合系统(通过总线或高速开关互连,可以共享主存);松散耦合系统(通过通道或通信线路实现 —— 计算机网,共享外存设备)
功能专用化:实现时间重叠
机间互联:互连网络连接,要求高带宽、低延迟、低开销,是高效实现程序或任务一级并行处理的前提条件