计算机系统概述
计算机发展历程、系统层次结构、性能指标
1. 计算机发展历程
计算机从诞生到现在经历了多个发展阶段,元器件的变革是推动计算机发展的主要动力。
1.1 四代计算机
1946 ~ 1957
第一代:电子管计算机
电子管作为逻辑元件,机器语言/汇编语言,体积大、功耗高、速度慢(几千次/秒)。代表:ENIAC、IBM 701
电子管作为逻辑元件,机器语言/汇编语言,体积大、功耗高、速度慢(几千次/秒)。代表:ENIAC、IBM 701
1958 ~ 1964
第二代:晶体管计算机
晶体管作为逻辑元件,出现高级语言(FORTRAN、COBOL),体积缩小、速度提高(几十万次/秒)。代表:IBM 7094
晶体管作为逻辑元件,出现高级语言(FORTRAN、COBOL),体积缩小、速度提高(几十万次/秒)。代表:IBM 7094
1965 ~ 1971
第三代:中小规模集成电路
集成电路(SSI/MSI),操作系统成熟,半导体存储器出现,速度达几十万到几百万次/秒。代表:IBM 360
集成电路(SSI/MSI),操作系统成熟,半导体存储器出现,速度达几十万到几百万次/秒。代表:IBM 360
1972 ~ 至今
第四代:大规模/超大规模集成电路
LSI/VLSI/ULSI,微处理器出现(Intel 4004, 1971),个人计算机普及,性能飞速提升。代表:Intel x86, ARM
LSI/VLSI/ULSI,微处理器出现(Intel 4004, 1971),个人计算机普及,性能飞速提升。代表:Intel x86, ARM
摩尔定律
当价格不变时,集成电路上可容纳的元器件数目约每隔18~24个月翻一倍,性能也提升一倍。由Intel创始人戈登·摩尔提出。
2. 计算机系统层次结构
计算机系统由硬件系统和软件系统组成,二者缺一不可。从功能上可以划分为多个层次。
2.1 计算机系统的多层级结构
第5级:高级语言机器
C/C++/Java等,由编译程序翻译
软件
第4级:汇编语言机器
汇编语言,由汇编程序翻译
软件
第3级:操作系统机器
操作系统,提供系统调用
软件
第2级:机器语言机器
指令系统,由微程序/硬布线解释
硬件/软件
第1级:微指令系统
微指令/硬布线逻辑,直接硬件执行
硬件
2.2 硬件与软件的关系
- 逻辑等效性:某些功能既可用硬件实现,也可用软件实现,在功能上是等效的
- 硬件是基础:软件功能的实现依赖硬件提供的支持
- 软件是灵魂:没有软件的计算机是裸机,无法工作
- 软硬件协同发展:硬件发展推动软件升级,软件需求促进硬件进步
2.3 软件分类
⚙️ 系统软件
用来管理整个计算机系统,提供服务的软件。
包括:操作系统、语言处理程序、数据库管理系统、网络软件、服务程序等
📱 应用软件
用户为解决特定问题而编写的程序。
包括:办公软件、游戏软件、浏览器、科学计算程序等
3. 冯·诺依曼结构
冯·诺依曼于1945年提出存储程序的概念,奠定了现代计算机的基本结构。
3.1 冯·诺依曼计算机的特点
- 计算机由运算器、存储器、控制器、输入设备、输出设备五大部件组成
- 指令和数据以同等地位存放于存储器中,可按地址寻访
- 指令和数据均用二进制表示
- 指令由操作码和地址码组成,操作码表示操作性质,地址码表示操作数地址
- 指令在存储器中按顺序存放,一般自动顺序取出执行
- 机器以运算器为中心,输入输出设备与存储器间的数据传送都要通过运算器
3.2 五大基本部件
运算器
完成算术和逻辑运算,ALU为核心
存储器
存放数据和程序,按地址访问
控制器
指挥协调各部件工作,发出控制信号
输入设备
将信息输入计算机,如键盘、鼠标
输出设备
输出处理结果,如显示器、打印机
核心思想:存储程序
将事先编好的程序和原始数据送入主存中,然后启动计算机工作。计算机在不需操作人员干预的情况下,自动逐条取出指令并执行。这是冯·诺依曼结构的精髓。
4. 计算机工作过程
计算机的工作过程就是不断取指令、分析指令、执行指令的循环过程。
4.1 求解问题的步骤
- 建立数学模型,将实际问题转化为数学问题
- 确定计算方法,选择合适的算法
- 编制程序,将算法转化为计算机可执行的指令序列
- 将程序和数据送入存储器
- 启动计算机,自动执行程序
- 输出计算结果
4.2 指令执行过程
一条指令的执行通常包含以下阶段:
指令执行周期示意
就绪
指令周期:CPU从主存取出一条指令并执行这条指令的时间。一般由取指周期、间址周期、执行周期、中断周期组成。
5. 计算机性能指标
衡量计算机性能的指标有很多,需要综合考虑,单一指标不能完全反映计算机性能。
⏱️ 吞吐量 & 响应时间
吞吐量:单位时间内完成的工作量
响应时间:从提交到获得结果的时间
响应时间:从提交到获得结果的时间
吞吐量关注系统整体处理能力,响应时间关注单个任务的完成速度。两者都很重要。
🔄 主频 & 时钟周期
时钟周期 T = 1 / f
主频 f = 1 / T
主频 f = 1 / T
时钟周期是CPU操作的最小时间单位。主频越高,时钟周期越短,CPU速度越快。单位:Hz、MHz、GHz。
📊 CPI (每条指令周期数)
CPI = 总时钟周期数 / 指令总数
平均CPI = Σ(CPIi × ICi) / 总指令数
平均CPI = Σ(CPIi × ICi) / 总指令数
CPI表示执行每条指令所需的时钟周期数。CPI越小,指令执行速度越快。与指令系统、流水线等有关。
⏳ CPU执行时间
CPU时间 = 指令数 × CPI × 时钟周期
= 指令数 × CPI / 主频
= 指令数 × CPI / 主频
CPU真正用于执行程序的时间。受三个因素影响:指令数、CPI、时钟频率。这是最核心的性能公式!
🚀 MIPS (百万指令/秒)
MIPS = 指令数 / (执行时间 × 10⁶)
= 主频 / (CPI × 10⁶)
= 主频 / (CPI × 10⁶)
每秒执行多少百万条整数指令。注意:MIPS高不代表性能一定好,因为指令功能强弱不同。
🔢 FLOPS (浮点运算次数/秒)
MFLOPS / GFLOPS / TFLOPS / PFLOPS
浮点操作次数 / (执行时间 × 10⁶)
浮点操作次数 / (执行时间 × 10⁶)
每秒执行多少次浮点运算,常用于衡量科学计算性能。比MIPS更适合衡量高性能计算机。
常见误区
主频越高 ≠ 性能越好!不同架构的CPU不能简单用主频比较(如AMD和Intel)。还要考虑CPI、指令功能、Cache大小、多核等因素。性能是综合指标,不是单一频率决定的。
5.1 核心公式推导
已知条件:
• 主频 f → 时钟周期 T = 1/f
• 某程序有 IC 条指令
• 平均每条指令需要 CPI 个时钟周期
推导:
总时钟周期数 = IC × CPI
CPU执行时间 = 总周期数 × T = IC × CPI / f
MIPS = IC / (时间 × 10⁶) = f / (CPI × 10⁶)
• 主频 f → 时钟周期 T = 1/f
• 某程序有 IC 条指令
• 平均每条指令需要 CPI 个时钟周期
推导:
总时钟周期数 = IC × CPI
CPU执行时间 = 总周期数 × T = IC × CPI / f
MIPS = IC / (时间 × 10⁶) = f / (CPI × 10⁶)