Skip to content
TechMind

0 、计算机系统概述


一、计算机系统🧀

一个完整的计算机系统由硬件和软件共同组成:

  • 硬件:看得见、摸得着的物理设备,是计算机工作的物质基础。
  • 软件:程序、数据和相关文档的集合,决定计算机完成什么任务。

只有硬件而没有软件的计算机称为裸机,通常无法直接为用户完成实际工作。

1、硬件的五大组成部分🧀

冯·诺依曼结构把计算机硬件划分为五部分:

部件 主要作用
运算器 完成算术运算和逻辑运算,核心部件是算术逻辑单元 ALU
控制器 取出并分析指令,产生控制信号,协调其他部件工作
存储器 保存程序和数据,通常分为主存与辅存
输入设备 把程序和数据送入计算机
输出设备 把处理结果转换为用户能够接收的形式

运算器和控制器合称 CPU。在常见的功能划分中,CPU 与主存构成主机,辅存及输入、输出设备属于外部设备。不同教材对“主机”的边界可能略有差异,做题时以题目定义为准。

冯·诺依曼结构的核心

  • 程序和数据都以二进制形式存放在存储器中。
  • 指令由操作码和地址码组成。
  • 程序按照地址顺序执行,遇到转移指令时改变执行顺序。
  • 早期结构常以运算器为中心;现代计算机通常以存储器为中心,各部件通过总线交换信息。

2、存储程序思想🧀

程序在执行前先装入主存,CPU 从 PC 指向的位置逐条取出指令并执行。程序和普通数据都以二进制编码保存,因此同一段存储内容究竟被解释为指令还是数据,取决于 CPU 当前的执行过程和控制信号,而不是其比特形式本身。


二、计算机的发展🧀

阶段 主要器件 典型特点
第一代 电子管 体积大、功耗高、可靠性低,主要使用机器语言
第二代 晶体管 体积和功耗下降,汇编语言及高级语言开始普及
第三代 集成电路 可靠性提高,操作系统逐渐成熟
第四代 大规模、超大规模集成电路 微处理器出现,个人计算机和网络快速发展

程序设计语言大致经历了以下演进:

\[ \text{机器语言}\rightarrow\text{汇编语言}\rightarrow\text{高级语言}\rightarrow\text{面向对象与现代编程范式} \]

越靠近硬件的语言越容易直接控制机器,越靠近应用的语言抽象程度越高、开发效率越高。


三、软件与计算机层次🧀

1、系统软件与应用软件🧀

类型 作用 示例
系统软件 管理硬件资源并为其他软件提供运行环境 操作系统、编译器、数据库管理系统、驱动程序
应用软件 面向用户的具体任务 浏览器、办公软件、图像处理软件

2、程序的翻译过程🧀

以 C 程序为例,从源代码到可执行文件通常经过:

\[ \text{预处理}\rightarrow\text{编译}\rightarrow\text{汇编}\rightarrow\text{链接} \]

各阶段的输入、输出和 C 预处理器已经在“C 语言与内存”中展开,这里不再重复。

3、计算机系统的层次🧀

层次 主要内容 直接使用者
微程序机器层 用微指令实现控制器功能;硬布线控制器没有这一层 硬件设计者
传统机器层 指令系统体系结构 ISA 汇编器、编译器
操作系统层 进程、虚拟内存、文件和系统调用 系统程序
汇编语言层 用助记符表示机器指令 汇编程序员
高级语言层 提供更高层的数据结构和控制结构 应用程序员

上层通过下层提供的接口工作,逐层隐藏实现细节。

4、软硬件等价性🧀

从功能上看,许多任务既可以由软件完成,也可以由专用硬件完成:

  • 硬件实现通常速度快,但成本高、修改困难。
  • 软件实现通常灵活、开发成本低,但执行速度可能较慢。

所谓软硬件等价性强调的是功能可以相互转化,并不表示二者在速度、成本和可靠性上完全相同。


四、计算机性能指标🧀

1、基本指标🧀

指标 含义
机器字长 CPU 一次能够处理的二进制数据位数,通常与通用寄存器和 ALU 的宽度有关
主存容量 主存能够保存的数据总量
吞吐量 单位时间内完成的任务数量
响应时间 从任务提交到任务完成所经历的时间
时钟频率 \(f\) 每秒产生的时钟周期数
时钟周期 \(T\) 一个时钟周期的时间,\(T=1/f\)

吞吐量高不一定意味着单个任务的响应时间短,比较系统性能时必须先确定所关心的指标。

2、CPU 执行时间🧀

设程序包含的指令数为 \(IC\),平均每条指令需要的时钟周期数为 \(CPI\),则:

\[ \boxed{T_{CPU}=IC\times CPI\times T=\frac{IC\times CPI}{f}} \]

若程序包含多类指令,第 \(i\) 类指令的比例为 \(p_i\)、周期数为 \(CPI_i\),则平均 CPI 为:

\[ \boxed{CPI=\sum_i p_iCPI_i} \]

平均 IPC 表示每个时钟周期完成的指令数:

\[ IPC=\frac{1}{CPI} \]

3、MIPS 与 FLOPS🧀

\[ \boxed{MIPS=\frac{IC}{T_{CPU}\times10^6}=\frac{f}{CPI\times10^6}} \]

MIPS 表示每秒执行多少百万条指令。不同指令集的一条指令完成的工作量不同,因此不能只用 MIPS 跨机器比较真实性能。

FLOPS 表示每秒完成的浮点运算次数,MFLOPS、GFLOPS 和 TFLOPS 分别对应 \(10^6\)、\(10^9\) 和 \(10^{12}\) 次浮点运算。

不同指令序列的比较

A、B、C 三类指令的 CPI 分别为 1、2、3。

  • S1 的指令数为 2、1、2,总时钟周期数为 \(2\times1+1\times2+2\times3=10\)。
  • S2 的指令数为 4、1、1,总时钟周期数为 \(4\times1+1\times2+1\times3=9\)。

在主频相同的前提下,S2 的执行时间更短,速度约为 S1 的 \(10/9\) 倍。

计算 MIPS

某程序中 A、B、C、D 四类指令的比例分别为 60%、18%、12%、10%,对应 CPI 分别为 1、2、4、8,CPU 主频为 \(400\,\text{MHz}\)。

\[ CPI=1\times0.60+2\times0.18+4\times0.12+8\times0.10=2.24 \]
\[ MIPS=\frac{400\times10^6}{2.24\times10^6}\approx\boxed{178.57} \]