计算机系统基础导读
本专题记录计算机系统的学习笔记,主要参考袁春风老师的计算机系统基础 1。
内容主要按照以下三个部分展开:
- 数据的表示和处理:主要介绍各类数据在计算机中的表示与运算;
- 程序的转换和表示:主要介绍高级语言中的过程调用和控制语句所对应的汇编指令序列,以及各类数据结构元素的访问所对应的汇编指令;
- 程序的链接:主要介绍如何将多个模块链接起来生成一个可执行的目标文件。
计算机的工作原理¶
曾经,冯·诺依曼认为计算机应该由五个部分组成,相互协作完成任务。如下图所示:
即:
- 存储器。存储数据和指令;
- 运算器。可以进行四则运算和逻辑运算;
- 控制器。自动取指令来执行;
- 输入设备。用户输入;
- 输出设备。系统输出。
现在,计算机结构模型是这样的:
其中:
- CPU:即中央处理器;
- PC:即程序计数器;
- MAR:即存储器地址寄存器;
- ALU:即算数逻辑部件;
- IR:即指令寄存器;
- MDR:即存储器数据寄存器;
- GPRs:即通用寄存器组(由若干通用寄存器组成,早期就是累加器)。
计算机的层次结构¶
计算机的层次结构如下图所示:
计算机的性能评价¶
计算机系统由硬件和软件两部分构成,其中硬件性能在整体性能中起决定性作用。衡量计算机硬件性能的主要指标有两种:
- 吞吐率 (Throughput):系统在单位时间内完成的工作量;
- 响应时间 (Response Time):系统完成一个作业从提交到完成所需的时间。
吞吐率与响应时间的应用场景¶
以文件备份为例:
- 少量大文件:更关注吞吐率,吞吐率高意味着处理大文件的效率高;
- 大量小文件:更关注响应时间,响应时间短意味着能更快完成每个小任务。
因此,吞吐率和响应时间适用于不同的应用场景:
- 多媒体处理(如视频压缩、图像渲染):需要高吞吐率;
- 银行、证券交易等在线业务:需要低响应时间;
- 用户交互类系统(如 ATM、文件服务器、Web 服务):则需要二者兼优。
程序执行时间与性能衡量¶
在不考虑应用背景的情况下,计算机性能通常也可以通过「程序的执行时间」来衡量。下图展示了程序的执行时间组成(用户实际感受到的部分):
其中,我们主要关注用户 CPU 时间。其计算依赖三个关键量:
- 时钟周期 (Clock Cycle):一个时钟脉冲信号持续的时间,用于控制各硬件模块的工作节奏;
- 时钟频率 (Clock Rate):单位时间内的时钟周期数,即时钟周期的倒数;
-
CPI (Cycles Per Instruction):每条指令平均需要的时钟周期数。
-
对单条指令:CPI 表示执行该指令所需的时钟周期数;
- 对整个程序或机器:CPI 表示所有指令平均执行所需的时钟周期数。
由此可得用户 CPU 时间的计算公式:
\[
\text{用户 CPU 时间}
= \text{程序总时钟周期数} \times \text{时钟周期}
= \frac{\text{程序总时钟周期数}}{\text{时钟频率}}
\]
由公式可见:用户 CPU 时间与计算机性能成反比。此外,时钟周期、时钟频率与 CPI 三者相互制约,无法单独提升某一个指标而不影响整体性能。
Amdahl 定律¶
Amdahl 定律用于描述系统局部改进对整体性能的影响。如果系统中某部分被加速,其带来的总体性能提升取决于该部分「在原系统中所占时间比例」及「改进倍数」。其公式如下:
\[
\text{改进后的执行时间}
= \frac{\text{改进部分原本占用的时间}}{\text{改进倍数}} + \text{剩余部分占用的时间}
\]
由此可得整体性能提升倍数:
\[
\text{整体改进倍数} = \left(\frac{\text{改进部分时间比例}}{\text{改进倍数}} + \text{剩余部分时间比例}\right)^{-1}
\]
Amdahl 定律揭示:即使对某部分性能大幅提升,若该部分占总体时间比例较小,整体性能改善仍有限。因此,优化系统性能时应优先改进占用时间较多的关键部分。
-
袁春风. 计算机系统基础[M]. 北京:机械工业出版社,2018. ISBN 978-7-111-60489-1. ↩