计算机系统
概述
组织和结构
组织:对编程人员不可见
操作单元及其相互连接
包括控制信号、存储技术,…
结构:对编程人员可见
直接影响程序逻辑执行的属性
包括指令集、表示数据类型的位数,…
计算机简史
第一代:真空管
- 出现冯诺依曼模型
第二代:晶体管
第三代及后续几代:集成电路
冯诺依曼模型
基本原则:计算机由运算器、存储器、控制器、输入设备、输出设备组成,指令和数据均用二进制表示
最重要的思想:存储程序
主存储器:地址和存储内容
算术逻辑单元:执行信息的实际处理
程序控制单元:指挥信息的处理
输入设备:将信息送入计算机中
输出设备:将处理结果以某种形式显示在计算机外
摩尔定律
单芯片上所能包含的晶体管数量每年翻一番 (1965-1969) / 1970
年起减慢为每18个月翻一番
CPU性能
系统时钟
时钟频率(时钟速度):计算机在单位时间内执行最基本操作的次数,单位Hz
时钟周期(周期时间):执行每次最基本操作的时间,单位s
指令执行
处理器由时钟驱动,时钟具有固定的频率,或等价为
CPI:每条计算机指令执行所需的时钟周期数
$CPI = \frac{\sum_{i = 1} ^{n}(CPI_i \times I_i)}{I_c},I_c = \sum_{i = 1} ^ {n} I_i$
$CPI_i$:指定类型i所需要的周期数
$I_i$:某一给定程序中所执行的i类指令的条数
执行一个给定程序的处理时间是:
- $T = I_c \times CPI \times t$
每秒百万条指令(MIPS):
- $MIPS = \frac{I_c}{T \times 10^6} = \frac{f}{CPI \times 10^6}$
每秒百万条浮点操作(MFLOPS):
- $MFLOPS = \frac{N_{floating-point\:op}}{T \times 10^6}$
平均结果:
算术平均值:$R_A = \frac{1}{m}\sum_{i = 1}^m R_i$
调和平均值:$R_H = \frac{m}{\sum_{i = 1}^m \frac{1}{R_i}}$
几何平均值:$R_G = (\prod_{i = 1}^n R_i)^{\frac{1}{n}}$
性能设计基本原则
大概率事件优先原则:对于大概率事件(或最常见的事件),赋予它优先的处理权和资源使用权
- $系统加速比 = \frac{总执行时间_{改进前}}{总执行时间_{改进后}}$
Amdahl定律:
加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性比例
性能增加的递减规则:如果仅仅对计算机中的一部分做性能改进,改进越多,系统获得的效果越小
- $系统总加速比 = \frac{总执行时间_{改进前}}{总执行时间_{改进后}} = \frac{1}{(1 - 局部占比) + \frac{局部占比}{提升的性能}}$
顶层视图
计算机工作原理(感觉不是很重要)
指令和数据存储在单个读写存储器中
主存中的内容按位置访问,无需考虑其中包含的类型
CPU从一条指令到下一条指令到下一条指令以顺序方式执行
I/O模块与CPU、贮存交换计算机系统外部的数据
CPU频率不能无限提高(随便提一嘴):
理论限制:
mos管开关、脉冲通过门电路需要时间
为了信号同步、每个脉冲信号需要持续一定时间
制造限制:
芯片面积越来越大。导致连线延迟越来越大,需要保证信号在设计指定时钟周期内从芯片的一角到达另一角
频率越高会导致开关损耗也越高,CPU会费电和散热高
解决方法:
- 改进CPU芯片结构
主存和CPU之间传输数据的速度跟不上CPU的速度(内存墙)(也是随便提一嘴)
- 采用高速缓存Cache
CPU在等待I/O设备时保持空闲(还是随便提一嘴)
- 采用中断机制
层次式存储结构可以兼顾存储容量、速度和成本(知道我要说什么吧)
I/O设备传输速率差异大(累了)
- 采用缓冲区和改进I/O操作技术
计算机部件互连复杂(这个可以看看):
采用总线
控制线:控制数据线和地址线的访问和使用
地址线:指定数据总线和地址I/O端口上的数据的来源或去向
数据线:在系统模块之间传送数据